王子晨 汤艳君 潘奕扬
(中国刑事警察学院公安信息技术与情报学院 沈阳 110031)
在互联网技术飞速进步和广泛应用的背景下,网络安全已经成为所有社会参与者必须高度重视的议题.随着频发的网络安全事件对国家、社会和个体造成深重影响,作为网络攻击最频繁受害的国家,中国正面临前所未有的网络空间安全挑战.因此,网络攻击溯源技术的研究与应用显得尤为重要.如果能定位到实际的网络攻击者则能制定更有针对性的防护措施,并进一步通过法律手段对其进行惩戒.网络攻击的溯源分析已然成为保护网络安全的关键研究课题.
然而,网络协议设计存在一定的问题,例如,TCP/IP协议没有包含数据包来源的验证功能,再加上攻击者经常利用虚假IP地址或者使用其他主机作为跳板进行攻击等方式来隐藏自身,导致仅通过源IP地址难以定位到真实的攻击者,使得在当前的互联网架构下追踪攻击源充满了挑战.
本文旨在综述现有的网络攻击者溯源分析技术,包括基于流量、场景以及样本的溯源分析技术.探讨它们的优缺点以及在实际应用中可能遇到的挑战,为维护网络安全提供借鉴.
基于流量的溯源分析是一种拓扑数据分析技术,可用于识别网络流量数据中的网络模式,跟踪网络攻击的来源.对于IP地址追踪问题,Gao等人[1]将流量溯源技术分为日志记录、流量包标记、ICMP回溯和链路测试等方法.
日志记录方法主要是利用路由器记录一些遍历信息,以验证可疑数据包是否由已知路由器转发,从而得到攻击路径.该方法的优点是可以利用存储的信息进行追踪溯源.其缺点是流量包信息的全文日志会给转发设备带来巨大存储开销[2].
为减少存储开销,可以将全文日志进行哈希处理.Snoeren等人[3]提出并改进SPIE(source path isolation engine)追踪系统,利用布隆过滤器(Bloom filter)存储记录数据包的摘要.这种方法支持基于单个数据包的IP溯源.尽管使用哈希技术减少了日志的存储容量,但在大规模高速网络环境下流量包日志的存储开销仍然不少.
流量包标记方法将存储开销转移到数据包上.它通过控制攻击路径上的部分或全部路由器,在数据包中写入这些路由器的特定识别信息,从而恢复攻击路径.但此类方法存在的问题是,若系统或转发设备被攻击者控制,删除或篡改包标记信息,从而误导攻击路径的重构.流量包标记方法可分为概率包标记法和确定包标记法.
1.2.1 概率包标记法
可以通过互联网提供商访问控制骨干网络的多数路由器,并且修改路由器的标准IP协议,给多数骨干网络路由器增加新的功能.Savage等人[4]提出概率包标记法(probabilistic packet marking, PPM).它在网络数据包中插入特殊标记.当攻击流量经过网络节点时,这些节点会根据一定的概率选择是否将标记注入数据包.
概率包标记法较为简单,适合解决大流量的攻击场景.但该方法只适用于单个攻击源的情况,且攻击路径重建的计算开销较大.
1.2.2 确定包标记法
确定包标记法(deterministic packet marking, DPM)是在溯源过程中,针对整个攻击流量路径的完全重构并不是必要的情况下提出的.Belenky等人[5]提出并改进了DPM算法,仅要求边缘网络节点在转发时根据规则添加特定的标记,而中间网络节点无需进行标记.Sun等人[6]在应对DDoS攻击时将该方法拓展到IPv6协议上,简化了重溯路径的复杂度.Suresh等人[7]提出了按需标记的DDoS攻击处理方法,利用多个数据包检测攻击,并通过编码在有限的空间内存储更多容量的信息.Vijayalakshmi等人[8]在DPM算法中提出了一种编码方法,使用三位标记码记录每个路由器预先创建的邻居度表信息.
但是大部分基于流量包标记的方法需要对部分网络节点进行掌控,而标记的流量包也可能会暴露有关网络拓扑结构或路由器身份的敏感信息.因此,基于流量包标记的溯源方法需要安全分析者和互联网服务提供商之间加强合作.
基于ICMP回溯的溯源技术是利用网络拥塞等原因导致路由器自发产生目标不可达的ICMP报文,来追踪攻击路径.
Bellovin等人[9]提出了ICMP标记算法,因网络拥塞等原因发送的ICMP报文包含该节点及前后一跳节点的IP地址.收集足够多的ICMP报文,可以重构整个网络攻击的路径.Thing等人[10]修改了这一方法,将标记的内容积累写入数据包中.
Cheng等人[11]在报文中嵌入管理信息库信息,提高了在溯源多个攻击流量时的路径重构准确性.Lee等人[12]研究了整个攻击路径信息的编码方式,以提高重构路径的性能.Yao等人[13]提出一种被动追踪的方法,在网络终端部署监控器可以在一定程度上构造出攻击流量路径.但这种方法需要较多的攻击流量,并且需要部署多个监控器.
使用单个ICMP数据包回溯地址信息较为简单.但问题是部分网络设备可能会过滤或限制ICMP报文的传递,并且报文容易被伪造发送.
基于链路测试的溯源技术对骨干网络的拓扑结构和路由控制没有过多要求.Burch等人[14]利用UDP泛洪的思想,依次对被攻击的上游路由发送洪泛流量.若洪泛的某条链路上也存在攻击流量,则该攻击流量可能出现丢包现象,并据此推断攻击路径.但该方法无法区分不同的攻击来源,也会影响正常的数据传递.Lai等人[15]使用蚁群优化思想,选择网络负载更重的路径,并逐层推进,但同样无法区分不同的攻击来源.姜建国等人[16]提出了一种改进方法,在了解骨干网络拓扑结构的前提下,每次都从受害者位置进行洪泛测试.
由于真正的DDoS攻击往往来自成百上千台受感染主机,若对上游网络中的路由器拓扑结构图不了解,可以尝试通过基于路由探测的工具软件(如traceroute等)获取信息[17].并由此转化为已知网络拓扑结构的情况进行分析.链路测试的溯源技术仍存在一些限制,例如它无法区分不同的攻击源,且可能影响正常数据的传输.
当前,我国网络空间安全形势日益复杂,网络攻击者的攻击手段也层出不穷.安全防御能力的提升需要根据不同的网络攻击场景,研究并实施不同的攻击溯源技术,做到精准化应对.结合威胁情报提出的主要攻击场景[18],将攻击溯源技术的应用场景分为5类:匿名网络攻击、僵尸网络攻击、跳板攻击、局域网攻击和高级可持续威胁攻击.
匿名网络如Tor网络[19]为用户提供了一种保护层,不暴露自己的真实身份和位置.然而这种匿名性也被攻击者利用,从而避开溯源分析.由于Tor网络的消息经过多层加密及其自组织管理模式,使得常规的IP流量溯源分析方法难以使用.因此,需要研究特定的溯源技术.陈周国等人[20]将匿名网络攻击溯源方法分为调制追踪和渗透追踪.
2.1.1 调制追踪
调制追踪在数据包中加入水印等标识特征,关联分析数据流量以识别攻击流量的来源.
Yu等人[21]利用直接序列扩频(DSSS)技术扩频水印信息干扰发件人的流量,并微调其速率,仅接收方可识别通信关系.通过在包终止时间字段中写入IP地址hash值标记数据包,从而推算攻击流量的来源.Ling等人[22]利用数据包的发送频率作为特征.卓中流[23]提出流量识别方法和网站指纹识别算法追踪接收方.何高峰等人[24]通过观察数据包处理速度变慢的节点来追踪溯源.但这些方法仅适用于低延时匿名网络,高延时网络可能导致流水印信息丢失.
2.1.2 渗透追踪
渗透追踪利用网络渗透技术控制匿名网络节点,破坏通信或利用协议漏洞,通过观察网络通信变化确定相关性.
Pries等人[25]借助重放攻击破坏Tor网络的匿名性.但可供于关联的信息太少,方法的准确性较低.Qin等人[26]分析了Tor项目团队发现的关联攻击[27],修改从客户端派生的单元格序列的命令字段以嵌入信号序列,检测出口Tor路由器上与嵌入信号序列一致的信号序列.
若能获取攻击者的入口Tor路由器日志文件,Pei等人[28]提出一种数据包检测方法.该方法使用数据包传输和中继时间的统计数据,通过分析入口Tor路由器的日志文件来确定与受害服务器上观察到的请求和响应配对相对应的数据包.
僵尸网络(Botnet)是由一组受攻击者控制的被僵尸程序感染的计算机组成的网络.从流量特征来看,攻击数据包来自受感染的主机,而无法识别真正的攻击源.本文在方滨兴等人[29]和郭晓军等人[30]研究的基础上,将僵尸网络攻击溯源技术总结为2类:流量特征追踪和渗透控制追踪.
2.2.1 流量特征追踪
流量特征追踪主要通过分析网络流量数据中的特征来追踪僵尸主机.于晓聪等人[31]分析不同类型僵尸网络的网络流量特征,快速检测出可疑的僵尸主机.Takemori等人[32]提出了基于主机的追踪系统,在每台主机和服务器上安装网络监控服务,追溯从受害主机到Bot主机再到C&C服务器的路径.Ramsbrock等人[33]针对基于IRC的僵尸网络提出了一种流量水印技术,通过改变数据包长度或发送间隔时间溯源.夏秦等人[34]通过收集域名服务器的查询流量以及域名反查的方式来发现更多的僵尸主机.
2.2.2 渗透控制追踪
僵尸程序与其他程序一样也会存在各种漏洞.虽然僵尸网络中通信通常是加密的,但Lin等人[35]设计获取到Bot主机内存中存储的通信加密密钥,并分析攻击程序的漏洞,进一步在攻击者主机上执行命令,发送给攻击者主机信息给安全人员.
蜜罐技术是通过设计诱饵诱导攻击者,从而捕获和分析攻击行为的方法.Yi等人[36]提出使用蜜罐技术主动感染僵尸程序,成为僵尸网络的一部分,从而转化为通过流量特征追踪的方式.
跳板攻击(bastion host attack)是指攻击者入侵并控制位于目标网络边界的跳板主机,进一步攻击目标网络内部的其他主机或系统.对于被攻击主机而言,其只能观察到攻击数据包的跳板主机地址,而不能识别到真正的攻击源头.
识别真正的攻击源首先需要检测本地网络环境中是否存在跳板主机.Chen等人[37]通过对比数据包中的明文信息确定不同数据包中是否包含相同的文本.如果数据进行了加密,Zhang等人[38]通过分析流量的时序特征,关联数据传输的时间间隔周期,将流入和流出流量以一定方式关联起来.孙奕等人[39]根据直接访问相邻主机的处理时延远小于将相邻主机当作跳板访问的处理时延这一特性,通过比较同一连接运输层的RTT往返时间间隔,从而检测目标是否为跳板主机.该方法需要保证网络环境相对稳定.
如果已发现本地网络中存在跳板主机,Wang等人[40]在回传给攻击者的数据包添加水印特征,并在回传路径上部署传感器.殷树刚等人[41]根据发现的各级跳板主机,利用域名和SSL证书信息进行反查,综合已知威胁情报获得攻击者组织信息.
若无法在网络上部署传感器,可以借助僵尸网络攻击的溯源思想,在跳板主机回传的消息中插入可执行代码,但这种方法的难度同样较大.
攻击者可能使用NAT技术潜伏在复杂的私有网络中.但NAT技术仅仅对IP地址和端口进行转换,不修改数据包的内容和大部分头部信息.
在有线网络中,根据存储在IP数据包头部的序列号信息就可以关联公私网数据流量,进一步得知攻击者的私网IP及MAC地址.Cohen[42]利用Http协议报头中的时间戳或Cookie辅助判断攻击主机的同一性.在2层网络中,Hazeyama等人[43]在数据包中加入跟踪信息,标识攻击数据包所经过的叶子路由器的接口和所经过的2层交换机的入口端.
在无线网络中,IP数据包的头部会被加密.Chen等人[44]利用数据包的长度控制外网的数据流,向数据流中添加特征水印,并在内网中检测数据流的特征水印.在大型公共场合的无线网络环境中,若已知攻击主机MAC地址,Wang等人[45]提出的3维定位方法使用定向天线识别源MAC地址发送的数据帧,并通过多点测量数据信号强度确定其物理地址.
高级可持续威胁(advanced persistent threat)攻击活动通常利用多种手段来实施,有的APT攻击甚至可能潜伏长达数年[46].溯源目标不再是将个人而是将整个群体与网络攻击进行联系[47].关于攻击组织的溯源更多依赖综合情报进行推理验证[48].基于不同的溯源思路,主流的溯源模型可以分为分层溯源模型、钻石模型和Q模型.
2.5.1 分层溯源模型
分层溯源模型由Cohen等人[49]首次提出,陈周国等人[48]进一步明确了每个层次的目标和溯源问题.模型包括4个层次:归属直接发起网络攻击的主机、确定控制网络攻击的主机、追踪真正的攻击者以及追踪策划网络攻击的组织.刘潮歌等人[50]构建了网络服务、主机终端、文件数据、控制信道、行为特征和挖掘分析6个层次的溯源模型.
2.5.2 钻石模型
钻石模型由Caltagirone等人[51]提出,将情报实时集成到分析平台中,自动关联、分类和预测事件,同时规划和实施缓解策略,有4个核心特征:对手、能力、基础设施和受害者.Pahi等人[52]针对证据可信度和模型普适性的问题,拆分组合攻击和攻击者的分析,改进为网络溯源模型(CAM).
2.5.3 Q模型
Rid等人[53]研究了溯源的复杂性,引入战略、作战、战术、技术和沟通层面,认为溯源是双向的:战略层和操作层可以为随后的技术分析提供信息,反之亦然.模型分析了溯源过程中不考虑事件响应和溯源的战略和技术方面而结合技术与社会因素的方法.并对如何执行溯源过程、关注社会因素、检测攻击动机给出了说明.
此外,安全厂商为了更好地应对新威胁和新网络安全格局,提出了不同的方法.洛克希德·马丁公司提出描述网络攻击过程的网络攻击链(cyber kill chain)模型.模型分为目标侦查、武器生产、载荷投递、突防利用、安装植入、命令控制和任务执行等步骤.FireEye公司提出结合情报、技术和经验的自适应商业威胁模型,并将键盘布局、样本信息、内嵌字体、DNS信息、语言文字、远控工具配置和行为模式作为溯源线索.
网络攻击会留下痕迹,如植入后门程序、留下恶意样本.根据分析和对比恶意样本的生成、传播规律以及样本之间的关联性,可以用于攻击溯源[54].宋文纳等人[55]总结了学术界和产业界的溯源方法,通常分为静态溯源分析技术和动态溯源分析技术.
样本的静态溯源分析无须实际执行恶意代码,而且速度相对较快,是溯源工作的首选.样本的同源性可以通过分析代码的相似性来获取.静态分析可以通过代码结构以及其生成的各种图形(如控制流图、函数调用图、数据流图等)来提取特征[56]并进行同源性分析.
3.1.1 代码结构溯源
对样本的静态溯源分析通常需要反汇编程序处理,并在此基础上提取其有用特征信息.Alazab[57]使用IDA Pro进行反编译,使用最近邻算法对API调用出现顺序和频率聚类判断样本的相似性.
Nataraj等人[58]首次利用灰度图对恶意代码进行可视化,在不进行反汇编和执行的前提下对恶意软件家族分类.Sree等人[59]借助视觉相似性的思想,使用孪生神经网络(siamese networks)通过密钥提取、n-gram特征提取、序列向量改进了这一思想.
乔延臣等人[60]以函数为单位,利用simhash值在海量代码中快速溯源相似函数代码块,依据代码块跳转关系判定相似情况,并溯源至对应样本.
3.1.2 生成图溯源
控制流图(control flow graph, CFG)可以体现代码之间的跳转关系.Liu等人[61]收集了网络攻击组织相关联的恶意代码样本集,结合它们的控制流图和反汇编代码生成嵌入,使用深度学习模型对来自不同组织的恶意代码生成分类模型.由于并非所有编译后代码都能实现恶意功能,攻击者也可能插入虚假代码对抗安全分析.梅瑞等人[62]在此基础上分析二进制代码的控制依赖关系和数据依赖关系,对经典程序切片算法作了向二进制代码的改进.
代码混淆技术可以显著改变代码的结构,影响二进制分析工具的准确性,但通常不会改变代码语义.Alrabaee等人[63]使用数据流分析提取寄存器中的语义流及其控制组件,合成为语义流图(semantic flow graph, SFG)的新表示,并利用图中的关系,使用最大公共子图算法判断文件之间的相似性.
程序的功能大多由其调用的库或系统调用决定,因此其函数调用图(function call graph, FCG)可以看成程序行为的近似.Xin等人[64]认为同源代码派生出来的恶意软件变体在函数调用图上特征是相似的,并测试了方法的可行性.
由于求解子图同构问题的计算复杂度较高,导致基于图结构特征的样本溯源分析效率较低.Hassen等人[65]将函数调用图向量使用函数聚类进行线性表示,减少了模型在计算时的开销.赵炳麟等人[66]将API调用图的特征导入卷积神经网络学习.
3.1.3 编写特征溯源
由于样本代码编写者的教育程度、熟练程度以及所使用工具不同,往往会有不同的编写习惯,留下特殊的编码风格.Caliskan等人[67]研究了源代码的归属问题,使用随机森林和抽象语法树的方法学习源代码中的编码风格,并发现由熟练程序员编写的或者编写复杂度高的代码更容易溯源到其创作者.罗文华[68]通过归纳恶意程序反汇编代码一般规律,发现一些恶意程序会在程序中写入IP地址或域名.
但静态溯源技术不会触发样本的行为,攻击者为了防止自己的攻击程序被检测到,可能会使用加壳、加密、混淆等保护技术[69],降低内部恶意代码被检测出的可能性,使静态溯源分析技术失效.
动态溯源方法需要搭建一个代码运行的沙箱环境,通过执行恶意软件样本,观察其在运行过程中的行为来分析其性质和功能.这种方法可以揭示如反向工程隐藏的恶意行为.
3.2.1 动态调用关系溯源
通过捕获API调用的模式和依赖关系可以反映出恶意软件的行为和结构.Wu等人[70]利用数据流应用API作为分类特征来检测Android恶意软件.Cho等人[71]通过检测API调用序列的公共部分判断样本的相似性,并发现如果API调用序列的长度太长,则模型性能会非常差.谭杨等人[72]根据样本的API序列特征和字节熵特征,有效地区分不同恶意软件家族.Mu等人[73]提取加权Android恶意软件中上下文API依赖图作为程序语义来构建特征,使用图形相似性度量识别样本之间的相似度.但API调用具有一定的通用性,在表征恶意样本个性化特征方面存在短板[74].
3.2.2 内存分析溯源
内存的易失性会导致一些网络入侵痕迹的消逝.Vömel等人[75]通过归纳内存镜像的制作和分析方法,指出内存中加密密钥、进程、注册表和网络流量信息有助于网络攻击现场的复原重建以及证据保留.Sihwail等人[76]提出基于签名的方法,可以快速识别已知的恶意样本.
对于样本的溯源分析虽然有可能无法追溯到某个特定的攻击者,但是其同源性溯源的思想,可以为溯源网络攻击组织机构提供帮助.王津等人[77]融合多源威胁情报和本地沙箱告警日志构建并丰富攻击组织知识库,从而追踪攻击组织的攻击事件.Li等人[78]结合威胁情报和入侵杀伤链模型进行分析.
网络攻击溯源分析技术具有多样性和复杂性.在面对不同类型的网络攻击和恶意行为时,不同的溯源方法和技术可以提供有力的支持和帮助.然而,现有技术仍然面临着许多挑战,包括数据隐私保护、溯源准确性、效率和可扩展性等方面的问题.未来的研究方向应该集中在改进溯源算法和模型、增强网络安全防御能力以及加强威胁情报合作与信息共享等方面,以进一步提升网络攻击溯源分析技术的效能和可靠性,保障网络空间的安全和稳定.