安全
本文的安全指计算机安全。在计算机安全领域有一类名为 CTF(Capture the Flags)的比赛,其内容通常包含以下几个部分
- Web 网络攻防。寻找服务器上的漏洞并尝试进行攻击。
- Crypto 密码学。破解密码,或者伪造数字签名。
- Reverse 逆向工程。对着黑盒研究内部结构和原理。
- Pwn 二进制利用。和逆向工程很像,但目的不是搞清楚原理,而是发现漏洞并进行利用。
- Misc 杂项。包括很多内容,比如隐写、取证等。
本文以 CTF 涵盖的主题作为大纲来组织内容
用于发现可攻击的服务器
- Amass 使用主动侦察技术进行攻击面网络映射和外部资产发现
- subfinder 快速的被动子域名枚举工具
- Wappalyzer 一个浏览器扩展,用于识别 Web 应用的技术栈
- Shodan 搜索互联网连接设备的工具
- nmap 网络端口扫描
用于寻找服务器上的漏洞
- ffuf 快速的 Web 模糊测试工具
- ZAP 一个 Web 应用漏洞扫描器
- mitmproxy 交互式的、支持 SSL/TLS 的拦截代理
- SQLmap 自动化 SQL 注入和数据库接管工具
利用漏洞进行攻击
- Metasploit 渗透测试框架
- Impacket 网络协议套件
在攻入服务器后保持渗透状态
- PEASS 用于本地权限提升的脚本合集
用于保障应用部署环境的安全
- ScoutSuite 云安全审计工具
- trivy 用于查找容器、代码仓库、云等环境中的漏洞
- trufflehog 查找、验证和分析泄露的凭证
用于确保应用本身的安全
- Sigma 日志分析,可识别出恶意事件
- Semgrep 代码分析,可发现安全漏洞并进行修复
Crypto
Section titled “Crypto”密码学通常涉及复杂的数学算法,因此理论上所有数学库/算法库都属于这类工具。
- CyberChef 用于加密、编码、压缩和数据分析的 Web 应用
- OpenSSL 现代加密工具包
- RsaCtfTool 一个 RSA 攻击工具
- xortool 一个异或加密分析工具
- hashcat 最快的哈希破解工具
Reverse
Section titled “Reverse”在不实际运行程序的情况下进行分析。有些程序可能存在恶意代码,因此只能进行静态分析。
- radare2 一个 C 写的逆向工程框架,集成了分析、调试、打补丁等功能
- Ghidra 一个 Java 写的逆向工程框架,由 NAS(美国国家安全局)开源
- YARA 用于识别程序中的恶意代码
此外还有 Disassembler(反汇编器)、Decompiler(反编译器)、Deobfuscator(反混淆工具)、Unpacker(脱壳工具),但由于不同的机器码/字节码/编程语言需要不同的工具,因此这里不详细列举了。
在实际运行程序的情况下进行分析。常用的调试工具都可以用于动态分析。
- gdb/lldb/windbg 分别是 Linux/macOS/Windows 最主要的调试器
- strace/ltrace 系统调用跟踪和库函数调用跟踪
- Frida 跨平台动态插桩工具
大多数用于 Reverse 的工具也可以用于 Pwn。为了不重复,以下工具是在完成逆向后,准备检测并利用漏洞时使用的
- checksec 检查二进制文件开启了哪些安全保护机制
- AFL++ 用于二进制漏洞发现
- pwndbg 一个 GDB 插件,集成了二进制漏洞利用的功能
- pwntools 一个 Python 库,集成了多种二进制利用工具
隐写是指将数据或文件隐藏起来,而取证则相反。
- stegify 用于 LSB 隐写和取证
- strings 显示文件中所有的可打印字符
- binwalk 固件分析工具
- SleuthKit 数字取证工具集
- volatility 内存取证框架
抓取网络流量并进行分析。
- Wireshark 网络协议分析工具
字典通常用于进行暴力测试和破解。
- SecLists 一个包括用户名、密码、URL、敏感数据模式、模糊测试载荷、Web Shell 等的字典集合