# Nest

### 🔍 RECONOCIMIENTO

En primer lugar, tras conectarnos a la máquina, utilizamos el comando:

```bash
ping -c 1 10.10.10.178
```

para verificar la conectividad de red.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FQK9dkoaaxvEOJfeN7q1C%2Fimage.png?alt=media&#x26;token=5b73da6a-5b56-4bfa-8ad8-8ef58e442bef" alt=""><figcaption></figcaption></figure>

A continuación, realizamos el comando:

```bash
nmap -sC -sV -p- 10.10.10.178
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FngPZP8XR0ikmMB8XBzX3%2Fimage.png?alt=media&#x26;token=9d36d565-2a53-47a0-a1c4-b8727cc7d910" alt=""><figcaption></figcaption></figure>

Durante el escaneo se identificaron los siguientes puertos abiertos:

* **Puerto 445 (SMB):** El puerto 445/tcp está abierto y ejecutando el servicio `microsoft-ds?`, lo que indica la posible presencia de un servicio SMB en el sistema.
* **Puerto 4386 (unknown):** El puerto 4386/tcp también está abierto y ejecutando un servicio desconocido. Según el fingerprinting de respuesta, el servicio se identifica como `Reporting Service V1.2`, lo que sugiere que permite a los usuarios ejecutar consultas en bases de datos mediante el formato HQK. Entre los comandos disponibles se encuentran `LIST`, `SETDIR`, `RUNQUERY`, `DEBUG` y `HELP`. Esta funcionalidad podría representar un posible vector de ataque si el servicio no está correctamente asegurado.

A continuación, se procederá a analizar cada uno de estos servicios en busca de posibles vectores de ataque.

### 🔎 EXPLORACIÓN

Se utiliza el comando:

```bash
sudo nmap -sCV -p445,4386 -v 10.10.10.178
```

para que nos proporcione más información sobre esos puertos específicamente.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F9hcznlOtcr3rmWZ4P7pn%2Fimage.png?alt=media&#x26;token=0643d477-7908-4214-a361-a411eb22fcaa" alt=""><figcaption></figcaption></figure>

Ponemos el dominio en el `/etc/hosts`.

```bash
echo "10.10.10.178 nest.htb" >> /etc/hosts
```

Listamos recursos compartidos.

```bash
smbclient -L 10.10.10.178
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FKMoq7R9Fu49zv6fpmQLU%2Fimage.png?alt=media&#x26;token=c9284b65-a189-4895-b1c6-cefe41f9a9cc" alt=""><figcaption></figcaption></figure>

Listamos el contenido de los recursos compartidos.

```bash
smbclient \\\\nest.htb\\Users -N
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F7QenZJC0F8FJTd5B75yZ%2Fimage.png?alt=media&#x26;token=b8cde69d-1332-4807-ac00-df9c10ad7d3b" alt=""><figcaption></figcaption></figure>

```
smbclient \\\\nest.htb\\Data -N
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FTZyxqQQovrFFgVWMp0x2%2Fimage.png?alt=media&#x26;token=5746a3eb-010b-494b-bb02-4a17cffb4787" alt=""><figcaption></figcaption></figure>

En la ruta `/Shared/Templates/HR` hay un archivo interesante.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FS6p2e0gYKqNOdOK3eIuF%2Fimage.png?alt=media&#x26;token=23eb360d-9ba3-4a61-9859-3af645efb110" alt=""><figcaption></figcaption></figure>

Tenemos unas credenciales por lo que con los usuarios descubiertos antes realizamos fuerza bruta.

```bash
crackmapexec smb nest.htb -u usuarios -p 'welcome2019' --continue-on-success
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FqfiI231UwxpQljpGwlKn%2Fimage.png?alt=media&#x26;token=f0fadb91-a178-421a-b86c-37660ade857f" alt=""><figcaption></figcaption></figure>

Intenté iniciar sesión con los tres usuarios y, al usar **TempUser**, obtuve un archivo, pero estaba vacío. Volví a acceder al recurso compartido **Data** como **TempUser** y descargué los archivos. Entre ellos, encontré un archivo llamado **RU\_Config.xml**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FKPpfIsw6JaiyQFpI8kdg%2Fimage.png?alt=media&#x26;token=3182f168-df0f-4088-908d-9859998428b2" alt=""><figcaption></figcaption></figure>

En otro archivo (**config.xml**) encontramos también información.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FePJvHYPCXQ1g0H5oQz7L%2Fimage.png?alt=media&#x26;token=328050ea-9f00-45ef-8f40-2e4569e2808c" alt=""><figcaption></figcaption></figure>

Entramos donde **Carl**.

```bash
smbclient -U ./TempUser //10.10.10.178/Secure$
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FUrMuySXTt1oYe6Iur04k%2Fimage.png?alt=media&#x26;token=c19ff5bd-3241-4017-8aa8-51f1c021750d" alt=""><figcaption></figcaption></figure>

### 🚀 **EXPLOTACIÓN**

Lo que estamos buscando es una línea del artículo que mencionamos antes, un algoritmo para descifrar el cifrado del archivo **RU\_Config.xml**. Quiero hacerlo rápido, así que voy a dotnetfiddle.net, realizar algunos ajustes al código y ejecutarlo con la contraseña cifrada que está en el archivo de configuración.

{% embed url="<https://dotnetfiddle.net/>" %}

El resultado es **xRxRxPANCAK3SxRxRx**. Bien, el usuario estaba claro, y ahora la contraseña está descifrada.

```
smbclient -U ./c.smith //10.10.10.178/Users
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FjMWYWUK0VQoBQAXtKHHv%2Fimage.png?alt=media&#x26;token=fff106de-c5d1-4c9b-b4e8-98ca66389aa2" alt=""><figcaption></figcaption></figure>

Seguimos investigando para escalar a **root**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FelLrcy8NirfPtrNQ1lDT%2FCaptura%20de%20pantalla%202025-02-24%20110901.png?alt=media&#x26;token=c6ae53d2-9234-4558-a52b-b440fb41febb" alt=""><figcaption></figcaption></figure>

{% embed url="<https://superuser.com/questions/1520250/read-alternate-data-streams-over-smb-with-linux?source=post_page-----125aa20f9fea--------------------------------------->" %}

```bash
allinfo "Debug Mode Password.txt"
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FuMvUd8SZgcwAeS5AOEJW%2Fimage.png?alt=media&#x26;token=0d2c6279-b745-4368-a381-e5bb8248f2cd" alt=""><figcaption></figcaption></figure>

Nos lo descargamos.

```
get "Debug Mode Password.txt":Password:$Data
```

Esto debería devolverte la contraseña en formato claro, que en este caso es **WBQ201953D8w**.

Con la contraseña obtenida, conéctate al servidor HQK:

```bash
debug WBQ201953D8w
```

Dentro del servidor, ejecuta el siguiente comando en el directorio LDAP para ver la configuración:

```bash
showquery 2
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FMD59PJWVV89woMz3pQNc%2Fimage.png?alt=media&#x26;token=1546c1c3-820f-4bce-92cf-11d85d4fd269" alt=""><figcaption></figcaption></figure>

Esto debería devolverte las credenciales del **Administrador** en formato cifrado. En el ejemplo, la contraseña es **yyEq0Uvvhq2uQOcWG8peLoeRQehqip/fKdeG/kjEVb4=**.

```bash
echo "yyEq0Uvvhq2uQOcWG8peLoeRQehqip/fKdeG/kjEVb4=" | base64 --decode
```

Ejecuté el comando `file` sobre el archivo `HqKLdap.exe` y descubrí que es un ejecutable .NET. Lo copié a mi sistema Windows y lo abrí utilizando ILSpy. Dentro del archivo `HqKLdap`, en la sección `CR`, encontré la siguiente línea de código:

```csharp
return RD(EncryptedString, "667912", "1313Rf99", 3, "1L1SA61493DRV53Z", 256);
```

Reemplacé esta línea en el script de Nest y modifiqué el archivo `config.xml` con el nombre de usuario y la contraseña de "Administrator". Luego ejecuté el script y obtuve lo siguiente:

**Anterior:**

```
XtH4nkS4Pl4y1nGX
Administrator
```

**Nuevo:**

```
AJPcXFcqZ32B993fPwoHWA==
XtH4nkS4Pl4y1nGX
```

La contraseña obtenida es: `XtH4nkS4Pl4y1nGX`.

Ahora, intentemos obtener una shell utilizando la siguiente herramienta:

```bash
impacket-psexec Administrator:XtH4nkS4Pl4y1nGX@nest.htb
```

Con este comando, deberíamos obtener acceso como `Administrator`.

### 🔐 PRIVILEGIOS

Al estar dentro y ejecutar:

```bash
whoami
```

somos **root.**

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FL5hhE2ybph1BzN4lL4MC%2Fimage.png?alt=media&#x26;token=8d00500d-1893-4654-83d9-d5bfa11753ce" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FvZnnoWTUgOX0W3XpsvBy%2Fimage.png?alt=media&#x26;token=fca2a0e8-0e78-43b8-bed5-eebde3632232" alt=""><figcaption></figcaption></figure>
