
文章目录NaabuGo 语言编写的高速端口扫描工具核心能力与 Nmap 的配合UDP 探测的改进主机发现CDN 和 WAF 的处理配置和优化部署方式适用场景NaabuGo 语言编写的高速端口扫描工具做安全测试或者资产梳理的时候第一步往往是搞清楚目标机器到底开了哪些端口。市面上端口扫描工具不少但大多数要么速度一般要么配置繁琐。Naabu 是 projectdiscovery 团队用 Go 写的端口扫描器主打的就是一个快字。它支持 SYN 扫描、CONNECT 扫描和 UDP 扫描三种模式能在短时间内对大量主机完成端口枚举。这个项目目前在 GitHub 上有 6000 多颗星属于安全测试领域比较常用的基础设施级工具。核心能力Naabu 的设计思路很清晰专注做端口扫描这一件事把它做到足够快、足够轻。扫描模式上它同时支持 SYN 和 CONNECT 两种 TCP 扫描方式。SYN 扫描需要 root 权限速度更快属于半开扫描不会完成完整的 TCP 三次握手。CONNECT 扫描不需要特殊权限适合在普通用户环境下使用。UDP 扫描也支持还可以通过自定义 payload 来探测特定的 UDP 服务。输入方面Naabu 接受单个主机名、IP 地址、CIDR 网段甚至 ASN 编号。你可以把一批目标放在文件里用 list 参数批量扫描也可以通过管道把其他工具的输出直接喂给它。输出格式支持 JSON、TXT 和标准输出方便和其他工具串联。与 Nmap 的配合Naabu 本身不做服务版本识别但它提供了和 Nmap 的集成接口。扫描完端口之后可以通过 nmap-cli 参数直接调用 Nmap 对发现的端口做进一步的服务探测。比如先用 Naabu 快速筛出开放端口再让 Nmap 针对这几个端口做版本检测比直接用 Nmap 全端口扫描要快很多。另外Naabu 内置了基于 nmap-service-probes 数据库的服务版本检测功能用 sV 参数就能开启。这个功能在端口扫描的同时并行运行不会额外增加太多时间。UDP 探测的改进传统 UDP 端口扫描有个老问题发一个空数据包过去大多数 UDP 服务不会有任何回应扫描器就误以为端口是关闭的。Naabu 的 uP 参数解决了这个问题。开启之后它会根据目标端口号从 nmap-service-probes 数据库里选一个对应协议的探测包发过去。比如对 53 端口发 DNS 查询对 123 端口发 NTP 请求对 161 端口发 SNMPv1 GetRequest。有了真实的协议数据服务才会给出回应扫描结果就准确多了。主机发现除了端口扫描Naabu 还具备主机发现能力。通过 wn 参数开启之后它支持 ARP ping、TCP SYN ping、TCP ACK ping、ICMP echo ping、ICMP timestamp ping、ICMP address mask ping 以及 IPv6 邻居发现等多种方式来判断主机是否在线。这个功能在做内网资产梳理的时候比较实用。CDN 和 WAF 的处理扫描互联网资产的时候经常会碰到 CDN 或者 WAF 后面的 IP。对这些 IP 做全端口扫描意义不大还浪费时间。Naabu 内置了 CDN/WAF 识别功能支持 Cloudflare、Akamai、Incapsula 和 Sucuri。开启 exclude-cdn 参数之后遇到这些 CDN 的 IP 就只扫描 80 和 443 两个端口。配置和优化Naabu 支持通过配置文件来设定默认参数配置文件默认放在用户目录下的 .config/naabu/config.yaml。扫描速率可以通过 rate 参数调节每秒发包数量默认是 1000。如果是在本地网络环境下扫描建议把这个值调低一些避免对网络造成过大压力。它还提供了一个 smart scan 模式通过端口关联模型来预测可能开放的端口减少不必要的探测。不过这个模式和 stream 模式不兼容需要根据实际场景选择。部署方式安装 Naabu 有三种方式。最简单的是直接下载预编译的二进制文件项目在 GitHub Releases 页面提供了各平台的版本。也可以用 Docker 镜像来跑。如果习惯从源码编译一条 go install 命令就能搞定。需要注意的是Naabu 依赖 libpcap 库来做数据包捕获Linux 上需要装 libpcap-devMac 上用 brew install libpcapWindows 上需要安装 Npcap。适用场景Naabu 的定位是大规模端口枚举适合在做资产发现、安全测试前期信息收集的时候使用。它的输出可以直接通过管道传给 httpx 做 HTTP 服务探测也可以对接 projectdiscovery 的云平台做资产管理和监控。在安全测试的工作流里它通常扮演的是流水线上的第一个环节负责快速筛选出有效的端口信息后续再交给其他工具做深入分析。作为一个 MIT 协议的开源项目Naabu 的代码质量和社区活跃度都不错。projectdiscovery 团队还维护着 httpx、subfinder、nuclei 等一系列安全测试工具这些工具之间的组合使用能覆盖从子域名发现到漏洞扫描的完整流程。r、nuclei 等一系列安全测试工具这些工具之间的组合使用能覆盖从子域名发现到漏洞扫描的完整流程。