不正広告キャンペーンで使用されている「Falloutエクスプロイト・キット」により、GandCrabランサムウェアへの感染が発生

2018年8月下旬、FireEyeは、不正広告キャンペーンにおいて、新たなエクスプロイト・キットが使用されている事実を確認しました。この不正広告キャンペーンは、日本や韓国をはじめとするアジア太平洋地域、中東、南ヨーロッパで展開されています。

このキャンペーン活動は、2018年8月24日、finalcountdown[.]gqというドメインにおいて最初に確認されました。8月29日に、東京の研究者チーム「nao_sec」が同キャンペーンを確認、チームのブログでこのエクスプロイト・キットを「Falloutエクスプロイト・キット」と名付けました。FireEyeの調査によって、この不正広告キャンペーンにて他にも複数のドメインやペイロードが使用され、その他の地域でも攻撃が発生していることがわかりました。nao_secのブログで指摘されているとおり、日本を対象にしたキャンペーンではSmokeLoaderダウンローダが使用されていましたが、中東地域の攻撃ではGandCrabランサムウェアが使われています。本ブログでは、このGandCrabランサムウェアを中心に取り上げます。

Falloutエクスプロイト・キットは、ユーザーのブラウザ・プロファイルを確認し、特定のプロファイルと一致した場合に不正なコンテンツを送りつけます。プロファイルが一致したユーザーは、複数回の302リダイレクトによって、正規の広告ページからエクスプロイト・キットのランディング・ページのURLへアクセスさせられます。正規のドメインから、複数の「クッション・ドメイン」、そしてエクスプロイト・キットのランディング・ページに至るリダイレクト・チェーン全体を図1に示します。


図1:Falloutエクスプロイト・キットにおける、ランディング・ページに至るまでの不正広告リダイレクト

メインの広告ページは、広告の読み込み中にクッション・ドメインのリンクをプリフェッチします。また、ブラウザでJavaScriptが無効にされている場合に備えて、<noscript>タグを使用して別のリンクを読み込みます(図2)。


図2:最初の広告ページのコンテンツ

他の地域では、「link rel="dns-prefetch" href」タグに別の値が設定されており、広告からエクスプロイト・キットへのリダイレクトは行われません。302ホップ経由のリダイレクト・チェーン全体を図3、4、5に示します。


図3:エクスプロイト・キットが制御するクッション・サーバーへの302リダイレクト


図4:エクスプロイト・キットのランディング・ページの手前でのリダイレクト


図5:エクスプロイト・キットのランディング・ページに至る最後のリダイレクト

ランディング・ページのURIは常に変化しています。また、特徴が少なくパターン化が困難であるため、特定のパターンに基づいて検知を行うIDSソリューションでは発見が困難です。

このキャンペーンでは、ブラウザやOSのプロファイルとユーザーの位置情報に基づいて、エクスプロイト・キットを送りつけるか、または別のソーシャル・エンジニアリング・キャンペーンのページに誘導するかを決めています。たとえば、すべてのパッチが適用されたmacOSシステムを使用する米国のユーザーに対しては、図6および7のようなソーシャル・エンジニアリング・ページへリダイレクトさせようとします。


図6:Macユーザー向けの偽のアンチウイルスのダウンロード・ページ


図7:偽のFlashのダウンロード・ページ

最近、パッチが正しく適用されたシステムを使用しているユーザーや、悪用可能な脆弱性が存在せず攻撃困難なOSやソフトウェアを使用しているユーザーを狙ったソーシャル・エンジニアリング攻撃が増加傾向にありますが、上記の戦略はこのような流れに沿った攻撃といえます。また、今回のキャンペーンで使用されている不正広告経由のリダイレクト手法は、北米のユーザーを狙った多くのソーシャル・エンジニアリング・キャンペーンでも使われています。

FireEye Dynamic Threat Intelligence(DTI)によると、官公庁や通信事業者、医療業界のお客様環境で、このキャンペーンを警告するアラートが発生しています。

ランディング・ページ

当初、ランディング・ページに記述されていたのは、VBScriptに関する脆弱性(CVE-2018-8174)を悪用するコードだけでしたが、その後、ペイロードをより確実に実行するため、Flash埋め込みコードも記述されるようになりました。

ランディング・ページでは、<span>タグによりVBScriptコードがBase64でエンコードされています。このコードは、ページの読み込み時にJScript関数をロードします。そしてロードされた関数が、攻撃の次の段階で使用されるVBScriptコードをデコードし、ExecuteGlobal関数を使用して同コードを実行します(図8)。


図8:ランディング・ページのコード(抜粋)

図9は、不正なVBScriptコードをデコードするJScript関数です。


図9:Base64デコード関数

Flash埋め込みコードは、noscriptタグ内に記述されており、スクリプトが無効化されている場合にのみ読み込まれます(図10)。


図10:Flash埋め込みコード

デコードされたVBScriptコードは、CVE-2018-8174脆弱性を悪用してシェルコードを実行します(図11)。


図11:デコードされたVBScript

 シェルコードは、XORエンコードされたペイロードを%temp%ディレクトリにダウンロードし、デコードして実行します(図12)。


図12:4072690b935cdbfd5c457f26f028a49cにデコードされるXORバイナリ転送

ペイロードの解析(4072690b935cdbfd5c457f26f028a49c)

マルウェアには、ペイロードの最初の読み込みと最終的な実行に使用されるPEローダー・コードが含まれています(図13)。


図13:PEローダーからのリゾルバの読み込み

展開されたDLLの83439fb10d4f9e18ea7d1ebb4009bdf7はまず、マルウェアのコア機能に対する関数ポインタの構造体を初期化します(図14)。


図14:関数ポインタが★代入された★コア構造体

続いて、実行中の全プロセスを列挙し、各プロセスのCRC32チェックサムを作成した後、チェックサムのブラックリストと照合します。チェックサムおよび対応するプロセス名のリストを表1に示します。

CRC32チェックサム

プロセス名

99DD4432h

vmwareuser.exe

2D859DB4h

vmwareservice.exe

64340DCEh

vboxservice.exe

63C54474h

vboxtray.exe

349C9C8Bh

Sandboxiedcomlaunch.exe

5BA9B1FEh

procmon.exe

3CE2BEF3h

regmon.exe

3D46F02Bh

filemon.exe

77AE10F7h

wireshark.exe

0F344E95Dh

netmon.exe

278CDF58h

vmtoolsd.exe

表1:ブラックリストに登録されたチェックサム

一致するチェックサムがあった場合、マルウェアは無限ループに入り、実質的に無害な状態となります(図15)。


図15:ブラックリストに登録されたCRC32チェックサムとの照合

一致するチェックサムがなかった場合は、新しいスレッドが開始されます。マルウェアはこのスレッドで、"SeShutdownPrivilege"を取得した後、自身のイメージ・パス、OSのバージョン、アーキテクチャ(x86/x64)を確認します。Windowsのバージョンが6.3(Windows 8.1/Windows Server 2012)である場合、次の処理が行われます。

  • "SeTakeOwnershipPrivilege"を取得し、"C:\Windows\System32\ctfmon.exe"の所有権を取得
  • WoW64で実行されている場合は、64ビット・バイナリの置き換えを可能にするため、Wow64DisableWow64FsRedirection経由でWoW64リダイレクトを無効化
  • "C:\Windows\System32\ctfmon.exe"を自身のコピーで置き換え
  • "ctfmon.exe"がすでに実行中であるかどうかを確認。実行されていない場合は、レジストリ・キーの"\Registry\Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"を使用して自身をスタートアップに追加
  • ExitWindowsExを呼び出してシステムを再起動

上記以外のバージョンでは、次の処理が行われます。

  • "SeTakeOwnershipPrivilege"を取得し、"C:\Windows\System32\rundll32.exe"の所有権を取得
  • WoW64で実行されている場合は、64ビット・バイナリの置き換えを可能にするため、Wow64DisableWow64FsRedirection経由でWoW64リダイレクトを無効化
  • "C:\Windows\System32\rundll32.exe"を自身のコピーで置き換え
  • レジストリ・キーの"\Registry\Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"を使用して自身をスタートアップに追加
  • ExitWindowsExを呼び出してシステムを再起動

OSのバージョンを問わず、システム・ファイルの置き換えに失敗した場合、マルウェアは、表2のパスに自身をコピーし、ShellExecuteW経由で実行します。

ダンプ・パス

ダンプ名

%APPDATA%\Microsoft

{ランダムなアルファベット}.exe

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup

{ランダムなアルファベット}.pif

表2:代替のダンプ・パス

実行されたマルウェアは、自身がctfmon.exe/rundll32または表2の実行可能ファイルとして実行されているかどうかをチェックします。★いずれかとして実行されている場合★、ダウンローダのブランチが動作を開始します(図16)。


図16:イメージ・パス・チェック後のダウンローダ・コードの実行

実行可能ファイルが複数実行されるのを防ぐため、"「Alphabeam ldr」"というMUTEXが作成されます。また、この段階でペイロードのURLがデコードされます。そのために、エンコードされたデータがmov命令によってblobにコピーされます(図17)。


図17:エンコードされたURLをコピー

図18のアルゴリズムに基づいて、32バイトのマルチXORキーが生成されます。


図18:XORキーの生成

XORキー(83439fb10d4f9e18ea7d1ebb4009bdf7)

{ 0x25, 0x24, 0x60, 0x67, 0x00, 0x20, 0x23, 0x65, 0x6c, 0x00, 0x2f, 0x2e, 0x6e, 0x69, 0x00, 0x2a, 0x35, 0x73, 0x76, 0x00, 0x31, 0x30, 0x74, 0x73, 0x00, 0x3c, 0x3f, 0x79, 0x78, 0x00, 0x3b, 0x3a }

最後に、PXORとXMMレジスタを使用して実際のデコードが実施されます(図19)。


図19:ペイロードのURLのXORデコード

この後、ダウンローダのスイッチ・ループの実行が始まります(図20)。


図20:レスポンス/ダウンロード・ハンドラ

HTTPリクエストの内容と、想定されるレスポンス(「body」はHTTPレスポンス・ボディ)、対応する処理を表3に示します。

リクエスト番号

リクエストURL

(想定されるレスポンス)body+0x0

body+0x4

body+0x7

処理

1

hxxp://91[.]210.104.247/update.bin

0x666555

0x0

リクエスト#2のURL

リクエスト#2経由でペイロードをダウンロード、MZおよびPEヘッダを検証、CreateProcessW経由で実行

1

hxxp://91[.]210.104.247/update.bin

0x666555

0x1

該当なし

ダウンロードしたペイロードをCreateProcess経由で実行することを想定。ただし、この機能は省略されており、実際には何もせず、スリープ後はループし続ける

1

hxxp://91[.]210.104.247/update.bin

0x666555

0x2

リクエスト#2のURL

リクエスト#2経由でペイロードを実行、MZおよびPEヘッダを検証、自身のPEローダー・モジュールを使用してネイティブ・プロセス空間に手動で読み込み

1

hxxp://91[.]210.104.247/update.bin

0x666555

0x3

該当なし

ダウンロードしたペイロードを自身のPEローダー経由で実行することを想定。ただし、この機能は省略されており、実際には何もせず、スリープ後はループし続ける

1

hxxp://91[.]210.104.247/update.bin

0x666555

0x4

リクエスト#3のURL

リクエスト#3を実行

1

hxxp://91[.]210.104.247/update.bin

該当なし

該当なし

該当なし

10分間スリープし、リクエスト#1からの処理を続行

2

レスポンス#1から取得

PEペイロード

該当なし

該当なし

CreateProcessWまたは内部PEローダー経由で実行(その前のレスポンスで決まる)

3

レスポンス#1から取得

該当なし

該当なし

該当なし

何も行わない。10分間スリープし、リクエスト#1から開始

表3:HTTPリクエスト、レスポンス、処理

このリクエスト・シーケンスにより、GandCrabランサムウェアがフェッチされ、マルウェアにより手動でメモリに読み込まれます。GandCrab(8dbaf2fda5d19bab0d7c1866e0664035)のダウンロードと実行につながるリクエスト#1と#2の例をそれぞれ図21と図22に示します。


図21:ペイロードのURLから最初のコマンド・シーケンスをフェッチするリクエスト#1


図22:メモリに手動で読み込まれるGandCrabランサムウェアをダウンロードするリクエスト#2

結論

アンダーグラウンドなサイバー活動に関して、逮捕者が出たり撲滅活動が行われた結果、ここ数年、エクスプロイト・キットを使用したキャンペーンは著しい減少傾向にあります。それでも、適切にパッチを適用していないシステムを使用しているユーザーにとって、エクスプロイト・キットが深刻な脅威であることに変わりはありません。現在、エクスプロイト・キットを使用したキャンペーンが活発化しているのは、脆弱な状態のソフトウェアを使用しているユーザーが多いアジア太平洋地域です。これに対し北米では、もっとシンプルなソーシャル・エンジニアリングが使われる傾向にあります。

FireEyeネットワーク・セキュリティは、このブログで解説したすべてのエクスプロイト、ソーシャル・エンジニアリング・キャンペーン、マルウェア、C&C通信を検知します。また、複数のFireEye製品で使用されているMVXテクノロジーは、ここで言及した第1段階のマルウェアと第2段階のマルウェアを検知できます。

侵害インジケーター(IOC)

ドメイン/IPアドレス/URL/ファイル名

MD5ハッシュ/説明

finalcountdown.gq、naosecgomosec.gq、

ladcbteihg.gq、dontneedcoffee.gq

エクスプロイト・キットのドメイン

78.46.142.44、185.243.112.198

エクスプロイト・キットのIPアドレス

47B5.tmp

4072690b935cdbfd5c457f26f028a49c

hxxp://46.101.205.251/wt/ww.php

 

hxxp://107.170.215.53/workt/trkmix.php?device=desktop&country=AT&connection.type=BROADBAND&clickid=58736927880257537&countryname=
Austria&browser=ie&browserversion=11&carrier=%3F&cost=0.0004922&isp=BAXALTA+INCORPORATED+ASN&os=windows&osversion=6.1&useragent=
Mozilla%2F5.0+%28Windows+NT+6.1%3B+WOW64%3B+Trident%2F7.0%3B+rv%3A11.0%29+like+Gecko&campaignid=1326906&language=de&zoneid=1628971

 

不正広告と、エクスプロイト・キットで制御されたドメインの間で使用されるリダイレクトURLの例

91.210.104[.]247/update.bin

第2段階のペイロードのダウンロードURL

91.210.104[.]247/not_a_virus.dll

8dbaf2fda5d19bab0d7c1866e0664035

 

第2段階のペイロード(GandCrabランサムウェア)

謝辞

本稿の執筆にご協力いただいたHassan Faizan氏に感謝いたします。