Hackeuse pour la DGSE â Challenge Richelieu
Article initialement publié le 15 juillet 2019 sur mon ancien blog
Afin dâĂ©toffer ses Ă©quipes la DGSE a organisĂ© un challenge: le Challenge Richelieu.
Pour y accéder, il fallait se rendre sur le site https://challengecybersec.fr/ :
Et câest tout! A moi ensuite dâenquĂȘterâŠ
Premier rĂ©flexe donc, ouvrir la console web et regarder le code source de la page et lĂ jâai dĂ©couvert lâexistence dâun fichier PDF:
JâaccĂšde au fichier en tapant dans le navigateur Ă la suite de lâadresse « /Richelieu.pdf » pour ainsi obtenir ce qui semblait ĂȘtre un fichier PDF de 364 pages avec un texte noir sur fond blanc Ă la premiĂšre page:
Mais comme je ne suis pas dupe jâai fait une sĂ©lection de tout le document:
Et bien sur du texte Ă©tait cachĂ©. Jâai donc sĂ©lectionnĂ© tout le texte et collĂ© dans mon notepad prĂ©fĂ©rĂ©.
En voici un extrait:
/9j/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc1p9tZ++u7Kfr6zI4f/zyNT/16yv+v/9//// ////wfD//////
///////wgALCA20CD4BAREA/8QAGQABAQEBAQEAAAAAAAAAAAAAAAECAwQF/9oA CAEBAAAAAeFzUWUsiyzUFlgFg
ChLKud5lms2KluaLBNZs1neNSaRclSxqWLJ0xYVNQFyusxQlA1M 6iyhNRKQrUpCxKuNJqUEqyywmoIosUgm
osZ1nSWxYlzbOYEWFlRZQssFlRUAqWGsgsspc6zZUsqW WWagXNlihKCywVZcrLZLYWLEspYssRalJqEmpTQzqC
aSNXNualoEUzKQVQlSiklslFRKOUosLIai UlAChFhYohYCoVc6ksAsLLKSyzeNSakWwlsBSyClipKAlSpZpJSrJ
RFllKVneUpVzVkVFTUsLCFm kmoiyiWS1c0SyWrOVyssoRUsompYAVLBUqxLKlslhZUqUAJqWCWakqWWazpEtgsa
zrNlhYsti5qw WLBYWWxYljWRZWpWdJrnbc3UzaSqlSasiTSaJYkprNhYaixE1E05AlslRUsUlqFgssBZZZvBYsWL
LNZVKjWbYJVkoubFE1JaRYllUSglJSahYm8ypVlCpYGsakVUq5E3Gue7lTNUsubFShYSoWWGoms6 ksKLnTiWSy2EUhZq
ShQRZrJYUiywssLLCpSW51C53m5KQqVKsWEsosVKXO8zeLLWaWNZ1JZYWVKs lJbnebnSWoE0lzpBQEhbGksAiy3G2ds
yqZtzpmiuIssRSWLLYSgWWak1lYsssLLFJUWWGs2LNQJr OoItiW5WazU1BUCWoq5azSaRNSxrIsCxUbzYJrO83OmkY
3Cpc6li5usXRLjZmhQICbxTNLqZ1mxL Y1eFgLJUoRbE0lgKgApc2VBUDWSzWVEqFSypbmhNSy5sqazSVrKoFiwtzZW
srKiakpZUVLKudZ1n
Jâai reconnu un encodage de base64. Jâai ensuite dĂ©codĂ© ce texte et testĂ© un « strings » sur le fichier :
strings richelieu.dat
Jâai ainsi obtenu une liste de fichiers et un mot de passe.
Il y a donc des fichiers inclus dans le PDF. Je vous passe mes recherches approfondies sur les structures des PDF (je vous renvoie vers les liens de fin dâarticle si vous souhaitez en savoir plus, je vous y invite vivement car câest passionnant).
Il est Ă©galement intĂ©ressant de noter que si lâon renomme le fichier en jpg on obtient une image:
RĂ©pondons maintenant Ă la question que lâon est amenĂ© Ă se poser, en tout cas que je me suis posĂ©e longuement en ce qui me concerne.
Comment dois-je faire pour récupérer les fichiers et les extraire? Il existe un outil trÚs pratique pour ceci: binwalk
Binwalk affiche tous les fichiers que lâon nous avait promis, câest bon signe! Je vais pouvoir les extraire grĂące Ă lâoption -e
Ici mon fichier sâappelle base64.jpg, binwalk va crĂ©er un dossier _base64.extracted
et y mettre tout ce quâil aura pu extraire:
Voici le contenu du dossier créé par binwalk:
Jâai ensuite tentĂ© de dĂ©zipper le fichier 6CCBC.zip (le mot de passe du zip est celui trouvĂ© prĂ©cĂ©demment dans le base64:
Jâai donc rĂ©cupĂ©rĂ© les fichiers et leur contenus.
Il est important de noter Ă cette Ă©tape quâen voyant les fichiers obtenus et leur noms, il mâa semblĂ© que jâallais devoir cracker une clĂ© RSA⊠Je dispose en effet dâune clĂ© publique « public.key » et dâun Ă©trange fichier « prime.txt ».
Je me suis donc attaquée à la compréhension du .bash_history
. En connaissant un peu Linux on peut savoir que le .bash_history
contient lâhistorique des commandes tapĂ©es. Jâai donc fait un cat sur le fichier pour savoir ce qui a Ă©tĂ© tapĂ© pour crĂ©er les fichiers.
Je remarque plusieurs utilisation de la commande sed qui fonctionnent avec des expressions rĂ©guliĂšres. Une petite recherche mâa permis dâen savoir plus:
Je comprends que prime.txt est une clĂ© RSA mais quâelle a Ă©tĂ© modifiĂ©e avec la commande sed.
Voici ce qui a été effectué grùce à sed:
// 7f a été remplacé par fb sur tout le document
1342 sed -i âs/7f/fb/gâ prime.txt
// e1 a été remplacé par 66 sur tout le document
1343 sed -i âs/e1/66/gâ prime.txt
// f4 a été remplacé par 12 sur tout le document
1344 sed -i âs/f4/12/gâ prime.txt
// 16 a été remplacé par 54 sur tout le document
1345 sed -i âs/16/54/gâ prime.txt
// a4 a été remplacé par 57 sur tout le document
1346 sed -i âs/a4/57/gâ prime.txt
// b5 a été remplacé par cd sur tout le document
1347 sed -i âs/b5/cd/gâ prime.txt
Ici il faudrait donc taper les commandes Ă lâinverse pour retrouver le fichier dâorigine.
Je vais maintenant essayer de comprendre en quoi consiste la commande :
openssl rsa -noout -text -in priv.key | grep prime1 -A 18 > prime.txt
GrĂące Ă une recherche jâapprend ceci:
Cette commande permet donc juste dâafficher la clĂ© privĂ©.
Jâai eu quelques difficultĂ©s sur cette partie du fait de mon manque de connaissances en cryptographie.
Jâai donc fait des recherches afin de continuer car jâĂ©tais curieuse de savoir sur quoi cela allait dĂ©boucher. Jâai pu trouver le mot de passe pour dĂ©compresser suite.zip.
Ce zip contenait un fichier texte avec des informations nécessaires à la continuation du défi.
Il était possible de se connecter en ssh à un serveur dédié au challenge.
On passait ensuite sur la partie Wargame du challenge.
Jâai un peu jouĂ© avec le dĂ©fi 1 mais jâai malheureusement manquĂ© de temps pour finir les dĂ©fis. En manipulant un peu le dĂ©fi 1, jâai compris quâil sâagit dâun buffer overflow Ă exploiter.
En effet voici le rĂ©sultat dâun ls -al :
Je nâai Ă©videmment pas les droits nĂ©cessaire pour faire un cat sur « drapeau.txt ». Je sais que je peux exĂ©cuter le programme grĂące aux droits que jâai a sur prog.bin : -r-sr-sr-x
Je lâai donc lancĂ© et jâai pu mâamuser un moment avec les diffĂ©rentes options⊠Fun fact: avec lâoption 3 jâai vu devant mes yeux Ă©bahis un petit train qui passait sagement:
Le principe ici Ă©tait dâexploiter le buffer overflow pour faire des commandes rĂ©servĂ©es Ă root. En effet, jâavais notĂ© la prĂ©sence du « s » sur le programme prog.bin. Ce « s » permet Ă lâexĂ©cutable dâeffectuer des commandes que le propriĂ©taire du fichier aurait pu faire. Câest grĂące Ă ceci que jâai pu en apprendre plus sur la fameuse attaque: « return oriented programming ». En exploitant cette attaque jâaurais pu essayer de faire faire un cat drapeau.txt par le programme.
Note importante: GrĂące Ă Geluchat sur Twitter jâai appris que la dĂ©marche Ă©tait bien plus simple que ce que jâimaginais pour le dĂ©fi 1 du wargame:
VoilĂ donc mon expĂ©rience sur le challenge Richelieu. Jâai beaucoup aimĂ© parce-que jâai appris Ă©normĂ©ment sur les pdf et jâai pu dĂ©couvrir la return oriented programming attack. Je trouve important de noter que mĂȘme si lâon ne peut pas ou lâon a pas forcĂ©ment le temps dâaller au bout des dĂ©fis on apprend Ă©normĂ©ment mĂȘme en y conscrant peu de temps.
Je vous invite donc si vous avez lâoccasion Ă faire le prochain dĂ©fi proposĂ© par la DGSE, qui sait, vous serez peut-ĂȘtre embauchĂ©s!
Pour aller plus loin
- Portail de la DGSE
- Un write-up brillant par @_nwodtuhs
- La référence officielle des PDF
- Explications sur la structure dâun PDF
- Les présentations de corkami sur les PDF
- Understanding linux file permission
- Module binwalk de Kali Linux
- La return oriented programming attack sur Wikipedia
- La return oriented programming - Geluchat
- Windows Exploit 64 bits ROP - Geluchat