Introducción
En la lección anterior definimos qué es la escalada de privilegios y cómo funciona el modelo de permisos de Linux. Ahora vamos a lo práctico: ¿qué es lo primero que haces cuando obtienes una shell en un sistema? La respuesta es enumerar: recopilar información de forma metódica antes de intentar cualquier exploit.
La enumeración es la fase más importante de la escalada de privilegios. Un atacante experimentado pasa más tiempo enumerando que explotando. En esta lección aprenderás los comandos esenciales para construir una imagen clara del sistema en el que estás.
¿Por qué enumerar antes de atacar?
Sin enumeración, estás adivinando. Podrías pasar horas intentando exploits que no aplican al sistema mientras ignoras una configuración insegura obvia. La enumeración te da contexto: qué sistema operativo es, qué usuario eres, qué puedes ejecutar, qué archivos puedes leer y qué servicios están corriendo. Con esa información, puedes elegir la ruta de escalada más eficiente.
Las cuatro áreas de enumeración
La enumeración para escalada de privilegios se organiza en cuatro áreas principales:
- Sistema operativo y kernel. ¿Qué distribución es? ¿Qué versión del kernel? ¿Qué arquitectura?
- Usuario y grupos. ¿Quién soy? ¿En qué grupos estoy? ¿Qué puedo ejecutar con sudo?
- Archivos y permisos. ¿Hay archivos sensibles legibles? ¿Archivos con SUID? ¿Directorios escribibles?
- Procesos y servicios. ¿Qué se está ejecutando como root? ¿Hay cron jobs interesantes?
En esta lección cubrimos las dos primeras. Las áreas de archivos y servicios las exploraremos en las lecciones siguientes.
Enumeración del sistema operativo y kernel
Lo primero es entender en qué sistema estás. Estos comandos te dan la información fundamental:
1# Versión del kernel y arquitectura
2$ uname -a
3Linux target 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 x86_64 GNU/Linux
4
5# Distribución y versión
6$ cat /etc/os-release
7PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
8
9# Nombre del host
10$ hostname
11target
12La versión del kernel es relevante porque existen exploits públicos para versiones específicas. Sin embargo, como mencionamos en la lección anterior, los exploits de kernel son nuestro último recurso, no el primero.
Enumeración del usuario actual
Ahora necesitas saber quién eres dentro del sistema y qué puedes hacer:
1# ¿Quién soy?
2$ id
3uid=33(www-data) gid=33(www-data) groups=33(www-data)
4
5# ¿Qué puedo ejecutar con sudo?
6$ sudo -l
7User www-data may run the following commands on target:
8 (root) NOPASSWD: /usr/bin/find
9Este ejemplo es revelador. El usuario www-data (típico de un servidor web) puede ejecutar /usr/bin/find como root sin contraseña. Esto es un vector de escalada directo; lo veremos en detalle en la lección 3.
Enumeración del entorno
El entorno del sistema también puede revelar información útil:
1# Variables de entorno (pueden contener credenciales)
2$ env
3
4# Historial de comandos (puede revelar contraseñas escritas accidentalmente)
5$ cat ~/.bash_history
6
7# Otros usuarios en el sistema
8$ cat /etc/passwd | grep -v "nologin\|false" | cut -d: -f1
9root
10user
11admin
12El historial de bash es una mina de oro subestimada. Los administradores a veces escriben contraseñas directamente en la línea de comandos (por ejemplo, en conexiones a bases de datos o comandos mysql -u root -p<password>). Siempre revísalo.
Interpretando los resultados
La enumeración no es solo recopilar datos, es interpretar lo que ves. Cuando ejecutas id y ves que estás en el grupo docker, eso es un vector de escalada inmediato. Cuando ejecutas sudo -l y ves que puedes ejecutar un programa con NOPASSWD, esa es una prioridad alta. Cuando lees el historial de bash y encuentras una contraseña en texto plano, ya tienes tu respuesta.
La clave es desarrollar un flujo mental: ¿quién soy? → ¿qué puedo hacer? → ¿qué es inusual o inseguro? Con la práctica, este proceso se vuelve casi automático.
Errores comunes
Advertencia
No ignorar `sudo -l`. Este comando es probablemente el más importante de toda la enumeración. Si el usuario puede ejecutar *cualquier cosa* con sudo sin contraseña, tienes una escalada trivial. Siempre ejecútalo, incluso si crees que el usuario no tiene permisos de sudo.
Advertencia
No depender solo de herramientas automatizadas. Scripts como LinPEAS y Linux Smart Enumeration son excelentes, pero generan mucha información. Si no entiendes los comandos subyacentes, no sabrás qué es relevante en la salida. Aprende la enumeración manual primero.
Conclusión
La enumeración es el fundamento de toda escalada de privilegios. Con unos pocos comandos (id, uname -a, sudo -l, cat /etc/passwd, env y el historial de bash) puedes construir una imagen clara del sistema y empezar a identificar vectores de ataque. En la siguiente lección profundizaremos en los tres vectores más comunes: sudo, SUID y permisos inseguros.