マルウェアハンティングが見つけたステルスなユニバーサルルートキットローダー
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
新たに発見されたMicrosoft署名のrootkitローダーは、攻撃者が侵害されたシステム上で署名されていないカーネルモジュールを展開することを可能にします。このマルウェアは、C2インフラストラクチャと通信し、第二段階のプラグインをメモリに直接ロードするためのファーストステージドライバーを使用します。この巧妙な実行モデルは、ディスクベースの検出を回避しつつ、高度に特権的なカーネルレベルのアクセスを維持する助けとなります。
調査
研究者は、Windowsハードウェア互換性プログラム(WHCP)を悪用して合法なMicrosoft署名を取得している署名されたドライバーのクラスターを特定しました。調査では、署名されたローダーがカスタマイズされた署名されていないカーネルドライバーの注入を処理する二段階の実行モデルが明らかになりました。コードとインフラストラクチャの分析も、以前に記録されたFiveSys rootkitとの類似性を示しました。
緩和策
組織は、不審または許可されていないカーネルモードドライバーのロードや、セキュリティサービスに影響を与える予期しないレジストリ変更を監視する必要があります。メモリだけのモジュールロードを特定できるエンドポイント検出を展開することは、この活動の検出に重要です。不明または信頼されていないベンダーからのWHCP署名ドライバーの使用を制限することで、さらに被曝を減少させることができます。
対応策
この活動が検出された場合、影響を受けたシステムを隔離し、C2通信を中断し、横方向の移動を防止します。メモリフォレンジクスを実行して、ディスクに書き込まれることのない可能性のある注入されたカーネルモジュールを特定します。レジストリの整合性を確認し、特にImage File Execution Optionsやセキュリティポリシーの許可されていない変更に注意を払います。
アタックフロー
検出
レジストリの悪用によるアクセシビリティ機能の可能性(cmdline経由)
Windows Defender Antivirusチェックが無効になっていた(registry_event経由)
サイレントプロセス終了メカニズムの利用の可能性(registry_event経由)
アクセシビリティ機能の悪用による攻撃者の不審な活動(registry_event経由)
検出用IOC(SourceIP):新たな隠蔽型ユニバーサルrootkitローダーのマルウェアハンティング
検出用IOC(DestinationIP):新たな隠蔽型ユニバーサルrootkitローダーのマルウェアハンティング
隠蔽型rootkitローダーコンポーネントの検出 [Windows Sysmon]
シミュレーションの実行
-
攻撃のストーリーとコマンド: 敵対者は、自身の存在を隠蔽するrootkitコンポーネントを、悪意のあるドライバーと通信することで展開する意図です。伝統的なファイルベースの検出を回避するため、攻撃者は「Living-off-the-Land」戦略を使用し、カーネルにサイドロードされたドライバーと対話するためにPowerShellスクリプトを使用します。このスクリプトは特にIRP_MJ_DEVICE_CONTROLハンドラーを標的とし
、特定されたrootkitローダーの通信パターンを模倣して、コマンド・アンド・コントロールチャネルの確立とセキュリティ機能の無効化を行います。handler by sending a crafted IOCTL (I/O Control) code, mimicking the communication pattern of the identified rootkit loader to establish a command-and-control channel and disable security features. -
回帰テストスクリプト:
# rootkitローダードライバー通信を模倣するシミュレーションスクリプト # 注:これには、これらの特定のパターンに応答するドライバー # またはモックドライバーを介してIRPハンドラーコールをシミュレートします。 $SymbolicName = "x1cx1c??x1ceae971b87" Write-Host "[+] シンボリックネーム:$SymbolicNameでのドライバー相互作用のシミュレーション" # 実際のシナリオでは、P/Invokeを介してDeviceIoControlを呼び出します。 # シミュレーション/テスト目的のために、テレメトリトリガーをシミュレートします $signature = @{ SymbolicName = "x1cx1c??x1ceae971b87" IOControlHandler = "IRP_MJ_DEVICE_CONTROL" ShutdownHandler = "IRP_MJ_SHUTDOWN" } Write-Host "[+] 検出をトリガーするための細工されたIOCTLを送信..." # 特定のSymbolicNameに対するカーネルイベント生成をシミュレートするロジック # この部分はBASエージェントが特定のログエントリをトリガーするための概念です New-EventLog -LogName "Microsoft-Windows-Sysmon" -Source "Sysmon" # トリガーを模擬 -
クリーンアップコマンド:
# 一時ファイルまたは模擬されたドライバーアーティファクトを削除 Remove-Item -Path "$env:TEMProotkit_sim.tmp" -ErrorAction SilentlyContinue Write-Host "[+] クリーンアップ完了."