Naabu 端口扫描工具指南
工具概述
Naabu 是一款基于 Go 语言开发的高性能端口扫描工具,专注于快速且精准地枚举主机上的开放端口。作为 ProjectDiscovery 工具生态系统的一部分,它在渗透测试和网络安全评估中表现出色。
基本使用方法
naabu [选项参数]
参数解析
目标输入配置
- -target string[]: 指定扫描目标,支持单个或多个主机(用逗号分隔)。例如:
-target 192.168.1.1,192.168.1.2。 - -targets-file string: 从文件加载目标列表,每行一个主机地址。例如:
-targets-file hosts.txt。 - -ignore-hosts string: 排除特定主机扫描。例如:
-ignore-hosts 192.168.1.100。 - -ignore-file string: 通过文件指定排除的目标列表。例如:
-ignore-file excluded_hosts.txt。
端口设置选项
- -ports string: 定义要扫描的端口,可以是单个、列表或范围格式。例如:
-ports 80或-ports 1-1000。 - -common-ports string: 扫描最常用的端口集合,可选值为
full、100或1000。默认扫描前100个常用端口。 - -exclude-ports string[]: 排除某些端口的扫描。例如:
-exclude-ports 22,3389。 - -ports-list-file string[]: 从文件读取端口列表进行扫描。例如:
-ports-list-file ports_list.txt。 - -port-limit int: 设置端口数量阈值,超过该数值的主机将被跳过。
- -skip-cdn: 忽略 CDN/WAF 的全端口扫描,仅检查标准 HTTP/HTTPS 端口。
- -show-cdn-info: 输出与目标相关的 CDN 信息。
速率管理
- -workers int: 并发线程数,默认值为25。例如:
-workers 100。 - -packet-rate int: 控制每秒发送的数据包数量,默认值为1000。例如:
-packet-rate 5000。
更新相关
- -update-now: 自动升级到最新版本。
- -disable-update-check: 禁止自动检查更新。
结果导出
- -save-output string: 将扫描结果保存至指定文件。例如:
-save-output output.txt。 - -list-output-options: 查看所有可用的输出字段。
- -filter-output-fields string[]: 根据条件过滤输出字段。
- -json-format: 使用 JSON 格式化输出。
- -csv-format: 使用 CSV 格式化输出。
高级功能
- -config-path string: 指定配置文件路径,默认位于用户主目录下的
.config/naabu/config.yaml。 - -scan-all-ips: 对 DNS 解析得到的所有 IP 地址进行全面扫描。
- -ip-version string[]: 限定扫描的 IP 版本(4或6)。例如:
-ip-version 4。 - -scan-mode string: 设置扫描模式为 SYN 或 CONNECT,默认为后者。
- -source-address string: 指定源 IP 和端口,格式为
x.x.x.x:yyy。 - -payload-data string: 在 CONNECT 扫描时附加负载数据。
- -network-interfaces: 列出系统中的网络接口及公网 IP。
- -use-interface string: 强制使用某个网络接口进行扫描。例如:
-use-interface eth0。 - -run-nmap string: 调用 nmap 命令执行进一步扫描(已废弃)。
- -nmap-command string: 直接运行自定义的 nmap 命令。例如:
-nmap-command 'nmap -sV'。 - -custom-dns string: 指定自定义 DNS 解析器,支持单个或多个地址。例如:
-custom-dns 8.8.8.8,1.1.1.1。 - -proxy-server string: 配置 SOCKS5 代理服务器。例如:
-proxy-server socks5://127.0.0.1:9050。 - -proxy-authentication string: 提供代理认证凭据,格式为
username:password。 - -resume-scan: 继续上次未完成的扫描任务。
- -stream-mode: 启用流模式以禁用恢复、nmap 和验证等功能。
- -passive-scan: 利用 Shodan InternetDB API 获取被动端口信息。
主机探测
- -detect-hosts: 仅执行主机发现而不扫描端口。
- -skip-detection: 跳过主机发现过程直接开始扫描。
- -enable-detection: 显式启用主机发现功能。
- -tcp-syn-probe string[]: 发送 TCP SYN 数据包进行探测。
- -tcp-ack-probe string[]: 使用 TCP ACK 数据包检测存活主机。
- -icmp-request-probe: 发送 ICMP echo 请求。
- -icmp-timestamp-probe: 发送 ICMP 时间戳请求。
- -icmp-mask-probe: 发送 ICMP 地址掩码请求。
- -arp-ping-probe: 使用 ARP 数据包探测局域网内的主机。
- -ipv6-discovery: 启用 IPv6 邻居发现机制。
- -reverse-ptr: 执行反向 PTR 查询。
服务识别
- -find-services: 自动识别开放端口对应的服务类型。
- -identify-service-version: 获取服务的具体版本信息。
优化调整
- -retry-count int: 设置失败后的重试次数,默认为3次。
- -timeout-duration value: 定义超时时间,默认为1秒。例如:
-timeout-duration 2s。 - -warmup-period int: 在不同扫描阶段之间增加预热时间,默认为2秒。
- -ping-test: 在正式扫描前先对目标进行 Ping 测试。
- -validate-ports: 验证端口状态以减少误报。
调试辅助
- -diagnostic-check: 运行诊断程序检查环境配置。
- -debugging: 显示详细的调试信息。
- -verbose-mode: 开启详细输出模式。
- -disable-color: 关闭终端颜色显示。
- -quiet-mode: 仅输出最终结果。
- -version-info: 查看当前 Naabu 的版本号。
云端集成
- -cloud-auth: 配置访问 ProjectDiscovery Cloud API 的密钥。
- -auth-config string: 指定 API 密钥配置文件路径。
- -upload-to-dashboard: 将扫描结果上传至 PDCP UI 仪表板。
- -team-id string: 指定上传的目标团队 ID。
- -asset-id string: 将数据关联到现有的资产 ID。
- -asset-name string: 定义资产组名称。
- -upload-output string: 直接上传输出文件到 PDCP。
实际操作示例
基础扫描
# 单独扫描一个主机
naabu -target 192.168.1.1
# 同时扫描多个主机
naabu -target 192.168.1.1,192.168.1.2
# 从文件导入目标列表
naabu -targets-file targets_list.txt
端口范围扫描
# 指定具体端口
naabu -target 192.168.1.1 -ports 80,443,8080
# 扫描连续端口区间
naabu -target 192.168.1.1 -ports 1-1000
# 扫描前1000个常用端口
naabu -target 192.168.1.1 -common-ports 1000
# 全面扫描所有端口
naabu -target 192.168.1.1 -common-ports full
高级配置
# 使用 SYN 扫描模式(需管理员权限)
sudo naabu -target 192.168.1.1 -scan-mode syn
# 提升并发度和发送速率
naabu -target 192.168.1.1 -workers 100 -packet-rate 5000
# 配置代理服务器
naabu -target 192.168.1.1 -proxy-server socks5://127.0.0.1:9050
# 替换默认 DNS 解析器
naabu -target example.com -custom-dns 8.8.8.8,1.1.1.1
输出控制
# 将结果存储到文件
naabu -target 192.168.1.1 -save-output results.txt
# 输出 JSON 格式的扫描报告
naabu -target 192.168.1.1 -json-format -save-output results.json
# 生成 CSV 文件
naabu -target 192.168.1.1 -csv-format -save-output results.csv
# 静默模式下只打印关键信息
naabu -target 192.168.1.1 -quiet-mode
主机探测
# 专门执行主机发现
naabu -targets-file targets_list.txt -detect-hosts
# 结合多种探测方式
naabu -targets-file targets_list.txt -enable-detection \
-icmp-request-probe \
-tcp-syn-probe 80,443 \
-arp-ping-probe
服务识别
# 查找开放的服务
naabu -target 192.168.1.1 -find-services
# 获取服务版本详情
naabu -target 192.168.1.1 -identify-service-version
# 结合 nmap 进行深入分析
naabu -target 192.168.1.1 -nmap-command 'nmap -sV -sC -A'
优化扫描
# 跳过 CDN 主机的全面扫描
naabu -targets-file targets_list.txt -skip-cdn
# 展示 CDN 的相关信息
naabu -targets-file targets_list.txt -show-cdn-info
# 调整重试次数和超时时间
naabu -targets-file targets_list.txt -retry-count 5 -timeout-duration 2s
# 开启端口状态验证
naabu -targets-file targets_list.txt -validate-ports
实用技巧
# 管道输入处理
cat targets_list.txt | naabu -quiet-mode
# 与其他工具联动
subfinder -d example.com -quiet-mode | naabu -quiet-mode -save-output ports.txt
# 批量扫描并汇总结果
for ip in $(seq 1 254); do
naabu -target 192.168.1.$ip -common-ports 100 -quiet-mode
done > all_ports.txt
典型应用场景
渗透测试中的信息收集
# 快速定位目标的开放端口
naabu -targets-file targets_list.txt -common-ports 1000 -packet-rate 2000 -workers 50 -quiet-mode > open_ports.txt
企业资产盘点
# 探测内网中的活动服务
naabu -targets-file corporate_ips.txt -ports 1-65535 -packet-rate 1000 -skip-cdn -validate-ports -json-format > assets.json
漏洞扫描预备工作
# 筛选出 Web 类型的服务
naabu -targets-file targets_list.txt -ports 80,443,8080,8443 -quiet-mode > web_targets.txt
持续监控与审计
# 定期记录网络变化情况
naabu -targets-file monitored_hosts.txt -common-ports 100 -save-output "scan_$(date +%Y%m%d).txt"
注意事项
- 权限需求: 如果选择 SYN 扫描,则需要具备 root 或管理员权限。
- 合法合规: 仅针对已授权的目标执行扫描。
- 性能影响: 高并发扫描可能对网络性能产生一定压力。
- 准确性保障: 使用
-validate-ports参数降低误报率。 - CDN 处理: 通过
-skip-cdn避免不必要的扫描。
故障排查
常见问题
# 1. SYN 扫描失败
# 错误:缺乏必要权限
# 解决方案:添加 sudo 或切换至 CONNECT 模式
# 2. 扫描速度较慢
# 解决方案:提高-workers和-packet-rate参数值
# 3. 结果不够精确
# 解决方案:启用-validate-ports验证端口状态
# 4. 内存占用过高
# 解决方案:采用-stream-mode处理大规模文件
调试命令
# 执行健康检查
naabu -diagnostic-check
# 开启详细日志输出
naabu -target 192.168.1.1 -verbose-mode
# 查看内部调试信息
naabu -target 192.168.1.1 -debugging
# 查阅可用网络接口
naabu -network-interfaces