フィッシング
ランサムウェア「Black Basta」と提携する「Water Curupira」がマルウェア「Pikabot」によるスパム攻撃を展開
ランサムウェア「Black Basta」を展開したことで知られる侵入セット「Water Curupira」は、2023年のスパム攻撃において、「Qakbot」に類似するローダ型マルウェア「Pikabot」を多用していたことが判明しました。
ランサムウェア「Black Basta」に関与する侵入セット「Water Curupira」の活動を調査したところ、2023年のスパム攻撃では、特にローダ型マルウェア「Pikabot」が多用されていたことが判明しました。このスパム活動が始まったのは2023年第1四半期のことであり、6月下旬から9月初旬にかけて一時的に終息していました。本活動に用いられる「Pikabot」は、別のマルウェア「Qakbot」と類似する旨が報告されています。QakBotは、2023年8月の法執行機関による捜査の結果、駆逐されました。一方、2023年の第4四半期より、Pikabotに関連するフィッシング攻撃の件数が増加しています。こうしたタイミングの一致より、PikabotはQakbotの代替手段として用いられた可能性が示唆されます(Qakbotの駆逐後に利用された代替ツールとしては「DarkGate」も挙げられる)。
Pikabotの運用者は、「ローダ」と「中核モジュール」の2コンポーネントを用いてスパム攻撃を行いました。これにより、被害システムをコマンドコントロール(C&C:Command and Control)サーバ側に強制的に接続させ、そこから不正なリモートアクセスや、さまざまなコマンド実行に及びました。Pikabotは多段階方式で動作する巧妙なマルウェアであり、1ファイル内にローダと中核モジュールの双方を含みます。また、復号済みのシェルコードを用い、リソース内に格納されたDLLファイル(実際のペイロード)を復号して呼び出します。
Water Curupiraによる攻撃キャンペーンの主な目的は、Cobalt Strikeをはじめとするバックドアを標的環境に設置し、最終的に「Black Basta」のようなランサムウェア攻撃を誘発することにあります(ちょうど、Black Bastaの活動は2023年9月に再開された)。活動状況の変遷として、2023年の第3四半期にはDarkGateやIcedIDを用いてスパム攻撃などのキャンペーンを展開していましたが、それ以降はPikabotを用いた手口に路線転換しています。
Pikabotは、標的への初期アクセス手段として、スパムメールに添付したPDFやアーカイブファイルを利用します。この点については、Qakbotとして分類される攻撃キャンペーンと同様です。
メールによる初期アクセス
今回の攻撃者は、スパムメールの作成に際し、「スレッドハイジャック」と呼ばれる手口を利用します。これは、過去の攻撃などで流出したメールスレッドの文脈に合うように、本文や件名を調整するものです。被害者の目にはメールの内容が正当なものと映りやすくなり、結果、不正なリンクや添付ファイルのクリックに至る可能性も高まります。さらにメールの信憑性を高める手段として、攻撃者は、ハイジャックしたスレッド中に記載された名前を含むメールアドレスを作成し(フリーのメールサービスや新規ドメインを利用)、これを送信元として利用します。スパムメールの本文や件名は元のスレッドとほぼ同一ですが、添付ファイルを開くように促す短いメッセージが文頭に追加されます。
添付ファイルの形式は、IMGファイルを含むパスワード付きZIPアーカイブか、PDFファイルのいずれかです。パスワードについては、メール内に記載されます。なお、添付ファイルの名前やパスワードは、メール毎に異なります。
PDFが添付されたメールには、当該PDFの確認や閲覧を促す短めのメッセージが記載されます。
攻撃の第一段階
添付のZIPアーカイブには、重度に難読化された100KB以上のJavaScript(JS)ファイルが含まれています。被害者が本スクリプトを実行した場合、条件に応じて複数のコマンドが立て続けに実行されます。
本スクリプトはまず、cmd.exeを用いてコマンドの実行を試みます。これに失敗した場合は、コンソール画面に特定の文字列を出力(エコー)し、同じ文字列によって特定の対象にpingを打ちます。pingに失敗した場合、curl.exeを用いて外部サーバからPikabotのペイロードをダウンロードし、システムの一時ディレクトリ内に保存します。
続いて、pingを再試行します。これにも失敗した場合、rundll32.exeを用い、先にダウンロードしたPikabotのペイロード(現在は.dllファイルとして識別される)を実行します。この際、外部パラメータとして「Crash」を指定します。以上に述べたコマンドの完了後、本スクリプトは終了コード「ciCf51U2FbrvK」を返して終了します。
以上の他にも、攻撃者はさらに簡潔な方式によるペイロードの配布手段を行使しました。この場合も、添付ファイルをダウンロード、実行させるフィッシングの手口についてはほぼ同様です。また、添付ファイルの形式はパスワード付きアーカイブであり、パスワード自体はメールの本文内に記載されます。
しかし、当該アーカイブには、不正なJSスクリプトの代わりに、IMGファイルが格納されています。さらに本IMGファイルには、Word文書に偽装したLNKファイルと、DLLファイルが格納されています。このDLLファイルがPikabotのペイロードに相当し、添付ファイルから直接抽出することが可能です。
先述のJSファイルに対し、今回の攻撃チェーンでは、ペイロードの実行に際しての手続きも簡潔化されています。
被害者がLNKファイルをクリックすると、rundll32.exeを介してPikabotのペイロードに相当するDLLが稼働します。この際、外部パラメータとして「Limit」が指定されます。
一方、スパムメールに添付されるPDFファイルについては、Microsoft OneDriveにホストされたファイルを装い、被害者の目を欺く作りとなっています。攻撃者の目的は、被害者にPDFファイルを開かせ、そこに埋め込まれたリンクからマルウェアをダウンロードさせることです。
被害者が実際にダウンロード用のボタンを押すと、不正なURLから不正なJSファイル(先述のJSファイルに類似すると考えられる)がダウンロードされます。
PikabotのペイロードをPDF経由で配布する手口は比較的新しいものであり、実際にその使用が確認されたのは2023年第4四半期以降となります。
さらに本調査では、不正なダウンロードツールの亜種が発見されました。本亜種では、配列操作による難読化が施されています。
配列の中には「push(追加)」や「shift(移動)」などの操作が含まれ、それを扱う関数自体もネスト化されているなど、本亜種は複雑なコード体系を持ち、解析し難いものとなっています。より一層複雑化させる要素として、ダウンロード用URLが複数存在する点、mkdirコマンドによってランダムなディレクトリを動的に作成する点、先述同様にcurl.exeを使用する点などが挙げられ、これらの処理に関わるデータが、さらに別の配列中に埋め込まれています。
本JavaScriptは、複数のコマンドを使用し、curl.exe経由でさまざまなWebサイトから不正なペイロードを取得しようとします。取得したペイロードの保存先として、mkdirで作成されたランダムなディレクトリを使用します。
rundll32.exeは、外部パラメータを取り入れ、ペイロードの実行や制御に関与し続けます。
Pikabotのペイロード
図6で示したDLLファイルを解析したところ、その内容は32ビットDLLであり、1515個のエクスポート関数が含まれていました。エクスポート関数「Limit」は、シェルコードを復号して実行します。このシェルコードは、自身がデバッグ環境下で動いているかの判別を行います。そのために、以下のWindows APIを2度に渡って呼び出します。
NtQueryInformationProcess
初回の呼び出し時にはフラグ「0x7(ProcessDebugPort)」を、次の呼び出し時にはフラグ「0x1F(ProcessDebugFlags)」を指定します。また、本シェルコードは追加のDLLファイルを復号し、これをメモリ上にロードして実行します。
復号されたDLLファイルは、解析妨害の追加手段として、正しくないライブラリや各種ジャンクデータをロードすることで、サンドボックス環境を検知します。本手法は、GitHubに記載されたマニュアルを参考にしたものと考えられます。
解析妨害処理の実行後、マルウェアは、リソース領域からさまざまなPNG画像を読み込みます。次に、PNG内に埋め込まれた中核モジュールを抽出し、これを復号します。続いて、Pikabotのインジェクターが一時停止状態(suspended)の以下のプロセスを作成し、そこに復号済みの中核モジュールを埋め込みます(インジェクトする)。
%System%\SearchProtocolHost
本インジェクターは、インジェクト処理を隠蔽するために間接システムコールを利用します。
マルウェアの初期処理時に行われるタスクの代表例として、使用するAPIのアドレス解決が挙げられます。Pikabotでは、2つの関数を利用し、3つのAPI「GetProcAddress」、「LoadLibraryA」、「HeapFree」に対応するアドレス値を、ハッシュ値(0xF4ACDD8、0x03A5AF65E、0xB1D50DE4)経由でそれぞれ取得します。この手続きは、kernel32.dllのエクスポート関数を横断探索する形で行われます。上記3つ以外のAPIについては、API「GetProcAddress」や復号済み文字列をもとに、対応するアドレス値を取得します。また、その他の関連する文字列についても、実行時に復号した上で使用します。
Pikabotの中核モジュールは、システムの言語設定をチェックし、下記のいずれかに相当する場合は処理を終了します。
- ロシア語(ロシア)
- ウクライナ語(ウクライナ)
次に、自身のインスタンスが他に稼働していないことをチェックするため、排他制御オブジェクト「ミューテックス」を以下のハードコーディングで作成します。
A77FC435-31B6-4687-902D-24153579C738
中核モジュールによる次のタスクは、被害システムの詳細情報を窃取し、C&Cサーバに送信することです。窃取した情報はJSON形式で記載され、その各要素が関数「wsprintfW」によって整列されます。当該のJSONデータは図14のような外観を持ちますが、送信時には暗号化されます。
Pikabotは、バイナリのバージョンや、攻撃キャンペーンのIDを保有していると考えられます。図14のJSONデータでは、キー「0fwlm4g」、「v2HLF5WIO」がそれに該当し、後者が攻撃キャンペーンIDであると推測されます。
マルウェアは、下記プロセスから追加情報を取得して一次保存するため、名前付きパイプを作成します。
- whoami.exe /all
- ipconfig.exe /all
- netstat.exe -aon
上記で取得した追加情報は、暗号化されます。
さらにマルウェアは、システムで稼働中のプロセス一覧を取得し、暗号化します。そのために、以下のAPIを呼び出し、Process32FirstとProcess32Nextを用いてプロセスの一覧情報を作成します。
CreateToolHelp32Snapshot
マルウェアは、全情報の窃取後、これをC&Cサーバに送信します。サーバのアドレスは、下記のIPアドレスとポート番号に、以下の特殊なURLを付加したものとなります。
cervicobrachial/oIP7xH86DZ6hb?vermixUnintermixed=beatersVerdigrisy&backoff=9zFPSr
- 70[.]34[.]209[.]101:13720
- 137[.]220[.]55[.]190:2223
- 139[.]180[.]216[.]25:2967
- 154[.]61[.]75[.]156:2078
- 154[.]92[.]19[.]139:2222
- 158[.]247[.]253[.]155:2225
- 172[.]233[.]156[.]100:13721
しかし、本稿執筆時点で、これらのサイトはアクセス不可となっています。
C&Cサーバおよび攻撃の影響
先述の通り、Water CurupiraはCobalt Strikeのようなバックドアを標的環境に設置し、Black Bastaなどのランサムウェア攻撃に繋げるための活動を行っています。Pikabotが格別に危険である理由の1つは、Black Bastaをはじめとする巧妙なランサムウェアの被害を誘発する点にあります。
その背後にいる攻撃グループは、2023年第3四半期の初頭にDarkGateやIcedIDを用いたスパム活動などのキャンペーンを展開していました。しかし、それ以降はPikabotを用いた活動に専念しています。
最後に、今回の調査では、Black Bastaに繋がる70以上のC&Cドメインから、Water Curupiraによる攻撃キャンペーンの一環で配備されたCobalt Strikeビーコンが多数発見されました。
セキュリティ推奨事項
フィッシング、マルウェア、詐欺をはじめとするオンライン上の脅威を避ける上では、受信メールに対して警戒心を持つことが特に重要です。下記に、ユーザによるメールセキュリティのベストプラクティスを挙げます。
- メール内のリンクについては、マウスカーソルをホバリングし、飛び先URLをチェックする。
- 送信者が誰であるかをチェックする。馴染みのないメールアドレス、送信者の名前と一致しないメールアドレス、企業になりすましたメールは、攻撃の兆候と考えられる。
- メール内で正規な企業を名乗っている場合、添付ファイルや埋め込まれたリンクをクリックする前に、送信者やメール内容が本当に正しいものであるかを検証する。
- オペレーティングシステムや各種ソフトウェアを最新バージョンにアップデートする。
- 定期的に重要なデータのバックアップを取り、外部の安全な場所に保存する。これにより、仮にフィッシング攻撃に遭った場合でも、必要なデータを復元できるようになる。
企業や組織では、マルチレイヤーのアプローチを採用することにより、システムへの侵入経路(エンドポイント、メール、Web、ネットワーク)を厳重に保護することが可能です。また、セキュリティソリューションを導入することで、不正なコンポーネントや不審な挙動を検知し、攻撃を的確に阻止できるようになります。
- Trend Vision One™は、マルチレイヤーによる挙動検知と保護の機能を提供します。これにより、ランサムウェア攻撃が実行される前の早い段階で、不審なツールや挙動をブロックすることが可能です。
- Trend Cloud One™ - Workload Securityは、既知、未知を問わず、脆弱性を突いた脅威からシステムを保護します。この保護機能は、仮想パッチや機械学習などの技術によって実現しています。
- Trend Micro™ Deep Discovery™ Email Inspectorは、独自のサンドボックスと高度な解析技術を備えています。フィッシングメールなどの不正なメールを的確にブロックすることで、ランサムウェアの侵入を阻止します。
- Trend Micro Apex One™は、次世代の脅威検知・応答機能を提供します。本機能は、ファイルレス攻撃やランサムウェアなどの高度な手口にも対処可能であり、エンドポイントを安全に保護します。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)について、こちらで確認してください。
参考記事:
Black Basta-Affiliated Water Curupira’s Pikabot Spam Campaign
By: Shinji Robert Arasawa, Joshua Aquino, Charles Steven Derion, Juhn Emmanuel Atanque, Francisrey Joshua Castillo, John Carlo Marquez, Henry Salcedo, John Rainier Navato, Arianne Dela Cruz, Raymart Yambot, Ian Kenefick
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)