APP下载

基于域名关联的恶意移动应用检测研究

2020-05-18蔡荣彦姚启桂何高峰

计算机工程 2020年5期
关键词:域名关联流量

蔡荣彦,王 鹤,姚启桂,何高峰

(1.国网福建省电力有限公司,福州 350003; 2.全球能源互联网研究院有限公司,南京 210003;3.南京邮电大学 物联网学院,南京 210023; 4.东南大学 计算机网络和信息集成教育部重点实验室,南京 211189)

0 概述

随着移动互联网的迅速发展,移动智能终端(如智能手机、平板电脑、智能手表等)已经成为日常社会活动的重要辅助工具。但移动智能终端的广泛使用也导致各类恶意移动应用攻击事件不断出现,例如:近期被检测出的Android恶意移动应用GM Bot,能够伪造美国运通银行、美国大通银行等50家大型金融机构的登录页面,并在3个月内感染超过20万用户[1];iOS恶意应用YiSpecter能够绕过iOS权限控制,任意卸载或安装其他应用,并恶意嵌入广告信息[2];在高级可持续威胁(APT)攻击如Luckycat中,恶意移动应用已成为新的攻击手段[3]。更为严重的是,恶意移动应用的新增数量和感染用户数一直呈现爆发趋势[4],并开始广泛借助代码混淆技术躲避杀毒软件的检测,移动智能终端安全正面临着严峻的考验[5-6]。

通过分析恶意移动应用的攻击行为可以发现,常见的如敏感信息泄露、网络渗透等恶意攻击大多通过网络进行,借助SMS短信的不足1%[7]。文献[8]统计结果表明,在5 560个不同Android恶意应用样本中,5 344个样本需要互联网访问权限,所占比率高达96.1%。因而基于网络流量的恶意移动应用检测已成为研究热点[9],且具有重要实际应用价值。为此,众多研究人员对基于网络流量的恶意移动应用检测开展了大量研究。文献[10]通过判断HTTP POST和GET请求中是否包含敏感信息(如IMEI、IMSI等),并结合远程服务器端的信誉度进行恶意移动应用测检测。文献[11]以发送和接收的报数字节数、网络状态(WiFi、蜂窝等)、应用状态(前台、后台等)为移动应用行为特征,利用机器学习方法建立恶意移动应用检测模型。实验结果表明检测率超过80%,误报率小于10%。文献[12]针对重打包恶意应用,首先选择类似应用,然后将待检测应用的网络行为同类似应用的网络行为进行比对,若行为差别超过一定阈值,则判断待检测应用为恶意应用。实验结果表明检测准确度大于90%。

现有方法可通过网络流量准确检测出恶意移动应用,但在实际应用部署中多存在不足,如分析流量内容的方式[10]无法适合用于加密流量,因而易于规避,且有侵犯移动用户隐私之嫌。网络行为建模方法[11-12]无需检测流量内容,适用于加密流量,能有效保护移动用户的隐私信息。但此类方法大多需要离线训练过程,且需要根据恶意移动应用行为的演变而更新检测模型,实际部署时代价较大。

本文提出一种基于域名关联的恶意移动应用检测方法。以移动设备为观察对象,分析移动应用产生的DNS流量。判断DNS请求解析的域名是否为恶意域名。若为恶意,则在流量中寻找与该恶意域名相关联的其他域名,并将这些域名作为识别特征进行移动应用的识别,从而检测出具体的恶意移动应用。

1 相关工作

恶意移动应用的检测方法主要可分为基于静态文件和代码特征[13-14]、动态行为特征[15-16]和网络流量特征[10-12]3类。由于本文提出的方法仅以网络流量为考察对象,因此本节将重点阐述基于网络流量特征的相关研究工作。

在发展早期,移动应用主要使用HTTP协议进行网络通信,因而诸多研究对HTTP流量进行不同角度的分析以检测恶意移动应用。文献[10]提出一种三步骤检测方法。首先识别HTTP POST/GET请求报文,然后在识别出的报文中查找用户身份敏感内容,如国际移动用户识别码IMSI和移动设备国际识别码IMEI等,若检测出敏感内容,使用WHOIS工具查询远端服务器的注册信息,并判断远端服务器是否为攻击者服务器。文献[17]对Android恶意移动应用产生的HTTP流量进行聚类研究,将聚类特征区分为HTTP流量的粗略特征和精细特征。其中,粗略特征即为统计类特征,包括HTTP请求数量、GET请求数量、POST请求数量、统一资源定位符URL的平均长度等,而精细特征为HTTP流量内容特征,包括具体的请求方法、页面内容、参数名称和参数值等。实验结果表明,恶意移动应用产生的HTTP流量与正常移动应用有着明显不同,而且粗略特征和精细特征有着类似的检测能力,即精细特征并不能带来更高的检测率。文献[18]提出CREDROID方法,结合APK文件分析、URL信誉度评分和HTTP流量内容3个部分进行恶意移动应用检测。实验结果表明,通过分析HTTP流量内容可以准确检测出恶意移动应用,并且能够识别泄露的敏感信息。

上述工作主要以HTTP明文内容为检测对象,因而无法适用于加密流量,如HTTPS流量等。文献[19]以平均报文长度、流平均长度、报文时间间隔等网络流量统计值为检测特征,利用机器学习分类方法进行Android恶意移动应用检测。由于不考虑流量内容,因此该方法适用于加密流量。在测试的48个移动应用样本中(包括正常和恶意应用),共成功检测出43个样本,准确率为93.75%。类似地,文献[11]利用线性回归、决策表、支持向量机等机器学习方法,以移动应用发送和接收的报数字节数、网络状态、应用状态为行为特征建立恶意移动应用检测模型,实验结果表明其检测率超过80%。

目前,Android恶意移动应用主要为重打包应用,即对正常应用进行反编译,然后植入恶意代码并重新打包发布[20-21]。重打包后的应用名称、运行界面和主要功能均与原应用一致,具有很强的迷惑性,普通用户难以区分。文献[12]提出一种基于行为对比的重打包应用检测方法。通过选择类似应用,将待检测应用的网络行为同类似应用的网络行为进行比对,若行为差别超过一定阈值,则判断为重打包应用。此方法以网络行为为考虑对象,不涉及流量内容,因而适用于加密流量,但如何选择合适的类似应用是一项挑战。文献[22]提出基于一种基于移动边缘计算的恶意重打包应用检测方法,其在移动边缘计算节点处对不同移动设备产生的同一应用流量进行聚类分析,从而准确发现重打包应用,从而克服文献[12]中需要选择类似应用的缺陷,直接以自身为比较对象,提升了检测的准确度。文献[22]方法同时以流量内容和流量统计特征为分析对象,可适用于加密流量。

现有基于网络流量的恶意移动应用检测研究主要从流量内容和流量统计特征两方面展开。分析流量内容的方法需要进行特征匹配,无法适合用于加密流量,且不利于移动用户的隐私保护。以流量统计数据为检测特征的方法需要借助机器学习相关方法(分类或聚类),实现过程较复杂,且需要解决概念漂移等问题[23]。本文提出的基于域名关联的恶意移动应用检测方法仅以移动应用产生的DNS流量为分析对象,无需分析流量具体内容或提取统计特征,操作简便,易于实际部署使用。

2 基于域名关联的恶意移动应用检测方法

本节将阐述基于域名关联的恶意移动应用检测方法的设计思想,在此基础上,分别对其中的恶意域名判别、域名关联和移动应用识别等关键技术进行详细介绍。

2.1 设计思想

基于域名关联的恶意移动应用检测方法整体流程如图1所示。首先观察移动设备产生的网络流量,记录移动设备产生的DNS域名查询流量,然后利用现有工具和特定算法分析流量中是否存在恶意域名。若存在,接着对时间特征进行聚类,寻找与该恶意域名相关联的其他域名,最后将关联域名转变为字符文本,使用信息检索方法识别出具体的移动应用,从而实现恶意移动应用的在线检测。

图1 本文检测方法整体流程

2.2 恶意域名判别

关于DNS恶意域名的判别,研究者已提出多种有效方法,如基于知识、基于机器学习等方法[24]。本文在现有工作基础上,采用一种本地与远程相结合的方法进行恶意域名的判别。首先将DNS域名与本地黑名单库进行比对,若存在,则判断为恶意域名。本地黑名单库可简单存储为文本文件,易于部署实现,其示例如图2所示。

图2 域名本地黑名单库示例

若域名不存在于本地黑名单库中,则继续查询远程服务器,如Virustotal(https://www.virustotal.com/)等。Virustotal集成了70多种安全扫描引擎,且特征库实时更新,可以准确有效地检测出恶意域名。由于Virustotal同时给出多个扫描引擎的检测结果,需要对检测结果进行综合分析处理。在本文工作中,对于待检测域名U,若有一项及以上检测结果标注为恶意,则判断U为恶意域名;否则,判断U为合法域名。如图3所示,对于域名ytfkch.com,67个检测引擎中只有CyRadar的检测结果为恶意。本文仍将其判别为恶意域名,从而减少漏报。

图3 Virustotal域名检测结果示例

2.3 域名关联

在检测出恶意域名后,需要确定对应的移动应用,即分析出是哪款移动应用试图访问该恶意域名。为此,设计域名关联步骤,寻找出与恶意域名相关联的其他域名。这些相关联的域名将作为识别特征,识别出具体的移动应用。移动应用识别将于2.4节中阐述,本节重点描述域名关联过程。

在本文工作中,关联域名定义为由同一移动应用所产生的DNS域名。以“百度”移动应用(com.baidu.searchbox)为例,其启动时会查询gss0.bdstatic.com、nsclick.baidu.com和browserkernel.baidu.com等域名。由于这些域名均由“百度”移动应用在运行时产生,因而为关联域名。在实际中,笔者观察到移动应用会在短时间内会产生多个DNS查询请求,如图4所示。

图4 DNS查询示例

图4中的DNS查询流量由“百度”移动应用产生,前7个DNS查询请求几乎同时发出,流量之间的时间间隔均较短(小于0.7 s)。通过分析可知,此流量特点与移动应用的使用特性相关。移动用户阅读完当前内容后,点击或划动屏幕以加载新的内容。移动应用此时需连接新的服务器获取相应内容,因而会同时产生多个DNS请求。在传统的Web浏览中也存在类似特点[25]。借助此特点,可以利用时间特征确定关联域名。

域名关联过程算法的具体描述如下:

输入捕获的DNS请求流量,恶意域名Um

输出与Um相关联的域名集合SU

//初始化

1.设定当前时间t=tUm;

2.SU=Um;

//前向搜索

3.While(true)

4.获取t时刻的前一条域名Ui和其捕获时间tUi;

5.If t-tUi<τ

SU=SU∪Ui;

t=tUi;

6.Else break;

7.End While

//后向搜索

8.t=tUm;

9.While(true)

10.获取t时刻的后一条域名Ui和其捕获时间tUi;

11.If tUi-t<τ

SU=SU∪Ui;

t=tUi;

12.Else break;

13.End While

14.Return SU

记检测出的恶意域名为Um,DNS请求流量的捕获时间为t,时间间隔阈值为τ。图5中的前向和后向搜索都以Um为出发点,寻找时间间隔小于τ,即连续出现的DNS域名(实验表明τ值设置为1 s较为合适)。这些连续出现的域名即为Um的关联域名。注意算法第5步和第11步中时间差值计算的不同。在第2步,关联域名集合SU初始化Um。最后,将关联域名集合SU返回,为后续的移动应用识别做准备。其中前向和后向搜索可同时进行,提高运行效率。

2.4 恶意移动应用识别

在获得关联域名集合SU后,执行移动应用识别流程,从而最终确定恶意移动应用的名称。恶意移动应用的识别流程如图5所示,其由识别流程由训练和识别两部分组成。

图5 恶意移动应用识别流程

训练部分如图5(a)所示,主要完成移动应用DNS域名的采集与处理。首先运行各种移动应用,包括已知的恶意移动应用和合法应用,然后采集其DNS查询流量并提取其中包含的域名。针对提取的域名,按点号“.”进行分割处理,如将gss0.bdstatic.com分割为{gss0 bdstatic com},从而形成一个个“单词”,并将“单词”写入文本文件保存,即每个移动应用都对应一个文本文件,该文件中存有移动应用产生的所有域名“单词”,文件名设置为移动应用的名称。最终得到的文本文件FM将作为分类样本,用于识别移动应用。此过程中的具体技术细节可参考笔者的前期工作[26]。

识别部分如图5(b)所示。将SU中的域名同样按点号“.”进行分割处理,将得到的所有“单词”保存为临时文件FT。然后将FT同分类样本库中的每个FM进行检索匹配,返回相似度最高的文件的名称,从而确定恶意移动应用的名称。文本检索匹配过程的实现采用TF-IDF和余弦相似度算法,具体步骤如下:

记文本文件为Fdoc,“单词”为wi,则wi的词频TF计算公式为:

(1)

wi的逆文档频率IDF计算公式为:

(2)

因此,wi的权重值可计算为:

Weight(wi)=TF(wi|Fdoc)×IDF(wi)

(3)

通过式(1)~式(3),可将文本文件Fdoc(包括FT和所有的FM)转变为等长度值向量,其中每个向量项即为wi的权重值,向量长度为文本文件(包括FT和所有的FM)中所含有的不同“单词”数量。

记FT所对应的向量为V(FT),FM所对应的向量为V(FM),向量长度为l,则FT和FM的最终比对过程即为计算向量V(FT)和V(FM)之间的相似度,计算公式如下:

(4)

需要说明的是,在训练过程中需要采集合法移动应用的DNS域名,其目的是为了检测出已知恶意移动应用之外的恶意重打包应用。若返回的移动应用名称为一合法应用,则表明移动用户安装的是该应用的重打包版本,而非原始版本,即黑客对原始合法应用进行了反编译,然后加入自己的恶意代码,并重新打包发布,诱使用户下载安装。本文提出的方法可有效检测出恶意重打包应用。

3 实验与分析

为测试本文方法的性能,从公开数据集AndroZoo[27]处下载200个合法移动应用和300个恶意移动应用。其中,200个恶意移动应用为重打包类型,与下载的200个合法移动应用一一对应,其余100个恶意移动应用为其他类型恶意应用。实验环境设置如图6所示。

图6 实验环境设置

针对下载的500个移动应用,首先将其运行于真实的智能手机中。若运行出错(如移动应用版本较早,无法运行于最新手机),则根据移动应用的API版本配置对应虚拟机进行安装运行。移动应用的安装运行均自动化进行。安装过程使用adb install命令实现。安装完成后,使用开源的DroidBot[28]自动点击产生点击事件,运行移动应用不同组件。移动应用流量的采集由检测服务器完成。检测服务器运行Ubuntu 16.04操作系统,并配置WiFi热点功能,智能手机及虚拟机均通过无线网络连接至该服务器。在检测服务器中,部署了tshark软件(https://www.wireshark.org/docs/man-pages/tshark.html)进行网络流量报文的抓取。DNS域名的提取同样由tshark完成,具体命令为tshark-e dns.qry.name。恶意移动应用的检测过程,包括域名与本地黑名单库的匹配、Virustotal API调用、DNS域名关联、移动应用识别等,均由Python代码实现。

在训练阶段,首先运行下载的200个合法移动应用和100个其他类型的恶意移动应用,采集提取其DNS域名。每个移动应用运行3 min。然后将域名进行“单词”化处理,按域名中的点号“.”进行分割,并将得到的“单词”保存于以移动应用名称命名的文本文件中,从而得出分类样本库。因此,实验中分类样本库所包含的文件数量为300。在测试阶段,逐个运行300个恶意移动应用,然后检测恶意DNS域名并通过与分类样本库的比对,确定对应移动应用名称。实验中产生的数据统计如表1所示。

表1 实验数据

实验结果主要从检测率方面进行衡量,具体计算过程如下:

设某一恶意移动应用M,其产生多个恶意域名。对于其中的某一域名UM,若能正确识别出其为恶意域名且由M产生,则判断检测正确,否则判断为检测错误。依据此定义,设测试阶段共产生R个恶意域名,正确检测出的数量为Q,则检测率d的计算公式为d=Q/R。

实验中共捕获了1 187个恶意域名,其恶意性的确定通过代码分析完成。通过反编译APK文件为JAVA代码,分析定位出具体的恶意代码,并将出现在恶意代码中的域名标记为恶意,从而保证数据标签的真实性。利用本地黑名单库(从http://www.malwaredomains.com下载)和Virustotal检测,共检测出1 187个恶意域名,即成功判别出所有的恶意域名。将图5中时间间隔τ的值从0.1 s递增至1.5 s,调整的步长为0.2,恶意移动应用检测率实验结果如图7所示。

图7 恶意移动应用检测率

由图7可知,恶意移动应用检测率d的值先随时间间隔τ增大而增加。当τ=1.1 s时,具有最高值97.1%;当τ>1.1 s时,d的值随τ的值增大而有所降低。此特性由图5中域名关联算法和DNS查询流量的时间特征所确定;当τ<1.1 s时,随τ值增大,所关联的域名数量越多,且如图4所示,τ<1 s时关联域名多由同一移动应用产生。因而文本匹配时准确度也就越高。当τ>1.1 s时,同样地,随着τ值的增大,所关联的域名数量越多。但此时会包含其他干扰域名,即由其他应用产生的域名,因而文档匹配时准确度有所降低。在实际中τ值设置为1 s较为合适。

为进一步检验本文方法,在实际的电力信息网络中进行部署测试。在为期一个月的测试(2019年3月1日—2019年4月1日)中,共检测出员工自带移动设备上的13款恶意移动应用。通过APK文件的反编译和代码分析,确认检测结果均为真实的恶意移动应用(均为Android重打包恶意应用),误报数量为0,结果表明本文方法可实际部署于网络中进行移动设备安全防护。

4 结束语

本文提出一种基于域名关联的恶意移动应用检测方法。以单个移动设备产生的DNS域名为检测分析对象,当发现恶意域名后,通过时间特征寻找关联域名,对关联域名同样本文件进行检索匹配,从而准确、快速地确定恶意移动应用的名称。基于公开数据集的实验结果表明,该方法对恶意移动应用的检测率可达97.1%,在实际的电力信息网络的部署测试中,检测发现13款恶意移动应用,且误报数量为0,其具有高检测率和低误报率,可有效用于移动设备的安全防护。由于本文方法的准确性依赖于恶意域名判别的正确性,因此下一步将对恶意域名的判别进行研究以检测未知恶意域名,并使恶意域名的判别仅在本地完成而无需访问远程服务器,以适用于生产控制网络和工业互联网。

猜你喜欢

域名关联流量
冰墩墩背后的流量密码
不惧于新,不困于形——一道函数“关联”题的剖析与拓展
张晓明:流量决定胜负!三大流量高地裂变无限可能!
寻找书业新流量
“一带一路”递进,关联民生更紧
Combosquatting域名抢注的测量研究
如何购买WordPress网站域名及绑定域名
奇趣搭配
智趣
五位一体流量平稳控制系统