Le mythe cinématographique de la « clé USB magique » qui ouvre instantanément la session d’un ordinateur verrouillé repose sur une confusion fréquente entre deux mécanismes distincts : l’exfiltration de condensats d’authentification réseau (QuickCreds, popularisé par Rob « Mubix » Fuller en septembre 2016 puis industrialisé sur le Hak5 Bash Bunny en mars 2017) et l’altération mémoire pré-démarrage. Sur un système d’exploitation moderne verrouillé (Win + L), le clavier HID est inopérant face à l’écran d’accueil, mais la pile réseau du système continue de s’exécuter en arrière-plan avec les privilèges et les jetons de l’utilisateur connecté.
1. Architecture matérielle du Hak5 Bash Bunny
Contrairement à l’USB Rubber Ducky qui se limite à l’émulation d’un clavier HID, le Bash Bunny est un ordinateur embarqué complet basé sur un SoC Allwinner A33 (Quad-Core Cortex-A7, 512 Mo de RAM DDR3, 8 Go de stockage NAND eMMC) exécutant une distribution Debian Linux dédiée et piloté par un commutateur physique à 3 positions (Arming Mode, Switch 1, Switch 2) accompagné d’une LED RVB d’état.
Grâce au sous-système Linux USB Gadget (ConfigFS / libcomposite), son contrôleur USB OTG peut s’annoncer simultanément auprès de l’hôte comme une combinaison de périphériques composites via la directive ATTACKMODE :
HID: émulation de clavier/souris pour l’injection de frappes DuckyScript.RNDIS_ETHERNET(Windows) /ECM_ETHERNET(macOS / Linux) : carte réseau Ethernet Gigabit sur USB dotée d’une métrique de routage prioritaire.STORAGE: volume de stockage de masse flash pour le dépôt ou l’exfiltration de journaux.SERIAL: console série UART de diagnostic et d’administration.
2. Anatomie du vecteur QuickCreds sur session verrouillée
Lorsqu’un poste Windows est laissé allumé mais verrouillé (Lock Screen), l’interface graphique LogonUI.exe bloque toute interaction clavier hors saisie du mot de passe. En revanche, le noyau Windows maintient le profil Plug-and-Play actif par défaut et tente d’établir la connectivité sur toute nouvelle carte réseau physique branchée.
Déroulement chronologique (5 à 7 secondes)
- Émulation réseau prioritaire (
ATTACKMODE RNDIS_ETHERNET) : Le Bash Bunny s’annonce comme un adaptateur Ethernet USB standard. Windows installe silencieusement le pilote générique Microsoft RNDIS sans demander d’élévation administrateur. - Attribution DHCP à métrique minimale : Le serveur DHCP embarqué (
dnsmasqouisc-dhcp-server) attribue une adresse IP au poste cible en annonçant la passerelle172.16.64.1avec une métrique de routage inférieure à celle du Wi-Fi ou de l’Ethernet existant, détournant ainsi tout le trafic de résolution de noms local vers la clé USB. - Empoisonnement LLMNR / NBT-NS & WPAD via Responder : Le démon Responder (Laurent Gaffié) écoute sur l’interface
usb0. Même écran verrouillé, le service système WinHTTP Web Proxy Auto-Discovery Service interroge le réseau pour localiser le fichier de configuration proxywpad.dat. - Défi-Réponse NTLMv2 forcé : Responder répond positivement à la requête
WPADet exige une authentificationHTTP 401 / SMB NTLMen fournissant un vecteur de défi (Server Challenge) de 8 octets. - Authentification transparente de Windows : Par conception du protocole d’authentification intégrée Windows (Integrated Windows Authentication), le sous-système
LSASS.exesigne automatiquement le défi avec le secret NT de l’utilisateur dont la session est active en arrière-plan et transmet le condensat Net-NTLMv2 au Bash Bunny.
3. Ce que QuickCreds permet réellement (et ce qu’il ne fait pas)
Il est essentiel de distinguer le résultat réel de cette capture des raccourcis médiatiques :
| Capacité technique | Réalité opérationnelle avec QuickCreds | Explication cryptographique |
|---|---|---|
| Capture de l’identifiant et du condensat Net-NTLMv2 | OUI (en ~5 secondes) | Stocké dans /loot/quickcreds/ sur la mémoire flash du Bash Bunny. |
| Réutilisation directe en Pass-the-Hash (PtH) | NON | Un condensat Net-NTLMv2 est une réponse HMAC-MD5 liée au défi aléatoire de 8 octets ; ce n’est pas le hash NTLM brut stocké dans la base SAM/NTDS. |
Cassage hors-ligne par force brute GPU (Hashcat -m 5600) | OUI | Si le mot de passe est faible ou présent dans un dictionnaire, il est retrouvé hors-ligne, puis rejoué au clavier (ATTACKMODE HID) pour déverrouiller la session. |
Relais NTLM en temps réel (ntlmrelayx) | OUI (si SMB Signing désactivé) | Le défi peut être relayé vers un autre service (LDAP/SMB) pendant que la clé est branchée. |
4. Matrice de durcissement Zero-Trust (Windows 11 Enterprise & Linux)
La neutralisation complète de QuickCreds et des périphériques réseau USB malveillants repose sur quatre verrous complémentaires appliqués par GPO ou Intune :
- Désactivation de WPAD, LLMNR et NetBIOS (NBT-NS) :
- GPO :
Computer Configuration > Administrative Templates > Network > DNS Client > Turn off multicast name resolution = Enabled(désactive LLMNR). - Désactiver le service système
WinHttpAutoProxySvc(WPAD) et désactiver NetBIOS sur TCP/IP dans les options DHCP/adaptateurs.
- GPO :
- Restriction de l’installation des périphériques lorsque l’écran est verrouillé :
- Activer la stratégie de contrôle d’installation de classe USB et le verrouillage DMA (Kernel DMA Protection / politiques BitLocker contre les nouveaux périphériques DMA/USB tant que la session est verrouillée).
- Sur Linux : utiliser USBGuard avec une politique implicite
ImplicitPolicyTarget=blocklorsque l’écran de veille (logind/swaylock/GDM) est actif.
- Restriction du trafic NTLM sortant :
- GPO :
Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers = Deny all(force l’usage exclusif de Kerberos, qui ne peut pas être sollicité par une adresse IP brute non enregistrée dans le KDC Active Directory).
- GPO :
- Hygiène des mots de passe & Windows Hello for Business :
- L’authentification par clé asymétrique appuyée sur le TPM 2.0 (Windows Hello / FIDO2) et des phrases de passe de plus de 16 caractères rendent le cassage hors-ligne
Hashcat -m 5600infaisable en temps utile.
- L’authentification par clé asymétrique appuyée sur le TPM 2.0 (Windows Hello / FIDO2) et des phrases de passe de plus de 16 caractères rendent le cassage hors-ligne
Sources
- Documentation officielle Hak5 : Bash Bunny Mark II & Payloads
- Dépôt GitHub officiel : Responder (LLMNR, NBT-NS and MDNS Poisoner)
- Recherche originale Rob « Mubix » Fuller : Snagging creds from locked machines (QuickCreds)
- Documentation Microsoft : Durcissement NTLM et désactivation de WPAD/LLMNR
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome
