On a un fichier avec l’énoncé. Il s’agit d’une capture réseau dont la principale activité est un échange SSL TLS sur un port non standard 4433. Le but de l'exploitation est de recréer la clé privé qui a permis d'émettre le certificat (clé publique) pour pouvoir déchiffrer l'ensemble de la capture réseau.
Étape 1 : Extraction du certificat
Ouvrir la capture avec Wireshark
Sur le paquet 7 : “Server Hello , Certificate , Server Hello
Done”
Dans la catégorie “Secure Socket Layer” du paquet
On fait un clique droit sur “Certificate” ⇒ “Export selected packets bytes”
et on enregistre en cert.der
Étape 2 : convertir le .der en .pem
On utilise Openssl
pour effectuer la conversion :
openssl
x509 -inform
der -in
cert.der -out
pubkey.pem
Il faut ensuite
extraire le modulo de la clé publique :
openssl
x509 -in
pubkey.pem -text -modulus -noout
La sortie est la suivante :
Il faut passer le modulo de l'hexa au décimal
python -c " print int(' ACBE7B776E96F5F357BCE84D959CE53CE0029AFC0E67901D3602F3275FCC7EC41027B84755E1E64C08CCEBAE15F9F5EFC141892F3882781A35CAC58B46797C09',16)"
On regarde si le modulo est connu sur factor-db :
http://factordb.com/index.php?query=9047341136853946158354084931035401403317236404810122825347899274551597323166322064830737050437362451313263605495279468516338542263888005274643061077015561
Le modulo est entièrement factorisé sur le site, ces composantes
sont disponibles.
On a donc :
e=65537
p = 93115437532229212680057875933456519124315804016875130086475798314747218703569
q= 97162633572145015979792735324962427827333894105174165446261955221140018659769
n= 9047341136853946158354084931035401403317236404810122825347899274551597323166322064830737050437362451313263605495279468516338542263888005274643061077015561
Étape 3 : Reconstruire la clé privé
On reconstruit la clé privé avec rsatool
python3 rsatool.py -n 9047341136853946158354084931035401403317236404810122825347899274551597323166322064830737050437362451313263605495279468516338542263888005274643061077015561 -p 93115437532229212680057875933456519124315804016875130086475798314747218703569 -q 97162633572145015979792735324962427827333894105174165446261955221140018659769 -e 65537 -v PEM -o privkey.pem
Le résultat est comme suit :
Étape 4 : Déchiffrer la capture
Pour ce faire il faut aller dans “Edition” ⇒ Préférences ⇒ Protocols ⇒ TLS
On ajoute une nouvelle clé dans “RSA Keys Lists”.
On remplit les champs comme ceci :
ip adresse : 192.168.1.9
port : 4433
Protocol : http
et on met notre fichier privkey.pem
Une fois que c'est fait on obtient :
On fait “Appliquer” et la capture se déchiffre :
Au niveau du paquet n°13, un nouvel onglet Decrypted SSL data devrait être présent. Le contenu est le flag à
valider : twisted by design