Nmap流量分析
TCP扫描(-sT)
又称为全连接扫描
TCP由三个握手组成:约吗?(SYN)约。(SYN/ACK)好的!(ACK)
TCP扫描的原理是目标端口执行三次握手,通过收到的响应来确定服务是否打开
如果nmap发送了SYN请求,目标服务器使用SYN/ACK进行响应,那么就判定端口打开
RFC 9293 - Transmission Control Protocol (TCP) (ietf.org)
If the connection does not exist (CLOSED), then a reset is sent in response to any incoming segment except another reset. A SYN segment that does not match an existing connection is rejected by this means.
如果nmap发送了SYN请求但是目标服务器使用RST(reset)进行响应,那么就判定端口关闭
如果nmap发送了SYN请求但是目标服务器没有响应,那么就判定端口有防火墙保护
1 | iptables -I INPUT -p tcp --dport <port> -j REJECT --reject-with tcp-reset |
SYN扫描(-sS)
又称半连接扫描
TCP是完整的三次握手,SYN扫描是从目标服务器收到SYN/ACK后发回RST包,防止服务器重复尝试发出请求
如果端口关闭,目标服务器会使用RST响应
如果端口被防火墙过滤了,SYN包会被丢弃
优点:
旧的IDS捕捉三次握手,SYN扫描成为漏网之鱼
监听端口的程序一般不会记录SYN扫描
不用三次握手,所以快
UDP扫描(-sU)
UDP是无状态的,他不是通过来回握手来启动连接,而是依赖把数据包发送到目标端口,所以它往往慢得多
把数据包发送到开放端口的时候,不应该有响应,这种端口称为open|filtered,也就是说nmap怀疑它是开放的,但是可能被防火墙阻止
但是有时候它会收到UDP响应(罕见),那么端口标记为打开
最常见的是没有响应,这种情况下,它会再次请求以进行双重检查,如果还是没有响应那么标记为open|filtered
当发包到关闭的UDP端口时,目标服务器会使用ICMP包进行响应,其中包含端口无法访问的信息,标记为closed
ICMP扫描(-sn)
类似于fscan扫网段
nmap向网段发送ARP包,收到响应了,标记为alive
nmap也会向目标的443端口发送SYN和ACK
NULL,FIN,Xmas扫描(-sN,-sF,-sX)
这三种不太常用,但是比SYN扫描还要阴
NULL扫描(-sN)
NULL扫描是发送TCP请求时不带任何标志,如果端口关闭,目标服务器响应RST
FIN扫描(-sF)
FIN扫描时发送TCP请求时带上FIN标志,如果端口关闭,目标服务器响应RST
Xmas扫描(-sX)
又称圣诞节扫描
Xmas扫描时发送TCP请求时带上错误的PSH,URG,FIN标志,如果端口关闭,目标服务器响应RST
参考tryhackme