- 2019/09/04
- サイバー攻撃
検知することが非常に難しいランサムウェア「SODINOKIBI」
Post by : CYBEREASON NOCTURNUS
エグゼクティブサマリー
2019年4月に、サイバーリーズンのNocturnusチームは、Sodinokibiというニックネームで呼ばれる新しいタイプのランサムウェアに遭遇しそれを分析しました。Sodinokibiは、検知することが非常に難しいランサムウェアであり、アンチウイルスやその他の手法による検知を防ぐために数多くの手段を講じます。
Sodinokibiの作者は過去に、広く拡散されたランサムウェアであるGandCrabの作者と同一であるとして関連付けられたことがあります(なお、GandCrabは最近、その作者により提供の終了が発表されました)。 GandCrabは、世界的な全ランサムウェア感染の40%を占めています。両者の関連性が真実ならば、GandCrabは、Sodinokibiがどれほど強いインパクトを持つようになるかに関して、良いお手本となります。
ランサムウェアは、多くのベクターにおいて、企業や組織にとって大きなビジネスリスクであり続けています。SodinokibiやGandcrabのような検知が非常に難しいランサムウェアは、毎年、企業や組織に大きな被害をもたらす原因となっています。
本レポートでは、この攻撃とマルウェアに関する分析を行うほか、防御者がこの攻撃に遭遇した場合に考慮すべきセキュリティ上の推奨事項を紹介します。
主なポイント
- 当初、ほとんどのSodinokibi攻撃はアジア圏で観測されていました。最近になって、ヨーロッパ圏でも大規模な感染が観測されるようになりました。
- ランサムウェアが初めて現れたとき、それはSMBが保有しているサーバーやその他のクリティカルな資産の脆弱性をエクスプロイトするものでした。その後、時が経過するにつれ、フィッシングやエクスプロイトキットのような、その他の感染ベクターが見られるようになりました。
- 我々は本調査において、ランサムウェアSodinokibi が、感染したマシン上で、韓国のセキュリティベンダーであるAhnlab社が作成したアンチウイルスソフトウェアを意図的に探し出し、この信頼されているアンチウイルスソフトウェアに対して、Sodinokibiの 悪意あるペイロードをインジェクトしているという複数のインスタンスに遭遇しました。
- 本調査および過去に他のベンダーにより行われた調査では、ランサムウェアSodinokibiは、広く拡散されたランサムウェアGandCrabの作成グループと同じグループにより作成されたことを示唆する証拠が提供されています。
セキュリティ上の推奨事項
- 疑わしいソースからはファイルをダウンロードしないこと、疑わしいリンクはクリックしないこと。
- 重要なファイルに関しては、ローカル環境および外部のクラウド環境の両方において、定期的にバックアップを作成すること。
- Cybereasonソリューションで「PowerShellの防止(Prevention)」を有効にすること。
- Cybereasonのアンチランサムウェアを「防止(Prevention)」モードでアクティベートすることにより、このような脅威やその他の類似した脅威を検知し防止すること。
はじめに
2019年4月に、サイバーリーズンのNocturnusチームは、Sodinokibiが、悪意あるリンクを通じて、悪意あるJavaScriptを含むzipファイルとして標的のマシンへとドロップされたという複数のインスタンスに遭遇しました。
Cybereasonソリューションはこのランサムウェアを無事に阻止しましたが、他の組織では実行に成功していることが確認されています。
このランサムウェアが企業や組織にもたらす最も大きな被害は、標的マシンに含まれているデータやクリティカルな資産へのアクセスを阻止することにより、業務を完全に封じてしまえることです。現時点で、このマルウェアは自己伝播する能力を備えていませんが、その能力が実装された場合、ネットワーク全体にその影響を拡大するでしょう。
4月下旬に初めて発見された際に、Sodinokibi(SodinやREvilとも呼ばれる)は、Oracle WebLogicの持つ脆弱性(CVE-2019-2725)をエクスプロイトすることによりマシン上にインストールされ、その後エクスプロイトキットやスパムメールを通じて伝播を開始すると報告されました。
本ブログ記事では、ランサムウェアSodinokibiに関するディープな技術的分析を行います。主として、このランサムウェアのデリバリー方式を取り上げるほか、アンチウイルスソフトウェアにより検出を回避するためにマルウェアの作者により導入された防御メカニズムも取り上げます。
このマルウェアは、我々が業界内で追跡しているランサムウェアの復活を示しています。一部ではランサムウェア攻撃の減少が報告されていますが、我々はランサムウェアが定着しているのを目の当たりにしています。実際、今年の第2四半期において、ランサムウェア攻撃による被害額は倍増しています。企業や組織は、最新の攻撃に関する情報を常に把握した上で、そのような攻撃を適切に検知し防止するために、最新の攻撃に対する防御が行えるセキュリティ製品を必要としています。
分析の最中に、我々は、ランサムウェアGandCrabとSodinokibi間の興味深い類似点に気付きました(なお、GandCrabのオペレーターは、2019年6月の時点で、彼らが引退し彼らのオペレーションを打ち切ることを発表しています)。我々の調査結果は、これら2つのランサムウェア間の類似を見つけた他のセキュリティ研究者による別の報告書の内容とも一致しています。
攻撃の分析
脅威アクターが利用した最初の感染ベクターは、悪意あるリンクを含むフィッシングeメールです。このリンクをクリックすると、一見合法的なzipファイルに見えるが実は悪意あるファイルがダウンロードされます。Sodinokibiファイルは、VirusTotalにおける検知率が非常に低く、これは大多数のアンチウイルスベンダーがSodinokibiの初期ペイロードを「悪意あるもの」として警告しないことを意味します。Sodinokibiの初期ペイロードは検知されずに通過できるため、多くの企業や組織が持つ防御の第一層は即座にバイパスされます。
VirusTotalにおけるSodinokibiのzipファイルの検知率は極めて低い
このzipファイルには、難読化されたJavaScriptファイルが含まれています。ユーザーがこのJavaScriptファイルをダブルクリックすると、WScriptがそれを実行します。
悪意あるJavaScriptを実行するWScript
第1ステージのプロセスツリー(Cybereasonソリューションでの表示)
このJavaScriptファイルは、eiculwoという名前のリストを使って文字を並べ替えることで、自分自身の難読化を解除します。
難読化されたJavaScriptファイルの前半部分
このJavaScriptファイル内に含まれている変数vhtsxspmssjは、難読化されたPowerShellスクリプトであり、スクリプトは攻撃の後の段階で攻撃者によって難読化が解除されます。
難読化されたJavaScriptファイル
このJavaScript は、先述したようにPowerShellスクリプトである変数vhtsxspmssjの難読化を解除した後、それを「jurhtcbvj.tmp」という名前でディレクトリtempに保存します。
注:我々は、初期ペイロード内に第2のペイロードが組み込まれているのではなく、当該スクリプトが第2のペイロードをダウンロードするという、本マルウェアのバリアントにも遭遇しました。
ファイルjurhtcbvj.tmpは多数の不要なエクスクラメーションマークでいっぱいのPowerShellスクリプトであり、難読化のレベルは高くありません。当該JavaScriptファイルはPowerShellコマンドを起動することにより、これらのエクスクラメーションマークを削除した後、PowerShell スクリプトを実行します。
難読化されたPowerShellスクリプトであるjurhtcbvj.tmpの内容
エクスクラメーションマークを置換した後、PowerShell スクリプトを実行するコマンド
このPowerShellスクリプトは、Base64でエンコーディングされた別のスクリプトをデコードした後、それを実行します。デコードされたスクリプトには、同じくBase64でエンコーディングされた.NETモジュールが含まれており、これがデコードされた後、PowerShellプロセスのメモリにロードされます。ロードされた後、モジュールは関数Install1を実行します。
モジュールtest.dllの暗号を解読しモジュールをメモリにロードするデコードされたスクリプト
モジュール test.dllは、このデリバリープロセスを構成する多数の層の1つです。関数Install1には、またもやBase64でエンコーディングされた別のモジュールが含まれています。この関数はモジュールをデコードし、それをメモリにロードします。
Base64でエンコーディングされたモジュールInstall1
モジュールInstall1をメモリにロード
同マルウェアは、十分に高度な権限を取得できなかった場合、ユーザーアクセス制御(UCA)のバイパスを試みます。
ローダーフェーズ1:UACのバイパス
メモリにロードされたモジュールは、マルウェアの次なるフェーズでローダーとして機能します。マルウェアはCheckTokenMembershipを使用して、プロセスの持つ権限を確認します。プロセスの持つ権限が十分でない場合、マルウェアはユーザーアクセス制御(UAC)をバイパスしようと試みます。UACをバイパスするために、自分自身をレジストリキー「Software\Classes\mscfile\shell\open\command\ に書き込んだ後、explorer.exeの新しいインスタンスを開始することでCompMgmtLauncher.exeを実行します。
レジストリキーを作成した後、CompMgmtLauncher.exeを開始
Explorer.exeを使用してComMgmtLauncher.exeを開始
CompMgmtLauncher.exeが実行されると、レジストリキー「Software\Classes\mscfile\shell\open\command\」内に設定されているあらゆるものが実行されます。このインスタンスでは、先にエクスクラメーションマークを置換しPowerShellスクリプトを実行するために実行されたPowerShellコマンドと同じものが、より高い権限で実行されます。
UACをバイパスするためにレジストリキーを作成
当該プロセスは今やより高い権限で実行されるようになり、攻撃が継続されます。
UACをバイパスした後のプロセスツリー (Cybereasonソリューションでの表示)
ローダーモジュールはメモリにロードされた後、再び権限をチェックします。今回、モジュールは十分な権限を有しているため、攻撃を続行します。ローダーモジュールのリソース内には、リソースがXOR暗号化されたPE(portable executable)ファイルが存在しています。
XOR暗号化されたPE
ローダーはリソース内にあるこのPEファイルをメモリにロードした後、鍵7Bを使用してメモリ内でファイルを復号化してから、ファイルを実行します。
XOR復号化を行う前のメモリ内のPEファイル
XOR復号化を行った後のメモリ内のPEファイル
ローダーフェーズ2:Ahnlabへのインジェクション
メモリ内のPE(portable executable)ファイルは、最終ペイロードで使用されることになる第2のローダーモジュールとなります。このフェーズで、マルウェアは、ランサムウェアのペイロードをAhnlabアンチウイルスプロセスへとインジェクトしようと試みます。
これを行うために、第2のローダーはAhnlabアンチウイルスソフトウェアが標的となるマシン上にインストールされているかどうかをチェックします。Ahnlab V3 LiteソフトウェアのサービスであるV3 Serviceが存在する場合、マルウェアはファイルautoup.exeが利用可能であるかをチェックします。autoup.exeはAhnlab Updaterの一部であり、攻撃に対する脆弱性があります。
GandCrabの作者は、Ahnlabに対して敵意を抱いていたことが報告されています。この報告が真実だと仮定すると、SodinokibiがAhnlabだけを特別に検索し、Ahnlabに含まれている脆弱性を利用して攻撃を試みている理由にも納得できます。
マルウェアによるAhnlabアンチウイルスソフトウェアのチェック
autoup.exeのパス文字列
マルウェアがAhnlabサービスと実行可能ファイルを見つけることができた場合、当該ローダーは、停止状態にあるautoup.exeプロセスを自動的に開始した後、Sodinokibiは「プロセスホロウイング(process hollowing)」手法を通じてSodinokibiペイロードを当該プロセスにインジェクトしようと試みます。
Ahnlabアンチウイルスソフトウェアがマシン上にインストールされていない場合、当該ローダーは、停止状態にある現在のPowerShellプロセスの別のインスタンスを開始した後、プロセスホロウイング手法を通じてSodinokibiのペイロードを当該プロセスにインジェクトしようと試みます。
ペイロードは、モジュールリソース内に、鍵7Bを使用してXOR暗号化されたPEファイルとして格納されています。
XOR暗号化されたPEファイル
Sodinokibiのペイロード
マルウェアは、RC4暗号を使用して暗号化された設定データを.grrrとして保存します。この名称は、マルウェアのバリアント間で異なります。
Sodinokibiペイロードのセクション
この設定ファイルには、暗号化から除外するフォルダ、ファイル、ファイル拡張子に関する情報が含まれています。また、停止するプロセスや削除するサービスに関する情報をはじめ、CVE-2018-8453を使用して権限を昇格させる方法、C2サーバーとの通信方法、表示する身代金要求の手紙に関する情報も含まれています。
Sodinokibiの設定ファイル
SodinokibiはGetKeyboardLayoutListを使用して、どのキーボード言語が設定されているかを特定します。Sodinokibiはswitch-case文を使ってプライマリ言語IDをチェックします。選択された言語のいずれかが設定されていた場合、マルウェアは終了します。
マルウェアの作者は、下記に示すswitch-case文の中に指定されている特定の国からのファイルを人質にして身代金を得ることは希望していません。このSodinikobiのバリアントでは、シリア語に関するチェックが追加されているほか、GetSystemDefaultUILanguageおよびGetUserDefaultUILanguageを使用したシステム言語に関する新しいチェックも追加されています。
プライマリ言語IDを特定するためのswitch-case文
言語チェックを通過した後、マルウェアはその実行を継続します。マルウェアはvssadmin.exeを使用してマシンに含まれているシャドウコピーを削除することで、ファイルのリカバリーをより困難にします。
vssadmin.exeによるシャドウコピーの削除
ランサムウェアは、マシン上のすべてのフォルダを通じて実行を繰り返すことで、すべてのファイルを暗号化し、各フォルダ内に身代金要求の手紙を投下します。暗号化が完了すると、ランサムウェアはデスクトップの壁紙を変更することで、攻撃が行われたことを当該ユーザーに知らせます。
ランサムウェアがファイルを暗号化した後に表示される新しい壁紙
ランサムウェアで使われる身代金要求のテキスト
ランサムウェアは、標的マシン上のファイルを暗号化した後、C2サーバーとの通信を確立するよう試みます。ランサムウェアは、C2サーバーのURLを生成するために、先にデコードされた設定ファイル内に指定されているドメインのリスト全体を通じて、処理を繰り返します。
設定ファイル内にあるドメインのリスト
マルウェアは、ハードコーディングされた文字列とランダムに生成された文字列を組み合わせたドメインを使用して、複数のランダムなURKを作成します。Tesorion社による最近の報告では、SodinokibiとGandCrabがランダムなURLを生成する方法における類似点が取り上げられています。これにより、SodinokibiとGandCrabの作者は同一である可能性がさらに高まっています。
ランダムなURLの生成を行うハードコーディングされた文字列
URLが生成された後、マルウェアは暗号化されたマシン情報(ユーザー名、マシン名、ドメイン名、マシン言語、オペレーティングシステムのタイプ、CPUアーキテクチャなどを含む)を各ドメインに送信します。
C2サーバーに送信されるデータ(暗号化前)
ユーザーが身代金要求の手紙をクリックしキーを入力すると、ユーザーが自分のファイルを取り出すために支払わなければならない金額をビットコインで示すページが表示されます。
ブラウザ上に表示された身代金要求のメッセージ
サイバーリーズンのアンチランサムウェアソリューションは、この脅威を特定した後、何らかの被害が引き起こされる前に、当該インシデントを緩和することに成功しました。
サイバーリーズンのアンチランサムウェアソリューションによりSodinokibiランサムウェアを検知し阻止すること成功
結論
本ブログ記事では、ランサムウェアSodinokibiの感染プロセスを詳細に分析し、ランサムウェアの作者が使用した難読化手法が極めて単純であるにもかかわらず、ランサムウェアはほとんどのアンチウイルスソフトウェアを非常に効果的にすり抜けていることが実証されています。
我々の分析は、ランサムウェアSodinokibiの背後にいる脅威アクターが、引退したと言われるランサムウェアGandCrabの作者と同一人物であるとの疑惑をさらに強めるものとなっています。これは、言語および国に関するホワイトリストにおける類似性(ロシア語圏、シリア語、アラブ語の国が含まれていること)、「復讐を目的として」Ahnlab製品をプロセスインジェクションの標的としていること、URL生成ルーチンにおける類似性のような、本レポートに詳しく示した分析結果に基づいています。
2019年4月以降、ランサムウェアSodinokibiは広く拡散されるようになり、最初の出現後わずか4ヶ月未満で 最も広まっているランサムウェア第4位となりました。その後、Sodinokibiはいくつかのマイナーアップデートを経過しており、我々の見解によれば、ランサムウェアの作者はその開発を今後も続行し、機能の追加や検知を逃れる能力の改善を行うことが予想されます。
MITRE ATT&CK手法の概要
Initial Access(初期アクセス)
・Spearphishing Link(スピアフィッシング用のリンク)
・Spearphishing Attachment(スピアフィッシング用の添付ファイル)
・Exploit Public-Facing Application(対外的アプリケーションのエクスプロイト)
Execution(実行)
・Command-Line Interface(コマンドラインインターフェイス)
・Execution through Module Load(モジュールのロードを通じた実行)
・PowerShell
・User Execution(ユーザー実行)
・Scripting(スクリプティング)
Privilege Escalation(権限昇格)
・Access Token Manipulation(アクセストークンの操作)
・Bypass User Account Control(ユーザーアカウント制御のバイパス)
・Exploitation for Privilege Escalation(権限昇格を目的とするエクスプロイト)
Defense Evasion(防御回避)
・Deobfuscate/Decode Files or Information(ファイルや情報の難読化解除/デコード)
・Disabling Security Tools(セキュリティツールの無効化)
・Process Hollowing(プロセスホロウイング)
Impact(インパクト)
・Data Encrypted for Impact(インパクトを目的として暗号化されたデータ)
・Inhibit System Recovery(システムリカバリーの禁止)
IoC(Indicator of Compromise:痕跡情報)
Java Script
MD5 – 3e974b7347d347ae31c1b11c05a667e2
SHA1 – 2cc597d6bffda9ef6b42fed84f7a20f6f52c4756
Jurhrtcbvj.tmp
MD5 – e402d34e8d0f14037769294a15060508
SHA1 – b751d0d722d3c602bcc33be1d62b1ba2b0910e03
Test.dll
MD5 – 8ea320dff9ef835269c0355ca6850b33
SHA1 – f9df190a616653e2e1869d82abd4f212320e9f4b
sodinokibi_loader_1.dll
MD5 – 7d4c2211f3279201599f9138d6b61162
SHA1 – ee410f1d10edc70f8de3b27907fc10fa341f620a
sodinokibi_loader_2.dll
MD5 – 613dc98a6cf34b20528183fbcc78a8ee
SHA1 – 5cd8eadcd70b89f6963cbd852c056195a17d0ce2
sodinokibi_payload.exe
MD5 – b488bdeeaeda94a273e4746db0082841
SHA1 – 5dac89d5ecc2794b3fc084416a78c965c2be0d2a
ホワイトペーパー「すべての組織が狙われている」
企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。
https://www.cybereason.co.jp/product-documents/input/?post_id=606