使用 nmap 扫描 B 类网络的快速可靠方法

akg*_*oar 3 nmap

我需要在短时间内 nmap 扫描 B 类网络。要求非常简单。我想要:

  1. 尽可能快地扫描
  2. 在保持可靠性的同时满足第 1 点(10 分中缺少 1/2 是可以接受的)
  3. 实现第 1 点,同时最大限度地减少对其他网络用户的干扰

我将从网络内部进行扫描。这是我到目前为止的决定。
nmap -p 0-65535 172.22.0.0/16(端口范围和 ip 只是示例)
-Pn跳过主机发现一次
--min-hostgroup 256扫描 256 个 ip 地址
--ttl 10我认为这会减少网络噪音。如果我错了,请纠正我
--max-retries 1我发现这可以加快扫描速度而不会牺牲太多可靠性

这是我的问题

  1. 我正在考虑使用该选项,-T4但不确定它会在多大程度上影响可靠性和其他用户的网络速度。我应该如何确定是否使用此选项?
  2. 在不影响要求 2 和 3 的情况下,是否还有其他可靠的方法可以提高扫描速度?

bon*_*ing 8

基本上有 4 件事使扫描需要很长时间:

  1. 发送您不需要发送的探针
  2. 潜伏
  3. 丢包
  4. 目标响应的速率限制

加速扫描通常是通过测量和规划这些方面中的每一个来实现的,直到达到所需的速度,同时保持准确性。

关于 1,您在这里遇到的最大问题是-Pn,它会禁用主机发现。主机发现是 Nmap 知道哪些地址值得端口扫描(“向上”)以及哪些不会以任何方式响应的方式,通常是由于没有配置该地址的主机。在 /16 网络中,您将扫描 65536 个地址。如果您知道网络上只有 5000 个资产,那么92%的扫描将被浪费。使用各种-P*选项-sn来避免实际的端口扫描,直到找到一组在您的网络上运行良好的探针。现在,如果您可以通过其他方式进行发现,例如使用可用于避免跳过您知道已启动的地址,因为它不响应默认的发现探测。-iL从您的内部 IDS 传感器导入活动地址列表,那么-Pn

您可能遗漏的另一个潜在的探针浪费是反向 DNS 名称解析。这是一个很好的信息来源,而且 Nmap 的速度非常快,但是如果您不需要知道每个地址的 DNS 名称(PTR 记录),那么添加-n将完全消除该阶段,为您节省一些宝贵的时间.

对于 2,延迟通常是您无法控制的。但是你可以聪明地让 Nmap 知道你期望的延迟。如果您在 LAN 上,那么设置--max-rtt-timeout可以通过告诉 Nmap 不要等待太长时间来收听任何特定数据包来帮助加快扫描速度。但要注意不要太乐观;如果 Nmap 过早放弃,它会将数据包计数为丢弃,并将减慢速度以避免进一步丢弃。使用来自试-sn运行的延迟信息来了解最坏的情况,然后将其加倍以确保安全。如果您的网络相当快,它仍然会小于默认值。

说到丢弃的数据包(我们列表中的第 3 位),当您尝试扫描过快时,这是不准确的主要来源。如果资源非常有限(例如 ICS 或 IoT 设备),您可以压倒自己的链接或目标本身的功能。如果您的网络速度快且能力足够,不会有太多丢弃的数据包,您可以将其设置--max-retries为比默认值(即 10)更低的数字以稍微加快速度,但存在一些不准确的风险。因为 Nmap 检测到丢弃的数据包并减慢速度,所以除非您使用--min-rate继续将数据包排出,否则您可能最终不会影响其他任何人的流量超过几秒钟。

第 4 点,按目标进行速率限制,这很棘手,因为它不在您的控制之下(除非您可以通过执行速率限制的任何方式将您的扫描机器列入白名单)。但是,有一些技巧:对于特定类型的 TCP RST--defeat-rst-ratelimit速率限制,该选项将允许您保持扫描速度,但代价是将一些标记为“已过滤”的端口实际上可能是“关闭的”。开放端口不会受到影响,这通常是您感兴趣的全部内容。

计时模板(就像-T4您提到的那样)将为您设置其中一些选项,但您始终可以使用更具体的选项来覆盖它们。检查您正在使用的 Nmap 版本的手册页,以准确查看每个模板设置了哪些选项。请注意-T5设置--host-timeout选项,因此如果任何目标需要超过 15 分钟才能完成(使用全端口扫描很可能),它将被丢弃并且不会显示任何输出。

--ttl除非您有路由循环,否则设置较低的 IP TTL 值不会减少网络噪音。如果这对您很重要,它将阻止您的探测器到达 10 跳以外的目标。

最后,请务必使用可用最新 Nmap 版本。我们一直在进行改进,使扫描更快、更可靠。