TP - Analyse statique et dynamique
Flare (sous Windows) et REMnux (sous Linux) sont des VMs très utilisées en cybersécurité pour l’analyse de logiciels malveillants. Faute de temps, nous allons tout simplement créer une VM Windows 10 à partir de cet ISO par exemple et installer ces quelques outils d’analyse nécessaires pour ce TP.
Pour les utilisateurs de VirtualBox, vous pouvez télécharger cette VM au format OVA déjà prête, mais il faut compter le temps de téléchargement et de décompression qui ne sont pas négligeables.
Une fois la VM installée, veuillez désactiver les protections Windows (protection antivirus, Windows Defender, pare-feu, etc.), puis mettez la VM en pause et créez un snapshot.
TP 1 - Analyse Statique de Malware
PART 1
Les fichiers à analyser peuvent être téléchargés ici
À la fin de ce TP, vous serez capable de :
- Générer et comparer différents types de hachages.
- Utiliser VirusTotal pour l’identification.
- Comprendre et appliquer le fuzzy hashing.
- Identifier le vrai type d’un fichier.
- Extraire et analyser des chaînes de caractères.
Exercice 1 : Hashing et identification simple
Objectif
Comprendre la génération d’empreintes cryptographiques.
Étapes
Téléchargez
md5-1.exeetmd5-2.exe.Calculez leur MD5 :
Get-FileHash .\md5-1.exe -Algorithm MD5 Get-FileHash .\md5-2.exe -Algorithm MD5Constatez qu’ils ont le même MD5.
Générez un SHA256 :
Get-ChildItem *.exe | Get-FileHash -Algorithm SHA256
Questions
- Les fichiers sont-ils identiques ?
- Pourquoi MD5 n’est-il plus fiable ?
- Pourquoi SHA256 est-il recommandé ?
Exercice 2 : Vérifier la présence d’un malware sur VirusTotal
Objectif
Éviter de réanalyser un malware déjà connu.
Étapes
- Obtenir le SHA256 du fichier
8888888.png. - Rechercher ce hash sur VirusTotal.
Questions
- VirusTotal retourne-t-il des résultats ?
- Que signifie l’absence d’identification ?
- Pourquoi le hashbusting est-il utilisé ?
Exercice 3 : Fuzzy Hashing (ssdeep)
Objectif
Comparer des fichiers même s’ils ne sont pas strictement identiques.
Étapes
Placer
ssdeep.exeavec8888888.png.Générez un fuzzy hash :
.\ssdeep.exe .\8888888.png
Questions
- À quoi sert le fuzzy hashing ?
- Pourquoi contourne-t-il le hashbusting ?
Exercice 4 : Identifier le vrai type d’un fichier
Étapes
Utilisez
filetype.exe:.\filetype.exe -i .\8888888.png
Exercice 5 : Extraction et analyse de chaînes de caractères
Étapes
Extraire les chaînes de caractères :
strings.exe -n 5 .\8888888.png > strings_output.txtRechercher :
- APIs réseau
- APIs d’injection
- URLs, chemins, éléments suspects
Analyse
Identifier :
comportements internes,
chaînes codées,
exécutable légitime utilisé comme base.
PART 2
En cas d’incident, on se demande naturellement :
- Quels fichiers (locaux ou non) ont été accédés, créés, supprimés ?
- Y a-t-il eu des communications réseau, et si oui, lesquelles (internes, externes, multiples, ponctuelles, permanentes, etc.) ?
- En cas de communications réseau, quels sont leurs buts / contenus (spamming, (D)DoS, exfiltration de données, etc.) et leurs destinations ?
- Est-ce une attaque ciblée ou opportuniste ?
- Est-ce une attaque persistante ou non ?
- Quel est le périmètre de compromission ?
Lorsque votre antivirus détecte un code malveillant, il ne suffit pas de le supprimer ou de le mettre en quarantaine, qui plus est dans un environnement d’entreprise. Il faut essayer de répondre aux questions non exhaustives citées plus haut.
L’objectif de ce TP est de se familiariser avec les outils d’analyse statique d’un code malveillant. Ces outils permettent d’analyser la structure sur disque du malware, à savoir les fichiers au format PE et ELF, afin d’en extraire des informations comme les valeurs des variables initialisées, les DLLs importées et les fonctions associées, les fonctions exportées, le nombre de sections, les noms des sections, le type du fichier (DLL, EXE, etc.), la date de compilation, l’adresse relative du point d’entrée (main, DLLMain, DriverEntry, etc.), l’adresse préférée de chargement du fichier en mémoire et de ses différentes sections, le contenu de la section .rsrc, etc.
L’équipe SOC vous a alerté d’un incident de sécurité remonté par un de leurs IDS. L’alerte consiste en des tentatives de connexions suspectes vers cette adresse IP 127.26.152.13. Après une première phase de collecte de preuves, il a été découvert sur la machine en question deux fichiers suspects tp1/lab01-01.exe et tp1\lab01-01.dll. Faites une première analyse des fichiers.
L’analyse d’un malware comprend d’abord une analyse statique (hachage, recherche OSINT, chaînes de caractères, structure PE). Ensuite, une analyse dynamique est effectuée (surveillance des processus, du réseau, du registre et des systèmes de fichiers), souvent avec des outils d’analyse automatisés. Enfin, une désobfuscation des scripts peut être nécessaire pour comprendre le malware.
Exercice 1 (cf. Analyse statique)

Dans la VM Linux AVL
- Importez le LAB virtuel AVL-LAB.ova
- Pour configurer l’interface réseau (
sudo ifup enpXsX) - Décompressez avec
unziple fichier~/malware_samples/fichiers_cours_malwares.zip - Mettez à jour la VM :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/securitylab-repository/scripts/refs/heads/main/install_mfa)" -s user_nameTaches d’analyse communes aux deux fichiers (lab01-01.exe et lab01-01.dll)
Tester les hashs dans
VirusTotalou un équivalent.À l’aide de la commande
radare2 -A fichier_à_analyser, analysez les deux fichiers (cf. https://book.rada.re/install/docker.html) :- Quelle est la date/heure de compilation de chaque fichier ? Donnez votre conclusion (
iI | grep --color=auto compiled) - Relevez les APIs utilisées (
iiou bienfs imports ; f) - Quelle est la taille de chaque section sur disque et en mémoire, les noms des sections, leur nombre et leur contenu (
iS) ? - Le fichier est-il compressé “packed” ?
- Quelle est la date/heure de compilation de chaque fichier ? Donnez votre conclusion (
Analyse du fichier lab01-01.exe
- Identifiez les IoCs obtenus en analysant les fonctions importées de la DLL
kernel32.dll(ii~KERNEL32) et les chaînes de caractères retrouvées par la commandestringsou la commandeizzde radare2.
Analyse du fichier lab01-01.dll
- À l’aide de radare2, analysez le fichier
lab01-01.dllen suivant les mêmes étapes et en utilisant les mêmes outils que précédemment. - Identifiez les IoCs obtenus.
On peut déterminer si un fichier est “packed” en utilisant l’utilitaire PEiD. Il se trouve dans la VM XP du LAB. Dans le cas où le fichier est packé, vous pouvez utiliser upx pour décompresser le fichier :
$ upx -o unpacked.exe -d packed.exeQue pouvez-vous dire sur le comportement du fichier en analysant les fonctions importées et les chaînes de caractères retrouvées ?
Exercice 2 (cf. Analyse statique)
- Le fichier concerné est
~/malware_samples/fichiers_cours_malwares/tp1/lab01-02.exe. - Le fichier est-il packé ?
- Refaites les mêmes étapes que lors de l’exercice 1.> Que pouvez-vous dire sur le comportement du fichier en analysant les fonctions importées et les chaînes de caractères retrouvées ?
Exercice 3 (cf. Analyse dynamique)
Créer un snapshot avant toute modification sur la VM Windows.
Le fichier concerné par l’analyse est
Lab02-01.exePour configurer l’interface réseau (
sudo ifup enpXsX)Décompresser avec
unziple fichier~/malware_samples/fichiers_cours_malwares.zip.Lancer la VM XP à partir de ce snapshot :
- Lancez
ProcessExplorer - Lancez
Procmonavec les filtres suivants :Process NameOperationRegSetValueWriteFile
- Lancez

- Réaliser une première capture de la base de registre à l’aide de
Regshot. - Lancer dans la VM Linux
INetSim(c’est un simulateur de services) :
sudo systemctl stop systemd-resolved
sudo inetsim --data /home/debian/.inetsim_data/data/inetsim --conf /home/debian/.inetsim_data/inetsim.conf- Vous pouvez également lancer
tcpdump -n -i interface_réseau(ou installerwireshark) pour capturer et analyser le trafic entre la VM XP et la VM Linux. - Lancer maintenant le programme à analyser dans la VM XP :
Analyser les caractéristiques du processus avec
ProcessExplorer, notamment :
- Les handles ouverts par le processus (
View --> Lower Pane View --> Handles)- Les DLLs qui sont chargées dynamiquement par le processus (
View --> Lower Pane View --> DLLs)
Analyser le résultat de Procmon :
- Y a-t-il des fichiers créés par le programme ? Relevez leurs noms et comparez leurs caractéristiques avec ceux du programme analysé.
- Y a-t-il des clés ou des valeurs de registre modifiées ? Si oui, dans quel but le programme fait-il cela ? Confirmez ces résultats avec
RegShot.
Analyser le résultat des logs de
INetSimou les tramesWireshark:
- Le programme a-t-il une activité réseau ? Si oui, laquelle ?
- Récupérez les données envoyées ou reçues par le programme (vous pouvez utiliser
wiresharksi vous l’avez installé ounetcat:sudo nc -l -p port_ecoute).
Identifiez les IoCs obtenus.