Kerberos – Authentication

https://www.root-me.org/en/Challenges/Network/Kerberos-Authentication

Máme k dispozícii zachytenú sieťovú prevádzku (.pcapng súbor) z doménového prostredia spoločnosti Cat Corporation. Našim cieľom je získať citlivé údaje, konkrétne heslo niektorého z používateľov prostrednictvom analýzy autentifikačného protokolu Kerberos.

Krok 1: Inicializácia a prieskum prostredia

Po otvorení PCAP súboru v analytickom nástroji (Wireshark alebo tshark) najskôr zistím, aké protokoly sa v sieti nachádzajú. Keďže cieľom je Kerberos, primárne nás zaujíma port 88 alebo priamo filtrovanie samotného protokolu.

  • Použil som základný filter kerberos, prípadne sledovanie správ prebiehajúcich medzi klientmi a radičom domény (DC).
  • V dátach sa nachádza štandardná doménová komunikacia, vrátane výmeny lístkov (TGS), ale aj požiadaviek na počiatočnú autentifikáciu (AS).

Krok 2: Identifikácia vektora útokov (AS-REP Roasting / Pre-Auth)

V Kerberose existujú dva hlavné typy tiketov zaujímavé pre offline lomenie: Service Tikety (Kerberoasting) a Autentifikačné požiadavky (AS-REQ/AS-REP). Service tikety sú však šifrované pomocou hesla samotného počítačového účtu (service accountu), ktoré má desiatky náhodných znakov a nedá sa prelomiť. Preto musíme cielene hľadať proces AS-REQ.

Pre lepšie pochopenie:

https://tryhackme.com/room/attackingkerberos
https://tryhackme.com/room/krbticketattacks
https://www.hackthebox.com/blog/what-is-kerberos-authentication

  • Zadal som filter na zobrazenie správ kerberos.msg_type == 10 (čo zodpovedá AS-REQ).
  • V komunikácii som našiel paket, kde klient posiela požiadavku na vydanie Ticket Granting Ticket (TGT). Všimol som si nasledujúce atribúty:
    • CNameString: william.dupond (identifikácia používateľa)
    • Realm: CATCORP.LOCAL (názov domény)
    • Typ šifrovania (etype): eTYPE-AES256-CTS-HMAC-SHA1-96 (18)

Krok 3: Extrakcia šifrovacieho materiálu (PA-ENC-TIMESTAMP)

Aby sme mohli heslo prelomiť offline (bez toho, aby sme sa dopytovali reálneho radiča domény), potrebujeme získať tzv. PA-ENC-TIMESTAMP. Ide o časovú pečiatku zašifrovanú privátnym kľúčom odvodeným z hesla používateľa.

  • V detaile požiadavky AS-REQ som rozklikol štruktúru padata -> PA-ENC-TIMESTAMP -> cipher.
  • Extrahoval som surový hexadecimálny reťazec šifry:fc8bbe22b2c967b222ed73dd7616ea71b2ae0c1b0c3688bfff7fecffdebd4054471350cb6e36d3b55ba3420be6c0210b2d978d3f51d1eb4f

Krok 4: Konštrukcia hashu pre Hashcat

Nástroje na lomenie hesiel (ako Hashcat) nevedia čítať surovú šifru priamo z Wiresharku, ale vyžadujú špecifický formát pre daný typ šifrovania.

  • Pre mód 19900 (Kerberos 5 PA-ENC-TIMESTAMP s etype 18) predpisuje Hashcat presnú štruktúru oddelenú znakom doláru ($).
  • Spojil som identifikátor módu, typ šifry, meno používateľa, doménu a samotnú extrahovanú šifru do finálnej podoby:$krb5pa$18$william.dupond$CATCORP.LOCAL$fc8bbe22b2c967b222ed73dd7616ea71b2ae0c1b0c3688bfff7fecffdebd4054471350cb6e36d3b55ba3420be6c0210b2d978d3f51d1eb4f

Krok 5: Offline lomenie hesla a finalizácia

  • Pripravený hash som vložil do textového súboru a spustili slovníkový útok (hashcat -m 19900 -a 0 hash.txt rockyou.txt).
  • Hashcat úspešne porovnal hashe slovníkových slov s naším zachyteným materiálom a našiel čisté textové heslo
  • Podľa zadania som meno používateľa dal na malé písmená, priradil heslo a vytvoril finálny reťazec RM{william.dupond@catcorp.local:*******}.

https://en.wikipedia.org/wiki/Kerberos_(protocol)

TheOldOne · Miroslav Gensor ·