Enumy 是一个 超快便携可执行文件,你可以在渗透测试或 CTF 的后利用阶段将其放入目标 Linux 机器上。运行 enumy 将枚举目标主机,查找 常见安全漏洞。
你可以从 x86 或 x64 的发布标签页下载最终的二进制文件。静态链接到 musl 将最终的 enumy 二进制文件传输到目标机器。
./enumy
$ ./enumy64 -h
▄█▀─▄▄▄▄▄▄▄─▀█▄ _____
▀█████████████▀ | __|___ _ _ _____ _ _
█▄███▄█ | __| | | | | | |
█████ |_____|_|_|___|_|_|_|_ |
█▀█▀█ |___|
https://github.com/luke-goddard/enumy
Enumy - 用于枚举目标环境并查找
常见安全漏洞和热点
----------------------------------------------------------------------
输出
-o <loc> 输出结果到位置(默认 enumy.json)
文件系统遍历
-i <loc> 忽略此目录中的文件(对网络共享有用)
-w <loc> 仅遍历此目录中的文件(对开发有用)
扫描选项
-f 运行完整扫描(启用 CPU 密集型扫描)
-t <num> 线程数(默认 4)
打印选项
-a 将所有安全审计问题打印到屏幕(在 CTF 中可能没有帮助)
无论是否设置此标志,问题始终会记录在结果文件中。
-d <1|2> 打印调试模式(1 低,2 高),将错误打印到屏幕。
-g <H|M|L> 打印到屏幕的值 大于或等于 高、中、低
-p <H|M|L|I> 不打印到屏幕的高、中、低和信息问题(见下面示例)
-m 1-100 打印到屏幕的相同名称问题的最大数量,默认(无限制)
要在 开发 期间编译,只需要 make 和 libcap 库。
sudo apt-get install libcap-dev
make
要移除 glibc 依赖并静态链接所有库/使用 musl 编译,请执行以下操作。注意,为此你需要安装 docker 以创建 alpine 构建环境。
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

以下是不断增长的已实现扫描列表。
注意:要将标记为 ❌ 的结果打印到屏幕,请使用 -a 标志启用审计模式。
此扫描将检查内核版本,看是否与任何已知存在漏洞利用的内核版本匹配。
此扫描的目的是枚举系统,寻找异常的 SUID/GUID 二进制文件,或具有可被利用的弱权限的文件。
最近 Linux 内核支持 capabilities,这是给文件授予 root 权限子集的首选方式,以降低风险。尽管这种方式更安全,但如果你足够幸运地发现某个文件设置了异常的能力值,那么很可能可以利用该可执行文件来获取更高权限。Enumy 将检查系统上所有可执行文件设置的能力值。
这是一个更通用的扫描,它会根据文件内容、文件扩展名和文件名来尝试对文件进行分类。Enumy 将查找私钥、密码和备份文件等文件。
Coredump 文件是一种 ELF 文件,当程序意外终止时包含进程的地址空间。现在想象一下,如果这个进程的内存是可读的,并且包含敏感信息。或者更令人兴奋的是,这个 coredump 可能是一个内部开发工具段错误时产生的,从而允许你开发一个零日漏洞。
某些文件绝不应该设置 SUID 位,懒惰的系统管理员经常给 docker、ionice、hexdump 等文件设置 SUID,以便使 bash 脚本工作或让他们的工作更轻松。此扫描试图查找一些已知的不良 SUID 二进制文件。
Sysctl 用于在运行时修改内核参数。也可以查询这些内核参数,检查是否启用了重要的安全措施(如 ASLR)。
Living Off The Land 是一种攻击者利用系统上已有的工具来进行攻击的技术。他们这样做是为了保持隐蔽性等原因。此扫描将枚举攻击者可能会寻找的文件。
此扫描将解析 ELF 文件以获取其依赖项。如果我们对这些依赖项中的任何一个具有写权限,或者对任何 DT_RPATH 和 DT_RUNPATH 值具有写权限,那么我们就可以创建我们自己的恶意共享对象注入到该可执行文件中,从而可能危害系统。
SSH 是现实世界中最常见的服务之一,也容易配置错误。此扫描将检查是否能以任何方式加固它。
当前用户扫描只是解析 /etc/passwd。利用这些信息,我们可以发现 root 账户、未受保护和缺失的主目录等。
此扫描将查找全局可写文件、权限不一致的文件和无人认领的文件。参见此处的扫描灵感。
此扫描对于试图加固其 Linux 机器的人很有用。它将突出显示未加密的驱动器和不安全的挂载配置等问题。
| 扫描类型 | 快速扫描 | 全面扫描 | 已实现 | 打印到屏幕 | 保存到日志 |
|---|
| Kernel Exploit Surgestor | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SUID/GUID 扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 文件能力扫描 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| 有趣文件扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Coredump 扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 突破性二进制文件扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SSHD 配置扫描 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Sysctl 扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Living Off The Land 扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 当前用户扫描 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| *.so 注入扫描 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| 权限扫描 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| 文件系统扫描 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Docker 扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 环境扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 特权访问扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 网络扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 系统信息扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 版本信息扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 默认弱凭据扫描 | ✔️ | ✔️ | ❌ | ✔️ | |
| 弱加密扫描 | ❌ | ✔️ | ❌ | ✔️ |