端口扫描,通常是指利用TCP、UDP等方式,去检测操作系统类型及开放的服务,为进一步的攻击做好准备。通常蠕虫病毒、网络攻击等常见的影响网络安全的行为,都是从扫描开始的。所以,深入了解各种网络扫描的工作原理及其表现特征,对网络管理者具有重要的实战意义。
NMAP作为常见的网络扫描工具,内置了多种扫描方式。每种方式的工作原理不同,其数据包和通讯特征也不尽相同。我们将通过网络分析软件,对常见扫描方式进行分析和图形化的展现,以方便大家对这些扫描方式有一个深入的理解。
TCP SYN扫描,是最受攻击者欢迎的扫描类型之一。其扫描速度快(每秒可以扫描数以千计的端口),兼容性好(只要对端支持TCP协议栈即可),且不易被发现。
TCP SYN扫描,通常又叫“半开放”扫描。因为它不必打开一个完整的TCP连接,只发送一个SYN包,就能做到打开连接的效果,然后等待对端的反应。如果对端返回SYN/ACK报文,则表示该端口处于监听状态,此时,扫描端则必须再返回一个RST报文来关闭此连接;返回RST报文表示该端口没有开放。
TCP SYN扫描在科来网络分析中的视图表现:小包多(<128字节),如下图所示。
图 12-1
在TCP Flag统计中,TCP同步位发送和TCP复位接收较多,如下图所示。
图 12-2
可能会触发TCP端口扫描诊断,如下图所示。
图 12-3
以固定端口与被扫描IP尝试连接,且会话大多具有相同的特征,如下图所示。
图 12-4
会话数据包总计为2个或3个。3个包表示端口开放,2个包表示端口未开放,如下图所示。
图 12-5
图 12-6
TCP connect()扫描,是一种常见的扫描方式。它通过操作系统与目标机器建立连接,而不是直接发送原始数据包。这与浏览器、P2P客户端以及大多数网络应用程序一样,建立连接由高层系统调用。执行这种扫描的最大好处是无需root权限,但会在系统日志里留下记录。所以当在日志系统里,看到同一系统的大量连接尝试,就应该知道系统被扫描了。
TCP connect()扫描在科来网络分析系统中的视图表现:小包多(<128字节),如下图所示。
图 12-7
在TCP Flag统计中TCP同步位发送和TCP复位接收较多,同时会有少量的同步接受和复位包发送,如下图所示。
图 12-8
以连续端口与被扫描IP尝试连接,且会话大多具有相同的特征,如下图所示。
图 12-9
会话数据包总计为2-6个不等,需查看数据信息确认端口状态,如下图所示。
图 12-10
UDP扫描,通常与ICMP相结合进行。在给目标主机发送没有携带任何数据的UDP数据包时,如果返回信息为“ICMP端口不可达”(类型为3,代码为3)的提示,则表示目标端口是关闭的,但主机是存活的;如果某服务响应一个UDP报文,则表明该端口是开放的。
当然,UDP扫描也存在瓶颈,那就是速度。很多主机默认限制发送“ICMP端口不可达”信息,或者限制发包的频率。如Linux2.4.20内核,就只允许一秒钟发送一条目标不可达信息。这样,扫描65535个端口,需要18小时的时间。这是不可接受的,所以加速UDP扫描的方法,通常是并发扫描或先扫描主要端口。
UDP扫描在科来网络分析中的视图表现:出现大量UDP会话,如下图所示。
图 12-11
大量的UDP小包,且不携带任何数据,如下图所示。
图 12-12
触发大量ICMP端口不可达诊断,如下图所示。
图 12-13
会话数据包总计为1-2个,通常情况1个表示端口关闭,2个或以上表示端口开放,如下图所示。
图 12-14
根据RFC 793,主机发送一个没有任何标志位的TCP包,如果目标主机的对应端口是关闭的话,则会返回一个RST数据包,如果没有响应则表示该端口是开放的。
NULL扫描,可以躲过无状态防火墙和报文过滤路由器,且比SYN扫描要隐秘。值得注意的是,并不是所有系统都遵循RFC 793。一些系统不管端口是开放还是关闭,都响应RST数据包。如Cisco设备、BSDI等。
根据RFC793,类似的扫描还有FIN扫描、FIN+PSH+URG扫描。
NULL扫描在科来网络分析中的视图表现:网络中存在大量小包,大量的TCP复位数据包,如下图所示。
图 12-15
大量没有任何标志位的数据包,如下图所示。
图 12-16
ACK扫描发送一个只设置ACK标志位的数据包,目标主机端口无论是关闭还是开放状态,都会返回RST数据包。但ACK扫描不能确定目标主机的端口状态,可以确定对方主机是否存活,可以发现防火墙规则来确定防火墙的状态。
ACK扫描在科来网络分析中的视图表现:网络中存在大量小包,大量的TCP复位数据包,如下图所示。
图 12-17
大量ACK标志位置1的数据包,如下图所示。
图 12-18
在某些系统上,开放端口用正数表示窗口大小,而关闭的窗口大小则为0。窗口扫描,就是通过检查返回RST报文的窗口字段,来判断端口是否开放。
窗口扫描依赖于少数的系统实现细节,不支持它的系统通常会返回“所有端口都关闭”信息;甚至有些系统会给出相反的行为(比如:扫描显示1000端口开放,3个端口关闭,那么这3个端口反而是开放的)。
窗口扫描在科来网络分析中的视图表现:网络中存在大量小包,大量的TCP复位统计,如下图所示。
图 12-19
图 12-20
网络中存在大量特征相同的协议统计,如下图所示。
图 12-21
IP协议扫描,用来确定目标主机支持的IP协议,如TCP、UDP、ICMP等。它不对任何TCP或UDP端口发送报文,而是对IP协议号发送对应的数据包。
IP协议扫描发送IP报文,报文不包含任何数据,甚至不包含协议的正确报文头(TCP、UDP、ICMP例外)。IP协议扫描需要关注“ICMP协议不可达”信息,收到目标主机的任何协议响应,即表示该协议是开放的。
窗口扫描在科来网络分析中的视图表现:网络中存在大量小包,如下图所示。
图 12-22
网络中存在大量特征相同的IP数据包,且不携带任何数据,如下图所示。
图 12-23
FIN/ACK扫描也被称作Maimon扫描,根据发现者Uriel Maimon命名。其实Maimon扫描与NULL、FIN扫描的原理一样,根据RFC 793,无论端口是关闭还是开放,目标主机都会对FIN+ACK探测数据包,响应RST报文(但许多基于BSD的系统,会丢弃FIN+ACK探测数据包)。
FIN\ACK扫描在科来网络分析中的视图表现:网络中存在大量小包,大量的TCP复位统计,如下图所示。
图 12-24
图 12-25
网络中存在大量特征相同的协议统计,如下图所示。
图 12-26
大量同步位(ACK)和终止位(FIN)的数据包,如下图所示。
图 12-27
一些高级用户,不会遵循现成的扫描类型和规则,而是根据实际情况,任意指定TCP的相关标志位和扫描类型,从而避免IDS等设备的检测。
FIN/ACK扫描在科来网络分析中的视图表现:
利用概要、协议、TCP/UDP会话、解码视图进行综合分析。
1、端口扫描的大致特征
2、了解端口扫描原理有哪些好处
端口扫描有很多种,只要我们掌握其原理,无论使用的哪种扫描技术,我们都可以通过网络分析进行快速定位,找出攻击源。