(Ubuntu 14.04.4 LTS)
traceroute
有-m, --max-hop=NUM
,也有tracepath
。
使用时如何限制最大跳数:
nmap -Pn -sn --traceroute
?
答案1
Nmap 使用不同的算法对于跟踪比traceroute(1)
,因此跳数限制的想法没有意义。
传统的跟踪路由使用发送至高编号端口的 UDP 数据包,并以 TTL 1 开始,以发现到目标的路径上的下一跳。然后它增加到 2 以发现第二跳,依此类推。如果在通往目标的路径上的某个点有一个跃点拒绝传递 UDP 流量(例如防火墙),则 Traceroute 将开始显示“未知”行,如下所示:
10 * * * 11 * * * 12 ** * * 13 * * *
并且它会继续显示这些,直到达到最大数量(IP TTL字段限制为255,大多数traceroute实现会为了实用性设置一个下限,比如30)。
Nmap Traceroute 的工作方式有点不同。它有几个关键优势:
- 它要求您具有嗅探网络流量并在原始套接字上发送的权限,并且
- 它知道主机发现和端口扫描执行阶段的结果是什么探针将到达目标。
有了这些信息,Nmap 就会猜测到目标的距离。如果您执行操作系统检测并获得对 UDP 探测的 ICMP 响应,则它可以计算准确的距离。否则,它从 10 开始,或者从最后一个目标所在的距离开始。然后它开始发送探测,每次减少初始 TTL,直到考虑到所有更近的跃点(有时这意味着一旦再次找到已找到的跃点就停止,以免重复结果。)如果目标本身没有响应任何这些探测器,Nmap 接下来都会从 TTL 10 开始并计数向上,复制传统的traceroute算法。这里的关键区别在于,发送的探测可以保证得到目标的响应,因为它们是为此目的而选择的。因此,我们永远不会超越目标或选择中间跳跃会丢弃的探测器。
该算法在traceroute.cc
文件的初始注释块在 Nmap 源中。
答案2
我相信没有任何东西可以限制跃点,在检查了 nmap 的手册页后,似乎只有往返时间可以限制它扫描的端口范围。
编辑:您可以使用 -F 获得/潜在/最小的路由,该路由使用的跳数少于默认值。尝试禁用跟踪路由、使用 -sL 或 -pN 进行列表扫描并禁用 ping。