基于 LIEF 的 Python 安全检测工具,输出结果丰富。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/Wenzel/checksec.py
checksec.py
Checksec工具的Python实现,基于LIEF的输出结果丰富

目录
概述
这是一个简单的工具,用于验证二进制文件的安全属性。
编译器可以启用这些属性来强制执行可执行文件的安全性,并减少漏洞利用。但是,在整个系统上应用它们可能很有挑战性。
检查您的 Linux 发行版/Windows 版本提供给您的安全级别!
支持的格式:
-
ELF -
PE -
Mach-O
基于:
要求
设置
Windows
您可以在最新的 Github releases 中找到 checksec.exe:
Linux
pip install checksec.py
用法
checksec <file_or_directory>...
查看 --help 获取更多选项(JSON 输出、递归遍历、工作线程数量 等)
常见问题解答
1️⃣ checksec.py 和 checksec.sh 有什么区别?
| checksec.py | checksec.sh | |
|---|---|---|
| 跨平台支持 | ✔ | ❌ |
| 分布式工作负载 | ✔ | ❌ |
| 扫描文件 | ✔ | ✔ |
| 扫描目录 | ✔ | ✔ |
| 递归扫描目录 | ✔ | ❌ |
| 指定 libc 路径 | ✔ | ❌ |
| 扫描进程 | ❌ | ✔ |
| 扫描进程库 | ❌ | ✔ |
| 扫描内核配置 | ❌ | ✔ |
| 输出 Cli | ✔ | ✔ |
| 输出 JSON | ✔ | ✔ |
| 输出 CSV | ❌ | ✔ |
| 输出 XML | ❌ | ✔ |
| ELF: Relro | ✔ | ✔ |
| ELF: Canary | ✔ | ✔ |
| ELF: NX | ✔ | ✔ |
| ELF: PIE | ✔ | ✔ |
| ELF: RPATH | ✔ | ✔ |
| ELF: RUNPATH | ✔ | ✔ |
| ELF: Symbols | ✔ | ✔ |
| ELF: Fortify | ✔ | ✔ |
| ELF: Fortified | ✔ | ✔ |
| ELF: Fortifable | ✔ | ✔ |
| ELF: Fortify Score | ✔ | ❌ |
2️⃣ checksec.py 和 winchecksec 有什么区别?
| checksec.py | winchecksec | |
|---|---|---|
| 跨平台支持 | ✔ | ✔ |
| 分布式工作负载 | ✔ | ❌ |
| 扫描文件 | ✔ | ✔ |
| 扫描目录 | ✔ | ❌ |
| 递归扫描目录 | ✔ | ❌ |
| 输出 CLI | ✔ | ✔ |
| 输出 JSON | ✔ | ✔ |
| PE: ASLR - DYNAMIC_BASE | ✔ | ✔ |
| PE: ASLR - HIGHENTROPYVA | ✔ | ✔ |
| PE: INTEGRITYCHECK | ✔ | ✔ |
| PE: Authenticode signed | ✔ | ✔ |
| PE: DEP | ✔ | ✔ |
| PE: Manifest Isolation | ✔ | ✔ |
| PE: SEH | ✔ | ✔ |
| PE: SafeSEH | ✔ | ✔ |
| PE: Control Flow Guard | ✔ | ✔ |
| PE: Return Flow Guard | ❌ | ✔ |
| PE: Stack Cookie | ✔ | ✔ |
3️⃣ checksec 在某些巨大的二进制文件上运行缓慢!发生了什么?
checksec.py 依赖于 LIEF 库来解析 PE/ELF/MachO 格式。
➡️该库目前不提供按需解析,因此它会解析和获取不必要的数据。
➡️获取符号可能很慢(例如:pandoc,118M,+300 000 个符号,+2m 20sec)。参见此 issue。
4️⃣ 我发送了 CTRL-C 以取消 checksec.py 处理,但应用程序不想退出
checksec.py 使用多个进程工作线程来并行执行和处理二进制文件。当接收到 CRTL-C 时,checksec.py 将等待它们停止。
有时,这不起作用,我目前不知道为什么。你可以在之后杀死剩余的 Python 工作线程。
标签:工具分享, 扫描工具