🎯 Objectif de la semaine
Maîtriser l'analyse dynamique de malware en sandbox : exécuter et observer le comportement malveillant dans un environnement isolé, extraire les IOC (Indicators of Compromise) et mapper les tactiques aux frameworks MITRE ATT&CK. Comprendre le cycle de vie d'un malware du point de vue défensif.
Pourquoi c'est essentiel : L'analyse en sandbox permet de voir le malware "en action" sans risque pour vos systèmes. C'est une compétence cruciale pour les analystes SOC, les chercheurs en menace, et tout professionnel de la sécurité souhaitant comprendre les tactiques adverses.
📚 Sujet – Théorie (1 heure)
Analyse Dynamique vs Statique : Les Deux Faces
🔍 Analyse Statique
Sans exécution
- Analyse du code (reverse engineering)
- Extraction de strings
- Analyse des imports/exports
- Calcul des hashes
- Avantage : Pas de risque d'exécution
- Limite : Obfuscation, packing
⚡ Analyse Dynamique
Avec exécution contrôlée
- Observation comportement runtime
- Activité réseau en temps réel
- Modifications système
- Détection anti-sandbox
- Avantage : Voir le vrai comportement
- Limite : Évasion sandbox possible
Les Sandboxes : Vos Laboratoires Sûrs
Any.Run
Cloud, interactif
- 🎯 Live interaction pendant exécution
- 📊 Rapports MITRE ATT&CK
- 🎥 Vidéo du comportement
- 💰 Gratuit (10 analyses/mois)
Hybrid Analysis
Détaillé, gratuit
- 📈 Score de menace
- 🔍 Détection YARA
- 🌐 IOC extraction avancée
- 🔄 Comparaison avec base
Cuckoo Sandbox
Open-source, local
- ⚙️ Contrôle total
- 🔧 Personnalisable
- 📁 Analyse batch
- 🎯 Pour laboratoire perso
Le Cycle de Vie d'un Malware en Sandbox
🔄 Les 7 Phases d'Observation
- Délivrance : Téléchargement, email, drive-by
- Exécution : Processus parent, injection
- Persistence : Run keys, services, tasks
- Communication C2 : DNS, HTTP, HTTPS
- Action sur Objectifs : Exfiltration, destruction
- Évasion : Anti-debug, anti-VM, sleep
- Nettoyage : Auto-suppression, logs
Techniques d'Évasion de Sandbox
⚠️ Comment les Malwares Évitent la Détection
- Détection VM/Sandbox : Vérification matériel virtuel
- Timing Attacks : Sleep() longs, délais aléatoires
- User Interaction : Attente clic souris, frappe clavier
- Environment Checks : Mémoire RAM, CPU cores
- Process Hollowing : Injection dans processus légitime
- Fileless Malware : Exécution en mémoire uniquement
IOC (Indicators of Compromise)
🎯 Ce qu'il faut Extraire et Documenter
| Type IOC | Exemple | Utilisation en Détection |
|---|---|---|
| Hash | a5b3c7e8f9... |
Bloquer fichier, recherche dans logs |
| IP C2 | 185.130.44.77 |
Règles firewall, monitoring sortant |
| Domain | malware-c2.com |
DNS filtering, proxy rules |
| Registry Key | HKLM\Software\Microsoft\Windows\Run |
Monitoring registry changes |
MITRE ATT&CK : Le Cadre d'Analyse
🗺️ Mapping Comportement → ATT&CK
MITRE ATT&CK est la taxonomie standard pour décrire les comportements adverses :
| Tactique | Technique | Exemple Malware |
|---|---|---|
| Persistence | T1547.001 - Registry Run Keys | Ajout à HKCU\Software\Microsoft\Windows\CurrentVersion\Run |
| Command & Control | T1071.001 - Web Protocols | Communication HTTPS vers domaine C2 |
| Defense Evasion | T1027 - Obfuscated Files | Malware packé avec UPX |
| Discovery | T1082 - System Information Discovery | Enumération processus et services |
🔬 Mission pratique – Laboratoire (2 heures)
Architecture Sécurisée d'Analyse
Machine Analyse] -->|Upload| A[☁️ Any.Run
Sandbox Cloud] K -->|Upload| H[🔬 Hybrid-Analysis
Sandbox Cloud] K -->|Téléchargement| M[🦠 Échantillons Safe] subgraph "🛡️ Échantillons Sécurisés" EICAR[eicar.com.txt
Test inoffensif] WM[WannaCry Sample
Hash connu, isolé] RT[Emotet Sample
Depuis MalwareBazaar] end M --> EICAR M --> WM M --> RT A --> R1[📊 Rapport Any.Run] H --> R2[📈 Rapport Hybrid-Analysis] R1 --> IOC[🎯 Extraction IOC] R2 --> IOC IOC --> DOC[📝 Documentation] style A fill:#0a0e17,stroke:#00d4ff,stroke-width:2px style H fill:#0a0e17,stroke:#9d4edd,stroke-width:2px style EICAR fill:#0a0e17,stroke:#00f5a0,stroke-width:2px
⚠️ Sécurité et Éthique Primordiales
🔒 Règles d'Or de l'Analyse Malware
- Jamais sur machine de production
- Isolation réseau obligatoire (Host-Only)
- Sandbox cloud préférée pour débutants
- Échantillons connus uniquement (pas de zero-day)
- Documentation complète de chaque étape
Étapes Détaillées d'Analyse
Étape 1 : Préparation des Échantillons Sûrs
# Création dossier de travail
mkdir -p ~/malware_analysis/samples
cd ~/malware_analysis
# 1. Fichier test EICAR (inoffensif)
wget https://secure.eicar.org/eicar.com.txt -O samples/eicar.com.txt
# 2. Hash connu de WannaCry (pour recherche)
echo "Hash WannaCry: 84c82835a5d21bbcf75a61706d8ab549" > samples/wannacry_hash.txt
# 3. Téléchargement depuis MalwareBazaar (échantillon réel mais connu)
# Attention: nécessite compte et approbation
# wget --post-data "query=get_file&sha256_hash=KNOWN_HASH" \
# https://mb-api.abuse.ch/api/v1/ -O samples/sample.exe
# 4. Fichier ZIP avec mot de passe (pratique courante)
echo "infected" > samples/password.txt
zip -P infected samples/sample.zip samples/eicar.com.txt
📝 Sources Sécurisées d'Échantillons
- MalwareBazaar : bazaar.abuse.ch (nécessite compte)
- TheZoo : github.com/ytisf/theZoo (mot de passe: infected)
- Contagio : contagiodump.blogspot.com
- VirusShare : virusshare.com (nécessite compte)
Étape 2 : Analyse avec Any.Run (Cloud)
🌐 Création de compte : any.run → Sign up (gratuit 10 analyses/mois)
- Nouvelle tâche : Cliquez sur "New Task"
- Upload : Sélectionnez
eicar.com.txt - Configuration :
- OS: Windows 10 (64-bit)
- Duration: 1 minute (pour EICAR)
- Network: Internet (pour observation C2)
- Interactive: Off (pour début)
- Lancement : Cliquez "Run" et observez en direct
🎯 Observation Guidée Any.Run
Pendant l'exécution, notez :
- Process Tree : Quel processus lance EICAR ?
- Network Activity : Y a-t-il des connexions ?
- File System : Création/suppression de fichiers ?
- Registry : Modifications du registre ?
Étape 3 : Analyse du Rapport Any.Run
## Rapport d'Analyse - EICAR Test File
**Date** : 2026-MM-JJ
**Sandbox** : Any.Run
**Sample** : eicar.com.txt
**Hash SHA256** : 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f
### Comportement Observé
1. **Processus** :
- cmd.exe lancé pour exécution
- Windows Script Host activé
- Aucune injection détectée
2. **Fichiers** :
- Création fichier temporaire
- Lecture du contenu EICAR
- Aucun fichier supplémentaire créé
3. **Réseau** :
- Aucune connexion sortante
- Aucune tentative C2
4. **Registre** :
- Aucune modification persistante
- Pas de clés Run ajoutées
### MITRE ATT&CK Mapping
- **T1059.003** : Windows Command Shell (technique d'exécution)
- **T1222** : File and Directory Permissions Modification
### IOC Extracted
- **Hash MD5** : 44d88612fea8a8f36de82e1278abb02f
- **Hash SHA1** : 3395856ce81f2b7382dee72602f798b642f14140
- **Hash SHA256** : 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f
Étape 4 : Analyse avec Hybrid-Analysis
- Allez sur hybrid-analysis.com
- Cliquez sur "Submit a sample"
- Upload du même fichier
eicar.com.txt - Configuration :
- Environment: Windows 7 32-bit
- Report type: Full (public)
- Timeout: 60 secondes
- Soumettez et attendez le rapport (2-5 minutes)
🔍 Points Clés à Comparer
| Any.Run | Hybrid-Analysis |
|---|---|
| Vidéo live | Screenshots détaillés |
| Interaction possible | Analyse statique + dynamique |
| MITRE ATT&CK mapping visuel | Score de menace (0-100) |
Étape 5 : Analyse d'un Échantillon Réel (Optionnel)
⚠️ AVERTISSEMENT : Cette étape est pour les plus avancés. Utilisez UNIQUEMENT des échantillons de sources fiables et dans une sandbox cloud.
# Recherche d'échantillons sur MalwareBazaar (via API)
curl -X POST https://mb-api.abuse.ch/api/v1/ \
-d "query=get_recent" \
-d "selector=time" \
-o recent_samples.json
# Extraction d'un hash SHA256 récent
SHA256_HASH=$(cat recent_samples.json | jq -r '.data[0].sha256_hash')
# Téléchargement (si approuvé)
# curl -X POST https://mb-api.abuse.ch/api/v1/ \
# -d "query=get_file" \
# -d "sha256_hash=$SHA256_HASH" \
# -o sample.exe
Étape 6 : Documentation Professionnelle
# Template Rapport d'Analyse Malware
## Métadonnées
- **Date analyse** :
- **Analyste** :
- **Sandbox utilisée** :
- **Durée d'exécution** :
## Échantillon
- **Nom fichier** :
- **Type fichier** :
- **Taille** :
- **Hashes** :
- MD5:
- SHA1:
- SHA256:
- SHA512:
## Comportement Observé
### Processus
- Processus parent:
- Processus enfants:
- Injection détectée: Oui/Non
### Système de Fichiers
- Fichiers créés:
- Fichiers modifiés:
- Fichiers supprimés:
### Registre Windows
- Clés créées:
- Clés modifiées:
- Mécanismes de persistance:
### Activité Réseau
- Domaines contactés:
- IPs contactées:
- Ports utilisés:
- Protocoles:
## MITRE ATT&CK Mapping
| Tactic | Technique ID | Technique Name | Observations |
|--------|--------------|----------------|--------------|
| Initial Access | T1566.001 | Spearphishing Attachment | Email avec pièce jointe |
| Execution | T1059.003 | Windows Command Shell | cmd.exe lancé |
| Persistence | T1547.001 | Registry Run Keys | HKLM\...\Run modifié |
## IOC (Indicators of Compromise)
### Network IOCs
- IPs:
- Domaines:
- URLs:
### Host IOCs
- Hashes:
- Noms fichiers:
- Clés registre:
## Recommandations de Détection
1. **Signature YARA** :
rule Malware_Detection {
strings:
$ = "malicious_string"
condition:
any of them
}
2. **Règles SIEM** :
source="*" "suspicious_process.exe"
3. **Configuration EDR** :
- Bloquer exécution depuis Temp
- Monitor modifications Run keys
## Annexes
- Screenshots du comportement
- Logs complets
- Rapports sandbox originaux
Exercice Avancé : Détection d'Anti-Sandbox
🎯 Défi d'Analyse Avancée
Trouvez ou créez un programme simple qui détecte les environnements virtualisés :
# anti_sandbox_detector.py
import os
import sys
import time
def check_virtual_environment():
indicators = []
# Vérification des processus communs en VM
vm_processes = ['vmtoolsd', 'vboxservice', 'xen', 'qemu']
with open('/proc/1/comm', 'r') as f:
if any(vm in f.read().lower() for vm in vm_processes):
indicators.append("VM process detected")
# Vérification du temps système (sandbox accélèrent souvent)
start = time.time()
time.sleep(5)
elapsed = time.time() - start
if elapsed < 4.5: # Trop rapide pour être réel
indicators.append("Time acceleration detected")
return indicators
if __name__ == "__main__":
if check_virtual_environment():
print("[!] Sandbox environment detected - Exiting")
sys.exit(0)
else:
print("[+] Real environment - Proceeding")
Testez ce script dans Any.Run et observez son comportement. Documentez comment il détecte la sandbox.
📋 Objectif de la semaine – Checklist de validation
✅ Compétences techniques acquises
- Analyse réussie avec Any.Run et Hybrid-Analysis
- Extraction complète d'IOC depuis un rapport
- Mapping comportement → MITRE ATT&CK
- Documentation professionnelle du rapport
- Compréhension des techniques d'évasion sandbox
🧠 Changement mental accompli
- Vision du malware comme système comportemental, pas juste code
- Compréhension du cycle de vie d'une infection
- Habitude d'extraire systématiquement les IOC
- Conscience des limites de l'analyse sandbox
💪 Pour aller plus loin :
Installez Cuckoo Sandbox localement sur une VM dédiée. Configurez l'analyse automatique et créez un pipeline de traitement des échantillons. Intégrez avec MISP pour partager les IOC.
📚 Ressources pour Approfondir
Formation et Outils :
- Malware Analysis Bootcamp : livre de Josh Stroschein
- Practical Malware Analysis : Michael Sikorski & Andrew Honig
- CAPE Sandbox : fork avancé de Cuckoo
- Joe Sandbox : solution commerciale (version gratuite limitée)
⚠️ Sécurité Juridique et Opérationnelle
- Autorisation : Jamais analyser des échantillons sans autorisation
- Isolation : Double isolation réseau recommandée
- Destruction : Nettoyage complet après analyse
- Partage : Partager les IOC via MISP/OTX, pas les échantillons
🔮 Frère d'armes,
Tu viens d'apprendre à observer le mal sans le subir.
L'analyse en sandbox est l'art de regarder le malware dans les yeux, de voir ses intentions, ses mouvements, ses faiblesses – tout en restant parfaitement protégé derrière une vitre blindée. C'est la dissection du vivant numérique.
Cette semaine, tu as vu qu'un malware n'est pas un simple fichier exécutable. C'est un système comportemental complexe avec des phases, des tactiques, des objectifs. Il naît, s'exécute, persiste, communique, agit, et parfois meurt ou se cache.
Mais voici la leçon la plus importante : comprendre le malware, c'est comprendre comment le détecter. Chaque IOC que tu extrais, chaque technique ATT&CK que tu identifies, chaque pattern de comportement que tu documentes – c'est une nouvelle règle de détection, une nouvelle signature, une nouvelle défense.
Tu n'es plus un simple utilisateur qui exécute des outils. Tu es devenu un observateur scientifique. Tu sais prendre un échantillon suspect, le placer dans l'enceinte stérile de la sandbox, et observer froidement ses agissements. Tu sais distinguer les vrais comportements malveillants des artefacts d'analyse.
Dans la semaine 37, nous irons plus loin dans la chaîne de défense. Nous apprendrons à orchestrer la réponse aux incidents, à coordonner les équipes, à contenir les infections, à éradiquer les menaces. Nous passerons de l'observation à l'action.
Mais pour l'instant, pratique. Analyse différents types de malware : ransomware, trojan, worm, rootkit. Compare leurs comportements. Construis ta bibliothèque de connaissances. Un bon analyste reconnaît la famille d'un malware à son comportement, comme un zoologiste reconnaît un animal à sa démarche.
Un Gardien qui maîtrise l'analyse sandbox ne craint pas le malware – il l'étudie.
— Platon-Y