当前位置:首页 期刊杂志

一种基于诱导机制的间谍软件检测方法

时间:2024-08-31

郭 春,罗 迪,申国伟,崔允贺,平 源

(1. 贵州大学计算机科学与技术学院公共大数据国家重点实验室,贵州贵阳 550025;2. 许昌学院信息学院,河南许昌 461000)

1 引言

间谍软件是一种高威胁性、高隐蔽性的恶意软件,它能够收集受害者信息并将这些信息在用户不知情的情况下发送给攻击者. 间谍软件窃取的信息包括用户访问过的网站列表、电子邮件、键盘击键记录、屏幕截图、信用卡号等[1],在多种数据泄露事件中间谍软件扮演着重要角色.《NTT Security 2019全球威胁情报报告》显示间谍软件在恶意软件中数量排名第一[2]. 卡巴斯基实验室公布的2019 年Top 10 病毒排名中,排名第一的也是窃取敏感信息的恶意软件. 间谍软件已经成为互联网所面临的主要安全威胁之一[3].

间谍软件作为以信息窃取为主要意图的恶意软件,比其他恶意软件更重视隐蔽性[4]. 间谍软件通常集成触发执行、进程隐藏和文件隐藏等技术以提升自身在运行中的隐蔽性,其中触发执行指间谍软件需要在其预设的触发条件得到满足时才执行特定行为[5]. 当前主流的间谍软件检测方法是基于软件行为的动态检测方法,该类方法大多以软件在一定时长内的行为特征作为该软件有无恶意性的判别依据. 由于集成触发执行的间谍软件往往在大部分时间内仅执行少量不易暴露的“正常行为”[6],因此传统的基于软件行为的检测方法在实际环境中对该类软件的漏检率高或检测及时性不佳.

针对上述问题,本文采用诱导的思路,主动诱发间谍软件执行其窃密行为(主要为收集或泄露信息行为). 为提升间谍软件诱导的有效性,本文从应用程序编程接口(Application Programming Interface,API)层面分析不同诱导操作和诱导强度对间谍软件的不同诱发效果,并以此为基础构建了一种基于诱导机制的间谍软件检测方法(Spyware Detection Method based on Inducement Mechanism,SDMIM).SDMIM 包含诱导操作筛选、软件“活跃度”计算、间谍软件判别3个阶段,能够适用于多种类型间谍软件的诱导式检测.

本文主要工作如下.

(1)对多款不同类型的间谍软件的行为执行方式进行分析,从API 调用数量的角度探索间谍软件在有/无诱导操作情况下的行为差异以及不同诱导操作、诱导强度对间谍软件的不同诱发效果,为设计面向间谍软件的诱导式检测方法奠定基础.

(2)在对间谍软件行为诱发效果分析的基础上,提出了一种基于诱导机制的间谍软件检测方法SDMIM.SDMIM 以组建的诱导操作集合为基础,能够适用于多种类型间谍软件的诱导式检测.

(3)使用不同类型的多款间谍软件及正常软件组成的样本集对SDMIM 进行实验测试. 实验结果表明,SDMIM 能够在该样本集上得到95.98%的检测准确率.

2 相关工作

间谍软件检测是当前恶意软件检测领域的研究热点之一. 近年来国内外研究者提出了多种检测方法,这些方法可分为静态检测方法、动态检测方法和基于诱导的检测方法.

2.1 静态检测方法

静态检测是指在不运行应用程序的情况下,运用静态分析技术分析程序的二进制文件或反汇编代码等固有属性,并从中提取程序的静态特征来进行恶意软件检测的方法[7].Ding等人[8]提取恶意软件的n-gram 操作码作为特征,利用深度置信网络检测恶意软件.Kumar 等人[9]利用图像化恶意软件的OpCode 并结合进化算法进行恶意软件检测. Guo 等人[10]将勒索软件可视化为灰度图,利用VGG16 提取特征后运用支持向量机分类勒索软件.Chu 等人[11]将恶意代码转化为图像后,使用卷积神经网络分类恶意软件. 总体来说,静态检测方法无需运行应用程序便可进行检测,但是难以应对使用了加壳、代码混淆等技术的恶意软件[12].

2.2 动态检测方法

动态检测指在受控环境中执行恶意软件并观察软件与操作系统的交互行为,并以所观察到的行为特征进行检测的方法[13].Javaheri 等人[14]对系统进程行为进行分析,使用JRIP和J48决策树作为分类器识别间谍软件.Chen 等人[15]在沙箱中运行勒索软件并采集API 调用序列作为特征,再使用机器学习算法实现勒索软件检测. Allan 等人[16]使用Cuckoo 沙箱提取恶意软件API 调用序列,结合N-gram 和TF-IDF 算法检测恶意软件. Fasano等人[17]运行并监控间谍软件的行为,使用时态逻辑公式检测间谍软件. Amer 等人[18]使用Word2vec 表示API函数之间上下文关系,构造马尔可夫链的检测恶意软件. Wang 等人[19]使用Word2vec 模型得到软件的API词向量,再利用残差网络提取特征并结合注意力机制检测恶意软件. 相比于静态检测方法,动态检测方法在检测集成了加壳等静态混淆技术的恶意软件上具有一定优势,但是该类方法大多对集成了触发执行等动态逃避技术的间谍软件的检测率低或检测及时性差[20].

2.3 基于诱导的检测方法

间谍软件常集成触发执行等动态逃避技术,执行窃密操作时隐蔽性强. 因此,开始使用诱导间谍软件执行窃密操作的思路[21~23]. 傅军等人[22]提出基于人工NK细胞的计算机先天免疫模型,通过释放一些间谍软件感兴趣的“诱导因子”引诱其实施恶意活动. 该方法借鉴了先天免疫系统中诱导的原理,但其诱导因子的种类较少且未对不同类型间谍软件的诱发效果进行分析.Alsaleh等人[23]提出了一种生成欺骗参数的方法,诱使恶意软件表现出与正常软件不同的恶意行为以便于检测. 总体来说,现有基于诱导的间谍软件检测研究尚未形成系统化的体系,还有待继续深入研究.

综上所述,现有的间谍软件检测方法尚存在一些不足:静态检测方法难以应对集成了代码混淆和加壳技术的间谍软件[24];基于行为的动态检测方法需要以软件的行为特征作为判别依据,在面对集成了触发执行策略的间谍软件时容易出现漏检率高或检测及时性不佳的情况[25];当前基于诱导的检测方法存在着诱导操作数量少且诱导操作有效性评估不够等问题,难以有效诱导多种类型的间谍软件. 针对现有方法存在的不足,本文从API 调用数量的角度探索不同诱导操作、诱导强度对间谍软件的不同诱发效果,并以此为基础构建适用于检测多种类型的间谍软件的诱导式检测方法.

3 间谍软件行为诱发效果分析

随着间谍软件检测与反检测的对抗博弈不断持续,间谍软件开发者为逃避检测在间谍软件中集成了触发执行等逃避技术. 由于触发执行能够使间谍软件执行窃密行为时具有很强的隐蔽性,当前集成触发执行的间谍软件数量不断增加. 针对该趋势,本文对当前主流的5 种类型间谍软件主要窃密的行为执行方式进行了实验分析. 表1 给出了5 种类型的303 个间谍软件运行样本(由117 款间谍软件采用不同设置得到,间谍软、件植入主机后无法更改其设置)的主要窃密行为所采用的行为执行方式.

表1 不同类型间谍软件的主要窃密行为执行方式

从表1可知,上述间谍软件样本均采用触发执行策略执行其主要窃密行为,即当系统中存在特定操作时这些间谍软件才会实施其相应窃密行为. 为检测集成了触发执行的间谍软件,本文采用诱导的思路,从API调用的角度探索间谍软件在有/无诱导操作情况下的行为差异以及不同诱导操作、诱导强度对间谍软件的不同诱发效果.

首先,为了探索间谍软件在有/无诱导操作情况下的行为差异,本文随机选取了5 种类型的15 个间谍软件样本和6种类型的8个正常软件样本. 这些样本在安装有QQ、谷歌浏览器、360 杀毒、爱奇艺视频、Wegame等软件的Win7 操作系统中分别运行,并将各自在30 s的诱导操作(针对S1~S5类型的间谍软件分别执行键盘敲击、复制粘贴、浏览网页、打开应用程序和创建文件操作各5 次)执行时间段(本文将该时间段命名为诱导期)和30 s 的无诱导操作执行时间段(本文将该时间段命名为非诱导期)的API 调用数量进行记录,得到表2的结果.

如表2 所示,本文分析的5 种类型的间谍软件样本在其诱导期和非诱导期均调用了一定数量的API,但各类型的间谍软件样本在其诱导期所调用的API 数量明显多于非诱导期. 这表明这些间谍软件在诱导期中实施了更多的行为. 与此同时,表2 还显示所分析的正常软件样本在诱导期和非诱导期调用的API 数量相差很小,说明是否有诱导操作对这些正常软件的行为数量没有明显影响.

表2 实验样本非诱导期和诱导期API调用数量

接下来分析不同诱导操作对间谍软件行为的影响. 由表1 可知键盘信息记录型间谍软件在其中占比最高,因此这里以键盘信息记录型的3个间谍软件以及多个类型的8 个正常软件作为分析对象. 在每个诱导期仅执行一种诱导操作5 次的情况下,这些样本在5 个诱导期(每个时长30 s)和5个非诱导期(每个时长30 s)所调用API的平均数量如表3所示.

表3 显示所分析的间谍软件样本在不同的诱导操作下,所增加的API 调用数量(诱导期的API 数量减去非诱导期的API 数量)有一定差别,即不同的诱导操作对同一类间谍软件所诱发的行为数量存在着不同. 表3还显示正常软件样本在各诱导期和非诱导期中调用的API数量差别很小,再次验证了是否有诱导操作对正常软件的行为数量几乎没有影响.

表3 实验样本在不同诱导操作下的API调用数量

最后分析单位时间内执行不同次数的诱导操作(本文命名为诱导强度,单位为“次/min”)对间谍软件行为的影响. 本文在3 个30 s 的诱导期内分别执行5 次、10 次和15 次键盘敲击操作,记录3 个键盘信息记录型间谍软件样本在各诱导期内各自所调用的API数量,结果如图1所示. 由图1可知,随着诱导强度的增加,各间谍软件在其诱导期内调用了更多数量的API. 这表明不同的诱导强度对间谍软件的诱发效果产生不同影响,且诱导强度与所诱发的间谍软件行为数量成正相关关系.

图1 间谍软件在不同诱导强度下的API调用数量

综合上述分析可知,间谍软件在其诱导期调用的API数量明显多于其非诱导期,且不同的诱导操作及诱导强度对间谍软件所诱发产生的API 数量存在着影响. 该结果为本文设计基于诱导机制的间谍软件检测方法奠定了基础. 需要注意的是若某款间谍软件能够使用低级的代码指令直接访问操作系统底层资源(即绕过系统函数接口调用),则无法通过API 分析该间谍软件,此时可以通过网络流量分析该类间谍软件.

4 基于诱导机制的间谍软件检测方法

基于第3 节的分析结果,本文提出了一种间谍软件检测方法SDMIM. SDMIM 总体框架如图2 所示,包含了诱导操作筛选、软件“活跃度”计算、间谍软件判别3 个主要阶段. 下面分别对3 个阶段进行详细描述.

图2 基于诱导机制的间谍软件检测方法总体框图

4.1 诱导操作筛选

第3节的分析结果显示,不同的诱导操作对同一类间谍软件的诱发效果不同. 为了提升对不同类型间谍软件的诱发效果,SDMIM 组建了一个包含多种诱导操作的集合,并通过所设计的诱导操作筛选算法从中选取对各间谍软件有效的诱导操作.

(1)诱导操作集合组建

本文对多种类型的间谍软件样本进行逆向分析以及运行过程分析,发现间谍软件对一些用户事件具有很高的关注度. 这些用户事件大多能够通过用户可执行的操作产生. 根据该特点,本文在系统中主动实施不同种类及数量的用户操作,观察间谍软件样本对这些用户操作的反应情况,最终从上百种用户操作中选出了如表4所示的18种受到较多间谍软件样本关注的用户操作,组建为诱导操作集合O={(i1,10),(i2,5),…,(i18,2)}.O中每一个诱导操作(ii,ci)代表着诱导行为ii及其执行的强度ci.

表4 诱导操作集合

(2)有效诱导操作筛选

由于不同诱导操作对同一类间谍软件的API 调用数量产生的影响不同,SDMIM 需要从诱导操作集合O中选出能够有效诱发待检测间谍软件实施大量行为的诱导操作. 本文设计了如算法1 所示的有效诱导操作筛选算法. 该算法首先从O 中依次选取各诱导操作(ii,ci)在系统中执行30 秒并获取该时间段内系统中API 调用数量mi,再将其与设定好的阈值MThreshold进行比较:若执行(ii,ci)所得到的mi大于等于MThreshold则停止筛选并(ii,ci)选为有效诱导操作;若O 中各诱导操作所得到的mi均小于MThreshold,则选取其中产生最大mi的(ii,ci)作为有效诱导操作.

4.2 软件“活跃度”计算

算法1 有效诱导操作筛选输入:诱导操作集合O={(i1,10),(i2,5),…,(i18,2)},阈值MThreshold输出:选取的有效诱导操作(ii,ci)1. FOR i=1,2,…,18 DO 2. 自动执行诱导操作(ii,ci)3. 记录系统中API调用数量mi 4. IF(mi≥MThreshold)5. 选取该诱导操作(ii,ci)6. BREAK 7. ELSE 8. i=i+1 9. END FOR 10. IF(i >18)11. 选取Mi最大的诱导操作(ii,ci)12. END IF

第3节的分析结果显示,间谍软件在诱导期和非诱导期的API调用数量存在明显差别,而正常软件在这两个时间段的API 调用数量几乎没有差别. 因此,为数量化表示软件在诱导期和非诱导期的活跃程度,本文定义了一个“活跃度”(Ibehavior),软件在一个时间段的“活跃度”数值越高表示其在该时期的行为执行越频繁. 软件“活跃度”计算阶段主要包括软件行为提取和活跃度计算两个步骤. 下面分别进行描述.

(1)软件行为提取

本文认为间谍软件在诱导期相对于其在非诱导期多出的API 调用数量主要是由执行诱导操作所诱发.为提取诱导期和非诱导期的软件行为,SDMIM 将上一阶段筛选出的有效诱导操作,按照预先设定好的时间间隔在待检测系统中执行并通过监控工具Process Monitor 提取系统中各软件的API(表5 所示的间谍软件常用的文件系统API、进程间通信API 等). 诱导期中提取的API表示为诱导期行为集合Induce_KeyB={(API1,H1),(API2,H2),…,(APIn,Hn)},非诱导期中提取的API表示为非诱导期行为集合No-induce_KeyB={(API1,J1),(API2,J2),…,(APIn,Jn)}. 其中APIi代表某种API,Hi和Ji代表该API的调用数.

表5 SDMIM监控的API

(2)“活跃度”计算

基于上一步骤得到的Induce_KeyB与Noinduce_KeyB,SDMIM 将通过式(1)和式(2)分别计算APIi在诱导期和非诱导期的活动值Rinduce_i和Rno-induce_i.

其中,Hi为Induce_KeyB中APIi的调用数,Tinduce为诱导期时长(单位为min),ci为诱导强度.

其中,Ji为No-induce_KeyB中APIi的调用数,Tno-induce为非诱导期时长.

软件在诱导期和非诱导期中调用的API 均来源于该软件在此期间所实施的行为.SDMIM 从行为覆盖全面性的角度出发,通过式(3)将APIi在诱导期的Rinduce_i和非诱导期的Rno-induce_i进行加权结合以得到该API综合活动值Ri.

其中,w1和w2为权重因子. 为了突出诱导操作对间谍软件的诱发效果,本文将w1和w2分别设定为0.9和0.1.

接下来SDMIM 将APIi的综合活动值Ri与预设阈值RThreshold_i如式(4)所示进行比较:当Ri大于RThreshold_i则将该API 选定为高敏感API(代表其对诱导操作反映敏感),其敏感度量值Sensitivei(本文用于数量化表示API 的敏感程度)等于Ri;反之则其Sensitivei等于0. 最后,SDMIM 使用式(5)以软件为单位叠加Sensitivei(i=1,2,…,31)得到待测软件的活跃度Ibehavior.

综上所述,通过所提取的软件行为集合计算该软件活跃度的流程如算法2所示.

4.3 间谍软件判别

SDMIM 在本阶段将利用式(6)对软件的活跃度Ibe-havior与预定的阈值IThreshold进行比较,根据比较结果判断待测软件是间谍软件还是正常软件:当Y=0 时,将待检测样本判别为正常软件;当Y=1 时,则将待检测软件判别为间谍软件.

算法2 软件"活跃度"计算输入:样本x的诱导期行为集合Induce_KeyB与非诱导期行为集合No-induce_KeyB输出:样本x的活跃度Ibehavior 1. FOR i=1,2,…,31 do 2. 根据式(1)计算Induce_KeyB中APIi的Rinduce_i 3. 根据式(2)计算No-induce_KeyB中APIi的Rno-induce_i 4. 根据式(3)计算APIi的Ri 5. 根据式(4)计算APIi的Sensitive_i 6. END FOR 7. 根据式(5)将x的所有Sensitivei累加得到Ibehavior

5 实验与结果

5.1 实验环境

为了测试SDMIM 的有效性,本文在配置为20 G 内存、Intel i7-8700 处理器的物理机中搭建FTP 服务器接收间谍软件回传的信息;以配置为2 G内存、60 G硬盘的VMware Workstation 虚拟机作为实验样本的实验环境,该环境中运行着如表6所示的正常软件. 无特别说明时实验中Tinduce和Tno-induce均设置为1 min(两者之和在实验表示为Time,对应SDMIM 提取行为的时长),IThreshold设置为7000,使用Process Monitor捕获API数据.

表6 实验环境中已运行的正常软件

5.2 数据集

本文实验集中间谍软件主要来源于virustotal.com,virusshare.com,github.com 等网站,正常软件来源于360软件管家. 实验集包含5 种类型共303 个间谍软件运行样本(由117 款间谍软件采用不同设置得到,间谍软件植入主机后无法更改其设置)和7 种类型220 个的正常软件样本,包括办公软件、聊天交友软件、查杀类软件、工具软件等. 实验数据集中样本分布如表7所示.

表7 实验样本类型及数量

5.3 评估标准

本文采用恶意软件检测领域常用的准确率(Accuracy)、精确率(Precision)、召回率(Recall)以及F1 作为SDMIM 检测性能的评估指标,这些指标可通过式(7)~(10)进行计算.

5.4 实验结果及分析

5.4.1 MThreshold阈值与RThreshold_i阈值选取

首先针对算法1 中的阈值MThreshold和式(4)中阈值RThreshold_i选取进行实验. 本文从实验集中随机抽取10个键盘信息记录型间谍软件样本和10个正常软件样本,在搭建的实验环境中执行强度为12 次/min 的键盘敲击诱导操作. 本文将仅有正常软件运行(实验环境+某个正常软件)的系统称为正常系统,将有间谍软件运行(实验环境+某个间谍软件)的系统称为异常系统. 上述正常系统和异常系统在30s诱导期内的API调用数量如表8所示.

从表8的统计数据可以看到,存在行为诱发执行的异常系统同时段API调用数量普遍高于正常系统,且波动范围也大于正常系统. 为简化分析,本文参考使正常与异常系统的统计间距最大化的思路,为后续实验的MThresh-old赋予略低于二者均值之差的值,如取MThreshold=72212,如图3所示该值略小于异常系统均值(116064.6)与正常系统均值(42978.2)的差值(73086.4).

表8 不同正常系统与异常系统在30秒诱导期的API调用数量

图3 不同正常系统与异常系统在30s诱导期的API调用数量分布

RThreshold_i值关系到高敏感API 的判定. 本文以上述10 个间谍软件样本和10 个正常软件样本30 s 内的API调用数量为输入,通过式(1)~(3)计算两类软件的31种API各自的综合活动值Ri,结果如表9所示. 本文将表9中的Ri值以计算得到的值作为各API的RThreshold_i值进行后续实验.

表9 SDMIM中高敏感API判定阈值RThreshold_i取值

5.4.2 不同IThreshold阈值下SDMIM 的检测效果

为测试不同阈值IThreshold下的SDMIM 检测精度,本文在5 个不同IThreshold下使用实验集(包含303 个间谍软件样本和220 个正常软件样本)进行检测,结果如表10和图4所示.

如表10 所示,当IThreshold为10000 时,SDMIM 获得最高的Precision(96.62%);当IThreshold为6000时,SDMIM 获得最高的Recall(97.03%);当IThreshold为8000 时,SDMIM获得最高的F1 值(96.54%). 分析以上结果,当设定的IThreshold较低时,大部分间谍软件样本能够被正确判定,但是此时的IThreshold会使得部分正常软件样本被错误判定为间谍软件,对应SDMIM 获得较高的Recall 值和其较低的Precision 和F1值. 而当设定的IThreshold较高时,大部分正常软件样本能够被正常判定,但是此时的IThreshold会使得部分间谍软件样本被错误判定为正常软件,对应SDMIM 获得较高的Precision 和较低的Recall 和F1值. 对应到图4 所示的SDMIM 在不同IThreshold下得到的Accuracy 值,也是当IThreshold为8000 时,SDMIM 得到Accuracy值的最高(95.98%).

图4 SDMIM在不同IThreshold下获得的Accuracy

表10 SDMIM在不同IThreshold下获得的Precision,Recall和F1

5.4.3 不同Time下SDMIM 的检测效果

为测试不同Time 下的SDMIM 检测精度本文设置IThreshold为8000,在5 个不同Time 下使用实验集进行检测,结果如表11和图5所示.

表11 SDMIM在不同Time下获得的Precision,Recall和F1

如表11 所示,随着使用的检测时间Time 逐渐增加,SDMIM 获得的Precision,Recall 和F1 值呈现上升趋势. 具体来说,当Time为6 min时,SDMIM所获得的Precision、Recall 以及F1 最高,分别达到96.37%,97.68%和97.21%. 这是由于间谍软件样本在诱导期中调用的API 数量会大幅度增加,而正常软件无此变化,因此随着Time 的增加,两类软件的API 调用数量差距也随会之扩大. 因此,更长的Time 能够提升SDMIM 对间谍软件和正常软件的区分效果. 相应的,图5显示随着Time的增加,SDMIM 所获得的Accuracy 值也逐渐提升. 当Time 为6min 时,SDMIM 获得本实验中最高的Accuracy(96.75%).

图5 SDMIM在不同Time下获得的Accuracy

5.4.4 方法对比

为进一步评估SDMIM 的检测精度,本文将SDMIM与文献[10]、文献[16]、文献[18]中方法在本文实验集上进行了对比实验. 文献[10]中方法为基于软件可视化的静态检测方法. 文献[16]和文献[18]中方法均为基于行为的动态检测方法. 以本文各实验样本在2 min时间段内调用的API 序列作为数据集进行实验. 上述对比方法将实验集以7∶3划分为训练集和测试集,实验结果如表12所示.

表12 不同检测方法的检测结果对比

如表12 所示,SDMIM 得到的Accuracy、Precision、Recall 和F1 均优于文献[10]、文献[16]和文献[18]中的方法. 为进一步分析上述结果,本文将各方法在实验中未能正确判别的样本类型及数量进行了统计及分析,结果如表13所示.

表13 各方法判别错误样本统计及分析

6 总结

本文通过分析间谍软件在有/无诱导操作情况下的行为差异以及不同诱导操作和诱导强度对间谍软件诱发效果的影响,发现间谍软件在其诱导期调用的API数量明显多于其非诱导期,且不同的诱导操作及诱导强度对间谍软件所诱发产生的API 数量存在着不同影响. 基于该分析结果,本文提出了一种基于诱导机制的间谍软件检测方法SDMIM. 实验结果显示,SDMIM 对5种类型的间谍软件样本具有良好的检测效果. 间谍软件在诱导过程中调用的API数量增加,表明诱导式检测方案能够使间谍软件实施更多的行为以便对其进行检测,在高隐蔽性间谍软件检测领域具有巨大的应用价值. 后续将探索如何解决本方法对查杀类软件检测效果不佳的问题,以期进一步提高对间谍软件的检测效果.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!