> For the complete documentation index, see [llms.txt](https://book.onosh.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.onosh.ovh/ctf/esnhack/exfiltration-2.md).

# EXFILTRATION 2

### Énoncé

Cette fois-ci les attaquants ont changé de stratégie. Nos experts n'arrivent a rien. Sur cette capture réseau, on pense qu'ils ont encore exfiltré quelques chose. On ne sait pas quoi, ni comment. Aidez-nous !

Créateur du challenge : [Cabir](https://cabir.fr/)

### Analyse du trafic <a href="#analyse-du-trafic" id="analyse-du-trafic"></a>

En ouvrant la capture avec Wireshark, on remarque qu'il y a un fort trafic DNS :

![](https://i.imgur.com/dme7dCZ.png)

Les noms de domaines interrogés semblent louches, c’est suspect car ces genres de (sous-domaines suspects longs / non lisibles par l’homme) sont souvent considérés comme des indicateurs d’activités d’exfiltration DNS.

![](https://i.imgur.com/WNZn4MZ.png)

### Récupération des données <a href="#recuperation-des-donnees" id="recuperation-des-donnees"></a>

Je décide d'essayer d'extraire l'ensemble des sous domaines pour trouver le secret qu'ils gardent :

```
onosh@kali:/mnt/v# tshark -r exfiltration_2.pcapng -T fields -e dns.qry.name -Y "dns.qry.name" | grep "esnhack.fr" | cut -d "." -f 1 | uniq -d
77mp7yaacbfemskgaaaqcaaaaeaacaaa77nqaq
yaambaeaqcaibqeaqcambqgayeaycaibaeaqea
mbqfayeqqcqkbeeascikbqhqycqlbyfqscince
gq4dyqcairacqmcijreeatb4ibaeh73maegaid
ambqiayebacaicaqbmeqweaqcaibaeaqcaibae
aqcaibaeaqcaibaeaqcaibaeaqcaibaeaqcaib
aeaqcaibaeaqcaibaeaqcaibb76caaiqqakual
oqgairaabbcaidcea77raaduaaaaqcamaqcaia
aaaaaaaaaaaaaaicaabqibiga4eat76eaanaca
ibaeaqcaibaaaaaaaaaaaaaaaaaebagbafa375
...
oxa47hh77wi=
```

On dirait que c'est du b64. J'enregistre l'ensemble des sous domaines sous forme d'une seule chaine dans le fichier res.txt afin de la décoder :

```
onosh@kali:/mnt/v# tshark -r exfiltration_2.pcapng -T fields -e dns.qry.name -Y "dns.qry.name" | grep "esnhack.fr" | cut -d "." -f 1 | uniq -d | tr -d '\n' >res.txt
```

### Reconstitution des données extraites <a href="#reconstitution-des-donnees-extraites" id="reconstitution-des-donnees-extraites"></a>

En décodant le fichier, je m'aperçois que le fichier obtenu est inutile, le header `efb9 a9ef` ne correspond à rien.

```
onosh@kali:/mnt/v# base64 -d res.txt >res2.txt
onosh@kali:/mnt/v# xxd res2.txt |head -n5
00000000: efb9 a9ef 269a 71b7 de9a c920 69a6 aa71  ....&.q.... i..q
00000010: a69a 69e6 9a71 a69a efb9 ea6a ac9a 6a66  ..i..q.....j..jf
00000020: da79 aa9c 6a26 ea79 aa9c 6a66 ea81 ac9e  .y..j&.y..jf....
00000030: 6b27 1a89 b69e 6aa7 9a99 ba9f 6b27 aaa9  k'....j.....k'..
00000040: caa4 6de7 9ab1 c8a4 6ea8 6ac9 caa5 6f27  ..m.....n.j...o'
onosh@kali:/mnt/v# file res2.txt 
res2.txt: data
```

![](https://i.imgur.com/BV2il4Q.png)

La RFC 4648 nous apprend qu'il existe le base16, base32 et base64 pour encoder des données.

Le base64 ayant échoué, essayons le base32 !

Base32 utilise un ensemble de 32 caractères.

![](https://i.imgur.com/sLFvLc4.png)

Les lettres de A à Z en majuscules et les chiffres de 2 à 7. Il nous suffit donc de passer les lettres minuscules des sous domaines en lettres majuscules et de décoder tout ça :

```
root@DESKTOP-68IHLRN:/mnt/v# tshark -r exfiltration_2.pcapng -T fields -e dns.qry.name -Y "dns.qry.name" | grep "esnhack.fr" | cut -d "." -f 1 | uniq -d | tr -d '\n' |tr 'a-z' 'A-Z' |base32 -d >file.dat
```

Et cette fois ci, les headers sont beaucoup plus parlant :)

```
root@DESKTOP-68IHLRN:/mnt/v# xxd file.dat |head -n5
00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001  ......JFIF......
00000010: 0001 0000 ffdb 0043 0003 0202 0202 0203  .......C........
00000020: 0202 0203 0303 0304 0604 0404 0404 0806  ................
00000030: 0605 0609 080a 0a09 0809 090a 0c0f 0c0a  ................
00000040: 0b0e 0b09 090d 110d 0e0f 1010 1110 0a0c  ................
```

![](https://i.imgur.com/MBixsQ7.png)


---

# 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:

```
GET https://book.onosh.ovh/ctf/esnhack/exfiltration-2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
