ステルス性の高い情報窃取型マルウェア「DarkCloud」の新たな亜種

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「DarkCloudキャンペーンの新しい亜種を発見」を再編集したものです。

影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー    :Windowsユーザー
影響            :被害者のコンピュータから機密情報を収集
深刻度           :高

背景

 2025年7月初旬、フォーティネットのFortiGuard Labsチームは最新のDarkCloudキャンペーンを実際に確認しました。始まりは、RARアーカイブが添付されたフィッシングメールでした。その後、私はこのキャンペーンを調査し、詳細な分析を実施しました。

DarkCloudは2022年に初めて確認された、ステルス性の高いWindowsベースの既知の情報窃取型マルウェアです。このマルウェアは、被害者のコンピュータに保存されているログイン認証情報、金融データ、および連絡先などの機密情報を盗難するよう設計されています。

 本分析ではこのキャンペーンにおける、被害者のコンピュータ上での開始方法、システム上で永続性を確立する方法、ファイルレス型DarkCloudペイロードをダウンロード、デコード、および展開する方法、本亜種が被害者から収集する可能性がある機密情報の種類、および盗難データを流出させる方法について紹介します。

感染チェーン

 図1は、新しいDarkCloud亜種の感染チェーンを示しています。
 

図1:新しいDarkCloud亜種の感染チェーン

フィッシングメール攻撃の初期化

 図2は、至急の見積もり依頼の文脈で、添付されているRARファイルを開くよう受信者を誘惑するフィッシングメールを示しています。注意すべき点として、このEメールにはメッセージ本文がなく、添付ファイルのみ含まれています。

図2:RARファイルが添付されたフィッシングメール

 Quote #S_260627.RARファイルをWinRARで開くと、中に、Quote #S_260627.jsという名前の単独のJavaScriptファイルがあります。受信者がこのJSファイルをダブルクリックすると、WindowsのデフォルトプロセスであるWScript.exeが自動的に起動しファイルが実行されます。

JavaScript & PowerShell

 このJSコードは図3に示すように難読化されています。実行されると、難読化されたコードからPowerShellコードの一部が動的にデコードされます。次に、WScript.Shellオブジェクトが作成され、デコードされたPowerShellコードが実行されます。

図3:JavaScriptファイルのコードの一部

 cosmea変数には、デコードされた文字列である「powershell -w hidden -noprofile -ep bypass -c」が格納され、effortless変数には、デコードされたPowerShellコードが含まれます。

 このPowerShellコードはBase64でエンコードされており、実行時にデコードされます。図4は、複数の部分に分割されているデコードされたPowerShellコードを示しています。

図4:Base64デコードされたPowerShellコード

 偽装されたJPEG画像がダウンロードされます(図5を参照)。

図5:偽装されたJPEGファイルの表示

 分析すると、このJPEG画像の背景には、暗号化された.NET DLLが埋め込まれています。

 このPowerShellコードは、JPEGファイルを解析して.NET DLLを検索し、[Reflection.Assembly]::Load()メソッドを使用して読み込みます。次に$florinda変数で保持されるパラメータの配列でInvoke()メソッドを呼び出すことで、ClassLibrary1.Home.VAI()メソッドを呼び出します。

.NETモジュールの分析

 .NET DLLのアセンブリ名はMicrosoft.Win32.TaskSchedulerです。この.NET DLLは、TaskScheduler関連のモジュールに偽装しており、被害者と研究者の両方を混乱させる意図があると思われます。図6はデバッガービューを表示しており、NET DLLのエントリポイント関数のVAI()で一時停止しています。

図6:デバッガーでVAI()メソッドを表示

 .NET DLLモジュールが実行するタスクには、永続性の維持、ファイアレス型DarkCloudペイロードのダウンロードとデコード、プロセスホローイングを使用したWindowsプロセスへのペイロードの配置などが含まれます。

・永続化メカニズム

 このモジュールは、JavaScriptファイルを別の場所にコピーするために、コマンドライン「cmd.exe /C copy *.js C:\Users\Public\Downloads\edriophthalma.js」を実行します。ターゲットフォルダのパスとファイル名は、PowerShellコードを使って渡されます。

 続いて、システムレジストリ「HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」の下に、自動実行のエントリが追加されます(図7を参照)。

図7:システムレジストリに追加された自動実行の項目

 これにより、コピーされたedriophthalma.jsは、システム起動時に自動的に確実に実行されます。

・ペイロードのダウンロード

 お気づきかもしれませんが、VAI()メソッドの第1引数は、Base64でエンコードされた文字列を反転したものです(図6を参照)。.NETモジュールは、このBase64文字列をデコードしてURL「hxxp://paste[.]ee/d/0WhDakVP/0」に変換します。このURLをリクエストすると、レスポンスで、反転したPEファイルを取得できます(図8を参照)。

図8:反転したDarkCloudペイロード

 この内容を反転し、16進数の文字列からバイナリに変換すると、このファイアレス型DarkCloud亜種のペイロードとして機能するEXEファイルがメモリ内に存在するようになります。

・プロセスホローイングを使用してDarkCloudペイロードを配置する

 被害者のシステム上の.NET Frameworkの関連ディレクトリで、MSBuild.exeファイルを検索します。ファイル名はPowerShellコードで渡されます(詳細は図6を参照)。私の環境の場合、「%Windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe」になっています。

図9:プロセスホローイングに使用されるWindows APIリストの一部

 次に、新しく作成されたMSBuild.exeプロセスに対して、プロセスホローイングを実行します。これを実施するには、一連のWindows APIを呼び出す必要があります(図9で定義されているAPIなど)。

 関連する手順を以下に示します:

・一時停止されているMSBuild.exeの新しいプロセスを作成します。
・DarkCloudペイロードをコピーし、新しいプロセスに配置します。
・EAXレジスタ値を変更し、DarkCloudのエントリポイントを参照します。
・一時停止したプロセスを再開することで、新しいMSBuild.exeプロセス内でDarkCloudを実行することができます。

 関連するAPI呼び出しを以下に示します:

CreateProcess()、ReadProcessMemory()、VirtualAllocEx()、NtUnmapViewOfSection()、WriteProcessMemory()、GetThreadContext()、SetThreadContext()、およびResumeThread()

DarkCloudペイロードの詳細

 DarkCloudペイロードはMicrosoft Visual Basic 6で記述されています。DarkCloudのコード構造は、VB Decompilerを使用して分析することで調べることができます(図10を参照)。

図10:DarkCloudのコード構造

 ご覧の通り、このDarkCloudの亜種にはFormが含まれており、複数のTimerがアタッチされています。Visual Basic(VB)のTimerは、特定の時間間隔で特定のタイマー関数を繰り返し実行するコントロールまたはオブジェクトです。分析すると、Timer4は、主要なワーカーのタイマーであり、含まれる関数は150ミリ秒ごとに呼び出されます。

分析回避技術

・定数文字列の暗号化

 DarkCloudはセキュリティ研究者の分析を妨害するために、ほとんどの定数文字列を暗号化しています。このペイロードファイル全体には、600を超える暗号化された定数文字列があり、これらは実行時に動的に復号化されます。図11は、Unicode形式の定数文字列「VBScript.RegExp」の復号化の例を示しています。

図11:定数文字列の復号化

・サンドボックス対策

 Timer4のタイマー関数には、サンドボックスのような分析システムを自動的に回避する仕組みがあります。マウスとキーボードの操作状態を監視することで、実際のユーザーがコンピュータとやりとりしているのかどうかを調べます。

 このマルウェアはGetAsyncKeyState() APIを呼び出してキーの状態を確認します。何らかのキーまたはマウスのボタンが押されると、0x8001が返されます。DarkCloudはキーが押されたことを検知するまで、このAPIを繰り返し呼び出して結果を確認します(図12を参照)。

 一方で、このマルウェアは、マウスやキーボードの操作が発生しない場合、アイドル状態を維持します。

図12:被害者の入力イベントを確認するコードスニペット

機密情報の収集

・基本情報

 DarkCloudは、rtcEnvironVar() APIを呼び出して、侵害されたシステムからコンピュータ名とユーザー名を取得します。

 また、http://showip.NETにリクエストを送信することで、被害者のパブリックIPアドレスも取得します。

・認証情報および決済情報

 このマルウェアは、一般的ないくつかのWebブラウザから、保存されている認証情報と決済情報を収集します。

図13:ブラウザのプロファイルパス

 DarkCloudは、図13に一覧表示されているブラウザのプロファイルパスを走査し、Login DataファイルとWebDataファイルに格納されている機密データにアクセスします。これらのファイルはどちらもSQLite3データベース形式で保存されています。

 復号化された定数文字列である次の2つのSQLクエリを実行し、loginsテーブルとcredit_cardsテーブルのデータを取得します。

 SELECT origin_url, username_value, password_value FROM logins
 SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards

 SQLite関連のAPIであるsqlite3_prepare_v2()、sqlite3_column_text()、およびsqlite3_column_blob()を利用して、機密データを取得します。

 保存されているパスワードなど、取得したデータの一部は暗号化されています。DarkCloudは、別のEXEファイルをドロップして実行することで復号化キーを抽出します。本マルウェアはこの復号化キーを使用することで、パスワードを復号化することができます。

 収集されたすべての機密データは、ローカルのテキストファイルに書き込まれ(図14を参照)、その後、攻撃者に送信されます。

図14:Chromeから収集された認証情報および決済情報の例

 DarkCloudはWebブラウザに加えて、EメールクライアントとFTPクライアントの認証情報、および以下のプロファイルフォルダに格納されている機密データも収集します。

 %AppData%\Adobe
 %AppData%\dnSpy
 %AppData%\FileZilla
 %AppData%\IDMComp
 %AppData%\Mozilla
 %AppData%\SweetScape
 %AppData%\Wireshark

関係するソフトウェアの一覧:
 Google Chrome、Microsoft Edge(およびEdgeベースのブラウザ)、Mozilla Firefox、Brave Browser、FoxMail、eM Client、Microsoft Outlook、CoreFTP、WinSCP、Adobe、dnSpy、FileZilla、IDMComp、Mozilla、SweetScape、およびWireshark

・Eメールの連絡先:

 DarkCloudは、侵害されたコンピュータにインストールされている複数のEメールクライアントから、被害者のEメールの連絡先を取得することができます。収集されたEメールの連絡先は、認証情報と同様に、ローカルのテキストファイルに保存されます。

 以下のテキストファイルは定数文字列を復号化したものであり、各ファイルは個々のEメールクライアントに相当し、これらは攻撃者に送信されます。

 ThunderBirdContacts.txt
 163MailContacts.txt
 EMClient10Contacts.txt
 OutlookContacts.txt

・Eメールクライアントの一覧:
 Mozilla Thunderbird、NetEase MailMaster、eM Client、およびMicrosoft Outlook.

SMTPを使用して送信

 DarkCloudは、収集したデータを盗み出して攻撃者に送信するために、FTPとSMTPの両プロトコルをサポートしています。

 この亜種ではSMTPプロトコルが使用されます。SMTPのサーバードメイン、ログイン用メールアカウントとパスワード、および受信者のメールアドレスなどの関連するすべての文字列は、復号化された定数文字列です。

図15:収集したデータをSMTPで送信するマルウェア

 図15は、DarkCloudが収集した認証情報と決済情報を、Eメールにテキストファイルを添付して送信する例を示しています。収集したEメールの連絡先を攻撃者に送信する場合も、DarkCloudは同じ手法を利用します。

 このEメールの件名には、被害者のシステムの基本情報であるコンピュータ名、ユーザー名、およびIPv4のパブリックアドレスが含まれており、これは図15の下部で確認できます。

 図16は、収集された認証情報と決済情報を含むテキストファイルを送信する際に生成されたSMTPトラフィックのスクリーンショットを示しています。

図16:収集されたデータはSMTP over TLSを介して送信

結論

 本分析では、フォーティネットのFortiGuard Labsが発見した新しいDarkCloudキャンペーンについて調査しました。この攻撃はまず、不正なRARアーカイブを含むフィッシングメールで受信者を誘惑して、添付されるRARアーカイブ内のJavaScriptファイルを実行させます。このスクリプトはPowerShellコードをデコードして起動した後、正規のTask Schedulerモジュールを装った暗号化されたファイルレス型の.NET DLLを読み込みます。

 .NET DLLは、永続性を確立し、リモートURLからペイロードをダウンロードして反転し、プロセスホローイングを使用して、最終的なDarkCloudペイロードをMSBuild.exeに注入します。

 ペイロードはVB6で記述されており、キーボードとマウスの操作を監視することで分析対策チェックを実行し、サンドボックスの検知を回避します。

 本分析では、マルウェアが収集する機密情報にも焦点を当てており、例えば、侵害されたシステムのWebブラウザ、FTPクライアント、およびメールクライアントに格納されている認証情報や決済情報などが挙げられます。また、このペイロードは、被害者のメールクライアントソフトウェアからEメールの連絡先も収集します。

 最後に、収集されたデータはテキストファイルに保存され、SMTPプロトコルを使用して攻撃者に送信されることを説明しました。

フォーティネットのソリューション

 フォーティネットのお客様は、FortiGuardのAntiSPAM、Webフィルタリング、IPS、およびアンチウイルスサービスによって、このキャンペーンから以下のように保護されています。

 画像ファイルやDarkCloudのペイロードをダウンロードする関連するURLは、FortiGuard Webフィルタリングサービスにより「悪意のあるWebサイト」として識別されます。

 FortiMailは、このフィッシングメールを「ウイルスの検知」として識別します。また、フォーティネットのFortiMail、Webフィルタリング、およびアンチウイルスソリューションに組み込まれているFortiSandboxが提供するリアルタイムなフィッシング対策により、既知および未知のフィッシング攻撃の試みの両方に対して、高度な保護が可能です。

 FortiGuardアンチウイルスサービスは、以下のアンチウイルスシグネチャを使用して、この不正なJSファイルであるファイルレス型DarkCloudペイロードファイルを検知します。

 JS/DarkCloud.ACVJ!tr
 W32/DarkCloud.QU!tr

 FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。FortiGuardアンチウイルスエンジンは、各ソリューションに含まれています。したがって、最新の保護機能を備えたこれらの製品をお使いのお客様は、脅威から保護されています。

 新しい脅威に関する最新情報については、ご登録いただくと、脅威アラートをメールで受信(英語)できます。

 また、読者の皆様には、フォーティネットが無償で提供するNSEトレーニングNSE 1 – 情報セキュリティ意識向上を受講することをお勧めします。このトレーニングにはインターネットの脅威に関するモジュールが含まれ、エンドユーザーは各種のフィッシング攻撃を識別して自らを保護する方法を学習できます。

 本件の脅威またはその他のサイバーセキュリティ脅威がお客様の組織に影響を与えていると思われる場合は、当社のグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

IOC(Indicator of Compromise:侵害指標)

URL:
hxxps://archive[.]org/download/universe-1733359315202-8750/universe-1733359315202-8750.jpg
hxxp://paste[.]ee/d/0WhDakVP/0

関連するサンプルのSHA-256:
[Quote #$_260627.js]
381AA445E173341F39E464E4F79B89C9ED058631BCBBB2792D9ECBDF9FFE027D
[DarkCloudペイロード]
82BA4340BE2E07BB74347ADE0B7B43F12CF8503A8FA535F154D2E228EFBEF69C

■関連サイト