> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/writes-ups/tryhackme/easy/lookback.md).

# Lookback

## Información de la máquina

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

**Lookback** es una máquina **fácil** de Windows en **TryHackMe** que simula un entorno corporativo con servicios expuestos y configuraciones inseguras. El objetivo es obtener acceso inicial explotando una inyección de comandos en una aplicación web mal asegurada y luego escalar privilegios mediante una vulnerabilidad conocida en Microsoft Exchange. Esta máquina destaca por integrar técnicas reales y comunes en entornos empresariales, desde el reconocimiento y acceso web hasta el abuso de software corporativo mal gestionado.

***

## Reconocimiento

Empezaremos haciendo un primer reconocimiento para ver los puertos abiertos en el sistema.

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

**1. `-p-` → Escaneo de todos los puertos (1-65535)**

Por defecto, `nmap` solo escanea los **1000 puertos más comunes**.\
Con `-p-`, forzamos a que escanee **los 65,535 puertos** de la máquina objetivo, lo que puede ser útil para encontrar servicios que corren en puertos poco convencionales.

**2. `--open` → Filtrar solo los puertos abiertos**

Cuando escaneamos un sistema, muchos puertos pueden estar cerrados o filtrados por un firewall.\
Este parámetro hace que `nmap` **solo muestre los puertos abiertos**, reduciendo el ruido y facilitando el análisis.

**3. `-sS` → Stealth Scan (Escaneo Sigiloso con SYN)**

Es conocido como **"TCP SYN Scan"**, y funciona de la siguiente manera:

* `nmap` envía un paquete **SYN** (solicitud de conexión).
* &#x20;Si el puerto está abierto, el servidor responde con **SYN-ACK**.
* En lugar de completar la conexión con un **ACK**, `nmap` responde con un **RST (Reset)**, interrumpiendo la comunicación.

**4. `--min-rate 5000` → Velocidad mínima de paquetes (5000 por segundo)**

Por defecto, `nmap` ajusta dinámicamente la velocidad de los paquetes según la respuesta de la red.\
Con `--min-rate 5000`, obligamos a `nmap` a **no enviar menos de 5000 paquetes por segundo**, acelerando el escaneo.

**5. `-n` → Deshabilitar resolución DNS**

Normalmente, `nmap` intenta resolver el nombre de dominio de las IPs escaneadas (DNS lookup).\
Con `-n`, evitamos esta resolución de nombres, lo que **acelera el escaneo** y evita que los servidores DNS registren nuestra actividad.

**6. `-Pn` → Omitir detección de host (Host Discovery Off)**

Por defecto, `nmap` envía paquetes ICMP (ping) para ver si un host está activo antes de escanearlo.\
Si un firewall bloquea los pings, `nmap` puede marcarlo como "host down" y no escanearlo.

**7. `-oG`** **→ Exportar el contenido en formato grepeable**

Todo el resultado del escaneo lo exportaremos en un archivo llamado **`allPorts` .**

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

**1. `-p<puertos obtenidos>` → Escaneo de puertos específicos**

Con `-p<puertos obtenidos>`, le indicamos que **solo** escanee los puertos que le indicamos.

**2. `-sCV` → Escaneo de versiones y scripts básicos**

Este parámetro en realidad es **dos combinaciones en una**:

* **`-sC`** → Activa los **NSE scripts por defecto** en `nmap` (similar a usar `--script=default`).\
  Ejecuta scripts básicos para enumerar información del servicio detectado, como banners, versiones, etc.
* **`-sV`** → Realiza **fingerprinting de versiones**, intentando identificar la versión exacta del software en cada puerto abierto.

**3. `-oN` → Guardar el resultado en formato Normal**

Por defecto, `nmap` muestra los resultados en pantalla, pero con **`-oN targeted`**, guardamos el resultado en un archivo en **formato legible para humanos**.

Empezamos utilizando la herramienta **ffuf** para descubrir rutas ocultas en el servidor web. Tras unos minutos de fuzzing, encontramos una ruta interesante llamada `/test`

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

Al intentar acceder a dicha ruta utilizando **HTTPS**, nos encontramos con una pantalla de login que solicita credenciales. Esto indica que probablemente estamos ante un panel de acceso restringido, pero vale la pena probar credenciales comunes.

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

Probamos las credenciales por defecto `admin:admin`, y para nuestra sorpresa, logramos autenticarnos correctamente. Al acceder al panel, encontramos una primera **flag del servicio web**, lo que confirma que el entorno está mal asegurado.

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

## RCE and initial access

Dentro del panel, encontramos un campo para ejecutar comandos en el servidor. Para comprobar si es vulnerable a **inyección de comandos**, probamos con una técnica común: añadir `;` después de un comando válido para intentar ejecutar otro. Aunque se genera un error, el mensaje nos revela cómo están siendo procesados los comandos: usando `Get-Content('<comando>')`.

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

Con esta pista, diseñamos una cadena de inyección válida. Cerramos el argumento original con `'` y `)`, añadimos `;` y `&` para ejecutar nuestro propio comando, y reabrimos la estructura con `('`. De este modo, logramos ejecutar comandos arbitrarios, lo que nos da una **conexión remota básica**.

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

Para conseguir una shell interactiva, preparamos una **reverse shell en base64**. Codificar la payload de esta forma puede ayudar a **evadir mecanismos de defensa** como Windows Defender, que muchas veces bloquean comandos sospechosos en texto plano.

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

Nos colocamos en escucha con `nc` (netcat) en nuestra máquina atacante, y reemplazamos el comando anterior (como `whoami`) por el payload completo de la reverse shell en el campo vulnerable del panel web.

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

La reverse shell se ejecuta correctamente y obtenemos **acceso directo a la máquina** con una terminal interactiva. Desde aquí, navegamos hasta el directorio del usuario y leemos la **primera flag**.

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

Además, encontramos un archivo llamado `TODO.txt`, el cual contiene tareas de administración pendientes. Una de ellas menciona específicamente que es necesario **actualizar Microsoft Exchange**, lo que podría ser una pista crítica para la escalada de privilegios.

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

## Privilege Escalation

Sabemos que si Exchange requiere ser actualizado, es posible que esté usando una versión vulnerable. Abrimos **Metasploit** y buscamos exploits conocidos. Encontramos uno llamado `exchange_proxyshell_rce`, que aprovecha la vulnerabilidad **ProxyShell** para ejecutar comandos de forma remota con privilegios elevados.

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

Para usar este exploit, necesitamos datos como la URL del servidor y una dirección de correo válida. Por suerte, en el archivo `TODO.txt` se nos proporciona una dirección de correo corporativo, lo que nos permite completar todos los campos del módulo de Metasploit.

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

Ejecutamos el exploit con la configuración adecuada y obtenemos acceso como **NT AUTHORITY\SYSTEM**, es decir, los máximos privilegios del sistema. Esto nos permite movernos libremente por todo el entorno comprometido.

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

Finalmente, navegamos hasta los documentos del administrador y encontramos la **flag final**, completando la explotación completa de la máquina.

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

***

## Conclusion

La máquina **Lookback** muestra cómo un atacante puede encadenar múltiples vectores de ataque, comenzando con una inyección de comandos simple en una interfaz web mal asegurada y finalizando con una escalada a **NT AUTHORITY\SYSTEM** mediante la explotación de **ProxyShell** en Microsoft Exchange. A lo largo del proceso se subrayan prácticas de seguridad deficientes como el uso de credenciales por defecto, exposición innecesaria de interfaces administrativas y falta de actualizaciones críticas. Este escenario refleja cómo errores comunes pueden tener consecuencias graves si se combinan, y refuerza la importancia de la gestión proactiva de vulnerabilidades y una adecuada postura defensiva en sistemas Windows.
