取证流量包分析——Nmap 流量包分析
取证流量包分析——Nmap 流量包分析
通过tcp contains "nmap"
可以发现流量中发现很多Nmap关键字,确定是Nmap流量分析题。
常用的Nmap扫描端口的命令示例:
TCP SYN 扫描(也称为半开放扫描):这是Nmap默认的扫描方式,发送TCP SYN包来探测端口是否开放。
1
nmap -sS target_ip
TCP Connect 扫描:这种扫描方式通过建立完整的TCP连接来检测端口是否开放,速度较慢但更可靠。
1
nmap -sT target_ip
UDP 扫描:用于扫描UDP端口,因为UDP协议不像TCP那样有建立连接的握手过程,所以扫描更具挑战性。
1
nmap -sU target_ip
ICMP扫描:用执行“Ping扫描”
1
nmap -sn target_ip_range
NULL扫描:利用 TCP 包的空标志位来扫描
1
nmap -sN target_ip
FIN扫描:发送一个没有设置 SYN、ACK、RST 标志位,只有 FIN(结束)标志位的 TCP 包进行扫描
1
nmap -sF target_ip
Xmas 扫描:发送设置了 SYN、FIN 和 URG 标志位的 TCP 数据包进行扫描
1
nmap -sX target_ip
指定端口范围:你可以使用
-p
参数指定要扫描的端口范围。1
nmap -p 1-100 target_ip
服务版本检测:通过
-sV
参数可以尝试探测目标主机上运行的服务及其版本信息。1
nmap -sV target_ip
操作系统检测:通过
-O
参数可以尝试猜测目标主机的操作系统类型。1
nmap -O target_ip
TCP 扫描(-sT)
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP 扫描的原理是和目标端口执行三次握手,通过收到的响应来确定服务是否打开
如果 nmap 发送了 SYN 请求,目标服务器使用 SYN/ACK 进行响应,那么就判定端口打开
如果 nmap 发送了 SYN 请求但是目标服务器使用 RST(reset)进行响应,那么就判定端口关闭
如果 nmap 发送了 SYN 请求但是目标服务器没有响应,那么就判定端口有防火墙保护
SYN 扫描(-sS)
又称半连接扫描
TCP 是完整的三次握手,SYN 扫描是从目标服务器收到 SYN/ACK 后发回 RST 包,防止服务器重复尝试发出请求
通过命令可以查询SYN成功连接的返回包
1 | tcp.flags.syn == 1 && tcp.flags.ack == 1 |
追踪TCP流查看详情
如果端口关闭,目标服务器会使用 RST 响应
通过命令查看reset包
追踪TCP流查看详情
如果端口被防火墙过滤了,SYN 包会被丢弃
UDP 扫描(-sU)
UDP通信需要两端事先约定好通信的方式。这种约定可以是对称的,也可以是不对称的。
最基本的情况是,服务器端根据数据包的源IP和端口信息原路将数据包发送回去。这要求客户端不仅在指定的端口上发送数据,还需要同时监听来自服务器端的响应。
然而,在实际应用中,客户端可以选择另外监听一个端口,当服务器端回复数据包时,将数据包发送到客户端指定的另一个端口上。这些约定完全取决于通信双方的规定。
UDP是无连接的,不需要通过握手来建立连接。因此,它通常速度更快,但也更不可靠。
在使用nmap等工具进行UDP端口扫描时,如果向一个开放的端口发送数据包,通常不会收到响应。这种情况下,端口被标记为”open|filtered”,表示nmap怀疑这个端口是开放的,但可能被防火墙阻止。
偶尔会收到UDP响应(尽管罕见),这时端口会被标记为开放的端口。
最常见的情况是没有收到响应。在这种情况下,nmap会进行双重检查,如果仍然没有收到响应,则将端口标记为开放的端口。
当数据包发送到关闭的UDP端口时,目标服务器会使用ICMP包进行响应,其中包含端口不可访问的信息,这时端口会被标记为关闭的端口。
UDP包基本没有回复响应
ICMP 扫描(-sn)
众所周知的ping/traceroute 命令都是基于ICMP 协议来实现的
这个选项告诉nmap仅进行主机发现,不执行端口扫描。它实际上发送ICMP Echo请求(ping请求)到目标主机,根据返回的响应来判断目标主机的存活状态。
指路大佬:Wireshark抓包——ICMP协议分析_wiresharkicmp抓包分析-CSDN博客
NULL 扫描(-sN)
NULL 扫描是 nmap 中的一种扫描类型,它尝试利用 TCP 包的空标志位(SYN、ACK、FIN)来探测目标主机上的端口状态。这种扫描利用了 TCP 协议的一个特性,即发送一个没有设置任何标志位的 TCP 包,然后根据返回的响应判断端口是否开放。
- NULL 扫描发送的 TCP 数据包没有设置 SYN、ACK、FIN 标志位。
- 如果端口是开放的,目标主机应该不会对这种无效的 TCP 数据包做出响应。
- 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表明该端口处于关闭状态。
FIN 扫描(-sF)
它发送一个没有设置 SYN、ACK、RST 标志位,只有 FIN(结束)标志位的 TCP 包,然后根据目标主机的响应来判断端口是否开放。
- 如果端口是开放的,目标主机可能会忽略这个没有建立连接的结束包,并不做出响应。
- 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表示拒绝连接。
Xmas 扫描(-sX)
- Xmas 扫描发送的 TCP 数据包设置了 SYN、FIN 和 URG 标志位。
- 如果端口是开放的,目标主机可能会忽略这个没有建立连接的 Xmas 包,并不做出响应。
- 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表示拒绝连接。
参考文章(指路大佬😘):
Wireshark抓包——ICMP协议分析_wiresharkicmp抓包分析-CSDN博客