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