1 绪论
恶意的隐蔽通信(也称隐蔽信道)是网络攻击者进行网络攻击成功关键。通过攻击者通过对受控主机的控制,通过使用恶意程序或修改正常程序, 在看似正常的网络通信中嵌入消息并混合在正常的网络流量中。这样帮助攻击者绕过传统通过访问控制列表、利用签名、信誉列表及沙箱识别等传统安全防护产品的检测,从而进行控制指令执行、恶意代码传播、敏感数据窃取等攻击行为。隐蔽信道最早在1973 年由美国Lampson 提出。美国国防部对隐蔽信道研究高度重视,在1993 年发布了可信系统的隐蔽信道分析的指南。随着互联网通信协议的广泛使用和互联网应用的蓬勃发展, 隐蔽通信也得到了越来越广泛的研究和利用。针对隐蔽通信的检测和预防,信息安全界也展开了大量的研究和实践工作。本文将针对隐蔽通信的攻击和防护进行分析研究并根据现有方式的不足提出相应的安全应对措施。
2 隐蔽信道攻击研究
互联网协议版本(IPV4)报头隧道是隐蔽信道在网络层的第一个实例。因为IP 是广泛使用的协议,因此利于目标协议的数据隐藏。IP 数据包包含一个协议报头,它有23 个字段组成并用于各种目的,如携带的路由信息、服务质量系统信息,分段信息的。但是这些信息可用来传输非网络管理是信息。尽管这些报头中的这些信息是公开且可被检测, 但是里面的数据并不被认为是异常的。16bit 的IP 标示(ID)字段也是最常见的可用于隐蔽数据传输的选择。一个隐蔽信道可以将编码数据分隔成16bit 字节并封装于IP 的标示字段中进行隐蔽传输。此外,IP 协议还有许多通过操作利用IP 报头进行隐蔽信道传输的漏洞,例如24bit 的可选字段、8bit 的字段填充位、3bit的不分段标示(DF flag)以及生存时间字段(TTL)。IPV6 协议是IPV4 协议的增强版本,但是由于其更复杂,也更利于隐蔽信道进行利用。另一个隐蔽通信常用的协议是TCP 协议。例如在TCP 协议中,初始序列号(ISN)是随机产生的并使用在TCP 会话的一个分段中(SYN 分段),但是在ISN 中填充使用非随机的值并不中断TCP 协议, 因此恶意用户可以每次传输32bit 的任意数据。由于ISN 本身就是随机的,因此当其用作隐蔽信道传输的载体时非常难以进行判断分析。
除了对IP,TCP 数据包特定字段的利用,还有其它对协议的隐蔽信道攻击利用方式, 包括ICMP Tunnel,HTTP Tunnel和DNS Tunnel。ICMP Tunnel 是利用IETF 组织RFC 792 中对ICMP 响应数据报文中定义的缺陷,即允许包头中类型为0 或8 的ICMP 数据包拥有任意长度。
HTTP Tunnel 是一种使用HTTP 协议封装不同的网络协议的技术。网络协议一般指的是TCP/IP 族协议。HTTP 协议扮演了隧道包装器的角色, 网络协议则通过隧道来进行通信。HTTP tunnel 分为连接代理和无连接代理两类。连接代理是HTTP client 和HTTP Proxy 进行通信, 由HTTP Proxy 来完成TCP 流的代理转发。而无连接代理方式则是client 将经由其出去的TCP 流封装在HTTP 协议中发给HTTP server,HTTP sever解析出TCP 流后进行转发。DNS Tunnel 的方式也是借由对DNS 数据包的修改操控完成隐蔽数据的发送。例如修改DNS数据包IP 和UDP 报头, 增加额外的数据包长度就可以添加任何数量的二进制数据到DNS 数据包的尾部,同时也不会影响到DNS 服务器和解析器对这类已修改的DNS 查询和应答数据包的处理。
此外还可以利用DNS 解析器并不要求DNS 数据包指针只能指向数据包之前的位置的漏洞。该方式可以将指针调整指向插入隐蔽数据后的标签位置(见图5)。
最后还有一些新的隐蔽通信实现的方式,包括利用VOIP__和X509 证书。VOIP 协议中可以利用VOIP 协议中SEQ(顺序号)和SSRC(源验证者)这两个地方写入隐藏数据,还可以对控制协议(SIP,H323,RTCP)进行隐蔽通信。在X509 证书可以操作证书的有效时间来实现隐蔽数据传输。根据X509 证书的定义, 有效时间的最早年份值为1900, 而最晚年份可以是9999, 因此该项值在1900 年00:00:00 到9999 年23:59:59之间共有(9999-1900)3653600=10,642,086,000 个变化。这意味着高达33bit 的数据可以利用时间差分编码方式在一个数字证书中进行传输。
隐蔽通信是一种非常规的通信方式, 由于其可以突破众多的限制,实现跨网络域的通信,多年来网络通信行业一直在开展这方面的研究。如解放军信息工程学院文志军提出了利用ICMP 隧道协议实现三级模式模式穿越防火墙的控制和实现方法。南京理工大学王鹏提出提出通过TCP 时间戳选项构造记录式包间隔构造隐蔽信道的方式。对于隐蔽通信,信息安全界更多关注如何检测和防护隐蔽信道。
3 隐蔽信道攻击防护研究
目前关于隐蔽信道的检测技术主要包含三个方向:
(1)通过数据流统计的方式进行检测。该方式通过对网络或传输层的监测建立网络中协议数据流在一定条件下的阀值。当流量超出该阀值,则视为检测到隐蔽通信。例如钱玉文等提出基于密度聚类的隐蔽信道检测算法检测出不同种类的隐蔽信道。D.A.Gustafson 和Kenton Born 提出通过字符频率分析的方式来检测DNS 隧道以及通过利用NgViz 工具来统计分析检测DNS 隧道。Guido Pineda Reyes 提出通过统计分析数据流指标特征的方式来发现隐蔽信道。
(2)通过特征来进行检测。这种特征可以是一种随机分布,如果不符合,则视为检测到隐蔽通信。例如前面提到TCP协议的ISN,该值理论上应是随机生成,但由于填充了隐蔽数据,其随机分布可能呈现一定的规律性。因此利用该特征作为检测隐蔽通信的手段。
此外还可以将数据包中字段的设定作为特征。例如如果TCP 包头的保留字段没有使用,而该字段确又有数值,则该情况可能就是一种隐蔽通信。
(3)通过学习网络行为并使用统计的方式来建立模型,进而判断哪种网络流量是正确的行为。例如曹自刚提出基于协议的一般性概念将真实世界中的常见网络协议抽象为协议语法格式,协议状态转移和协议行为三种属性,并提出了面向常见网络协议的通用伪装检测框架, 从上述三个方面分别对协议的合规性和异常度进行深度验证。Paras Malhotra 通过分析网络中特定主机、端口和应用的加密行为来分析检测未授权的加密数据流。
4 隐蔽信道攻击防护研究的不足
以上三种检测方向的研究为隐蔽信道的检测提供了很好的解决思路。但从信息安全攻击链的角度来以上检测方式还不能完全解决隐蔽信道攻击的风险。存在的问题包含如下:
(1)以上检测方向均集中在事中检测的阶段。而最终企业/机构用户来说,攻击已经发生了,而且可能已经造成了一些事实上和实际的损失。因此需要加强在事前预防和事后修复方面的安全措施。
(2)对于隐蔽信道的检测和防护并应不只限于协议分析层面、网络数据传输层面。还应加强在终端恶意代码防护、员工安全意识培训、定期安全评估这些方面的管控手段。从攻击的源头和最终的落地等方面给予全面的防护。
(3)对于隐蔽信道的攻击检测,目前大部分的研究还仅限于理论研究未真正走出实验室, 市场上可供最终用户选择的安全防护产品依然非常罕见。与此相反,在互联网上用于隐蔽通信的工具随手可得。例如Covert Channel Tunneling Tool,dnscat2,Loki ICMP Tunneling,Super Network Tunnel,HTTP -Tunnel 等。
(4)对于最终机构用户而言,更多的检测方式是通过人工方式进行安全评估。但是,这种人工分析往往需要分析人员必须对网络协议、网络通信有深入的了解和丰富的实践经验。因此对于最终机构用户可能需要专业第三方机构的协助。
5 结束语
在信息安全领域, 由于隐蔽通信利用了OSI 体系模型中IP 协议、TCP/UDP 协议的安全漏洞,因此通过隐蔽信道在网络中建立隐蔽通信的可能性几乎是无止境的。国内外研究人员对此已经投入了巨大的努力。大多数的研究和讨论覆盖了不同的检测和预防技术理论。这些理论包含统计分析、特征分析、模型分析的方式。但即便如此,目前仍无一个完整的解决方案。此外对隐蔽信道的检测和防护还应从攻击链的角度来考虑,覆盖事前、事中和事后三个阶段。总体而言,对隐蔽信道进行检测和安全防护是一个十分复杂的难题。还需要继续开展广泛的理论研究和实践。