彭国军,王 滢,梁 玉,于 慧,王至前
(1.武汉大学 计算机学院 空天信息安全与可信计算教育部重点实验室,湖北 武汉430072;2.中国人民大学 法学院,北京100872)
为保护敏感机密文件,文献 [1,2]能准确识别基本的文件行为类型,但用户或淹没在庞大的监控和分析数据中,无法发现真正危险的文件行为;或仅能对个别敏感机密文件实施监控,不能全面识别系统中发生的危险文件行为。在软件行为检测领域,现有的动态检测技术[3-5]专注于程序的动态执行过程,但仅能简单地识别基本行为,且无法对单个行为定性 (即正常或异常);而静态检测技术[6]以程序的反汇编代码为分析对象,难以应对经过特殊处理的代码 (如加密、混淆或变形),分析效率低下[7],且存在同动态检测同样的问题[8]。
针对以上情况,为识别系统中异常的文件管理活动,本文在现有动态检测技术的基础上,以异常文件管理活动的时序特征和实现特点为依据,提出基于文件和网络行为关联分析的识别方法,并实现原型系统F-Sensor。
异常文件管理活动是指远程控制者通过网络连接到受控主机,进而借助控制主机 (“控制端”)对受控主机 (“被控端”)开展的文件管理操作。它主要包括远程浏览目录、远程搜索文件、远程上传文件 (夹)、远程下载文件 (夹)等行为 (“上传/下载”在本文中相对于控制端而言)。本文拟对以上6种异常行为进行识别。
典型的控制行为是通过控制端向运行在受控主机上的被控端程序发送命令,被控端执行相应的操作并返回执行结果来实现的[9],异常文件管理活动的工作模式也是如此。由于CPU 的高速运转,被控端接收命令、执行操作和发送执行结果三者之间的时间间隔很小。而且,因控制端为人工操控,查看返回结果和发布新的命令都需要时间,故连续的管理行为之间也存在一定的时间间隔。因此,异常文件管理活动在时间上呈现同一行为内的网络和文件操作紧密相依,而不同行为间疏离的特点。
在具体实现时,以上6种异常文件管理行为又表现出不同的特征:
(1)远程浏览目录与远程搜索文件
被控端接收到浏览目录命令后,根据命令中指定的文件目录立即对其执行遍历文件操作,并将获取到的所有文件路径立刻发送给控制端。而对于远程搜索文件行为,被控端接收到搜索文件命令后,根据命令中指定的搜索目录立即递归地对该目录及其子目录执行遍历文件,最终将文件名或文件内容中包含搜索关键词的所有文件路径发送给控制端。
远程浏览目录本质上是一种特殊的远程搜索文件行为——当搜索关键词为 “*”时对单层目录的搜索。
(2)远程上传文件与远程下载文件
被控端接收到上传文件命令后,即根据命令中包含的文件名称和内容创建并写入文件,全部写入后返回执行结果;对于远程下载文件行为,被控端接收到下载文件命令后,即根据命令中规定的文件名称,读取该文件内容并发送给控制端。
(3)远程上传文件夹与远程下载文件夹
被控端接收到上传文件夹命令后,首先根据命令中所包含的上传目标文件夹名称创建文件夹,然后根据后续传来的文件名称及内容创建并写入文件,如此递归直至上传目标文件夹中所有目录和文件均被创建和写入。
对于远程下载文件夹行为,被控端接收到下载文件夹命令后,即根据命令中规定的文件夹名称,递归地遍历和读取该目录及其子目录中的所有文件,并将文件内容发送给控制端。
本文以进程的特定网络和文件API调用记录为分析对象,根据异常文件管理活动的特征,分析和识别远程浏览目录、远程搜索文件、远程上传文件 (夹)和远程下载文件 (夹)这6种异常行为。为便于叙述,我们把分析过程中涉及的相关概念作如下定义:
(1)关键API函数:异常文件管理活动发生时所调用且可用于识别异常活动的API函数,包括遍历文件、读取文件、写入文件和创建文件夹等文件相关API函数,以及发送/接收数据等网络相关API函数。
(2)行为序列:由调用时间间隔小于一定值的相邻关键API函数所组成的API调用序列,即包含一个或多个完整文件管理行为的API调用序列。
(3)行为链表:用于存储行为序列的双向链表。
(4)分析结果序列:针对某一行为序列,记录其行为识别的中间和最终结果,包含识别出的行为类型、开始时间、结束时间和其它信息,如目标文件/目录、远程IP/端口号、搜索关键词等。
(5)分析结果链表:用于存储分析结果序列的双向链表。
根据异常文件管理活动的特征,对异常文件管理行为进行识别,包括3个步骤:①拦截关键API函数,根据函数调用时间间隔划分行为序列;②根据关联分析算法,对每个行为序列进行网络和文件行为关联分析,提取疑似异常的文件管理行为;③结合白名单机制和异常文件管理行为之间的依存关系,剔除可疑行为中的误报行为,从而识别真正的异常文件管理行为。
基于此,本文实现了如图1所示的系统架构,其主要包含三大模块:行为监控模块、关联分析模块、行为识别模块,分别对应于以上3个步骤。
行为监控模块利用API Hook技术,拦截系统中所有进程对关键API 函数的调用,如NtQueryDirectoryFile、NtReadFile等,并将行为类型、调用时间、关键参数及由参数获取的重要信息记录到行为链表中,供关联分析模块分析。行为类型和记录信息的对应关系见表1。
图1 异常文件管理活动识别系统架构
完整行为序列的生成:行为监控模块在每个拦截函数中,检查当前调用时间与关键函数上一次调用时间的差,若大于一定的时间间隔 (经实验分析取1s),则认为当前的行为序列已生成完整,随即创建新的行为链表来存储新的行为序列,并将本次调用插入新行为序列中;否则,将本次调用插入当前行为序列的末尾。此外,为方便分析,对同一行为序列中连续的遍历文件API调用、具有相同文件句柄的读取/写入文件API调用,以及具有相同套接字的发送/接收数据API调用进行合并。其中,遍历文件行为中可能包含多次调用对应的目录路径和文件名,而遍历目录在列表中的先后顺序代表了遍历顺序;遍历文件名是指遍历时指定的文件名称或包含通配符的字符串,对文件名的搜索关键词可在此参数中得以体现。
表1 行为类型和记录信息
在行为监控模块工作的同时,关联分析模块一旦发现已生成完整的行为序列,即对该序列进行分析,识别出疑似异常的文件管理行为,并将最终的分析结果存储到可疑行为库中,以供识别模块查询分析。分析过程分为两步:
(1)以行为序列为分析对象,根据行为节点的不同类型,调用相应行为的识别算法以识别远程浏览目录、远程搜索文件、远程上传文件和远程下载文件4种行为,并将分析结果存储到分析结果链表中,如图2所示;
(2)以分析结果序列为分析对象,调用远程上传/下载文件夹行为识别算法以识别其是否存在远程上传/下载文件夹行为,若存在则对分析结果链表中与此行为相关的节点进行整合。
2.3.1 远程浏览目录和远程搜索文件行为的识别
这两种行为的识别在第一步分析过程中完成 (如图2所示),在遍历行为序列时若遇到遍历文件行为,首先对行为序列中同属于一个遍历文件行为的离散节点进行整合,然后根据整合后节点中所包含的目录路径之间的关系,利用遍历文件行为类型识别算法判定整合节点的行为类型(搜索/浏览/未知),最后调用远程遍历行为识别算法,判定其是否属于远程遍历文件行为及其具体行为类型 (远程搜索/远程浏览/远程未知)。
整合离散的遍历文件行为:有些搜索行为因涉及对许多目录下文件的遍历,耗时较长,在执行过程中可能会被其它行为 (如网络收发行为)所截断,形成多个离散的行为节点。而搜索行为多是递归实现,对搜索目标目录及其每一子目录而言,遍历文件API函数以STATUS_SUCCESS返回值开始,直至该目录中文件遍历完毕时返回STATUS_NO_MORE_FILES。因此,完整搜索行为的特征是返回STATUS _NO_MORE_FILES和STATUS _SUCCESS的次数之差为0。据此整合行为序列中的离散行为节点。
遍历文件行为类型识别算法:该算法用于判断遍历文件行为的类型 (见算法1),根据遍历行为中所包含的目录路径之间的关系来确定。因有些浏览目录行为存在对遍历文件相关函数的多次调用,故若目录列表中全是同一目录,则将该行为判定为浏览目录。若目录列表中从第二个目录起所有目录的父目录都存在于其之前的目录集合中,则将该行为判定为搜索文件行为。若不符合以上两种情况,则判定为未知遍历行为。
算法1:遍历文件行为类型识别算法
图2 关联分析第一步的分析流程
输入:行为序列中经过整合后的遍历文件行为ai=<beginTime,endTime,type,folderList,keywordList,nNo-MoreFiles>.
输出:遍历文件行为的类型type=<BrowseFolder|
远程遍历行为识别算法:该算法通过关联网络和文件行为来识别远程浏览目录/搜索文件行为,见算法2。将遍历文件行为aj判定为远程行为,需具备两个条件:①aj之前存在时间间隔小于一定值 (经实验分析,本文取500 ms),且属于小包的接收行为;②aj之后存在时间间隔小于一定值,且与满足条件的接收行为具有相同套接字的发送行为。
算法2:远程遍历行为识别算法
输入:完整的行为序列S= {ai|i=1,…,n},遍历文件 行 为aj=<beginTime,endTime,type,folderList,keywordList,nNoMoreFiles>。
输出:分析结果序列R= {ri=<beginTime,end-Time,type,pArgList>|i=1,…,m}。
2.3.2 远程上传和下载文件行为的识别
这两种行为的识别在第一步分析过程中完成 (如图2所示),在遍历行为序列时若遇到写入文件行为,则调用远程上传文件行为识别算法,判定其是否属于远程上传文件行为;若遇到读取文件行为,则调用远程下载文件行为识别算法,判定其是否属于远程下载文件行为。
远程上传文件行为识别算法:该算法通过寻找行为序列中写入文件行为之前满足条件 (即二者时间间隔小于一定值且接收数据与写入数据长度大于1/2)的接收行为,来识别远程上传文件行为,见算法3。
算法3:远程上传文件行为识别算法
输入:完整的行为序列S= {ai|i=1,…,n},写入文件行为aj=<beginTime,endTime,type,filename,writtenLen>。
输出:分析结果序列R= {ri=<beginTime,end-Time,
远程下载文件行为识别算法:与算法3 类似,该算法遍历行为序列中读取文件行为之后的所有行为,寻找满足时间间隔小于一定值且发送数据与读取数据长度大于1/2的发送行为:若找到,则说明是远程下载文件行为。
2.3.3 远程创建文件夹行为的识别
该行为的识别在第一步分析过程中完成 (如图2 所示),在遍历行为序列时若遇到创建文件夹行为,则调用远程创建文件夹行为识别算法,判定其是否属于远程创建文件夹行为。
远程创建文件夹行为识别算法:该算法与算法2类似,即以行为序列和创建文件夹行为作为输入,通过关联文件行为前后的网络行为来识别远程创建文件夹行为。识别该行为是作识别远程上传文件夹行为之用。
2.3.4 远程上传和下载文件夹行为的识别
在完成对上述行为的识别之后,调用远程上传/下载文件夹行为识别算法,对分析结果序列中的远程创建文件夹和远程上传文件行为,或远程浏览目录/搜索文件和远程下载文件行为进行关联分析,判定是否存在远程上传文件夹或下载文件夹行为。
远程上传文件夹行为识别算法:该算法通过关联分析第一步得到的分析结果序列中存在的远程创建文件夹和远程上传文件行为,来识别远程上传文件夹行为。根据远程上传文件夹行为的实现特征,我们得知若远程上传文件行为之前存在对上传文件父目录的远程创建操作,则存在远程上传文件夹行为;但反过来,远程上传文件夹行为中在远程创建文件夹之后,并非一定有对该目录下文件的远程上传行为。故该算法暂且先将分析结果序列中远程创建文件夹行为识别为远程上传文件夹行为,并将与远程上传文件夹行为相关的一个或多个远程创建文件夹和远程上传文件行为整合为一,待遍历一遍分析结果序列后再进行新一轮的遍历,将上传文件列表为空的远程上传文件夹行为重新恢复为远程创建文件夹行为,完整的分析过程如图3所示。
远程下载文件夹行为识别算法:该算法的流程与远程上传文件夹行为的识别类似,不同之处在于上传文件夹命令执行时会先后发生远程创建文件夹和远程上传文件行为,下载文件夹则对应于远程浏览目录/搜索文件和远程下载文件行为。这里,若下载目标文件夹中全是文件而不存在文件夹,则在第一步中本文的算法1会将相应的遍历文件行为判定为浏览目录,否则便判定为搜索文件。
经过关联分析模块的初步判定分析,异常文件管理行为全被识别,但是分析结果中可能包含部分正常网络应用程序的误报情况。正常网络应用程序在进行网络交互的同时,可能存在浏览、搜索、读写文件的操作,故有可能存在正常文件行为的误判。对此,行为识别模块通过白名单机制来排除误判的浏览/搜索行为,根据远程上传/下载文件和远程浏览/搜索文件的关系来识别真正的异常行为。
通过统计分析,正常网络应用程序浏览/搜索的目标文件集中在AppData目录或其程序安装/数据目录,据此制定白名单库以有效剔除误判的浏览/搜索行为。
再者,远程上传/下载与远程浏览/搜索行为存在依存关系,即远程上传文件 (夹)行为发生前的最近浏览/搜索行为一定存在,且是对上传目标文件 (夹)父目录的远程浏览行为;而远程下载文件 (夹)行为发生前的最近浏览/搜索行为一定存在,并且是对下载文件父目录的浏览或对其祖先目录的远程搜索行为。因而在保证远程浏览目录/搜索文件行为识别准确的前提下,通过关联分析远程浏览目录/搜索文件行为,在不影响异常行为识别准确率的同时有效地降低了远程上传/下载文件 (夹)的误报率。
图3 远程上传文件夹行为识别算法流程
本文选取了12个远程控制型木马样本和45个正常网络应用程序,使用异常文件管理活动识别系统F-Sensor来对异常和正常的文件管理行为进行识别,计算行为识别的检出率和误报率。
对异常文件管理行为的测试:分别对12个木马样本的每个文件管理行为随机触发至少20次,对比测试记录和识别结果并计算行为识别的检出率。表2列出了对异常文件管理行为的识别结果,表中的符号 “—”表示木马不具备此项功能。由此可知,本系统对6种异常文件管理行为识别的检出率均很高。
对表2中未识别的异常文件管理行为进行分析并发现:
(1)对于贝壳木马,因某一测试用例中上传和下载行为的目标文件内容存在大量的重复数据,贝壳样本对该文件的压缩率高达90%,而非本文中远程上传/下载行为关联分析算法中的50%,导致对该文件的下载/上传行为被识别系统漏掉 (上传/下载文件夹行为的漏报也是同样的原因导致),这种漏报可通过调整算法中读取/写入与发送/接收数据长度的比值得以解决;
(2)对于PcShare木马,因某一测试用例中搜索目标目录为单层目录,故搜索行为被识别为浏览行为,这一误判无法避免;
(3)对于IM 木马,在浏览个别系统目录时,被控端程序同时访问并读取该目标目录下的desktop.ini文件,致使浏览行为被误判为上传文件夹行为;
(4)对于Radmin木马,若浏览目录与上传文件 (夹)行为时间间隔很短,两者将被整合为对浏览目标目录的上传行为,可通过进一步调整行为序列中函数调用时间间隔得以解决。
表2 异常行为识别结果统计
此外,有些木马 (如PcShare和Poison Ivy)在搜索文件时,将调用遍历行为相关API函数获取到的文件名与搜索关键字进行匹配,从而实现对包含关键词文件的搜寻,故搜索关键词不能反映在API函数的参数中。所以,Pc-Share和Poison Ivy的搜索关键词无法通过API Hook的方法获取到。
对正常文件管理行为的测试:使用F-Sensor对45个正常网络应用程序进行持续72小时的监控,同时不定期地在测试程序的 “另存为”等文件浏览窗口中浏览文件,使用测试程序上传或下载文件 (夹)等,最终观察识别结果并计算行为识别的误报率。测试发现,有一个进程出现一次远程浏览目录行为的误报,其它5种行为不存在误报情况。因正常软件行为发生次数无法确定,故其误报率以进程数目为基数,计算得误报率为2.22%。
外部入侵是导致机密或隐私文件被窃取的重要原因,而当前的软件行为检测和文件监控技术均难以自动化识别异常文件管理活动。为此,本文提出一种基于文件和网络关联分析的异常文件管理活动识别方法,能够有效识别系统中已发生的异常文件管理活动,还能以此为突破口实现对恶意软件的检测。实验结果表明,原型系统F-Sensor能够有效地识别异常文件管理活动,且误报率较低。利用本方法,不仅能检测恶意软件还能够重现攻击者在远程控制过程中的文件行为轨迹,为分析攻击者的控制意图提供了极大的帮助。下步工作将进一步完善分析算法,并研究针对文件名和内容的搜索关键词的获取方法。
[1]LI Daquan,LUO Kelu.File operations recognition based on filter driver[J].Journal of Computer Applications,2010,30(A01):182-184 (in Chinese). [李大权,罗克露.驱动层文件监控操作类型识别模型 [J].计算机应用,2010,30(A01):182-184.]
[2]FAN Xuebin,PANG Jianmin,ZHANG Yichi,et al.File monitoring model based on IRP feature sequence [J].Journal of Information Engineering University,2012,13 (4):508-512(in Chinese).[范学斌,庞建民,张一弛,等.基于IRP特征序列的文件行为监控模型 [J].信息工程大学学报,2012,13(4):508-512.]
[3]HAN Lansheng,GAO Kunlun,ZHAO Baohua,et al.Behavior detection of malware based on combination of API function and its parameters[J].Computer Application and Research,2013,30(11):3407-3410(in Chinese).[韩兰胜,高昆仑,赵保华,等.基于API函数及其参数相结合的恶意软件行为检测 [J].计算机应用研究,2013,30 (11):3407-3410.]
[4]LI Huanzhou,TANG Zhangguo,ZHONG Mingquan,et al.The research and implementation of Trojan detection system based on behaviors monitoring [J].Journal of Sichuan Normal University (Natural Science),2009,32 (3):386-389 (in Chinese).[李焕洲,唐彰国,钟明全,等.基于行为监控的木马检测系统研究及实现 [J].四川师范大学学报 (自然科学版),2009,32 (3):386-389.]
[5]HAN Lansheng,FU Cai,ZOU Deqing,et al.Task-based behavior detection of illegal codes [J].Mathematical and Computer Modelling,2012,55 (1):80-86.
[6]Wang C,Pang J,Zhao R,et al.Malware detection based on suspicious behavior identification [C]//First International Workshop on Education Technology and Computer Science.IEEE,2009:198-202.
[7]CHEN Chao,LI Jun,KONG Deguang,et al.Model checking obfuscated binary malicious code [J].Computer Engineering and Applications,2008,44 (15):61-63 (in Chinese). [陈超,李俊,孔德光.模型检测迷惑二进制恶意代码 [J].计算机工程与应用,2008,44 (15):61-63.]
[8]ZHANG Yichi,PANG Jianmin,FAN Xuebin,et al.Program malicious behavior recognizing method based on model checking[J].Computer Engineering,2012,38 (18):107-110 (in Chinese).[张一弛,庞建民,范学斌,等.基于模型检测的程序恶意行为识别方法[J].计算机工程,2012,38 (18):107-110.]
[9]CHEN Li,ZHANG Li,YAO Yizhan,et al.Trojans control behavior detection approach based on timing analysis [J].Computer Science,2013,40 (06A):337-339 (in Chinese).[陈利,张利,姚轶崭,等.基于时序分析的木马控制行为识别方法 [J].计算机科学,2013,40 (06A):337-339.]