REAPER
What it is — REAPER automates the initial reconnaissance and enumeration phase — everything you do before gaining access to a system. With a single command it maps ports, fingerprints web technologies, enumerates directories, hunts subdomains (active and passive), analyses SSL certificates via crt.sh, and finishes with a clear visual summary and recommended next steps. It's the first piece of my own toolkit — built to chain into LAZARUS as soon as it detects Active Directory.
| Type | CLI · Python 3.10+ |
| License | MIT |
| Platform | Kali / Parrot |
| Use | Authorised environments only (HTB, THM, VulnHub, bug bounty in-scope) |
| Repo | github.com/DonTrebor1/REAPER |
Requirements
python3 --version # 3.10+, no external Python dependencies
# External tools (Kali/Parrot)
sudo apt install nmap netexec whatweb gobuster ffuf sshpass amass
# Subfinder (optional but recommended)
go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
sudo apt install seclists dirb
How to use it
Full recon, with a known domain:
python3 reaper.py -t 10.10.11.x -d target.htb --auto
IP only, no domain:
python3 reaper.py -t 10.10.11.x --auto
Preview the attack plan without running anything:
python3 reaper.py -t 10.10.11.x -d target.htb --plan
Resume a previous session (handy if the connection drops mid-scan):
python3 reaper.py --resume reaper_output/reaper_state.json
Phases
| # | Phase | What it does | OPSEC |
|---|---|---|---|
| 1 | Nmap | Full port scan + service detection | MEDIUM |
| 2 | FTP | Tests anonymous access on port 21 | LOW |
| 3 | SSH | Tries 11 default credential combinations | MEDIUM |
| 4 | HTTP/HTTPS | whatweb (fingerprinting) + gobuster (directories) | MEDIUM |
| 5 | SMB | Unauthenticated shares + RID brute user enumeration | LOW |
| 6 | DNS | DNS records + AXFR + subfinder + amass + ffuf VHosts | LOW |
| 7 | crt.sh | Subdomains from public SSL certificates (no brute force) | LOW |
| 8 | Summary | Visual map of findings + recommended next steps | — |
The OPSEC column indicates how much noise each phase generates against the target — useful for deciding which phases to skip in a real engagement where stealth matters, versus a CTF where it doesn't.
Output
reaper_output/
├── reaper_state.json # Full state (resume with --resume)
├── nmap_ports.txt # Quick scan of every port
├── nmap_detail.txt # Detailed service scan
├── ftp.txt / ssh.txt # FTP/SSH results
├── whatweb_<port>.txt # Detected web technologies
├── gobuster_<port>.txt # Directories found
├── smb_shares.txt / smb_users.txt
├── dns.txt / dns_axfr.txt
├── subdomains.txt / amass.txt / vhosts.txt
└── crtsh.txt # SSL certificate domains
Flow with the rest of the toolkit
REAPER -> full recon, target map
|
If AD is detected (port 445 + 88 + 389)
|
LAZARUS -> full AD attack chain
⚠️ Legal notice: exclusively for controlled, authorised practice environments (HackTheBox, TryHackMe, VulnHub, your own labs, bug bounty in scope). Using it against systems without explicit authorisation is illegal.
Repository
Qué es — REAPER automatiza la fase de reconocimiento y enumeración inicial — todo lo que se hace antes de tener acceso a un sistema. Con un solo comando mapea puertos, detecta tecnologías web, enumera directorios, busca subdominios (activo y pasivo), analiza certificados SSL vía crt.sh, y al final da un resumen visual claro con los próximos pasos recomendados. Es la primera pieza de mi propio toolkit — pensada para encadenarse con LAZARUS en cuanto detecta Active Directory.
| Tipo | CLI · Python 3.10+ |
| Licencia | MIT |
| Plataforma | Kali / Parrot |
| Uso | Solo entornos autorizados (HTB, THM, VulnHub, bug bounty con scope autorizado) |
| Repo | github.com/DonTrebor1/REAPER |
Requisitos
python3 --version # 3.10+, sin dependencias externas de Python
# Herramientas externas (Kali/Parrot)
sudo apt install nmap netexec whatweb gobuster ffuf sshpass amass
# Subfinder (opcional pero recomendado)
go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
sudo apt install seclists dirb
Uso
Reconocimiento completo, con dominio:
python3 reaper.py -t 10.10.11.x -d target.htb --auto
Solo con IP, sin dominio:
python3 reaper.py -t 10.10.11.x --auto
Ver el plan de ataque sin ejecutar nada:
python3 reaper.py -t 10.10.11.x -d target.htb --plan
Reanudar una sesión anterior (útil si se corta la conexión a mitad de escaneo):
python3 reaper.py --resume reaper_output/reaper_state.json
Fases
| # | Fase | Qué hace | OPSEC |
|---|---|---|---|
| 1 | Nmap | Escaneo completo de puertos + detección de servicios | MEDIUM |
| 2 | FTP | Prueba acceso anónimo en puerto 21 | LOW |
| 3 | SSH | Prueba 11 combinaciones de credenciales por defecto | MEDIUM |
| 4 | HTTP/HTTPS | whatweb (tecnología) + gobuster (directorios) | MEDIUM |
| 5 | SMB | Shares sin credenciales + RID brute de usuarios | LOW |
| 6 | DNS | Registros DNS + AXFR + subfinder + amass + ffuf VHosts | LOW |
| 7 | crt.sh | Subdominios en certificados SSL públicos (sin fuerza bruta) | LOW |
| 8 | Resumen | Mapa visual de hallazgos + próximos pasos recomendados | — |
La columna OPSEC indica cuánto ruido genera cada fase contra el objetivo — útil para decidir qué fases saltarte en un engagement real donde el sigilo importa, frente a un CTF donde da igual.
Output
reaper_output/
├── reaper_state.json # Estado completo (resume con --resume)
├── nmap_ports.txt # Escaneo rápido de todos los puertos
├── nmap_detail.txt # Escaneo detallado de servicios
├── ftp.txt / ssh.txt # Resultados FTP/SSH
├── whatweb_<puerto>.txt # Tecnologías web detectadas
├── gobuster_<puerto>.txt # Directorios encontrados
├── smb_shares.txt / smb_users.txt
├── dns.txt / dns_axfr.txt
├── subdomains.txt / amass.txt / vhosts.txt
└── crtsh.txt # Dominios en certificados SSL
Flujo con el resto del toolkit
REAPER -> reconocimiento completo, mapa del objetivo
|
Si detecta AD (puerto 445 + 88 + 389)
|
LAZARUS -> cadena completa de ataque AD
⚠️ Aviso legal: exclusivamente para entornos de práctica controlados y autorizados (HackTheBox, TryHackMe, VulnHub, laboratorios propios, bug bounty con scope autorizado). Usarlo contra sistemas sin autorización explícita es ilegal.