本記事は SOC アナリスト 小池 倫太郎 が執筆したものです。
はじめに
2023年2月にSteelCloverの攻撃が活発化していることを報告しました[1]が、2023年5月末から若干変則的な攻撃オペレーションが観測されており、それと連動するように2023年6月初頭から新たなマルウェアを観測し始めています。
今回新たにSteelCloverが使い始めたマルウェアを、私達はPowerHarborと呼んでいます。PowerShell製のモジュール型マルウェアであり、私達はブラウザなどからクレデンシャルを窃取するモジュールを観測しています。
私達はPowerHarborについてリサーチを行っていますが、本稿執筆時点では今回のSteelCloverの攻撃以外では痕跡を発見することができず、このマルウェアがSteelCloverオリジナルのものなのか、あるいは販売されている新種のマルウェアなのか、判断することができませんでした。いずれの場合にしても、PowerHarborに関する解析レポートは公開されていないと判断し、詳細な情報を共有するために本稿を公開します。
ダウンローダ
まず、SteelCloverはMSIXファイルのPSF(Package Support Framework)を使用して[2]、PowerHarborのダウンローダを実行させます。
ダウンローダはWin32_ComputerSystemProductクラスのUUIDを取得し、C&Cサーバへ送信します。ダウンローダで行われる送受信処理は全てハードコードされたXORキーを用いてエンコードされます。
その後、何らかの判定(おそらく同一のUUIDに対して複数回攻撃を行わないためのチェック)が行われ、攻撃対象であると判断された場合はメインモジュールがダウンロード・実行されます。
メインモジュール
メインモジュールはC&Cサーバと定常的に通信を行い、C&Cサーバから送られてきた追加モジュールを実行・削除します。このとき、C&Cサーバとの通信は、ハードコードされた鍵データを使ってRSA暗号で暗号化してやり取りされます。
また、メインモジュールにはVM検知機能が存在します。ビデオコントローラやディスプレイ、ディスクなどの様々な情報を使って、VM上で実行されていないかチェックを行います。
StealDataモジュール
StealDataモジュールは、Invoke-Stealer関数を中軸とし、システム情報やブラウザに保存されたクレデンシャル、仮想通貨のウォレット情報、TelegramやFileZilla、WinSCPなど様々なアプリケーションのクレデンシャルを窃取します。
窃取されたデータは、StealDataモジュールを受信したときに同梱されている公開鍵を使ってRSA暗号で暗号化され、C&Cサーバへ送信されます。そのため、トラフィックデータからはデータを復元することはできず、何が窃取されたのか知ることはできません。
Schedulerモジュール
SchedulerモジュールはPowerHarborを永続化するためのモジュールです。PowerHarborのダウンローダを $env:localappdata\WindowsPowerShell\ あるいは $env:userprofile\Documents\WindowsPowerShell の配下に Microsoft.PowerShell_profile.ps1 というファイル名で書き込み、HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders に新たなプロパティを追加し、タスクスケジュールに登録するなど、永続化を試みます。
GetBrowsersモジュール
GetBrowsersモジュールはインストールされているブラウザの情報を収集するモジュールです。これ単体では悪性挙動とは言えませんが、被害ユーザの統計情報を得る目的があると考えられ、今後の攻撃のための準備に関わるかもしれません。
おわりに
本稿では、SteelCloverが新たに使い始めたPowerHarborというマルウェアについて紹介しました。PowerHarborはPowerShell製のモジュール型マルウェアであり、ブラウザなどのクレデンシャルを窃取するモジュールが実装されています。PowerHarborはモジュール型のため、今後情報窃取以外のモジュールが実装されることも考えられるため、今後増々注意が必要です。
IoC
- 190.14.37.245
参考文献
[1] NTTセキュリティ・ジャパン, "SteelCloverによるGoogle広告経由でマルウェアを配布する攻撃の活発化について", https://techblog.security.ntt/102i7af
[2] Twitter, "nao_sec", https://twitter.com/nao_sec/status/1630435399905705986