Garden of KnowledgeApplied Sciences › Computer Science › Software › Security › Certifications › PNPT-cert › 14-report-writing
May 18, 2026

Report Writing (PNPT)

Le rapport, c’est le livrable réel d’un pentest. Le client ne voit ni ton shell ni ton terminal — il voit un PDF. Un test brillant mal rapporté vaut moins qu’un test moyen bien rapporté. À l’examen PNPT, le rapport représente une grande partie de l’évaluation : si le rapport est mauvais, on peut techniquement réussir l’exploit et rater l’examen.

L’audience à deux niveaux§

Un rapport de pentest a deux lectorats distincts qui ne lisent pas les mêmes sections.

   Lecteur                    Section                  Ce qu'il cherche
   ─────────────────          ───────────────────      ───────────────────────
   Direction, DSI       ───►  Executive Summary   ───► "On est exposés ou pas ?"
   (non technique)                                     "Combien ça coûte ?"
                                                       "Priorités ?"

   Équipe sécu, sysadmin ──►  Findings techniques ───► "Comment exploiter ?"
   (technique)                                         "Comment corriger ?"
                                                       "Reproduire ?"

Conséquence pratique : l’Executive Summary ne doit JAMAIS contenir de jargon technique. Si le DG voit “CVE-2024-1234” ou “NTLM relay”, il ferme le PDF. Les findings techniques, eux, peuvent et doivent être précis.

Structure type d’un rapport§

1. Page de garde§

   Nom du client + logo
   Type de pentest (externe / interne / web / AD)
   Dates du test
   Auteur(s) du rapport
   Classification : CONFIDENTIEL — Diffusion restreinte
   Version + date du document

2. Resume exécutif (Executive Summary)§

Une à deux pages. Ce que le DG va lire, et probablement la seule partie qu’il va lire en entier.

À inclure :

Ce qu’il ne faut pas faire : commencer par “Nous avons exploité une vulnérabilité Kerberoasting…”. Le DG ne sait pas ce qu’est Kerberos.

Formulation correcte : “Nous avons démontré qu’un attaquant interne pouvait compromettre l’ensemble du domaine Windows en moins de deux heures, en exploitant des mots de passe faibles sur des comptes de service.”

3. Méthodologie§

Ce chapitre montre la rigueur. Court mais précis.

4. Trouvailles (Findings)§

Le cœur du rapport. Une fiche par vulnérabilité significative.

ÉlémentDescription
TitreNom clair, court (ex. “Kerberoasting sur compte SQL”)
SévéritéCritique / Haute / Moyenne / Basse / Info
CVSSScore numérique (v3.1) si applicable
DescriptionLa vulnérabilité, en termes techniques
ImpactConséquence concrète (en termes métier !)
SystèmesIPs/services affectés
PreuveScreenshots + commandes + outputs
RemédiationÉtapes concrètes pour corriger
RéférencesCVE, MITRE ATT&CK, articles

5. Annexes§

Échelle de sévérité§

SévéritéCritèresExemples
CritiqueRCE sans auth, compromission du domaine, données massivesEternalBlue exposé, DA via Kerberoast, SQLi auth bypass
HauteRCE auth, privesc, credentials sensiblesSQLi standard, default creds admin, ACL abuse AD
MoyenneXSS stocké, info disclosure sensible, MFA absentXSS persistent, énumération de users, no rate limit
BasseXSS reflété, headers sécurité absents, info versionsX-Frame-Options manquant, version Apache exposée
InfoBonnes pratiques non suivies, hardening légerTLS 1.0 supporté, suite de chiffrement faible

Le CVSS n’est pas suffisant : un CVSS de 9.8 sur une CVE non exploitable dans le contexte = sévérité ajustée à la baisse. Toujours expliquer pourquoi tu rates différemment du score brut.

Une fiche de finding bien rédigée§

   Titre : Kerberoasting permettant la compromission du domaine

   Sévérité : Critique         CVSS v3.1 : 9.1 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)

   Description :
     Le compte de service "svc_sql" utilise un mot de passe court ("Sql2020")
     et possède un Service Principal Name (SPN). Tout utilisateur du domaine
     peut donc demander un TGS pour ce compte, et extraire un hash crackable
     hors ligne (Kerberoasting). Le hash a été cracké en 4 minutes avec une
     wordlist standard.

   Impact :
     L'attaquant obtient les credentials du compte svc_sql, membre du groupe
     "Server Operators". Cela permet une élévation jusqu'à Domain Admin via
     une chaîne d'ACL identifiée par BloodHound (voir annexe A).

   Systèmes affectés :
     DC01 (10.10.10.5) — Active Directory cible.local

   Preuve :
     [Screenshot 1] GetUserSPNs.py extrayant le hash
     [Screenshot 2] hashcat crackant le mot de passe
     [Screenshot 3] Connexion psexec.py en tant que svc_sql

   Remédiation :
     1. Renforcer le mot de passe (16+ caractères, généré aléatoirement) ou
        utiliser un Managed Service Account (MSA / gMSA).
     2. Auditer tous les comptes avec SPN (Get-ADUser -Filter
        {ServicePrincipalName -like "*"}).
     3. Implémenter une politique de mots de passe spécifique aux comptes
        de service via Fine-Grained Password Policies.

   Références :
     - MITRE ATT&CK : T1558.003 Kerberoasting
     - https://attack.mitre.org/techniques/T1558/003/

Conseils spécifiques à l’examen PNPT§

Outils§

   Rédaction :
     - Markdown (Obsidian, Typora) puis export PDF
     - Word / LibreOffice avec template
     - Pwndoc (générateur dédié pentest, en self-hosted)
     - SysReptor (équivalent open-source moderne)

   Screenshots :
     - Flameshot (Linux, recommandé — annotations rapides)
     - Greenshot (Windows)
     - ShareX (Windows, plus avancé)

   Notes pendant le test :
     - Obsidian (note par cible, lien entre findings)
     - CherryTree (arborescence + screenshots intégrés)
     - GhostWriter (collaboration équipe pentest)

Pièges courants§

—The Gardener