enum.sh es un script de recolección de información y enumeración local para sistemas Linux, diseñado específicamente para fases de post-explotación y búsqueda de vectores de escalada de privilegios (PrivEsc).
Este proyecto nace como herramienta personal de apoyo para la resolución de máquinas CTF y la preparación práctica para la certificación eJPTv2.
A diferencia de otros scripts masivos, enum.sh está diseñado bajo tres principios fundamentales:
- Salida Limpia (Noise Reduction): Uso riguroso de la redirección de errores (
2>/dev/null) en comandos recursivos comofind. Elimina el spam de "Permission denied" para que el output final sea 100% legible. - Arquitectura Modular: Dividido en funciones independientes. Si un bloque falla, el script continúa ejecutándose sin colapsar.
- Resiliencia Operativa: Comprueba dinámicamente la existencia de comandos (como
getcapolsattr) antes de invocarlos. Si la máquina víctima no cuenta con un binario, la función se adapta silenciosamente.
- Información y Contexto: Versión de Kernel, Distro, Uptime, Grupos y permisos
sudo -lsin contraseña. - Permisos Peligrosos: Binarios con bits
SUIDySGID. - Capacidades (Capabilities): Búsqueda de Capabilities mal configuradas que permitan ejecución privilegiada.
- Atributos Ocultos: Archivos con el atributo inmutable (
+i) en/etc. - Archivos Modificables: Directorios World-Writable fuera de las ubicaciones comunes y temporales.
- Automatización: Tareas programadas (
cron jobs) globales y del usuario actual. - Procesos y Entorno: Inspección del
$PATHy permisos de sus directorios, así como procesos ejecutados porroot.
Sube el script a la máquina víctima (mediante wget, curl, o pegando el contenido codificado en Base64) y ejecútalo.
Se recomienda redirigir la salida a un archivo para su posterior análisis:
# Otorgar permisos de ejecución
chmod +x enum.sh
# Ejecutar y guardar el botín (loot)
./enum.sh > /tmp/loot_enum.txt
# Leer cómodamente el resultado
cat /tmp/loot_enum.txt