APP下载

基于网络通信行为特征的间谍软件检测方法*

2023-01-06申国伟周雪梅

计算机与数字工程 2022年10期
关键词:会话网络通信间谍

徐 婷 郭 春 申国伟 周雪梅

(贵州大学计算机科学与技术学院公共大数据国家重点实验室 贵阳 550025)

1 引言

间谍软件[1]主要指在未经用户许可情况下收集并使用用户个人隐私数据或机密信息的计算机程序,是攻击者广泛使用的一种窃密软件。为便于叙述,本文将被植入间谍软件的一端统称为窃密端(类似正常软件客户端),将接收窃密信息的一端统称为接收端(类似正常软件服务端)。间谍软件被植入到窃密端后,会尽可能隐蔽窃取受害主机的隐私信息[2],这使得准确检测间谍软件成为恶意软件检测领域的一个难点。

现阶段基于特征码的检测技术[3]无法检测未在特征库中的间谍软件。而间谍软件感染主机后仅在不连续的较短时间段内执行其窃密行为[4],导致基于主机行为的检测方法对其检测漏报率较高。间谍软件作为以窃取数据为主要意图的恶意软件,将受害主机上窃取的隐私信息远程传送给攻击者是其必要步骤。当前,因特网是攻击者与间谍软件通信的主要通道。因此,本文重点关注间谍软件网络通信行为,从待检测主机的网络流量中提取间谍软件网络通信行为特征,构建一种基于网络通信行为特征的间谍软件检测方法(spyware detection method based on network communication behavior characteristics,SDMNC)。

本文主要工作如下:

1)实验分析多款间谍软件的网络通信行为,从间谍软件攻击意图角度探究间谍软件“网络通信阶段”存在的必然性,为设计基于网络通信行为的间谍软件检测方法奠定基础;

2)提出一种基于网络通信行为特征的间谍软件检测方法SDMNC。SDMNC从网络通信行为中提取会话持续时间、上行/下行数据包数量比、上行/下行数据量比等通信行为特征,运用机器学习算法建立检测模型实现间谍软件检测。

2 相关工作

当前恶意软件检测方法可以分为静态检测方法和动态检测方法。本文工作主要涉及的是基于行为特征的动态检测方法,该类方法主要分为基于主机行为特征的检测方法和基于网络行为特征的检测方法[5]。

2.1 基于主机行为特征的检测方法

基于主机行为特征的检测方法通过从某程序在主机中运行时所使用的系统资源信息(如系统API调用[6]、CPU使用信息[6]、进程网络行为[8]等)中提取特征来判断其是否为恶意软件。该方法被大多数研究者应用于检测间谍软件。

Majid等[9]通过监视键盘驱动程序栈的变化来检测键盘记录器。Javaheri等[10]通过监控与截取屏幕相关的API操作,实现对键盘记录器与屏幕窃取器的检测。武红涛[11]通过捕获间谍软件文件或注册表操作行为,结合贝叶斯算法进行间谍软件检测。基于主机行为特征的方法需要以软件的主机行为特征作为判定一个软件有无恶意性的依据。由于间谍软件执行其窃密行为的时长短,导致这类方法对间谍软件难以获取很高的检测率。

2.2 基于网络行为特征的检测方法

基于网络行为特征的检测方法通过提取恶意软件交互的网络通信流量特征作为依据来判断其是否为恶意软件。

JIANG等[12]使用数据包数量、数据包大小等七个特征,并采用随机森林(Random Forest,RF)算法构建模型对木马类恶意流量进行检测。王伟等[13]提出了一种使用原始流量数据结合卷积神经网络应用于恶意软件流量分类的方法,该方法以原始流量作为模型输入,减少了人工设计特征步骤。JIANG等[14]使用标志位、会话个数等八个特征,并采用XGBoost算法构建模型对木马流量进行检测。基于网络行为特征的检测方法以恶意软件的网络流量为分析对象,不受恶意软件使用的各种主机隐藏技术影响,但当前基于网络行为特征的检测方法应用于间谍软件检测的国内外相关研究较少。

3 间谍软件网络通信阶段分析

通过文献[11]的研究结果和本文的实验分析可知,间谍软件的生命周期大致包含传播、植入、潜伏、窃密、网络通信五个阶段。攻击者为实现通过间谍软件远程获取受害者数据的目的,将从受害者主机上收集的数据通过因特网等通道发送给攻击者是间谍软件必不可少的行为。因此,从间谍软件攻击意图的角度看,其具有存在“网络通信阶段”的必然性。

定义1(间谍软件网络通信阶段)本文将间谍软件发起的从TCP连接建立到释放连接之间的通信行为定义为一次数据通信行为,间谍软件实施数据通信行为的时间段即为其网络通信阶段。

为分析不同间谍软件网络通信阶段的存在情况及持续时长,本文搭建环境并收集15款间谍软件在60s内的网络通信行为(各软件在此期间至少有一次通信行为),结果如表1所示。所分析的15款间谍软件均具有网络通信阶段,其发送窃取数据所用的传输层协议均为TCP协议。此外,表1还显示所分析的间谍软件的网络通信阶段平均所持续时长t为1.2s,均远低于这些间谍软件60s的总运行时长T。

表1 间谍软件通信行为特性

4 基于网络通信行为特征的间谍软件检测方法

4.1 方法框架

由于间谍软件网络通信阶段存在的必然性,本文将间谍软件的网络通信行为作为对象,提出一种基于网络通信行为特征的间谍软件检测方法SDMNC。

本文将检测单元设为TCP会话,由{源IP地址、源端口、目的IP地址、目的端口、协议}五元组确定。如图1所示,SDMNC首先对收集的间谍软件网络流量进行TCP会话抽取得到间谍软件TCP会话集。相应地,SDMNC采集用户使用正常软件时所产生的网络通信流量并抽取其TCP会话,保留会话中由各内部主机发起的会话得到正常软件TCP会话集。之后,将会话集作为训练集并提取其中每个会话的流量特征并结合机器学习算法训练一个检测模型,用以判别各待检测TCP会话对应正常软件流量还是间谍软件流量。

图1 基于网络通信行为特征的间谍软件检测方法

4.2 特征提取

综合考虑检测精度和检测效率,SDMNC所采用的特征需要具有高区分度且特征数量不宜太多。本阶段进一步从会话持续时间、上行/下行数据包数量比、上行/下行数据量三个方面分析间谍软件网络通信阶段与正常软件数据交互的会话之间存在的区别,其中由间谍软件窃密端向间谍软件接收端的传输流量称为上行流量,反之即为下行流量。本阶段从所收集的正常软件会话集中选取三款正常软件的连续会话(每组30个),并在随机选取的三款间谍软件中各选取一组连续会话(每组30个)为代表进行图表展示。

4.2.1 会话持续时间

间谍软件通常按设定的时间间隔周期性发送数据,其窃密端发送数据量较小,故会话持续时间较短。而正常软件交互数据时其交互时长和数据大小均不定,但其不需要隐藏通信行为故其通信时长通常较间谍软件长。如图2所示,图中的各间谍软件的最大会话持续时间和平均会话持续时间均远少于正常软件。

图2 不同软件会话持续时间

本文提取会话持续时间这一网络通信行为特征,记为Tduration。首先抽取正常软件会话集(记为N)与间谍软件会话集(记为S),并获取N与S的会话数目。在提取Tduration时,将每个会话中第一条TCP流的时间视为该条会话的开始时间Tfirst(即对第i条会话,记为Tfirst-i),将每个会话中最后一条TCP流结束的时间视为该会话的结束时间Tend(即对第i条会话,记为Tend-i)。对于第k个会话而言,其Tduration特征通过式(1)计算。

4.2.2 上行/下行数据包数量比

间谍软件通信时除协议层面必要的数据包交互外,窃密端发送数据包给接收端但接收端不对其进行回应,导致该过程中数据包数量较少;而正常软件建立连接后客户端频繁进行请求,其服务端进行相应响应。如图3所示,图中各间谍软件会话的上行/下行数据包数量比的值通常小于正常软件。

图3 不同软件的上行/下行数据包数量比

本文提取上行/下行数据包数量比网络通信行为特征,记为Pratio。首先分别统计N与S中每个会话中上行数据流的数目(Pup)及其下行数据流的数目(Pdown)。然后计算得到上行/下行流量数据包的数量,并计算每个会话的Pratio,其中第i(i≥1)个会话的上行/下行数据流数目记为Pup-i或Pdown-i。对于第k个会话而言,其Pratio特征通过式(2)计算。

4.2.3 上行/下行数据量比

除去通信双方建立连接以及使用SSL加密协议所产生的必要的数据传输之外,间谍软件出于隐藏自身的需求其接收端通常仅接收窃密端的数据而不进行响应;而正常软件服务端和客户端交互数据由不同的请求和响应组成。如图4所示,图中各间谍软件会话的上行/下行数据量比值大小通常大于正常软件。

图4 不同软件的上行/下行数据量比

本文提取上行/下行数据量比网络通信行为特征,记为Dratio。首先统计N与S中每个会话中上行数据流的大小(记为Dup)及其下行数据流的大小(记为Ddown)。然后计算得到Dratio,其中第i(i≥1)个会话的上行/下行数据流数目记为Dup-i或Ddown-i。对于第k个会话而言,其Dratio特征通过式(3)计算。

由于所提取的三个特征的取值范围差别较大,SDMNC对这些特征的数值进行了归一化处理。

4.3 训练与检测

本阶段基于从网络通信阶段会话中提取的特征向量xk=(Tduration,Pratio,Dratio)构建间谍软件检测模型,用以区分正常软件与间谍软件流量。通过对所提取的特征向量添加类别标签(正常软件会话为0,间谍软件会话为1)得到训练集,然后使用机器学习算法(如支持向量机[15]Support Vector Machines-SVM、K近 邻[16]K-Nearest Neighbor-KNN、RF[17])训练间谍软件检测模型,最后使用训练得到的检测模型对测试集中的待检测会话进行检测以判别其属性。

5 实验

5.1 实验环境和数据集

本文在Vmware虚拟机中安装Windows 7操作系统作为间谍软件窃密端的运行环境,并在其中安装了WPS、360浏览器等常用正常软件,其中Ftp接收端与Email接收端分别处于内网和外网。实验的间谍软件如表1所示。正常软件包括迅雷、QQ等常用软件,如表2所示。

表2 实验所用正常软件

正常软件流量采集于安装有表2中正常软件的实验室内部主机的网络流量。实验中每个间谍软件每次收集约3h流量数据,并将其发送时间间隔在[1min,5min]之间进行设置。本次实验将收集到的正常软件流量与间谍软件流量划分为训练集、测试集1和测试集2。其中训练集用于训练检测模型,测试集1为训练集所包含软件在不同于训练集流量采集时间段所采集的流量,用于测试SDMNC对已知间谍软件流量的检测能力;将未在训练集和测试集1中出现过的Silent Keylogger、Spyrix Personal Monitor间谍软件产生流量作为测试集2中的间谍软件流量,用于测试SDMNC对未知间谍软件流量的检测能力。实验数据如表3所示。

表3 实验数据集

5.2 评估标准

本文采用准确率(Accuracy-ACC)、精确率(Precision-P)召回率(Recall-R)以及F1-score(F1)来衡量方法的检测效果。

5.3 实验结果及分析

5.3.1 实验结果

本文实验测试了SDMNC使用SVM、KNN、RF三种不同的机器学习算法来构建其检测模型时的不同检测效果。这些算法在实验中均使用默认参数。如表4、表5所示,分别给出了SDMNC使用不同机器学习算法对测试集1及测试集2进行检测得到的ACC、P、R和F1值。

表4 SDMNC在测试集1上获得的ACC,P,R和F1值

表5 SDMNC在测试集2上获得的ACC,P,R和F1值

如表4所示,SDMNC使用RF算法时获得的ACC、P和F1值最高,分别能达到99.2%、99.5%和99.5%;SDMNC使用KNN算法时获得的R最高,达到了99.8%。该结果表明SDMNC能够准确区分测试集1中的间谍软件流量与正常软件流量。

如表5所示,SDMNC使用RF算法时获得的ACC、P和F1值最高,其值分别为97.4%、98.8%和98.5%;SDMNC使用KNN算法时获取的R最高(99.8%)。该结果表明SDMNC对未知的间谍软件流量也有很高的检测精度。

为进一步评估SDMNC的检测效果,本文将其与文献[12]、文献[13]和文献[14]所提出的检测方法在本文数据集上进行对比实验,结果如表6和表7所示。

表6 不同方法在测试集1上获得的ACC,P,R和F1值

表7 不同方法在测试集2上获得的ACC,P,R和F1值

如表6和表7所示,对比四种检测方法在测试集1和测试集2上的检测结果,可以看到SDMNC在ACC和F1这两个综合指标上均明显优于文献[12]、文献[13]和文献[14]的方法。该结果表明,与文献[12]、文献[13]和文献[14]的方法相比,SDMNC能够以更高的准确率区分间谍软件流量与正常软件流量。

5.3.2 实验结果分析

为进一步分析本文所提方法,本文对比了文献[12]、文献[13]和文献[14]方法中的特征数量以及训练及检测的时长,结果如表8所示。

表8 不同方法的训练及检测时长

由表8可以看到,文献[12]和文献[14]均使用机器学习算法训练模型,但它们所使用的特征数量(分别为7个和8个)均多于SDMNC所需特征数量(3个)。文献[13]的方法通过卷积神经网络训练检测模型,其模型训练复杂度相对较高。使用不同的特征数量或算法使得这四种方法所需要的训练和检测时长不同。如表8所示,与SDMNC(使用RF算法)相比,文献[12]、文献[13]和文献[14]方法都需要更长的训练时长;而在检测时长方面,SDMNC所用的检测时长也较另外三种方法短,其分别仅需0.024s和0.012s即可完成对测试集1和测试集2的检测。综合精度和效率的结果,可以发现SDMNC相比几种对比方法具有更高的检测精度和检测效率。

SDMNC使用上行/下行数据包数量比、上行/下行数据量比、会话持续时间等三个通信行为特征进行间谍软件检测。为了研究不同特征对SDMNC检测精度的影响,本文设计了消融实验,实验结果如图5、图6所示(注:特征1~3分别指代上行/下行数据包数量比、上行/下行数据量比、会话持续时间)。

图5 SDMNC在测试集1上的消融实验结果

图6 SDMNC在测试集2上的消融实验结果

由图5和图6可知,移除三个特征中的任一个均对SDMNC在测试集1和测试集2上的检测精度产生了明显影响,并且移除不同特征对于SDMNC检测精度的影响程度相近。由此可知,三个特征对SDMNC的检测精度均贡献明显且它们的贡献度相近,无需对各个特征赋予不同的权重。

6 结语

本文从间谍软件窃取数据的意图出发,重点关注间谍软件的网络通信阶段,以间谍软件在该阶段传输所窃取数据的通信行为作为检测依据,利用从中提取的三个网络通信行为特征结合机器学习算法构建了一种间谍软件检测方法SDMNC,旨在高准确率地检测间谍软件。实验结果显示SDMNC使用RF算法时在已知和未知间谍软件测试集上分别可以获得99.2%和97.4%的ACC值,表明从间谍软件网络通信行为对其进行检测的有效性。本文后续工作将综合考虑间谍软件的主机行为和网络行为,旨在进一步提升间谍软件检测的检测效果。

猜你喜欢

会话网络通信间谍
小间谍哈瑞特
寻找真正的间谍
QQ和微信会话话轮及话轮转换特点浅析
谁是间谍?
基于网络通信的智能照明系统设计
计算机网络通信常见问题与技术发展研究
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
基于集群节点间即时拷贝的会话同步技术研究①
间谍混进来了