The-Z-Labs/linux-exploit-suggester
GitHub: The-Z-Labs/linux-exploit-suggester
基于 Bash 的 Linux 内核提权漏洞智能推荐与安全加固检测工具,通过启发式算法评估系统暴露程度并审计内核防护机制。
Stars: 6405 | Forks: 1160
## LES:Linux 提权审计工具
快速下载:
```
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 系统在公开已知漏洞下的暴露程度
该工具评估(使用[此处](https://blog.z-labs.eu/2019/05/10/les-paper.html)详细讨论的启发式方法)给定 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
...
```
对于每个漏洞,都会计算其暴露程度。可能的“暴露程度(Exposure)”状态如下:
- **极有可能** - 被评估的内核极有可能受此影响,并且 PoC 漏洞利用程序很有可能无需任何重大修改即可直接使用。
- **有可能** - 漏洞利用程序可能会奏效,但很可能需要自定义 PoC 漏洞利用程序以适应您的目标环境。
- **可能性较小** - 需要进行额外的手动分析以验证内核是否受影响。
- **不太可能** - 内核受影响的可能性极低(漏洞不会显示在工具输出中)
### 验证内核加固安全措施的状态
LES 可以检查 Linux 内核提供的绝大多数安全设置。它不仅验证内核编译时配置(CONFIGs),还验证运行时设置(sysctl),从而更全面地展示运行中内核的安全态势。此功能旨在成为 Tobias Klein 的 [checksec.sh](http://www.trapkit.de/tools/checksec.html) 工具中 `--kernel` 开关的现代延续。工具输出示例:
```
$ ./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
```
根据提供的 'uname' 字符串(即 `uname -a` 命令的输出)评估 Linux 内核对公开已知漏洞的暴露程度:
```
$ ./linux-exploit-suggester.sh --uname
```
更多使用示例,请参见[此处](https://mzet-.github.io/2019/05/10/les-paper.html)。
## 参与贡献
您现在应该已经了解了 LES 是什么以及它能为您做什么。现在看看您能为 LES 做些什么:
- 向其中添加新发布的 Linux 提权漏洞。
- 在具有多个内核版本的不同 Linux 发行版上测试现有漏洞,然后以 LES 中的 `Tags`(标签)形式记录您的发现,例如标签:`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;*。添加此标签后,当在搭载所列内核版本之一的 Ubuntu 12.04 上运行时,LES 将自动高亮显示并提升该漏洞的动态 `Rank`(排名)。这将帮助您(及其他人)在渗透测试期间快速识别出严重易受攻击的 Linux 机器。
- 公开的漏洞利用程序通常仅为了 PoC 目的而编写,且仅针对一个(或几个)特定的 Linux 发行版和/或内核版本。选择您选定的漏洞源码并进行自定义,使其能在不同的内核版本上运行。然后将您自定义的漏洞利用版本作为 `ext-url` 条目添加到 LES 中,并修改 `Tags` 以反映新添加的目标。请参阅[这篇](https://ricklarabee.blogspot.com/2017/12/adapting-poc-for-cve-2017-1000112-to.html)文章,其中包含将特定 PoC 漏洞适配到不同内核版本的绝佳示例。
- 对选定的内核加固安全措施进行源代码分析,然后将其添加到 `FEATURES` 数组中(如果尚未添加),并在以下位置发布您的分析:`https://github.com/mzet-/les-res/blob/master/features/.md`。
### 致谢
感谢 [bcoles](https://github.com/bcoles/) 对 LES 做出的卓越且频繁的贡献。
标签:Shell脚本, Web报告查看器, 内核漏洞, 反取证, 子域名枚举, 安全评估, 应用安全, 提权, 提权审计, 操作系统安全, 攻击路径可视化, 无线安全, 本地提权, 漏洞利用建议, 系统安全, 网络安全, 隐私保护, 黑客工具