取证流量包分析——Nmap 流量包分析

通过tcp contains "nmap"可以发现流量中发现很多Nmap关键字,确定是Nmap流量分析题。

image-20231220192845962

常用的Nmap扫描端口的命令示例:

  1. TCP SYN 扫描(也称为半开放扫描):这是Nmap默认的扫描方式,发送TCP SYN包来探测端口是否开放。

    1
    nmap -sS target_ip
  2. TCP Connect 扫描:这种扫描方式通过建立完整的TCP连接来检测端口是否开放,速度较慢但更可靠。

    1
    nmap -sT target_ip
  3. UDP 扫描:用于扫描UDP端口,因为UDP协议不像TCP那样有建立连接的握手过程,所以扫描更具挑战性。

    1
    nmap -sU target_ip
  4. ICMP扫描:用执行“Ping扫描”

    1
    nmap -sn target_ip_range
  5. NULL扫描:利用 TCP 包的空标志位来扫描

    1
    nmap -sN target_ip
  6. FIN扫描:发送一个没有设置 SYN、ACK、RST 标志位,只有 FIN(结束)标志位的 TCP 包进行扫描

    1
    nmap -sF target_ip
  7. Xmas 扫描:发送设置了 SYN、FIN 和 URG 标志位的 TCP 数据包进行扫描

    1
    nmap -sX target_ip
  8. 指定端口范围:你可以使用 -p 参数指定要扫描的端口范围。

    1
    nmap -p 1-100 target_ip
  9. 服务版本检测:通过 -sV 参数可以尝试探测目标主机上运行的服务及其版本信息。

    1
    nmap -sV target_ip
  10. 操作系统检测:通过 -O 参数可以尝试猜测目标主机的操作系统类型。

    1
    nmap -O target_ip

TCP 扫描(-sT)

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流传输层通信协议

TCP 扫描的原理是和目标端口执行三次握手,通过收到的响应来确定服务是否打开

29381f30e924b899cb32f6316e061d950a7bf6a9

如果 nmap 发送了 SYN 请求,目标服务器使用 SYN/ACK 进行响应,那么就判定端口打开

1702550107631

如果 nmap 发送了 SYN 请求但是目标服务器使用 RST(reset)进行响应,那么就判定端口关闭

v2-04f55e4f654b4c9081670b144b8dc5f3_r

如果 nmap 发送了 SYN 请求但是目标服务器没有响应,那么就判定端口有防火墙保护

image-20231220194528536

SYN 扫描(-sS)

又称半连接扫描

TCP 是完整的三次握手,SYN 扫描是从目标服务器收到 SYN/ACK 后发回 RST 包,防止服务器重复尝试发出请求

通过命令可以查询SYN成功连接的返回包

1
tcp.flags.syn == 1 && tcp.flags.ack == 1

image-20231220195621001

追踪TCP流查看详情

image-20231220195326544

如果端口关闭,目标服务器会使用 RST 响应

通过命令查看reset包

image-20231220195809717

追踪TCP流查看详情

image-20231220195849252

如果端口被防火墙过滤了,SYN 包会被丢弃

UDP 扫描(-sU)

UDP通信需要两端事先约定好通信的方式。这种约定可以是对称的,也可以是不对称的。

最基本的情况是,服务器端根据数据包的源IP和端口信息原路将数据包发送回去。这要求客户端不仅在指定的端口上发送数据,还需要同时监听来自服务器端的响应。

然而,在实际应用中,客户端可以选择另外监听一个端口,当服务器端回复数据包时,将数据包发送到客户端指定的另一个端口上。这些约定完全取决于通信双方的规定。

UDP是无连接的,不需要通过握手来建立连接。因此,它通常速度更快,但也更不可靠。

在使用nmap等工具进行UDP端口扫描时,如果向一个开放的端口发送数据包,通常不会收到响应。这种情况下,端口被标记为”open|filtered”,表示nmap怀疑这个端口是开放的,但可能被防火墙阻止。

偶尔会收到UDP响应(尽管罕见),这时端口会被标记为开放的端口。

最常见的情况是没有收到响应。在这种情况下,nmap会进行双重检查,如果仍然没有收到响应,则将端口标记为开放的端口。

当数据包发送到关闭的UDP端口时,目标服务器会使用ICMP包进行响应,其中包含端口不可访问的信息,这时端口会被标记为关闭的端口。

image-20231220202026002

UDP包基本没有回复响应

image-20231220202911907

ICMP 扫描(-sn)

众所周知的ping/traceroute 命令都是基于ICMP 协议来实现的

这个选项告诉nmap仅进行主机发现,不执行端口扫描。它实际上发送ICMP Echo请求(ping请求)到目标主机,根据返回的响应来判断目标主机的存活状态。

image-20231220202807202

20190429211712332

指路大佬:Wireshark抓包——ICMP协议分析_wiresharkicmp抓包分析-CSDN博客

NULL 扫描(-sN)

NULL 扫描是 nmap 中的一种扫描类型,它尝试利用 TCP 包的空标志位(SYN、ACK、FIN)来探测目标主机上的端口状态。这种扫描利用了 TCP 协议的一个特性,即发送一个没有设置任何标志位的 TCP 包,然后根据返回的响应判断端口是否开放。

  • NULL 扫描发送的 TCP 数据包没有设置 SYN、ACK、FIN 标志位。
  • 如果端口是开放的,目标主机应该不会对这种无效的 TCP 数据包做出响应。
  • 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表明该端口处于关闭状态。

20210109225949247

FIN 扫描(-sF)

它发送一个没有设置 SYN、ACK、RST 标志位,只有 FIN(结束)标志位的 TCP 包,然后根据目标主机的响应来判断端口是否开放。

  • 如果端口是开放的,目标主机可能会忽略这个没有建立连接的结束包,并不做出响应。
  • 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表示拒绝连接。

Xmas 扫描(-sX)

  • Xmas 扫描发送的 TCP 数据包设置了 SYN、FIN 和 URG 标志位。
  • 如果端口是开放的,目标主机可能会忽略这个没有建立连接的 Xmas 包,并不做出响应。
  • 如果端口是关闭的,目标主机可能会响应 RST(复位)包,表示拒绝连接。

参考文章(指路大佬😘):

Nmap流量分析-CSDN博客

Wireshark抓包——ICMP协议分析_wiresharkicmp抓包分析-CSDN博客

通过wireshark抓包对nmap一些原理分析_nmap两次握手-CSDN博客

从一道题分析Nmap SYN/半连接/半开放扫描流量_nmap tcp 全开扫描 和半开扫描-CSDN博客