8. 11. 2024

CTF - The Catch 2024 - DNS madness

 Pri správe infraštruktúry musí oddelenie Operations udržiavať veľké množstvo DNS záznamov vo veľa zónach. DNS správca zošalel z obrovského množstva záznamov, sediac pred monitorom nakláňajúc sa sem a tam hovoril opakovane, o jeho doméne infra.tcc ako o nejakom milášikovi z pána prsteňov.

Mám za úlohu preskúmať zóny, záznamy a ich počty, aby sme nabudúce prijali odolnejšieho správcu. Ako pomôcku máme, že než sa zbláznil vravel o sekundárnych serveroch a AXFR/IXFR distribúcií zón.


Keďže som mal problém s DNS, prvé čo bolo - zistil som si rôzne DNS servery bežiace na VPN sieti.

Lokálne 127.0.0.53, potom ns1.tcc. Nslookup mi robil problémy, tak som použil príkaz "dig". DNS vráti viac záznamov, keď mu pridám slovíčko ANY. Ide však o nejakú cache, nie o naozaj všetky záznamy.

dig @ns1.tcc infra.tcc any

;; ANSWER SECTION:
infra.tcc.              83368   IN      NS      jameson.infra.tcc.
infra.tcc.              83368   IN      NS      jamison.infra.tcc.
infra.tcc.              83368   IN      SOA     jessiejames.infra.tcc. hostmaster.infra.tcc. 2024100701 604800 86400 2419200 86400

;; ADDITIONAL SECTION:
jameson.infra.tcc.      18967   IN      A       10.99.24.29
jamison.infra.tcc.      18891   IN      A       10.99.24.28
jameson.infra.tcc.      18967   IN      AAAA    2001:db8:7cc::24:29
jamison.infra.tcc.      18891   IN      AAAA    2001:db8:7cc::24:28

Ako je vidieť, sú tu name servery (NS) v doméne infra.tcc, ale tie nás nezaujímajú. Zaujímavejšie sú SOA servery, tieto môžu podporovať spomenuté AXFR prenosy zón.

vybrané typy záznamov DNS:
A - ipv4 adresa
AAAA - ipv6 adresa
CNAME - canonical name
MX - mail exchanger
NS - nameserver
PTR - pointer
SOA - start of authority
SRV - service location
TXT - text record

Skúsim teda axfr na jessiejones:

$ dig @jessiejames.infra.tcc infra.tcc axfr

; <<>> DiG 9.20.2-1-Debian <<>> @jessiejames.infra.tcc infra.tcc axfr
; (1 server found)
;; global options: +cmd
infra.tcc.              86400   IN      SOA     jessiejames.infra.tcc. hostmaster.infra.tcc. 2024100701 604800 86400 2419200 86400
infra.tcc.              86400   IN      NS      jameson.infra.tcc.
infra.tcc.              86400   IN      NS      jamison.infra.tcc.
jameson.infra.tcc.      86400   IN      AAAA    2001:db8:7cc::24:29
jameson.infra.tcc.      86400   IN      A       10.99.24.29
jamison.infra.tcc.      86400   IN      AAAA    2001:db8:7cc::24:28
jamison.infra.tcc.      86400   IN      A       10.99.24.28
jessiejames.infra.tcc.  86400   IN      AAAA    2001:db8:7cc:0:6361:74:24:27
infra.tcc.              86400   IN      SOA     jessiejames.infra.tcc. hostmaster.infra.tcc. 2024100701 604800 86400 2419200 86400

Na tomto mieste som sa vážne zasekol. Najskôr som pátral, či sa z existujúcich serverov nejak nedá vydolovať viac informácií. Skúsil som použiť aj slovníkový útok ale v rozumnom čase našiel iba stroje o ktorých už viem.
Ako som sa pozrel na write-up od djmajino na githube, zistil som že tu som si mal všimnúť ascii kódy v IPv6 adrese. Preklad "63 61 74 24" je "cat$" a z toho som mal vydedukovať subdoménu (server) catalog.

S touto informáciou som už po termíne nesúťažne skúsil pokračovať.

$ dig @jessiejames.infra.tcc catalog.infra.tcc axfr
$ dig @jessiejames.infra.tcc catalog.infra.tcc axfr | grep PTR > zoznam.txt

Príkaz vrátil veľa záznamov a každý ide ďalej v DNS dohľadať, preto som presmeroval záznamy do súboru zoznam.txt.
Skriptom tak skúsim prejsť všetky DNS záznamy. Hľadám priamo slovíčko flag / Flag / FLAG a to ako v ascii formáte, tak v hex formátoch ale aj obľúbenom base64.

for hos in `cat zoznam.txt | awk -F' ' '{ print $NF }'  | sed -e 's/\.$//g'`; do
  echo $hos
  dig @jessiejames.infra.tcc $hos axfr > zoznam2.txt
  grep -i flag zoznam2.txt
  grep -i 666c6167 zoznam2.txt
  grep -i 66:6c:61:67 zoznam2.txt
  grep ZmxhZ3 zoznam2.txt
  grep RmxhZ3 zoznam2.txt
  grep RkxBR3 zoznam2.txt
done
Po spustení som dostal výstup:

aldoria.infra.tcc
aldorn.infra.tcc
arionis.infra.tcc
averon.infra.tcc
banneron.infra.tcc
40ae12928dbf450106d8097a7ec875ea.banneron.infra.tcc. 86400 IN TXT "RkxBR3tBdlhPLWlNazctM2JvSC1pWURwfQ=="
beloria.infra.tcc
blaven.infra.tcc
branox.infra.tcc
...

Ide zjavne o base64, po konverzii dostanem vlajku

$ echo "RkxBR3tBdlhPLWlNazctM2JvSC1pWURwfQ==" | base64 -d
FLAG{AvXO-iMk7-3boH-iYDp}

Žiadne komentáre:

Zverejnenie komentára