-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Nom du projet : USB Worm
Présentation :
Il s'agit de réaliser un ver USB (USB Worm) éducatif.
En effet, le ver est un fichier exécutable qui se propage ; ici, nous devrons faire en sorte qu'il parte d'une clé USB 1 et peut se propager sur tout autre support USB.
D'autre part comme le client est un enseignant du secondaire, il souhaite pouvoir sensibiliser ces étudiants à une des menaces informatiques existante.
Auteurs :
- Julie DESAINTLEGER : julie.desaintleger@etu.univ-amu.fr
- Quentin FILORI : quentin.filori@etu.univ-amu.fr
- Idriss LOPES SANCHES : idriss.lopes-sanches@etu.univ-amu.fr
- Mathieu REMY : mathieu.remy@etu.univ-amu.fr
Encadrants :
- Pablo ARRIGHI
- Kevin PERROT
- Laurent TICHIT
L’installation se déroule en plusieurs étapes, tout d’abord créer la machine virtuelle.
- Télécharger Virtual Box : https://www.virtualbox.org/wiki/Downloads
- Télécharger l’iso de Windows 10 : https://www.microsoft.com/fr-fr/software-download/windows10 (téléchargement de l’outil de Microsoft puis sélectionner média d’installation)
- Télécharger le code sur le Git : https://github.com/Julie-Desaintleger/M1-USBWorm.git
- Ouvrir Virtualbox, cliquer sur "Nouvelle"

-
Choisir le système d’exploitation (ici Windows 10) et choisir un nom pour la machine virtuelle, lui allouer au moins 2Go, créer un disque dur virtuel, VDI, dynamiquement alloué d'une taille d'au minimum 15Go.
-
Démarrer la VM, choisir le fichier iso de Windows 10 préalablement fabriqué

- Choisir les paramètres que l’on veut, choisir le type d’installation personnalisé puis prendre le type de Windows que l’on veut (la version familiale par défaut)

- Suivre ensuite l’installation de Windows, il n’y a aucune subtilité.
Une fois la machine virtuelle mise en place, passons à la démonstration du programme proprement dite. Pour cela, il faut impérativement avoir Python 3.6, installer cx_freeze avec
pip3 install cx_freeze
et compiler à l'aide de la ligne:
py -3.6 setup.py build (dans une console bash)
ou
python.exe setup.py build (dans l'invité de commande de Windows)
- Pour pouvoir utiliser une clé USB sur VirtualBox il faut cliquer sur celle souhaitée dans Périphériques -> USB

- Pour exécuter le script, il faut tout d'abord placer le dossier "build" à la racine de la clé, faire une copie des fichiers "tk86t.dll", "tcl86t.dll" et "launch_all.vbs" à la racine de la clé. Il suffit ensuite de double cliquer sur le .vbs et nous obtiendrons donc ce résultat.

- Maintenant, pour vérifier que cela marche correctement, il suffit d’insérer une nouvelle clé et nous obtenons ce résultat.

Lorsque les tests sont terminés, il faut supprimer les clés de registres aux emplacements suivants:
- HKEY_CURRENT_USER\Software\Classes\ms-settings (le dossier en lui même ainsi que toute ses sous clés)
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\buzz (seulement la clé nommée buzz)

Liste des modules :
- Ports.py : cherche dans les registres Windows la liste des périphériques de stockage USB connectés ou non
- Intrusion.py : scrute en permanence les ports, lorsqu'il trouve une clé USB, copie le programme sur ladite clé
- CopyToPC.py : vérification préalable que le programme n’est pas déjà sur le PC. Si le programme n'est pas présent, il se copie dans le répertoire public
- Bypass.py : permet d’avoir les droits administrateurs pour pouvoir exécuter le module boot.py
- Boot.py : met launch_buzz.vbs dans la liste des programmes à exécuter au démarrage.
- Setup.py : fichier de configuration pour la compilation de chaque exécutable.
Un des bugs restants qui gênerait l’utilisation du programme dans un scénario réel est l’affichage de la console Windows à l’exécution pendant une durée de 1 à 2 secondes. Cet affichage est dû au module bypass.py qui appelle à l'ouverture d'une nouvelle console. Il faudrait également camoufler le programme en lui mettant une image de dossier et un nom trompeur.
Concernant les améliorations elles peuvent êtres multiples et sont en quelque sorte des évolutions du programme. Une petite amélioration serait la suppression des clés registre après les modifications par le module bypass.py.
Notre projet concerne uniquement Windows 10, une adaptation aux autres versions de Windows ainsi qu'aux autres OS peut en être une évolution. Une autre possibilité peut-être de se concentrer sur l’action même du ver : intégrer un keylogger ou élargir la propagation pas seulement de PC en clés mais aussi en réseau.
Comme le langage imposé est le python, il fait partie des prérequis nécessaire à la compréhension du code. Ainsi qu’une connaissance des scripts bat et vbs sera utile.
Le format vbs est un langage de script sur Windows qui nous permet de faire tous ces lancements et de lancer des processus Windows comme par exemple la console. En regardant notre schéma d’architecture vous pouvez voir qu’ils servent à lancer les exécutables (plusieurs en ce qui concerne launch_all). Même si cela peut rendre l’architecture un peu obscure c’est nécessaire au lancement du programme de façon dite « caché ».
Notre programme est basé sur une faille de Microsoft qui nous permet d’obtenir les droits administrateurs en modifiant les clefs registre. Comme une faille est « temporaire », il est possible qu’il faille chercher une nouvelle faille pour permettre au projet de fonctionner, on vous recommande ainsi de voir les failles exploitables (par exemple sur security focus).