Swarmerツール: Windowsレジストリのステルスな修正でEDRを回避して持続性を保つ
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Swarmerは、低権限のWindows永続化ユーティリティで、必須ユーザープロファイルハイブ(NTUSER.MAN)を作成し、オフラインレジストリAPIを介して編集します。従来のReg* Windows APIに依存しないため、標準的なレジストリ書き込みの振る舞いに調整されたEDRのテレメトリへの可視性を削減しながら、Runキーの永続性を植え付けることが可能です。この手法は管理者権限なしでログオン間を越えたスタートアップエントリを持ち越すための必須プロファイルの取り扱いを悪用しています。Swarmerは独立した実行ファイルまたはPowerShellモジュールとして利用可能で、ディスク上のアーティファクトを最小限に抑える方法で使用できます。
調査
レポートは、Swarmerのエンドツーエンドのフローを概説しています: 現在のHKCUハイブをエクスポートし、スタートアップ永続性を含むようにエクスポートされたデータを変更し、Offreg.dllルーチン(ORCreateHiveやORSetValueなど)を使用してハイブを再構築します。再構築されたハイブは、ログイン中に適用されるようユーザープロファイルパスにNTUSER.MANとして配置されます。実行は、ターゲットスタートアップ値と実行するペイロードの場所を定義するコマンドラインオプションを通じて制御されます。著者はWindows 10およびWindows 11でこの技術を検証しました。
緩和策
作成を監視する NTUSER.MAN が必須プロファイルが予期されないユーザーコンテキストで作成された場合に警告し、Offreg.dllが異常なプロセスで読み込まれたときに警告します。必須プロファイルに使用されるディレクトリを保護し、整合性をチェックし、正規のオフラインレジストリ操作をベースライン化して逸脱を際立たせます。ログオン時に発効する怪しいハイブの変更に対する検出を追加します。可能な限り、ユーザーが必須プロファイルのアーティファクトを作成または操作する能力を制限します。
対応
識別された場合、エンドポイントを隔離し、分析のためにNTUSER.MANハイブを取得し、注入されたキーエントリを列挙します。許可されていないスタートアップ値を削除し、永続性を排除するために既知の正常なユーザーハイブを復元します。副次的ペイロードまたは代替の永続パスが確立されていないことを確認するために、より広範なフォレンジックレビューを実行し、同じハイブ書き込みパターンについて艦隊全体を捜索します。低権限ユーザーが必須プロファイルを作成するのを防ぐために最小特権制御を強化します。
攻撃フロー
この部分はまだ更新しています。通知を受け取るためにサインアップしてください。
通知するシミュレーション実行
前提条件: テレメトリおよびベースラインの事前準備チェックが通過していること。
理由: このセクションは、検出ルールを作動させることを目的とした敵対者技術(TTP)の正確な実行を詳述しています。命令と記述は、特定されたTTPに直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目指します。抽象的または無関連な例は誤診につながります。
-
攻撃の説明とコマンド:
攻撃者は、侵害されたホストで足がかりを得て、標準のレジストリハイブに触れずに(EDRフックを回避するために)ユーザーログオンを生き残る永続性を確立したいと考えています。この点で Swarmer ツールを使用して、攻撃者は以下を行います:- ターゲットユーザーのプロファイルディレクトリを特定します(
C:Usersvictim). - 悪意のあるハイブファイルを作成します(
NTUSER.MAN)ログオン時にバックドアペイロードを起動するRunキーを含む。 - WinAPIの高レベルコールをバイパスする低レベルのファイルI/Oを使用して、ファイルを直接被害者のプロファイルに書き込みます。
- 次に、 オフラインレジストリAPI
ORCreateHiveを呼び出して新しく作成したハイブをメモリにロードし、Runキーを登録し、最終的にORSaveHiveを呼び出して変更を保持します。
これらの動作は両方とも次のログを生成します:
- Sysmon イベントID 11 – ファイル作成(
NTUSER.MAN. - セキュリティイベントID 4688 – プロセス(
swarmer.exe)のコマンドラインにORCreateHive(または他のOR*フラグ)を含む。
- ターゲットユーザーのプロファイルディレクトリを特定します(
-
回帰テストスクリプト:
#-------------------------------------------------------------- # Swarmer式レジストリ永続性シミュレーション (PowerShell) #-------------------------------------------------------------- # 1. 被害者のプロファイルパスを定義します $victimProfile = "$env:SystemDriveUsersvictim" $ntUserManPath = Join-Path $victimProfile "NTUSER.MAN" # 2. 最小限のハイブファイルを作成します(バイナリプレースホルダー) # 実際の攻撃では、これは作成されたレジストリハイブになります。 $hiveBytes = [byte[]] (0..255) # ダミーデータ [IO.File]::WriteAllBytes($ntUserManPath, $hiveBytes) # 3. ヘルパー実行ファイルを介してオフラインレジストリAPIを呼び出します。 # swarmer_helper.exeはネイティブオフラインレジストリ機能をラッピングした # コンパイル済みバイナリであると仮定します。 $helper = "C:Toolsswarmer_helper.exe" $args = @( "ORCreateHive", "`"$ntUserManPath`"" "ORSetValue", "HKLMSoftwareMicrosoftWindowsCurrentVersionRunmyBackdoor", "`"C:Malwarebackdoor.exe`"" "ORSaveHive", "`"$ntUserManPath`"" ) & $helper $args #-------------------------------------------------------------- -
クリーンアップコマンド:
# 悪意のあるハイブを削除し、必要であればアンロードします Remove-Item -Path "$env:SystemDriveUsersvictimNTUSER.MAN" -Force # ヘルパーがメモリ内にハイブを残した場合、強制アンロードします(例) & "$env:ProgramFilesWindows Kits10binx64reg.exe" unload "HKUTempHive"