工具使用要点60 条

nmap 输出管理与对比

用 -oA 同时产出三种格式:XML 供解析、grepable 供检索;两次扫描结果对比可观察端口与服务的资产变化。

nmap 输出管理与对比

nmap 用 -oA 一次生成三个文件:人读格式便于快速浏览,单行格式便于检索,XML 格式便于程序解析。评估中原始输出本身就是证据的一部分:只在终端里看滚动结果,事后既无法复核当时的判断,也无法向客户提交可追溯的材料,而重扫得到的又是新的资产状态。规范做法是每轮扫描都带 -oA,文件名包含目标与时间戳避免覆盖,再用文本或结构化对比观察开放端口与服务版本的变化。

基本信息

-oA 参数同时生成人读、单行与 XML 三种输出文件
XML 用途报表生成与自动化解析,可提取主机、端口与服务字段
对比方式对两轮结果的开放端口行做差异比较
命名要求文件名含目标与时间戳,避免同名覆盖历史扫描

典型使用场景

  • 首轮资产摸底:结果入台账,作为后续变化对照基线
  • 复测对比:用同一目标不同时间的两轮结果确认整改是否生效
  • 多目标批量扫描:按目标逐个输出,便于按主机归档
  • 证据归档:XML 随案例目录一并存放,支撑报告引用
  • 服务版本跟踪:对比服务与版本变化,发现新增或回退配置
  • 可比性控制:两轮对比使用相同扫描参数,否则差异可能来自参数变化而非资产变化

输出与对比示例

输出与对比示例
nmap -sV -oA /cases/2026-001/nmap/10.0.10.5-20261012 10.0.10.5
# 生成 .nmap 人读、.gnmap 单行、.xml 三种文件
sed -n '/PORT/,/^$/p' 10.0.10.5-20261012.nmap    # 只看端口段落
from=before.nmap; to=after.nmap
# 用端口行做差异对比,标注新增与关闭的端口
diff <(grep '^[0-9]*/tcp' $from) <(grep '^[0-9]*/tcp' $to) || true

三种输出格式对比

文件格式特点主要用途
人读格式结构化文本,端口与服务分块展示人工阅读与报告引用
单行格式每主机一行,便于字段检索批量筛选与统计
XML 格式完整结构化数据自动解析并生成资产表
XML 便于生成资产台账:解析主机、端口与服务的字段即可入库,避免人工誊抄造成的错漏。
输出目录按案例与日期分层存放:扫描文件、日志与证据一并归位,交付时可以整包移交。

易错点

  • 只保留终端滚动结果:原始输出缺失,报告中的结论无法复核
  • 同名输出覆盖历史扫描:基线丢失,无法再做前后对比
  • 文件名不带时间戳:多轮扫描混在一起,难以区分资产状态时点
  • 只提交 XML 不做人工阅读:解析脚本可能漏掉异常项,需人工对照
  • 对比时只看端口数量:服务与版本变化同样是重要线索,要一并核对

数据来源与参考

  • Nmap 官方文档(输出格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌