端口扫描,通常是指利用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、了解端口扫描原理有哪些好处
端口扫描有很多种,只要我们掌握其原理,无论使用的哪种扫描技术,我们都可以通过网络分析进行快速定位,找出攻击源。