Chapitre 1.2 - Renseignement sur les menaces et taxonomie des attaques
Module 1 : Fondamentaux et paysage des menaces Niveau : Intermediaire a Avance | Temps de lecture estime : 50-65 min
Table des matieres
- Qu'est-ce que le renseignement sur les menaces ?
- Taxonomie des acteurs de menaces
- Frameworks d'attaque - MITRE ATT&CK, Kill Chain, Modele Diamant
- Indicateurs de compromission (IoC) et indicateurs d'attaque (IoA)
- Plateformes de renseignement sur les menaces et sources OSINT
- Operationnalisation du renseignement - Workflows pratiques
- Diagramme d'architecture
1. Qu'est-ce que le renseignement sur les menaces ?
Le renseignement sur les menaces (RM) est une connaissance basee sur des preuves concernant les menaces existantes ou emergentes - incluant le contexte, les mecanismes, les indicateurs, les implications et les conseils exploitables - qui peut etre utilisee pour prendre des decisions eclairees sur la reponse a ces menaces.
Le mot cle est exploitable. Les donnees brutes (une liste d'IPs) ne sont pas du renseignement. Le renseignement repond aux questions : Qui attaque ? Que cherche-t-il ? Comment opere-t-il ? A quoi ressemble la detection ?
La pyramide du renseignement
┌─────────────────┐
│ Strategique │ <- Qui, Pourquoi - pour les dirigeants, la politique
│ Intelligence │ (activite etatique, risque geopolitique)
└────────┬────────┘
│
┌────────┴────────┐
│ Operationnel │ <- Campagnes, TTPs - pour les responsables securite
│ Intelligence │ (campagnes actives d'acteurs de menaces)
└────────┬────────┘
│
┌────────┴────────┐
│ Tactique │ <- TTPs, familles de malware - pour les analystes
│ Intelligence │ (comment l'attaquant opere)
└────────┬────────┘
│
┌────────┴────────┐
│ Technique │ <- IoCs - pour les outils de securite
│ Intelligence │ (IPs, hachages, domaines, regles YARA)
└─────────────────┘
| Niveau | Consommateurs | Duree de vie | Exemples |
|---|---|---|---|
| Strategique | RSSI, Direction, Juridique | Mois-Annees | Evaluation des menaces etatiques, tendances de ciblage sectoriel |
| Operationnel | Responsable SOC, Responsable RI | Semaines-Mois | "APT29 cible activement le secteur energetique avec du harponnage" |
| Tactique | Chasseurs de menaces, Analystes | Jours-Semaines | TTPs de malwares specifiques, patterns d'infrastructure C2 |
| Technique | SIEM, Pare-feu, EDR | Heures-Jours | Listes de blocage d'IPs, hachages de fichiers, regles YARA, signatures Snort |
Le cycle de vie du renseignement
1. Planification et direction
└── Quelles questions necessitent des reponses ? Quelles sont les exigences prioritaires en matiere de renseignement (PIR) ?
2. Collecte
└── OSINT, HUMINT, flux techniques, honeypots, surveillance du dark web
3. Traitement
└── Normaliser, dedoublonner, enrichir, correlater (ex. IP -> ASN -> acteur de menace)
4. Analyse
└── Appliquer des frameworks analytiques (ATT&CK, Modele Diamant) pour produire des evaluations
5. Diffusion
└── Pousser vers le SIEM, partager via STIX/TAXII, briefer les parties prenantes
6. Retour d'information
└── Les consommateurs signalent l'utilite - affine la collecte future
2. Taxonomie des acteurs de menaces
Comprendre qui vous attaque est le fondement d'une defense informee par les menaces. Differents acteurs ont des motivations, des capacites et des niveaux de persistance differents - et necessitent des reponses defensives differentes.
2.1 Categories d'acteurs
| Categorie | Motivation | Capacite | Persistance | Exemples de groupes |
|---|---|---|---|---|
| Etat-nation (APT) | Espionnage, sabotage, politique | Tres elevee | Tres elevee (mois-annees) | APT29 (Cozy Bear), APT41, Lazarus Group |
| Cybercriminel | Gain financier | Elevee | Moyenne (jusqu'au paiement) | FIN7, Evil Corp, Conti |
| Hacktiviste | Ideologie, protestation | Faible-Moyenne | Faible-Moyenne | Anonymous, KillNet |
| Menace interne | Vengeance, financier, coercition | Variable | Elevee (acces legitime) | Employes mecontents, taupes |
| Script Kiddie | Renommee, curiosite | Faible | Faible | Attaquants opportunistes |
| Mercenaire cyber | Capacite a louer | Elevee | Variable | NSO Group, Hacking Team |
2.2 Analyse approfondie des APT (Advanced Persistent Threat)
APT est une categorie, pas un seul groupe. Le terme decrit un acteur de menace qui :
- Dispose de capacites sophistiquees et ciblees (pas opportunistes)
- Maintient une persistance a long terme dans un reseau compromis
- Poursuit des objectifs specifiques et de haute valeur (vol de propriete intellectuelle, perturbation d'infrastructure critique)
- Utilise des outils personnalises aux cotes d'outils standards pour se fondre
Cycle de vie APT (intrusion etatique typique) :
Phase 1 : Acces initial
Harponnage, compromission de la chaine d'approvisionnement, exploitation 0-day
Exemple : SolarWinds - pipeline de build trojanise
Phase 2 : Etablissement d'une tete de pont
Porte derobee legere / implant deploye
Communication via C2 chiffre sur des protocoles legitimes (HTTPS, DNS)
Phase 3 : Escalade de privileges
Kerberoasting, pass-the-hash, usurpation de jetons, escalade de privileges locaux
Phase 4 : Reconnaissance interne
Enumeration AD BloodHound, scan reseau, collecte d'identifiants
Phase 5 : Mouvement lateral
Execution WMI, PsExec, pivotage RDP, partages SMB
Phase 6 : Persistence et maintien de l'acces
Plusieurs portes derobees redondantes, binaires vivant hors du pays (LOLBins)
Phase 7 : Exfiltration / Effet
Donnees preparees, compressees, chiffrees, exfiltrees via C2
Ou : payload destructeur (wipeur), rancongiciel, perturbation OT
2.3 Profilage d'acteurs de menaces : attributs cles
Lors de la construction d'un profil de menace, capturer ces attributs :
| Attribut | Description | Exemple |
|---|---|---|
| Attribution | Evaluation pays/groupe (faible/moy/haute confiance) | "Haute confiance : GRU russe" |
| Ciblage | Secteurs, geographies, types d'organisations | Energie, Finance, membres OTAN |
| Acces initial | Comment ils entrent typiquement | Harponnage, chaine d'approvisionnement |
| TTPs preferes | Techniques caracteristiques | Cobalt Strike, implants personnalises |
| Infrastructure C2 | Comment ils communiquent | Fronting de domaine, Tor, stockage cloud |
| Securite operationnelle | Comment ils evitent la detection | Conscience des fuseaux horaires, LOLBins |
| Campagnes historiques | Operations passees connues | Operation Aurora, Sunburst |
3. Frameworks d'attaque
Les frameworks nous donnent un vocabulaire partage pour decrire le comportement des attaquants. Ils permettent une meilleure ingenierie de detection, la chasse aux menaces et le travail en equipe violette.
3.1 MITRE ATT&CK
MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge) est une base de connaissances mondialement accessible de tactiques et techniques adversariales basee sur des observations du monde reel.
Structure : Organisee sous forme de matrice de Tactiques (le "pourquoi" - ce que l'attaquant cherche a accomplir) et de Techniques (le "comment" - methodes specifiques utilisees).
Tactiques ATT&CK pour Enterprise (dans l'ordre d'attaque)
| ID | Tactique | Description | Exemples de techniques |
|---|---|---|---|
| TA0043 | Reconnaissance | Collecter des infos avant l'attaque | T1595 Scan actif, T1598 Hameconnage pour info |
| TA0042 | Developpement de ressources | Construire/acquerir de l'infrastructure | T1583 Acquerir de l'infrastructure, T1587 Developper des capacites |
| TA0001 | Acces initial | Penetrer dans le reseau | T1566 Hameconnage, T1190 Exploiter app exposee publiquement |
| TA0002 | Execution | Executer du code malveillant | T1059 Interpreteur de commandes/scripts, T1203 Exploiter pour execution |
| TA0003 | Persistence | Maintenir une tete de pont | T1053 Tache planifiee, T1078 Comptes valides |
| TA0004 | Escalade de privileges | Obtenir des permissions superieures | T1055 Injection de processus, T1068 Exploiter pour PrivEsc |
| TA0005 | Evasion de defense | Eviter la detection | T1070 Suppression d'indicateurs, T1562 Entraver les defenses |
| TA0006 | Acces aux identifiants | Voler des identifiants | T1003 Extraction d'identifiants OS, T1558 Voler tickets Kerberos |
| TA0007 | Decouverte | Comprendre l'environnement | T1018 Decouverte de systemes distants, T1087 Decouverte de comptes |
| TA0008 | Mouvement lateral | Se deplacer dans le reseau | T1021 Services distants, T1550 Utiliser materiau d'auth alternatif |
| TA0009 | Collecte | Rassembler les donnees cibles | T1005 Donnees du systeme local, T1039 Donnees du partage reseau |
| TA0011 | Commande et controle | Communiquer avec l'implant | T1071 Protocole de couche applicative, T1095 Protocole non-applicatif |
| TA0010 | Exfiltration | Voler des donnees | T1041 Exfil via canal C2, T1048 Exfil via protocole alternatif |
| TA0040 | Impact | Causer des dommages | T1486 Donnees chiffrees pour impact, T1485 Destruction de donnees |
Utiliser ATT&CK pour l'ingenierie de detection :
# Exemple : Detecter T1059.001 (PowerShell) - Interpreteur de commandes et scripts
# Dans votre SIEM, rechercher ces patterns :
# 1. Commandes PowerShell encodees (evasion courante)
# Event ID 4104 (Journalisation des blocs de scripts) + commandes encodees base64
# Pattern : powershell.exe -enc <base64>
# 2. Berceau de telechargement (courant pour la livraison de payload stage-2)
# IEX (Invoke-Expression) + telechargement
# Pattern : IEX(New-Object Net.WebClient).DownloadString
# Regle Sigma pour PowerShell encode (YAML) :
# title: PowerShell encode suspect
# detection:
# selection:
# CommandLine|contains:
# - ' -enc '
# - ' -encodedcommand '
# - ' -e '
# condition: selection
# Activer la journalisation des blocs de scripts PowerShell (GPO / Registre)
# HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
# EnableScriptBlockLogging = 1
3.2 La Cyber Kill Chain
Developpee par Lockheed Martin, la Kill Chain decrit les etapes d'une attaque ciblee comme une sequence lineaire. Perturber n'importe quelle etape brise la chaine.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 1 │ │ 2 │ │ 3 │ │ 4 │
│Reconnaissance│───>│ Armement │───>│ Livraison │───>│Exploitation │
│ │ │ │ │ │ │ │
│ Scan OSINT │ │ Forger │ │ Email │ │ Declencher │
│ Scan ports │ │ exploit + │ │ hameconnage │ │ vulnerab. │
│ Offres emp. │ │ payload │ │ Depot USB │ │ sur cible │
└─────────────┘ └─────────────┘ └─────────────┘ └──────┬──────┘
│
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ 7 │ │ 6 │ │ 5 │<──────────┘
│ Actions sur│<───│ Commande │<───│ Installation│
│ objectifs │ │ et controle │ │ │
│ │ │ │ │ Porte derob.│
│ Vol donnees │ │ Balise C2 │ │ RAT │
│ Rancongiciel│ │ etablie │ │ Persistence │
└─────────────┘ └─────────────┘ └─────────────┘
Correspondance Kill Chain - Controles defensifs :
| Etape | Activite de l'attaquant | Controle defensif |
|---|---|---|
| Reconnaissance | Scan, OSINT | Minimiser la surface exposee, jetons de piege |
| Armement | Fabrication d'exploit | Rien a detecter - se produit hors reseau |
| Livraison | Email, web, USB | Passerelle email, proxy web, AV, formation utilisateurs |
| Exploitation | Declenchement de vuln. | Correctifs, EDR, attenuation d'exploit (ASLR, DEP) |
| Installation | Porte derobee/RAT | EDR, liste blanche d'applications, FIM |
| C2 | Balise sortante | Filtrage DNS, inspection proxy, anomalie reseau |
| Actions | Exfil, chiffrement | DLP, segmentation reseau, honeypots, sauvegarde |
Critique de la Kill Chain : Elle a ete concue pour les intrusions APT ciblees. Elle gere mal les menaces internes, ne modelise pas bien les attaques cloud-native, et son modele lineaire ne capture pas avec precision les campagnes multi-etapes. ATT&CK est plus complet pour les menaces modernes.
3.3 Le Modele Diamant d'analyse d'intrusion
Le Modele Diamant fournit un framework pour analyser des evenements d'intrusion individuels (pas des campagnes). Chaque evenement a quatre caracteristiques fondamentales formant un diamant :
┌──────────────┐
│ Adversaire │
│ (Qui ?) │
└──────┬───────┘
│
utilise │ contre
│
┌──────────────────┼──────────────────┐
│ │ │
┌───────┴──────┐ │ ┌──────┴───────┐
│ Capacite │ │ │ Victime │
│ (Quoi ?) │<──────────┼──────────>│ (Qui ?) │
│ │ │ │ │
│ Malware │ via │ │ Org/Personne │
│ Exploit │ │ │ Actif │
└───────┬──────┘ │ └──────┬───────┘
│ │ │
└──────────────────┼──────────────────┘
│
┌──────┴───────┐
│Infrastructure│
│ (Comment/Ou?)│
│ │
│ IP/domaine C2│
│ Serveur email│
└──────────────┘
Les meta-caracteristiques etendent le modele : horodatages, phase (etape de la Kill Chain), resultat (succes/echec), direction.
Pourquoi c'est important operationnellement : Le Modele Diamant permet le pivotement - depuis un attribut connu pour decouvrir les autres. Si vous connaissez le hachage du malware (capacite), vous pouvez pivoter pour trouver l'infrastructure C2. Depuis le domaine C2, vous pivotez pour trouver d'autres victimes. Depuis les victimes, vous identifiez l'adversaire.
4. Indicateurs de compromission et indicateurs d'attaque
4.1 Indicateurs de compromission (IoC)
Les IoC sont des artefacts forensiques qui indiquent qu'un systeme a ete compromis. Ils sont la preuve de ce qui s'est deja produit.
| Type d'IoC | Exemples | Duree de vie |
|---|---|---|
| Hachage de fichier (MD5/SHA256) | Hachage de binaire malveillant | Courte - trivial a changer |
| Adresse IP | IP du serveur C2 | Courte - frequemment rotee |
| Domaine | evil-update[.]com | Courte-Moyenne |
| URL | http://evil.com/payload.exe | Courte |
| Sujet/expediteur email | Modele de hameconnage | Courte |
| Cle de registre | HKCU\Software\MalwareKey | Moyenne |
| Mutex | Global\MalwareMutex_v2 | Moyenne-Longue |
| Pattern de trafic reseau | Intervalle de balise, User-Agent | Longue |
| Regle YARA | Pattern d'octets dans le malware | Longue |
La Pyramide de la Douleur (David Bianco) - plus on monte dans la pyramide, plus cela fait mal a l'attaquant lorsque vous le detectez/bloquez :
╔═══════════════════╗
║ TTPs ║ <- Le plus difficile a changer pour l'attaquant
╚═══════════════════╝
╔═══════════════════════╗
║ Outils ║
╚═══════════════════════╝
╔═══════════════════════════╗
║ Artefacts reseau/hote ║
╚═══════════════════════════╝
╔═══════════════════════════════╗
║ Noms de domaine ║
╚═══════════════════════════════╝
╔═══════════════════════════════════╗
║ Adresses IP ║ <- Trivial a changer pour l'attaquant
╚═══════════════════════════════════╝
╔═══════════════════════════════════════╗
║ Valeurs de hachage ║ <- Inutile apres la premiere detection
╚═══════════════════════════════════════╝
Implication : Bloquer les IPs et les hachages est une detection de faible valeur. L'ingenierie de detection doit cibler les comportements et TTPs - des elements couteux pour l'attaquant a modifier.
4.2 Indicateurs d'attaque (IoA)
Les IoA se concentrent sur l'intention et le comportement - les actions de l'attaquant, pas les artefacts laisses derriere. Les IoA detectent les attaques en cours plutot que de confirmer la compromission apres coup.
| IoA | Ce qu'il detecte | Correspondance ATT&CK |
|---|---|---|
| Scan de ports depuis un hote interne | Reconnaissance interne | T1046 Decouverte de services reseau |
| PowerShell lance par Word.exe | Execution de macro malveillante | T1059.001 + T1566.001 |
| Lecture memoire LSASS | Extraction d'identifiants | T1003.001 |
| Nouvelle tache planifiee creee par non-admin | Tentative de persistence | T1053.005 |
| Requete DNS vers domaine DGA | Balise C2 | T1568 Resolution dynamique |
| Grand transfert sortant a 3h du matin | Exfiltration de donnees | T1041 |
| Net user /add depuis un compte de service | Preparation de mouvement lateral | T1136 |
# Exemples de detection IoA avec le framework d'audit Linux
# Detecter les lectures LSASS sur l'equivalent Linux (lecture /proc/*/mem ou /etc/shadow)
auditctl -w /etc/shadow -p r -k lecture_shadow
auditctl -w /etc/passwd -p r -k lecture_passwd
# Surveiller la creation de nouvelles taches cron (IoA de persistence)
auditctl -w /etc/cron.d -p wa -k modification_cron
auditctl -w /var/spool/cron -p wa -k modification_cron
# Detecter les connexions sortantes inhabituelles (C2 potentiel)
# Surveiller les connexions vers des pays rares ou sur des ports non standard
auditctl -a always,exit -F arch=b64 -S connect -k connexion_sortante
# Afficher le journal d'audit
ausearch -k lecture_shadow
ausearch -k modification_cron --start today
4.3 STIX et TAXII - Partage du renseignement
STIX (Structured Threat Information eXpression) : Format JSON pour representer les objets de renseignement sur les menaces (malware, campagnes, IoC, TTPs) de maniere lisible par machine.
TAXII (Trusted Automated eXchange of Intelligence Information) : Protocole de transport pour partager le contenu STIX entre organisations.
# Exemple Python : interroger un serveur TAXII pour le renseignement sur les menaces
from taxii2client.v21 import Server
# Se connecter au serveur TAXII MITRE ATT&CK (public)
server = Server('https://cti-taxii.mitre.org/taxii/',
user='guest', password='')
# Lister les collections disponibles (flux de renseignement sur les menaces)
api_root = server.api_roots[0]
for collection in api_root.collections:
print(f"Collection: {collection.title} | ID: {collection.id}")
# Recuperer les objets d'une collection specifique (ex. Enterprise ATT&CK)
from taxii2client.v21 import Collection
collection = Collection(
'https://cti-taxii.mitre.org/stix/collections/95ecc380-afe9-11e4-9b6c-751b66dd541e/'
)
tc_source = TAXIICollectionSource(collection)
# Interroger tous les groupes (acteurs de menaces)
from stix2 import Filter
groups = tc_source.query([Filter("type", "=", "intrusion-set")])
for group in groups[:5]:
print(f"Groupe: {group.name} | Alias: {group.get('aliases', [])}")
5. Plateformes de renseignement sur les menaces et sources OSINT
5.1 Plateformes RM commerciales et open source
| Plateforme | Type | Meilleur pour |
|---|---|---|
| MISP (Malware Information Sharing Platform) | Open source | Partage collaboratif d'IoC, STIX/TAXII |
| OpenCTI | Open source | RM base sur des graphes avec integration ATT&CK |
| ThreatConnect | Commercial | Gestion complete du cycle de vie RM |
| Recorded Future | Commercial | Renseignement en temps reel, dark web |
| VirusTotal Intelligence | Commercial | Analyse de malware, reputation fichier/URL |
| AlienVault OTX | Gratuit/Commercial | Flux de menaces communautaires |
| MITRE ATT&CK Navigator | Gratuit | Cartographie RM sur la matrice ATT&CK |
5.2 Sources OSINT critiques pour le renseignement sur les menaces
# ── DNS PASSIF ET REPUTATION IP ─────────────────────────────────────────────
# Shodan : moteur de recherche pour les appareils connectes a internet
# Trouver tous les serveurs Apache 2.4.49 (CVE-2021-41773 - traversee de chemin)
shodan search 'apache/2.4.49'
# Censys : similaire a Shodan, donnees TLS/certificats solides
# Interroger via CLI
censys search 'services.http.response.headers.server: "nginx/1.14"' --index hosts
# ── INVESTIGATION DOMAINE ET IP ──────────────────────────────────────────────
# Recherche WHOIS (infos d'enregistrement, contacts d'abus)
whois evil-domain.com
# DNS passif - voir les enregistrements de resolution historiques
# (curl vers SecurityTrails, RiskIQ ou Mnemonic PassiveDNS)
curl "https://api.securitytrails.com/v1/domain/evil-domain.com/history/a" \
-H "APIKEY: votre_cle"
# Journaux de transparence des certificats - trouver des sous-domaines
# crt.sh est une base de donnees publique de journaux CT
curl 'https://crt.sh/?q=%.target.com&output=json' | \
python3 -c "import sys,json; [print(r['name_value']) for r in json.load(sys.stdin)]" | \
sort -u
# ── RECHERCHE DE MALWARE ET HACHAGE ──────────────────────────────────────────
# Recherche de hachage VirusTotal via API
curl "https://www.virustotal.com/api/v3/files/<hash_sha256>" \
-H "x-apikey: VOTRE_CLE_VT_API"
# MalwareBazaar (abuse.ch) - base de donnees gratuite d'echantillons de malware
curl -d 'query=get_info&hash=<sha256>' \
'https://mb-api.abuse.ch/api/v1/'
# ── OSINT D'ACTEURS DE MENACES ────────────────────────────────────────────────
# Page des groupes MITRE ATT&CK
# https://attack.mitre.org/groups/
# Traqueur de groupes APT ETDA Thailande (liste ouverte complete)
# https://apt.etda.or.th/cgi-bin/listgroups.cgi
# Malpedia - familles de malware et acteurs de menaces associes
# https://malpedia.caad.fkie.fraunhofer.de/
5.3 Honeypots et collecte de renseignement active
Les honeypots sont des systemes leurres concus pour attirer les attaquants. Ils generent un renseignement sur les menaces de haute fidelite car toute interaction est suspecte par definition.
# Deployer un honeypot SSH simple en utilisant Cowrie
# Cowrie journalise les commandes des attaquants, capture les fichiers televerses, enregistre les identifiants
# Installer Cowrie
git clone https://github.com/cowrie/cowrie.git
cd cowrie
pip install -r requirements.txt
cp etc/cowrie.cfg.dist etc/cowrie.cfg
# Configurer : ecouter sur le port 2222, rediriger le vrai SSH vers 2222 et exposer 22
# /etc/cowrie.cfg
# [ssh]
# listen_port = 2222
# hostname = srv04
# Rediriger le vrai SSH vers 2222, exposer le port 22 sur internet pour le honeypot
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
# Demarrer Cowrie
bin/cowrie start
# Surveiller les sessions des attaquants en temps reel
tail -f var/log/cowrie/cowrie.json | python3 -c "
import sys, json
for line in sys.stdin:
event = json.loads(line)
if event.get('eventid') in ['cowrie.command.input', 'cowrie.login.success']:
print(f\"[{event['eventid']}] {event.get('input', event.get('username',''))}\")
"
Ce que les honeypots revelent :
- Boites a outils des attaquants et commandes utilisees immediatement apres l'acces initial
- Listes d'identifiants en cours de bruteforce (vrais mots de passe utilises)
- Infrastructure C2 (URLs de telechargement de malware)
- Techniques zero-day avant divulgation publique
6. Operationnalisation du renseignement
6.1 Le pipeline RM-vers-Detection
Le renseignement brut doit etre converti en regles de detection, blocages de pare-feu et requetes de chasse pour avoir une valeur operationnelle.
Flux STIX / Rapport RM
│
v
Extraire IoC / TTPs
(IPs, domaines, hachages, techniques)
│
v
Enrichir et valider
(Cette IP est-elle encore malveillante ? Le domaine resout-il encore ? Le hachage est-il sujet aux FP ?)
│
├──────────────────────────────────────────────────────────┐
v v
IoC techniques TTPs / Comportements
(IP, hachage, domaine) (techniques ATT&CK)
│ │
v v
Bloquer / Alerter Ecrire des regles de detection
(Pare-feu, sinkhole DNS, (Sigma, YARA, Suricata)
blocage de hachage endpoint) │
v
Deployer vers SIEM / EDR / NDR
│
v
Alerte -> Triage -> Confirmation
6.2 Ecriture de regles YARA pour la detection de malware
YARA est le langage de correspondance de patterns pour les analystes de malware. Les regles decrivent les caracteristiques des familles de malware pour les detecter sur disque ou en memoire.
// Exemple de regle YARA : detecter la balise Cobalt Strike
// Cobalt Strike est l'outil d'equipe rouge le plus souvent abuse, utilise par les APTs et cybercriminels
rule CobaltStrike_Beacon_Indicators
{
meta:
description = "Detecte la balise Cobalt Strike basee sur les chaines et patterns caracteristiques"
author = "EquipeSecurite"
date = "2024-01-15"
severity = "critique"
mitre_attack = "T1071.001, T1055"
strings:
// Chaine de masque de sommeil par defaut Cobalt Strike
$cs_str1 = "%s (admin)" wide ascii
// Tube nomme par defaut pour la balise SMB
$cs_pipe = "\\\\.\\pipe\\msagent_" wide ascii
// User-agents par defaut du C2 malleable
$cs_ua1 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; 123)" ascii
// Pattern d'URL de staging Cobalt Strike
$cs_url = "/submit.php" ascii
// Marqueur de bloc de configuration encode XOR
$cs_config = { 2e 2f 2e 2f 2e 2c } // Octets hexa courants dans la config CS
condition:
// Detecter si 2 des chaines ci-dessus sont presentes
uint16(0) == 0x5A4D // En-tete MZ - c'est un fichier PE
and filesize < 2MB
and 2 of ($cs_str1, $cs_pipe, $cs_ua1, $cs_url, $cs_config)
}
// Executer YARA sur un repertoire
// yara -r cobalt_strike.yar /chemin/vers/scan
// yara -r cobalt_strike.yar --scan-list liste_fichiers.txt
6.3 Ecriture de regles Sigma pour la detection SIEM
Sigma est un format de regle de detection generique et independant du fournisseur pour les systemes SIEM. Les regles sont ecrites une fois et converties en Splunk SPL, Elastic DSL, QRadar AQL, etc.
# Regle Sigma : detecter l'extraction d'identifiants LSASS par Mimikatz
title: Extraction d'identifiants LSASS par Mimikatz
id: 5ef9853e-4d0e-4a70-846f-a9ca37d876da
status: stable
description: Detecte l'extraction d'identifiants depuis la memoire LSASS en utilisant Mimikatz ou des outils similaires
references:
- https://attack.mitre.org/techniques/T1003/001/
author: EquipeSecurite
date: 2024/01/15
tags:
- attack.credential_access
- attack.t1003.001
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\lsass.exe'
GrantedAccess|contains:
- '0x1010' # PROCESS_VM_READ + PROCESS_QUERY_INFORMATION
- '0x1410'
- '0x147a'
- '0x143a'
condition: selection
falsepositives:
- Logiciels de securite, scanners antivirus
- Windows Defender credential guard
level: critical
# Convertir la regle Sigma en Splunk SPL
# sigma convert -t splunk -p splunk_windows cobalt_strike.yml
# Convertir en Elastic Query DSL
# sigma convert -t es-qs -p ecs_windows mimikatz_lsass.yml
6.4 Chasse aux menaces avec le renseignement
La chasse aux menaces est une recherche proactive, guidee par des hypotheses de menaces qui ont echappe a la detection automatisee.
# Hypothese de chasse : "APT29 est connu pour utiliser WMI pour le mouvement lateral (T1021.006)"
# Chasser les evenements de creation de processus WMI inhabituels
# Chasse dans les journaux d'evenements Windows avec PowerShell
# Rechercher WMI lancant cmd.exe ou PowerShell (abus courant de LOLBin)
Get-WinEvent -LogName "Microsoft-Windows-WMI-Activity/Operational" |
Where-Object { $_.Message -match "cmd.exe|powershell.exe" } |
Select-Object TimeCreated, Message
# Chasser l'abus de LOLBin : certutil telechargement de payloads (T1105)
# Certutil est legitime mais souvent abuse pour telecharger des malwares
Get-WinEvent -LogName Security |
Where-Object { $_.Message -match "certutil" -and $_.Message -match "urlcache" }
# Chasser les domaines DGA dans les journaux DNS (noms de domaine d'aspect aleatoire)
# Les domaines DGA ont typiquement une entropie elevee et ne suivent aucun pattern de dictionnaire
# Exemple en Python + entropie de Shannon
python3 -c "
import math
def entropie(s):
p = [s.count(c)/len(s) for c in set(s)]
return -sum(x*math.log2(x) for x in p)
domaines = ['google.com', 'xkjhdf.net', 'update.microsoft.com', 'asjklhdf.biz']
for d in domaines:
nom = d.split('.')[0]
e = entropie(nom)
flag = 'DGA?' if e > 3.5 else 'OK'
print(f'{d:35s} entropie={e:.2f} {flag}')
"