
Audite l'exposition du noyau Linux aux exploits d'élévation de privilèges et vérifie les mesures de sécurité de durcissement du noyau à l'aide d'une analyse heuristique et de vérifications de configuration/sysctl.
Téléchargement rapide :
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Détails sur l'utilisation et le fonctionnement interne de LES :
https://blog.z-labs.eu/2019/05/10/les-paper.html
Ressources supplémentaires pour LES :
https://github.com/mzet-/les-res
L'outil LES est conçu pour aider à détecter les failles de sécurité d'un noyau Linux/d'une machine basée sur Linux. Il offre les fonctionnalités suivantes :
L'outil évalue (à l'aide de méthodes heuristiques détaillées ici) l'exposition du système Linux donné aux exploits d'escalade de privilèges Linux publiquement connus. Exemple de sortie de l'outil :
$ ./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
...
Pour chaque exploit, l'exposition est calculée. Les états d''exposition' suivants sont possibles :
Très probable - le noyau évalué est très probablement affecté et il y a de très fortes chances que l'exploit PoC fonctionne directement sans modifications majeures.
Probable - il est possible que l'exploit fonctionne, mais une personnalisation de l'exploit PoC sera probablement nécessaire pour l'adapter à votre cible.
Moins probable - une analyse manuelle supplémentaire est nécessaire pour vérifier si le noyau est affecté.
Peu probable - il est très peu probable que le noyau soit affecté (l'exploit n'est pas affiché dans la sortie de l'outil)
LES peut vérifier la plupart des paramètres de sécurité disponibles pour votre noyau Linux. Il vérifie non seulement les configurations à la compilation (CONFIGs), mais aussi les paramètres d'exécution (sysctl) pour donner une image plus complète de la posture de sécurité d'un noyau en cours d'exécution. Cette fonctionnalité se veut une continuation moderne de l'option --kernel de l'outil checksec.sh de Tobias Klein. Exemple de sortie de l'outil :
$ ./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
...
Évaluer l'exposition de la machine Linux aux exploits publiquement connus :
$ ./linux-exploit-suggester.sh
Afficher l'état des fonctionnalités de sécurité sur la machine Linux :
$ ./linux-exploit-suggester.sh --checksec
Évaluer l'exposition du noyau Linux aux exploits publiquement connus en se basant sur la chaîne 'uname' fournie (c'est-à-dire la sortie de la commande uname -a) :
$ ./linux-exploit-suggester.sh --uname <uname-string>
Pour plus d'exemples d'utilisation, voir ici.
Vous savez maintenant, je l'espère, ce qu'est LES et ce qu'il peut faire pour vous. Voyez maintenant ce que vous pouvez faire pour LES :
Tags dans LES, par exemple d'un tag : ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} qui indique : l'exploit tagué a été vérifié comme fonctionnant correctement sur Ubuntu 12.04 avec les noyaux : 3.2.0-23-generic, 3.2.0-29-generic, 3.5.0-23-generic et 3.5.0-29-generic ;. Avec ce tag ajouté, LES mettra automatiquement en évidence et augmentera le Rank dynamique de l'exploit lorsqu'il est exécuté sur Ubuntu 12.04 avec l'une des versions de noyau listées. Cela vous aidera (ainsi que d'autres) lors de tests d'intrusion à identifier rapidement les machines Linux critiques vulnérables.ext-url dans LES et modifiez les Tags pour refléter les nouvelles cibles ajoutées. Voir cet article pour un excellent exemple d'adaptation d'un exploit PoC spécifique à différentes versions de noyau.FEATURES (si ce n'est pas déjà fait) et publier votre analyse à : https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md.bcoles pour ses excellentes et fréquentes contributions à LES.