dimanche 28 février 2021

Writeup du challenge réseau ‘packet300’ paru lors des épreuves de qualifications du defcon en 2010

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