🔍 Contexte
Publié en octobre 2026 sur GitHub (ivancabrera02/WHFB-PinCapture), ce dépôt présente une technique offensive permettant de capturer le PIN Windows Hello for Business (WHFB) sur des systèmes Windows 11 protégés par VBS/VSM et TPM, où les attaques hors ligne et le brute-force sont rendus inopérants.
🛡️ Pourquoi les attaques classiques échouent
Le projet documente les protections en place qui rendent les attaques traditionnelles inefficaces :
- VBS/VSM actif : la hiérarchie de clés réside en VTL1 (secure kernel), inaccessible depuis SYSTEM en VTL0
- Conteneur NgcIso : le secret PIN est descellé à l’intérieur du trustlet, pas en user mode normal
- Matériel scellé par TPM : aucune clé en clair sur disque, le descellement nécessite le TPM
- Anti-hammering :
softLockoutAttemptLimit = 5, compteur enforced par VTL1, non réinitialisable depuis le disque
⚙️ Technique d’attaque : hardware breakpoint capture
La technique repose sur l’injection de ngccap.dll dans le processus LogonUI.exe (SYSTEM, non-PPL) via logonui_watch.ps1 :
- La DLL résout
ngckeyenum!NgcSerializeConvenienceCredentialdansngckeyenum.dll - Elle pose un breakpoint matériel d’exécution CPU (DR0/DR7) sur tous les threads du processus via
CreateToolhelp32Snapshot→OpenThread→SuspendThread→GetThreadContext/SetThreadContext - Un Vectored Exception Handler (VEH) intercepte
EXCEPTION_SINGLE_STEPquand la fonction est atteinte - Le handler lit RCX →
{buffer, length}contenant le PIN ASCII en clair - Le PIN est écrit dans
C:\Windows\Temp\pin_capture.log - Le flag RF (Resume Flag) est positionné dans EFlags pour éviter le re-déclenchement immédiat
EXCEPTION_CONTINUE_EXECUTIONest retourné : l’instruction originale s’exécute sans modification, l’authentification réussit normalement- La DLL se nettoie (DR0/DR7 effacés, VEH retiré)
🗂️ Structure du dépôt
ngccap.c: DLL de capture par breakpoint matériellogonui_watch.ps1: injecteur PowerShell surveillant LogonUI.exeGet-WHFBKeys.ps1: outil d’énumération WHFB/NGC/TPM et collecte de métadonnées (clés publiques, blobs protecteurs, politique WHFB)build.bat: compilation via MSVC 2022
🎯 Prérequis
- Windows 10/11 avec un PIN Windows Hello enrollé
- Droits Administrateur élevés (SeDebugPrivilege requis)
- Validé sur Windows 11 26200 (Home) avec Intel fTPM 2.0 et VBS actif
📌 Type d’article
Publication de recherche offensive / outil GitHub documentant une technique de capture de credential en mémoire vive ciblant Windows Hello for Business, avec preuve de concept fonctionnelle et code source complet.
🧠 TTPs et IOCs détectés
TTP
- T1055 — Process Injection (Defense Evasion)
- T1003 — OS Credential Dumping (Credential Access)
- T1056.001 — Input Capture: Keylogging (Collection)
- T1574 — Hijack Execution Flow (Defense Evasion)
- T1082 — System Information Discovery (Discovery)
IOC
- Fichiers :
ngccap.dll - Fichiers :
ngccap.c - Fichiers :
logonui_watch.ps1 - Fichiers :
Get-WHFBKeys.ps1 - Fichiers :
build.bat - Chemins :
C:\Windows\Temp\pin_capture.log
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 27 octobre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- ngccap.dll (tool)
- logonui_watch.ps1 (tool)
- Get-WHFBKeys.ps1 (tool)
🟡 Indice de vérification factuelle : 40/100 (moyenne)
- ⬜ github.com — source non référencée (0pts)
- ✅ 5693 chars — texte complet (fulltext extrait) (15pts)
- ✅ 6 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 5 TTPs MITRE identifiées (15pts)
- ⬜ date RSS ou approximée (0pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://github.com/ivancabrera02/WHFB-PinCapture