×

在靶场做nmap扫描的时候使用nmap扫描靶机,由于TCP扫描和UDP扫描耗时的巨大差异感到不解,于是进行一次证明。

首先,对于TCP和UDP协议来说,TCP是面向与连接的采用了握手挥手的连接,而UDP面向无连接。凭感觉而言应该是UDP这类来去匆匆的对于扫描更加快速。为什么时间差异如此大?

前面的靶场建立和确定靶机就不说了。根据老师建议我先去wireshark抓包查看抓包过程。

首先是TCP扫描抓包:

首先我们查看最开始的报文

可以看到首先进行了一次广播找到靶机,然后就是井喷式的TCP数据包。

可以看到其中是kali的各个随机端口(?这里应该是一个fake random??看起来端口还有重复调用的)但是可以看到是kali发SYN包而靶机回复RST,ACK包。于是去看了下nmap的文档,提及到TCP Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。采取了Berkeley Sockets API编程接口的一部分。Berkeley连接过程如下:

TCP扫描采取了其中connect(),同时kali只是单纯发出而不是真正建立连接而是看到端口非TCP或未开启时就会获取其不可达或者不存在状态,同时如果对方是TCP端口,获取到了connect()的回应后会获得一个ACK包于是知晓其信息,但也不会进行下一步。

如图,扫描到了23端口,但是也没有之后的回复,也就是说虽然TCP的建立和脱离很繁杂,但是在nmap扫描中,并没有完全做出该行为。于是扫描速度确实是更加快的。

再来看UDP扫描:

首先在nmap官方文档中就有提及该UDP扫描速度慢:

UDP扫描的巨大挑战是怎样使它更快速。 开放的和被过滤的端口很少响应,让Nmap超时然后再探测,以防探测帧或者 响应丢失。关闭的端口常常是更大的问题。 它们一般发回一个ICMP端口无法到达错误。但是不像关闭的TCP端口响应SYN或者Connect 扫描所发送的RST报文,许多主机在默认情况下限制ICMP端口不可到达消息。

我们按照官方文档的思路,先理清UDP扫描过程。首先UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。

得到思路之后我们就对UDP发包和ICMP回应进行处理,看谁是导致扫描速度慢的主要原因。首先,如何提升UDP发包速度?

1.尝试使用最小速率命令行选项:

当给出–最小速率选项时,Nmap将尽力以给定速率的速度或更快的速度发送数据包。该参数是一个正数,表示以每秒数据包为单位的分组速率。例如,指定–min速率300意味着Nmap将尝试将发送速率保持在或超过每秒300个数据包。

Belike:nmap -sU --min-rate 5000 <targets>

2.最容易想到的就是并发,对于这种多端口采取并发是提升速度最简单的方式。

其次如何提升ICMP回应速度?

我们在靶机ubuntu中进入目录/proc/sys/net/ipv4中看到关于icmp的配置文件:

找到icmp_ratelimit文件,至于为什么不找其他icmp文件,请自行搜索它们各自的作用<3

icmp_ratelimit的作用为:ICMP(Internet Control Message Protocol,互联网控制消息协议)速率限制是一种由网络设备(如路由器和防火墙)使用的机制,用于控制 ICMP 消息的发送或处理速率。这种机制的目的是防止过多的 ICMP 流量占用网络资源,从而导致性能下降甚至引发拒绝服务(DoS)问题。

其中的参数为icmp_ratelimit:

– 该参数定义了 ICMP 消息之间的最小时间间隔(以毫秒为单位)。
– 默认值通常为 **1 秒(1000 毫秒)**,这意味着每秒最多允许发送一定数量的 ICMP 消息。
– 可通过以下命令查看或修改:

修改其中的参数 注意:使用vim是不允许修改的,建议使用sysctl -w net.ipv4.icmp_ratelimit=?

来修改icmp的回应速度。下面是我修改参数之后的结果:

可以看到当我将其改为60左右后就接近扫描的最快速度了,同时参数100也证明改变ratelimit是有作用的。于是证明了其对于scan speed的作用。

留下的疑问与猜想:

1.虽然是提升了速度,但是对于TCP扫描还是有差距。可能是因为ICMP回应的问题??这么多端口一个个回应imcp包堆起来也是一个大数字(可能)。

2.在观察TCP和UDP扫描过程中都会出现一个广播确认身份,而且在UDP扫描过程中还会出现靶机对kali的广播,为什么会出现这个原因?同时广播报文也是对时间的一个影响因素。

3.在没有采取任何提速过程前,我自己的笔记本在UDP扫描时速度对于学校机房扫描1000s的结果也是要快一些的,于是可以猜想机器性能也会提升扫描速度。

4.为什么将ratelimit降低到60后就无法提升速度了?性能瓶颈还是底层保护措施?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

作者

xiangchao100321@outlook.com

A normal student

网站证书提取项目

基于python的一个https网站证书特征...

读出全部

关于openwrt拨号的一些疑问

在重新设置路由器的openwrt时 习惯性的...

读出全部