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

Analyse du trafic

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

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.

Récupération des données

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

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

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.

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  ................

Dernière mise à jour