基于 LIEF 的 Python 安全检测工具,输出结果丰富。

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/Wenzel/checksec.py

checksec.py

Checksec工具的Python实现,基于LIEF的输出结果丰富

演示

 

ad1a1b7183175920

目录

概述

这是一个简单的工具,用于验证二进制文件的安全属性。

编译器可以启用这些属性来强制执行可执行文件的安全性,并减少漏洞利用。但是,在整个系统上应用它们可能很有挑战性。

检查您的 Linux 发行版/Windows 版本提供给您的安全级别!

支持的格式:

  • ELF
  • PE
  • Mach-O

基于:

  • Rich:美观的终端输出格式
  • LIEF:跨平台库,用于解析、修改和抽象 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 工作线程。

 
标签:工具分享, 扫描工具