上海交通大学 白 巍 贺宇轩 潘道欣
指导教师: 邹福泰
摘 要
本项目着眼于基于网络流量的恶意软件检测, 针对现有分析技术在网络行为分析上的欠缺, 设计并实现了专注于网络特征的恶意代码自动化分析平台。 我们设计的网络特征码生成算法, 基于广义后缀树、 Color Size Set和关键词签名树, 精度明显优于现有算法。 项目基于OpenStack云计算平台实现了可伸缩的样本自动调度。 本系统指纹提取自动化特性, 能大幅降低人工样本分析的工作量, 并与企业网络中蜜罐、 IDS与防火墙联动, 为APT攻击防御提供一个有效的解决方案。
Abstract
This project focuses on malware detectionfounded on network traffic. We designed and implemented an auto-mated analyzing platform based on network signature. The network signature generation algorithm we designed, basing on Generalized Suffix - Tree, Color Size Set and Keyword-based Signature Tree, are significantly better than existing algorithms.
The project takes advantage of OpenStack, the cloud - based computing platform, to build an elastic sample schedule system. The system can automatically extract fingerprints, which can reduce the workload of the artificial sample analysis, and cooperate with honeypot, IDS, and firewalls to provide an effective solution for Advanced Persistent Threat(APT)attacks.
1 概述
1.1 项目背景
随着Internet的发展, 以木马、 蠕虫、 间谍软件、 僵尸网络为代表的恶意代码日益猖獗。 然而, 目前许多人对反病毒的理解依然停留在单机层面上, 而现代的恶意软件已不满足于在主机上对用户的计算机造成破坏, 更希望通过互联网来达到控制用户主机、 窃取用户信息的目的, 甚至目标直指企业、 政府与军队的机密数据。
目前针对病毒的网络特征检测, 主要通过网络防火墙、 网络入侵检测系统(NIDS)和网络入侵防御系统(NIPS)。 它们被部署在网络出口, 能够对一个机构的网络进行全面监控, 而不需要像反病毒软件那样安装到每个主机设备上。 传统的网络防火墙采用IP地址黑名单的方式进行通信阻断, 对新型威胁的响应迟缓, 并且无法检测复杂的应用层协议。 而网络入侵检测和防御系统, 则更加依赖于精确的网络特征码。 与反病毒软件使用特征码进行文件查杀类似, 病毒的网络特征码是在网络流量中唯一确定某种病毒网络通信的“指纹”特征。 编写NIDS规则的过程与反病毒软件厂商维护病毒库的工作相似, 需要专业的工程师进行人工的样本分析。 众所周知, 病毒的样本分析与特征提取是一个需要消耗巨大人力并且复杂而枯燥的工作。
尽管反病毒厂商已开发了一些工具来帮助病毒分析工程师处理样本, 例如, 用于样本识别与分类的多引擎查杀和PE结构分析, 以及样本执行监视的沙盘(Sandbox), 但是, 我们注意到, 这些自动化分析工具大多针对的是恶意程序的文件特征, 以及在操作系统上的本地行为。 现有的自动化分析系统对样本网络通信的处理非常薄弱, 仅能够进行常用网络协议的解析, 缺乏网络行为模式的识别, 从而未能将复杂的网络特征码提取工作简化。
1.2 功能与创新
针对现有样本分析技术和系统的缺陷, 我们设计并实现了NetAnalyzer, 一套针对网络特征的恶意代码自动分析平台。 NetAnalyzer利用云计算和虚拟化技术自动激活并监控恶意软件的网络通信, 进行详细的流量解析与网络行为模式识别。 我们特别设计的指纹提取算法, 能够自动产生与样本相对应的网络特征码(Snort规则)。 经过实验验证, 我们算法产生的规则能精确匹配恶意程序的网络通信, 并在实际使用中具有极低的误报。
本系统的主要创新点在于:
1) 设计了一种网络特征码(Snort规则)自动生成算法, 基于广义后缀树、 Color Size Set和关键词签名树算法, 其精确度要明显优于现有的AutoGraph和PolyGraph等技术。
2) 实现了一套全面的网络行为模式分析系统, 能够自动识别恶意软件的各种控制通信与攻击行为, 分析、 产生样本网络行为模型, 并以图形方式直观地展示。
3) 利用OpenStack IaaS云计算平台搭建了一个恶意软件自动化分析平台, 实现了自动的虚拟机调度与样本分发、 执行和流量截取, 具有可伸缩与高效的特点。
NetAnalyzer的样本模拟与指纹提取自动化的特性, 能够大幅降低安全厂商病毒分析团队的工作量,自动生成恶意代码的Snort规则集。 同时, NetAnalyzer与企业网络中的蜜罐、 IDS和防火墙系统联动,可为APT攻击防御提供一个有效的解决方案, 现已在上海交通大学校园网中进行了部署实践。
2 技术背景
2.1 恶意软件与APT攻击
恶意软件(Malware), 是指会对计算机正常运转造成破坏、 收集敏感信息、 入侵计算机系统的软件。它通常包括计算机病毒(Virus)、 木马(Trojan)、 蠕虫(Worms)、 后门软件(Backdoor)、 间谍软件(Spy-ware)、 广告软件(Adware) 和僵尸网络(Botnet)。 恶意软件对互联网安全和社会秩序构成了极大威胁,也成了信息安全领域最重要的研究对象之一。
APT(Advanced Persistent Threat)攻击, 即针对特定目标的高级持续性威胁, 对当前的互联网安全造成了前所未有的威胁, 并且, 其目标通常直指具有极高价值的政府、 军队和企业网络中的机密数据。 和传统攻击方法相比, APT攻击具有极强的目的性, 往往会为了获得某个重要信息而进行长期的、 一系列的攻击过程, 利用了各种最先进的攻击技术和社会工程学方法, 以目标组织内部的人员作为跳板, 层层渗透, 长期蛰伏, 直到获取到关键情报。
在APT攻击过程中, 恶意软件扮演着不可或缺的重要角色, 攻击者往往会对组织内部人员的计算机植入恶意软件, 达到远程控制和窃取关键信息的目的。 然后, 再利用恶意软件在组织内部进行扫描和感染, 一层层地突破和渗透。 具有代表性的例子, 有震网(Stuxnet), 它感染了伊朗60%的个人电脑,并成功入侵了伊朗的布什尔核电站。 利用微软漏洞大肆作案的Duqu木马, 则成功地窃取了大量企业的重要资料, 而火焰(Flame)病毒被用于对多个中东国家的政府机构进行APT攻击。 由于APT攻击背后通常有强大的资金和力量作为支撑, 因此, 用于APT攻击的病毒设计非常复杂, 且常伴有未曾公开的0day漏洞利用, 上述几个APT恶意软件都在长达数年的时间内躲过了各种反病毒软件的侦测。
2.2 恶意软件网络防御
目前网络通信量的恶意代码检测, 主要使用网络防火墙、 硬件反病毒网关、 网络入侵检测系统(NIDS)和网络入侵防御系统(NIPS)。 它们被部署在网络出口, 能够对一个机构的网络进行全面监控,而不需要像反病毒软件那样安装到每个主机设备上。 传统的网络防火墙采用IP地址黑名单的方式进行通信阻断, 对新型威胁的响应迟缓, 并且无法检测复杂的应用层协议。 反病毒网关, 则只能阻止常用协议中传播的染毒文件, 缺乏已染毒计算机的检测能力。 NIDS和NIPS可解决上述缺陷, 它们对恶意代码的检测离不开一个持续更新、 准确可靠的网络特征码库, 这样一个特征码的提取和维护的过程是良好入侵检测效果的基础。
与反病毒软件使用特征码进行文件查杀类似, 病毒的网络特征码是在网络流量中唯一确定某种病毒网络通信的 “指纹” 特征。 IDS规则由一系列网络特征码, 以及部分传统的IP、 域名和URL黑名单构成。 以目前最常用的NIDS软件Snort为例, 为Snort提供规则的厂商主要是Sourcefire官方的VRT(Vul-nerability Research Team) 以及Emerging Threats。 这些厂商编写病毒Snort规则的方式, 与反病毒软件厂商维护病毒库的工作相似, 需要专业的工程师进行人工的样本分析。 Sourcefire VRT拥有20名雇员, 每天处理多达3万个样本, 而Emerging Threats则需要分析每天5万个样本, 平均每天发布20~40条新的Snort规则。
2.3 我们的方法
针对目前恶意软件网络特征码研究的严峻形势, 我们设计了一个针对网络特征的恶意代码自动分析平台。 我们将网络特征码规则集的产生过程分为以下四个步骤:
1) 样本执行与网络流量监控;
2) 样本网络行为模式分析;
3) 样本网络特征码自动提取(Snort规则生成);
4) 特征码自动验证与误报消除。
其中, 在步骤1)中, 我们可借助IaaS云计算虚拟化平台实现虚拟机的自动管理、 样本调度和流量截取, 利用弹性云计算的特点实现资源的有效利用, 大幅提高样本执行效率。
接下去的步骤2)和步骤3)则是本项目的研究重点, 即设计一个先进的网络行为模式分析系统, 以及一个能够自动产生精准的Snort规则的算法。 算法的优劣直接决定了所产生的Snort规则的质量。 高质量的Snort规则生成算法可大幅降低Sourcefire VRT和Emerging Threats这样的团队的工作量, 甚至彻底将特征提取的过程变成一个无需人工参与的自动流程。
最后, 为了避免产生的Snort规则在真实流量中产生误报, 我们参考了反病毒厂商的病毒库发布策略, 在我们产生Snort规则集之前, 利用一个巨大的合法通信量数据库进行特征码验证(步骤4)), 自动剔除可能产生误报的规则, 保障我们的系统产生的规则的可靠性。
接下去, 在本文的第3部分, 将着重介绍本项目设计的自动提取网络特征码的关键算法。 我们将上述流程整合后实现了NetAnalyzer网络特征自动分析平台, 该平台的实现细节将在第4部分介绍。 本文第5部分将对特征码提取算法进行实验评估, 并将NetAnalyzer在实际环境中进行了部署和评价。
3 网络特征码生成算法
3.1 算法概述
恶意软件的网络特征码, 是在网络流量中唯一确定该类恶意软件网络通信的 “指纹” 特征, 是程序产生的网络流量中独一无二的特征片段的组合, 而这些特征片段, 即是网络会话中的不变量, 或者说每次网络会话中都出现的共有的子串。 所以, 网络特征码的提取过程, 就是提取众多网络会话中均出现的共有的特征片段, 并将它们重新排列、 整合。
现有的自动签名提取的技术有HoneyComb、 AutoGraph、 PAYL、 ASG、 NetSpy等, 这些技术仅对一个样本生成一条规则, 如果这个仅有的规则过于宽泛则容易误报, 如果过于具体则容易漏报, 规则的效果较差。 PolyGraph能够通过网络流量聚类, 获得粗糙的分组结果, 从而得到多条规则。 但是仅仅基于网络特征聚类的分组还不够精细, 所以提取出来的规则准确度较低, 效果上有很大的限制。而我们的项目通过关键词树能够真正地从网络流量内容的本身提取多类网络特征规则, 从而能够匹配到更多的恶意流量, 做到更少的漏报、 误报, 准确度相对较高, 效果较好。 算法的整理流程如图1所示。
图1 特征码生成算法整理流程
3.2 特征片段提取算法
数据流特征片段就是在网络流量中出现频繁的特征子串。 对于若干网络会话, 它们的特征往往体现在那些在多个网络会话中都出现的共有的子串, 这些子串组成了网络会话的特征码, 它们对组成网络特征规则起到了至关重要的作用。 因此, 我们对一个大类中的网络会话提取特征片段, 即提取网络会话中始终不变的子串。
我们使用广义后缀树(Generalized Suffix Tree)作为提取网络会话中的特征片段的数据结构, 使用Color Set Size算法在广义后缀树上提取网络会话的特征片段。 广义后缀树是计算机科学中存储字串后缀的一种数据结构, 在广义后缀树上可以进行许多种快速的串操作。
图2 广义后缀树示例
任何字串都可以建立广义后缀树。 广义后缀树的每条边都是输入串的一个子串。 连接从根节点到叶子节点的边所代表的子串,将得到输入串的所有后缀。 直接进行串操作, 会重复查询很多信息, 而后缀树把这些有用的信息保存了下来, 避免了串操作中的重复查询, 从而加速了串的操作。 例如, 字串“banana$”可以建立如图2所示的后缀树。
接下来使用Color Set Size算法在后缀树上提取公共特征片段。因此, 在后缀树上提取特征片段的步骤是: 通过遍历后缀树, 将所有出现次数大于α、 长度大于β的特征片段提取出来。 对于n个网络会话, 我们通过动态的方法确定阈值α的大小:
因为一个大类中的网络会话越多, 可能出现的内容上的分类就越多, 所以α占n的比例就应该随n的增大变小, 而这个公式正符合这一增长的规律。 经过实验, β的值取5可达到最优解。
3.3 正则表达式生成算法
单独的特征片段并不能直接转换成完整的网络特征规则。 对于提取出来的特征片段如何组成一系列不重叠、 覆盖范围大、 内容又精确的网络特征规则, 我们将使用Keyword-based Signature Tree关键词树算法与基于动态评价标准的筛选器来完成这一工作。
关键词树是一棵以特征片段出现频率为依据而建立的树。 它的每个节点都是一个特征片段。 出现频率越高的特征片段越靠近根节点, 出现频率越低的特征片段越靠近叶子节点。 它根据特征片段出现的频率、 内容, 将特征片段逐层次分类, 建好的关键词树上从根节点到任意非根节点路径上的所有特征片段都可以组成一个正则表达式。
最后, 我们要对正则表达式进行筛选。 从根节点到任意非根节点路径上收集到的特征片段所组成的正则表达式很可能过于宽泛, 从而不够精确。 为了避免这种情况, 我们定义了一个减值熵。 对于一个正则表达式e, 定义E(u)为使用这个正则表达式构成一个随机的字串u所需要的位的个数, 而定义B(u)为不使用这个正则表达式构成一个随机的字串u所需要的位的个数。 减值熵d(e)便等于B(u)-E(u)的差, 所以正则表达式匹配一个随机字串的概率就是:
P(e)=2E(u)/2B(u)=1/2(B(u)-E(u))=1/d(e)
我们使用这个公式对特征码的精确度进行评价。 因此我们认为, 只要正则表达式匹配一个随机字串的概率P(e)小于阈值γ, 就可以认为这个正则表达式足够精确。
对于这些足够精确的正则表达式, 我们当然希望它们所能匹配的网络会话越多越好。 因此, 我们使用一种以正则表达式所能匹配的网络会话数量为依据的贪心算法来筛选通用性最好的正则表达式。
4 系统设计与实现
4.1 系统架构
Net Analyzer系统由样本采集、 样本预处理、 云计算样本分析平台、 网络行为分析、 特征码提取和Web界面6个部分组成。 系统整体架构如图3所示。
图3 系统总体架构图
样本采集模块从四种来源获得应用程序样本, 包括用户提交、 蜜罐捕获、 Web监控和合作伙伴的样本交换。
样本预处理模块负责从采集到的样本中筛选出有效的样本。 我们首先使用N-版本杀毒对样本进行筛选, 只有被至少一种反病毒软件侦测的样本才进入后续模块, 以降低系统负载。
云计算样本分析平台负责对虚拟机资源进行自动化管理, 并将经过预处理的恶意程序可执行文件分发到虚拟环境中执行, 记录其产生的网络通信数据。 同时, 为了防止恶意程序产生破坏性的攻击事件,本模块对虚拟网络环境进行了隔离与监控。
样本监控得到的网络通信数据, 将进入特征码提取模块和网络行为分模块进行分析。 特征码提取模块利用第3章所设计的算法, 自动生成一系列Snort规则, 然后在合法的通信库中进行验证, 消除可能产生误报的规则。 网络行为分析模块则能够自动识别恶意软件的各种控制通信与攻击行为, 建立样本网络行为模型, 并以图形方式直观地展示。
最后, 我们实现了一个Web界面, 可供用户提交样本、 查看样本执行进度、 浏览样本分析报告和Snort规则。 同时, 管理员可以通过Web界面对系统进行状态监控与配置管理, 查看统计数据, 整理产生Snort规则集。
4.2 N-版本病毒检测
我们使用N-版本病毒检测技术, 对Web监控采集的未知样本进行筛选, 同时作为其他样本最终Snort规则评判的参考依据。 N-版本病毒检测利用多个反病毒软件对同一文件进行判定, 由于我们的系统在Linux环境中运行, 因此, 我们选用了提供了免费的Linux版本的反病毒产品, 包括: avast!、AVG、 Avira、 BitDefender、 ClamAV和F-Prot。 对于程序样本, 上述杀毒软件会产生警告信息。 我们编写了正则表达式规则进行结果处理, 利用Linux Shell脚本编程实现, 并将结果存储到数据库中。
4.3 OpenStack云计算样本分析平台
云计算样本分析平台是本系统的核心组件, 它是基于OpenStack平台所搭建的, 具有高效、 稳定、可伸缩的特点。 它的主要功能是: ①自动化虚拟机管理和样本调度; ②虚拟网络隔离与监控; ③网络通信数据截取。
OpenStack平台是一个开放的云计算平台, 我们在它的基础上, 设计并实现了自动化的虚拟机管理和样本调度机制。 系统将根据系统资源的使用情况, 如当前开启虚拟机数量、 系统所允许的虚拟机最大容量、 CPU使用率、 内存使用率, 在合适的时机, 自动开启虚拟机并植入恶意软件样本, 并在指定时间的运行过程完成后, 自动关闭虚拟机。 实现调度策略的具体算法如图4所示。
图4 OpenStack云计算样本调度流程
由于我们分析的样本都是可能存在潜在破坏性的恶意程序, 为了防止程序在运行过程中可能对分析平台和真实互联网产生危害, 我们设计了虚拟网络的隔离与监控机制, 具体的隔离策略设计如下:
1) 对于虚拟机之间的通信, 我们利用OpenStack的VLAN和防火墙予以隔离, 防止恶意软件在虚拟机之间传播;
2) 对于虚拟机和外界的远程控制通信, 允许其进入真实的互联网, 以便从中提取控制通信的网络特征码;
3) 对于拒绝服务攻击和垃圾邮件等大流量攻击的通信, 我们利用Linux iptables的Rate Limit规则和流量整形(Traffic Shaping)技术对其进行限制, 减小此类攻击流量的影响;
4) 对于端口扫描和漏洞利用行为, 我们利用iptables的NAT功能将流量重定向到事先部署好的蜜罐主机上, 从而防止虚拟机中的恶意代码对互联网上的真实主机造成破坏, 并且还可利用蜜罐对漏洞利用行为进行进一步的分析。
我们将每个样本同时运行在两个分别安装了Windows XP和Windows Server 2003操作系统的虚拟机上, 进行交叉验证。 由于大部分的恶意软件在进行控制通信时会向控制端回报操作系统版本、 IP地址、用户名等系统信息, 如果只使用一台虚拟机的流量进行分析, 在提取特征码过程中, 这些信息往往也会被作为特征码的一部分处理, 从而使特征码丧失了意义。 因此, 只有通过两台虚拟机的流量的交叉验证, 才可以消除这些特殊信息对特征码提取所造成的影响。
4.4 网络行为模式分析系统
在通信协议分析完成的基础上, 行为模式解析系统的关键功能在于识别恶意程序产生的攻击行为。目前, 本系统能够分析的攻击事件总结如表1所示。
表1 攻击行为识别功能表
端口扫描可能是对某一特定目标的大范围端口扫描或对某一范围的特定端口扫描, 在某段时间间隔内, 如果出现了频繁地向某一目标不同端口或不同目标同一端口连接请求, 则容易判定在这段时间内恶意软件正在进行端口扫描。
拒绝服务攻击会在一段时间内, 出现大量对某一目标资源的请求。 通过统计一段时间内对同一目标的成功和失败连接数, 寻找网络流量的突变点, 则可判断SYN Flood、 UDP Flood和应用层拒绝服务攻击。
本系统设计的恶意网络行为识别算法, 涵盖了恶意软件通常产生的几乎所有攻击事件。
5 实验评估
5.1 系统部署
本项目的NetAnalyzer系统运行于Linux平台, 并使用OpenStackIaaS云计算平台。 系统部署的网络拓扑如图5所示。
5.2 样本采集
在系统测试期间, 我们通过与上海交通大学网络中心合作, 从其在校园网部署的被动蜜罐和针对网页挂马的主动蜜罐系统获取了8200个恶意程序样本。 同时, 我们也从国内外多个安全网站和论坛, 获取了数千个病毒样本。 通过剔除重复样本后, 我们的系统总共采集的样本数为11838个。
图5 系统部署图
通过N-版本病毒检测, 在全部样本中, 有11217个被至少一个反病毒软件侦测为恶意, 所属的病毒种类多达6857种, 具体统计如表2所示。
表2 N-版本病毒检测统计
我们同时统计了样本所属的恶意软件类型(图6), 其中, 木马所占比例最高, 为73%, 其次为广告软件(11%)、 后门程序(5%)、 僵尸网络(4%)和蠕虫(3%)。
图6 样本恶意软件类型统计
5.3 特征码生成算法评估
为了评估我们的系统自动生成规则的质量, 我们对这些特征规则进行分析, 并与人工生成的规则进行比较。
作为评估我们系统的第一部分,我们对著名的Flame病毒做实验。 我们发现Flame样本伪造了User-Agent做出了HTTP的GET请求。 它所使用的User-Agent是“Mozilla/4.0(compatible;MSIE 8.0;Windows NT 5.1;Trident/4.0;.NET4.0C;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)”。Emerging Threats(后简称ET)提取的规则就是以Flame病毒伪造的User-Agent作为其规则的主要的内容(如图7所示),而我们的系统提取出了如图8所示的规则。对比ET人工提取的Snort规则,我们的系统自动提取的规则与其非常类似。使用432个数据流的Flame通信数据来测试ET的规则,检出410个包,检出率94.9%;用它来测试我们的系统自动提取的规则,检出403个报文,检出率93.3%。从而,实验结果显示,对于Flame样本,我们的系统自动提取的规则的效果与人工提取的规则的效果旗鼓相当。
图7 Emerging Threats的Flame网络特征码
图8 本系统自动产生的Flame网络特征码
之前我们检测了系统对HTTP协议样本提取特征码规则的效果。 作为评估的第二部分, 我们接着检测对于自定义协议的样本的提取规则的效果。 因此, 我们对另一段恶意代码做实验。
如图9所示, 这段恶意代码通过自定义的协议进行通信。 在开始通信的时候, 被感染主机利用“........KrisRx.K...g.g”字串向控制端发送请求信息, 而控制端也发送带有“KrisRx”字串的应答传递命令控制信息、 保持与被感染主机的联络状态。 在后期通信的过程中, 虽然数据被简单地加过密, 但是所有的请求与应答中均频繁出现“KrisRx”这个特征子串。 这些数据的体积较大, 有可能是被感染主机信息的上传, 控制端攻击命令的发送, 或者被感染主机与控制端的进一步对话。 因此, 我们的系统对此样本提取出如图10所示的特征码规则。 我们将这些规则应用到同家族恶意代码的网络通信数据上, 检出率为95%。
图9 自定义控制协议通信数据
经过分析与比较, 自动生成的规则与人工生成的规则非常类似。 这说明我们的系统具有较高的实际价值。 我们具体分析了若干个样本所产生的特征码规则, 发现有的时候我们生成的规则比较具体,但是这些多余的特征片段并不影响我们生成的规则的效果, 因为它们既不匹配更多的恶意流量, 也不会产生更多的误报。
图10 自定义协议控制通信网络特征码
5.4 网络行为分析算法评估
对于样本产生的网络通信数据, 我们对其进行网络行为模式分析, 取得了良好的效果。 这里, 我们选取了四种典型的攻击行为, 以便验证我们的算法。
首先, 我们挑选了一个会进行端口扫描的恶意软件, 对其网络通信数据进行分析。 从图11可以看到, 在恶意软件的网络通信数据中, 短时间内出现了大量对59.78.12.0/24、 59.78.17.0/24、59.78.14.0/24、59.78.19.0/24这几个网段IP地址的TCP连接, 共同特点是连接的端口都为135端口,因此, 这是一个典型的针对特定端口的扫描行为。 我们的算法成功地识别出了扫描行为, 并记录了扫描端口、 扫描时间、 扫描IP地址范围等信息。
图11 端口扫描识别结果
接着, 我们选取了一个进行密码穷举攻击的恶意软件。 图12的分析显示, 该恶意软件在短时间内进行了大量对202.120.63.178的21端口的TCP连接, 通过对FTP协议的分析, 我们发现, 其每个连接都在利用不同的密码尝试登录FTP, 因此, 这是一次典型的FTP密码穷举攻击。 我们的算法不仅识别出了这次攻击行为, 还成功分析出了恶意软件所尝试的密码列表(图12)。
对于一个拒绝服务攻击的样本, 我们发现其在短时间内出现了大量对174.128.230.120的80端口的TCP连接。 经过HTTP协议解析, 每个连接都请求同一个HTTP资源, 因此, 这是一个明显的HTTP应用层拒绝服务攻击。 我们的算法可自动计算拒绝服务攻击的网络流量曲线(图13)。
5.5 真实环境部署效果
我们的系统部署于上海交通大学校园网内, 目前共有两个云计算节点, 并与上海交通大学网络中心的客户端蜜罐、 服务器端蜜罐、 Web日志和卡巴斯基企业版反病毒日志联动, 同时将Snort规则及黑名单应用到防火墙和位于宿舍区域的Snort、 BotHunter入侵检测系统, 网络拓扑如图14所示。 根据理论计算, 每个节点支持的虚拟机最大容量为40台, 每天处理的样本数上限为1920个, 实际运行过程中,每个节点允许最大容量为35台以避免服务器过载, 每天处理样本上限为1680个。 其中, 主节点从7月中旬开始运行, 截至报告撰写时(8月1日), 总共检测了约15天, 期间系统运行稳定, 负载正常。
图12 密码穷举行为识别结果
图13 拒绝服务攻击行为识别结果
在运行期间, 系统共获得有效样本11838个, 这些样本总计产生网络通信数据29.37GB, 平均每日网络通信数据大小为1.96GB。
经我们分析, 在所有的网络通信数据中, 各种协议分布如表3所示, 在所有网络通信数据中, HT-TP协议所占比例最大, 约占27.1%, 接下来依次是SMTP(5.3%)、 FTP(3.4%)、 DNS(2.1%)、 ICMP (1.9%)和HTTPS(1.4%)。
图14 校园网防御系统部署图
表3 样本网络通信协议统计
根据样本的网络通信数据, 我们整理出恶意软件控制端的IP地址黑名单, 总计检测到控制端IP地址2803个, 平均每日新增187个。
我们对产生网络通信数据的6119个样本进行网络特征码提取, 共提取出特征码18105个, 平均每个样本提取出特征码2.96个。 经过测试,99.14%规则可以通过白名单,93.70%对通信数据产生了报警, 具体数据如表4所示。
表4 自动生成的特征码评估结果
6 总结与展望
本项目着眼于基于网络流量的恶意软件检测, 针对现有恶意代码分析技术在网络行为分析上的欠缺, 设计并实现了专注于网络特征的恶意代码自动化分析平台——NetAnalyzer。
我们设计的网络特征码(Snort规则)自动生成算法, 基于广义后缀树、 Color Size Set和关键词签名树算法, 精确度要明显优于现有的AutoGraph和PolyGraph等技术, 并在实验评估中验证了规则的有效性和准确性。
其次, 项目实现了一套全面的网络行为模式分析系统, 能够自动识别恶意软件的各类控制通信, 以及包括拒绝服务、 扫描、 远程溢出和密码穷举在内的攻击行为, 建立样本网络通信模型, 并以图形方式直观地展示。
项目利用云计算和虚拟化技术, 基于OpenStack实现了样本自动调度、 执行和流量截取, 利用一台PC即可达到每天1600个样本的处理能力, 且具有可伸缩的特性。
我们设计、 实现的NetAnalyzer系统, 其样本模拟与指纹提取自动化的特性, 能够大幅降低安全厂商病毒分析团队的工作量, 自动生成恶意代码Snort规则集。 同时, NetAnalyzer与企业网络中的蜜罐、IDS和防火墙系统联动, 可为APT攻击防御提供一个有效的解决方案, 并已在上海交通大学校园网中进行了部署实践, 应用前景广阔。
专家点评
本作品设计了名为NetAnalyzer的网络恶意代码自动分析平台。 可以在目前的网络环境中, 利用流量解析和网络行为模式识别的方法, 实现对网络恶意程序通信的识别。 解决了目前一些常用的软件识别率不高、 效率低下的问题。
文章的主要创新点在于: (1)实现了针对网络特征码的恶意行为识别的自动生成算法, 其准确度和效率要好于目前常用的几种算法。 (2)在此基础上设计并实现了一整套的网络行为模式分析系统, 利用云计算和虚拟化的方法进行了系统平台的实现, 并应用于上海交通大学的校园网。
文章中设计和使用了有效的特征提取算法, 并且进行了从理论到实践的验证, 在实验平台的搭建过程中, 也采用了较为新颖的平台架构和非常丰富的界面效果来展示该系统的各种功能和方法, 包括对各种攻击的判断和分析、 样本的网络行为模型等, 取得成果令人信服。
文中对APT等攻击也进行了一些描述和说明, 若能针对这类目前比较敏感的新型攻击类型进行有针对性的验证, 则更能说明文中系统的普适性和高效性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。