如何使用Nmap检索TCP和UDP端口?

27

我需要以尽可能快的方式使用Nmap在同一次扫描中检索TCP和UDP端口。我将尝试更好地解释它。如果我使用最常见的命令:

nmap 192.168.1.1

它只检索 TCP 端口,而且非常快。

如果我使用以下命令:

nmap -sU 192.168.1.1

它仅检索UDP端口,速度相当快(嗯,不算非常快,但还是挺快的)。

我的问题是:这两个命令是否可以组合使用?我尝试了:

nmap -sU -sS 192.168.1.1
nmap -sU -sT 192.168.1.1

但它们非常慢。

我正在使用Nmap 5.51,有什么建议吗?


3
这个问题更适合[su]。 - Mike Pennington
你说得很对,当单独执行TCP和UDP扫描时速度很快,但是在同一命令中组合起来时速度会变慢。 - Lonnie Best
使用组合-sTU,例如nmap -sTU 192.168.1.1,您可以使用时间参数使扫描更快-T5。您还可以使用-PE进行较少数量的探测。nmap -sTU -T5 -PE 192.168.1.1。 - nassim
2个回答

17
正如您所见,UDP扫描速度较慢,因为打开/过滤的端口通常不会响应,所以nmap必须超时然后重新传输,而关闭的端口将发送ICMP端口不可达错误,系统通常会对其进行速率限制。
您可以添加-T开关来增加扫描速度,但这可能会降低准确性并使其更容易被检测到。
-T<0-5>:设置时间模板(越高越快)
-PN将关闭ping扫描元素
您还可以并行扫描更多主机,
或使用-p开关或--top-ports减少要扫描的端口数量,它将扫描nmap-services文件中找到的最高比例端口。
如果您正在扫描多个主机,可以使用--host-timeout跳过慢主机。
关于TCP,-sS应该比-sT更快。
希望对您有所帮助!

1
是的,实际上我正在扫描整个网络,192.168.1.1只是一个例子。无论如何,你的解决方案仍然必须结合-sS和-sU :( 我的意思是很奇怪,因为这两个命令分别非常快。 - raz3r
对啊,你必须将它们结合起来才能获得两种协议。通常我会运行像这样的命令 - “sudo nmap -sSU -P0 -vv -top-ports 500 192.168.1.1” - 并根据需要调整端口,也可以使用 - T4 修改并行设置。 - Mark Hillick
$ sudo time nmap -sSU -Pn 10.92.5.5 启动 Nmap 5.61TEST5…. Nmap 完成:已扫描 1 个 IP 地址(1 台主机在线)用时 404.18 秒
实际用时 404.19 秒 用户时间 0.21 秒 系统时间 0.56 秒 $ sudo time nmap -sU -Pn 10.92.5.5 启动 Nmap 5.61TEST5 Nmap 完成:已扫描 1 个 IP 地址(1 台主机在线)用时 202.19 秒
实际用时 202.20 秒 用户时间 0.17 秒 系统时间 0.27 秒 $ sudo time nmap -sS -Pn 10.92.5.5 10.92.5.5 上的 1000 个端口均被过滤。 Nmap 完成:已扫描 1 个 IP 地址(1 台主机在线)用时 202.29 秒
实际用时 202.29 秒 用户时间 0.17 秒 系统时间 0.28 秒
- Mark Hillick
1
友情提醒,现代nmap版本中的-PN已更改为-Pn;-) - Terry Wang

8
你没有说明扫描速度有多慢,但我认为你可以尝试使用--min-parallelism选项来调整最小的未完成探测数,这将对你有所帮助。
像这样,我看到了与裸露的-sT-sU扫描相比,扫描时间减少了70%。请注意,设置--min-parallelism过高可能会导致主机(或网络)无法同时缓冲这么多查询。
[mpenning@Hotcoffee]$ sudo nmap --min-parallelism 100 -sT -sU localhost

Starting Nmap 5.00 ( http://nmap.org ) at 2012-05-10 01:07 CDT
Interesting ports on localhost (127.0.0.1):
Not shown: 1978 closed ports
PORT     STATE         SERVICE
22/tcp   open          ssh
25/tcp   open          smtp
49/tcp   open          tacacs
53/tcp   open          domain
80/tcp   open          http
111/tcp  open          rpcbind
631/tcp  open          ipp
2003/tcp open          finger
2004/tcp open          mailbox
3389/tcp open          ms-term-serv
5901/tcp open          vnc-1
5910/tcp open          unknown
6001/tcp open          X11:1
7002/tcp open          afs3-prserver
53/udp   open|filtered domain
69/udp   open|filtered tftp
111/udp  open|filtered rpcbind
123/udp  open|filtered ntp
161/udp  open|filtered snmp
631/udp  open|filtered ipp
1812/udp open|filtered radius
1813/udp open|filtered radacct

Nmap done: 1 IP address (1 host up) scanned in 1.54 seconds
[mpenning@Hotcoffee]$

1
我注意到这个参数的可靠性很差(我像你一样使用了100)。例如,我的其中一个主机开放|过滤了SNMP端口,但Nmap认为它已关闭。然而,如果我运行nmap -sU -p U:161 192.168.1.1,它会正确地返回开放|过滤。 - raz3r
1
这就是为什么我说:“请注意,可能会将--min-parallelism设置得太高,以至于主机(或网络)无法同时缓冲这么多查询。” 将--min-parallelism降低直到您的可靠性问题消失,但仍然可以获得可接受的速度。 - Mike Pennington
那个参数有默认值吗?我的意思是,默认情况下,Nmap在单个主机上执行多少个并行扫描? - raz3r
3
根据NMAP性能手册:默认情况下,Nmap会根据网络性能计算出一个不断变化的理想并行度。如果数据包被丢弃,Nmap将减缓速度并允许更少的未完成的探测。随着网络逐渐证明自己的可靠性,理想探测数量会慢慢上升。这些选项对该变量设置最小或最大边界值。默认情况下,如果网络不可靠,则理想并行度可能降至1,而在完美条件下可能上升到数百个。 - Mike Pennington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接