Méthodologie d'Investigation Réseau : Analyse d'une Attaque Web via Wireshark (Cas BookWorld)¶
Cette fiche documente la méthodologie d'analyse d'une capture réseau (WebInvestigation.pcap) via Wireshark (interface graphique), dans le cadre de l'investigation d'une attaque web multi-étapes sur un serveur e-commerce : injection SQL, brute-force du panneau d'administration, puis upload d'un webshell.
0. Vue d'ensemble du trafic¶
Statistics → Protocol Hierarchy Donne la répartition des protocoles présents dans la capture (volumétrie par protocole/sous-protocole).
Statistics → Conversations → onglet IPv4 Liste les paires d'IP en communication, triable par nombre de paquets/octets (clic sur l'en-tête de colonne "Frames"). Permet d'identifier rapidement l'IP la plus active du trafic.
1. Identification de l'IP attaquante¶
Statistics → Conversations → IPv4, tri décroissant sur la colonne "Frames".
Filtre de confirmation :
2. Géolocalisation de l'IP attaquante¶
Wireshark ne fait pas de géolocalisation native. Une fois l'IP identifiée à l'étape précédente, sortir de Wireshark et effectuer une recherche via un service externe de géolocalisation IP (whois, GeoIP lookup).
3. Identification du script PHP vulnérable¶
Filtre :
Ajout d'une colonne personnalisée pour visualiser les URI en liste :
- Clic droit sur un paquet HTTP → champ
Hypertext Transfer Protocol→Request URI→ Apply as Column
Tri chronologique (colonne Time par défaut) et lecture visuelle des URI pour repérer le script ciblé de façon répétée avec des payloads suspects dans ses paramètres.
4. Première requête d'injection SQL (SQLi)¶
Filtre pour isoler les requêtes contenant une syntaxe d'injection :
http.request.uri contains "search=" and (http.request.uri contains "27" or http.request.uri contains "OR" or http.request.uri contains "AND")
- Tri chronologique croissant.
- Repérer la première occurrence contenant une syntaxe SQL structurée (opérateur logique + commentaire SQL).
- Clic droit sur le paquet → Copy → Value pour extraire l'URI brute (encodée URL).
- Décodage : coller la valeur extraite dans un outil de décodage URL externe (ex. CyberChef, ou tout décodeur
%XX→ caractère).
5. Requête d'énumération des bases de données¶
Filtre :
Même procédure de copie/décodage que l'étape précédente sur le résultat obtenu.
6. Identification de la table contenant les données utilisateurs¶
Filtre pour isoler les requêtes d'énumération de structure de base de données :
http.request.uri contains "information_schema.tables" or http.request.uri contains "information_schema.columns"
- Suivre la séquence chronologique des requêtes (typique d'un outil d'exploitation automatisé type sqlmap) : énumération des tables, puis énumération des colonnes de la table ciblée.
- Le nom de table apparaît en clair dans les URI des requêtes suivantes qui la ciblent spécifiquement.
7. Répertoire caché découvert¶
Filtre pour isoler les réponses positives sur les chemins scannés :
Comparer avec l'ensemble des chemins scannés (nombreux 404) pour identifier lequel retourne un code de succès (200/301/302), signalant l'existence réelle du répertoire côté serveur.
8. Identifiants de connexion utilisés¶
Filtre :
- Clic droit sur un paquet du résultat → Follow → HTTP Stream.
- Wireshark reconstruit l'échange TCP complet en clair (requête + réponse).
- Le corps du POST (paramètres
username=/password=ou équivalent) est visible directement en texte lisible. - Naviguer entre les tentatives successives via le bouton Next stream en bas de la fenêtre Follow Stream.
- Identifier la tentative dont la réponse HTTP diffère des autres (code de redirection au lieu d'un réaffichage du formulaire) : c'est la tentative réussie.
9. Script malveillant uploadé¶
Filtre :
- Follow → HTTP Stream sur le paquet identifié.
- Le corps multipart/form-data est visible en clair, incluant le nom du fichier uploadé (
filename="...") et son contenu.
Astuce transverse : colonnes personnalisées¶
Pour éviter de rouvrir Follow Stream à répétition, ajouter des colonnes personnalisées via clic droit sur les champs suivants dans le panneau de détails du paquet → Apply as Column :
http.request.urihttp.request.methodhttp.hosthttp.response.code
Cela transforme la liste de paquets en vue tabulaire navigable, équivalente à une extraction en ligne de commande mais interactive.
Notes méthodologiques générales¶
- Toujours travailler en filtrant d'abord sur l'IP source de l'attaquant une fois identifiée, pour réduire le bruit du trafic légitime.
- Le tri chronologique (ordre naturel des paquets) est essentiel pour reconstituer la timeline d'attaque : reconnaissance → exploitation → post-exploitation.
- Follow HTTP Stream est l'outil central pour lire le contenu applicatif complet (requête + réponse) sans décodage manuel, tant que le trafic est en clair (HTTP, pas HTTPS).
- Pour du texte URL-encodé dans une URI, Wireshark n'effectue pas toujours le décodage automatique dans la liste de paquets : un outil externe de décodage reste nécessaire pour lecture finale.