
Enumerazione di escalation dei privilegi in post-exploitation su Linux
Enumy è un eseguibile portatile ultra veloce che si inserisce nella macchina Linux di destinazione durante un pentest o CTF nella fase di post-exploitation. Eseguire enumy enumererà la macchina per vulnerabilità di sicurezza comuni.
Puoi scaricare il binario finale dalla scheda release x86 o x64. Collegato staticamente a musl Trasferisci il binario finale di enumy sulla macchina di destinazione.
./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)
Per compilare durante lo sviluppo, sono sufficienti make e la libreria libcap.
sudo apt-get install libcap-dev
make
Per rimuovere la dipendenza da glibc e collegare staticamente tutte le librerie/compilare con musl, procedere come segue. Nota: per farlo dovrai avere docker installato per creare l'ambiente di build Alpine.
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

Di seguito è riportata la lista sempre crescente delle scansioni che sono state implementate.
Nota: per stampare i risultati contrassegnati con ❌, abilita la modalità audit con il flag -a.
Questa scansione verificherà le versioni del kernel per vedere se corrispondono a versioni del kernel con exploit noti.
L'idea di questa scansione è enumerare il sistema cercando binari SUID/GUID anomali o con permessi deboli che possono essere sfruttati.
Recentemente il kernel Linux supporta le capabilities, questo è il modo preferito per dare a un file un sottoinsieme dei poteri di root per mitigare il rischio. Sebbene sia un modo molto più sicuro, se sei abbastanza fortunato da trovare capabilities anomale impostate su un file, è molto probabile che tu possa sfruttare l'eseguibile per ottenere un accesso maggiore. Enumy verificherà le capabilities impostate su tutti i file eseguibili del sistema.
Questa è più una scansione generica che tenterà di categorizzare un file in base al suo contenuto, estensione e nome. Enumy cercherà file come chiavi private, password e file di backup.
I file Coredump sono un tipo di file ELF che contiene lo spazio degli indirizzi di un processo quando il programma termina in modo inaspettato. Ora immagina se la memoria di questo processo fosse leggibile e contenesse informazioni sensibili. O ancora più entusiasmante, questo coredump potrebbe essere per uno strumento sviluppato internamente che è crashato con un segfault, permettendoti di sviluppare un zero day.
Alcuni file non dovrebbero mai avere il bit SUID impostato, è abbastanza comune che un amministratore di sistema pigro dia a file come docker, ionice, hexdump il bit SUID per far funzionare uno script bash o per semplificarsi la vita. Questa scansione cerca di trovare alcuni binari SUID noti come pericolosi.
Sysctl è usato per modificare i parametri del kernel in runtime. È anche possibile interrogare questi parametri del kernel e verificare se misure di sicurezza importanti come ASLR sono abilitate.
Living off the land è una tecnica in cui gli aggressori armano ciò che è già presente sul sistema. Lo fanno per rimanere furtivi, tra gli altri motivi. Questa scansione enumererà i file che un aggressore cercherebbe.
Questa scansione analizzerà i file ELF per le loro dipendenze. Se abbiamo accesso in scrittura a una di queste dipendenze o accesso in scrittura a qualsiasi valore DT_RPATH e DT_RUNPATH, allora possiamo creare un nostro oggetto condiviso malevolo all'interno di quell'eseguibile, compromettendo potenzialmente il sistema.
SSH è uno dei servizi più comuni che troverai nel mondo reale. È anche abbastanza facile configurarlo male. Questa scansione verificherà se può essere rafforzato in qualche modo.
La scansione dell'utente corrente analizza /etc/passwd. Con queste informazioni troviamo account di root, directory home non protette e mancanti, ecc.
Questa scansione troverà file scrivibili globalmente, permessi irregolari e file senza proprietario. Vedi qui per l'ispirazione della scansione.
Questa scansione sarebbe utile per le persone che cercano di rafforzare la propria macchina Linux. Evidenzierà problemi come unità non cifrate e configurazioni di montaggio insicure.
| Tipo di Scansione | Scansione Rapida | Scansione Completa | Implementata | Stampata a Schermo | Salvata nel Log |
|---|
| Suggeritore di Exploit Kernel | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione SUID/GUID | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione delle Capacità dei File | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Scansione dei File Interessanti | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione Coredump | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione dei Binari Breakout | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione della Configurazione SSHD | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Scansione Sysctl | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione Living Off The Land | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione dell'Utente Corrente | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Scansione dell'Iniezione di *.so | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Scansione dei Permessi | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Scansione del File System | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Scansione Docker | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione dell'Ambiente | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione degli Accessi Privilegiati | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione di Rete | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione delle Informazioni di Sistema | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione delle Informazioni sulla Versione | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione delle Credenziali Deboli di Default | ✔️ | ✔️ | ❌ | ✔️ | |
| Scansione della Crittografia Debole | ❌ | ✔️ | ❌ | ✔️ |