应用于网络端口扫描检测
1、端口扫描攻击介绍
攻击者入侵渗透的第一步就是掌握目标的资产并找到防守薄弱点作为突破口,各类网络端口扫描是最常见最简单有效一种手段。
端口扫描是一种有效探查互联网开放端口的手段,攻击者将请求发送到目标服务器的IP地址,以发现提供服务的端口,然后利用服务中的漏洞进行下一步攻击。端口扫描攻击通常是重大网络攻击的序曲。扫描会短时间会发起大量的SYN包端口扫描,有可能会造成以下几种安全设备的告警:
(1)网络防火墙设备
大量并发的syn请求会对防火墙新建会话性能造成较大压力,引起防火墙会话数高报警,但是由于访问目标分散,半连接会话存续时间短,整体流量小,防火墙上不会留下任何日志记录,几乎无法进行定位。
(2)DDOS抗拒绝服务攻击设备
DDOS攻击防护设备通常具备如syn flood等各类攻击检测能力,为减少误报,通常需要安全运营人员持续进行优化调整,通常策略设置方式为针对单个系统或目标服务器IP设置具有一定容忍度的syn flood阈值,如果设置过大可能会出现部分扫描行为不会触发DDOS告警。
(3)其它安全类设备
由于设备自身的防护机制,一般情况下对于较为敏感的安全设备,如果被外部扫描到确实可能会触发相关安全告警,以此来及时发现攻击者扫描行为,收集相关攻击信息。有些攻击者为了避免被发现,通常会将扫描速率降到极低的程度,花费数天的时间慢慢收集信息,以防止被发现,此类扫描行为的特征是流量低、会话少、行为隐蔽,难以被发现。
除了端口安全扫描,还有基于UDP协议的DNS扫描、SIP服务扫描等等,因为不像TCP协议有建链过程,使得这种扫描更难被发现。
2、流量统计分析方法
网络端口扫描低流量、无会话、源目的地址分散的特性使得传统的流量分析手段无法做到及时发现和阻断,但是通过研究分析其原理,我们不难总结出流量统计数据的特征,几乎所有的端口扫描工具都是基于TCP的半连接方式,速度快,流量小,其基本原理如下:
图1 扫描原理
扫描器向服务器端口发起SYN包建立连接,服务器如果返回SYN ACK则说明服务器端口存活,如果服务器端口不活则不会有任何返回。在这种模型下,一般会在扫描流量数据中存在两种特征:一是出现大量无响应的SYN数据包;二是单个IP地址会访问大量的“IP+端口”的业务组合(正常用户一般只会用到网站对外发布的少量几个服务)。
针对特征一,将一段时间周期内SYN数据报文总数和SYN ACK数据报文总数进行分析,如果发现两者差值出现明显上升,就说明存在端口扫描事件的发生。
图2 特征一(Syn-syn/ack)
通过将这段时间内的单个客户端Syn-syn/ack数量进行排名,即可发现疑似扫描客户端的真实地址。
图3 客户端分析排名
针对特征二,对于扫描客户端的判断更为直接,我们把一个“IP+端口”算做一个应用,正常客户端,哪怕是互联网模拟监控探测的节点,访问的“应用数量”也不应超过网站真正发布的互联网应用数量,如果统计发现单个客户端IP在某一段时间范围内(例如1小时、3小时、当天或者一周等)访问的“应用数量”远超过正式发布的互联网门户、小程序和移动APP应用数量,那么这个客户端IP地址基本可以确认存在异常访问;结合特征一提到的Syn-syn/ack分析方法进行验证,即可快速确认这些IP地址全都属于扫描,非正常用户客户端行为。
为此,我们专门设计了基于流量数据的自动统计表格:
图4 特征二扫描客户端统计表
筛选条件为一天之内,应用数量大于已发布应用数量的5倍,新建会话数少于10的客户端,可以发现表格中列举的所有客户端都具备发起大量SYN包只有很少回包的特点,可以判断为异常扫描客户端,无需再进行人工抓包分析,并适当结合情报情况进行批量封禁。以上筛选条件较严,可以100%确认为扫描客户端并结合封禁工具可以实现自动封禁。
该方法简单易行,仅通过两个条件即可确认扫描地址,同时可以在比较大的时间范围进行搜索统计,即使是像慢速扫描这样隐藏较深的探测攻击,在该方法下也会现出原形。
另外,虽然Syn-syn/ack指标无法直接发现UDP/ICMP协议的扫描,但在统计表中也可以快速发现(Syn-syn/ack为0但是应用数量极大(图5),通过分析数据包可以看出来是SIP扫描或者其他UDP扫描(图6)。
图5 UDP/ICMP扫描客户端
图6 UDP扫描人工抓包确认
应用于DNS flood攻击检测
除了检测网络端口扫描攻击外,DNS扫描也可以被网络流量统计方法发现。DNS是典型的基于UDP协议的应用,只要负责网站域名到IP地址的关联关系查询,可以说非常重要,是攻击者非常喜欢的攻击目标。
通常攻击方希望通过向网站的DNS权威服务器发起大量的DNS查询请求,造成权威服务器性能的瓶颈。但是由于DNS的缓存机制,攻击者如果尝试发起大量注册域名的查询,那么大部分会由运营商递归域名服务器的缓存结果中直接返回,查询请求无法到达真正的权威服务器,因此DNS flood攻击通常的做法是随机构造权威域的子域名进行查询,让递归服务器的缓存无法生效,从而使请求全部透传到权威服务器。
从上述攻击行为分析中可以看出来,这种攻击方式必然会出现单个客户端IP查询大量的随机域名,统计单个IP查询的域名数量即可定位攻击源,如下图。
图9 客户端异常遍历域名场景
由于DNS flood客户端大部分为运营商递归服务器,封禁可能影响部分用户正常解析使用,我们可以继续分析该地址的历史访问曲线来评估封禁该地址可能造成的影响。如果权威服务器性能足够的话,建议关注即可。
应用于HTTP攻击检测
在应用层攻击检测方面,网络流量统计方法依然可以发挥作用。应用层面的攻击,攻击者通常会多次试探不同的URL及参数,尝试服务可能存在的漏洞。因此,统计单个客户端访问的URL数量即可快速定位攻击者。
图10显示单个客户端访问URL数量排名,可以明显看出异常客户端尝试了极大量的URL访问,对客户端访问明细进行确认可以验证其异常行为(图11)。该方法对URL目录遍历同样有效。
图10 客户端访问URL数量排名
图11 客户端异常行为确认
总结
基于流量统计数据的分析技术可弥补传统攻击检测技术的不足,实现网络攻击威胁的提前预警和隐蔽攻击者的发现,该方法一个显著的优势是无需观察单个的应用系统,基于整体流量统计数据进行网络威胁攻击源的发现,为网络安全防御能力的提升提供了新的思路。