Cómo hacer un writeup de un CTF o máquina (con plantilla)

Cómo hacer un writeup de un CTF o máquina (con plantilla)


Cómo hacer un writeup de un CTF o máquina (con plantilla lista para copiar)

Un writeup de CTF o máquina es un documento técnico que narra paso a paso cómo se resolvió un reto o máquina de hacking, desde el reconocimiento inicial hasta la obtención de las flags. Es la herramienta más útil para consolidar lo aprendido y construir un portfolio técnico visible.

Vídeo: WriteUp CTF Reto I – OCLAT – Comunidad Hacking Ético en Español · Canal: MisterWh1t3 · ID: zwPIibPG7LA

Qué es un writeup y por qué deberías escribir uno

Resolver una máquina de plataformas como Hack The Box o TryHackMe es solo la mitad del trabajo. El writeup es la otra mitad: documentar te obliga a ordenar el pensamiento, a detectar qué entendiste de verdad y qué simplemente ejecutaste sin saber por qué.

Hay tres razones concretas para escribirlo:

  • Aprendizaje real. Al escribir qué hiciste y por qué funcionó, fijas el conocimiento de forma activa. Releer un writeup propio de hace tres meses enseña más que releer apuntes.
  • Portfolio técnico. Un recruiter o cliente que ve writeups detallados en tu blog o GitHub entiende de inmediato tu nivel. Mucho mejor que un certificado sin contexto.
  • Contribución a la comunidad. Los writeups de máquinas retiradas ayudan a otros a aprender. La comunidad de hacking ético en español se construye así.

Estructura recomendada de un writeup

No hay un estándar universal obligatorio, pero la estructura que mejor funciona sigue el flujo natural de un pentest o CTF:

  1. Cabecera e información básica: nombre de la máquina o reto, plataforma, dificultad, fecha de resolución y tu nombre o alias.
  2. Enumeración y reconocimiento: todo lo que descubres antes de atacar (puertos, servicios, versiones, tecnologías web, subdominios). Aquí van los comandos de nmap, gobuster, ffuf, etc.
  3. Análisis y explotación: la vulnerabilidad encontrada, por qué existe y cómo la explotaste. Comandos exactos, payloads, capturas de pantalla. Si usaste un exploit público, cita el CVE y la fuente.
  4. Escalada de privilegios: cómo pasaste de usuario sin privilegios a root o SYSTEM. Enumera qué buscaste, qué encontraste y qué técnica usaste.
  5. Flags: capturas que demuestran la obtención de user.txt y root.txt (o las flags del reto). Nunca pongas el valor de la flag en texto plano en writeups de máquinas activas.
  6. Lecciones aprendidas y conclusión: qué aprendiste, qué harías diferente, referencias y recursos para profundizar.
Sección del writeup Qué debe incluir
Cabecera Nombre de la máquina/reto, plataforma, dificultad, fecha, autor
Reconocimiento Escaneo de puertos, servicios detectados, tecnologías web, posibles vectores
Explotación Vulnerabilidad identificada (con CVE si aplica), comandos exactos, payloads, capturas
Escalada de privilegios Binarios SUID, sudo -l, cronjobs, credenciales en archivos, técnica usada
Flags Captura de pantalla que muestra la obtención (sin revelar el valor en activas)
Conclusión Aprendizajes, referencias, herramientas nuevas descubiertas

Plantilla lista para copiar

Copia esta plantilla en Markdown (funciona en Obsidian, GitHub, HackMD o cualquier editor compatible) y rellena cada sección mientras resuelves la máquina:

# Writeup: [Nombre de la máquina / Reto]

## Información básica

| Campo       | Valor                  |
|-------------|------------------------|
| Plataforma  | Hack The Box / THM / … |
| Dificultad  | Fácil / Media / Difícil|
| OS          | Linux / Windows        |
| IP objetivo | 10.10.x.x              |
| Fecha       | AAAA-MM-DD             |
| Autor       | @tu_alias              |

---

## 1. Reconocimiento

### Escaneo de puertos

```bash
nmap -sC -sV -oN nmap/initial.txt 10.10.x.x
```

**Resultado:**
- Puerto 22/tcp — OpenSSH 8.x
- Puerto 80/tcp — Apache 2.4.x
- ...

### Enumeración web

```bash
gobuster dir -u http://10.10.x.x -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster.txt
```

**Hallazgos relevantes:**
- /admin → panel de administración
- /backup → …

---

## 2. Explotación

**Vulnerabilidad:** [Nombre / CVE si aplica]

**Por qué existe esta vulnerabilidad:**
Descripción breve de la causa raíz.

**Pasos:**

1. ...

```bash
# Comando exacto que usaste
```

**Captura:**
![Acceso conseguido](capturas/acceso.png)

---

## 3. Escalada de privilegios

**Enumeración como usuario no privilegiado:**

```bash
sudo -l
find / -perm -4000 2>/dev/null
cat /etc/crontab
```

**Vector encontrado:**
Descripción de lo que encontraste y por qué permite escalar.

**Explotación:**

```bash
# Comandos para escalar
```

**Captura:**
![Root obtenido](capturas/root.png)

---

## 4. Flags

- **User flag:** ✅ (captura adjunta)
- **Root flag:** ✅ (captura adjunta)

---

## 5. Lecciones aprendidas

- Qué técnica aprendiste o reforzaste.
- Qué herramienta descubriste.
- Qué harías diferente la próxima vez.

## Referencias

- [Nombre del recurso](https://url)
- [CVE-XXXX-XXXXX](https://nvd.nist.gov/vuln/detail/CVE-XXXX-XXXXX)

Buenas prácticas al escribir un writeup

La diferencia entre un writeup mediocre y uno útil está en estos detalles:

  • Comandos exactos y completos. No pongas «usé nmap». Pon el comando completo con todos los flags. Quien lea el writeup (incluyéndote a ti mismo dentro de seis meses) necesita reproducirlo sin adivinar.
  • Explica el porqué, no te quedes en el qué. «Ejecuté sudo -l para ver si el usuario actual podía ejecutar comandos como root sin contraseña» vale mucho más que «ejecuté sudo -l«. Esto es lo que separa un writeup de un simple log de comandos.
  • Capturas de pantalla en los momentos importantes: acceso inicial conseguido, shell como usuario no privilegiado, escalada a root, obtención de flags. No captures cada línea de salida, solo los hitos.
  • Documenta los callejones sin salida. Si probaste algo que no funcionó, inclúyelo brevemente. Es información valiosa y hace el writeup más honesto y educativo.
  • Escribe mientras resuelves, no después. La memoria falla. Toma notas en tiempo real (CherryTree o Obsidian son perfectos para esto) y luego pásalas a formato limpio.
  • Revisa la ortografía y el formato. Un writeup técnico riguroso con errores ortográficos transmite descuido. Usa la corrección automática de tu editor.

Qué NO debes hacer en un writeup

Este punto importa bastante, sobre todo si estás empezando:

  • No publiques writeups de máquinas activas de Hack The Box. HTB prohíbe explícitamente publicar soluciones de máquinas que aún no han sido retiradas. Puedes encontrar las normas completas en la política de contenidos de Hack The Box. Espera a que la máquina quede marcada como «Retired».
  • No filtres el valor literal de las flags. Las capturas de pantalla que muestran la flag en contexto están bien; poner la cadena en texto plano en el documento no.
  • No plagies writeups de otros. Aprende de ellos, pero escribe el tuyo con tus propias palabras y desde tu propia perspectiva. El valor del writeup es el proceso mental, no el resultado.
  • No omitas los pasos de reconocimiento pensando que son aburridos. Son la base de todo lo demás y a menudo contienen información importante para quien aprende.
  • No uses técnicas que no entiendes. Si copiaste un exploit y funcionó sin saber por qué, investiga antes de escribir. Documentar algo que no comprendes es contraproducente.

Dónde publicar tu writeup

Una vez terminado, tienes varias opciones según tu objetivo:

  • Blog propio: la mejor opción para SEO y portfolio a largo plazo. Te da control total, construye autoridad en tu dominio y los artículos quedan indexados por Google. Si empiezas desde cero, WordPress o Ghost son buenas opciones.
  • GitHub: perfecto si ya tienes perfil técnico ahí. Crea un repositorio dedicado a writeups con estructura de carpetas por plataforma. El Markdown se renderiza de forma nativa y los reclutadores técnicos lo visitan.
  • Medium / HackMD: tienen audiencia incorporada y son fáciles de usar. La desventaja es que no controlas el dominio ni el SEO. Útil como canal secundario para llegar a más gente.
  • CTFtime.org: para writeups de competiciones CTF específicas. La comunidad es muy activa y es un buen lugar para visibilidad si participas en CTFs online.

Si buscas especializarte en hacking web, los writeups de máquinas con vulnerabilidades como SQLi, XSS o SSRF complementan bien una guía completa de hacking web o un curso estructurado de hacking web.

Herramientas para escribir y organizar writeups

  • Obsidian: la opción preferida de muchos pentesters. Markdown nativo, gráfico de conocimiento, plugins para notas de seguridad. Funciona sin conexión y los archivos son tuyos.
  • CherryTree: árbol jerárquico de notas con soporte para código y capturas. Muy usado en el mundo CTF por su organización visual. Exporta a PDF, HTML o Markdown.
  • Markdown + VS Code: sencillo y potente. Con la extensión «Markdown All in One» tienes previsualización en tiempo real, atajos de tabla y exportación.
  • HackMD: Markdown colaborativo en el navegador. Útil para equipos en CTFs o para publicar directamente.
  • Flameshot / ShareX: para capturas de pantalla anotadas. Imprescindibles para documentar los hitos visualmente.

Las mismas habilidades de documentación pesan si te planteas dar el salto al bug bounty, donde un buen informe de vulnerabilidad (que no es muy distinto de un writeup) puede marcar la diferencia entre una recompensa rechazada y una aceptada.

Preguntas frecuentes

¿Cuándo puedo publicar un writeup de una máquina de Hack The Box?

Solo cuando la máquina haya sido retirada oficialmente por HTB. Las máquinas activas están protegidas por sus normas de uso. Puedes hacer streaming o vídeo de máquinas activas sin revelar la solución, pero el writeup escrito debe esperar. Consulta siempre la política oficial de HTB antes de publicar.

¿Tiene que ser muy largo un writeup?

No. Un writeup útil puede tener 500 palabras si incluye los comandos exactos, las capturas importantes y una explicación del porqué de cada paso. La longitud debe ser proporcional a la complejidad de la máquina. Un reto simple de CTF no necesita diez páginas; una máquina difícil con múltiples vectores sí puede necesitarlas.

¿Puedo hacer un writeup de TryHackMe?

Sí. TryHackMe es más permisivo que HTB y permite publicar soluciones de sus rooms en cualquier momento, siempre que no incluyas las flags literales. Aun así, revisa las normas específicas de cada room, ya que algunas son de pago y pueden tener restricciones propias.

¿En qué idioma debo escribirlo?

En el que domines mejor. Si tu objetivo es contribuir a la comunidad hispanohablante, español es una buena elección: hay mucho menos contenido técnico de calidad en español que en inglés, así que el tuyo tendrá más impacto y mejor posicionamiento. Si buscas exposición internacional, inglés llega a más gente.

¿Necesito haber terminado la máquina solo para hacer un writeup?

Sí, en la práctica. Un writeup implica que puedes explicar todo el proceso porque lo comprendes. Si necesitaste ayuda externa en algún punto, indícalo con honestidad en el texto: «tras atascarme aquí, consulté una pista que apuntaba a X». Esa transparencia hace el writeup más valioso, no menos.

Si todavía estás buscando la plataforma donde practicar antes de escribir tu primer writeup, consulta nuestra guía de las mejores plataformas para practicar hacking.

Sigue tu camino

Cursos de ciberseguridad por especialización

Descubre los cursos que más se adaptan a tu perfil profesional.