上海交通大学 赖骏尧 许 可 张文迪
指导教师: 宦 飞
摘 要
在RSA 2012年度会议中, DNS隐蔽信道被列为最重要的六大威胁之一。 网络隐蔽信道的隐蔽性使之成为APT攻击中的利器。 本作品基于Atlys和Nexys 3开发了一套基于隐蔽信道检测的内网安全控制系统。 对于时间隐蔽信道, 采用包间延时检测和硬件快速黑名单匹配; 对于一般的存储隐蔽信道, 则将其流量标准化; 对于DNS隐蔽信道, 使用数据挖掘进行行为特征分析, 并使用黑名单高速匹配消除威胁。 有效地阻断了内外网间网络隐蔽信道, 保证了内网信息安全。
关键字: 隐蔽信道; APT; Atlys; Nexys3; 内网安全
Abstract
On the 2012 Annual Meeting of RSA, DNS covert channel is listed as the most important one of the six threats. The hidden properties of the covert channels to become a weapon in the APT ( Advanced Persistent Threat)attacks pose a great threat to the internal network security requirements. In our work, we've utilized two FPGA development board, Atlys and Nexys 3, to develop a system based on the detection of covert channels within the network security control system. For the timing covert channel, we use packet delay detection and rapid hardware blacklist to match their interference; As for storage covert channel, we use the hardware to achieve normalization of data traffic to eliminate it; For DNS covert channel, we use data mining method for mining DNS covert channel characteristics in the behavior of signature analysis and matching hardware to its detection, and use the blacklist of high-speed matching to eliminate the threat. It effectively blocks the inside and outside the gateway covert channels, to ensure the information security of the Intranet.
Key words: covert channels;APT; Atlys; Nexys 3;security of the Intranet
1 背景介绍
1.1 需求概述
近年来, 随着各种安全防御工具、 IDS和防火墙技术的发展, 普通的攻击方式很容易被检测或者拦截。 于是攻击者们纷纷使用更隐蔽的方式来传递信息、 躲避监控, 网络隐蔽信道就是攻击者常用手段之一。 Lampson在他的论文 “A note on the confinement Problem” 中这样定义隐蔽信道: “如果一个信道既不是设计用于通信, 也不是用于传递信息, 则称该信道为隐蔽信道”。 所谓网络隐蔽信道, Serdar Cabuk定义其“是一种通过网络将信息泄露出去的方式, 该方式违反了系统的安全策略并很难被系统检测到”。
网络隐蔽信道危害巨大, 通过其可以绕过IDS和防火墙等传统安全手段进行远程控制, 泄露机密,非法访问。 尤其是利用DNS协议构建的隐蔽信道, 因其高度隐蔽性和广泛性, 给内网信息安全带来了严重威胁。 因此, 在RSA 2012年度会议中, DNS隐蔽信道被列为最重要的六大威胁之一。 网络隐蔽信道的隐蔽性使之成为APT(Advanced Persistent Threat高级持续性威胁)攻击中的利器, 对安全性要求高的内部网络构成极大威胁。
本作品通过流量标准化、 DNS行为特征分析和包间延时检测, 有效地限制和消除存储隐蔽信道和时间隐蔽信道。 同时采用物理层的独有线路和心跳反馈机制实现对设备的自我保护, 保证本设备安全可靠工作, 有效地阻断了内外网间网络隐蔽信道, 保证了内网信息安全。
1.2 相关研究
网络隐蔽信道根据信息隐藏方式不同可以分为网络存储隐蔽信道和网络时间隐蔽信道。 网络存储隐蔽信道利用网络中所传送的报文的各个字段隐藏信息, 例如IP包头的TOS、 DF字段、 ID字段、 IPv6报文的选项字段都隐藏信息。 网络时间隐蔽信道则是利用报文在网络中的时间特性, 包括报文间的时间间隔、 报文在网络中传递的时间等来进行信息的传输。
1987年, Girling最早研究网络隐蔽信道, 他发现了在局域网上存在的3种隐蔽信道。 网络隐蔽存储信道技术主要利用了TCP/IP协议数据包报头的冗余以及一些未使用的数据位等方式。 对这些字段的内容进行格式化, 利用这些字段构成的隐蔽信道就可以彻底消除。 Malan、 Handley等在其文章中就对如何格式化这些字段提出了相关建议。
Venkat Anantharam与Sergio Verd从信息论和排队论的角度提出单服务队列模型, 并分析了这一信道的容量, 为大量对隐秘信道的建模工作打下了良好的理论基础。 Borders等人开发了一个系统, 称之为网络活栓, 该系统能成功地检测出几种间谍软件和后门程序。
以上一些研究都为本作品提供了很好的理论依据, 可惜现有产品大多是软件层面的产品或算法研究, 在针对网络流量方面往往检测的实时性与保障正常网络性能二者不可兼得。 因此本作品采用硬件实现, 检测并防范网络中的隐蔽信道。 思路新颖有一定的前沿性。
1.3 解决方案
为了防范利用隐蔽信道的通信过程, 本作品的解决方案是开发一套对用户透明的、 使用FPGA开发的、 基于隐蔽信道检测的内网安全控制系统。 如图所示, 该系统分为两部分(外部设备Atlys开发板和内部设备Nexys 3开发板), 位于内网与外网之间, 是一套网关级设备, 如图1所示。
图1 内网安全控制系统拓扑位置
本系统连接在内网与外网之间, 对流经该设备的所有数据包进行分层处理, 对网络层(IP协议)、传输层(ICMP协议、 TCP协议、 UDP协议)数据段进行流量标准化处理, 对应用层(DNS协议)进行数据段的行为分析和特征匹配, 对数据包的时间特征进行记录分析, 从而有效地检测、 干扰和消除了隐蔽信道, 使内网数据得到更加安全的保护。
而且本系统从物理层面阻止了内网用户绕过本系统直接连接外网。 对内网用户只提供本系统的外部设备接口, 隐藏了外网网口。 内网用户需将内网路由器连接到本系统的内部设备, 再通过专用数据线连接到外部设备才可以连接外网。 另外, 本系统还采用心跳机制检测设备是否存活, 进一步加强了对设备自身的保护和对内网安全的保护。
1.4 作品特色
内外网物理隔离, 自主开发传输协议。 一般的硬件设备存在着难以防备物理攻击的问题, 有被攻击者绕过的风险。 本作品设计中的两块FPGA开发板使用设备提供的高速VHDC接口进行通信。 利用状态机并行性优点实现的全双工高速通信, 完全满足高速网络要求; 传输过程使用奇偶校验, 使得系统传输过程更加稳定。 同时, 还在一定程度上保障了系统设备物理上的安全性。
实时数据流量标准化处理。 用状态机实现的流量标准化, 即在传输的过程中, 将网络流量进行一定的处理, 取消一些网络协议中的歧义性, 使其变得更为标准。 其理论速度比用软件进行流量标准化快了2个数量级, 从而解决了一定程度上实时地处理流量与不影响网络性能不可兼得的问题; 同时, 本设计对不同长度数据包处理的时间增长是线性的, 避免了因处理超长数据包导致丢包的可能。
高速DNS隐蔽信道检测。 本系统使用软硬件协同处理的方法, 检测了可能存在的DNS隐蔽信道,既发挥了硬件并行存储及查找能力的优点, 又发挥了软件操作方便的优点。
利用数据挖掘训练作为辅助手段。 通过数据挖掘手段, 即采用遗传算法, 确定DNS隐蔽信道检测过程中行为分析的相关参数, 较之人工核定参数, 有速度快、 可靠性高等优点。
心跳机制实现设备的自我保护。 设备在工作时, 将不断反馈其工作状态, 便于管理员实时确定系统的安全性。 若设备遭攻击或由于其他异常而离线, 亦能在第一时间被发现。 这一体系进一步提高了系统的生存能力。
2 系统方案
2.1 基本原理
一般的危险对外通信会被防火墙阻止,但是利用隐蔽信道的对外通信却可以穿过或者绕过防火墙。 因此对于时间隐蔽信道, 采用黑名单匹配、 随机丢包、 重发等方法对隐蔽信道进行干扰, 对于存储隐蔽信道,则采用分层填充、行为分析、特征匹配、黑名单等方法,对隐蔽信道进行检测和消除, 如图2所示是对隐蔽信道的拦截示意图。
图2 对隐蔽信道的拦截示意图
2.2 整体设计
2.2.1 工作流程
设备工作分为硬件和软件两部分。 整体的逻辑流程如图3所示。 当数据包到来时, 首先由软件部分对数据包进行解析, 提取DNS数据包中的主域名和特征并传递至硬件部分的双端口RAM中, 然后将数据包写入双端口RAM。 如果是控制端发来的配置数据包, 软件将读取配置数据包中的配置信息并将信息写入GPIO, 硬件会读取配置信息并工作在相应的模式下。 硬件部分将双端口RAM中的数据包通过自定义并行传输协议从VHDC接口传递至另一块开发板, 同时用状态机对传输的数据包进行流量标准化。硬件部分还通过对保存在双端口RAM中的特征的分析构建黑名单和白名单, 对与特征匹配的数据包标记为丢弃处理。 硬件还处理对心跳信息的加密。 另一块开发板将接收到的VHDC接口传递的数据包放入双端口RAM中, 在软件部分丢弃标记过的数据包, 通过网卡发送出去, 并在固定的时间间隔发送心跳数据包给控制端。
图3 逻辑流程图
2.2.2 软硬件接口
软硬件的接口部分是双端口RAM和GPIO。 双端口RAM保存数据包、 DNS的特征和黑、 白名单, GPIO寄存器保存硬件和软件的工作模式。 通过RAM和寄存器的读写保证了软硬件的数据一致性。
模块之间的数据交互过程如图4所示。
黑名单和白名单都保存在双端口RAM中, 黑名单可以由程序检测的结果自动生成或管理员手动配置, 白名单则由管理员手动配置。 由于双端口RAM中数据断电会消失, 黑名单和白名单会保存在控制端主机上, 在下次使用时进行自动配置。
2.2.3 模块划分与功能
本作品充分利用FPGA高速处理数据的能力, 通过硬件实现的流量标准化、 DNS行为分析及特征匹配和黑、 白名单机制, 软件实现的DNS特征提取及PC辅助的时间隐蔽信道检测, 成功实现了实时对隐蔽信道的检测、 干扰和消除。 并利用FPGA的VHDC接口、 自定义通信协议和心跳机制实现了对设备自身的保护, 可以作为一个完整的产品给用户使用。
本作品的模块划分和功能如表1所示。
图4 模块间数据交互过程
表1 作品模块功能表
续表
2.3 指标
2.3.1 硬件部分
(1) 网络最大带宽。
两块FPGA开发板的工作频率都为100 MHz, Atlys上使用的是千兆网卡, Nexys 3上使用的是百兆网卡, 因此网络最大带宽为百兆。 VHDC数据线位宽为40位, 为了使传输过程更稳定, 本作品设定VHDC数据传输模块工作频率为25 MHz, 并使用全双工通信, 每个时钟周期可传输2字节数据。 因此理论上VHDC接口传输速率可以达到400 Mb/s, 可以满足网卡最大流量。
(2) 单个数据包延迟。
数据传输延时:在实际的传输过程,在每次状态机状态转移前添加了16个时钟周期的延时, 使数据线上数据更加稳定。可知,传输每字节数据需用=320ns。因此,传输时延=包长度×320ns。对单个数据包的传输延时如表2所示。
表2 单个数据包的传输延时
(3) 流量标准化延迟。
由于使用状态机, 流量标准化和传输是同步进行的, 因此流量标准化没有额外的延迟, 即与传输延时相同, 为包长度×320ns。
MicroBlaze工作频率为66.67 MHz, 如果用软件实现流量标准化则需要多次进行内存的读写和加法的计算, 由于MicroBlaze采用流水技术, 每条指令按一个时钟周期计算, 则软、 硬件对数据包流量标准化延时如表3所示。
表3 软、 硬件处理数据包延时对比
可以看出, 使用硬件进行流量标准化相比于用软件实现有很大优势, 而且处理的数据包很大时这种优势也是存在的。 对于一个网关级设备来说, 大部分收到的都是长度较小的数据包, 因此使用硬件实现可以近乎实时地对数据包进行流量标准化, 满足了实时性要求。
(4) DNS隐蔽信道指标。
DNS隐蔽信道的检测, 使用行为分析方法, 特征值的计算参数由遗传算法求取, 检测效果可靠。在此基础上, 采用软硬件结合设计, 特征值提取部分采用嵌入式程序设计, 查找黑白名单、 特征值表的过程采用FPGA硬件实现, 效率较高。 延时如表4所示。
表4 DNS隐蔽信道检测延时
2.3.2 软件部分
时间隐蔽信道指标:
通过对数据的采集和计算包间延时的标准偏差值, 可判断当前网络是否存在时间隐蔽信道。 当标准偏差值小于管理员定义的阈值时可自动生成黑名单, 通过对攻击工具产生流量的长时间采集分析后, 计算出标准偏差值的阈值一般应设定为小于1, 此时判断结果比较准确。
2.4 实现原理
2.4.1 硬件部分
2.4.1.1 并行传输控制协议
(1) 实现原理。
VHDC接口有40根针脚, 如图5所示。 将其划分为两组, 每组20根针脚,16根用作数据位,2根用作校验位,2根用作控制位。 两组针脚可以同时向对面传输数据, 实现了全双工通信, 不会导致针脚的争用。
图5 VHDC针脚划分
(2) 算法设计。
本协议使用状态机实现, 从双端口RAM中取出数据长度为32位, 分成两次发送。 为了消除亚稳态, 使用了25MHz的时钟频率, 并在每次状态机状态转移前增加了16个时钟周期的延迟。 用两个控制位的状态控制发送的过程, 如表5所示。
表5 发送状态控制表
用两个控制位的状态控制接收的过程, 如表6所示。
表6 接收状态控制表
在数据发送之后, 还采用了异步信号的同步处理和奇偶校验, 保证了传输数据的稳定性及正确性。
2.4.1.2 流量标准化
(1) 隐蔽信道对NIDS的影响:
网络入侵检测系统(以下简称NIDS)长久以来存在着一个问题, 即攻击者可以通过网络协议存在的为数众多的有歧义的定义, 来绕过通过被动检测网络流量来防范主机安全的NIDS。 当今利用这一漏洞绕过NIDS的攻击大致有三种手段:
1) NIDS缺乏对某些允许分片发送的协议的数据包进行的完整的检测。 例如, IP协议的分片标识允许攻击者将攻击的流量分片发送, 从而绕过NIDS的检测。 而负责接收的系统终端会按照IP协议将这些分片的数据包组装起来, 仍旧能实现攻击效果。 根据Ptacek和Newsham对几种知名的商业NIDS系统的测试没有系统能检测出这种模式的攻击。
2) 由于网络协议有时并不能准确说明一个数据包的完整行为, 特别是当出现非常规的情况时, NIDS就会由于无法确定一段数据流可能对用户造成什么样的影响。 例如, 当用户收到多个标识重复而内容有略微不同的IP数据包时, 有些主机会倾向丢弃晚收到的数据包, 而有些主机则保留数据段开头的重叠部分等。
3) 在某些情况下, NIDS可能甚至都不知道自己收到的数据包是否会被用户主机收下。 例如, NIDS收到的数据包的存活时间(TTL)字段的跳数可能已经不足以达到目标主机。 如果攻击者能准确地控制数据包是否可以被目标主机收到, 就可以发送无效的流量来混淆NIDS的工作(如图6所示)。
图6 利用隐蔽信息绕过IDS的示例
(2) 工作原理。
由于NIDS没有充分考虑网络协议的细节导致存在绕过的可能性, 为了保护NIDS, 本系统采用了流量标准化的处理方式。 考虑到NIDS几乎不可能细节到每个终端主机的应用程序的应用状态, 本作品将流量标准化的工作集中在网络层(IP, ICMP)以及传输层(TCP, UDP)上。
对于每个协议的头部字段, 作品充分考虑到了其可能的取值、 互相间的影响以及攻击者可能可以利用的方式; 流量标准化可以抵御一部分的基于隐蔽信道的攻击, 也可以配合NIDS检测出更多的恶意流量。
限于篇幅以及重复性的角度考虑, 本设计报告将详细分析IP(version 4)的协议头部的各种情况, 并将随后给出用同样的分析方法得出的UDP、 TCP以及ICMP协议的标准化的实现。
Version. 流量标准设备应该只允许NIDS能够识别的版本(V4或V6)通过。
Head len. 很有可能接收到的数据包的头部长度字段是与事实不符的, 有些系统可能会收下头部长度与实际不匹配的数据包。
解决方法: 若头部长度字段小于20字节, 则该数据包应该被丢弃。 若头部长度超过数据包长度,则数据包也应该被丢弃。
影响: 只有不规范的数据包被丢弃, 没有副作用。
Total length. 若总长度字段与实际包长度不符, 一些主机会选择将其中之一作为数据包真正长度来进行后续处理, 有些主机则会丢弃该数据包。
解决方法:丢弃total len大于链路层长度的数据包,若total len小于链路层长度,则截短这个包。
影响: 只有不规范的数据包被丢弃, 没有副作用。
IP Identifier. IP包的标识, 由于其本身没有意义, 故可以被用来传递信息。
解决方法: 对所有进入本系统和系统发出的IP ID进行加解密操作, 防止该字段被用来传递信息。
影响: 对于一些特定的、 要求接收方返回接收到的数据包的IP ID给发送方的诊断程序可能无法工作。
Reserved bit. IP数据包中在“IP Identifier”和“DF”之间的保留位, 必须被置为零。
解决方法: 将该位置零。
影响: 协议要求保留位被置零, 无副作用。
Don' t Fragment(DF)flag. 若DF位被置高, 而网络中各个链路MTU的标准又不相同。 攻击者可以通过将大于链路MTU的长度的包的DF位置高, 蓄意造成某些数据包在传输过程中被丢弃。
解决方法: 将该位置零。
影响: 违反了“Path MTU Discovery”协议, 但在大部分的网络环境中, 该方法不会引起严重的问题。
Time to live(TTL). 如同操作DF位的高低一样, 攻击者可以通过操作TTL字段来控制被NIDS监控的数据包是否能达到目标主机, 如图1所示。 一般而言, 让NIDS计算通过每个终端节点的跳数, 并且忽视TTL小于这个数的数据包的方法是可行的。 可是实际中, 这意味着NIDS要维持许多状态, 并且也有可能内部节点的路由发生了改变, 使得NIDS的计算出现偏差。
解决方法: 简单地给每个数据包的TTL增加一个值。
影响:使一些利用TTL来追踪线路(tracert)的功能失效,对原本正常的网络行为造成些许影响。
Protocol. 决定传输层所采用的协议, 如TCP或UDP协议。 管理员可以配置标准化设备来丢弃一些非常用的协议, 使得NIDS能更好地工作。
Header checksum. 校验和错误的数据包也有可能被一些终端主机收下, 虽然这可能不太常见。
解决方法: 管理员可以配置标准化设备来丢弃这样的数据包, 这样就不用主机或者NIDS来验证校验和。
影响: 一般而言, 没有影响。
Source address. 若IP数据包的源地址是无效的, 终端主机可能会丢弃数据包。 比如回环地址、 多播地址、 广播地址以及E类地址。
解决方法: 丢弃该数据包。
影响: 丢弃了构成不规范的数据包, 无副作用。
Destination address. 如同源IP地址, 若IP数据包的目的地址是无效的, 终端主机可能会丢弃数据包。 比如回环地址以及E类地址。
解决方法:丢弃该数据包。另外,标准化设备应该也能将目的地址不是内网IP的数据包给丢弃。
影响: 丢弃了构成不规范的数据包, 无副作用。
IP options. IP数据包的选择项字段可能会影响到网络主机的行为。
解决方法: 管理员可以配置标准化设备抹除接收到的数据包的IP选项字段。
影响: 对于一般的网络行为不会造成太大影响。 对于一些诊断工具, 则有可能带来隐患。
Padding. 接受主机将会忽视IP数据包的填充字段, 但是一个隐蔽信道则可以像其他没有利用到的自段一样通过这一字段来传递信息, 本系统的流量标准化设备也应该解决这个问题。
解决方法: 将填充字段全部清零。
影响: 正常通信中该字段会被忽视, 无副作用。
(3) 流量标准化实现。
具体实现规则见附录A。
(4) 设计实现。
本模块使用状态机实现, 将输入的流量进行实时的标准化。 传输数据时每个时钟周期处理32位的数据。 工作时时钟频率为25 MHz, 考虑到要接受VHDC接口传来的异步信号需要经过一些时间稳定,加入了较长的等待时间, 实际工作时频率大概在2 MHz左右, 因此传输速率约为32×2M=64 Mb/s。
2.4.1.3 DNS隐蔽信道的检测与消除
(1) 行为分析。
对于应用层隐蔽信道的检测, 主要有三种方式: 特征分析(signature-based detection)、 协议分析(protocol-based detection)和行为分析(behavioral-based detection)。 行为分析方法, 着眼于对使用者的行为特征进行建模, 使用分析的方法检测使用者行为是否偏离正常行为, 从而做出判断。
行为分析以使用者的网络行为为基础, 记录使用者的异常行为, 若异常行为积累到一定阈值时, 引发检测报警事件。 行为分析的方法适用性强、 误检率低, 比较适合本项目中对DNS隐蔽信道的检测。
(2) 行为特征建模。
通过对不同数据来源的DNS数据流量(数据来源: 上海交大网络中心2012年5月31日部分DNS流量(共计6086194条), 以及使用的DNS隐蔽信道构建工具Dnscat(326769条)、 Dns2tcp(30322条)、TCP-over-DNS(138837条)等产生的DNS隐蔽信道流量。)进行分析, 可以提取出以下特征。
UDP载荷长度, 即DNS数据包UDP载荷部分的长度, 如图7所示。
图7 DNS查询数据包-UDP载荷长度
DNS协议的设计目标, 并不是作为一个大量传输数据的信道而使用, 正常的DNS数据包仅包含少量的字节数, 用以请求和回答。 故正常DNS数据包的UDP载荷长度较短, 一般小于50 Byte。 而DNS隐蔽信道, 为将DNS协议用作传输数据, 需要DNS数据包包含一定的字节数, 导致了DNS数据包的UDP载荷长度严重变大, 明显偏离了正常值。
经过对数据包的分析, 可以进一步地发现, UDP载荷长度这一特征, 在DNS查询报文中体现得比较明显, 而在DNS回答报文中, 则并不明显。 这是由于正常的DNS回答报文中, 往往并不只包含一条回答资源记录, 可能包含若干条回答资源记录和授权资源记录。 这导致了其UDP载荷长度明显变长。
QNAME子域名长度, 即DNS查询和回答报文中的QNAME(查询名), 扣除其主域名部分后的长度, 如图8所示。
图8 QNAME子域名长度
正常情况下, 为了用户的使用方便等考虑, 子域名长度较短。 在所分析的正常DNS流量中, QNAME子域名长度短于15Byte的查询占总流量的93.78%。 而对于DNS隐蔽信道, 其上行数据需全部装载入QNAME子域名中, 导致QNAME子域名长度大幅加大。 两者构成了明显的偏差。
同为DNS隐蔽信道为装载数据而产生的特征,QNAME子域名长度和UDP载荷长度作为两个特征,它们存在机理和表观上的相似性,且QNAME子域名长度特征更为明显。故可不采用UDP载荷长度特征。
QNAME点的数量, 即QNAME中标示符的个数, 亦即书写为域名时域名中点的个数。
DNS协议中规范, QNAME中标识符长度限制为0~63, 因此QNAME子域名过长, 会导致点的数目增加。 另外, 由于DNS隐蔽信道需对信息进行编码以装入QNAME, 某些DNS隐蔽信道使用点作为编码符号, 亦会导致点的数目增加。 而正常DNS流量的统计特征指出, QNAME点的数量不超过4的查询数, 占总数的91.1%, 特征较为明显(图9)。
QTYPE查询类型, 即DNS查询的查询类型, 如图10所示。
图9 QNAME点的数量
正常DNS查询中, 查询类型为“A(IPv4地址)”和“AAAA(IPv6地址)”的查询最为常见, 占总查询数的百分比可达91.7%以上。 而在DNS隐蔽信道的构建中, 并不常使用这两类查询, 其原因在于对于这两类查询的回答报文比较简短, 难以装载大量信息。 不同的DNS隐蔽信道软件采用的查询类型详见表7。
图10 正常DNS查询类型分布
表7 常见DNS隐蔽信道软件采用的查询类型
QNAME字符频率, 即QNAME中各种字符出现的频率, 如图11所示。
图11 QNAME字符频率特征
文献中指出,正常的DNS查询中,QNAME的字符频率以自然语言中相同的模式, 服从于齐普夫定律(Zipf's Law)。而DNS隐蔽信道中,QNAME实际为编码的载荷,其字符频率呈现随机分布的规律。
为使用QNAME字符频率作为特征, 需要记录一定量的字符特征信息, 并不适合本项目使用FPGA开发实现。
通过上文分析, 可以选取上述五个特征中的三个, 即QNAME子域名长度、 QNAME点的数量、QTYPE查询类型, 作为描述用户行为特征的指标, 建立描述用户行为特征的模型。 对于QTYPE查询类型, 可将其转化为二元属性, 便于后续的数据挖掘过程。 DNS行为特征指标列表描述如表8所示。
表8 DNS行为特征指标
(3) 行为特征数据挖掘。
为使用以上三个特征恰当地描述用户行为, 并最终应用于本项目的设计, 还需根据特征指标计算特征值。 由于运算平台是FPGA开发板, 无论是嵌入式处理器MicroBlaze还是使用硬件电路实现, 使用过于复杂的计算公式, 会影响整体的运行效率, 因此需要使用较为简单的公式以发挥最佳性能。 拟定采用如表9所示表达式作为特征指标的特征值qi的计算式,并取特征值。
表9 DNS行为特征指标的特征值
阈值、 系数等公式参量需要进行确定。 传统人工分析数据集, 提取数据集统计量来求解参数的过程, 较为复杂耗时且易出错。 且通过统计量求解参数过程, 需要对该项目背景充分了解, 否则容易错误估计参数, 带来许多麻烦。 因此, 本作品采用数据挖掘算法, 通过对数据集数据的分析, 结合特征值公式自动求解参数, 速度快且可靠, 避免了人工求解的诸多不便。 本项目中采用的是数据挖掘算法是遗传算法。
遗传算法,是根据达尔文进化理论“物竞天择,适者生存”而提出的一种强人工智能算法。该算法先在解空间内随机生成若干个解xi构成进化池,之后不断使用遗传算子(x)生成新解,并评估函数T(x)进行筛选删除相对次优的解,提高进化池的平均优度,直至得出令人满意的解。其主要优点在于,仅需给定评估函数T和遗传算子,就可以对问题进行有效求解,不需过多的背景知识,且鲁棒性极强。
本项目中使用遗传算法, 具体定义如下。
解以参数构成的5元组表示,即(l0,al,d0,ad,at)。
评估函数T定义如下, 使用解中的参数代入特征值计算公式, 分别求取由1000个DNS隐蔽信道数据包构成的测试集SM、2000个正常DNS数据包构成的测试集SB的特征值总和。令
遗传算子定义如下,采用繁殖遗传算子如下,式中θi为变异因子。
使用评估函数T和遗传算子. 进行遗传算法求解, 得出最优解如表10所示。
表10 特征值参数最优解
(4) 算法实现: MicroBlaze嵌入式部分。
分析DNS数据包格式,涉及较多的随机内存读写操作,使用FPGA实现难度较大,而速度提升不明显,而使用MicroBlaze嵌入式编程实现方便灵活,且执行速度亦不慢。因此此部分MicroBlaze嵌入式编程实现。
使用该部分的功能是解析DNS数据包。DNS协议采用UDP协议通信,其数据存在于UDP数据包的载荷部分。DNS数据包分为DNS查询报文和DNS回答报文。依前文所述,DNS查询报文特征较明显,且DNS隐蔽信道软件遵循正常DNS协议“查询-回答”的模式,若能阻断其查询报文,则其双向通信必然无法进行。因此仅需解析DNS的查询报文,作为行为分析的依据及阻断通信的方式已经足够。DNS查询报文的特征是,其UDP目标端口号为知名端口53,当设备收取到该条件数据包时,调用DNSfinal函数进行处理。
DNSfinal函数按DNS报文格式解析数据包, 如图12所示, 首先读取5、6字节位置的 “问题数”,再根据问题数依次解析13字节开始的“查询问题”字段。 “查询问题”字段中的查询名为要DNS查询的名字(QNAME), 它由一个或者多个标示符序列组成。 每个标示符以首字节数的计数值来说明该标示符长度, 每个名字以0结束。 初次遍历无需关注每一个标示符的内容, 仅需找到主域名所在的标示符位置, 因此仅需读取标示符首字节的计数值。 如此, 可以快速定位主域名部分, 在这个过程中, 还可获得QNAME子域名长度及QNAME点的数量这两个特征。 此后读取QNAME后的2字节, 即可获得QTYPE查询类型特征, 即可计算该DNS查询报文的特征值Q, 将其与QNAME主域名及查询者IP地址一并传入DNS协处理器。
图12 DNS数据包格式
MicroBlaze嵌入式编程部分除特征提取外, 还负责管理DNS黑名单、 白名单及与控制台程序通信的功能。 其工作方式是, 根据DNS协处理器的返回结果及控制台的控制指令, 将特定QNAME主域名存入双端口RAM中特定位置, 供DNS协处理器读取。
(5) 算法实现: DNS协处理器。
DNS协处理器, 主要执行DNS黑名单、 白名单的匹配, 和用户行为特征记录的功能。 其主要工作原理是, 使用大量大位宽寄存器组, 进行循环高速比对。 每一个时钟周期, 可以完成DNS黑名单、 白名单或用户特征表项中一个完整项的比对。 较之与嵌入式C语言使用strcmp函数进行比对的方式, 不但节省了读取内存的时间, 而且由于比较位宽上的优势, 比较运算的速度成倍提高。
DNS协处理器内部维持16个DNS黑名单或白名单表项、64个用户行为特征记录, 这些记录均以160位的寄存器方式实现, 存取快速、 比较高效。 DNS黑名单、 白名单由MicroBlaze嵌入式程序结合管理控制台程序管理, 管理员可以灵活地配置。 行为分析算法误检率低, 故白名单表项需求量极小, 又由于隐蔽信道的罕见性和时间集中性, 黑名单表项需求量亦小, 故16条表项是足够的。 用户行为特征记录, 以查询者IP和QNAME主域名为键, 特征值累积和为值, 构成数据字典数据结构。 表项的淘汰方式采用最久不使用淘汰算法(NUR-Not Used Recently), 经实验64个表项能完全满足大小为256的子网中用户特征的存储需求。
DNS协处理器的工作过程如下述。
1) 读取双端口RAM中指定位置, 获取待处理数据(包括: 特征值Q、 QNAME主域名和查询者IP地址)。
2) 将QNAME主域名依次比对DNS黑名单、 白名单。 若存在匹配项, 则返回查询结果, 工作终止, 否则进入步骤3。
3) 以QNAME主域名和查询者IP地址为键, 查找用户行为特征记录。 若有匹配项, 则将特征值Q累加至其值, 并返回特征值累积和, 工作终止, 否则进入步骤4。
4) 若特征值Q=0, 返回特征值累积和=0, 工作终止(即特征值Q=0时, 不记录该条用户行为特征), 否则进入步骤5。
5) 采用最久不使用淘汰算法, 选择一个表项来存储此条记录, 将其键更新为QNAME主域名和查询者IP, 将其值更新为特征值Q, 返回特征值累积和=Q, 工作结束。
此外, 每一分钟, DNS协处理器将自动将用户行为记录中的特征值累积和减半, 作为时间累积效应的平滑处理。
根据DNS协处理器的不同返回值, MicroBlaze嵌入式程序将作出不同的相应, 对于DNS黑名单、白名单的匹配结果, 将相应对DNS查询报文做出放行和丢弃处置。 对于返回的特征值累积和, 则将其与特征值累积和阈值进行比较, 判断其行为特征是否偏离正常。 对于偏离正常的用户行为, 将做出丢弃DNS查询报文的处置, 并将QNAME添加入DNS黑名单。
(6) 工作流程。
DNS隐蔽信道的检测与消除的工作流程, 如图13所示。 图中白色背景为MicroBlaze嵌入式编程实现部分, 淡蓝色背景为DNS协处理器实现部分。
2.4.1.4 心跳保护机制
在本作品的系统中, 通过外部设备接入外网, 再经由连接内网的内部设备连接外部设备进行网络连接, 并且对内网存在的隐蔽信道进行检测以及保护。 但是, 如果在设备运行过程中被人拔出并连接自己的设备, 则会使整个系统失效。 因此, 本作品采用心跳机制保护硬件。
心跳机制即每隔一段固定时间发出一个简单的信息告诉服务器控制端自己正在正常工作。 心跳包还会包含一些简单的工作状态的信息。
(1) 心跳数据包。
心跳数据包由一个以太网广播数据包构成如图14所示, 数据内容为事先协定的协议号, 加上8字节的加密信息。 加密信息包括设备工作的状态信息, 以及设备维持的一个计数序列号。 服务器控制端在收到心跳数据包后解密该字段, 并比对该序列号, 以此来验证心跳包的真实来源。
加密与解密的密钥可以事先协定, 也可以通过服务器控制端配置的方式发送给设备。 关于加密算法的选择, 则采用了RC4算法作为心跳数据包的加密算法。
当服务器控制端在一段时间内没有接受到任何合法的心跳数据包时, 即认为该设备可能遭受到物理攻击, 将警告管理员进行处理。
(2) RC4加密算法。
RC4是Ron Rivest设计的公开的加密算法, 算法具有很高的非线性。 该算法在硬件上执行的效率很高,加密64位数据需要经过16个时钟周期,即经过=320ns,且由于FPGA的并行性在硬件上对系统整体没有任何影响。
(3) 工作流程。
心跳机制工作流程如图15所示。
图13 DNS隐蔽信道检测与消除工作流程
图14 心跳数据包内容
图15 心跳机制工作流程
2.4.2 软件部分
2.4.2.1 时间隐蔽信道的检测
(1) 时间隐蔽信道原理。
对时间隐蔽信道的研究最早可以追溯到Venkatraman等人的研究, 指出了时间隐蔽信道的五种通信特征。
随着时间隐蔽信道的诞生, 一些检测以及防护的手段也被提出。 比如Kang和Moskowitz提出了网络泵, 可以显著地抑制网络时间隐蔽信道的吞吐量。 但是使用类似的做法会极大地影响网络性能。
由于时间隐蔽信道应用场合非常少, 大部分研究都在理论层面; 并且考虑到开发板的性能问题, 本作品将时间隐蔽信道的检测算法部署在软件上, 由管理员实施检测, 并对可疑链路进行封禁。
(2) 关于包间延时规律的检测算法。
根据S.Cabuk等人的论文中指出, 在图16中显示了合法数据包间延时分布y轴是包到达的间隔时间, x轴是包的编号。 包间延时的分布是杂乱无章的。 图17是时间隐蔽信道的包间延时分布, 可以看出与合法数据包的包间延时相比具有统计规律。 假设观测2000个数据包, 然后对包间延时进行分析,来找出暗含在时间隐蔽信道的数据流的规律性。
图16 合法的数据包的包间隔
图17 隐蔽信道的包间隔
基于包间规律的算法是为了检查包间延时是否保持一致。为此将数据分成大小为w个数据包, 不重叠的窗口内,对每个窗口i,计算窗口内包到达时间的标准偏差σi。然后,对两窗口i<j,计算它们的差值。最后,再次计算那些两窗口差值组成的数据的标准偏差。具体过程用下面的方程来表示:
STDEV是标准偏差。
(3) 算法参数确定及检测。
对时间隐蔽信道检测的结果如表11所示, 在不同的窗口大小情况下, 合法数据流的标准偏差值和时间隐蔽信道标准偏差值的差值很大。 且可以发现, 随着窗口不断变大, 合法数据和时间隐蔽信道的标准偏差值都在减少。 因为窗口越大, 那么窗口内的数据规律性表现得越强, 随机性越小, 标准偏差值也就越低。 说明基于规律性的检测算法是有效检测出时间隐蔽信道的。 因而, 可以通过训练大量合法数据包和时间隐蔽信道数据包来统计相应的标准偏差值, 然后划分闭值, 用于时间隐蔽信道的检测。
表11 合法流量和时间隐蔽信道的检测算法结果
经过几次实验结果表明, 在窗口大小为50左右能得到比较好的检测效果。
(4) 工作流程
具体工作流程如下: ①将包延时数据按照事先设定的大小w, 按顺序分成N个窗口。 ②对每个窗口的包间数据进行计算标准差σi。③对于任意两个窗口i和j,且i<j,计算它们的差值,i<j,∀i, j。 ④然后再对所有的差值做标准差。 ⑤利用实验所得的标准差确定阀值, 具体流程见图18。
图18 检测时间隐蔽信道工作流程
2.5 硬件框图
2.5.1 核心模块
核心模块system_ top中封装了所有的子模块, 如图19所示。 从内存地址读到MicroBlaze放入双端口RAM中的网络数据包后依次经过3个模块, DNS模块的硬件比对特征和黑白名单部分, 流量标准化模块, 并最终经由VHDC传输模块完成内外部设备间的互相传输工作 (图20)。
图19 核心模块封装图
图20 核心模块内部结构图
2.5.2 流量标准化模块
流量标准化模块的工作流程如图21所示, 该流程即为模块所使用的状态机示意图的简化版本。
2.6 软硬件协同
软硬件协同主要指硬件与MicroBlaze编写的软件的协同部分。
2.6.1 内部设备软硬件协同
如图22所示, 内部设备软硬件协同依靠双端口RAM实现。
2.6.2 外部设备软硬件协同
如图23所示, 外部设备的硬件工作与软件流程相对来说比较多, 除了数据传输功能外, 还加入了DNS协处理的模块, 而该模块也有与软件协同的需求, 故同样采用双端口RAM与软件连接, 协同工作。
2.7 软件流程
本作品中纯软件部分包括时间隐蔽信道的检测以及一个Web配置的服务器。
2.7.1 检测时间隐蔽信道
对时间隐蔽信道的检测以及相应的配置工作, 如图24所示。 在服务器控制端发现隐蔽信道后会将通信链路显示在配置界面上, 管理员可以手动选择是信任该链路还是将该链路封禁。
2.7.2 Web配置
本作品为更加方便的管理开发了相应的Web配置服务。 管理员可通过登录Web页面远程配置本系统。 配置的内容包括设备的开关、 心跳的查看、 流量标准化选项以及DNS域名黑、 白名单的添加删改和检查可疑的时间隐蔽信道并加以干扰等。
配置页面采用了Metro UI的风格, 简洁明快、 功能齐全、 配置方便, 如图25~图30所示。
图21 流量标准化模块工作流程图
图22 内部设备软硬件协同示意图
(a) 内部设备硬件流程; (b) 内部设备软件流程
图23 外部设备软硬件协同流程
(a) 外部设备硬件流程; (b) 外部设备软件流程
图24 时间隐蔽信道和检测和组织的流程
图25 Web配置登录界面
图26 Web配置页面总览
图27 Web配置流量标准化页面
图28 Web配置DNS隐蔽信道管理页面
图29 Web配置时间隐蔽信道管理页面
图30 Web心跳日志管理页面
3 系统测试方案
3.1 应用测试
3.1.1 网络环境影响测试
将本系统加入网络环境后, 对日常用户使用的各种网络协议的使用进行了测试, 结果如表12所示。
表12 网络环境影响测试表
结果分析: 本系统对网络环境无影响。
3.1.2 流量标准化测试
表13 流量标准化测试表
结果分析: 流量标准化模块能被正常运行。
3.1.3 工作模式配置测试
表14 工作模式配置测试表
结果分析: 工作模式配置功能正常运行。
3.1.4 DNS隐蔽信道处理测试
表15 DNS隐蔽信道处理测试表
结果分析: DNS隐蔽信道处理功能正常运行。
3.1.5 时间隐蔽信道处理测试
表16 时间隐蔽信道处理测试表
结果分析: 时间隐蔽信道处理功能正常运行。
3.1.6 心跳机制测试
表17 心跳机制测试表
结果分析: 心跳机制可正常运行。
3.2 DNS隐蔽信道检测有效性测试
3.2.1 测试方法
在DNS隐蔽信道检测有效性测试中, 将分别使用黑、 白名单数据以及经过数据挖掘测试出的最佳阀值, 来检测此检测算法对DNS隐蔽信道以及正常网络产生的DNS流量的区分能力。
3.2.2 测试数据
数据来源为上海交大网络中心2012年5月31日部分DNS流量(共计6086194条), 以及使用的DNS隐蔽信道构建工具Dnscat(326769条)、 Dns2tcp(30322条)、 TCP-over-DNS(138837条)等产生的DNS隐蔽信道流量, 得到以下测试情况, 如图31所示。
3.2.3 结果分析
如图31所示, 不同的DNS隐蔽信道工具所具有的特征也不完全相同, 但和正常上网产生的DNS流量相比, 都各自有非常明显的特征。 事实上, 本作品通过数据挖掘手段训练出的模型, 可以识别以上出现的所有活动的DNS隐蔽信道工具; 而对于正常的网络活动, 会出现极个别的接近既定阀值的连接,但没有出现误报的情况。
3.3 DNS隐蔽信道检测准确度测试
3.3.1 测试方法
DNS隐蔽信道检测准确度测试, 采用黑盒测试方式。 应用前文所述算法对大量测试数据进行检测,并对检测结果进行比对分析, 以观察该算法的误检率检测与成功率。
图31 DNS流量特征分布图
3.3.2 测试数据
数据来源为上海交大网络中心2012年5月31日部分DNS流量(共计6086194条)。 这部分数据视作正常DNS流量, 用于测试算法的误检率。 以及使用的DNS隐蔽信道构建工具Dnscat(326769条)、Dns2tcp(30322条)、 TCP-over-DNS(138837条)等产生的DNS隐蔽信道流量。 这部分数据作为DNS隐蔽信道流量, 用于测试算法的检测成功率。
3.3.3 结果分析
来自上海交大网络中心的DNS流量, 以查询者IP地址及QNAME主域名为键, 共有318432条用户行为特征记录, 其中15条用户行为特征记录特征值累加和超过设定阈值, 被检测为DNS隐蔽信道。 因此本算法的误检率约为0.0047% (表18)。
对于Dnscat、 Dns2tcp、 TCP-over-DNS三款软件产生的DNS隐蔽信道流量, 本算法均能成功检测,可见本算法对常见DNS隐蔽信道软件的检测成功率是令人满意的。
表18 DNS隐蔽信道检测准确度测试表
3.4 时间隐蔽信道检测有效性测试
3.4.1 测试设备
时间隐蔽信道的检测有效性主要是软件层的工作, 故使用新的测试主机进行测试, 对其准确率影响不大。 设备主要参数如下:
操作系统 Microsoft Windows XP SP3
CPU 3.20 GHz双核
内存 2 GB
3.4.2 测试方法
在本测试模块中, 用设定好的窗口值大小(w=50), 分别对正常的网络流量以及已知恶意软件产生的流量进行包间延时规律的检测。 理想情况中, 正常网络连接的包间延时很不规律, 最终标准偏差值应该比时间隐蔽信道产生的流量的标准偏差值大很多。 如果能将两者明确地区分开来, 则可以证明此检测算法在一定程度上是可行的。
3.4.3 测试数据
本测试中, 正常网络流量数据来源由上海交大网络中心提供。 异常流量数据由抓取开源时间隐蔽信道攻击软件造成的流量(约2小时)获得, 得到结果如图32所示。
图32 网络连接的包间延时标准差值
3.4.4 结果分析
由于使用的测试工具发送数据的时间间隔是根据信道质量自适应的, 所以标准偏差值有时会比较大且有浮动。 但即使如此, 也可以看出正常连接与时间隐蔽信道连接的包间延时的规律分布存在着巨大差别。
在实际系统运行过程中, 通常隐蔽信道在建立连接后10~20秒内可以被本系统检测出为可疑连接。
专家点评
参赛作品针对网络通信中存在的绕过防火墙与安全检测系统的现象, 充分利用XiLinx的丰富资源, 设计并制作了由两块FPGA开发板组成高速VHDC通信接口, 保障了内外网络设备的物理隔离。作品利用自主设计硬件平台所具有的实时并行存储及快速查找的优点, 结合软件实现了高速DNS隐蔽信道检测, 同时还开发了标准化处理、 数据挖掘、 自我保护等相关软件, 具有软硬结合、 协同处理的特点。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。