概要:高度なマルウェア拡散ツール「pkr_mtsi」
「pkr_mtsi」と名付けられたカスタムWindowsパッカーが、大規模なマルバタイジングおよびSEOポイズニングキャンペーンを主導し、多様な情報窃取型およびリモートアクセス型マルウェアを配布していることが新たな調査で明らかになりました。このパッカーは、2025年4月24日に初めて確認されて以来、過去8ヶ月間にわたり活動を続け、進化を遂げています。
脅威アクターは、pkr_mtsiを使用して正規ソフトウェアのトロイの木馬化されたインストーラーをラップし、ユーザーの信頼を悪用して初期アクセスを獲得しています。攻撃に使用される偽のツールには、PuTTY、Rufus、Microsoft Teamsなどがあり、これらは偽のダウンロードポータルを通じて配布され、有料マルバタイジングや積極的なSEOポイズニングによって検索結果の上位に表示されます。しかし、正規ベンダーのサプライチェーンが侵害された証拠はなく、脅威は欺瞞的なWebインフラと検索エンジンの可視性操作に依存しています。
多機能なローダーとしての「pkr_mtsi」
研究者らは、pkr_mtsiが単一のペイロードをラップするものではなく、汎用的なローダーとして機能していると指摘しています。これまでのキャンペーンでは、以下の複数のマルウェアファミリーが配布されました。
- Oyster
- Vidar
- Vanguard Stealer
- Supper
- その他
この柔軟性により、オペレーターは配信インフラストラクチャを最小限に変更するだけでペイロードを交換または組み合わせることができ、犯罪エコシステムにおける収益化目標やパートナーシップの変化に容易に対応しています。
技術的特徴と検出の機会
pkr_mtsiは、いくつかの信頼できる痕跡を残します。パッカーの初期段階の活動は、メモリ割り当てと単一の連続領域への集中的なメモリ書き込みによって特徴付けられます。
アンチウイルス検出においては、「oyster」や「shellcoderunner」といったサブストリングが含まれることが多く、既存の公開YARAルール「TextShell」も存在しますが、これはサンプルのごく一部しかカバーしていません。しかし、最新の研究では、既知のすべてのpkr_mtsi亜種に一致する包括的なYARAルールが開発され、これによってより堅牢な検出が可能になっています。
独特のアンパッキングモデルと回避技術
pkr_mtsiは独特のアンパッキングモデルを示します。観測されたすべての亜種では、main関数によって呼び出される最初のカスタム関数が、次のステージのメモリを割り当て、多数の1~8バイトのチャンクを即値として埋め込み、そこから次のステージを再構築します。初期のサンプルでは直接的なVirtualAlloc呼び出しに依存していましたが、新しいビルドでは、パラメータが分散し、ジャンク命令とインターリーブされた難読化されたZwAllocateVirtualMemory呼び出しに切り替わっています。
この後、高密度の「書き込み専用」ヘルパー関数のシーケンスが続き、わずかな制御フローしか持たない集中的な小さなメモリ書き込みの認識可能なパターンが生成されます。DLL形式では、pkr_mtsiはロード時の実行やDllRegisterServerなどのエクスポートされた関数を介した実行をサポートしており、regsvr32ベースの実行と永続化を可能にします。
回避策として、中間ステージはキーマーカーが意図的に削除された改変されたUPXモジュールを使用しています。アドバーサリーは、実行が可能である限りDOS/PEヘッダー、UPXマジック値、テキストリソースを選択的に削除し、静的なシグネチャベースの検出や自動アンパッキングを困難にしています。さらに新しい世代のパッカーでは、プレーンテキストのAPIおよびDLL名からハッシュベースの解決への移行、静的および行動分析を妨害するためのGDI APIへの遍在的なジャンク呼び出し、モジュールリストを走査してエクスポートを解決するカスタムルーチンといった難読化が追加されています。
しかし、全体的なアーキテクチャは安定しており、以下の3つの層で構成されます。
- 初期のpkr_mtsi層
- 劣化したUPX中間層
- 最終的なマルウェアペイロード
防御側にとっての新たな機会
研究者らは、防御側が利用できるいくつかのアンチアナリシスおよび実装上の癖を強調しています。パッカーは、IsDebuggerPresentやCheckRemoteDebuggerPresentなどのデバッガー検出APIをルーチン的に呼び出し、検出時には自己参照的な無限ループに陥ることがあります。これはコードおよび挙動から信頼性高く特定できるパターンです。
さらに注目すべきは、NtProtectVirtualMemoryの繰り返し呼び出しで無効な保護フラグが使用され、常にSTATUS_INVALID_PAGE_PROTECTION(0xC0000045)エラーを生成するというバグです。このバグは、パッカーの特徴的なメモリ割り当てと集中的な書き込みパターンと相関した場合、EDRテレメトリーにおいて高シグナルな行動インジケーターとなります。
これらの特性は、具体的な防御の機会につながります。セキュリティチームは、決定的な早期段階の割り当て、単一領域への即値書き込みのバースト、難読化されたZwAllocateVirtualMemory解決に焦点を当てた行動検出を優先することが推奨されます。インシデントレスポンダーは、pkr_mtsiの段階的な設計とDLLベースの実行パス(regsvr32駆動のロードを含む)を熟知することで、トリアージ、アンパッキング、パッカーと基盤となるペイロードの分離を加速できます。
今回の研究は主にパッカー自体に焦点を当てていますが、アナリストは今後のレポートでダウンストリームのUPXステージと関連するペイロードファミリーに関する詳細な情報が提供されることを示唆しています。pkr_mtsiは、Windowsエコシステム全体で広範なマルバタイジング駆動型侵入チェーンを支え続けています。
