以前のブログで説明したように、エクスプロイト キットの活動は 2016 年の後半から減少傾向にあります。しかし、この分野では依然として重要な進展が定期的に観察されており、RIG Exploit Kit (EK) に関連する興味深い進行中の活動が観察されています。実際に観測されたトラフィックの量は減少傾向にありますが、RIG EK は引き続き活動しており、関連するクライムウェア ペイロードは多岐にわたります。
この最近の発見では、RIG EK が Grobios という名前のトロイの木馬を配信していることが確認されました。このブログ投稿では、このトロイの木馬について、その回避とサンドボックス対策技術に焦点を当てて詳しく説明しますが、最初に攻撃の流れを簡単に見てみましょう。図 1 は、私たちが観察した活動の感染チェーン全体を示しています。
図 1: 感染チェーン
2018 年 3 月 10 日に、悪意のある iframe が挿入された侵害されたドメイン latorre[.]com[.]au からの RIG EK へのリダイレクトを最初に確認しました (図 2)。
図 2: latorre[.]com に挿入された悪意のある Iframe
iframe は、SSL 経由で通信する悪意のある広告ドメインを読み込み (図 3 に示す証明書)、悪意のある Flash ファイルを読み込む RIG EK ランディング ページに誘導します (図 4)。
図 3: 悪意のある SSL フロー
図 4: RIG EK SWF ダウンロード リクエスト
Flash ファイルを開くと、Grobios トロイの木馬が投下されます。図 5 は、Grobios トロイの木馬からのコールバック トラフィックを示しています。
図 5: Grobios コールバック
ドロップされたマルウェアの分析
Grobios は、さまざまな手法を使用して検出を回避し、マシン上で持続性を獲得します。これにより、Grobios をアンインストールしたり、被害者のマシンで非アクティブにしたりすることが困難になります。また、複数のアンチデバッグ、アンチ分析、およびアンチ VM 技術を使用して、その動作を隠します。標的のマシンへのインストールが成功すると、コマンド アンド コントロール (C2) サーバーに接続し、コマンドで応答します。
静的検出を回避するために、作成者はサンプルを PECompact 2.xx でパックしました。解凍されたサンプルには、インポート テーブルに関数エントリがありません。 API ハッシュを使用して、呼び出す API 関数の名前を難読化し、DLL ファイルの PE ヘッダーを解析して、関数の名前をそのハッシュに一致させます。このマルウェアは、スタック文字列も使用します。図 6 は、ハッシュを使用して WinApi を呼び出すマルウェアの例を示しています。
図 6: ハッシュを使用して WinAPI を呼び出す例。
読み込み中
マルウェアのサンプルは自身のコピーを開始し、ユーザーの権限レベルに応じて svchost.exe または IEXPLORE.EXE にさらにコードを挿入します。注射終了後は親子ともども終了。 svchost.exe/IEXPLORE.EXE のみが実行され続けます。図 7 にプロセス ツリーを示します。
図 7: マルウェアのプロセス ツリー
持続性
このマルウェアは持続性に対して攻撃的なアプローチをとっています。次の手法を採用しています。
- 自身のコピーを %APPDATA% フォルダにドロップし、被害者のマシンにインストールされている正規のソフトウェアのバージョンを装います。 Windows スタートアップ フォルダに Autorun レジストリ キーとショートカットを作成します。分析中に、それは次のパスに落ちました。
%APPDATA%Googlev2.1.13554<ランダム名>.exe.
パスは、マルウェアが %APPDATA% で見つけたフォルダーによって異なります。
- パス %ProgramFiles%/%PROGRAMFILES(X86)% にあるプログラムのサブフォルダーに自分自身の複数のコピーをドロップし、インストールされたプログラムの別のバージョンになりすまして、Autorun レジストリ キーを設定するか、スケジュールされたタスクを作成します。
- コピー自体を %Temp% フォルダーにドロップし、スケジュールされたタスクを作成して実行します。
図 8 に示すように、マルウェアは感染したシステム上で 2 つのスケジュールされたタスクを作成します。
図 8: マルウェアによって作成されたスケジュールされたタスク
このマルウェアは、ドロップしたすべてのコピーの作成、変更、およびアクセス時刻を、ntdll.dll の最終更新時刻に変更します。 「インターネットからダウンロードされたファイル」の警告を回避するために、マルウェアは図 9 に示すように、DeleteFile API を使用して :Zone.Identifier フラグを削除します。
図 9: DeleteFileW を呼び出して、ドロップされたコピーから :Zone.Identifier フラグを削除する
このマルウェアの興味深い動作は、図 10 に示すように、EFS (Windows 暗号化ファイル システム) を使用して %TEMP% フォルダー内のコピーを保護することです。
図 10: Cipher コマンドは、EFS によって保護されたマルウェアのコピーを示しています
VM およびマルウェア分析ツールの検出
C2 に接続する直前に、マルウェアは一連のチェックを実行して VM とマルウェア分析環境を検出します。 Xen、QEMU、VMWare、Virtualbox、Hyper-V など、よく知られているほぼすべての VM ソフトウェアを検出できます。以下は、被害者のシステムで実行されるチェックのリストです。
- FindWindowEx API を使用して、表 1 の分析ツールのいずれかがシステムで実行されているかどうかをチェックします。
分析ツール |
パケットスニファー |
ファイルモン |
WinDbg |
プロセス エクスプローラー |
OllyDbg |
スマートスニフ |
モニター |
スニファー |
ワイヤーシャーク |
表 1: マルウェアによって検出された分析ツール
- このマルウェアには、ブラックリストに登録されたプロセス名のハッシュのリストが含まれています。図 11 に示すように、実行中のプロセスのハッシュがブラックリストのハッシュと一致するかどうかをチェックします。
図 11: ブラックリストに登録されたプロセスを確認する
表 2 に示すブラックリストに登録されたプロセスのハッシュをクラックすることができました。
ハッシュ |
プロセス |
283ADE38h |
vmware.exe |
8A64214Bh |
vmount2.exe |
13A5F93h |
vmusrvc.exe |
0F00A9026h |
vmsrvc.exe |
0C96B0F73h |
vboxservice.exe |
0A1308D40h |
vboxtray.exe |
0E7A01D35h |
xenservice.exe |
205FAB41h |
joeboxserver.exe |
6F651D58h |
joeboxcontrol.exe |
8A703DD9h |
ワイヤーシャーク.exe |
1F758DBh |
Sniffhit.exe |
0CEF3A27Ch |
sysAnalyzer.exe |
6FDE1C18h |
ファイルモン.exe |
54A04220h |
procexp.exe |
0A17C90B4h |
Procmon.exe |
7215026ああ |
Regmon.exe |
788FCF87h |
autoruns.exe |
0A2BF507Ch |
|
0A9046A7Dh |
表 2: ブラックリストに登録されたプロセス
- マルウェアは、次のパスのレジストリ キーを列挙して、xen または VBOX という単語が含まれているかどうかを確認します。
- HKLMハードウェアACPIDSDT
- HKLMハードウェアACPIFADT
- HKLMハードウェアACPIRSDT
- システムにインストールされているサービスに、表 3 のいずれかのキーワードが含まれているかどうかを確認します。
vmmouse |
vmdebug |
vmicexchange |
vmicshutdown |
vmicvss |
vmicheartbeat |
msvmmouf |
VBoxマウス |
vpcuhub |
vpc-s3 |
vpcbus |
vmx86 |
VMware |
VMMEMCTL |
VMツール |
XenVMM |
xenvdb |
xensvc |
xennet6 |
ゼネット |
xenevtchn |
VBoxSF |
VBoxGuest |
表 3: ブラックリストに登録されたサービス名
- ユーザー名に次の単語が含まれているかどうかをチェックします: MALWARE、VIRUS、SANDBOX、MALTEST
- ブラックリストに登録されたドライバー名のハッシュのリストがあります。表 4 に示すように、FindFirstFile/FindNextFile API を使用して Windows ドライバー ディレクトリ %WINDIR%system32drivers を走査し、ドライバーの名前のハッシュがブラックリストに登録されているドライバーの名前のハッシュと一致するかどうかを確認します。
ハッシュ |
運転者 |
0E687412Fh |
hgfs.sys |
5A6850A1h |
vmhgfs.sys |
0CA5B452h |
プレレス.sys |
0F9E3EE20h |
prlfs.sys |
0E79628D7h |
prlmouse.sys |
68C96B8ああ |
prlvideo.sys |
0EEA0F1C2h |
prl_pv32.sys |
443458C9h |
vpcs3.sys |
2F337B97h |
vmsrvc.sys |
4D95FD80h |
vmx86.sys |
0EB7E0625h |
vmnet.sys |
表 4: ブラックリストに登録されたドライバー名のハッシュ
- ProductId のハッシュを計算し、それをブラックリストに登録された 3 つのハッシュと照合して、表 5 に示すパブリック サンドボックスを検出します。
ハッシュ |
製品番号 |
サンドボックス名 |
4D8711F4h |
76487-337-8429955-22614 |
アヌビスサンボックス |
7EBAB69Ch |
76487-644-3177037-23510 |
CWサンドボックス |
D573F44D |
55274-640-2673064-23950 |
ジョー・サンドボックス |
表 5: ブラックリストに登録された製品 ID
- マルウェアは、読み込まれたモジュール (DLL) 名のハッシュを計算し、表 6 に示すブラックリストに登録されたモジュール名のハッシュのリストと比較します。これらは、dbhelp.dll や api_log.dll など、デバッグ中のプロセスに一般的に読み込まれる DLL です。 .
6FEC47C1h |
6C8B2973h |
0AF6D9F74h |
49A4A30h |
3FA86C7Dh |
表 6: ブラックリストに登録されたモジュール名のハッシュ
図 12 は、ブラックリストに登録されたモジュール ハッシュをチェックするコード フローを示しています。
図 12: ブラックリストに登録されたモジュール ハッシュのコード チェック
- パス HKLMSYSTEMCurrentControlSetServicesDiskEnum および HKLMSYSTEMControlSet001ServicesDiskEnum に存在するレジストリ キーに、QEMU、VBOX、VMWARE、VIRTUAL のいずれかの単語が含まれているかどうかを確認します。
- パス HKLMSOFTWAREMicrosoft、HKLMSOFTWARE のレジストリ キーに次の単語が含まれているかどうかをチェックします: VirtualMachine、vmware、Hyber-V
- レジストリ パス HKLMHARDWAREDESCRIPTIONSystemSystemBiosVersion に存在するシステム BIOS バージョンに、QEMU、BOCHS、VBOX という単語が含まれているかどうかをチェックします。
- レジストリ パス HKLMHARDWAREDESCRIPTIONSystemVideoBiosVersion に存在するビデオ BIOS バージョンに VIRTUALBOX サブストリングが含まれているかどうかをチェックします。
- パス HKLMHARDWAREDEVICEMAPScsiScsi Port 0Scsi Bus 0Target Id 0Logical Unit Id 0Identifier のレジストリ キーに、QEMU、vbox、vmware のいずれかの単語が含まれているかどうかを確認します。
- レジストリ キー HKLMSOFTWAREOracleVirtualBox Guest Additions がシステムに存在するかどうかを確認します。
ネットワーク通信
このマルウェアには、ハードコードされた難読化された 2 つの C2 が含まれています。 C2 URL の難読化を解除した後、20 文字のランダムな文字列を生成し、URL の末尾に追加して、コマンドのリクエストを送信します。コマンドを実行する前に、マルウェアは C2 の身元を確認します。 CALG_MD5 アルゴリズムを使用して、4 バイトのデータのハッシュを計算します。次に、CERT コマンドからの Base64 データを CryptVerifySignature の公開鍵として使用して、ハッシュ署名を検証します (図 13)。署名が検証されると、マルウェアはコマンドを実行します。
図 13: C2 ハッシュを検証するマルウェア
最初の分析で、マルウェアが表 7 に示すコマンドをサポートしていることがわかりました。
指示 |
説明 |
CERT <Base64データ> |
C2の身元を確認するために使用されるデータが含まれています |
接続 <IP:ポート> |
さらにコマンドを実行するために、指定されたホストに接続します |
切断する |
すべての接続を閉じる |
WAIT <秒数> |
次のコマンドを実行する前に秒数待機します |
拒絶 |
NOPの一種。 5 秒待ってから次のコマンドに進む |
表 7: マルウェアがサポートするコマンド
図 14 は、C2 サーバーによって発行されるコマンドを示しています。
図 14: C2 サーバーによって発行されたコマンド
結論
活動が減少しているにもかかわらず、エクスプロイト キットは依然としてユーザーを危険にさらし続けています。特に古いバージョンのソフトウェアを実行しているユーザーはなおさらです。企業は、ネットワーク ノードに完全にパッチが適用されていることを確認する必要があります。
FireEye のすべての製品は、MVX エンジンでマルウェアを検出します。さらに、 FireEye Network Securityは感染ポイントで配信をブロックします。
侵害の痕跡 (IOC)
- 30f03b09d2073e415a843a4a1d8341af
- 99787d194cbd629d12ef172874e82738
- 169.239.129 [.] 17
- grobiosgueng[.] su
謝辞
悪意のあるトラフィックの分析に関するブログへの貢献について、マリアム・ムンタハに感謝します。
参照: https://www.mandiant.com/resources/blog/deep-dive-into-rig-exploit-kit-delivering-grobios-trojan
Comments