L'objectif de ce projet est de comprendre le fonctionnement de base d'un virus informatique dans un environnement Windows et les méthodes simples pour les éliminer.
Dans le cadre de ce projet, j'ai créé un programme qui élimine le logiciel malveillant, supprime son exécution au démarrage de la machine, l'arrête et le supprime de la machine virtuelle, puis affiche l'adresse IP de l'attaquant.
- Windows based machine
- Access to admin privileges
- Python
- psutil (
pip install psutil)
- psutil (
Rechercher le hachage du fichier :
Get-FileHash C:\Path\To\Your\file.exeCopier le hachage du fichier
Exécuter PowerShell en tant qu'administrateur
PS C:\> python.exe C:\path\to\mal-track.py -h
usage: mal-track.py [-h] [--hash HASH] [--dir DIR] [--hash-type HASH_TYPE]
Find and remove malware from the system
options:
-h, --help show this help message and exit
--hash HASH hash of the file
--dir DIR Root directory to start scanning from
--hash-type HASH_TYPE
Hash type-
Les programmes de démarrage dans Windows sont des applications et des services configurés pour se lancer automatiquement au démarrage du système d'exploitation.
Comment les gérer :
- Gestionnaire des tâches - Onglet Démarrage
- Emplacement : accessible via le Gestionnaire des tâches (Ctrl + Maj + Échap), sous l'onglet « Démarrage ».
- Détails : cet onglet répertorie les programmes qui ont été enregistrés pour démarrer au lancement du système. Ces programmes ont généralement des entrées de registre ou des raccourcis dans des dossiers système spécifiques.
- Dossier Démarrage
- Pour les utilisateurs individuels : \Users<YourUsername>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- Pour tous les utilisateurs : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
-
Registre Windows
- Pour l'utilisateur actuel : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- Pour tous les utilisateurs : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
-
Tâches planifiées
-
Accessible via le Planificateur de tâches (taskschd.msc).
-
Le programme recherche les adresses IP d'attaquants potentiels à partir d'un fichier exécutable en effectuant une analyse statique du binaire. Il lit d'abord l'intégralité du contenu du fichier exécutable sous forme de données binaires brutes. Il extrait ensuite toutes les séquences de caractères ASCII imprimables (chaînes) à l'aide d'une expression régulière qui correspond à ces séquences dans le fichier binaire. Une fois les chaînes extraites, la fonction les analyse à l'aide d'une autre expression régulière spécialement conçue pour identifier les adresses IPv4, qui sont généralement formatées sous la forme de quatre séries de chiffres séparés par des points (par exemple, 192.168.0.1).
-
Le script commence par configurer la journalisation. Il crée un répertoire nommé « logs » dans le même répertoire que le script, et les journaux sont enregistrés avec un nom de fichier qui inclut l'horodatage actuel. La configuration de la journalisation spécifie que les journaux doivent être écrits dans un fichier, avec un format qui inclut l'horodatage, le niveau de journalisation et le message.
La fonction
mainutilise argparse pour définir et analyser les arguments de la ligne de commande. Elle attend un hachage (--hash), un répertoire racine à partir duquel commencer l'analyse (--dir) et un type de hachage (--hash-type). Si le hachage est fourni et valide, et que le script est exécuté avec des privilèges administratifs, elle appelle la fonctionantimalwarepour lancer le processus d'analyse.La fonction
antimalwareanalyse le système de fichiers à partir du répertoire racine spécifié. Pour chaque fichier, elle calcule le hachage du fichier et le compare au hachage cible. Si une correspondance est trouvée, elle enregistre la correspondance, tue le processus associé, trouve l'adresse IP de l'attaquant dans le fichier, supprime le fichier du démarrage et supprime le fichier.La fonction
calculate_file_hashlit un fichier par morceaux et calcule son hachage en utilisant le type de hachage spécifié.La fonction
remove_from_startupsupprime un chemin d'accès à un fichier des clés Run et RunOnce du registre Windows, garantissant ainsi que le logiciel malveillant ne s'exécute pas au démarrage.La fonction
find_iprecherche les adresses IP dans un fichier en extrayant les chaînes imprimables et en utilisant une expression régulière pour trouver les modèles IP.La fonction
extract_stringsextrait les chaînes imprimables d'un fichier binaire.La fonction
kill_processitère sur tous les processus en cours d'exécution, calcule le hachage de l'exécutable de chaque processus et termine les processus dont le hachage de l'exécutable correspond au hachage cible. La fonction `delete_filetente de supprimer un fichier et enregistre le résultat.