跳转到内容

安全

本文的安全指计算机安全。在计算机安全领域有一类名为 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 代码分析,可发现安全漏洞并进行修复

密码学通常涉及复杂的数学算法,因此理论上所有数学库/算法库都属于这类工具。

  • CyberChef 用于加密、编码、压缩和数据分析的 Web 应用
  • OpenSSL 现代加密工具包
  • RsaCtfTool 一个 RSA 攻击工具
  • xortool 一个异或加密分析工具
  • hashcat 最快的哈希破解工具

在不实际运行程序的情况下进行分析。有些程序可能存在恶意代码,因此只能进行静态分析。

  • 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 等的字典集合