Retour aux articles • MATÉRIEL • • 5 min de lecture

Hak5 Bash Bunny : Audit USB & QuickCreds

Hak5 Bash Bunny : Audit USB & QuickCreds

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.

Architecture & Flux : Hak5 Bash Bunny : Audit USB & QuickCreds

Déroulement chronologique (5 à 7 secondes)

  1. É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.
  2. Attribution DHCP à métrique minimale : Le serveur DHCP embarqué (dnsmasq ou isc-dhcp-server) attribue une adresse IP au poste cible en annonçant la passerelle 172.16.64.1 avec 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.
  3. 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 proxy wpad.dat.
  4. Défi-Réponse NTLMv2 forcé : Responder répond positivement à la requête WPAD et exige une authentification HTTP 401 / SMB NTLM en fournissant un vecteur de défi (Server Challenge) de 8 octets.
  5. Authentification transparente de Windows : Par conception du protocole d’authentification intégrée Windows (Integrated Windows Authentication), le sous-système LSASS.exe signe 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é techniqueRéalité opérationnelle avec QuickCredsExplication cryptographique
Capture de l’identifiant et du condensat Net-NTLMv2OUI (en ~5 secondes)Stocké dans /loot/quickcreds/ sur la mémoire flash du Bash Bunny.
Réutilisation directe en Pass-the-Hash (PtH)NONUn 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)OUISi 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 :

  1. 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.
  2. 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=block lorsque l’écran de veille (logind / swaylock / GDM) est actif.
  3. 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).
  4. 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 5600 infaisable en temps utile.

Sources


Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome