介绍
信息收集始于清晰的目标与范围。端口号、端口状态、应用指纹和漏洞结论描述不同事物,不应混为一谈。
你将使用预置的本地 DNS 和 HTTP 服务,练习小型 Nmap 工作流程。解析目标,仅扫描指定端口,识别服务,并保留输出以供分析。
解析目标并扫描指定端口
本步骤中,你将解析明确提供的训练目标,并对一小组端口执行 TCP connect 扫描。
进入 Kali 并选择共享工作区:
kali
cd /home/labex/project
授权目标为 training-target.test,由本地训练 DNS 服务器提供解析。使用前一个实验中的 DNS 流程解析其 A 记录:
dig @127.0.0.1 -p 5353 +short training-target.test A
应答为 127.0.0.1,即容器的回环地址。范围仅包括该地址上的端口 8000、8081 和 9999。不要扫描宿主机、网关或任何公共系统。
Nmap 用于发现主机与服务信息。-sT 选项使用常规 TCP 连接尝试,因此普通学习者用户即可执行该扫描。-p 限制请求的端口集合,逗号用于分隔端口号。-oN 将普通的可读输出保存到后面的文件名:
nmap -sT -p 8000,8081,9999 -oN ports.txt 127.0.0.1
等待扫描完成。结果应报告端口 8000 和 8081 为 open,端口 9999 为 closed。开放表示服务接受 TCP 连接;关闭表示目标作出了响应,但该端口没有服务接受连接。filtered 则表示探测或响应受到阻碍,Nmap 无法确定状态。
读取保存的报告:
cat ports.txt
报告应标识目标,并包含所请求端口的记录行。未启用版本检测时,SERVICE 标签可能来自 Nmap 的常见端口名称表。应将其视作线索,而非实际监听应用的证明。
识别服务并提取开放端口记录
本步骤中,你将使用服务版本探测,并保存简洁的发现集合。
-sV 选项要求 Nmap 探测开放服务以获取应用信息。它是服务/版本检测,不是 Nmap 脚本引擎(NSE),本身也不能确认漏洞。将探测限制为两个开放的训练端口:
nmap -sT -sV -p 8000,8081 -oN services.txt 127.0.0.1
提供的服务是 Python HTTP 服务器。结果应识别出 HTTP,也可能包含 Python 或服务器版本详情。具体工具与解释器版本可能随环境维护变化。
读取保存的版本报告:
cat services.txt
将其中的服务证据与 ports.txt 中的常见名称比较。非默认端口也能运行 HTTP;端口号并不等同于应用身份。
使用已学过的文本过滤流程提取开放端口行。open 两侧的空格将匹配集中在状态列:
grep ' open ' services.txt > open-services.txt
cat open-services.txt
你应该看到两个开放端口各有一行。这些行记录观察到的暴露面与服务信息,并不能证明任一服务可被利用。将完整报告与简洁发现一并保留,便于重新查看原始上下文。
总结
你解析了授权目标,执行了范围明确的 TCP connect 扫描,解释了开放与关闭状态,并使用服务版本探测。你保留了完整报告,提取了简洁的开放服务行,并区分了信息发现与漏洞确认。

