Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Windows PE Malware Static Analyzer 🦠🔍

Un outil d'analyse statique automatisé, portable et conçu pour les environnements de production (SOC / Blue Team). Ce script Python permet de disséquer des exécutables Windows (PE : EXE, DLL, SYS) sans les exécuter, et de générer un rapport JSON complet prêt à être ingéré par d'autres outils.

⚙️ Ce que fait l'outil (Fonctionnement)

Le script orchestre plusieurs moteurs d'analyse pour extraire un maximum d'informations d'un binaire potentiellement malveillant :

  1. Extraction de Métadonnées & IOCs (Moteur Interne) :

    • Calcule les empreintes cryptographiques (MD5, SHA256) et l'entropie globale (détection de packing).
    • Extrait et décode les chaînes de caractères (ASCII, UTF-16, et Base64).
    • Identifie via des expressions régulières les Indicateurs de Compromission (Adresses IPv4, URLs, Domaines, clés de registre, chemins Windows suspects, commandes PowerShell).
  2. Parsing Structurel (LIEF) :

    • Analyse l'en-tête PE pour vérifier l'architecture, le point d'entrée, et l'ImpHash.
    • Vérifie la présence des protections de sécurité compilées (ASLR, DEP/NX, CFG, SEH).
    • Scanne les sections (taille, entropie) et les imports de DLL/API.
    • Mapping Comportemental : Croise les API importées avec des capacités malveillantes connues (Injection de processus, Évasion d'anti-débogage, Persistance, Keylogging, Crypto/Ransomware).
  3. Ingénierie Inverse & Décompilation (Radare2/Rizin + Ghidra) :

    • Désassemble le binaire en profondeur.
    • Identifie les références croisées (XREFS) vers des appels d'API suspects.
    • Décompile le code assembleur du point d'entrée en pseudo-code C lisible en utilisant le moteur de Ghidra.

🛠️ Prérequis & Installation (Guide Pas-à-Pas)

Sur les distributions Linux modernes, les sécurités systèmes (PEP 668) empêchent l'installation globale de paquets Python. Il est impératif de suivre ces étapes avec votre utilisateur standard (Ne pas utiliser root ou sudo pour l'installation de l'environnement Python ou des plugins).

Étape 1 : Installer Python et Git

Assurez-vous d'avoir Python 3, le module d'environnement virtuel, et git installés sur votre système (exemple pour les bases Debian/Ubuntu) :

sudo apt update sudo apt install python3 python3-venv git

Étape 2 : Installer Radare2 (depuis les sources)

Les versions de Radare2 dans les dépôts Linux sont souvent obsolètes. Il est fortement recommandé de l'installer depuis le dépôt officiel pour éviter les bugs lors de la décompilation :

Cloner le dépôt officiel

git clone https://github.com/radareorg/radare2

Lancer le script d'installation automatique

radare2/sys/install.sh

Étape 3 : Configurer le décompilateur Ghidra (via r2pm)

Le script utilise le plugin r2ghidra pour traduire l'assembleur en code C. ⚠️ Attention : Exécutez ces commandes avec votre utilisateur normal, absolument pas en root, pour éviter les problèmes de permissions.

1. Initialiser et mettre à jour la base de données locale des paquets radare2

r2pm -U

2. Installer le plugin r2ghidra (cette étape télécharge et compile le code, cela peut prendre quelques minutes)

r2pm -ci r2ghidra

Étape 4 : Créer l'environnement virtuel Python (venv)

Pour isoler les dépendances de l'outil et ne pas casser votre système, créez un environnement virtuel dans le dossier du projet :

1. Placez-vous dans le dossier de l'outil

cd /chemin/vers/le/dossier/du/projet

2. Créez l'environnement virtuel nommé 'env'

python3 -m venv env

3. Activez l'environnement virtuel (N'utilisez PAS de slash avant "env")

source env/bin/activate

Étape 5 : Installer les dépendances Python

Une fois l'environnement virtuel activé, installez les librairies requises (lief, r2pipe, etc.) :

pip install -r requirements.txt

Utilisation :

Règle d'or : L'environnement virtuel doit toujours être activé avant de lancer l'analyseur. Si vous ouvrez un nouveau terminal, retapez source env/bin/activate dans le dossier du projet.

Pour lancer une analyse statique, passez simplement le chemin du malware en argument :

Syntaxe

python3 win_malware_analyzer.py <chemin_vers_le_binaire>

Exemple

python3 win_malware_analyzer.py la_meuh.exe

Releases

Packages

Contributors

Languages