
Проверяет ядро Linux на подверженность эксплойтам для повышения привилегий и подтверждает реализацию мер по усилению безопасности ядра с помощью эвристического анализа и проверок конфигурации/sysctl.
Быстрая загрузка:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
Подробности об использовании LES и его внутренней работе:
https://blog.z-labs.eu/2019/05/10/les-paper.html
Дополнительные ресурсы для LES:
https://github.com/mzet-/les-res
Инструмент LES предназначен для помощи в обнаружении недостатков безопасности для заданного ядра Linux/Linux-машины. Он предоставляет следующие функции:
Инструмент оценивает (используя эвристические методы, подробно описанные здесь) подверженность данной Linux-системы общеизвестным эксплойтам для повышения привилегий в Linux. Пример вывода инструмента:
$ ./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
...
Для каждого эксплойта рассчитывается подверженность. Возможны следующие состояния 'Подверженность':
Высокая вероятность - оцениваемое ядро, скорее всего, затронуто, и есть очень большая вероятность, что PoC-эксплойт будет работать «из коробки» без серьёзных изменений.
Вероятно - возможно, что эксплойт сработает, но, скорее всего, потребуется настройка PoC-эксплойта под вашу цель.
Менее вероятно - требуется дополнительный ручной анализ, чтобы проверить, затронуто ли ядро.
Невероятно - крайне маловероятно, что ядро затронуто (эксплойт не отображается в выводе инструмента)
LES может проверять большинство параметров безопасности, доступных в вашем ядре Linux. Он проверяет не только конфигурации времени компиляции ядра (CONFIG), но и настройки времени выполнения (sysctl), давая более полную картину безопасности работающего ядра. Эта функциональность задумана как современное продолжение ключа --kernel для инструмента checksec.sh от Тобиаса Кляйна. Пример вывода инструмента:
$ ./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
...
Оценить подверженность Linux-машины общеизвестным эксплойтам:
$ ./linux-exploit-suggester.sh
Показать состояние функций безопасности на Linux-машине:
$ ./linux-exploit-suggester.sh --checksec
Оценить подверженность ядра Linux общеизвестным эксплойтам на основе предоставленной строки uname (т.е. вывода команды uname -a):
$ ./linux-exploit-suggester.sh --uname <uname-string>
Больше примеров использования см. здесь.
Теперь вы, надеюсь, знаете, что такое LES и что он может для вас сделать. Теперь посмотрите, что вы можете сделать для LES:
Добавляйте в него недавно опубликованные эксплойты для повышения привилегий в Linux.
Тестируйте существующие эксплойты на различных дистрибутивах Linux с несколькими версиями ядер, затем документируйте свои находки в виде Tags в LES, например, тег: ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} который гласит: помеченный эксплойт был проверен и корректно работает на Ubuntu 12.04 с ядрами: 3.2.0-23-generic, 3.2.0-29-generic, 3.5.0-23-generic и 3.5.0-29-generic;. С добавлением этого тега LES автоматически выделит и повысит динамический Rank эксплойта при запуске на Ubuntu 12.04 с одной из перечисленных версий ядра. Это поможет вам (и другим) во время пентестов быстро выявлять критически уязвимые Linux-машины.
Опубликованные эксплойты часто пишутся только для целей PoC и только для одного (или нескольких) конкретных дистрибутивов Linux и/или версий ядер. Выберите исходники подходящего эксплойта и настройте его для работы на других версиях ядер. Затем добавьте вашу кастомизированную версию эксплойта как запись ext-url в LES и измените Tags, чтобы отразить новые цели. См. эту статью как отличный пример адаптации конкретного PoC-эксплойта к разным версиям ядер.
Проведите анализ исходного кода выбранной меры безопасности по усилению ядра, затем добавьте её в массив FEATURES (если её там ещё нет) и опубликуйте свой анализ по адресу: https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md.
bcoles за его отличный и частый вклад в LES.