TIFS15_Analyzing Android Encrypted Network Traffic to Identify User Actions

#paper #android

这篇文章中作者考虑了一种新的攻击场景,攻击者不再是对Android设备进行攻击,而是从网络端来窃听该设备的网络流量(例如控制一个wifi热点),攻击者可以据此推断出用户在操作手机时产生的具体行为。

依然涉及到网络流量加密的问题,现下大部分的app都采用了SSL或者TLS来加密通信。本文的工作主要就是通过分析加密流量来确认用户在其手机上的行为:例如收/发Email、浏览某人的社交网络简介、发布一个post/tweet等。SSL/TLS虽然对packet的内容进行了加密,但是并没有对网络包模式(networks packets patterns)进行很好的保护,而正是这一点有可能显示出一些敏感的用户行为信息。

举例了几种可能使用该方法的攻击场景:

  • 政府审查可能会使用该方法来确认一个异见分子发布反政府言论的匿名社交网络账号。通过该方法来比较匿名用户发布博文的动作时间,政府可以猜测到匿名的账号的身份。
  • 通过追踪两个用户之间的交互行为,并考虑到通信潜伏期,攻击者可以推断出用户之间是否存在通信。
  • 攻击者可以通过被害人的生活习惯建立一个行为文件,例如起床时间、工作时间。可以作为识别用户的指纹信息,来在网络流量中识别一个用户的具体身份,即使该用户使用了不同的设备接入互联网。

他们设计的框架分析网络流量使用的是TCP/IP包中的信息,例如IP地址和端口、包的长度大小、流量进出口方向以及时间。采用了7个主流app作为分析对象,并使用机器学习的方法来独立的分析每个app产生的流量。

讲了一些相关的工作,重点是:Unfortunately, none of the aforementioned works was designed for (or could easily be extended) to mobile devices.

他们同时使用了监督学习方法和非监督学习方法。监督学习方法采用了Random Forest来实现集齐分类器,Random Forest采用了一个标准的机器学习技术“decision tree”。

框架方面,分成了两部分:“pre-processor”“traffic classifier”

预处理部分:1)使用了域名过滤器来选择只属于分析对象app的流量;2)对过滤过的流量进行再过滤,去除一些会降低准确性的包,例如ACK包和重传包;3)限制了生成时间序列的长度。

域名过滤主要采用了IP地址来判别目的服务器,但是很显然,不太可能知道一个app的所有服务器的地址,为了克服这个困难,他们只对已明确知道目的IP地址所属服务器的app流量进行分析……(好想呵呵啊)采用了WHOIS协议来实现这个目标。同时,他们也考虑了一些app可能会采用第三方服务器(例如Akamai/Amazon)的情况。

超时机制:当超过4.5秒不再接收到新的包时就认为该段流量已结束。

包间隔:是为了关注于流量的特定部分。

实验过程中:利用Wireshark捕捉流量文件,保存为csv格式。每个包包含的信息有:源和目的IP地址、端口号、字节长度和时间、协议类型以及TCP/IP flag。

可以看两个图:

可以明显看出单个app的不同操作产生的流量模型不同,不同的app所产生的流量模型也不同,所以作者的意图就是通过机器学习可以对流量进行识别出具体的app的操作。训练已分类的流量,来预测新流量里的具体app操作动作(利用的Python库 scikit-learn)。

简单来讲其实还是蛮简单,只不过是把前人在web端检测流量的一些方法拿到了Android移动端,但是作者做的早,文章写的漂亮,图也做的好看,所以发了TIFS……还是可供参考的,起码知道在流量监测方面还是可以识别出具体app的具体行为,虽然作者是通过已知的IP地址来分辩服务器……对我还是很有参考价值的,另外,看来机器学习真的需要学习。