Prise en main d’une USBArmory

Attaques par clés USB

Salut à tous, ça fait un bon bout de temps que j’ai rien posté : janvier a été bien rempli. On va repartir doucement avec un petit tuto. Récemment on a reçut au boulot quelques USBArmory d’InversePath. Et du coup je me dis que c’est l’occasion de vous faire quelques tutoriels de prise en main d’une USBArmory.

USBArmory, la clé USB qui n’en est pas une.

Déjà c’est quoi une USBArmory ? c’est très simplement un ordinateur avec une puce ARM à 800Mhz, 512MB de RAM et une carte micro SD en guise de disque dur. Une grosse différence avec un Raspberry Pi 2 c’est que l’ensemble tient sur un PCB de la taille d’une clé USB. L’autre gros point c’est que comme la carte est toute petite, il n’y a qu’un seul périphérique d’Entrée/Sortie : le port USB. Pas de sortie HMDI pour l’écran, pas de port USB « host » pour brancher un clavier ou une souris. De même l’alimentation se fait également via le port USB.

Du coup cela limite les usages au « parasitage » d’ordinateur existants. Tenez, je vous met une photo de ce que ça rend une fois branchée sur un port USB de mon clavier et dans un boitier transparent.

Prise en main d'une USBArmory

Et on peut en faire quoi ?

Alors je ne vais pas trop m’étendre pour les attaques vu que j’en avais déjà parlé dans cet article. Mais il y plein d’usages comme se faire un mini HSM qui vous permet de chiffrer et déchiffrer des données, le projet Interlock devrait d’ailleurs intéresser les VIP (Les P aussi d’ailleurs) itinérants. On peut se faire un PC de confiance qui tiens dans la poche, pratique si vous êtes contrains d’utiliser des postes non-fiable, pourquoi pas avec un tunnel VPN/Tor dedans. Je vous laisse découvrir tout ça sur le github du projet et toutes les idées qu’il y a autour des USBArmory.

Notez que tout autre rojets à base de Raspberry Pi Zero et ne nécessitant pas un autre port que l’USB est portable sur USBArmory. Idem pour les Raspberry Pi classique, c’est les mêmes architectures matérielles. Bref, autant vous dire qu’il y a de quoi jouer…

Prise en main d’une USBArmory

Attaquons le vif du sujet, vous venez de recevoir votre clé, et vous vous ne savez pas comment l’utiliser. On va voir ci dessous comment établir la première connexion de la clé avec le système d’exploitation sur lequel elle est branchée. Je pars du principe que vous utilisez l’image Debian de base livrée avec la clé. On verra plus tard comment préparer sa propre image et compiler son kernel linux.

L’idée pour communiquer avec la clé c’est qu’elle va proposer une connexion « Ethernet over USB » basé sur le protocole RNDIS. L’USBArmory apparaîtra donc comme une nouvelle carte réseau sur votre système. Un peu comme une clé USB/Wifi d’il y a quelques années quand tous les PC n’avait pas de carte wifi.

Donc, brancher la clé : normalement au bout de quelques secondes la clé se met à clignoter sur le rythme des battement de cœur (de son kernel, c’est mignon tout plein d’ailleurs). Pour se connecter il faut ensuite que votre PC reconnaisse la connexion Ethernet over USB, et là j’ai galéré un bon moment pour que mon Windows 10 installe le bon driver et qu’il la monte comme un adaptateur réseau…

Je vous donne les quelques options possibles ci dessous :

Option 1 :I’m sexy and I know it…

Votre PC reconnait directement la clé comme une carte réseau, il ne vous reste plus qu’a configurer la carte (voir plus bas), c’est le cas sous Ubuntu par exemple. De mon côté aucun de mes PC Windows n’a reconnu la directement clé.

Option 2 : installer un driver.

Si vous n’avez pas de chance comme moi, vous pouvez installer le driver « Acer – USB Ethernet-RNDIS Gadget » en suivant la petite procédure que j’ai mis sur le Google Group d’USBArmory. Je vous la remet ici « des fois que » :

  1. Télécharger le pilote : Acer Incorporated. – Other hardware – USB Ethernet-RNDIS Gadget » depuis le catalogue Microsoft Update pour Windows 7, 8, 8.1 et supérieur ;  et
  2. démarrer une console PowerShell pour saisir les commandes suivantes :
> cd "C:\Path\To\Your\DownloadDir" 
> mkdir Tmp 
> expand '.\Acer Incorporated. - Other hardware - Acer USB Ethernet-RNDIS Gadget.cab' .\Tmp\ -f:* 
> pnputil.exe /add-driver .\Tmp\RNDIS.inf /install

Et c’est tout, chez moi ça a fonctionné directement à partir de là.

Option 3 : modifier les  Device IDs

Si l’option 2 ne fonctionne pas ou que vous ne voulez pas installer un drivers sur votre poste, vous pouvez utiliser un système Linux (Genre un LiveCD Ubuntu par exemple) pour vous connecter à la clé et modifier le paramétrage de celle ci pour quelle s’annonce avec un autre VendorId et ProductId, reconnu directement par Windows. Pour cela, il suffira de vous connecter en SSH à votre USBArmory (voir en bas). Puis en tant que root, modifier le fichier /etc/modprobe.d/usbarmory.conf sur la clé et ajouter :

g_ether use_eem=0 idVendor=0x04b3 idProduct=0x4010 dev_addr=1a:55:89:a2:69:41 host_addr=1a:55:89:a2:69:42

Comme indiqué sur le Github du projet. Cela permettra à la clé de se faire passer pour un produit IBM dont le drivers est généralement présent sur tous les Windows. Ça nécessite néanmoins de pouvoir se connecter en SSH à la clé pour faire la modification qui permet de s’y connecter…un peu le serpent qui se mort la queue.

Avant de finir cette partie, notez que si vous voulez modifier l’adresse MAC de votre USBArmory c’est également dans la ligne ci dessus.

Du fonctionnement des drivers sous Windows

Bon alors je n’ai pas tout compris au fonctionnement de Windows avec les drivers et lequel il charge quand on lui branche un périphérique. Mais j’ai quand même compris 2 trucs :

  • Dans le dossier C:\Windows\INF, vous avez tout un tas de fichiers .inf qui indiquent pour des VendorId et/ou ProductID quel driver charger. Par exemple :
    [RndisDevices.NTamd64]
    %RndisDevice.COMM% = RNDIS.NT.5.1, USB\VID_0525&PID_A4A2
    %RndisDevice.ACER% = RNDIS.NT.5.1, USB\VID_0502&PID_3210

    Indique que le drivers reconnait, entre autres, le VendorID 0502 et ProductId 3210.
    Un peu plus bas dans le fichier on trouve le .sys du drivers à charger avec ces VID (VendorID) et PID (ProductID).

  • Vous pouvez comparer avec le VendorId et le ProductId de l’USBArmory que vous avez mis dans le fichier /etc/modprobe.d/usbarmory.conf ; ou trouver cette info dans les propriété de votre carte réseaux dans le gestionnaire de périphérique :
USB DeviceID et ProductID
USB DeviceID et ProductID

Je vous rappel que les drivers sont signés et que, à moins de débrayer la sécurité de Windows sur le sujet, cela ne sert à rien de modifier ces fichiers car cela rendra la signature invalide et Windows refusera de les charger.

Se connecter à son USBArmory

Bref, une fois la clé reconnue comme un périphérique RNDIS, c’est tout simple. Vous pouvez aller dans : Panneau de configuration\Réseau et Internet\Centre Réseau et partage et Modifier les paramètres de la carte. Afficher ensuite les propriétés de la carte RNDIS et cliquez sur « Protocole Internet version 4 » puis propriété. Il vous suffit d’affecter l’adresse IP suivante : 10.0.0.2 (laissez le masque de sous réseau par défaut) et de fermer.

Enfin à l’aide de PuTTY (ou d’un autre client SSH pour Windows). Connectez-vous en tant qu’utilisateur usbarmory à l’adresse 10.0.0.1 :

ssh usbarmory@10.0.01

Le mot de passe est donnée sur le site distribuant l’image du système. Vous devriez obtenir ça :

PuTTY USBArmory

Et voilà, c’est tout pour la prise en main d’une USBArmory, vous n’avez plus qu’a jouer avec !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *