1 引言
现有行为捕获系统往往采用多种手段来捕获恶意代码行为。例如Windows上的文件读写类系统调用可以直接使用API HOOK来捕获,也可以通过文件系统驱动来捕获。不管行为捕获系统怎样实现,最终表现形式都是如实地详细记录恶意代码的主要调用行为。同时行为检测技术已是网络安全领域的重要研究对象,成为了网络研究体系中不可或缺的一部分。
目前已有一些基于主机或基于网络的行为捕获技术,并通过仿真实验及实际应用中证实了其有效性。现阶段应用比较广泛的行为捕获工具都是由国外研究机构所开发,如Nepenthes、ManTrsq、KFSensor、honeyd、DTK、Process Monitor、pymon.py、Ether等,其中具有代表性的为Nepenthes、Process monitor、 Ether三款工具。
Nepenthes由德国人Markus Koetter和Paul Baecher等人所开发。此工具设计的基本思想是借助对存有漏洞的网络服务进行模拟,通过建立一个低交互式的蜜罐,使正在网络中传播的恶意代码与之产生交互,利用两者之间的交互进一步分析掌握恶意代码的详细信息,包括感染源位置等。以此实现对恶意代码的自动化捕获与收集工作。Nepenthes工具的不足是无法捕获对未知漏洞进行攻击的恶意代码;一旦有新的漏洞,就需要对其进行模拟,极大地增加了工作量;同样,其对恶意代码类型及数量的捕获与收集也受限于对网络服务已知漏洞模拟的数量与质量。
Process Monitor(进程监视器)是一个Windows下的高级监视工具,可以实时显示文件系统、注册表和进程/线程的活动。它将Sysinternals以前的两个实用程序Filemon(文件监视器)和Regmon(注册表监视器)结合在一起,并且添加了大量的改进功能,包括丰富的非破坏性的过滤器,全面的事件属性,如会话ID和用户名,可靠的进程信息,对每个操作带有集成的调试符号支持的完整线程堆栈,同步记录日志文件等等。Process Monitor独特的强大功能将使它成为用户在系统故障排除和恶意软件查杀中使用的核心实用程序。
Ether恶意软件分析工具通过硬件虚拟化扩展,提出了基于硬件虚拟化的恶意代码分析框架。Ether通过Xen虚拟机能够获得比客户操作系统更加高的系统权限,使其能够监测到所有执行的指令、存储器写入、操作系统运行环境、系统调用、甚至能够限制指定进程对系统属性的访问。当客户端代码执行时,通过设置CPU trap陷阱标志可以监控指令的执行,导致每条机器指令执行后的调试异常。然而,Ether能够记录并追踪客户操作系统执行的每条机器指令和被监控的进程。通过这些调试信息和监控信息,分析人员能够更好地甄别恶意代码。
上述恶意代码捕获技术大多是针对单一数据源的,无法全面获取监测对象的信息,从而导致行为检测的漏报率和误报率较高。一般来说,此类行为捕获系统的行为捕获模块往往作为一个组件存在,只负责记录恶意代码行为,缺少自主分析判断能力,导致捕获的行为数据存在较大的噪音,为后期处理行为数据和提取恶意代码行为特征增加了难度。针对该问题,本文提出了一种基于多Agent的恶意代码捕获方案,该方案采用Agent的形式来实现恶意代码行为捕获模块,赋予其一定的自主决策能力,通过多Agent协同来去除部分行为噪声数据,从而提高恶意代码行为捕获效率。
2 行为捕获原型系统体系结构
本文提出的多Agent恶意代码行为捕获方案,其基本思想是:在恶意代码行为捕获系统主机上部署采集Agent和管理Agent,其中采集Agent主要用于捕获恶意代码行为数据,管理Agent主要用于协调各个采集Agent工作,收集并处理捕获的行为数据。通过采集Agent来感知系统中注册表操作、文件操作、部署调用工具、连接指定站点、隐藏活动界面、操作其它进程、浏览器劫持以及恶意收集信息等行为,并通过管理Agent构建的恶意代码多维行为库及可疑样本行为矩阵进行相似度匹配,从而为进一步甄别和捕获恶意代码行为提供了具体数据。如图1所示。
行为捕获的过程需要调用众多系统模块的参与,包括基于多Agent的信息采集模块,基于规则匹配的发现模块。行为捕获按阶段分为四个部分,包括采集阶段、发现阶段、处理阶段和捕获阶段,其工作流程如图2所示。
(1) 采集阶段。采集阶段的主体是基于多Agent系统的采集Agent,实时采集CPU、内存、网络流量、端口、注册表以及进程的变化信息,并将结果实时反馈给管理Agent,由其处理模块进行整理、分析。
(2)发现阶段。发现阶段要借助于管理Agent的信息处理模块,将样本的行为构建行为矩阵,计算其行为相似度,并与规则库中已知恶意行为进行匹配对比,筛查恶意行为。
(3)处理阶段。处理阶段同样要借助于管理Agent的信息处理模块,信息处理模块锁定恶意行为,并将采集阶段上报的此恶意行为的行为信息抽出、锁定,将结果进行反馈。
(4)捕获阶段。捕获阶段是对处理阶段反馈的行为进行捕获而实施的各种操作,包括调用程序进行记录(比如系统日志、网络流量流向和内容、CPU和内存等系统资源的变化情况、端口开放情况、注册表修改记录、进程开启和关闭情况等),对以上记录数据情况的分析,按照多维特征描述法对其进行描述,将之充实到行为特征库。
3 模块功能介绍
系统按实现方式可划分为信息采集子系统、行为匹配子系统、行为捕获子系统以及数据库子系统。信息采集功能由采集Agent完成,行为匹配及捕获功能由管理Agent完成。如图3所示。
3.1 信息采集子系统
信息采集子系统的核心是系统行为的监控,采集多Agent的恶意代码行为捕获技术。
信息采集子系统是本系统的基础模块,为行为捕获提供数据来源,并保证数据的真实性和实时性。系统监控子系统由多个采集监控Agent组成,有管理Agent统一负责初始化和操作控制,下设CPU信息采集模块、文件信息采集模块、进程信息采集模块、网络信息采集模块、注册表信息采集模块以及内存信息采集模块,分别对应并实现相应的采集Agent功能。这些功能模块将收集的信息实时反馈给行为匹配子系统中的数据分析模块,由其区别并锁定其中的异常状态信息,并将结果反馈给行为捕获子系统。
3.2 匹配推理子系统
匹配推理子系统是整个系统的关键,负责对信息采集子系统返回的信息进行处理,从中发现恶意行为。
匹配推理子系统有:
行为提取模块、相似度计算模块、规则匹配模块及数据分析模块。其中行为提取模块基于IDA工具提取检测样本的行为并构建样本行为矩阵;相似度计算模块计算矩阵相似度;规则匹配模块负责将样本相似度与数据库中恶意代码的相似度进行匹配对比,确定可疑行为;数据分析模块负责确定的恶定行为信息进行筛选,将结果反馈至行为捕获子系统。
3.3 行为捕获子系统
行为捕获子系统是整个系统的实现核心,负责接收匹配推理子系统确定的恶意行为并进行捕获。包括捕获记录模块和分析模块。捕获记录模块负责对某一待捕获的行为进行记录,包括其运行时间段,产生的系统资源变化等;分析模块是针对某一行为进行的后期分析,进一步确定其是否为恶意行为。
行为捕获子系统捕获恶意行为后,如果是因为匹配而断定是恶意行为的,将该代码及行为特征记录入数据库;如果是因为预测或者外界专家干预而断定为恶意行为的,则还需要更新恶意代码行为特征库。
3.4 数据库子系统
数据库子系统是系统的数据存储中转中心,负责存储各种数据,包括已知的恶意代码特征和匹配规则,实时的系统状态监控信息,系统运行日志,匹配分析过程中产生的结果等。
4 系统实现
4.1 实现平台
本平台采用Windows XP操作系统,结合了 Microsoft Jet Database Engine 和 Microsoft SQL Server数据库,使用基于Visual studio 2008平台的C++语言开发环境。在某局域网中选定三台计算机来搭建实验环境:一台FTP服务器A(安装配置采集Agent,监控其CPU和内存状况)、第二台为随机选取网络客户机B(安装配置采集Agent,监控其网络流量数据)、第三台为安装管理Agent客户机C。如图4所示。
4.2 类图分析
系统基于面向对象编程实现,由多个类构成,如图5所示,不同的子系统或者功能模块由不同的类来实现,类中封装其需要的数据以及操作的函数。
(1)Main类。Main类是主界面类,构成系统的主界面,同时启动其他子系统类,包括SystemSupervise类(系统监控子系统),MatchDeduce类(匹配推理子系统),CaptureAnalyze类(捕获分析子系统)以及DataBaseManage类(数据库管理子系统)。
(2)SystemSupervise类。SystemSupervise类是监控子系统类,负责系统状态的监控,分别由CPU、Ram、Net、Port、Regdit、Document、Process这七个类完成7个监控任务,类图如图6所示。
其中,SystemSupervise类完成监控中心的功能,包括初始化、更新和结束监控。其余类完成监控任务,分别对CPU、内存、网络流量、端口、注册表、文件、进程进行监控和处理。
(3)MatchDeduce类。MatchDeduce类是匹配推理子系统的实现类,完成匹配和推理两大任务。主要的操作对象是数据集(DataSet)。在规则匹配中,主要完成的工作包括规则选取、规则匹配;在推理中,首先要对得到的数据集进行数据挖掘,从中得出有用信息,在此基础上进行推理分析。
(4)CaptureAnalyze类。CaptureAnalyze类是捕获分析子系统的实现类,完成捕获和分析两大任务,将运行结果实时记录到系统日志中。实施捕获时,需要初始化行为捕获相关程序、插件、打开记录文件等;分析过程需要系统的实时记录,包括产生的中间数据和最终结果。
(5)DatabaseManage类。DatabaseManage类是数据库子系统的实现类,完成针对数据库系统的操作和管理任务。操作对象是多源数据库中的多张表,完成的功能包括数据的插入、删除、更新、查找等。
4.3 数据库建立
数据库子系统主要包括系统调用序列文件数据库、恶意代码多维特征描述数据库、恶意代码行为数据库、系统环境描述数据库、替换操作数据库等五个部分。如图7所示。
(1)系统函数调用序列。使用IDA软件分析得到函数调用图,通过IDA插件编程得到系统函数调用序列。如表1所示。
(2)恶意代码多维特征描述表。恶意代码多维特征描述主要包含恶意代码编号、恶意代码名称,各个系统调用发生时的时间、所依赖的系统调用、依赖的类型(数据依赖、控制依赖)、产生的下一个系统调用的名称等信息。如表2所示。
(3)等价替换操作表。为了规避恶意代码静态分析的检测,很多软件使用等价替换操作,如将文件映射到内存中再读取内存数据的方式和直接读取文件数据的操作就是一种等价替换。通过建立更新等价替换库,能有效降低系统调用序列匹配的干扰。
等价替换操作库主要是依据系统调用类别来区分。如文件操作中的读文件 “CreateFile→ReadFile”和“CreateFile→CreateFileMapping→MapViewOfFile”
4 恶意代码行为描述表
刻画某一时刻恶意代码具体行为,包含CPU使用率的变化,内存占用率的变化,网络流量的变化,开放端口的变化,注册表变化、进程变化等。
(5)系统环境变化表。刻画恶意代码行为导致的系统环境变化,具体包含当前CPU的使用率、内存的占用率、网络流量、开放的端口、注册表信息以及启动的进程等。
4.4 系统实现
如图8所示为系统的启动界面,此界面下可直接启动三个相关联的子系统,分别是系统监控子系统、匹配推理子系统、以及捕获分析子系统。
信息监控子系统运行如图9所示。通过此界面可以设置查询间隔,选择采集Agent进行状态查看。信息显示窗口可以显示目前系统的运行信息,以及手动的查询结果。左下角的“动态变化指标”栏,可直观显示当前CPU、内存以及网络流量的使用情况。
捕获分析子系统如图10所示。通过此界面可以设置捕获过程的参数。通过信息窗口动态展示系统的运行情况和状态信息。
5 结束语
本文基于多Agent协同处理技术设计开发了恶意代码行为捕获原型系统,通过多维恶意代码库对被捕获的目标行为进行了详细的描述和记录。实验证明,该方案可以清楚地描述恶意代码在CPU、内存和流量等方面的多种行为特征,为进一步分析和防范恶意行为提供数据支持,同时通过管理Agent动态建立及维护的恶意代码库,可以支持新型、变种和隐藏类恶意代码的进一步检测分析。该方案的设计与实现对于提高信息系统及网络的恶意代码防范能力具有较大的应用价值。
参考文献
[1] Rieck K, Trinius P, Willems C,
et al. Automatic analysis of malware behavior using machine learning[J]. Journal of Computer Security, 2011, 19(4): 639-668.
//Recent Advances in Intrusion Detection. Springer Berlin Heidelberg, 2006: 165-184.
[3] 方志鹤.恶意代码分类的研究与实现[D].国防科学技术大学,2011.
[4] 曹莹,刘家辰,苗启广等.AdaBoost 恶意程序行为检测新算法[J].西安电子科技大学学报,2013, 40(6): 116-124.
[5] 燕发文,黄敏,王中飞.基于BF算法的网络异常流量行为检测[J].计算机工程,2013, 39(7): 165-168,172.
[6] 王新志, 孙乐昌, 张旻,等.基于序列模式发现的恶意行为检测方法[J].计算机工程,2011, 37(24): 1-3.
. Wiley Publishing, 2010.
[8] 朱映映,吴锦锋,明仲.基于网络事件和深度协议分析的入侵检测研究[J].通信学报,2011, 32(8): 171-178.
作者简介:
孙志峰(1978-),男,河北冀州人,国防科大硕士在读;主要研究方向和关注领域:网络安全。
赵文涛(1973-),男,内蒙古凉城人,国防科大计算机学院,博士,现任国防科大计算机学院教研室主任,教授,硕士生导师;主要研究方向和关注领域:网络安全。
游超(1984-),男,湖南宁乡人,国防科大硕士在读;主要研究方向和关注领域:网络安全。
董彬(1992-),男,山西临汾人,国防科大硕士在读;主要研究方向和关注领域:网络安全。