TCP扫描(-sT)

又称为全连接扫描

1702550107631

TCP由三个握手组成:约吗?(SYN)约。(SYN/ACK)好的!(ACK)

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

1702550096475

如果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)进行响应,那么就判定端口关闭

1702550384759

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

1
2
iptables -I INPUT -p tcp --dport <port> -j REJECT --reject-with tcp-reset

SYN扫描(-sS)

又称半连接扫描

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

1702550823888

1702550868977

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

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

优点:

旧的IDS捕捉三次握手,SYN扫描成为漏网之鱼

监听端口的程序一般不会记录SYN扫描

不用三次握手,所以快

UDP扫描(-sU)

UDP是无状态的,他不是通过来回握手来启动连接,而是依赖把数据包发送到目标端口,所以它往往慢得多

把数据包发送到开放端口的时候,不应该有响应,这种端口称为open|filtered,也就是说nmap怀疑它是开放的,但是可能被防火墙阻止

但是有时候它会收到UDP响应(罕见),那么端口标记为打开

最常见的是没有响应,这种情况下,它会再次请求以进行双重检查,如果还是没有响应那么标记为open|filtered

当发包到关闭的UDP端口时,目标服务器会使用ICMP包进行响应,其中包含端口无法访问的信息,标记为closed

image-20231214185744585

ICMP扫描(-sn)

类似于fscan扫网段

nmap向网段发送ARP包,收到响应了,标记为alive

image-20231214191211991

image-20231214191813957

nmap也会向目标的443端口发送SYN和ACK

image-20231214192018578

NULL,FIN,Xmas扫描(-sN,-sF,-sX)

这三种不太常用,但是比SYN扫描还要阴

NULL扫描(-sN)

NULL扫描是发送TCP请求时不带任何标志,如果端口关闭,目标服务器响应RST

1702553209153

FIN扫描(-sF)

FIN扫描时发送TCP请求时带上FIN标志,如果端口关闭,目标服务器响应RST

1702553461092

Xmas扫描(-sX)

又称圣诞节扫描

Xmas扫描时发送TCP请求时带上错误的PSH,URG,FIN标志,如果端口关闭,目标服务器响应RST

1702553469858

参考tryhackme