Logo CSbyGB

WRITE UP - Challenge Richelieu - in french only

19 Feb 2022

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/ :
Page d'Accueil du Challenge
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:
Code Source de la page d'accueil
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:
PremiĂšre page du PDF
Mais comme je ne suis pas dupe j’ai fait une sĂ©lection de tout le document:
SĂ©lection sur le PDF
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
RĂ©sultat de la commande
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:
Renommage du fichier en PDF

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
RĂ©sultat de 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:
RĂ©sultat de binwalk -e
Voici le contenu du dossier créé par binwalk:
Résultat du ls dans le 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:
Mot de passe
Dézippage et récupération des fichiers
J’ai donc rĂ©cupĂ©rĂ© les fichiers et leur contenus.
Contenu et taille des fichiers que l’on vient d’extraire
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.
Dézippage et récupération des 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:
The sed General Syntax
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:
Openssl
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.
Suite du challenge
On passait ensuite sur la partie Wargame du challenge.
Connexion en ssh au wargame richelieu
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 :
RĂ©sultat 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 DGSE Express
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:
Comment Twitter Geluchat

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