Retour à l'accueil
Analyse de trame réseau · Extraction d’identifiants

Trame HTTP & Basic Auth

Dans ce write-up complet, nous allons décortiquer une trame brute, identifier une requête HTTP, localiser l’en-tête Authorization et décoder les identifiants cachés derrière un encodage Base64. Une mise en situation réelle de renseignement réseau.

Analyse réseau HTTP Basic Authentication Base64 Wireshark

Présentation du Challenge

L’énoncé est le suivant :
« Retrouvez les données normalement confidentielles contenues dans cette trame. »

trame_hexadécimale.txt
00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00
00 00 00 9b 06 40 26 07 53 00 00 60 2a bc 00 00
00 00 ba de c0 de 20 01 41 d0 00 02 42 33 00 00
00 00 00 00 00 04 96 74 00 50 bc ea 7d b8 00 c1
d7 03 80 18 00 e1 cf a0 00 00 01 01 08 0a 09 3e
69 b9 17 a1 7e d3 47 45 54 20 2f 20 48 54 54 50
2f 31 2e 31 0d 0a 41 75 74 68 6f 72 69 7a 61 74
69 6f 6e 3a 20 42 61 73 69 63 20 59 32 39 75 5a
6d 6b 36 5a 47 56 75 64 47 6c 68 62 41 3d 3d 0d
0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 49 6e 73
61 6e 65 42 72 6f 77 73 65 72 0d 0a 48 6f 73 74
3a 20 77 77 77 2e 6d 79 69 70 76 36 2e 6f 72 67
0d 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d
0a
Représentation hexadécimale de la trame réseau (IPv6, TCP, HTTP)

Le but est d’extraire de cette trame des informations sensibles. L’énoncé parle de « données confidentielles », ce qui nous oriente vers des identifiants de connexion, des tokens ou des clés.

Décryptage de la trame brute

La trame est donnée en notation hexadécimale, octet par octet (deux caractères hexadécimaux par octet). Pour comprendre son contenu, nous devons interpréter cette suite d’octets selon les protocoles réseaux.

Qu’est-ce qu’une trame réseau ?
Une trame est une unité de données transmise sur un réseau. Elle est constituée d’en-têtes (Ethernet, IP, TCP, etc.) suivis de la charge utile (payload), qui contient les données de l’application (ex: requête HTTP). Analyser une trame brute permet de voir exactement ce qui a transité sur le fil.

Commençons par repérer les premiers octets : 00 05 73 a0 00 00 ... cela ressemble à une adresse MAC Ethernet. Les en-têtes Ethernet et IP occupent les premières lignes. On peut utiliser un outil comme Wireshark ou un analyseur en ligne pour décoder la trame, mais nous allons procéder manuellement pour l’apprentissage.

En observant la trame, on voit apparaître plus tard les octets 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 qui correspondent à la chaîne ASCII GET / HTTP/1.1. C’est une requête HTTP simple.

ASCII extrait
47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31
      G  E  T     /     H  T  T  P  /  1  .  1

Nous avons donc une requête HTTP. Le reste de la trame après cette ligne contient les en-têtes HTTP, qui sont également en ASCII.

La ligne suivante (après 0d 0a qui est le retour à la ligne CRLF) commence par 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e soit Authorization. C’est l’en-tête qui nous intéresse.

Identification de la requête HTTP

La requête HTTP est une méthode GET sur la racine (/) avec la version HTTP/1.1. Les en-têtes suivants sont :

  • Authorization — contient les identifiants encodés.
  • User-AgentInsaneBrowser (un navigateur fictif).
  • Hostwww.myipv6.org (le serveur cible).
  • Accept*/* (accepte tout type de contenu).

L’en-tête Authorization est utilisé pour transmettre des informations d’authentification au serveur. Dans le cas présent, il utilise le schéma Basic.

En-tête Authorization
Authorization: Basic Y29uZmk6ZGVudGlhbA==

Le mot-clé Basic indique l’utilisation de l’authentification HTTP Basic, qui consiste à envoyer un nom d’utilisateur et un mot de passe concaténés par un deux-points (:) et encodés en Base64. C’est un mécanisme simple mais non sécurisé si la connexion n’est pas chiffrée (HTTPS).

L’en‑tête Authorization et son importance

HTTP Basic Authentication
Défini par la RFC 7617, ce mécanisme transmet les identifiants sous la forme Basic <base64-credentials>. Les identifiants sont le nom d’utilisateur suivi de deux-points puis du mot de passe, le tout encodé en Base64. Il n’offre aucune confidentialité ni intégrité à moins d’utiliser TLS/HTTPS. C’est un standard ancien mais encore utilisé dans des API internes ou des interfaces d’administration.

Dans notre trame, la partie encodée est :

Valeur Base64
Y29uZmk6ZGVudGlhbA==

Cette chaîne est un encodage Base64 d’une chaîne en clair. Le Base64 est un codage qui permet de représenter des données binaires en utilisant un alphabet de 64 caractères (A-Z, a-z, 0-9, +, /). Il est souvent utilisé pour transporter des données dans des contextes textuels (comme les en-têtes HTTP).

Attention : le Base64 n’est pas un chiffrement ; c’est un simple encodage. Il ne protège pas les données.

Décodage Base64

Pour obtenir les identifiants, nous devons décoder la chaîne Base64. Plusieurs méthodes sont possibles :

  • En ligne de commande Linux : echo "Y29uZmk6ZGVudGlhbA==" | base64 -d
  • En Python : import base64; base64.b64decode("Y29uZmk6ZGVudGlhbA==").decode()
  • Sur le web : des outils en ligne comme base64decode.org.

Décodons-la mentalement : la chaîne se décode en confi:dential. En effet :

Résultat du décodage
confi:dential

Le deux-points sépare l’identifiant (confi) du mot de passe (dential).

Identifiant
Partie avant le deux-points : confi. Cela peut être un nom d’utilisateur, un compte, etc.
Mot de passe
Partie après le deux-points : dential. Le secret associé.
Les données confidentielles sont donc : confi:dential

Résultat final

Le challenge est résolu : nous avons extrait les identifiants de connexion confi:dential. Ces données étaient effectivement confidentielles et n’auraient pas dû transiter en clair, même encodées en Base64.

Identifiants extraits
confi:dential

Cette extraction illustre l’importance de la surveillance réseau et de la protection des identifiants. Un attaquant qui capture une trame HTTP non chiffrée peut facilement récupérer ces informations.

Enjeux de sécurité et recommandations

Ce challenge met en lumière plusieurs bonnes pratiques de sécurité :

  • 01
    Utiliser HTTPS / TLS — toute communication sensible (identifiants, tokens) doit être chiffrée pour éviter l’écoute sur le réseau. L’en-tête Authorization en clair est inacceptable.
  • 02
    Ne pas se fier au Base64 — le Base64 n’est pas une protection, c’est un encodage. Il ne doit pas être considéré comme un mécanisme de sécurité.
  • 03
    Privilégier des schémas d’authentification plus robustes — comme Bearer avec des tokens JWT, ou OAuth, qui peuvent inclure des signatures et des durées de vie limitées.
  • 04
    Surveiller les flux réseau — les administrateurs doivent utiliser des outils (IDS, Wireshark) pour détecter les fuites de données.

Dans un contexte de test d’intrusion, la capture de trafic et l’analyse des en-têtes HTTP sont des techniques fondamentales pour découvrir des failles de sécurité.

Quiz – Validation des acquis

Clique sur une question pour révéler la réponse.

Q1Quel est le protocole utilisé par la requête identifiée dans la trame ?+
→ HTTP (HyperText Transfer Protocol)
Q2Que signifie le mot « Basic » dans l’en-tête Authorization ?+
→ Il indique l’utilisation du schéma d’authentification HTTP Basic, qui transmet les identifiants encodés en Base64.
Q3Le Base64 est-il un algorithme de chiffrement ?+
→ Non, c’est un encodage réversible, sans clé. Il ne protège pas les données.
Q4Quel est le séparateur entre le nom d’utilisateur et le mot de passe dans les identifiants Basic ?+
→ Le deux-points ( : )
Q5Quelle est la principale mesure de sécurité à appliquer pour protéger ce type d’informations ?+
→ Utiliser HTTPS (TLS) pour chiffrer toute la communication.