
Esamina l'esposizione del kernel Linux a exploit di escalation dei privilegi e verifica le misure di hardening del kernel utilizzando analisi euristiche e controlli config/sysctl.
Scarica velocemente:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Dettagli sull'uso e sul funzionamento interno di LES:
https://blog.z-labs.eu/2019/05/10/les-paper.html
Risorse aggiuntive per LES:
https://github.com/mzet-/les-res
Lo strumento LES è progettato per assistere nel rilevamento di carenze di sicurezza per un dato kernel Linux/macchina basata su Linux. Fornisce le seguenti funzionalità:
Lo strumento valuta (utilizzando metodi euristici discussi in dettaglio qui) l'esposizione del dato sistema Linux a exploit di escalation dei privilegi Linux pubblicamente noti. Esempio di output dello strumento:
$ ./linux-exploit-suggester.sh
...
[+] [CVE-2017-16995] eBPF_verifier
Details: https://ricklarabee.blogspot.com/2018/07/ebpf-and-analysis-of-get-rekt-linux.html
Exposure: highly probable
Tags: debian=9.0{kernel:4.9.0-3-amd64},fedora=25|26|27,[ ubuntu=14.04 ]{kernel:4.4.0-89-generic},ubuntu=(16.04|17.04){kernel:4.(8|10).0-(19|28|45)-generic}
Download URL: https://www.exploit-db.com/download/45010
Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1
[+] [CVE-2017-1000112] NETIF_F_UFO
Details: http://www.openwall.com/lists/oss-security/2017/08/13/1
Exposure: probable
Tags: [ ubuntu=14.04{kernel:4.4.0-*} ],ubuntu=16.04{kernel:4.8.0-*}
Download URL: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c
ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/cve-2017-1000112/CVE-2017-1000112/poc.c
Comments: CAP_NET_ADMIN cap or CONFIG_USER_NS=y needed. SMEP/KASLR bypass included. Modified version at 'ext-url' adds support for additional distros/kernels
[+] [CVE-2016-8655] chocobo_root
Details: http://www.openwall.com/lists/oss-security/2016/12/06/1
Exposure: probable
Tags: [ ubuntu=(14.04|16.04){kernel:4.4.0-(21|22|24|28|31|34|36|38|42|43|45|47|51)-generic} ]
Download URL: https://www.exploit-db.com/download/40871
Comments: CAP_NET_RAW capability is needed OR CONFIG_USER_NS=y needs to be enabled
...
Per ogni exploit, viene calcolata l'esposizione. Sono possibili i seguenti stati di 'Esposizione':
Altamente probabile - il kernel valutato è molto probabilmente affetto e c'è un'altissima probabilità che l'exploit PoC funzioni immediatamente senza modifiche sostanziali.
Probabile - è possibile che l'exploit funzioni ma molto probabilmente sarà necessaria una personalizzazione dell'exploit PoC per adattarlo al tuo target.
Meno probabile - è necessaria un'analisi manuale aggiuntiva per verificare se il kernel è affetto.
Improbabile - è altamente improbabile che il kernel sia affetto (l'exploit non viene visualizzato nell'output dello strumento)
LES può verificare la maggior parte delle impostazioni di sicurezza disponibili nel tuo kernel Linux. Verifica non solo le configurazioni in fase di compilazione del kernel (CONFIG) ma anche le impostazioni in fase di esecuzione (sysctl) fornendo un quadro più completo della postura di sicurezza per un kernel in esecuzione. Questa funzionalità è pensata per essere una continuazione moderna dello switch --kernel per lo strumento checksec.sh di Tobias Klein. Esempio di output dello strumento:
$ ./linux-exploit-suggester.sh --checksec
Mainline kernel protection mechanisms:
[ Disabled ] GCC stack protector support (CONFIG_HAVE_STACKPROTECTOR)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-regular.md
[ Disabled ] GCC stack protector STRONG support (CONFIG_STACKPROTECTOR_STRONG)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-strong.md
[ Enabled ] Low address space to protect from user allocation (CONFIG_DEFAULT_MMAP_MIN_ADDR)
https://github.com/mzet-/les-res/blob/master/features/mmap_min_addr.md
[ Disabled ] Restrict unprivileged access to kernel syslog (CONFIG_SECURITY_DMESG_RESTRICT)
https://github.com/mzet-/les-res/blob/master/features/dmesg_restrict.md
[ Enabled ] Randomize the address of the kernel image (KASLR) (CONFIG_RANDOMIZE_BASE)
https://github.com/mzet-/les-res/blob/master/features/kaslr.md
[ Disabled ] Hardened user copy support (CONFIG_HARDENED_USERCOPY)
https://github.com/mzet-/les-res/blob/master/features/hardened_usercopy.md
...
Valuta l'esposizione della macchina Linux a exploit pubblicamente noti:
$ ./linux-exploit-suggester.sh
Mostra lo stato delle funzionalità di sicurezza sulla macchina Linux:
$ ./linux-exploit-suggester.sh --checksec
Valuta l'esposizione del kernel Linux a exploit pubblicamente noti basandosi sulla stringa 'uname' fornita (cioè l'output del comando uname -a):
$ ./linux-exploit-suggester.sh --uname <uname-string>
Per ulteriori esempi di utilizzo, vedi qui.
Spero tu ora sappia cos'è LES e cosa può fare per te. Ora vedi cosa puoi fare tu per LES:
Aggiungi exploit di escalation dei privilegi Linux appena pubblicati.
Testa exploit esistenti su varie distribuzioni Linux con più versioni del kernel, poi documenta le tue scoperte sotto forma di Tags in LES, ad esempio un tag: ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} che afferma: l'exploit taggato è stato verificato funzionare correttamente su Ubuntu 12.04 con kernel: 3.2.0-23-generic, 3.2.0-29-generic, 3.5.0-23-generic e 3.5.0-29-generic; Con questo tag aggiunto, LES evidenzierà automaticamente e aumenterà il Rank dinamico dell'exploit quando eseguito su Ubuntu 12.04 con una delle versioni del kernel elencate. Questo ti aiuterà (e gli altri) durante i penetration test a identificare rapidamente macchine Linux criticamente vulnerabili.
Gli exploit pubblicati sono spesso scritti solo a scopo PoC per una (o un paio di) distribuzioni Linux specifiche e/o versioni del kernel. Prendi i sorgenti dell'exploit scelto e personalizzalo per eseguirlo su versioni del kernel diverse. Quindi aggiungi la tua versione personalizzata dell'exploit come voce ext-url in LES e modifica i Tags per riflettere i nuovi target aggiunti. Vedi questo articolo per un eccellente esempio di adattamento di un exploit PoC specifico a diverse versioni del kernel.
Conduci un'analisi del codice sorgente di una misura di sicurezza di hardening del kernel scelta, quindi aggiungila all'array FEATURES (se non già presente) e pubblica la tua analisi su: https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md.
bcoles per i suoi eccellenti e frequenti contributi a LES.