
Enumeración de escalada de privilegios posterior a la explotación en Linux
Enumy es un ejecutable portátil ultrarrápido que puedes colocar en una máquina Linux objetivo durante una prueba de penetración o CTF en la fase posterior a la explotación. Ejecutar enumy enumerará la máquina en busca de vulnerabilidades de seguridad comunes.
Puedes descargar el binario final desde la pestaña de lanzamiento x86 o x64. Enlazado estáticamente a musl. Transfiere el binario enumy final a la máquina objetivo.
./enumy
$ ./enumy64 -h
▄█▀─▄▄▄▄▄▄▄─▀█▄ _____
▀█████████████▀ | __|___ _ _ _____ _ _
█▄███▄█ | __| | | | | | |
█████ |_____|_|_|___|_|_|_|_ |
█▀█▀█ |___|
https://github.com/luke-goddard/enumy
Enumy - Used to enumerate the target the target environment & look for
common security vulnerabilities and hostspots
----------------------------------------------------------------------
Output
-o <loc> OUTPUT results to location (default enumy.json)
Walking Filesystem
-i <loc> IGNORE files in this directory (usefull for network shares)
-w <loc> Only WALK files in this directory (usefull for devlopment)
Scan Options
-f run FULL scans (CPU intensive scan's enabled)
-t <num> THREADS (default 4)
Printing Options
-a Print all security AUDIT issues to screen (probably won't help duing a CTF)
Issues are ALWAYS logged in result files regardless of this flag being set.
-d <1|2> Print DEBUG mode (1 low, 2 high) to enable error being printed to screen.
-g <H|M|L> print to screen values GREATER than or equal to high, medium & low
-p <H|M|L|I> do not PRINT to screen high, medium, low & info issues (see below for example)
-m 1-100 MAXIMUM number of issues with same name to print to screen default (unlimited)
Para compilar durante el desarrollo, solo se necesitan make y la librería libcap.
sudo apt-get install libcap-dev
make
Para eliminar la dependencia de glibc y enlazar estáticamente todas las librerías/compilar con musl, haz lo siguiente. Nota: para ello necesitarás tener Docker instalado para crear el entorno de compilación Alpine.
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

A continuación se muestra la lista en constante crecimiento de escaneos que se han implementado.
Nota: para mostrar resultados marcados con ❌, habilita el modo de auditoría con la bandera -a.
Este escaneo verificará las versiones del kernel para ver si coinciden con alguna versión conocida con exploits.
La idea de este escaneo es enumerar el sistema en busca de SUID/GUID binarios que sean anormales, o que tengan permisos débiles que puedan ser explotados.
Recientemente el kernel de Linux soporta capabilities, esta es la forma preferida de darle a un archivo un subconjunto de los poderes de root para mitigar riesgos. Aunque esta es una forma mucho más segura de hacer las cosas, si tienes la suerte de encontrar capacidades anormales establecidas en un archivo, entonces es bastante posible que puedas explotar el ejecutable para obtener mayor acceso. Enumy verificará las capacidades establecidas en todos los archivos ejecutables del sistema.
Este es más un escaneo genérico que intentará categorizar un archivo basándose en su contenido, extensión y nombre. Enumy buscará archivos como claves privadas, contraseñas y archivos de respaldo.
Los archivos coredump son un tipo de archivo ELF que contiene el espacio de direcciones de un proceso cuando el programa finaliza inesperadamente. Ahora imagina si la memoria de este proceso fuera legible y contuviera información sensible. O aún más emocionante, este coredump podría ser de una herramienta desarrollada internamente que falló con un seg fault, permitiéndote desarrollar un día cero (zero day).
Algunos archivos nunca deberían tener el bit SUID establecido; es bastante común que un administrador perezoso le dé SUID a un archivo como docker, ionice, hexdump para hacer que un script bash funcione o hacer su vida más fácil. Este escaneo intenta encontrar algunos binarios SUID malos conocidos.
Sysctl se utiliza para modificar parámetros del kernel en tiempo de ejecución. También es posible consultar estos parámetros del kernel y verificar si medidas de seguridad importantes como ASLR están habilitadas.
Living off the land es una técnica utilizada donde los atacantes weaponizan lo que ya está en el sistema. Lo hacen para mantenerse sigilosos, entre otras razones. Este escaneo enumeraría los archivos que un atacante buscaría.
Este escaneo analizará archivos ELF en busca de sus dependencias. Si tenemos acceso de escritura a cualquiera de estas dependencias o acceso de escritura a cualquier valor DT_RPATH y DT_RUNPATH, entonces podemos crear nuestro propio objeto compartido malicioso en ese ejecutable, comprometiendo potencialmente el sistema.
SSH es uno de los servicios más comunes que encontrarás en el mundo real. También es bastante fácil configurarlo incorrectamente. Este escaneo verificará si se puede endurecer de alguna manera.
El escaneo del usuario actual simplemente analiza /etc/passwd. Con esta información encontramos cuentas de root, directorios home sin protección o faltantes, etc.
Este escaneo encontrará archivos que sean globalmente escribibles, permisos disparejos y archivos sin propietario. Ver aquí para inspiración del escaneo.
Este escaneo sería útil para personas que intentan endurecer su máquina Linux. Resaltará problemas como unidades no cifradas y configuraciones de montaje inseguras.
| Tipo de escaneo | Escaneo rápido | Escaneo completo | Implementado | Mostrado en pantalla | Guardado en registro |
|---|
| Sugeridor de exploits del kernel | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo SUID/GUID | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de capacidades de archivos | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Escaneo de archivos interesantes | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de coredump | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de binarios de ruptura | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de configuración incorrecta de SSH | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Endurecimiento de parámetros sysctl | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de Living Off The Land | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo del usuario actual | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Escaneo de inyección de objetos compartidos dinámicos | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Escaneo de permisos | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Escaneo del sistema de archivos | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Escaneo de Docker | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de entorno | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de acceso privilegiado | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de red | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de información del sistema | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de información de versión | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de credenciales débiles predeterminadas | ✔️ | ✔️ | ❌ | ✔️ | |
| Escaneo de criptografía débil | ❌ | ✔️ | ❌ | ✔️ |