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