Scan4all — 渗透测试中的瑞士军刀,可替代十余款工具
想象一下这个场景:你需要快速扫描外围资产,检查上百个 Web 服务的漏洞,对常见密码进行暴力破解,同时还要在十几个不同的 CLI 工具之间来回切换。通常这会变成一场终端混战——nmap 在一个窗口运行,nuclei 在另一个窗口,而你则在第三个窗口里拼命回忆 subfinder 的语法。GhostTroops 的开发者们决定终结这种混乱,于是打造了 scan4all。
这不仅仅是一个扫描器。它是一个基于 Go 语言开发的强大工具,在底层整合了 nuclei、vscan、ksubdomain 和 subfinder 等顶级工具。最棒的是,作者们并没有简单地把二进制文件"粘"在一起——他们重写了部分模块,并在代码层面优化了参数,使一切都能快速运行而不会给网络造成压力。
它实际能做什么
简而言之——几乎涵盖了初始信息收集和攻击向量发现所需的一切。该项目同时覆盖了安全审计的多个阶段。
漏洞与 PoC 搜索
该工具内置了 15,000+ 个 PoC 数据库,包括 nuclei 模板和 vscan 贡献(包含 xray 2.0)。它可以检测从基本 XSS、LFI 到 WordPress 和企业软件最新 CVE 的各类漏洞。有趣的是,作者添加了智能 SSL 逻辑:扫描器会从证书中提取域名,并自动将其添加到扫描队列中。
开箱即用的暴力破解
Scan4all 支持对 23 种协议进行密码暴力破解。列表中包括 SSH、RDP、MySQL、Redis 等经典协议,甚至还有 RouterOS 或 WinRM。一个有趣的细节:一旦扫描器遇到认证页面,HTTP 暴力破解会自动激活。你无需手动指定"这个需要尝试密码"。
端口扫描与指纹识别
该项目没有重复造轮子,而是利用了 nmap 和 naabu 的能力。它能识别 146 种协议,并掌握约 90,000 条端口扫描规则。此外还内置了蜜罐保护——如果工具检测到面对的是蜜罐,它会直接跳过该主机。
底层工作原理
该项目使用 Go 语言编写,具有跨平台特性和低资源消耗特点。架构采用瀑布式方法:首先进行数据收集和目标识别,然后进行深度扫描和 PoC 应用。
最酷的功能之一是 Elasticsearch 集成。如果你需要处理大量数据,标准文本日志会变成噩梦。Scan4all 可以将结果存储在 Elasticsearch 中,让你通过 Kibana 构建便捷的仪表板或快速搜索所需信息。
实际应用场景
如何在实际工作中使用?以下是几个例子:
- 快速基础设施审计。你有一份公司 IP 或域名列表。使用一条命令,即可启动子域名枚举、端口扫描、Web 指纹识别和关键漏洞检测。
- 漏洞赏金(Bug Bounty)。得益于与 subfinder 和 ksubdomain 的集成,该工具非常适合在大规模组织中寻找被遗忘的"尾巴"。
- 弱密码检查。如果你的网络中有很多配置不当的 Redis、MongoDB 或 FTP 实例,scan4all 会比你手动检查更快地标记出它们。
针对目标列表运行的示例:
# Точное сканирование списка URL
UrlPrecise=true ./scan4all -l targets.txt
如果你的系统没有安装 nmap 或不想使用它,可以切换到内置的 naabu:
priorityNmap=false ./scan4all -tp http -list targets.txt -v
细节与局限性
尽管功能强大,但该项目也有一些特点。README 有时看起来比较混乱,英文文档有时会混有中文。你还需要注意,nmap 扫描需要 root 权限,因此你需要通过 PPSSWWDD 环境变量传递密码。
另一点:该工具会产生大量噪音。如果你计划用于隐蔽审计,这可不是个好主意。它会产生大量流量和请求,在任何监控系统(IDS/IPS)中都会立即暴露你的行踪。
值得一试吗
如果你从事渗透测试、参与红队行动,或者只是负责公司的安全工作——答案是肯定的。Scan4all 为日常繁琐工作节省了大量时间。你无需配置五个不同工具的链式调用,只需一个现成的流水线。
当然,它不会取代你的大脑和手动分析,但作为快速"烤"穿外围资产的工具,它确实非常出色。该项目更新活跃:例如,最近添加了对最新 nuclei 版本的支持,并改进了 IP 去重算法以避免重复扫描同一目标。
你可以直接从 GitHub 的 releases 下载二进制文件开始使用,因为依赖项很少。如果你计划深入研究结果,别忘了先部署 Elasticsearch。
相关项目