
Windowsレジストリのエクスポートファイルを、NTUSER.MANの置き換えに使用できるWindowsハイブファイルに変換するツール
EDR/AVから隠れてHKCUにレジストリキーを追加するためのツールです。管理者権限がなくても動作します。
注意: この操作は一度だけ実行できます。NTUSER.MANが新しいレジストリハイブになった後は、管理者でなければ変更できません。最初の実行で必要な変更をすべて確実に行ってください。
reg_query BOFの結果を使用する場合req_query BOFを https://github.com/trustedsec/CS-Situational-Awareness-BOF/tree/master/SA/reg_query から入手します。execute-bof --opsec Z:\path\to\reg_query.x64.o go z"" i1 z"" z"" i1 を実行します。output.txt と呼びます。すべてのタイムスタンプを含め、次のような HKEY_CURRENT_USER キーで始める必要があることに注意してください。03/18/2025 14:19:51 HKEY_CURRENT_USER\
swarmer.exe バイナリを入手し、swarmer.exe --bof --startup-key "WhateverKeyNameYouWant" --startup-value "C:\Path\To\Your\target.exe" output.txt NTUSER.MAN を実行します。NTUSER.MAN ファイルをターゲットマシンにアップロードします。OPSECを意識する場合は別の名前にしても構いません。%USERPROFILE% にコピーします。つまり、C:\Users\MyUserName\NTUSER.MAN のようなファイルができるはずです。HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run にレジストリキーを追加して、起動時に電卓を起動したいとします。
まず、使用したい HKCU キーのレジストリダンプが必要です。理想的には、変更対象のマシンから取得する必要があります。reg export HKCU hkcu.reg を実行して生成できます。
次に、.regファイルに希望する変更を加えます。この例では、メモ帳でファイルを開き、次のように行を追加するだけです。

注意: HKEY_CURRENT_USER への変更のみが適用されます。HKLMには影響しません。
次に、このツール swarmer.exe を使用して、変更したregファイルをバイナリのレジストリハイブに変換する必要があります。呼び出し例は次のとおりです。
swarmer.exe hkcu.reg NTUSER.MAN
または、PowerShellスクリプト内で実行する場合は、リリースセクションから swarmer.dll バイナリを入手し、次のコマンドを使用して実行することもできます。
Import-Module '.\swarmer.dll'
Convert-RegToHive -InputPath '.\hkcu.reg' '.\NTUSER.MAN'
最後に、NTUSER.MAN(名前はこれでなければなりません)を %USERPROFILE% ディレクトリ(C:\Users\MyUserName など)に配置するだけです。
次回そのアカウントがログインしたときに、レジストリの変更が読み込まれます。
Windowsには古い遺産が多数あり、これは Windows 必須ユーザープロファイル を悪用しています。通常、ユーザーの NTUSER.DAT を NTUSER.MAN にリネームするには管理者権限が必要ですが、同じ名前のファイルをそこにドロップするだけで代わりに使用されるのを防ぐ保護はないようです。
バイナリのWindowsハイブをマシン上で生成するには管理者アクセスが必要という「期待される」セキュリティ境界がありますが、実際には緩く運用されています。swarmer は Offline Registry API を(悪)用して、エクスポートされた .reg ファイルを解析しながらバイナリレジストリハイブを操作します。説明を引用します。
アプリケーションは、システムレジストリのセキュリティ要件を回避するためにオフラインレジストリ関数を使用するべきではありません。ハイブをロードするには、RegLoadKey関数に必要な特別な権限を持たないアプリケーションは、RegLoadAppKey関数を使用できます。
明らかにそれには従いません。そこで、低権限のレジストリエクスポートと自作の swarmer ツールを組み合わせて、「特権的な」レジストリバイナリオブジェクトを作成し、適切な場所にドロップして既存の NTUSER.DAT レジストリハイブを上書きできます。
このプロセスでは従来のレジストリ読み取り/書き込みAPIを一切使用しないため、理想的にはEDRはこのプロセスを把握できません。SysinternalsのProcmonによれば、これは実際のレジストリ書き込みとして表示されません。特に paranoid な場合は、.regファイルを自分が管理するマシンに持ち込み、このツールでハイブバイナリファイルを作成し、ホストに戻すこともできます。レジストリをエクスポートした後は、NTUSER.MANファイルをドロップするまでホストとやり取りする必要はありません。
厳密に言えば、レジストリをエクスポートする必要すらありませんが、Windows環境と完全に一致しない別のマシンのレジストリでアカウントのレジストリを置き換えるのは危険であり、保証が難しいでしょう。
このツールは Apache License の下でオープンソース化されています。