前言
存活探测通常使用 ICMP协议的Echo 请求(ping)或 TCP 协议的 SYN 请求来实现。当发送一个 Echo 请求或 SYN 请求到目标主机时,如果目标主机在线并能够响应,它将返回一个 Echo 响应或 SYN+ACK 响应。如果目标主机不存在或无法响应,探测数据包将超时或返回错误。接下来为大家介绍一下存活探测通常用到的方法。
主机存活-Ping扫描
Ping扫描是一种基于ICMP协议的网络扫描技术,用于确定目标主机是否在线和可访问。在Ping扫描中,扫描器向目标主机发送ICMP Echo请求(ping请求),如果目标主机在线并且可以访问,它将会响应一个ICMP Echo回复(ping回复)。通过检查目标主机是否响应ping请求,可以确定其在线状态。Ping扫描通常用于快速确定大量主机的在线状态,但不能提供详细的端口状态信息。
下图说明172.18.0.38和172.20.1.32是通的(ipv4),判定存活
ipv4
ipv6
端口存活-半连接syn
半连接扫描是一种常见的端口扫描技术,通常用于确定目标主机上的端口是否开放。在半连接扫描中,扫描器向目标主机发送TCP SYN包(建立连接请求),如果目标主机的端口是开放的,它将响应一个SYN/ACK包(表示可以建立连接)。扫描器在接收到SYN/ACK响应后,发送一个RST包来关闭连接。通过分析目标主机对SYN包的响应,可以确定端口的状态(开放、关闭或过滤)。半连接扫描相对快速且隐蔽,但在目标主机的日志中可能留下一些记录。
下图说明172.20.1.24的443端口是存活的是通的(ipv4),80 和22端口都不存活,过程是:
38给24发三个端口的syn包
24给38回了一个443端口的(syn,ack)包
38又给24回了一个443端口的(rst,ack)的包,三次握手结束,表示端口存活
38再给24回其他两个端口的tcp retransmission包(重传机制表示在计时器超时之前仍未收到确认报文,发送方会认为数据包丢失,触发超时重传),判定端口不存活
端口存活-全连接connect
扫描器向目标主机发送TCP连接请求(SYN)。如果目标主机的端口是开放的,它将响应一个带有确认标志(ACK)的TCP包,表示可以建立连接。扫描器收到确认响应后,发送一个复位标志(RST)来关闭连接。如果目标主机的端口是关闭的,它将返回一个带有复位标志(RST)的TCP包,表示连接无法建立。在进行全连接扫描时首先发送SYN,如果端口开启则返回SYN/ACK,可以正常建立连接,如果端口关闭则会返回一个RST命令。
下图说明172.18.0.155的443端口是存活的是通的(ipv4),过程是如下:
下图说明172.18.0.155的443、22端口是存活的是通的(ipv4),其余端口都不存活,过程是
38先给155发8个端口的syn包
155还给38回了80端口的(rst,ack)的包,终止连接,表示这个端口不存活?
38再给155回其他两个端口的tcp retransmission包,重传机制表示在计时器超时之前仍未收到确认报文,发送方会认为数据包丢失,触发超时重传
端口存活-udp扫描
与TCP端口扫描不同,UDP扫描专注于探测UDP协议下的端口状态。UDP扫描通常用于发现UDP服务、漏洞或配置问题。
下面这段报文表示
这种现象属于icmp先发,他回空包,然后带协议的给发nbns的,她再回带内容的,就判定存活
wireshark筛选
ip.addr==172.20.1.1/24
icmp
ipv6.addr == fc00::2
tcp.port == 22&&ip.addr==172.20.2.1
nmap扫描
UDP端口存活:nmap -sU -p 443,9443,22,60022 172.20.1.32
TCP端口存活:nmap -sS -p 443,9443,22,60022 172.20.1.32
主机存活:nmap -sP 192.168.147.0/24
ipv6:nmap -sU -6 -p 161 fc00:20::3
总结
本文提供了常见的几种存活探测的扫描方式,并提供了抓包分析,持续更新,欢迎关注!