论文分析---APP流量分类

时间:2022-03-22 06:34:34

APP流量分类

Robust Smartphone App Identification via Encrypted Network Traffic Analysis

亮点

1.1APP分类
1.2模糊数据处理
1.3提高可靠性(训练集和测试集数据来自一次提取还是不同时间提取)
1.4对比时间,版本,设备改变,操作系统版本改变的影响

实验

1.数据获取方法:
  • 一个服务器,一个安卓虚拟机,脚本(MonkeyRunning)在服务器模拟数据输入,用ADB命令发送给安卓虚拟机,进而在服务器捕获流量(这种方法称为UI fuzing) 这个脚本是通过MonkeyRunning发出的,是一个UI模拟技术。(理论上,由Dynodroid等框架提供的高级UI模糊技术,或者通过招募人类参与者,可以获得应用程序中所有网络流量的更大覆盖.)
  • 一次一个应用程序,最大限度减少网络噪音,但用与手机操作系统和其他应用程序本身的流量,仍然会有噪音,在通过一个网络日志工具与解复用脚本结合,进而对流量进行过滤–仅包含TCP流量,且无错误
  • 过滤掉了网络重传,除目标APP外的其他应用
  • 110中最常用的免费APP(因为免费的APP一般都会有广告库,而且广告库一般在APP间进行共享),每个APP用来自安卓SDK的MonkeyRunner通过UIfuzzing方式运行30分钟(UIfuzzing通过调用UI事件进行模拟,Dynodroid
  • 等框架提供的高级UI模拟技术,或者通过招募人类参与者,未研究)
2.数据分割:

分割为突发流量(阀值1s,实时流量),,根据阀值中最长流量最为该阀值的流量,此过程放弃所有有负载和DNS流

3.特征:

考虑三个维度:coming流大小,going流大小,coming+going流大小
每个维度:最小值,最大值,平均值,中位数绝对偏差,标准偏差,方差,偏斜度,峰度,百分位数(从10%到90%)和 包总数(共18个)。一共54个统计特征

4.1 训练:

初步训练集75%,初步测试集25%,平均1132个流,利用初步分类器(python库函数,调用随机森林,不改参数,因为随机森林比SVM好,且运用于多分类)进行分类。每次测试用随机洗乱(pandas可以解决)的数据集,共测试50次,取平均的性能指标(precision,recall,F1,accuracy)。 将初步测试集中正确分类的流量保持其原有的标签,对于误标签对其进行模糊标签。

4.2 测试:

将初步测试集中误标签的数据作为增强分类器的训练集,进行无监督学习训练,最终获取其类别(对误标数据进行增强学习分类,无监督学习)

5.结果:
  • 初步分类器的准确率是65.5%-73.7%(统一过滤噪声之后的数据集数据集),19.5%-40.9%(不同过滤噪声之后的数据集)
  • 增强分类器的准确率44.0%-74.8%(不同过滤噪声之后的数据集,测试数据大约6万,模糊比例大约60%)

对比:

web框架运用在APP上,效果不如新的框架
训练数据与测试数据来自同一次采集准确率比多次数据 73.1%–40.9%
时间,版本,设备对比

噪声处理:

1》对于实验环境,利用网络日志进行过滤噪音
2》对于真实环境,对于训练数据进行噪声过滤,对于测试数据集采取噪声忽略
3》对于真实环境,噪声管理(标签噪声数据),允许分类器学习,自动区分

模糊检测:

模糊流量是指不同APP中的相同第三方库函数产生的流量 增强学习 对其进行重新标签40.9%–74.8%

分类验证:

一个流最后对于每一类都有一个概率,通过预测概率阀值进行分类。获取 74.8%–96.5%
较高的PPT将导致更加保守的预测,从而导致更高的准确性,但分类获取的有效流量较少。相反,降低PPT,准确性将会降低,但是分类获取的有效流量就会增加。只计算分类之后数据的精确性

图:CDF图(累计分布图,概率密度函数的积分)

缺陷:

  1. 没能进行模拟实时采集流量或真实流量进行训练
  2. 流量覆盖(本片论文并没有涉及)(之前一次性采集一个APP的流量,所以数据的流量是干净的,不需要全部的流都要识别,只需要识别一个APP流中的任意一个流,就可以识别出APP)
  3. 程序的行为是通过UI fuzing获取的,固定的操作,与实际相差较大,不能覆盖全部代码,而且提取的时间有限,不能覆盖各个时间段
  4. 110种准确率低70%多,40多种准确率才可以达到96%(但这是在对彼得情况下) 模糊检测
  5. 每一个数据集的数据量较小,一共才1132个流,存在偶然性—数据集扩大
  6. 本来的训练数据集就有问题,然后用训练数据集进行预分类,支队测试数据集进行增强学习,无法及时的训练数据集进行跟新处理