如何在扫描 UDP 端口时更快地获得 nmap?这种扫描比 TCP 端口慢得多(至少 2-3 倍)
提高 nmap UDP 扫描的速度?
由于协议工作方式的不同,UDP 扫描可能比 TCP 慢(即使用 TCP,由于三次握手,更容易确定端口是打开的)。
也就是说,可以通过多种方式提高 UDP 扫描的速度。这里要注意的一件事是,如果您应用太多计时选项,您可能会降低扫描的准确性(即 nmap 会遗漏一些东西)。根据您的目标,这可能是也可能不是问题。
获取有关这些信息的最佳位置之一是 nmap 书的时序和性能部分
从那开始,我倾向于使用的那些
--max-rtt-timeout
这控制了 nmap 等待响应的时间,并且是扫描速度的关键。您可以在这里做的是使用 ping 或类似的方法测量请求的典型往返时间,并将其用作此基础。
--max-retries
正如另一个答案中提到的,这很有用。我不会设置 0 或者你可能会错过一些东西,但如果你真的很想看到加速,设置 1 或 2 会有所帮助
--max-scan-delay
如果对主机响应缓慢的东西进行 nmap 映射,它将开始添加它,并且它确实会减慢扫描速度。将此设置为 10 毫秒左右,它会加快速度,但如果你的主机不稳定/速度慢,它可能会错过一些东西
--min-hostgroup
如果您不太关心在进行时获得结果,并且您有很多主机要做,那么提高这一点会有所改善。32 或 64 之类的值会加快整体扫描速度。
要记住的另一个关键点是,对于 UDP,只有使用版本扫描才能获得好的结果。这是因为很多 UDP 服务只有在接收到的数据包格式正确时才会响应。但是版本扫描会减慢速度,所以如果你赶时间
--version-intensity 0
使用版本扫描时。
尝试使用 min-rate 命令行选项:
当给定 --min-rate 选项时,Nmap 将尽最大努力以与给定速率相同或更快的速度发送数据包。该参数是一个正实数,表示每秒数据包的数据包速率。例如,指定 --min-rate 300 意味着 Nmap 将尝试将发送速率保持在或高于每秒 300 个数据包。
例子: nmap -sU --min-rate 5000 <targets>
UDP 扫描比 TCP 扫描慢的一个根本原因是:UDP 是无连接的。这意味着 Nmap 无法区分开放端口与默默吃扫描数据包的程序、被防火墙阻止而默默丢弃数据包的端口,或由于网络拥塞而在传输过程中丢失数据包之间的区别。在封闭端口的情况下,Nmap 无法区分受防火墙保护的端口、丢失的数据包或 ICMP 不可达消息的速率限制。因此,除非端口返回数据或 ICMP Unreachable 消息,否则 Nmap 需要发送多个数据包以消除速率限制或丢失数据包的可能性。
除了@Tate Hansen 建议考虑使用--max-retries 0
. 您还需要考虑目标。[某些] 例如,Linux 限制了 ICMP 端口不可达响应,因此无论您对扫描仪做什么,目标仍然是速度因素。-F
如果根据扫描结果认为有必要,您还可以重新扫描整个端口范围-F
。
希望这会有所帮助。