一种基于内核级监测的恶意软件聚类分析方法

2017-07-04 06:54黄庆佳
软件 2017年5期
关键词:沙箱镜像内核

叶 菁,黄庆佳

(1. 中国科学院信息工程研究所,北京 100195;2. 中国科学院大学,北京 100190)

一种基于内核级监测的恶意软件聚类分析方法

叶 菁1,2,黄庆佳1

(1. 中国科学院信息工程研究所,北京 100195;2. 中国科学院大学,北京 100190)

恶意软件分析技术的研究一直都是安全研究的重点之一。近年来,基于机器学习和数据挖掘算法的恶意软件行为特征的分析方法逐渐受到研究人员的重视。但目前这类方法普遍基于用户态行为进行分析。针对用户态监测所处层级高、容易造成获取行为不完整等问题,本文提出一种基于内核级监测的恶意软件聚类方法,在内核中监测获取恶意软件内核函数调用序列,提取内核行为表示成内核行为表示模型,并采用层次聚类算法对内核行为序列进行聚类分析。通过实验,验证了本文的分析方法能够获取较好的分析结果。

计算机软件与理论;恶意软件聚类分析;行为分析;内核

0 引言

随着计算机网络技术的迅速发展及在人们工作生活中的广泛应用,互联网环境下数量庞大的恶意软件已成为危害社会的正常运行和人们的隐私安全的重要威胁。对恶意软件分析技术的研究一直都是安全研究的热门之一。近年来在恶意软件分析研究领域,运用机器学习和数据挖掘算法分析恶意软件运行时行为特征的方法越来越受到安全研究人员的重视。这类分析方法具有对抗恶意软件混淆技术的特性和进行关联性分析的能力。目前的这类分析方法普遍基于用户态监测获取的恶意软件行为进行分析,而用户态的监测技术所处系统层级较高,当恶意软件有低层级行为,如加载驱动、调用内核函数等时,监测程序无法捕获其行为,造成行为日志缺失,从而影响分析的准确度。

针对这一问题,本文提出基于内核级监测的恶意软件聚类分析方法,设计并实现了一个自动分析系统,包括一个内核沙箱和一个分析框架,用于自动化执行恶意软件获取恶意软件内核函数序列,根据内核函数序列提取内核行为,并基于获取的内核行为进行聚类分析。

1 相关工作

基于机器学习和数据挖掘算法分析恶意软件行为的方法按其分析过程分为恶意软件行为获取和行为分析算法两部分。

1.1 恶意软件行为获取

在恶意软件行为获取过程中,通过动态分析技术,在受控环境中监测获取恶意软件运行时行为,作为行为分析算法的输入。目前研究人员主要使用开源沙箱工具获取恶意软件行为。

TTAnalyze[1]采用Qemu模拟器作为虚拟化环境,通过CR3寄存器实现对目标进程的监测,跟踪恶意软件对Windows API和Native API的调用。CWSandbox[2]采用VMware虚拟化环境,通过Inline Hook技术,Hook了总共120余Windows API和Native API,实现对恶意软件的监测。Cuckoo Sandbox[3],一个始于HoneyNT的开源项目,其支持多虚拟化平台,采用基于进程注入的API Hook技术Hook了180余Windows API和Native API。除上述较常使用的沙箱工具外,其他动态分析工具还有如PyBox[4]、ZeroWine[5]、TWMAN[6]、Capture[7]等。动态分析工具相关信息汇总如表1所示。

表1 沙箱工具信息汇总Tab.1 Sandbox Tools

1.2 行为分析算法

为了实现对海量数据的分析处理及利用,国内外很多学者对机器学习和数据挖掘算法及其应用[8-12]进行了广泛研究。行为分析算法,基于机器学习和数据挖掘算法实现,以动态分析工具获取的恶意软件行为集合作为输入,运用各种特征模型进行特征提取,并基于提取的特征进行分类聚类分析。

Rieck等人[13]基于CWSandbox获取的恶意软件行为数据,利用向量空间模型和背包模型提起分类特征,并利用支持向量机SVM训练分类器进行分类分析。Bayer等人[14]基于TTAnalyze获取的资源对象操作的形式的恶意软件行为数据,采用局部敏感哈希算法提取特征,并通过分层聚类算法进行聚类分析。Rieck、Trinius等人[15]基于CWSandbox获取的恶意软件数据,将行为表示成MIST[16]编码的形式,通过n-gram模型将行为序列向量化,并采用分层聚类算法和KNN分类算法进行分析。其他研究也都是通过改进特征提取过程和分析算法过程获取更好的分析结果。

目前行为分析算法的输入为动分析工具主要是开源沙箱工具获取的恶意软件行为,而基于用户态监测实现的开源沙箱工具面对恶意软件的内核行为时,其获取的恶意软件行为将不完整,从而影响分析的准确度。

2 分析系统设计

2.1 系统架构与设计

分析系统整体架构如图1所示,分为动态分析和行为分析两部分。

图1 分析系统架构Fig.1 Analysis Framework

2.2 动态分析框架

动态分析框架实现了对恶意软件的自动化深度监测,获取恶意软件内核函数调用序列。动态分析框架中,设计并实现了一个内核监控器程序,并在内核监控器程序的基础上,设计扩展实现了一个基于内核深度监测的沙箱系统(简称内核沙箱系统)。

2.2.1 内核监控器实现

内核监控器采用驱动程序的形式,基于Hook系统服务、Hook IRP和系统回调等多种监测技术实现。其包括进程线程、注册表、文件系统、网络行为和系统服务五个监测子模块。

图2 内核监控器层次图Fig.2 Hierarchical Structure of Kernel Monitor

● 进程线程监测子模块,通过注册进程、线程、镜像回调函数,捕获进程线程创建删除,镜像文件加载等操作。

● 注册表监测子模块,通过注册回调函数监测系统注册表状态的改变,捕获系统中的注册表操作。

● 文件系统监测子模块,通过文件微过滤驱动的方式,向过滤管理器注册过滤操作和回调函数。捕获系统中的指定的文件操作事件。

● 网络监测子模块,通过TDI过滤驱动的方式,实现IRP包过滤功能,解析获取系统中网络操作的信息。

● 系统服务监测模块,通过Hook系统服务派遣表的方式,实现截获系统服务函数的调用事件。

2.2.2 内核沙箱系统实现

内核沙箱基于Cuckoo开源框架和内核监控器程序扩展实现,能够在内核层中自动化监测获取恶意软件行为。Cuckoo为基于虚拟机和Python自动化技术实现的开源框架,拥有并行化分析能力,其提供了可扩展的Analyzer Package分析包。通过在Package抽象类的基础上扩展实现Kernel子类,添加内核监控器和监测控制程序,实现内核分析功能。

内核沙箱分析流程的伪码如下所示:

内核沙箱单次分析流程的伪码如下所示:

2.3 行为分析框架

行为分析框架对动态分析框架获取的恶意软件函数调用序列集进行分析,提取行为特征,进行聚类分析。

2.3.1 内核行为提取

对恶意软件行为进行聚类分析时,分析算法需能明确区分作为输入的恶意软件行为。用户态函数语义固定明确易于区分其具体行为。而内核函数语义凝聚,相同内核函数可能对应不同的行为,同一行为也可能由不同内核函数实现。因此,要基于内核函数序列做聚类分析,必须先从语义凝聚的内核函数序列中提取其具体的内核行为。

相同内核函数可能对应不同的行为,如内核函数ZwDeviceIoControlFile对应到用户模式下的各类Socket操作。在内核函数实现中,操作系统通过比较函数参数与预置的固定值可判断具体的操作类型。同一行为可以由不同内核函数实现,如文件删除行为可由多个不同的内核函数实现。对于这类内核函数,在区分出内核函数具体行为的基础上,将进行相同类型的操作的不同内核函数的行为会聚标记为同一行为。

基于此思路,采用逆向工程的方式,逆向、调试操作系统系统服务函数的实现,依据操作系统内核函数的实现的方式,并参考WDK文档,设计了内核函数行为映射表,以内核函数名和函数调用重要参数为输入,提取其具体的内核行为。

例如提取系统服务函数ZwDeviceIoControlFile代表的行为:

IO控制码为系统预置或驱动程序使用CTL_ CODE宏定义的。函数通过判断IO控制码,通知驱动设备进行指定的操作。当IO控制码为系统预置时,如此处通过f(ZwDeviceIoControlFile, IoControlCode|73735),将IoControlCode同操作系统预定义的IO控制码比较,得出其对应操作为一个Socket connect操作。而当IO控制码为自定义的时,自定义的IO控制码能够表征其具体行为类型,通过函数名+IoControlCode+设备对象名,可表示这个设备对象自己定义的操作。

内核行为提取过程,将语义凝聚模糊的内核函数调用转换成语义离散明确的内核行为表示,获取适于聚类分析的内核行为。

2.3.2 内核行为模型

提取的内核行为以进程树的形式按时序存储在文本中。针对聚类算法处理以文本、XML等形式存储的用户模式行为序列较困难,及日志信息冗余度较高等问题,Trinius等人设计了按参数特异性分层的MIST编码。在MIST编码中,相同家族的样本,参数层级越低参数越具相似性。此设计能实现降低冗余度,提供不同粒度的聚类层次等功能。然而,MIST的 Level3及以上的层次中,参数实际上不具有相似性。Rieck、Trinius在其分类聚类实验中也仅使用了前两级参数。

相比于用户模式行为序列,同一样本的内核行为序列长度一般更长,处理复杂度更大。因此要对内核行为做聚类分析,更需要筛去行为日志中的冗余信息。因此参考MIST编码,本文设计了编码表示的内核行为模型KIST。

图3 KIST模型Fig.3 KIST Model

KIST模型,将单条日志分为BEHAVIOR、ARGBLOCK、TARGET、HANDLE四部分。BEHAVIOR部分用于表征一次API调用的具体行为。ARGBLOCK部分记录重要参数,即对同一家族恶意软件可能相同的参数。TARGET和HANDLE为可选项。TARGET表征行为作用的对象,HANDLE记录行为相关句柄,二者共同表征行为操作作用的对象。

KIST模型表示如下:

0f 01 | 00006b2c 0c7d3f9c | 000d4000

BEHAVIOR部分,0f为镜像加载回掉所属的类目范围,01为具体的操作。

ARGBLOCK部分,00006b2c表示的是加载的镜像的类型,通过解析FullImageName获取,此处为DLL,0c7d3f9c为加载的镜像所在的目录。对同一恶意代码及其变种,如果在运行过程中需加载某个动态链接库,镜像加载行为不变的首先是加载的镜像的类型,其次是镜像所处的系统路径。

TARGET部分表征镜像加载操作作用的对象,由于镜像名可能因恶意软件随机命名而改变,故选择加载镜像的大小表征所加载的镜像。

2.3.3 聚类分析

聚类分析分三步,分别对恶意软件行为序列做复杂度降低、序列映射和聚类。

内核行为序列中会出现大量的重复行为。例如,同样从文件中读取256比特的行为,可以一次读取256比特,也可分256次每次读取1比特。这些重复行为会对分析精度和分析性能造成影响。参考内核函数使用规律和KIST模型的TARGET和HANDLE块,可将属于同一个操作的多个行为合并。

行为序列映射,将代表恶意软件的行为序列映射到多维向量空间,通过多维空间上的距离计算恶意软件相似性。自然语言处理研究领域提供里很多文本向量化的模型及算法,本文中选用一个基于n-gram模型和TF-IDF的算法,用于将行为序列向量化并计算行为序列间空间上距离。

聚类过程,依据行为序列空间上距离作为相似性比较的依据。运用层次聚类算法对恶意软件进行聚类分析。本文选用一个简单的层次聚类算法。其中数据点集合间的距离计算使用complete linkage算法。

3 实验结果及分析

3.1 实验样本

实验选取了来自VirusShare[17]上的3163个样本,通过VirusTotal[18]在线扫描后,选取卡巴斯基的扫描结果为标签。如表2所示。

表2 实验样本Tab.2 Experimental Samples

3.2 实验环境

分析主机为一台联想一体机,内存为8 G,操作系统为Ubuntu 14.04。分析系统部署在一体机上,使用VirtualBox虚拟机中的Windows XP系统。虚拟机中安装了部分常用软件,如Office,Flash,Adobe Reader,QQ等,并预置部分文档,模拟真实计算机环境。

3.3 对比实验

对照组选用Rieck、Trinius等人提出的分析框架作为对比。该分析框架用于对恶意软件用户模式行为进行聚类分类分析。对照组系统架构如图4所示。

图4 对照组系统架构Fig.4 Contrast Experimental Framework

3.4 结果分析

为了客观衡量聚类分析的结果,本文选用准确率,召回率和F值三个标准。假设分析的总样本数为n,原始样本家族为Y,聚类结果簇为C。分别定义准确率P,召回率R和F-measure值F如下:

Maxc为一个聚类结果簇c中,包含最大的样本类中样本的数目。Maxy为所有聚类结果簇中,单个结果簇中包含标签为y的样本的最大数目。

对比实验中,实验组和对照组分析系统分别对样本数据集进行聚类分析,分析结果如表4所示。由实验数据可知,基于内核行为分析的实验组,获取更高的F值,且聚类结果更紧密。由此可见,本文基于内核行为的分析方法能够获取较好的分析结果。

表4 实验结果Tab.4 Experimental Result

[1] Bayer U, Kruegel C, Kirda E. TTAnalyze: A tool for analyzing malware[M]. na, 2006.

[2] Willems C, Holz T, Freiling F. Toward automated dynamic malware analysis using cwsandbox[J]. IEEE Security & Privacy, 2007, 5(2).

[3] Guarnieri C, Tanasi A, Bremer J, et al. The Cuckoo Sandbox (2012)[J].

[4] Engelberth M, Göbel J, Schönbein C, et al. PyBox-A Python Sandbox[C]//Sicherheit. 2012: 137-148.

[5] Koret J. Zero Wine Malware Analysis Tool[J]. 2013.

[6] Huang H D, Lee C S, Kao H Y, et al. Malware behavioral analysis system: TWMAN[C]//Intelligent Agent (IA), 2011 IEEE Symposium on. IEEE, 2011: 1-8.

[7] Seifert C, Steenson R, Welch I, et al. Capture-A behavioral analysis tool for applications and documents[J]. digital investigation, 2007, 4: 23-30.

[8] 杜淑颖. 基于大型数据集的聚类算法研究[J]. 软件, 2016, 37(01): 132-135

[9] 唐波. 改进的K-means聚类算法及应用[J]. 软件, 2012, 33(3): 100-104

[10] 郑文超, 徐鹏. 利用word2vec 对中文词进行聚类的研究[J]. 软件, 2013, 34(12): 160-162

[11] 陈磊磊. 不同距离测度的K-Means 文本聚类研究[J]. 软件, 2015, 36(1): 56-61

[12] 徐步云, 倪禾.自组织神经网络和K-means 聚类算法的比较分析[J].新型工业化, 2014, 4(7): 63-69. XU Buyun, NI He. Comparative analysis of SOM and K-means clustering[J]. The Journal of New Industrialization, 2014, 4(7): 63-65.

[13] Rieck K, Holz T, Willems C, et al. Learning and classification of malware behavior[C]//International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Springer Berlin Heidelberg, 2008: 108-125.

[14] Bayer U, Comparetti P M, Hlauschek C, et al. Scalable, Behavior-Based Malware Clustering[C]//NDSS. 2009, 9: 8-11.

[15] 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.

[16] Trinius P, Willems C, Holz T, et al. A malware instruction set for behavior-based analysis[J]. 2009.

[17] VirusShare. ”VirusShare. com-Because Sharing is Caring.”Internet: http://virusshare.com/, Jan. 15, 2017 [Jan. 15, 2017].

[18] VirusTotal. ”virustotal. ” Internet: https: //www. virustotal. com/, 2017 [Jan. 15, 2017].

Indirect Computing Model with Indirect Formal Method

YE Jing1,2, HUANG Qing-jia1
(1. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100195, China; 2. University of Chinese Academy of Sciences, Beijing 100190)

Malware analysis has been one of the focuses of security research. In recent years, analysis methods of malware behavior using machine learning and data mining algorithms have been paid great attention by researchers. But at present this kind of method is generally based on the behaviors gained by user mode monitoring techniques. User-mode monitoring techniques are at a high system level and may obtain incomplete malware behavior. This paper proposes a malware clustering method based on kernel level monitoring, monitoring malware in the kernel to obtain kernel function call sequences, extracting kernel behaviors, and using hierarchical clustering algorithm to cluster analysis of kernel behavior sequence. The experiment show that this method can get better results.

Computer software and theory; Malware clustering analysis; Behavior analysis; Kernel

TP393.08

A

10.3969/j.issn.1003-6970.2017.05.001

国家863课题(2015AA017202),北京市科委项目(D161100001216001),中科院先导项目(XDA06010703)

叶菁(1992-),男,在读硕士研究生,计算机软件与理论。

黄庆佳,助理研究员,主要研究方向:网络与软件安全。

本文著录格式:叶菁,黄庆佳. 一种基于内核级监测的恶意软件聚类分析方法[J]. 软件,2017,38(5):01-06

猜你喜欢
沙箱镜像内核
强化『高新』内核 打造农业『硅谷』
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
Removing a stone
基于函数注入的沙箱拦截识别方法
基于多安全机制的 Linux 应用沙箱的设计与实现