- Cisco Talos は先ごろ、Gophish というオープンソースのフィッシングツールキットを使用したフィッシング攻撃を発見しました。Gophish を悪用している攻撃者の正体は不明です。
- この攻撃はモジュール型の感染チェーンで構成されており、不正ドキュメントまたは HTML によって感染します。感染チェーンを開始するには被害者の介入が必要です。
- Talos は、ペイロードの 1 つとして、これまで情報がなかった PowerShell RAT を発見し、これを PowerRAT と呼んでいます。さらにもう 1 つ、悪名高いリモートアクセスツール(RAT)である DCRAT も使用が確認されました。
- PowerRAT には、base64 でエンコードされた PowerShell スクリプトのプレースホルダがいくつか含まれており、攻撃者が積極的にツールを開発している様子がうかがえます。
被害状況
攻撃者が標的にしているのはロシア語圏のユーザーだと Talos はほぼ確信しています。これは、フィッシングメールで使用されている言語、悪意のある文書の偽コンテンツ、ロシア語話者(特にロシア、ウクライナ、ベラルーシ、カザフスタン、ウズベキスタン、アゼルバイジャン)に人気のソーシャルメディア アプリケーションである Vkontake(VK)の Web ページを偽装した HTML ファイルに基づいた見解です。
攻撃者は Gophish を使用してフィッシングメールを送信
フィッシングメールに埋め込まれた悪意のあるハイパーリンクを分析したところ、攻撃者が管理するホスティングドメイン disk-yanbex[.]ru から、悪意のある Microsoft Word 文書と、悪意のある JavaScript が埋め込まれた HTML ファイルが配布されていたことが明らかになりました。
disk-yanbex[.]ru いうドメインは IP アドレス 34[.]236[.]234[.]165 に解決されます。このサーバーは AWS EC2 インスタンスであり、完全修飾ドメイン名は ec2-34-236-234-165[.]compute-1[.]amazonaws[.]com であることが分析中に判明しました。また、同じサーバー 34[.]236[.]234[.]165 が別のドメイン e-connection[.]ru に逆解決され、そこでも悪意のある JavaScript が埋め込まれた HTML ファイルが配布されていることが確認されました。サーバー 34[.]236[.]234[.]165 の分析をさらに進めたところ、攻撃者が、ポート番号 3333 で稼働しているサーバーで Gophish ツールキットをホストしていることが判明しました。Gophish の開発者によると、これは、簡単に導入できるオープンソースのフィッシングツールキットであり、セキュリティ意識向上トレーニングを行うために開発されました。
攻撃者が Gophish をホスト。
フィッシングメールのサンプルのヘッダーを Talos で分析したところ、メールはまずサーバー 34[.]236[.]234[.]165 から送信されており、今回の攻撃では、攻撃者が Gophish フレームワークを悪用してフィッシングメールを標的に送りつけていることが判明しました。
フィッシングメールのサンプルのヘッダー。
マルチモジュール型の攻撃で PowerRAT と DCRAT を配布
この攻撃には 2 つの初期攻撃ベクトルがあり、悪意のある Word 文書と、悪意のある JavaScript が埋め込まれた HTML ファイルによって感染が引き起こされます。悪意のあるプログラムが起動すると、初期ベクトルに応じて PowerRAT または DCRAT がダウンロードされ、機能し始めます。どちらの攻撃チェーンも、侵害したマシンで感染を引き起こすためにはユーザーの操作が必要です。
不正ドキュメントによる感染で PowerRAT を配布
被害者が Microsoft Word 文書を開き、文書のバナーに表示されたコンテンツの表示ボタンを有効にすると、悪意のある VB マクロプログラムが実行されます。
このマクロプログラムはまず、Word 文書の偽コンテンツに含まれる特定のエンコード記号を、キリル文字の別のアルファベットに対応する文字にデコードまたは変換する機能を実行し、偽コンテンツを読み取り可能な形式に変換します。
Talos は Word 文書の 3 ページ目に、base64 でエンコードされたデータ BLOB を発見しました。攻撃者は文書のデフォルトの背景色と同じテキスト色を使用して、データが被害者に見えないように隠していました。
隠されたエンコード済みデータを特定するために、「DigitalRSASignature:」や「CHECKSUM」などの特定の文字列を Word 文書のコンテンツセクションで検索し、見つかった場合は、検索文字列に続くデータを配列にコピーする関数をマクロで実行します。
base64 でエンコードされたデータ BLOB をデコードするために、攻撃者は CheckContent() というカスタム関数をマクロ内で使用しています。この関数は、エンコードされたデータ BLOB 内の「=」(パディング文字)をすべて削除し、バイト配列内で 2 つの部分にデコードします。最初の部分は悪意のある HTML アプリケーション(HTA)ファイルのコンテンツで、2 つめの部分は PowerShell ローダーです。
このマクロは、悪意のある HTA ファイルのデコードされたコンテンツを「UserCache.ini.hta」として、PowerShell ローダーを「UserCache.ini」として、それぞれ被害者のマシンの現在のユーザープロファイル フォルダにドロップします。
攻撃者は、Windows NT の現在のバージョンの Autorun レジストリキーである「LOAD」を悪用していました。Windows では、ユーザーがアカウントにログインすると、レジストリキー「HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LOAD」を使用して、アプリケーションやプロセスを自動的に起動します。具体的に説明すると、このキーはユーザーのログイン時にロードするよう設定されたプログラムの情報を格納しておくものであり、Windows の他のスタートアップメカニズム(スタートアップフォルダやレジストリキーの Run など)に似た動作をしますが、一般的にはあまり使用されません。このマクロは、悪意のある HTA ファイルと PowerShell ローダースクリプトを被害者のマシンのユーザープロファイル フォルダにドロップした後、レジストリキー「HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LOAD」に値「C:\Users\<ユーザー名>\UserCache.ini.hta」を設定します。
そして最後に、Word 文書にヘッダーがあるかどうかを確認し、Word 文書のすべてのセクションからヘッダーの内容を削除します。
中間フェーズで実行される、悪意のある HTA、JavaScript、PowerShell ローダー
被害者がマシンにログインすると、LOAD レジストリキーを通じて、悪意のある HTA「UserCache.ini.hta」が実行されます。この HTA は「UserCacheHelper.lnk.js」という JavaScript を被害者のマシンのユーザープロファイル フォルダにドロップし、PowerShell コマンドが埋め込まれた 1 行のコードを書き込みます。このコードは、「UserCache.ini」というファイル名でドロップされた PowerShell ローダーを実行します。HTA ファイルは、LOLbin の「cscript.exe」を使用して JavaScript「UserCacheHelper.lnk.js」を実行します。
悪意のある HTA ファイルのサンプル。
ドロップされた JavaScript「UserCacheHelper.lnk.js」は、「UserCache.ini」の内容をロードし、Invoke-Expression PowerShell コマンドを使用してそれを実行します。INI ファイルに見せかけた PowerShell ローダースクリプトには、ペイロードである PowerRAT のデータ BLOB が含まれています。データは base64 でエンコードされており、被害者のマシンのメモリ内でデコードされてから実行されます。
PowerRAT が埋め込まれた PowerShell ローダースクリプトのサンプル。
感染を拡げるために、PowerRAT によって攻撃ベクトルを拡大
この攻撃では、ペイロードの 1 つとして新しい PowerShell リモートアクセスツールが使用されていることを Talos は発見しました。このペイロードは被害者のマシンのメモリ内で実行され、Talos では PowerRAT と呼んでいます。このツールには、C2 サーバーの指示に従って他の PowerShell スクリプトやコマンドを実行する機能があり、攻撃ベクトルを拡大することで、被害者のマシン上でさらなる感染を引き起こします。
被害者のマシンのメモリ内で実行される PowerRAT は、まずユーザープロファイル フォルダに JavaScript「UserCacheHelper.lnk.js」が存在するかどうかを確認し、見つからない場合は、前節で説明した PowerShell ローダースクリプトのアクションを実行して、被害者のマシンを再感染させます。その後、「UserCache.ini」のファイル属性を「隠しファイル」に変更して、このファイルを非表示にします。
PowerRAT は GetID() 関数を実行することで、被害者のマシン上で偵察活動を行います。この関数は、PowerShell コマンド Get-CimInstance を使用して、ユーザー名、コンピュータ名、システムドライバの文字を収集します。また、WMIobject の win32_volume クラスを使用して、ドライブのシリアル番号も収集します。収集されたデータは、<コンピュータ名_ユーザー名_ドライブシリアル番号> という形式でメモリに書き込まれます。
偵察が完了すると、PowerRAT は収集した被害者のマシンのデータを送信するために C2 サーバーへの接続を試みます。このとき、ハードコードされた URL を介して、HTTP GET メソッドで接続します。この攻撃で確認された C2 サーバーは、ロシアに位置する 94[.]103[.]85[.]47(Hosting Technology LTD が管理する ASN 48282)と、同じくロシアに位置する 5[.]252[.]176[.]55(MivoCloud SRL が管理する ASN 39798)です。
PowerRAT には offlineworker() というプレースホルダ関数があります。これは、C2 サーバーから応答がない場合に PowerShell スクリプトに埋め込まれた base64 エンコード文字列をデコードし、Invoke-Expression コマンドを使用してそれを実行するという機能です。この機能は、被害者の環境で悪意のある C2 トラフィックが検出され、接続がブロックされた場合でも、被害者のマシンで感染を維持するために攻撃者が開発したものです。Talos で分析した PowerRAT サンプルには、base64 でエンコードされた文字列は埋め込まれていませんでした。おそらくはプレースホルダであり、攻撃者がツールを積極的に開発し更新していることの表れです。
PowerRAT は 7 から 23 の範囲でランダムな数字を生成し、それに 300 を足した秒数だけ実行を一時停止します。その後、C2 サーバーへの接続を再試行して、応答を待ち続けます。Talos の分析中に C2 サーバーは応答しませんでしたが、PowerRAT をさらに分析したところ、C2 サーバーは、PowerShell コマンドまたはスクリプトに埋め込まれた base64 エンコードの複数のモジュールを持つ XML 設定ファイルで応答するらしいことがわかりました。
PowerRAT には、受信した XML ファイルを解析し、config セクションを検索する機能があります。PowerRAT は定められた間隔と実行回数に従って、埋め込まれたエンコード済みの PowerShell コマンドまたはスクリプトを定期的に実行します。config セクション内のすべてのコマンドまたはスクリプトが必要な回数実行されるまで、PowerRAT は継続して実行されます。
HTML による感染で DCRAT を配布
今回の攻撃では、悪意のある JavaScript が埋め込まれた HTML ファイルも使用されていることを Talos は明らかにしました。フィッシングメール内の悪意のあるリンクを通じて HTML ファイルが被害者に配布され、DCRAT ペイロードの感染を引き起こします。
被害者がフィッシングメール内の悪意のあるリンクをクリックすると、リモートにある、悪意のある JavaScript が埋め込まれた HTML ファイルが被害者のマシンのブラウザで開き、同時に JavaScript が実行されます。この JavaScript には、base64 でエンコードされたデータ BLOB が、悪意のある SFXRAR 実行ファイルの 7-ZIP アーカイブとして埋め込まれています。埋め込まれた base64 エンコードのデータ BLOB は、メモリ内で「application/octet-stream」形式のバイナリデータ BLOB にデコードされます。URL.createObjectURL() メソッドを使用してバイナリデータ BLOB のダウンロード URL が作成され、メモリ内の変数に割り当てられます。これにより、バイナリデータ BLOB の URL で click() メソッドが呼び出され、7-Zip アーカイブファイルへのバイナリデータのダウンロードが開始されます。悪意のある HTML ファイルの 1 つでは、悪意のある 7-Zip アーカイブは VK メッセンジャー アプリケーションのアーカイブファイルを装っており、ロシア語の名前が付けられているものもあります。攻撃者はこの手法を JavaScript 関数で使用し、ファイルがブラウザ経由でインターネットから実際にダウンロードされているかのように見せかけています。
被害者が 7-Zip アーカイブを手動で展開すると、SFXRAR 実行ファイル(VK アプリケーションの正規の実行ファイルに見せかけたファイル)が実行され、DCRAT の感染に至ります。一部のサンプルでは、悪意のあるローダーまたはドロッパーの実行ファイル、バッチファイル、偽文書と一緒に SFXRAR 実行ファイルがパッケージ化されています。
被害者が SFX 実行ファイルを実行すると、SFX スクリプトはパッケージ化されたファイルをフォルダにドロップし、バッチファイルを実行します。このバッチファイルは、ハードコードされたパスワード「riverdD」で保護されている別の SFXRAR を実行し、DCRAT を実行します。
別のサンプルでは、SFXRAR が GOLoader と偽文書の Excel スプレッドシートを被害者のマシンのユーザープロファイル アプリケーションの一時フォルダにドロップし、偽文書を開くと同時に GOLoader を実行していることが確認されました。
Talos は、この攻撃で攻撃者が使用した手法が、2024 年 4 月に Hunt の研究者が報告した以前の SparkRAT 攻撃のものと一致していることを確認しました。これは、SparkRAT が新たなペイロードとして攻撃者の戦力に加わったことを示しています。
GOLoader による DCRAT のダウンロードと実行
DCRAT 感染では、SFX スクリプトが悪意のあるローダーの実行ファイルを実行し、同時に偽文書を開きます。Talos で「GOLoader」と呼んでいる悪意のあるローダーの実行ファイルは、Golang でコンパイルされています。このファイルは、Microsoft Defender ウイルス対策の構成設定を変更します。具体的には次の PowerShell コマンドを実行して、被害者のマシンのルートディレクトリ「C:」とフォルダ「C:\Users\$user\Desktop」を除外します。
powershell -Command Add-MpPreference -ExclusionPath ‘C:\Users\$user\Desktop’ |
powershell -Command Add-MpPreference -ExclusionPath ‘C:\’ |
GOLoader は除外パスを設定した後、ハードコードされた URL を介してリモートロケーションから DCRAT バイナリデータストリームをダウンロードし、被害者のマシンのデスクトップフォルダにドロップされた実行ファイル(ファイル名は「file.exe」)に書き込みます。Talos で分析したところ、GOLoader にハードコードされたリモートロケーションの URL は GitHub リポジトリを指していると判明しましたが、このリポジトリにはアクセスできませんでした。ただし、オープンソースのインテリジェンスデータから、GitHub リポジトでホストされているペイロードのバイナリは Dark Crystal RAT(DCRAT)のバイナリであることが確認できました。
攻撃者による DCRAT の配布
今回の攻撃で分析したペイロード Dark Crystal RAT(DCRAT)のサンプルはモジュール型の RAT で、DLL インジェクションや情報窃取のタスクを実行するプラグインに関連付けられています。
今回の攻撃における DCRAT サンプルの主な特徴は次のとおりです。
- 被害者のマシンへのリモート制御アクセスを攻撃者に提供し、任意コマンドの実行、ファイルの管理、ユーザーアクティビティの監視を行えるようにします。
- 被害者のマシン上で他のファイルをダウンロードして実行する機能があります。
- 情報窃取プログラム(stealer)のプラグインモジュールを使用すると、ログイン情報、ファイル、財務情報などの機密情報を被害者のマシンから盗み出すことができます。
- 被害者のマシンのスクリーンショットを撮影し、キー入力を記録できます。
- ProgramData、Pictures、Saved Games、Windows スタートメニューなどのフォルダに、csrss.exe、dllhost.exe、taskhostw.exe、winlogon.exe など正規の Windows 実行ファイルを装ったバイナリのコピーを複数作成します。また、埋め込まれたモジュールを、ランダムなファイル名を使用して管理者ユーザーのデスクトップフォルダにドロップします。ファイル拡張子は「.log」です。
C:\Users\admin\Desktop\zaHrebVC.log |
C:\Users\admin\Desktop\HQLYdHol.log |
C:\Users\admin\Desktop\qJutJUJW.log |
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\taskhostw.exe |
C:\ProgramData\dllhost.exe |
C:\Users\Default\Pictures\csrss.exe |
C:\Users\Default\Saved Games\winlogon.exe |
- さまざまな間隔で実行する Windows タスクや Windows のログインプロセス中に実行するタスクを作成し、被害者のマシンで永続性を確立します。タスクの作成に使用されるコマンドは以下のとおりです。
schtasks.exe /create /tn “winlogonw” /sc MINUTE /mo 11 /tr “‘C:\Users\Default\Saved Games\winlogon.exe'” /f |
schtasks.exe /create /tn “winlogon” /sc ONLOGON /tr “‘C:\Users\Default\Saved Games\winlogon.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “winlogonw” /sc MINUTE /mo 5 /tr “‘C:\Users\Default\Saved Games\winlogon.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “csrssc” /sc MINUTE /mo 12 /tr “‘C:\Users\Default\Pictures\csrss.exe'” /f |
schtasks.exe /create /tn “csrss” /sc ONLOGON /tr “‘C:\Users\Default\Pictures\csrss.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “csrssc” /sc MINUTE /mo 7 /tr “‘C:\Users\Default\Pictures\csrss.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “dllhostd” /sc MINUTE /mo 11 /tr “‘C:\Users\Public\dllhost.exe'” /f |
schtasks.exe /create /tn “dllhost” /sc ONLOGON /tr “‘C:\Users\Public\dllhost.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “dllhostd” /sc MINUTE /mo 12 /tr “‘C:\Users\Public\dllhost.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “dllhostd” /sc MINUTE /mo 8 /tr “‘C:\Users\All Users\dllhost.exe'” /f |
schtasks.exe /create /tn “dllhost” /sc ONLOGON /tr “‘C:\Users\All Users\dllhost.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “dllhostd” /sc MINUTE /mo 11 /tr “‘C:\Users\All Users\dllhost.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “taskhostwt” /sc MINUTE /mo 6 /tr “‘C:\Users\Default\Start Menu\taskhostw.exe'” /f |
schtasks.exe /create /tn “taskhostw” /sc ONLOGON /tr “‘C:\Users\Default\Start Menu\taskhostw.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “taskhostwt” /sc MINUTE /mo 10 /tr “‘C:\Users\Default\Start Menu\taskhostw.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “filef” /sc MINUTE /mo 13 /tr “‘C:\Users\admin\AppData\Local\Temp\file.exe'” /f |
schtasks.exe /create /tn “file” /sc ONLOGON /tr “‘C:\Users\admin\AppData\Local\Temp\file.exe'” /rl HIGHEST /f |
schtasks.exe /create /tn “filef” /sc MINUTE /mo 9 /tr “‘C:\Users\admin\AppData\Local\Temp\file.exe'” /rl HIGHEST /f |
- 図に示されているように、RAT の設定ファイルにハードコードされている URL を介して C2 サーバーと通信し、被害者のマシンから収集した機密データを漏洩させます。この攻撃で確認された他の DCRAT サンプルから、もう 1 つの C2 URL「hxxp[://]cr87986[.]tw1[.]ru/L1nc0In[.]php」が見つかりました。
DCRAT 設定ファイルのサンプル。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。この脅威を検出する Snort SID は、63963 ~ 63970、63971、301004 です。
ClamAV でも、次の脅威を検出できます。
Win.Downloader.RustAgent-10036537-0
Win.Downloader.RustAgent-10036538-0
Win.Downloader.RustAgent-10036539-0
Win.Downloader.GoAgent-10036540-0
Win.Backdoor.PowershellRAT-10036541-0
Win.Phishing.VbsAgent-10036542-0
Win.Phishing.JsAgent-10036543-0
Win.Loader.PowershellLoader-10036544-0
Win.Loader.HtaAgent-10036545-0
Win.Loader.DonutLoader-10036546-0
IOC
この調査の IOC は、こちらの GitHub リポジトリで提供しています。
本稿は 2024 年 10 月 22 日にTalos Group のブログに投稿された「Threat actor abuses Gophish to deliver new PowerRAT and DCRAT」の抄訳です。