
Audita a exposição do kernel Linux a exploits de escalonamento de privilégios e verifica as medidas de segurança de hardening do kernel usando análise heurística e verificações de config/sysctl.
Download rápido:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Detalhes sobre o uso e funcionamento interno do LES:
https://blog.z-labs.eu/2019/05/10/les-paper.html
Recursos adicionais para o LES:
https://github.com/mzet-/les-res
A ferramenta LES foi projetada para ajudar na detecção de deficiências de segurança em um determinado kernel Linux/máquina baseada em Linux. Ela fornece as seguintes funcionalidades:
A ferramenta avalia (usando métodos heurísticos discutidos em detalhes aqui) a exposição do sistema Linux a exploits de escalonamento de privilégios publicamente conhecidos. Exemplo da saída da ferramenta:
$ ./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
...
Para cada exploit, a exposição é calculada. Os seguintes estados de 'Exposição' são possíveis:
Altamente provável - o kernel avaliado está provavelmente afetado e há uma boa chance de que o exploit PoC funcione imediatamente sem grandes modificações.
Provável - é possível que o exploit funcione, mas provavelmente será necessária personalização do exploit PoC para se adequar ao seu alvo.
Menos provável - é necessária análise manual adicional para verificar se o kernel está afetado.
Improvavelmente - altamente improvável que o kernel esteja afetado (o exploit não é exibido na saída da ferramenta)
O LES pode verificar a maioria das configurações de segurança disponíveis no seu kernel Linux. Ele verifica não apenas as configurações de tempo de compilação do kernel (CONFIGs), mas também verifica as configurações de tempo de execução (sysctl), fornecendo uma imagem mais completa da postura de segurança de um kernel em execução. Esta funcionalidade é uma continuação moderna da opção --kernel da ferramenta checksec.sh de Tobias Klein. Exemplo da saída da ferramenta:
$ ./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
...
Avalie a exposição da máquina Linux a exploits publicamente conhecidos:
$ ./linux-exploit-suggester.sh
Mostre o estado dos recursos de segurança na máquina Linux:
$ ./linux-exploit-suggester.sh --checksec
Avalie a exposição do kernel Linux a exploits publicamente conhecidos com base na string 'uname' fornecida (ou seja, saída do comando uname -a):
$ ./linux-exploit-suggester.sh --uname <uname-string>
Para mais exemplos de uso, veja aqui.
Espero que agora você saiba o que é o LES e o que ele pode fazer por você. Agora veja o que você pode fazer pelo LES:
Tags no LES, por exemplo, uma tag: ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} que indica: o exploit marcado foi verificado para funcionar corretamente no Ubuntu 12.04 com kernels: 3.2.0-23-generic, 3.2.0-29-generic, 3.5.0-23-generic e 3.5.0-29-generic; Com esta tag adicionada, o LES irá automaticamente destacar e aumentar o Rank dinâmico do exploit quando executado no Ubuntu 12.04 com uma das versões de kernel listadas. Isso ajudará você (e outros) durante testes de penetração a identificar rapidamente máquinas Linux criticamente vulneráveis.ext-url no LES e modifique as Tags para refletir os novos alvos adicionados. Veja este artigo para um excelente exemplo de adaptação de um exploit PoC específico para diferentes versões de kernel.FEATURES (se ainda não estiver lá) e publique sua análise em: https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md.bcoles por suas excelentes e frequentes contribuições ao LES.