掲載日:2022/06/29

SVCREADY:新しいローダーが準備完了

※ 本ブログは、2022年6月6日にHP WOLF SECURITY BLOGにポストされた SVCReady: A New Loader Gets Ready の日本語訳です。

 

2022年4月末以降、 SVCReady と呼ばれるこれまで知られていなかったマルウェアファミリーを拡散する新たな悪意あるスパムキャンペーンが確認されています。このマルウェアは、Microsoft Officeドキュメントのプロパティに隠されたシェルコードを使用して、標的のPCに配信されるという珍しい方法で、また、作者が5月にマルウェアを数回更新していることから、開発の初期段階にあると考えられることから、注目されています。このレポートでは、新しいSVCReadyキャンペーンの感染チェーン、マルウェアの特徴、時間経過による変化、TA551との関連性の可能性について詳しく説明します。

2022年4月にHP Wolf Securityが隔離したSVCReadyのサンプル 図1 - 2022年4月にHP Wolf Securityが隔離したSVCReadyのサンプル

 

 

感染チェーン

HP Wolf Securityのテレメトリーに基づくと、この新しいキャンペーンの最初の目撃情報は2022年4月22日でした。攻撃者は、Microsoft Wordドキュメント(.doc)の添付ファイルをEメールでターゲットに送信しました。他の多くのマルウェアキャンペーンと同様に、ドキュメントには、悪意のあるコードを実行するために使用されるVisual Basic for Applications (VBA) AutoOpenマクロが含まれています。しかし、他のOffice系マルウェアとは異なり、このドキュメントでは、PowerShellやMSHTAを使用して、Web上からさらなるペイロードをダウンロードすることはありません。その代わり、VBAマクロは、ドキュメントのプロパティに格納されたシェルコードを実行し、SVCReadyマルウェアをドロップして実行します。

0x90で表される一連のnop命令のシェルコードを含むドキュメントのプロパティ 図2 - 0x90で表される一連のnop命令のシェルコードを含むドキュメントのプロパティ

 

 

VBAマクロとシェルコード

まず、このVBAのコードではSetTimerVirtualProtectという2つのWindows API関数が定義されています。

Windows API関数の定義 図3 - Windows API関数の定義

 

次に、ドキュメントのプロパティにあるシェルコードを変数にロードします。システムのアーキテクチャが32bitか64bitかによって、読み込まれるシェルコードが異なります。

シェルコードの変数への読み込み 図4 - シェルコードの変数への読み込み

 

変数中のシェルコードはメモリーに格納され、VirtualProtect をコールすることにより実行可能アクセス権を付与できます。シェルコードに実行可能アクセス権を与えた後、SetTimer が呼び出されます。SetTimer APIは、引数としてコールバック関数を渡すことができ、これは単にメモリ上のポインタです。この場合、攻撃者はシェルコードのアドレスを渡すことで、シェルコードを実行します。

シェルコードの保護及び実行属性の変更 図5 - シェルコードの保護及び実行属性の変更

 

この時点でVBAマクロの実行は終了し、シェルコードが次の感染ステップを引き継ぎます。まず、%TEMP%ディレクトリにダイナミックリンクライブラリ(DLL)がドロップされます。次に、シェルコードは、Windowシステムディレクトリからrundll32.exeを%TEMP%ディレクトリにコピーします。この時点で、rundll32.exeは、おそらく検知を回避するために名前が変更されます。ここでの検知のチャンスは、Windowsのバイナリが標準ディレクトリ外で実行されることを警告することです。

両方のファイルが %TEMP% ディレクトリにあると、rundll32.exe の名前を変更したコピーが DLL と関数名を引数として実行されます。この実行により、SVCReadyが起動します。

Rundll32.exeがマルウェアを実行 図6 - Rundll32.exeがマルウェアを実行

 

この感染チェーンは、Officeドキュメントに格納されたシェルコードに依存しており、マルウェアのキャンペーンではあまり見られないテクニックです。しかしながら、我々は、4月中旬にこのテクニックを使用してUrsnifを配布した他のキャンペーンを確認しています。

 

ダウンローダー

rundll32.exeを介して起動されたDLLはダウンローダーとして動作し、感染したシステムの情報を収集し、コマンド&コントロール(C2)サーバと通信する機能を有しています。ダウンローダーは実行されるとすぐにC2サーバに報告し、直ちに情報収集を開始します。

ステータスアップデート("Starting: success")を示すダウンローダーのC2トラフィック 図7 - ステータスアップデート("Starting: success")を示すダウンローダーのC2トラフィック

 

 

情報収集

このマルウェアは、ユーザー名、コンピュータ名、タイムゾーン、コンピュータがドメインに参加しているかどうかを含むシステム情報を収集します。また、レジストリ、具体的にはHKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System キーを照会し、コンピュータのメーカー、BIOS、ファームウェアに関する詳細情報を取得します。さらに、実行中のプロセスやインストールされているソフトウェアのリストも収集します。このマルウェアは、Windows Management Instrumentation(WMI)クエリではなく、Windows APIコールを介してこれらの情報を収集します。すべての情報はJSONにフォーマットされ、HTTP POSTリクエストを通じてC2サーバーに送信されます。

C2サーバーにシステム情報を送信 図8 - C2サーバーにシステム情報を送信

 

 

コマンド&コントロール

C2サーバとの通信はHTTPで行われますが、データ自体はRC4暗号を使い暗号化されています。興味深いことに、2022年4月末に分析した最初のマルウェアサンプルでは、RC4暗号は実装されていませんでした。このことから、C2暗号化は5月中に追加されたばかりであり、マルウェアは活発に開発されていることが示唆されます。サンプルを解凍すると、メモリからRC4キーを抽出することができます。攻撃者は、キャンペーンごとにRC4キーを変更します。

メモリ上に表示されたマルウェアのネットワーク通信の暗号化に使用されたRC4キー .図9 - メモリ上に表示されたマルウェアのネットワーク通信の暗号化に使用されたRC4キー

 

図9のRC4キーは、5月30日のキャンペーンに対応するものです。

 

  • RC4 キー – 0v89u6y089ut934uc0t8934uct08934uc0t89u54y895689vuh489cu389ct45
  • SVCReady DLL – 16851d915aaddf29fa2069b79d50fe3a81ecaafd28cde5b77cb531fe5a4e6742

 

永続化

感染したPCに関する情報を持ち出した後、マルウェアはシステム上での永続性を獲得しようとします。マルウェアの作者は、おそらくマルウェアDLLをローミングディレクトリにコピーし、新しく生成されたUUIDに基づく一意の名前を与えることを意図しています。しかし、SVCReady DLLではなくrundll32.exeがローミングディレクトリにコピーされるため、これを正しく実装できなかったと思われます。マルウェアは、システム起動時にrundll32.exeがローミングにコピーされたファイルと関数名を実行するRecoveryExTask というスケジュールタスクを作成します。

スケジュールされたタスクの定義 図10 - スケジュールされたタスクの定義

 

しかし、このエラーにより、rundll32.exeによりrundll32.exeが実行されるため、システムを再起動してもマルウェアは起動しないことになります。

この時点で、マルウェアは検知するシグネチャを構築するのに役立つと思われる新しいレジストリキーを作成します。

HKEY_CURRENT_USER\Software\Classes\CLSID\{E6D34FFC-AD32-4d6a-934C-D387FA873A19}

マルウェアが生成したレジストリキー 図11 - マルウェアが生成したレジストリキー

 

タスクが完了すると、マルウェアはC2サーバにステータス・メッセージを送信します。これらのステータス・メッセージは、常にJSON形式です。例えば、スケジュールされたタスクを作成した後のステータス・メッセージは、以下のようになります。

JSONステータス 図12 - JSONステータス

 

 

更なる情報収集

永続化フェーズが終了すると、次の情報収集フェーズに移ります。今度は、SVCReadyがスクリーンショットを撮影し、C2サーバに送信します。

スクリーンショットをC2に送信 図13 - スクリーンショットをC2に送信

 

その後、マルウェアはsysteminfo.exeプロセスを実行します。マルウェアはそこからosinfoセクションを抽出し、C2サーバに送信します。このとき収集される情報は、先の情報収集フェーズで収集されたものと同一です。これは、Windows APIやレジストリキーによる最初の問い合わせが失敗した場合に備えて、マルウェアがこの冗長な問い合わせを行ったか、あるいは開発者が情報収集の異なる方法を試していた可能性があります。

出力例は次のようになります。

osinfoの出力 図14 - osinfoの出力

 

 

仮想マシンの検知

最後に、マルウェアはランタイム環境が仮想化されているかどうかを判断するために、2つのWMIクエリーを実行します。

 

Select AccessState from Win32_USBControllerDevice
select * from CIM_ComputerSystem

 

このフェーズをcheckvmと呼んでいます。

 仮想マシン(VM)内部で動作しているかどうかを確認するために USBコントローラーをチェック 図15 - 仮想マシン(VM)内部で動作しているかどうかを確認するために USBコントローラーをチェック

 

そして、この評価結果がC2に伝えられ、マルウェアの初期フェーズが終了します。例えば、VMが検知された場合:

 

{“method”:”log”,params”:{“logs”:[“USB Status 2 VM DETECTED “],”stage”:”usbstatus-ban”}}

 

マルウェアは30分間スリープ状態になります。

マルウェアはスリープ 図16 - マルウェアはスリープ

 

 

ビーコン動作

SVCReadyは、5分ごとにC2サーバにビーコンを送信します。ビーコンには、マルウェアの状態のみが含まれています。連続した6回のスリープ手順が経過すると、マルウェアはHTTPリクエストを介して最後に受信したドメインを検証した後、新しいタスクを要求します。マルウェアゲートのAPIノードは、以下のような構成になっています。

 

Purpose API Node
Validate domain /xl/gate/check
Share information /xl/gate
Request tasks /xl/gate/task
タスク要求に対するC2の応答 図17 - タスク要求に対するC2の応答

 

応答には、例えばドメインのリストやマルウェアのコマンドが含まれます。

 

{“domains”:[“galmerts[.]art”,”kikipi[.]art”,”kokoroklo[.]su”],”command”:”nop”}

 

その他、マルウェアの機能として以下が含まれます。

  • 感染したクライアントにファイルをダウンロード
  • スクリーンショットの撮影
  • シェルコマンドの実行
  • 仮想マシンで実行されているかどうかの確認
  • システム情報の収集(短縮版と "通常版")。
  • USBの状態、つまり接続されているデバイスの数の確認
  • スケジュールされたタスクによる永続性の確立
  • ファイルの実行
  • メモリ上でRunPeNativeを使用してファイルの実行

 

フォローアップマルウェア

4月26日のキャンペーンでは、SVCReadyによる初感染後のフォローアップペイロードとして、RedLine Stealerが配信されました。その際、C2通信の形式は暗号化されていませんでした。このキャンペーンは、SVCReadyの運営者によるテストであった可能性があります。本稿執筆時点では、それ以降、まだマルウェアのペイロードを受け取っていません。以下は、4月26日のマルウェアキャンペーンの侵害の痕跡(IOC)です。

 

Wordドキュメント:

  • fa5747e42c4574f854cd0083b05064466e75d243da93008b9f0dcac5cf31f208
  • e09c98b677264fc0de36a9fd99a2711455fe79699ca958938dd12b5bd2c66bad
  • c0795d7a7f2c5fdb7615ee5826e8453bef832f36282d6229ec07caf49842f4bc

DLL:

  • d3e69a33913507c80742a2d7a59c889efe7aa8f52beef8d172764e049e03ead5

C2 ドメイン:

  • muelgadr[.]top

ダウンロード URL:

  • hxxp://wikidreamers[.]com/exe/install.exe

ペイロード:

  • RedLine Stealer – 6e1137447376815e733c74ab67f202be0d7c769837a0aaac044a9b2696a8fa89

 

TA551のファイル名とドキュメントとの類似性

SVCReadyの配信に使用されたドキュメントのファイル名とTA551のキャンペーンで使用されたファイル名の類似性を確認しました。(図18)TA551 の活動は、2022 年 1 月末が最後でした。

過去のTA551脅威のリスト 図18 - 過去のTA551脅威のリスト

 

また、SVCReadyとTA551のキャンペーンで使用されたルアー画像にも類似性があることがわかりました。

2022年4月のキャンペーンでのソーシャルエンジニアリング画像を含む悪意のあるドキュメント 図19 - 2022年4月のキャンペーンでのソーシャルエンジニアリング画像を含む悪意のあるドキュメント

 

我々は、悪意のあるドキュメントから抽出した約2万枚の画像をデータベースとして保持しており、これを用いて知覚的ハッシュアルゴリズムにより視覚的に類似した画像を検索しています。図20は、SVCReadyをドロップするドキュメントから抽出した画像です。

SVCReadyドキュメントから抽出した画像 図20 - SVCReadyドキュメントから抽出した画像

 

データベースを検索したところ、Ursnifの配信に使用された3つのドキュメントに同じ画像が含まれており、いずれも2021年5月のものであることが判明しました。

 

  • 2021-05-10: e6afaabd1e4a2c7adeedca6ee0ed095271a53a293162e3cf7ed52d570279258e
  • 2021-05-12: 02e62eeb73ac0c0fa55cc203fbee23420a848cf991106eca3f75e8863a0cb4e5
  • 2021-05-21: f21289980710dcbb525d70a2be6aa1dc3118150386c0b2196cc5f23e637b87f5

 

これらのドキュメントを詳しく分析したところ、そのプロパティにも、その後悪意のあるマクロによって使用される保存されていることがわかりました。しかし、VBAコードは大きく異なっており、MSHTAを使用して、ウェブから後続のマルウェアをダウンロードし実行しました。マルウェアは、以下のURLからダウンロードされました。

 

  • hxxp://192.186.183[.]130/ts/909t5HXsDn4QMY6OB0I8tfpOT0N4FPGKuw~~/40PRbE-lUJTVQYhwM4WoZD6MyfeLT3GeSA~~/
  • hxxp://144.168.197[.]36/ts/KS8qyPL1yA-fh8c8BXwFfnOGiWotKKIvqQ~~/t6q4Lknm9T-M1FiPi5sCy2xtzZ27J7KabQ~~/

 

Ursnifペイロードのハッシュは以下となります。

 

  • 2848bfc05bcfaa5704ff4c44ab86b23c69aa386a39ad4bb393f3287bd884f8cc
  • 18d7206e9fa38d5844d3b0ec46576ace8a36091e77477f86a9a43724aa6a2309

 

さらに、同じではないものの、非常によく似た画像を2枚発見しました。

 2019年と2020年の類似ドキュメント画像 図21 - 2019年と2020年の類似ドキュメント画像

 

この画像の違いは、テキストが画像の一部であることです。他のキャンペーンでは、テキストと背景はドキュメント内の別の要素でした。特筆すべきは、文法的な誤りを含め、テキストが同一であることです。この2つのドキュメントは、2019年にUrsnif、2020年にIcedIDを配布したキャンペーンでそれぞれ観測されたものです。

 

  • 2019-02-04: 3dab8a906b30e1371b9aab1895cd5aef75294b747b7291d5c308bb19fbc5db10
  • 2020-03-16: e47945f9cc50bb911242f9a69fc4177ed3dcc8e04dbfec0a1d36ff8699541ab5

 

どちらのキャンペーンも、マルウェアをホストするために使用されたドメインから、TA551にたどり着くことができます。

 

  • gou20lclair[.]band
  • glquaoy[.]com

 

同じツールを使用した2つの異なる攻撃者が残したアーティファクトを見ている可能性があるため、マルウェアドキュメントに使用されている画像を比較することで、同じ脅威アクターが背後にいるという確証を得ることはできません。しかしながら、今回の調査は、TA551およびSVCReadyのキャンペーンに関与したアクターは、類似したテンプレートか、おそらくはドキュメントビルダーを使用していることを示しています。

 

本キャンペーンの名前

本レポートで分析したマルウェアファミリーは、SVCReadyと命名してProofpointが公開しているIDSルールに該当しています。混乱を避けるため、我々は同じ名前でマルウェアを追跡しています。

 

結論

2022年4月末から、SVCReadyと呼ばれるこれまで知られていなかったマルウェアファミリーを拡散する新たな悪質なスパムキャンペーンが確認されています。注目すべきことは、このマルウェアが、Wordドキュメントのプロパティに格納されたシェルコードによってドロップされることです。SVCReadyは、現在活発に開発が進められています。2022年4月の最初のキャンペーン以来、いくつかの変更を確認しています。また、このマルウェアにはバグがあり、永続化機能と収集する偵察データの重複は目立ちます。このことと、キャンペーンの頻度と量が少ないことから、このマルウェアが開発の初期段階にあることがうかがえます。

 

侵害の痕跡(IoC)

ドキュメント
501D971E548139153C64037D07B4E3FEA2C1735A37774531C88CFA95BA660EC3
99DF2CC2535C82B84BA23384DF290D7506242532123D8414C1CFC61967072C28
C6C080A63DD038D11CD6E724D2DE31108CABE7B6E38F674FE8189696886582AF
D270E1CA349DAA668E0807BE65ECA75CC739008A39E283F922A8728C22663417
6C9FD23D88239D819E0B494E589B665C4E7921ED9B9DD0BBD1610D71230BCF81
F47514C680135C7D4285F2284D5621245463F55A901C38F171DCE445695AC533
9F7124303F1C957F7E02F275F3501CBAA6E0645A6D78B50617A97761DC611CFF
4C1DD6A893F86A150E003118148C655044D06E8300678CF6BF3CC3107B91B66C
FCB325D21D1100269731553015D6D0F85143DAE2BFA6CBAF49AC6DA29F1F732E
939863285773B17623F0F027FAAE8B994BF5FC1AFB182C63A026431C71CD3885
65A650DD353EA767EF68CF4627436977E6D55102D699B2E8B8DE491DA5C0A5EB
134D0B10BAC1404FA1DA83C96C08E0882500819DAAD5F49E9E83C92F2A624B3E
F2FADD7A8B88DA62228DAB8981638B5C9F5512A57A0441B57C2B3A29B0A96012
0D55564A2BED4FF06BC8B1DAAB98E2032C39536DAA31878E16FED29BC987A4D1
A8EED171FDCB2A872865620FC2234E0B07201D927ABCB65344846F6D4A7B75F5
C24266CC16D65F0B8D72BB7DF80A6B2FFE343429A764AFB9FB0A9C20D53AB9AF
50FBE350CC660361B919F5E464DA6D6170F35EF497327AE5DEFC7805E76D5568
C362D9EEFAFB44D4116B4DFABD5945E974C8A010221705E021490EFBF34BC3A3
68617985E8AB455316C18172723FBD2748DE58008714C4CB3F7C6F19D326F135
65E551F7093299A9A20EAF536197C19ABBDD51B95B9570EDAC4950D7C951AD92
D8AEC5539973927EB07A23BA4DE3780D28C2DD2D6DBBC697562A44B30CD3B03F
CA61DE1E2442C16C280EB7264D6B7F79EC92CDC10D1C202EFB028DA5F242F83A
74652EAE27C9F5A5C397EACC76DAF768B3E601F106E8539C7D855712AB185E40
0224B906741F248D8BCEDAEF423B58FFB1B4577EC06711293F7065B12AE71788
FDABB1F5B7691F03B2D89FEB8B0D4E3FD036F9B4E718269CAD8741C7E4D14072
FD799D99F7E84436F8AF16D94EE7B2F1D08CA3CEE746E1CF9B36E2139D676E4C
4A2E76B57DE10C687716A1D7A295910CC5C0D04F5D10D4F4C53AE1BDE45A251C
9122092980BC0ED9C9B008C5456CC18656C41798585B8819F1D6F2620CAC3CF3
391D134B792FB660426F183755AD00DBD737F521CFF1F9A12D402CD714D34645
B67120F25963D36560CBB86B35E864F608536ABEF7C3377F46997D65BAD13CAA
5170461322CB1A79ABB84FEED75B7F871B6F1594562E7724C45D7BB98F97C86B
4B8627B5896A0656E801A95B16068F84660F1460A247E712651E0945EB4309CB
95E328A549247F900DA5747F7E2057DEF121D2EDA82CFD7E926A6955C797D317
AFA40C3157F2704ABA4838A7308B53A4853176AF86982CE2999AA4DF3AC7BB9C
00FD57B32A3DF737C274D2184663DE4EDC22A4E003419C1B10B262E66995EE23
5B7FBEC223DEB714DC7A4037348936A27D86B061CB2120213D5A69849CC9B588
FA6F5695AC2530B486FDD6FE8096AAAF65081BC092AB874545628C61E1403919
C86A477579188305132DAB40700D06FFF9E26B5CE627233FB9D20DA1DFC74B47
748352146AB86EA1A32DFED0B0D5FAC0EFC52728BCCD79476B74FB73517EFB21

 

DLL
08e427c92010a8a282c894cf5a77a874e09c08e283a66f1905c131871cc4d273
16851d915aaddf29fa2069b79d50fe3a81ecaafd28cde5b77cb531fe5a4e6742
1d3217d7818e05db29f7c4437d41ea20f75978f67bc2b4419225542b190432fb
235720bec0797367013cbdc1fe9bbdde1c5d325235920a1a3e9499485fb72dba
39c955c9e906075c11948edd79ffc6d6fcc5b5e3ac336231f52c3b03e718371e
5e932751c4dea799d69e1b4f02291dc6b06200dd4562b7ae1b6ac96693165cea
d3e69a33913507c80742a2d7a59c889efe7aa8f52beef8d172764e049e03ead5
f690f484c1883571a8bbf19313025a1264d3e10f570380f7aca3cc92135e1d2e

 

ドメイン
muelgadr[.]top
wikidreamers[.]com
galmerts[.]art
marualosa[.]top
kikipi[.]art
kokoroklo[.]su