近年の水飲み場攻撃事例 Part2

今回は、前回に引き続き水飲み場攻撃の事例を紹介します。2回目は、2023年にあるメディア関連のWebサイトが悪用された事例を取り上げます。

攻撃の流れ

図1に水飲み場攻撃の流れを示します。改ざんされたWebサイトにアクセスするとLZHファイルがダウンロードされ、LZHファイル内に含まれるLNKファイルを実行すると、マルウェアに感染します。

攻撃の流れ
図1:攻撃の流れ

改ざんされたWebサイトには、図2のようなJavaScriptが埋め込まれており、Webサイトに特定のアカウントでログイン(Basic認証)しているユーザーに対してマルウェアがダウンロードされる仕組みになっていました。

改ざんされたWebサイトに設置されていた不正なコード(1)
図2:改ざんされたWebサイトに設置されていた不正なコード(1)

マルウェアをダウンロードさせるWebページは図3のように、メンテナンス中であるかのようなメッセージが表示され、自動的にLZHファイルがダウンロードされます。そして、LZHファイルが展開できないユーザーに備えて、正規の解凍ソフトウェアLhaplusをダウンロードするためのリンクがWebページ内に含まれていました。

改ざんされたWebサイトに設置されていた不正なコード(2)
図3:改ざんされたWebサイトに設置されていた不正なコード(2)

感染するマルウェア

この攻撃によってダウンロードされるマルウェアは、図4のとおりLNKファイル内に含まれています。

マルウェア感染の流れ
図4:マルウェア感染の流れ

LNKファイル内には、図5のように本体となるマルウェアを含むZIPファイルと、それを展開するためのVBSファイルがBase64エンコードされて挿入されており、LNKファイル実行時に展開されます。

LNKファイルに含まれる不正なコード
図5:LNKファイルに含まれる不正なコード

ZIPファイルには、正規ファイルであるiusb3mon.exeと2つのDLLが含まれています。iusb3mon.dllは、正規ファイルiusb3mon.exeにロードされますが、図6のようにnewimpというセッションが追加されており、そのセッションでマルウェア本体となるdmiapi32.dll(マルウェア名:SQRoot)をロードします。

iusb3mon.dllに追加されたnewimpセクション
図6:iusb3mon.dllに追加されたnewimpセクション

SQRoot(dmiapi32.dll)

SQRootは、C2サーバーからプラグインをダウンロードして機能拡張するマルウェアです。ダウンロードするプラグインは表1のとおりです。

表1:プラグイン一覧
プラグインファイル名 詳細
8015ba282c.tmp 画像ファイルを装ったRATのダウンロード・実行
abb8fcc3b5.tmp シェルコードのダウンロード・実行
8714c42184.tmp 不明
6eadde753d.tmp 不明

SQRootは、C2サーバーとの通信時にクライアントの情報を送信します。送信するデータはChaCha20で暗号化されます。また、User-Agentヘッダーの末尾にはユニークID、x-authヘッダーにはランダムな文字列(aq[BASE64エンコードされた12byteのNonce])がセットされます。

POST /papers/en-jp/task HTTP/1.1
Connection: Keep-Alive
Content-Type: application/octet-stream
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/9a.3f.6b.7f.18.ee.0f
x-auth: aq8bvp67Om2zyHDD6Z
Content-Length: [サイズ]
Host: [サーバー名]

SQRootは、C2サーバーとの通信する時間を、9時~18時(月曜日から金曜日)に限定しています。また、C2サーバーとの通信を通常のWebアクセスに偽装するため、SQRootは以下のようなダミーの通信を定期的に送信します。

https://dict.digibulk.live/index
https://dict.digibulk.live/favicon.ico
https://dict.digibulk.live/jss/font-awesome.min.css
https://dict.digibulk.live/css/jquery-ui.min.css

SQRoot RAT

プラグイン8015ba282c.tmpがダウンロードされた場合、次に図7のようなBPMファイルに偽装したマルウェア(SQRoot RAT)がダウンロードされます。このマルウェアも9時~18時(月曜日から金曜日)のみC2サーバーと通信するように設定されています。

BPMファイルに偽装したSQRoot RATの一部
図7:BPMファイルに偽装したSQRoot RATの一部

SQRoot RATは、データをRC4で暗号化してC2サーバー送信します。このマルウェアが実行可能なコマンドは、Appendix Cをご覧ください。

POST /weekly/img/new/paper.php?hid=[固定値]&uid=[ユニークID]&cid=[コマンド] HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54
Content-Length: [サイズ]
Host: [サーバー名]

[RC4 data]

SQRoot Stealer

さらに、SQRootが感染したホストでは情報窃取を目的としたマルウェア(SQRoot Stealer)も見つかっています。図8は、SQRoot Stealerの実行の流れです。

SQRoot Stealerの実行の流れ
図8:SQRoot Stealerの実行の流れ

本体となるマルウェアはnvprojects.dllですが、SQRootと同様に正規ファイルであるnvSmart.exeにロードされて動作します。このマルウェアもSQRootと同様にプラグインを読み込んで動作します。以下は、プラグインの例です。

  • jtpa_record_4_0.tmp:キーロガー
  • jtpa_snap_2_0_1.tmp:スクリーンキャプチャ
  • jtpa_un_cat.tmp:ファイル送信

アトリビューション

今回紹介した、水飲み場攻撃に関係する攻撃グループは不明です。今回使用されたマルウェアのファイル名(nvSmart.exe、nvsmartmax.dll、iusb3mon.exe、iusb3mon.dll)は、過去にAPT10が使用されていることを確認しています。また、水飲み場攻撃に利用されたWebサイトには、WeevelyというWebシェルが設置されていました。

おわりに

2回に分けて水飲み場攻撃の事例を紹介しましたが、どちらも脆弱性を悪用することなく、ソーシャルエンジニアリングでマルウェアの感染を狙っていました。現在のセキュリティ対策は、外部公開資産の脆弱性対策に重点が置かれがちですが、このようなソーシャルエンジニアリングについても引き続き注意が必要です。

インシデントレスポンスグループ 喜野 孝太、朝長 秀誠

Appendix A:通信先

  • dict.digibulk.live
  • mnc.poiuuioq.space
  • gogo.qiohanwy.store
  • 158.247.192.54

Appendix B:マルウェアハッシュ値

SQRoot

  • 154cbce8afc48bc6d0f59726250fe7b9981ecdd0ce44fad48a3a662e3eb64135

SQRoot Plugin(8015ba282c.tmp)

  • f4cd4b51df47ba50c870657ff094c3355a6567f3cc77abcc4894cdaf57b2f0bd

SQRoot RAT

  • bb0c9d80220a93c2f9fe442f3a2ef2b41db44d9367483c8f22a25732478af82a

SQRoot Stealer

  • a30943c524cbf5989ca74d3d78709d40a82da2bc760afe938fa76cd21c443484

jtpa_snap_2_0_1.tmp

  • 6988afa7950e0cecdc24e472f7e31ce855a29458c3b908554bf473686a97069b

jtpa_snap_2_0_1.tmp

  • 0be4b77b667af42771189d697644b1760ce7c3d341a0d8d06fed0a81c4a1e253

jtpa_un_cat.tmp

  • 41de808ce98285d750766d2a5b96cb8ddd972e282501dede2d5032de380f2146

Appendix C:コマンド

表C:コマンド一覧
Command ID 詳細
1128 名前付きパイプ作成
1129 ダウンロード
112A アップロード
112B スリープ時間設定
112C 終了
112D ドライブ情報の送信
112E ファイル一覧の送信
112F ファイル削除
1130 ファイル名変更
1131 ファイルコピー
1132 フォルダー作成
1133 プロセス実行
1134 プロセス実行+実行結果送信
≪ 前へ
トップに戻る