使用wireshark分析nmap扫描方式


前言

主机ip:192.168.10.40

扫描主机ip:192.168.10.54

使用全连接模式扫描(-sT)

原理:通过调用TCP connect()来向目标端口发送连接请求通过发送SYN数据包请求建立连接,若靶机开启端口则会建立完整的TCP连接

而未开启的端口会返回RST/ACK报文,不会建立完整的TCP连接。

这里简单提一下TCP三次握手建立连接:

  • 客户端向请求端发送SYN数据包(仅SYN 标志为1的TCP包)请求连接,只有当服务端收到客户端发来的SYN包,才可建立连接。
  • 服务端收到后会发送一个SYN的确认包(SYN/ACK包,即仅SYN 和 ACK 标记为1的包.)回去,表示对第一个SYN包的确认,并继续握手操作。
  • 客服端收到SYN/ACK包后,向服务端发送确认包ACK,通知服务端已建立起连接,至此,三次握手完成,一个TCP连接完成

当TCP连接释放的时候需要经过四次挥手但并不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST(Reset)包将被发送. 注意在,由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记).但在正常的TCP连接中RST包可以带ACK确认标记 。

如下图若端口是打开的,返回了SYN,ACK则表明端口开放,然后扫描主机箱目标机发送ACK/RST包断开连接。

如果端口是关闭的,则会直接返回RST/ACK报文断开连接,说明端口是关闭的。

该种方法进行扫描会留下扫描纪录,而且速度较慢。

使用半连接模式进行扫描(-sS)

使用该模式下当收到目标发来的SYN/ACK包就认为其开发,并不进行连接。而未开启的端口会返回RST/ACK报文,不会出现TCP连接

如果没有收到回复,那么判断为该端口被屏蔽(Filtered),这种扫描方式因为不会建立完整的TCP连接,比较隐蔽,扫描速度也比较快,是Namp默认的扫描方式。

端口关闭情况下的扫描抓包:

端口开发情况下的扫描抓包:

nmap扫描结果如下:

使用TCP Null模式 (-sN)

NULL扫描当主机向靶机一个端口发送的TCP数据包所有标志位都为空,如果目标主机该端口是关的,则返回一个RST数据包,若没有收到说明端口是开放的或者被屏蔽,如果端口是开放的则不会返回信息,但似乎该种方法并不可靠?3389明明是开发的却没有如预期一样被识别出来。

使用FIN模式进行扫描(-sF)

FIN段负责表示发送端已经没有数据要传输了,希望释放连接,发送一个FIN=1的报文到一个关闭的端口时该报文会被丢掉,并返回一个RST报文.

但是当FIN报文到一个活动的端口时,该报文只是被简单的丢掉不回应任何信息.

使用UPD扫描模式(-sU).

UDP端口扫描主要是检测目标的端口是否存在ICMP端口不可达数据包,如果收到回复“ICMP port unreachable”说明对方这一端口是关闭的,否则就说明该端口已经开启或者被屏蔽了。

nmap只提供一种UDP的扫描方式(-sU).UDP扫描的最大问题是性能问题。由干Linux内核限制1秒内最多发送一次ICMP Port Unreachable信息。按照这个速度,对一台主机的65536个UDP端口进行完整扫描,总耗时必 定会超过18个小时。

所以一般会指定端口进行扫描。


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
数据采集工具-Gather 数据采集工具-Gather
前言Gather是一个数据采集工具,使用python3编写,使用的时候请确保运行环境为python3.6以上。Gather支持Fofa,钟馗之眼(Zoomeye),Shodan的数据采集。 使用说明Gather极力避免各种繁杂的参数,使用-
2021-04-14 EASY
下一篇 
2020年年度总结 2020年年度总结
前言今天是2020年最后一天,不禁感叹时光之飞逝,自已的大学生涯也过完了大半。我每周都有写反思总结的习惯,我很享受这个过程,感觉键盘敲下的时候就如同和自已的心灵在对话。得益这个习惯我可以在年末回顾这一整年来自已的心路历程,能够再次读取以往某
2020-12-31 EASY
  目录