# NDH 2019 Voici l'énonce du challenge : ## Au service de la france - partie 1 ``` context Vous êtes Jean-Michel, barbouze aguerrie de notre cher Pays. Vu que vous n'êtes pas très doué en langues étrangères, vous vous êtes spécialisé en informatique. Vous êtes devenu le Kev (Mitnick, pas Adams) de l'agence, et aujourd'hui le travail hardu, c'est pour vous... a propos Ce challenge est le premier d'une série de quatre challenges, qui vous permettra de récupérer suffisamment d'information pour contrer une attaque russe contre la France! Chaque challenge peut se faire de manière indépendante. Cependant, pour inciter les gens à réaliser les challenges dans l'ordre, chaque résolution du challenge numéro N vous donnera un indice pour résoudre le challenge N+1. challenge Le téléphone sonne de manière répétée depuis 10 minutes... Pourtant, il est 5h du matin, vous êtes encore complètement grisé du pot de départ de la veille... Après s'être levé et décrocher le combiné, moment qui vous a paru être une éternité, vous entendez une voix robotique : "- Bon..jour mon..sieur H. Le pi..geon a de..co..llé." Pas le temps de dire "allo?" que ça a raccroché... Cependant, vous savez de qui il s'agit, c'est votre employeur! et ce genre de message ça signifie pas bon... Vous enfilez votre peignoir, et ouvrez votre boîte mail anonymisée gmail. Dedans, vous trouvez le message suivant: ''' To: jeanmichel78@gmail.com From: juliettedu38@gmail.com Objet: Hey cousin, vas mater ma nouvelle vidéo! Salut cousin, j'ai sorti une nouvelle vidéo. Faudrait vraiment que tu la regarde! je te fais plein de bisous Juliette Comme tu m'a appris la dernière fois qu'on s'est vu, ma signature pour dire que c'est bien moi! : PT09PT09PSBCRUdJTiBFTkNSWVBURUQgUExBWUZBSVIgTUVTU0FHRSBJRDo4MzM1ODQ0ODQwODcxMDkyODcxMSAgICAgPT09PT09PQ0KDQpSWVBYVkZOUFZYRUFWQ1pJVkJESFRaVkJET0FWREhDRlJYWEZQQ1RNVFZSTUdCRVZaUlRLQ0FXSE5QQ1RaSENGVENUTVRWTFRUVkVBWUJWSVNGR0NDQU9FVkVLVlJaTlBTWVpTQ0VOVFFUQ1RUQ1JaUEdDWUtQUlpOVEZaUEdCS1lCSUJQTkhaTlpFR1BDRUFVWlFJRUFUTFlCREhUQ0NCS0hWVFlCVkVUTFpHVFZUVlRDWllXSEdQVFJUQ0NBQ0lWRUtWRVBFS1pUWUdHWFRTWEZQQ0VBS09DWUhWTFNFR0tWVE1ESFpPVkVESFFWT1RFVldIS1BWQ0NUUkVWVEdFWk5QTlBDRUFMU1FZQkdUVkZaQ1BWQ1NFTlBHREVYVE5FUFpHTlROUkVBSUJRSUhCRE9BVkRIQ1NESEFWT1RQTlFUSUhaU1hGUENJUFNRUEVSU0VBSUJUVkJGSVBUVlNWUEVFUEtFSFhTUVNST0RCS1BJR0RBTVNOVExaR1RWS1ZWWFBRRVBaRlZRREhBTVJOVkNPVElCS05IU05MRVZWQ0lCSVBCS1FJSFpUVkJGSVBUVkFRVkVUTFpHVFZHWktQWFRCVFBLSUJFQVhHS1RFQVVaUENDRlRTVFBaRkFRQ1RHRVBFS0VGWVFNS1JLSQ0KDQo9PT09PT09PT09PT09PT09PT09PT09RU5EIE1FU1NBR0U9PT09PT09PT09PT09PT09PT09PT09PQ== encore des bisous! ``` Une fois le base 64 decode on obtenais un message chiffré en PLAYFAIR ```csharp ======= BEGIN ENCRYPTED PLAYFAIR MESSAGE ID:83358448408710928711 ======= PXVFNPVXEAV.....SEJBVZBIAEFAEENIRS ============================================================================ ``` Few moment later ... Apres quelques heures de recherche sur la mathode de chiffrement je tombe sur un git afin de le bruteforce git clone https://github.com/N8Stewart/PlayfairCrack.git ```csharp echo RYPXVFNPVXEAVCZI...I > cipher.txt ./crack < cipher.txt ``` ```csharp user@parrot]─[~/Downloads/PlayfairCrack] └──╼ $./crack < chip.txt Attempting to crack the following ciphertext with key: ABCDEF.. Iteration: 337507, best score: -3041.5569, Current key: RXVNLPQUSYDFHIZAMGBEKWOTC Iteration: 365548, best score: -3024.3524, Current key: QMOLZXNCEVUHDPFBAST Possible Plaintext found using key: K X I O D Y F G H U A S T R Z N C E V B L M P Q W AHMICHELCONTENTDEVOUSREVOIRNOUSXSOMXMESPRESQUECERTAINSQUELESRUSXSESPREPARENTUNEOFXFENSIVECONTRELAFRANCEAPRESSETREINFILTREAUSEINDUNDELEURBATIMENTDUPONTAPUNOUSENVOYERUNECAPTURERESEAUQUIESTSENSEXECONTENIRSUFFISAMXMENTDINFORMATIONSPOURDECOUVRIRCEQUILENESTVERITABLEMENTMALHEUREUSEMENTCELUICIAETETUEAVANTDEPOUVOIRNOUSFOURNIRLEPROGRAMXMEPERMETTANTDERECUPERERCETTEINFORMATIONDEPUISLACAPTUREONCOMPTESURVOUSLAVENIRDELAFRANCEENDEPENDPOURRECUPERERLECAPTUREUTILISEZLIDENTIFIANTDUMESXSAGESURLESITETINYUPLOADX ``` ... UTILISEZ L IDENTIFIANT DU MESXSAGE SUR LE SITE TINYUPLOADX Un petit tour sur tiny upload pour télécharger le fichier avec l'ID et on récupere le flag :) ```csharp ──╼ $cat flag.txt Bien joué, tu as résolu le premier challenge! Après avoir rentré le flag, n'hésite pas à continuer, mais je te préviens, ce sera plus dur! Pour la suite de l'histoire, va voir la page du challenge "au service de la france - partie 2". Indice pour la suite: Le flag est présent au sein d'un protocole que l'on a pas l'habitude de voir. voici le flag: LH{awmerbx2cft4u5uqgnde} ``` ## Woods A9mimmf7S7UBAAMAA....PWmCETygnKQM9KViCbKr/QtUzbXKNYw== Base64 to file File is a pcap pcap contain some connexion to ### Première methode ```bash #!/bin/sh while read i do echo "Using password: \"$i\"" echo "$i" | kpcli --kdb=$1 && exit 0 done < $2 ``` Au vu des combinaisons possibles cette methode et beaucoup trop longue, je crée donc un dico perso afin de bruteforce le hash du keypass ```python ──╼ $cat kdb | base64 -d > secret.kdbx ──╼ $crunch 4 4 0123456789 -o date.lst #!/usr/bin/env python3 with open("date.lst") as f: for line in f: print ("woods"+line) ──╼ $keepass2john mysecret.kdbx mysecret:$keepass$*2*100000*0*8f9ff5c0beb19d907a4efd440fa6a13cb4617d3fe69c65b81a2355a0da86293e*fb0fdb881ae37cddc010f3fa6364e998594c7ee2c8443830643086b1fab79cd1*26cbe9eda1e382bf94446787b015a4db*0ced75d26cad9e29643cf1dfdebe029309b09637f4ea591323da4f8a7cba90d0*7e63a8b1c6a489e6b9fb08bdd891c49f0220496a182263858a8be91d38c49b0 ``` [Crack avec hashcat] Boom ! woods0180 Le reste était plutot simple il suffisait de l'ouvrir et la premiere ligne vide contenait le flag :) ```csharp ──╼ $kpcli --kdb=mysecret.kdbx kpcli:/> ls === Groups === Root/ kpcli:/> cd Root/ kpcli:/Root> ls === Entries === 0. 1. My Best Friend 2. My best plan boards.4channel.org/sp kpcli:/Root> show -f 0 Title: Uname: Pass: lh_{I1oVeG0lfAndSex..W4IT.MyWiFe} URL: Notes: ``` ## Forensic Le challenge de forensic mettait à disposition une archive ZIP. Let's Forensic :D ```bash └──╼ $file 103_spx.zip 103_spx.zip: Zip archive data, at least v2.0 to extract ``` Un petit binwalk afin de savoir que ce cache dans le bouzin ! ```csharp └──╼ $binwalk 103_spx.zip DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 Zip archive data, at least v2.0 to extract, compressed size: 4049816, uncompressed size: 260046848, name: USB_a_analyser 4049972 0x3DCC34 End of Zip archive, footer length: 22 ``` Avec l'option **-e** on peut extraire les fichiers, et ainsi les explorer ```bash ─[user@parrot]─[~/Downloads/FORENSIC/_103_spx.zip.extracted] └──╼ $ls 0.zip Peugeot103SPXFILI.jpg image.dd.deletedfile.txt 'Peugeot 103 SPX : tous les modèles de 1987 à 2003 | Actualités de la mobylette par Mobylette Mag_files' logins.txt USB_a_analyser message.txt YOLO ``` ```bash ┌─[✗]─[user@parrot]─[~/Downloads/FORENSIC/_103_spx.zip-0.extracted] └──╼ $ls 0.zip USB_a_analyser ``` On apprend que du chiffrement est de mise, on obtien un secret et une piste sur la methodo de chiffrement **openssl** ```bash ┌─[user@parrot]─[~/Downloads/FORENSIC/_103_spx.zip.extracted] └──╼ $cat message.txt Si un jour je relis ce message, le mot de passe utilisé pour chiffrer mon plus grand secret était "vgrohhfyek0wkfi5fv13anexapy3sso6" et j'avais utilisé openssl. En revanche, j'ai effacé par erreur le fichier contenant mon plus grand secret (voir s'il existe des techniques de la mort pour le retrouver mon fichier secret.xz sha256(0fb08681c2f8db4d3c127c4c721018416cc9f9b369d5f5f9cf420b89ee5dfe4e) de 136 octets) et de toute façon, impossible de me rappeler de l'algo utilisé -_- (donc si je le retrouve... il faudra aussi retrouver l'algo pour utiliser ce mot de passe). ``` ```bash ls dr-xr-xr-x 0 0 0 6-Jul-2019 08:14 . dr-xr-xr-x 0 0 0 6-Jul-2019 08:14 .. dr-xr-xr-x 0 0 0 6-Jul-2019 08:14 .Trash-1000 dr-xr-xr-x 0 0 0 6-Jul-2019 08:12 Peugeot 103 SPX : tous les modèles de 1987 à 2003 | Actualités de la mobylette par Mobylet -r--r--r-- 0 0 68873 6-Jul-2019 08:12 Peugeot 103 SPX : tous les modèles de 1987 à 2003 | Actualités de la mobylette par Mobylet -r--r--r-- 0 0 15041 5-Jul-2019 19:46 Peugeot103SPXFILI.jpg -r--r--r-- 0 0 577 6-Jul-2019 08:10 message.txt ``` Dans les fichier suprrimer Directory /.Trash-1000/files ```bash dr-xr-xr-x 0 0 0 6-Jul-2019 08:14 . dr-xr-xr-x 0 0 0 6-Jul-2019 08:14 .. dr-xr-xr-x 0 0 0 6-Jul-2019 08:13 CERT-FR – Centre gouvernemental de veille, d'alerte et de réponse aux attaques informatiqu dr-xr-xr-x 0 0 0 6-Jul-2019 08:12 Peugeot 103 — Wikipédia_files -r--r--r-- 0 0 32828 6-Jul-2019 08:13 CERT-FR – Centre gouvernemental de veille, d'alerte et de réponse aux attaques informatiqu -r--r--r-- 0 0 154178 6-Jul-2019 08:12 Peugeot 103 — Wikipédia.html -r--r--r-- 0 0 136 6-Jul-2019 08:09 secret.xz ``` ─[user@parrot]─[~/Downloads/FORENSIC/_103_spx.zip-0.extracted] └──╼ $ls 0.zip message.txt Peugeot103SPXFILI.jpg 'Peugeot 103 SPX : tous les modèles de 1987 à 2003 | Actualités de la mobylette par Mobylette Mag_files' USB_a_analyser ### STEP 2 – FINDING FILES & RESTORING L'extraction avec **testdisk** n'as pas fonctionner il m'a fallut trouver un autres moyens d'extraire la data supprimé ```csharp fls -rd USB_a_analyser > USB.deletedfile.txt └──╼ $cat USB.deletedfile.txt r/- * 0: .Trash-1000/info/secret.xz.trashinfo.ntfs-3g-0000000005 -/r * 138-128-2: .Trash-1000/info/Peugeot 103 — Wikipédia.html.trashinfo.ntfs-3g-0000000003 -/r * 144-128-2: .Trash-1000/info/Peugeot 103 — Wikipédia_files.trashinfo.ntfs-3g-0000000004 -/r * 152-128-2: .Trash-1000/info/secret.xz.trashinfo.ntfs-3g-0000000005 r/- * 0: secret.xz r/r * 66-128-2(realloc): secret.xz -/r * 16: $OrphanFiles/OrphanFile-16 -/r * 17: $OrphanFiles/OrphanFile-17 -/r * 18: $OrphanFiles/OrphanFile-18 -/r * 19: $OrphanFiles/OrphanFile-19 -/r * 20: $OrphanFiles/OrphanFile-20 -/r * 21: $OrphanFiles/OrphanFile-21 -/r * 22: $OrphanFiles/OrphanFile-22 -/r * 23: $OrphanFiles/OrphanFile-23 icat USB_a_analyser 66-128-2 > secret.txt └──╼ $cat secret.txt �7zXZ�ִF!t/�OSalted__��k��.�@���>�#��z��� �S�n���!��O�ND�5����k�b=��N-�㖿�,��s�٪W9v�4���hPp����}YZ ``` 5H 30 Du mat je dois arrêté pour reprendre le train pour rentrer sur lyon pas le temps de bruteforcer l'openssl :/ Mais ce fut une belle journée boucle pour trouver le bon openssl https://blog.seboss666.info/2019/07/writeup-lehack-2019-103spx/