如需转载请注明出处,侵权必究。
论文题目:FOAP: Fine-Grained Open-World Android App Fingerprinting
发表会议:Security 2022
本文作者是JianFeng Li,来自香港理工大学Xiapu Luo教授团队。团队的主要研究方向是网络安全和隐私、区块链/智能合约等。
概述
加密技术已经被广泛应用于移动应用的通信中,但攻击者仍然能够通过应用指纹攻击(App Fingerprinting Attacks,AF攻击)这样的侧信道手段从加密流量中获取应用使用者的隐私信息(如识别出用户使用的应用或推断特定用户的行为)。目前的AF攻击技术主要是通过机器学习训练出的模型来进行流量的识别,但现有的工作存在两大问题:一、误报问题。基于封闭世界假设(Closed World Assumption)下训练的模型在现实世界的开放世界设定(Open World Assumption)下的对于流量的识别是不精确的;二、检测粒度较粗。现有的工作只能够从应用级(App-Level)去分析流量,因此无法分析得到用户更细粒度的敏感操作。
为了解决这些问题,本文提出了一种基于开放世界设定的、具备方法级(Method-Level)检测粒度的、多模型协同的AF攻击技术框架,即FOAP(Fine-grained Open world Android App Fingerprinting)。本文实现了FOAP的原型工具,并做了充足的实验评估,结果表明,FOAP具备比现有工具更高的准确性,且能够有效地完成细粒度的用户行为推断和用户隐私信息分析。
AF攻击
如图1所示,本文提到的AF攻击指的是攻击者通过技术手段在无线网络接入点(Wireless Access Point)嗅探通过该AP访问互联网的网络流量,并从这些流量中识别出其对应的应用或应用行为信息,进而推测出用户的行为或隐私信息的行为。在这里,网络流量被定义为一系列通过源和目标地址、端口号作为唯一组合以及使用的特定传输协议来标识的套接字与套接字之间进行通信的数据包。本文主要研究基于TCP协议的网络流量。本文假设网络流量是被加密的,攻击者无法获取数据包的明文信息。此外,本文还假设攻击者能够通过源地址获取到发出数据包的源设备但是无法根据目标地址获取目标设备。
图 1 AF攻击的威胁模型
数据包突发与入口点方法
数据包突发(Packet Burst)指的是网络流量中一个时间间隔内发送的数据包的子序列。比如给定一个时间阈值ε,如果数据流中的某些连续数据包的发送时间间隔小于ε,就称这些数据包构成一个数据包突发。
入口点方法(Entry Point Method,EP方法)指的是应用中用户在进行交互操作时会触发的入口方法。例如,当一个用户点击一个UI组件(比如按钮),这个组件便会触发一个特定的回调方法与服务器或者其他网络服务通信,该回调方法便可以看做是一个EP方法。
本文观察到,当应用的一个EP方法被触发时,通常会形成数据包突发。
现有工作问题
封闭世界假设和开放世界设定的矛盾与误报
现有的主流AF技术将应用的识别问题作为多分类问题(Multi-class Classification Problem)来处理。这种训练方式其实是基于封闭世界假设的,即假定我们在进行AF攻击时遇到的产生流量的应用都是在训练模型过程中出现过的。但在开放世界设定中并非如此,如果作为负类的应用没有在训练过程中出现,误报的可能性同样会大大增加。所以,一项有效的AF技术应当是基于开发世界设定的,即能够很好地处理实际应用中由于非目标应用的出现对检测效果导致的干扰。
现有工作的识别粒度问题
现有的AF技术的识别粒度上的问题主要体现在只能做到粗略地识别网络流量来源于哪个应用或安卓Activity(比如用户正在使用微信),而不能确定用户进行哪些具体的操作(比如用户正在进行朋友圈的评论)。然而,细粒度的分析是有必要的。更细粒度的分析能够让AF技术获取到更丰富的用户隐私信息,达到更好的攻击效果。此外,更细粒度的分析意味着能够在用户具体行为的识别上更精确,这能够对恶意行为的识别或隐私泄露检测的检测提供帮助。
FOAP概述
针对现有工作的问题,本文实现了一个名为FOAP的AF技术框架,该框架能在开放世界设定下完成方法级粒度的分析。
FOAP的核心做法大致能够分为两部分。在应用粒度的流量识别上,FOAP利用局部相似性(Local Similarity)和结构相似性(Structural Similarity)这两个量化标准先过滤掉与需要识别的应用相关性较低的网络流量,随后通过一个两级识别模型(Bilevel Recognition Model)对流量进行分析从而完成应用的识别;在方法粒度的流量识别上,FOAP利用EP方法与数据包突发相关联的特性,对前一步中识别出的特定应用流量做进一步的分析完成方法级的流量识别。
如图2所示,FOAP的实现可以被分为两个阶段:训练阶段和识别阶段。接下来,将对这两个阶段做详尽的讲解。
图2 FOAP的工作流程图(训练阶段被标为红色,识别阶段被标为蓝色)
FOAP训练阶段
给网络流量打标签
为了给收集的应用网络流量打标签,需要将网络流量和应用以及EP方法关联起来。为此,作者对操作系统中的Socket API进行了插桩,以获取每个TPC Socket对应的唯一的4维元组(源/目标端口,源/目标地址)以及Socket对应的PID和TID。
在应用和网络流量的关联上,基于安卓应用的包名会在/proc/PID/cmdline文件中记录的特性,作者通过在运行应用过程中获取到的Socket对应的PID去访问对应的文件获取相关信息,从而完成了相应的网络流量和应用的关联。
在EP方法和网络流量的关联上,基于安卓应用的Socket操作通常是在非-UI组件线程中进行的特性,作者总结了利用clone函数、利用Message机制和利用线程池三种不同的情况,并分别对三种情况做建模处理得到发送网络数据流过程中的方法调用堆栈,通过Socket对应的TID相匹配便可以完成网络流量和EP方法的关联。此外,针对UI回调方法为EP方法的情况,作者会利用资源ID(Resource ID)来帮助EP方法和UI组件完成关联。
提取网络流量的特征向量
作者从五个方面基于123个关键特征为每个网络流量提取了123维的特征向量,用于后续的模型训练,特征包括:
-
39项时间特征。作者考虑了双向和出入站数据包的到达情况。对于每一种情况,作者会提取数据包间间隔时间的平均值、最大值、最小值和标准差等;
-
51项数据包大小特征。作者同样分别考虑了双向和出入站数据包大小的统计信息,包括平均值、最大值、最小值等;
-
20项交互模式特征。这些特征是基于一个特定的函数来进行描述的,具体可见原文;
-
5项数据包速率特征。这些特征指的是一定时间窗口内数据包数量的平均值、最大值、最小值等;
-
8项一般特征。这些特征包括双向和出入站数据包的总量、入站/出栈数量的百分比等。
在完成流量的打标和特征向量的提取后,用于训练模型的数据集便构建好了。他们会用于流量分段(Traffic Segmentation)、流量过滤(Traffic Filtering)、流量识别(Flow Recognition)和方法级用户行为识别(Method-Level User Action Identification)阶段的模型的训练上。
FOAP识别阶段
应用级的流量识别
在开放世界设定下的挑战在于如何减少由于在模型训练过程中没见过的应用所导致的误报数量。为了解决这个问题,FOAP采取以下几步处理:
第一步是流量分段,其目的是将网络流量按照不同的时间段进行分割,从而使得某些时间段的网络流量段能够表征目标应用的活跃时间段,进而帮助完成非目标应用流量的过滤。首先,FOAP对于每个输入的网络流量都会提取相应的特征向量;而后,FOAP会计算网络流量的局部相似性,该数据是通过比较网络流量的特征向量和目标应用程序的特征来完成的;再后,作者会基于局部相似性将网络流量划分为不同的时间段。
第二步是流量过滤,其目的是通过过滤掉与目标应用不相关的应用,筛选掉模型训练期间没有见过的应用的流量来帮助FOAP专注于与目标应用具有结构相似性的流量段,从而降低模型在开放世界设定下的误报问题。具体的实现可以分为以下三步:
1) 流模式挖掘。这里的流模式用于描述网络流量的特征,包括数据包的大小、时间间隔方向等;
2) 结构相似性计算。结构相似性是用来表征某一流量段与目标应用在多个流模式的相似性的量化标准,作者利用第一步的量化数据通过一个特定的数学方程来计算结构相似性,具体的数学推倒请参阅论文原文。
3) 过滤流量段。利用结构相似性,FOAP能够过滤掉与目标应用不相关的流量段,如图2中的Traffic Filtering模块所示。
第三步是流量识别。尽管经过了流量过滤,得到的流量段当中仍然会包含来自后台服务和其他应用的网络流量。因此,为了不影响识别的准确性,FOAP会对每个网络流量进行特征向量和网络流量间的的上下文信息的提取。随后,FOAP会利用这两类信息,使用一个双层识别模型来识别网络流量,该模型在第一层会使用特征向量来进行初步的识别,在第二层使用上下文信息来做二次识别以进一步确保结果无误。
方法级的流量识别
FOAP通过数据包突发与EP方法相关联的特性来帮助完成方法级的流量识别。这包括以下几个步骤:
1) 数据包突发信息提取。FOAP首先会将网络流量分解成一系列的数据包突发,并提取这些数据包突发的特征向量,同时将这些数据包突发和对应的EP方法和时间戳相关联;
2) 突发的时空上下文信息提取。FOAP随后会对这些数据包突发的时空上下文信息进行提取并建模,以此更准确地反映这些数据包突发与特定用户操作的关系;
3) EP方法的迭代式推断。FOAP最后会使用一种迭代式的推断方法来识别触发这些网络突发的EP方法,具体的,FOAP首先回味每个数据包突发分配一个EP方法标签,然后再迭代过程中使用时空上下文来优化这些标签,直至标签收敛。
完成后,FOAP便能够准确地识别网络流量中的EP方法,并将他们与具体的用户操作联系起来,从而窃取用户的隐私信息。
实验评估
在整体的实验数据集的构建上,本文选取了谷歌应用商店中排名靠前的1000个应用进行测试。通过使用开源的自动化测试工具,作者在Google Pixel 2上生成了超过1.29TB的流量实例用于进行测试。
应用流量识别效果评估
在本轮实验数据集的设置上,本文随机将收集到的流量实例分为两个子集,其中40个实例用于训练,10个实例用于测试。在构建训练数据集时,本文会随机选择nT个其他应用作为负样本参与其中;而在构建测试数据集时,本文会选取另外20个在训练过程中未出现的应用来参与其中。为了模拟人类的行为,在训练和测试流量实例的生成上,本文把人类使用不同应用的模拟过程视为泊松过程。
实验将FOAP与AppScanner这个当下主流的AF工具进行了对比。如表1所示,实验过程中,本文还更改了nT的数量来评估它对效果的影响。结果表明,FOAP在各项数据指标上都大幅优于AppScanner。
表1 应用流量识别效果
EP方法识别效果评估
作者测试了在给数据包突发定义的时间阈值ε的变化下,FOAP识别效果的差异,来评估EP方法的识别效果。如表2所示,识别的精度随着ε提高而提高;而回归率和F1-评分则是随着ε提高而减少。
表2 EP方法识别效果
运行效率评估
运行时间评估实验中,本文使用了一台配备英特尔i7-7700 CPU处理器的台式计算机在单核模式下运行FOAP来评估其运行效率。各个阶段的运行时间如表3所示。
表3 FOAP的运行效率
防御措施对FOAP的影响
本文实现了一个名为AProxy的流量混淆工具来评估防御措施对于FOAP的影响。结果如下图3:
图3 AProxy对FOAP的影响
其中P+D(x),表示混淆数据包的数量是正常数据包的x倍。可以看到,尽管FOAP的检测能力有所降低,其依旧能够保持较高的水平,可见FOAP在应对此类防御措施上有一定的鲁棒性。
总结
本文首次提出了在开放世界设定下针对安卓应用的方法级粒度的AF技术,并在此基础上实现了对应的原型工具FOAP。实验表明,该方案的在应用粒度的识别上各方面性能全面优于目前最先进的AF工具AppScanner,同时在方法粒度的识别上具备优秀的效果。
供稿:黄新友
审稿:张逸涵、邬梦莹、洪赓
排版:边顾
戳“阅读原文”即可查看论文原文哦~
。
复旦白泽战队
一个有情怀的安全团队
还没有关注复旦白泽战队?
公众号、知乎、微博搜索:复旦白泽战队也能找到我们哦~
原文始发于微信公众号(复旦白泽战队):白泽带你读论文|FOAP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论