> For the complete documentation index, see [llms.txt](https://writeups.ayweth20.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://writeups.ayweth20.com/2022/operation-kernel/reverse/cryptolocker.md).

# CryptoLocker

**Categorie:** Reverse - **Points:** 100 - **Difficulté:** Très simple - **Solves:** 250\
**Description:**\
Les preneurs d'otages ne sont que des mercenaires payés pour faire le sale travail. Aucun d'entre eux n'a suffisamment d'information pour identifier les commanditaires.\
Une fois la situation revenue sous contrôle, Lise MITENER a récupéré son ordinateur personnel. Malheureusement, cette dernière nous indique que ces fichiers sont devenus illisibles.\
Visiblement, la totalité de ses documents a été chiffrée. Nos équipes ont pu retrouver l'exécutable à l'origine de cette modification, voyez s'il est possible d'en extraire des informations nous permettant de remonter la trace des commanditaires.\
Bien commencer : Il est fort probable que les preneurs d'otage n’ont pas été payés uniquement pour chiffrer les fichiers de madame MITENER. Les commanditaires sont surement intéressés par ses recherches, ainsi, les documents ont probablement été téléversés sur un serveur distant.\
Fichier :

{% file src="/files/iH69CWP6po8ivMNjeEqK" %}

**Indice:**

> Le développeur a masqué l'URL et les informations d'identification dans une variable codée en dur.

**Solution:**\
Pour résoudre ce challenge il faut trouver les informations d'un "serveur" pour pouvoir retracer les preneurs d'otage. Avec l'indice en plus, nous savons clairement quoi chercher.\
Donc la première chose que je fais quand je dois faire du reverse, c'est de mettre le fichier sur une machine isolée (sait-on jamais) et de l'éxecuter pour voir son fonctionnement.\
Cela me permet de voir ce qui est demandé (input) et renvoyé par le programme.\
Ici lorsque nous l'exécutons, nous voyons qu'il nous demande une "clé" pour encrypter les fichiers :\
![image](https://user-images.githubusercontent.com/91023285/178150620-67fa1f5c-6ca5-40d8-8c73-f93623b06516.png)

Nous voyons donc maintenant comment le programme est exécuté et nous pouvons donc passer à l'étape du reverse avec le l'outil *Ghidra*.\
La phrase que nous avons recueillis plus tôt (*Enter the key*) va nous permettre de faire une recherche à l'aide du menu "*Search > For strings*" et de trouver directement le endroit où chercher :\
![image](https://user-images.githubusercontent.com/91023285/178150794-8e9c533d-feb9-4ab6-9cf3-41d91b726424.png)

En regardant un peu plus bas, nous pouvons voir des chaines de caractères en base64 :\
[![image](https://user-images.githubusercontent.com/91023285/178151695-6de441b3-5c09-49e5-a7e6-5ec315fc8031.png)](https://user-images.githubusercontent.com/91023285/178151695-6de441b3-5c09-49e5-a7e6-5ec315fc8031.png)\
`dXNlcj1ib3QmcGFzc3dvcmQ9VzBya18xbl9QUjBHUnM1` -> |Base64 decode| -> `user=bot&password=W0rk_1n_PR0GRs5`

![image](https://user-images.githubusercontent.com/91023285/178151709-9d38c883-6769-40d1-8420-14cf3765574d.png)\
`aHR0cHM6Ly9jY29mZmVlLmNoYWxsZW5nZS5vcGVyYXRpb24ta2VybmVsLmZyL2MyZW5jcnlwdC5weQ==` -> |Base64 decode| -> `https://ccoffee.challenge.operation-kernel.fr/c2encrypt.py`

Nous essayons donc d'accéder à l'URL récupérée mais il y a un souci... Nous essayons donc d'enlever la fin (`encrypt.py`) et maintenant nous arrivons sur une page de connexion où nous rentrons nos infos :\
![image](https://user-images.githubusercontent.com/91023285/178151988-5afe83c1-29d4-4f8f-8feb-08fa9012388e.png)

Une fois connecté, nous arrivons sur un site web "vitrine" et en descendant sur ce dernier nous trouvons le flag :\
![image](https://user-images.githubusercontent.com/91023285/178152039-2dd8c2f0-6ee7-4951-990b-5d361a3e50d6.png)

<details>

<summary>🚩 FLAG</summary>

```
HACK{Base64_is_not_enough}
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://writeups.ayweth20.com/2022/operation-kernel/reverse/cryptolocker.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
