Analyser les Indicateurs de Compromission
Quand l'utiliser
Utilisez cette compétence lorsque :
- Un e-mail de phishing ou une alerte génère des IOC (URL, adresses IP, hachages de fichiers) nécessitant un triage rapide.
- Des flux automatisés fournissent des IOC en vrac nécessitant une notation de la confiance avant ingestion dans les contrôles de blocage.
- Une enquête d'incident nécessite un enrichissement contextuel des artefacts réseau observés.
N'utilisez pas cette compétence isolément pour des décisions de blocage à haut risque — combinez toujours l'enrichissement automatisé avec le jugement de l'analyste, en particulier pour les infrastructures partagées (CDN, fournisseurs cloud).
Prérequis
- Clé API VirusTotal (gratuite ou Entreprise) pour la recherche multi-AV et sandbox.
- Clé API AbuseIPDB pour les vérifications de réputation IP.
- Instance MISP ou TIP pour le recoupement avec des campagnes connues.
- Python avec les bibliothèques
requestsetvt-py, ou plateforme SOAR avec connecteurs pré-construits.
Workflow
Étape 1 : Normaliser et classer les types d'IOC
Avant l'enrichissement, classez chaque IOC :
- Adresse IPv4/IPv6 : Vérifier si RFC 1918 privée (ignorer l'enrichissement externe), valider le format.
- Domaine/FQDN : Désactiver pour manipulation sécurisée (
evil[.]com), extraire le domaine enregistré via tldextract. - URL : Extraire le domaine et le chemin séparément ; vérifier les redirections.
- Hachage de fichier : Identifier le type de hachage (MD5/SHA-1/SHA-256) ; préférer SHA-256 pour l'unicité.
- Adresse e-mail : Diviser en domaine (vérifier MX/DMARC) et partie locale pour l'analyse de motif.
Désactivez les IOC dans la documentation (remplacer . par [.] et :// par [://]) pour éviter les clics accidentels.
Étape 2 : Enrichissement multi-sources
VirusTotal (hachage de fichier, URL, IP, domaine) :
import vt
client = vt.Client("VOTRE_CLE_API_VT")
# Recherche de hachage de fichier
file_obj = client.get_object(f"/files/{sha256_hash}")
detections = file_obj.last_analysis_stats
print(f"Malveillant : {detections['malicious']}/{sum(detections.values())}")
# Analyse de domaine
domain_obj = client.get_object(f"/domains/{domaine}")
print(domain_obj.last_analysis_stats)
print(domain_obj.reputation)
client.close()
AbuseIPDB (adresses IP) :
import requests
response = requests.get(
"https://api.abuseipdb.com/api/v2/check",
headers={"Key": "VOTRE_CLE", "Accept": "application/json"},
params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
)
data = response.json()["data"]
print(f"Confiance : {data['abuseConfidenceScore']}%, Signalements : {data['totalReports']}")
MalwareBazaar (hachages de fichiers) :
response = requests.post(
"https://mb-api.abuse.ch/api/v1/",
data={"query": "get_info", "hash": sha256_hash}
)
result = response.json()
if result["query_status"] == "ok":
print(result["data"][0]["tags"], result["data"][0]["signature"])
Étape 3 : Contextualiser avec l'attribution de campagne
Interroger MISP pour les événements existants correspondant à l'IOC :
from pymisp import PyMISP
misp = PyMISP("https://misp.example.com", "CLE_API")
results = misp.search(value="evil-domain.com", type_attribute="domaine")
for event in results:
print(event["Event"]["info"], event["Event"]["threat_level_id"])
Vérifier Shodan pour le contexte IP (fournisseur d'hébergement, ports ouverts, bannières) afin d'identifier si l'IP appartient à un hébergement pare-feu ou à un fournisseur cloud légitime (risque de faux positif).
Étape 4 : Attribuer un score de confiance et une disposition
Appliquer un cadre de décision à plusieurs niveaux :
- Bloquer (Haute confiance ≥ 70%) : ≥15 détections AV sur VT, score AbuseIPDB ≥70, correspond à une famille de malware ou campagne connue.
- Surveiller/Alerter (Moyenne 40–69%) : 5–14 détections AV, score AbuseIPDB modéré, pas d'attribution de campagne.
- Liste blanche/Enquêter (Faible <40%) : ≤4 détections AV, aucun signalement d'abus, service légitime (Google, IP CDN Cloudflare).
- Faux positif : Service légitime signalé par erreur ; documenter et exclure des alertes futures.
Étape 5 : Documenter et distribuer
Enregistrer les résultats dans TIP/MISP avec :
- Toutes les données d'enrichissement collectées (horodatages, source, score).
- Décision de disposition et justification.
- Actions de blocage prises (pare-feu, proxy, DNS sinkhole).
- Numéro de ticket d'incident associé.
Exporter vers un objet indicateur STIX avec le champ de confiance défini de manière appropriée.
Concepts clés
| Terme | Définition |
|---|---|
| IOC | Indicateur de Compromission — artefact réseau ou hôte observable indiquant une compromission potentielle |
| Enrichissement | Processus d'ajout de données contextuelles à un IOC brut provenant de multiples sources de renseignement |
| Désactivation | Modification des IOC (remplacement de . par [.]) pour éviter une activation accidentelle dans la documentation |
| Taux de faux positifs | Pourcentage d'artefacts bénins signalés par erreur comme malveillants ; critique pour le réglage des seuils de blocage |
| Sinkhole | Serveur DNS redirigeant les requêtes de domaine malveillant vers une IP bénigne pour détection sans bloquer totalement le trafic |
| TTL | Durée de vie d'un IOC dans les contrôles de blocage ; les indicateurs IP doivent expirer après 30 jours, les domaines après 90 jours |
Outils et systèmes
- VirusTotal : Scanner de malware multi-moteur et plateforme de renseignement sur les menaces avec plus de 70 moteurs AV, rapports sandbox et commentaires de la communauté.
- AbuseIPDB : Base de données de réputation IP maintenue par la communauté avec un historique de signalement sur 90 jours.
- MalwareBazaar (abuse.ch) : Référentiel gratuit de hachages de malware avec associations de règles YARA et étiquetage de famille de malware.
- URLScan.io : Service gratuit d'analyse d'URL qui capture des captures d'écran, le DOM et les requêtes réseau pour le triage d'URL de phishing.
- Shodan : Données de balayage à l'échelle d'Internet fournissant des informations sur le fournisseur d'hébergement, les ports ouverts et les bannières pour l'enrichissement IP.
Pièges courants
- Blocage d'infrastructure partagée : Les IP CDN (Cloudflare 104.21.x.x, AWS CloudFront) peuvent héberger légitimement du contenu malveillant, mais le blocage de l'IP perturbe des milliers de sites légitimes.
- Obsession du score VT : Un faible nombre de détections VT ne signifie pas bénin — les malwares zero-day et les outils APT personnalisés ont souvent un score de 0 initialement. Vérifiez le comportement sandbox, MISP et le DNS passif.
- Désactivation manquante : Coller des IOC en direct dans des e-mails ou des documents Confluence peut déclencher des scanners d'URL automatisés ou des outils de phishing.
- Absence de politique d'expiration : Les IOC sans TTL s'accumulent indéfiniment dans les listes de blocage, générant des faux positifs à mesure que l'infrastructure est réutilisée par des utilisateurs légitimes.
- Dépendance excessive à une source unique : VirusTotal agrège les opinions AV — toutes peuvent être erronées ou en retard sur les malwares émergents. Utilisez 3 sources indépendantes ou plus pour les décisions à haut risque.