---
title: "Procédure d'Audit de Sécurité"
domain: security
subdomain: ebios
type: note
tags: [audit, grc, anssi, passi, iso27001, réseau, dns, dhcp, blue-team, conformité]
status: stable
updated: ""
---
import { Tip, Warning } from '@/components/mdx';

## Définition et types d'audits

Un audit de sécurité est une **évaluation formelle et méthodique** de la posture de sécurité d'un SI, destinée à identifier les écarts entre la situation réelle et un référentiel cible.

### Types d'audits

| Type | Objet | Profil auditeur |
|---|---|---|
| **Audit organisationnel** | Gouvernance, politiques, procédures | Consultant GRC |
| **Audit technique** | Infrastructure, configurations, vulnérabilités | Expert technique |
| **Audit de code** | Sécurité applicative, revue de code source | Développeur sécurité |
| **Test d'intrusion (pentest)** | Simulation d'attaque réelle | Pentesteur (PASSI) |
| **Audit de conformité** | Écart vs référentiel (ISO 27001, NIS2, RGPD) | Auditeur certifié |
| **Audit physique** | Accès locaux, datacenter, postes | Auditeur terrain |

### Modes d'audit (pentest)

| Mode | Connaissance | Usage |
|---|---|---|
| **Boîte noire** | Aucune info préalable | Simule attaquant externe |
| **Boîte grise** | Infos partielles (utilisateur standard) | Simule insider ou post-phishing |
| **Boîte blanche** | Accès complet (docs, code, archi) | Audit approfondi, revue de code |

---

## Cadre réglementaire français

| Référentiel | Obligatoire pour | Contenu |
|---|---|---|
| **PASSI** (ANSSI) | Prestataires d'audit qualifiés | Qualification des auditeurs SI |
| **RGS** | Administrations françaises | Audit obligatoire des SI sensibles |
| **NIS2** | OES/OIV | Audit de sécurité régulier obligatoire |
| **ISO 27001** | Organisations certifiées | Audit interne annuel + audit de certification |
| **RGPD** | Tous traitements données perso | Audit de conformité protection des données |

---

## Phase 1 — Préparation et cadrage

### 1.1 Déclenchement de l'audit

```
Déclencheurs possibles :
- Audit planifié (cycle annuel SMSI)
- Suite à un incident de sécurité
- Changement majeur du SI (migration, fusion)
- Exigence réglementaire (NIS2, client, assureur)
- Demande de la direction
```

### 1.2 Définition du périmètre

```
Document de cadrage à produire :
├── Périmètre technique    : IP, domaines, applications, APIs
├── Périmètre organisationnel : entités, filiales, prestataires
├── Exclusions explicites  : systèmes hors périmètre
├── Fenêtres d'intervention : horaires autorisés
├── Contacts d'urgence     : RSSI, DSI, astreinte
└── Critères de suspension : conditions d'arrêt immédiat
```

### 1.3 Lettre de mission / Autorisation écrite

<Warning>
Sans autorisation écrite signée, tout test est illégal (Art. 323-1 Code pénal). Le document doit identifier le commanditaire, le périmètre exact, les dates, les auditeurs, la nature des tests autorisés, et inclure clauses de confidentialité et de responsabilité.
</Warning>

### 1.4 Collecte d'informations préalables

```
Documents à demander au commanditaire :
- Schéma d'architecture réseau
- Inventaire des assets (CMDB)
- PSSI en vigueur
- Résultats audits précédents
- Liste des applications critiques
- Contrats prestataires (si périmètre tiers)
- Politique de gestion des patches
```

---

## Phase 2 — Reconnaissance

### 2.1 Reconnaissance passive (OSINT)

```bash
# Informations DNS
whois <domaine>
dig <domaine> ANY
dnsrecon -d <domaine>

# Sous-domaines
amass enum -d <domaine>
subfinder -d <domaine>
curl "https://crt.sh/?q=%.<domaine>&output=json"

# Emails exposés
theHarvester -d <domaine> -b google,linkedin,bing

# Technologies web
whatweb <url>
```

### 2.2 Découverte réseau

```bash
# Hôtes actifs
nmap -sn <plage_IP>

# Scan de ports (top 1000)
nmap -sV -sC -O <cible>

# Scan complet tous ports
nmap -p- -T4 <cible>

# Scan UDP (services souvent oubliés)
nmap -sU --top-ports 200 <cible>

# Export résultats
nmap -oA scan_results <cible>
```

### 2.3 Énumération des services

```bash
# SMB
enum4linux -a <cible>
crackmapexec smb <cible> --shares --users

# SNMP (souvent mal configuré)
snmpwalk -v2c -c public <cible>

# LDAP / Active Directory
ldapsearch -x -H ldap://<cible> -b "dc=<domaine>,dc=com"
```

---

## Phase 3 — Audit organisationnel

### 3.1 Grille d'entretiens

```
Direction / RSSI :
☐ La PSSI est-elle formalisée, approuvée et diffusée ?
☐ Quand a-t-elle été mise à jour pour la dernière fois ?
☐ Existe-t-il un processus de gestion des risques (EBIOS RM) ?
☐ Y a-t-il un budget sécurité dédié ?
☐ Des KPIs sécurité sont-ils suivis par la direction ?

DSI / Équipes techniques :
☐ Existe-t-il un inventaire à jour des assets ?
☐ Les patches critiques sont-ils appliqués sous 48h ?
☐ Les sauvegardes sont-elles testées régulièrement ?
☐ Un SIEM/SOC est-il en place ?
☐ Les comptes administrateurs sont-ils nominatifs ?
☐ Le MFA est-il déployé sur les accès sensibles ?

RH / Utilisateurs :
☐ Une sensibilisation sécurité est-elle réalisée à l'arrivée ?
☐ Une charte informatique est-elle signée ?
☐ Les accès sont-ils révoqués rapidement au départ ?
☐ Des tests de phishing simulés sont-ils réalisés ?
```

---

## Phase 4 — Audit technique

### 4.1 Audit des configurations système

```bash
# Linux — audit de durcissement
apt install lynis
lynis audit system

# Vérifications manuelles Linux
ss -tlnp                         # services en écoute
cat /etc/passwd | awk -F: '$3==0'  # comptes root
find / -perm -4000 2>/dev/null   # binaires SUID
last | head -20                  # dernières connexions

# Windows — politique de mots de passe
net accounts

# Comptes locaux actifs
net user

# Services en écoute
netstat -ano

# Tâches planifiées suspectes
schtasks /query /fo LIST /v

# Clés de démarrage auto
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
```

### 4.2 Audit Active Directory

```powershell
# Comptes avec mot de passe qui n'expire jamais
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires

# Comptes inactifs depuis 90 jours
$date = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -lt $date -and Enabled -eq $true} -Properties LastLogonDate

# Membres du groupe Domain Admins
Get-ADGroupMember -Identity "Domain Admins"

# Comptes avec SPN définis (Kerberoasting)
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName

# Politique de mots de passe du domaine
Get-ADDefaultDomainPasswordPolicy

# GPO appliquées
gpresult /h rapport_gpo.html
```

### 4.3 Audit des applications web (OWASP Top 10)

```bash
# Scan automatisé
nikto -h <url> -output nikto_report.txt
sqlmap -u "<url>?id=1" --dbs --batch

# Tests manuels clés
# A01 — IDOR : changer l'ID dans l'URL/body
# A03 — SQLi : ' OR '1'='1 dans les champs
# A03 — XSS  : <script>alert(1)</script>
# A07 — Auth : absence de rate limiting sur /login
```

```
A01 – Broken Access Control    : IDOR, accès sans auth, élévation privilèges
A02 – Cryptographic Failures   : HTTP sans HTTPS, certs expirés, données en clair
A03 – Injection                : SQLi, XSS, Command injection
A05 – Misconfiguration         : Headers manquants, erreurs verboses, répertoires listables
A06 – Vulnerable Components    : npm audit / pip audit / OWASP Dependency Check
A07 – Auth Failures            : Pas de rate limiting, JWT faibles, session post-logout
A09 – Logging Failures         : Événements critiques non loggés, logs non centralisés
A10 – SSRF                     : Paramètres URL/IP contrôlables par l'utilisateur
```

---

## Phase 4.4 — Audit réseau

### Scan et cartographie

```bash
# Cartographie des flux actifs
nmap -sV --open <plage_IP>

# Détection des services non chiffrés (Telnet, FTP, HTTP)
nmap -p 21,23,80,8080 --open <plage_IP>

# Vérification des règles firewall
nmap --script firewall-bypass <cible>

# Scan de vulnérabilités réseau (OpenVAS)
gvm-start
# Interface : https://127.0.0.1:9392
```

---

### 4.4.1 Audit DNS

#### Vérification des enregistrements exposés

```bash
# Enregistrements complets du domaine
dig <domaine> ANY +noall +answer
dig <domaine> NS +short
dig <domaine> MX +short
dig <domaine> TXT +short        # SPF, DKIM, DMARC

# Résolution inverse (PTR)
dig -x <IP_serveur>

# Vérifier l'existence d'un enregistrement SPF
dig TXT <domaine> | grep "v=spf"

# Vérifier DMARC
dig TXT _dmarc.<domaine>

# Vérifier DKIM (remplacer selector par le sélecteur réel)
dig TXT <selector>._domainkey.<domaine>
```

#### Test de transfert de zone (zone transfer)

```bash
# Récupérer les serveurs DNS autoritaires
dig NS <domaine> +short

# Tenter un transfert de zone sur chaque NS
dig AXFR @<nameserver1> <domaine>
dig AXFR @<nameserver2> <domaine>

# Résultat attendu : "Transfer failed" ou "REFUSED"
# Si le transfert réussit → vulnérabilité critique : enumération complète du DNS
```

#### Vérification DNSSEC

```bash
# Vérifier si DNSSEC est activé
dig +dnssec <domaine> A
# Chercher le flag "ad" (Authenticated Data) dans les flags
# Vérifier la présence d'enregistrements RRSIG

# Vérifier la chaîne de confiance
dig DS <domaine> @8.8.8.8
dig DNSKEY <domaine>

# Test complet DNSSEC
dnssec-verify -z <domaine>       # si bind-utils installé
```

#### Détection de sous-domaines / takeover

```bash
# Énumération passive
amass enum -passive -d <domaine>
subfinder -d <domaine> -silent

# Bruteforce DNS
dnsrecon -d <domaine> -D /usr/share/wordlists/dnsmap.txt -t brt

# Vérifier les sous-domaines pointant vers des services inexistants
# (risque de subdomain takeover — CNAME vers service décommissionné)
for sub in $(cat subdomains.txt); do
  result=$(dig CNAME $sub.<domaine> +short)
  if [ -n "$result" ]; then
    echo "$sub -> $result"
  fi
done
```

#### Vérification du DNS interne (split-horizon)

```bash
# Comparer résolution interne vs externe
# Depuis l'intérieur du réseau
dig <domaine> @<DNS_interne>

# Depuis l'extérieur (ou via un résolveur public)
dig <domaine> @8.8.8.8

# Les IP retournées ne doivent pas exposer des adresses RFC1918
# depuis le DNS externe
```

---

### 4.4.2 Audit DHCP

#### Détection de serveurs DHCP non autorisés (rogue DHCP)

```bash
# Découvrir les serveurs DHCP qui répondent sur le réseau
nmap --script broadcast-dhcp-discover -e <interface>
# Résultat attendu : un seul serveur DHCP connu
# Si plusieurs serveurs répondent → rogue DHCP potentiel

# Alternative avec nmap UDP
nmap -sU -p 67 --script dhcp-discover <plage_IP>

# Avec dhcpdump (sniffing passif)
dhcpdump -i <interface>

# Avec Metasploit (audit autorisé uniquement)
# use auxiliary/scanner/discovery/udp_sweep
```

#### Audit de la configuration du serveur DHCP

```bash
# Linux (ISC DHCP / Kea) — vérifier la configuration
cat /etc/dhcp/dhcpd.conf
# Points à vérifier :
# - authoritative; présent → le serveur rejette les rogue DHCP
# - default-lease-time et max-lease-time définis
# - deny unknown-clients; si MAC filtering souhaité
# - log-facility défini pour la journalisation

# Vérifier les baux actifs (qui a quelle IP)
cat /var/lib/dhcpd/dhcpd.leases

# Windows Server DHCP — via PowerShell
Get-DhcpServerv4Scope                        # scopes configurés
Get-DhcpServerv4Lease -ScopeId <IP_scope>    # baux actifs
Get-DhcpServerSetting                        # paramètres globaux
Get-DhcpServerv4FailoverScope                # haute disponibilité
```

#### Vérification du DHCP snooping (switches)

```bash
# Cisco IOS — vérifier si DHCP snooping est activé
show ip dhcp snooping
show ip dhcp snooping binding
# Ports "trusted" doivent être uniquement les uplinks / distribution

# Cisco — vérifier Dynamic ARP Inspection (DAI) associé
show ip arp inspection
show ip arp inspection vlan <vlan_id>

# Vérifier IP Source Guard
show ip verify source
```

#### Audit des réservations et de la plage

```bash
# Vérifier les équipements sans réservation (IP dynamique vs statique)
# Les serveurs, équipements réseau, imprimantes doivent avoir des réservations fixes

# Linux — lister les réservations statiques dans dhcpd.conf
grep -A4 "host " /etc/dhcp/dhcpd.conf

# Comparer avec l'inventaire CMDB — toute IP non répertoriée est suspecte
```

---

### 4.4.3 Audit serveurs web

#### Vérification des headers HTTP de sécurité

```bash
# Headers complets en une requête
curl -sI https://<domaine> | grep -iE "strict|content-security|x-frame|x-content|referrer|permissions"

# Vérification détaillée header par header
curl -sI https://<domaine> | grep -i "Strict-Transport-Security"
# Attendu : max-age >= 31536000 ; includeSubDomains ; preload

curl -sI https://<domaine> | grep -i "Content-Security-Policy"
# Attendu : présent, pas de 'unsafe-inline' ni 'unsafe-eval' sans nonce

curl -sI https://<domaine> | grep -i "X-Frame-Options"
# Attendu : DENY ou SAMEORIGIN

curl -sI https://<domaine> | grep -i "X-Content-Type-Options"
# Attendu : nosniff

curl -sI https://<domaine> | grep -i "Referrer-Policy"
# Attendu : strict-origin-when-cross-origin ou no-referrer

# Vérifier si le banner serveur est exposé
curl -sI https://<domaine> | grep -i "Server:"
curl -sI https://<domaine> | grep -i "X-Powered-By:"
# Attendu : absent ou générique (pas de version)
```

#### Audit TLS / HTTPS

```bash
# Audit TLS complet (versions, ciphers, certificat)
testssl.sh https://<domaine>
# Points clés à vérifier :
# - TLS 1.0 et 1.1 désactivés
# - SSLv2 / SSLv3 désactivés
# - Forward Secrecy activé (ECDHE)
# - Certificat valide et non expiré
# - HSTS présent avec max-age élevé

# Scan rapide des ciphers
nmap --script ssl-enum-ciphers -p 443 <cible>
# Chercher : SSLv2, SSLv3, TLS 1.0, TLS 1.1, RC4, DES, NULL ciphers → à signaler

# Vérifier le certificat
openssl s_client -connect <domaine>:443 -servername <domaine> 2>/dev/null \
  | openssl x509 -noout -dates -subject -issuer

# Détecter Heartbleed (CVE-2014-0160)
nmap --script ssl-heartbleed -p 443 <cible>
```

#### Vérification des méthodes HTTP

```bash
# Lister les méthodes HTTP autorisées
curl -sI -X OPTIONS https://<domaine> | grep -i "Allow:"
# Attendu : GET, POST, HEAD uniquement
# À signaler si présent : TRACE, PUT, DELETE, CONNECT

# Tester TRACE (risque XST — Cross-Site Tracing)
curl -sI -X TRACE https://<domaine>
# Attendu : 405 Method Not Allowed

# Tester PUT (écriture de fichier)
curl -sI -X PUT https://<domaine>/test.txt -d "test"
# Attendu : 405 Method Not Allowed
```

#### Vérification de la configuration Apache / Nginx

```bash
# Apache — configuration de sécurité
grep -r "ServerTokens" /etc/apache2/
# Attendu : ServerTokens Prod (cache la version)

grep -r "ServerSignature" /etc/apache2/
# Attendu : ServerSignature Off

grep -r "Options" /etc/apache2/
# Vérifier : Options -Indexes (interdit le listing de répertoires)

grep -r "Header" /etc/apache2/
# Vérifier que les headers de sécurité sont définis

# Nginx — configuration de sécurité
grep -r "server_tokens" /etc/nginx/
# Attendu : server_tokens off;

grep -r "add_header" /etc/nginx/
# Vérifier HSTS, CSP, X-Frame-Options, X-Content-Type-Options

# Tester le listing de répertoires
curl -s https://<domaine>/images/ | grep -i "Index of"
# Résultat attendu : 403 ou redirection, pas de listing
```

#### Vérification du WAF

```bash
# Détecter la présence d'un WAF
wafw00f https://<domaine>

# Tester si le WAF bloque les injections basiques
curl "https://<domaine>/page?id=1' OR '1'='1"
curl "https://<domaine>/page?q=<script>alert(1)</script>"
# Attendu : 403 ou redirection vers page d'erreur WAF
```

---

## Phase 5 — Scoring des vulnérabilités (CVSS v3.1)

```
Score CVSS = f(AV, AC, PR, UI, S, C, I, A)

AV  – Attack Vector      : Network > Adjacent > Local > Physical
AC  – Attack Complexity  : Low > High
PR  – Privileges Required: None > Low > High
UI  – User Interaction   : None > Required

Scores :
9.0 – 10.0  Critique  → correction immédiate (24–48h)
7.0 – 8.9   Élevé     → correction sous 7 jours
4.0 – 6.9   Moyen     → correction sous 30 jours
0.1 – 3.9   Faible    → correction sous 90 jours
```

**Facteurs aggravants :** données personnelles exposées, système critique/OIV, exposition internet directe, exploit public disponible.

**Facteurs atténuants :** système isolé (air-gap), contrôle compensatoire existant, faible probabilité d'exploitation.

---

## Phase 6 — Restitution et rapport

### Structure du rapport

```
rapport-audit-securite/
├── 1. Résumé exécutif (1–2 pages)
│   ├── Périmètre et dates
│   ├── Synthèse des constats (tableau)
│   └── Top 5 recommandations prioritaires
│
├── 2. Contexte et méthodologie
│
├── 3. Constats détaillés
│   └── VUL-001 : description · preuve · CVSS · impact · recommandation
│
├── 4. Plan de remédiation (PACS)
│   └── Tableau priorisé (criticité + délai)
│
└── 5. Annexes (outputs outils, CVE, CWE, OWASP)
```

### Template fiche de vulnérabilité

```markdown
## VUL-001 — [Titre court]

**Criticité** : Critique / Élevée / Moyenne / Faible
**Score CVSS** : X.X (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
**Système affecté** : 10.x.x.x — Nom du service
**CVE associée** : CVE-XXXX-XXXXX

### Description
[Explication claire de la vulnérabilité]

### Preuve (Proof of Concept)
[Output de l'outil / commande / screenshot]

### Impact potentiel
[Ce qu'un attaquant peut faire]

### Recommandation
[Action concrète à réaliser]

### Délai de correction recommandé
[Immédiat / 7 jours / 30 jours / 90 jours]
```

---

## Phase 7 — Suivi et remédiation

```
Tableau de suivi (PACS) :
| ID     | Vulnérabilité        | Criticité | Responsable | Délai    | Statut   |
|--------|----------------------|-----------|-------------|----------|----------|
| VUL-001| SMBv1 actif          | Critique  | DSI         | 48h      | En cours |
| VUL-002| MFA non déployé      | Élevée    | RSSI        | 7 jours  | Planifié |
| VUL-003| Certificat expiré    | Moyenne   | DSI         | 30 jours | Ouvert   |
```

```bash
# Re-test après correction — exemples
nmap --script smb-protocols -p 445 <cible>      # SMBv1 désactivé ?
nmap --script smb-vuln-ms17-010 -p 445 <cible>  # EternalBlue patché ?
testssl.sh <domaine>                             # TLS corrigé ?
dig AXFR @<ns> <domaine>                        # Zone transfer bloqué ?
```

---

## Outils de référence

| Outil | Usage | Licence |
|---|---|---|
| **Nmap** | Scan réseau, découverte | Gratuit |
| **testssl.sh** | Audit TLS/SSL complet | Gratuit |
| **dnsrecon** | Énumération DNS | Gratuit |
| **Lynis** | Audit configuration Linux | Gratuit |
| **Nikto** | Audit serveurs web | Gratuit |
| **wafw00f** | Détection WAF | Gratuit |
| **OWASP ZAP** | Audit applications web | Gratuit |
| **BloodHound** | Audit Active Directory | Gratuit |
| **OpenVAS/GVM** | Scanner de vulnérabilités | Gratuit |
| **Nessus Essentials** | Scanner de vulnérabilités | Gratuit (16 IPs) |
| **Burp Suite Community** | Proxy web, tests manuels | Gratuit |
| **CIS-CAT Lite** | Conformité CIS Benchmarks | Gratuit |

<Tip>
Utiliser le **template interactif d'audit** pour tracker les 60 contrôles ISO 27002:2022 + RGPD en temps réel, documenter les preuves et générer le rapport Markdown automatiquement.
</Tip>
