Android恶意软件的网络级行为聚类分析

来源:Android Malware Clustering Analysis on Network-Level Behavior

摘要:Android成为当今最受欢迎的智能手机操作系统。然而,恶意应用对Android平台提出了巨大的威胁。许多恶意软件的目的是窃取用户的个人信息或通过网络控制用户的设备。在本文中,我们通过分析HTTP流在网络级别上的统计信息来展示如何有效地集群网络行为。为此,我们观察了8000多个恶意软件生成的HTTP流的特定统计信息。最后,我们使用集群技术将恶意软件的网络分成七个不同的集群。我们的评估实验表明,相同集群中的HTTP流具有相似的网络行为,不同集群之间存在较大差异。这种相似性和可变性表现在某些特定的网络级统计特性上。此外,为了更直观地展示研究结果,我们对原始特征进行了降维处理,并在二维空间中展示了最终的聚类结果。

1介绍

今天,Android平台成为智能手机上最流行的操作系统之一。在不同的应用程序市场上有数百万个应用程序,它们为用户提供丰富的功能。这些庞大的应用程序方便了用户的日常生活,也为用户提供了更多的娱乐服务。[1]最近的一份报告显示,谷歌Play Store的应用程序数量从2009年12月的1.6万个增加到2016年2月的200多万个。不幸的是,Android平台上运行的智能手机逐渐成为攻击者的目标,并受到恶意应用程序的感染。与其他平台相比,Android允许用户通过多种方式安装应用程序,如应用市场和论坛,这使得恶意软件很容易传播。根据最新的[2]报告,2016年恶意安装包的数量超过850万个,是2015年的三倍多。

Android平台提供了一些安全措施来加强恶意软件的安装,比如Android权限系统。为了在设备上执行一个明确的任务,例如打电话,每个app在安装app的过程中都必须向用户请求明确的权限。但是很多用户往往忽略了这个权限的含义,削弱了权限系统的初衷。在实践中,恶意应用很难被Android权限系统控制。

在本文中,我们主要研究恶意软件产生的HTTP流的网络级行为集群。由于HTTP协议是恶意软件与攻击者通信的主要手段,因此我们关注HTTP流的统计信息。事实上,Zhou等人的[10]已经表明,超过90%的受恶意软件感染的移动终端是由僵尸网络通过网络或短信命令控制的。他们的观察让我们了解到应用程序的网络行为。同一恶意软件的不同变种或同一科内的不同恶意软件会表现出类似的恶意活动。我们根据网络行为的相似性对这些网络流进行聚类,然后分析每个聚类的共同网络行为。综上所述,本文的主要贡献如下:

•我们分析了大量的恶意网络流量数据,然后提取了七个统计特征,可以有效地描述每个HTTP流量。

•使用k - means聚类算法将网络流量分成七个簇。最后,将具有相似网络行为的流聚集到同一个集群中。

•我们使用TSNE[21]工具来减少网络级特征的维数,并在低维空间中可视化流的聚类结果。

论文组织如下。第2节介绍此解决方案的详细信息。第3节给出了评价,第4节讨论了与我们的解决方案相关的工作。最后,第五部分对全文进行总结。

2方法

我们提出了一个解决方案的集群和分析网络级的恶意软件的行为。所提议的办法经过几个执行阶段。关于拟议工作大纲各阶段的详细讨论如下:

a)流量收集。我们专门设计了一个Android流量收集平台来生成所需的网络流量数据(2.1节)。

b)流量预处理。设计了一个流提取算法来帮助从混合流量文件中提取单个HTTP流(第2.2节)。

(c)特性分析。我们提取了七个网络级特性来描述每个HTTP网络流。同时对特征进行分析处理(2.3节)。

(d)流量聚类。我们使用K-Means聚类算法对具有相似网络行为的HTTP流进行聚类,并分析每个聚类的共同网络行为(第2.4节)。

2.1流量采集

我们设计了Android流量收集平台,用于收集大量恶意软件生成的流量数据,并部署在暨南大学校园网中。为了保证流量采集框架的安全性,在校园网关上部署了防火墙和NAT服务器。如图1所示,该平台由控制中心、app存储与流量管理服务器、流量生成与采集三部分组成。这三个部分共同完成了Android网络流量的生成和获取。控制中心通过局域网交换机与流量产生采集部分和app存储流量管理部分连接。控制中心负责调度任务。app存储服务器中的每个Android应用都被控制中心分配到流量生成和收集部分的流量收集机。所有备用机器都可用于生成和收集网络流量。此外,收集到的流量文件将被传输到流量管理服务器。每个流量收集机器通常由两个进程组成。它们分别执行一个app和收集app生成的网络流量数据。我们在几个模拟器上运行这些应用程序,模拟器由Android工具monkey自动驱动。当应用程序运行时,monkey工具可以随机向Android设备发送一些事件。为了确保我们收集的网络流量数据是由特定的app生成的,我们每次只在一个模拟器设备上执行一个app。采集到的流量数据保存为PCAP格式文件,论文[11]详细描述了该Android流量采集平台。

2.2流量预处理

众所周知,网络流是app与网络交互的基本单元。我们从流量采集平台获取的原始网络流量数据是由app在最初几分钟内生成的。但是,app生成的大量HTTP流与其他HTTP流混合在一起,我们应该将每个完整的流与混合流量分开。我们提出了一个算法,可以提取每个完整的HTTP流。具体过程如算法1所述。该算法的输入为采集到的流量(原始流量文件),输出为单独的HTTP流。该算法由Python脚本和T-shark命令组合实现。

2.3特性分析

特征选择。许多网络流量特征用于检测恶意活动或识别网络安全领域的特定网络行为。我们在建议的方法中选择的特性是基于不同的恶意软件行为。这些特性来自论文[12]。论文作者[12]还指出,七个特征特别具有代表性。同时,他们的实验结果证明了这七个特征可以完全区分网络流量的良性和恶意。原因是这七个特性可以完整地描述HTTP网络流的特征。在本文中,我们使用这七个特性来分析恶意软件产生的恶意网络流量数据。表1总结了这七个特性。

数据归一化。数据规范化是数据挖掘的基础工作。不同的评价指标具有不同的维度,值之间的差异可能很大,因此直接分析原始数据可能会影响最终的结果。为了消除维度和取值范围的差异所带来的影响,需要对数据进行标准化处理,即按特定区域比例缩放数据。最大标准化是一种流行的数据标准化方法,用于处理流量特征数据。它对原始数据执行线性更改,并将值映射到0和1之间。转换公式如式1所示。

其中max为样本数据的最大值,min为样本数据的最小值。x*表示规范化的数据x。最小-最大标准化保留了原始数据中存在的关系,是消除数据维度和范围影响的最简单方法。

2.4流量聚类

恶意软件族分类方法很多,其中很多是基于对恶意软件源代码的静态扫描,将恶意软件划分为不同的族。但是,此方法不适用于网络级别。也就是说,虽然来自同一家族的恶意软件具有相似的恶意代码片段,但恶意网络行为不一定相似。基于此考虑,我们计划从网络流量层面对恶意网络行为进行聚类。

聚类技术在恶意软件检测中得到了广泛的应用,也可以通过在线学习不加标记的方式检测未知的恶意网络流量。目前已知的聚类算法有很多,如K-Means聚类算法、分级聚类算法、基于密度的聚类算法等。每种算法都有自己最适合的应用场景。为了为我们的数据集选择最佳的聚类算法,我们使用主成分分析(PCA)算法对网络流量数据进行约简,并将降维后的数据可视化,最后我们选择K-Means算法对流量流进行聚类。

K-Means是最简单的无监督学习算法之一,它解决了众所周知的聚类问题。该算法需要指定集群的数量。它可以很好地扩展到大量的样本,并已在许多不同领域的广泛应用领域中得到了应用。在我们的实验中,使用K-Means算法将总共8960个恶意HTTP流聚集成7个集群。

数据可视化。使用著名的聚类结果可视化工具TSNE[21]对聚类结果进行可视化。TSNE的设计是实现高维数据的可视化。我们总是喜欢用直观的方式展示研究结果,聚类也不例外。但是,当特征数量通常较高(超过3个)时,通常很难直接用原始特征来显示聚类结果,而TSNE提供了一种有效的数据约简方法,可以在低维空间中显示聚类结果。图2显示了二维空间中的聚类结果。不同的颜色代表不同的聚类,样本在一个聚类中共享相同的颜色。由于K-Means是基于样本之间的距离进行分割,因此图2中每个簇的样本数量并不一致。


3.1数据集

我们最初的恶意应用程序集来自VirusShare.com网站[13],这是一个恶意软件样本库,为安全研究人员提供。这些恶意软件总共包含8203个样本,从2015年到2017年在VirusShare.com网站上共享。利用我们自己设计的流量收集平台,恶意软件生成14.2 gb的网络流量数据。我们从这些流量数据中提取了113,735个HTTP流。

需要注意的是:并不是所有由恶意app产生的网络流量都是恶意流量。很多恶意软件来自于重新包装的良性软件,所以恶意软件也包含了良性软件的基本功能。它们产生的网络流量混合了良性和恶意网络流量,甚至大部分流量都是良性的,只有一小部分是恶意网络流量。为了保证训练集标签的准确性,我们对恶意app产生的网络流量进行了选择操作。我们提取每个流的主机或目标IP字段,并将其上传到Virustotal。如果主机或目标IP是恶意的,则流被视为恶意的。将该恶意网络流量作为训练集的一个样本加入到我们的恶意流量数据集中。最后,我们从恶意流量中得到了8960个具有准确标签的恶意流量。

3.2聚类评价

在我们的数据集中,每个样本的ground truth label是未知的,因此评估必须使用模型本身。目前已知的两种没有数据集标签的聚类评价指标分别是 silhouette 系数和Calinski-Harabaz指数。

silhouette 系数。 silhouette 系数[22]是对聚类的一种评价,其中 silhouette 系数得分越高的模型聚类定义越好。每个样本的 silhouette 系数由两个分数组成:{a:样本与同一簇内所有其他点的平均距离。{b:一个样本与下一个最近的簇中所有其他点之间的平均距离。将单个样本的 silhouette 系数s表示为式(2):

一个簇中所有样本的 silhouette系数取每个样本剪影系数的平均值。测量的范围是-1到1。 silhouette分析可以用来研究得到的簇之间的分离距离。 silhouette图显示了一个集群中的每个点与邻近集群中的点之间的距离,从而提供了一种评估参数(如集群数量)的方法。靠近+1的 silhouette系数(这些值被称为剪影系数)表明样本距离邻近的星团很远。0表示该样本位于或非常接近两个相邻集群之间的决策边界,负值表示这些样本可能被分配到错误的集群。

在我们的评价实验中,我们使用 silhouette分析来选择最优的聚类数目。图3显示了设置不同的簇号k值时 silhouette系数的不同值。在图3中, silhouette图显示不同簇数k下的 silhouette系数非常接近。我们设置的簇数分别为5、6、7、8,不同簇数对应的 silhouette系数分别为0.50、0.50、0.52、0.48。由于 silhouette系数最大,因此将簇数的最优值设为7。集群的大小从 silhouette图的厚度也可以被可视化。分配给cluster 3的样本数量最大,cluster 6在cluster 7时拥有少量样本。

Calinski-Harabaz指数。如果不知道ground truth标签,也可以使用calinski-harabaz指数来评估模型,其中calinski-harabaz得分较高的模型具有更好定义的集群。对于k个簇,calinski-harabaz评分s表示簇间离散度均值与簇内离散度之比:

其中BK为组间弥散矩阵,WK为簇内弥散矩阵,定义为:


N为数据中的点的个数,Cq为簇q中的点的集合,Cq为簇q的中心,c为E的中心,nq为簇q中的点的个数。在前面的步骤中,我们根据廓形系数确定了K的值。当K值设为7时,对应的calinski-harabaz指数为10145.46。

3.3网络行为分析

我们使用7个网络级统计特性将恶意网络流量分成7个集群,集群标签分别是cluster 0、cluster 1、cluster 2…和cluster 6。每个集群中的HTTP流数量分别为1303、122、2070、4351、2、839和3。其中,我们可以发现大部分HTTP流被分为cluster 0、cluster 2和cluster 3,所占比例分别为15.54%、23.10%和48.56%。

此外,我们还计算了图4和图5中每个聚类中所有特征的均值和方差。由于原始数据中各个指标和值之间存在较大差异,我们在图4和图5中所示的数据都经过了最小-最大归一化处理,便于分析和表示。横轴表示我们选择的七个统计特征,它们对应于表1中的描述。纵轴表示不同簇的均值和方差值。从两个图中可以看出,每个簇的均值和方差是不同的,特别是0簇和3簇的均值和方差都比其他簇高很多。我们可以得出结论,恶意流量数据种类繁多,每一种恶意流量数据都有其特定的网络特征,因此对这些行为进行细粒度分析是一项必要的工作。


4相关工作

近年来,关于Android恶意软件分析与检测的研究方法有很多。这些方法大致可以分为静态分析、动态分析和基于网络的流量分析。静态分析方法在恶意软件检测中比较流行,如[3-5]。然而,静态分析受到恶意软件的代码多态性和代码混淆[6]的挑战,这些代码多态性和代码混淆被用来生成恶意软件的变种以逃避检测。动态分析方法,如[7-9]可以在运行时监视应用程序的行为。虽然这种方法对于识别恶意行为非常有效,但是app运行时的监控需要承担大量的开销,因此这种方法不适用于移动设备。

该工作[14,15]研究了恶意软件在系统级的集群化。具体而言,本研究[15]提出了一种基于恶意软件系统事件的可伸缩恶意软件聚类算法。他们首先进行动态分析,以获取恶意软件程序的执行轨迹。然后将这些执行跟踪概括为行为概要,这些行为概要用更抽象的术语来描述程序的活动。相比之下,基于网络流量的方法开销小,效率高。在以往的工作中,对恶意软件自动生成网络签名进行了一些探索[16-18]。特别是[17]使用聚类技术将蠕虫流分割为不同的蠕虫类,但这种聚类算法不适用于大量的流量数据集。在论文[19]中,作者提出了FLOWR,这是一个通过流量分析不断学习应用程序的特征来自动识别移动应用程序的系统。FLOWR只关注HTTP头文件中的键值对,并智能地识别适合应用程序签名的键值对。[20]研究通过分析移动僵尸网络产生的HTTP流量,提出了一种对移动僵尸网络进行分组的有效方法。他们还从HTTP头文件中提取了一些统计特性,用于Android恶意软件检测。

一些恶意软件比其他的更危险,因为它们在后台连接一些恶意的远程服务器来获取命令或泄露用户的隐私数据。由于每个恶意软件的恶意性能不同,其产生的恶意网络行为也有很大差异。不同的恶意软件可以根据这些差异进行区分。考虑到恶意软件网络级行为集群的严重性,本文分析了它们的网络流量行为,并观察了恶意软件网络行为的偏差。

5结论

在这篇论文中,我们分析了一个恶意软件产生的恶意网络流量。我们提取了七个统计特征,可以描述恶意软件的网络行为。通过将网络流聚类成不同的簇,我们观察到属于同一簇的网络流具有相似的统计信息,即它们具有相似的网络行为。此外,利用聚类结果可视化工具TSNE对数据进行降维处理,实现了二维空间流数据的可视化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容