姜鹏辉的个人博客 GreyNius

【精读】OTTer-高精度加密流量识别引擎

2020-07-12

类型 内容
标题 OTTer: A Scalable High-Resolution Encrypted Traffic Identification Engine
时间 2018
会议 RAID
DOI 10.1007/978-3-030-00470-5_15

介绍

  • 超过60%的移动App流量使用SSL/TLS加密
  • Over-The-Top (OTT)
  • 实现了一个系统,该系统能够从加密流量中提取基本信息
  • 专注于使用数据包大小训练的模式来识别OTT应用程序事件,例如基于加密流量的消息传递,语音和视频呼叫

贡献:

  • 提出一种实用的方法来收集、标记和分析由流行的移动OTT应用程序(例如Skype,WhatsApp,Facebook Messenger和Viber)生成的加密流量,以识别使用事件,例如信息发送,语音和视频通话
  • 提出了一种模式语言来识别此类事件,该事件适用于DPI系统,但又具有足够的表达力来描述数据包元数据模式,因此我们通过实验来确认
  • 讨论了模式语言的高性能实现,并与DPI引擎集成在一起,以针对大量实际网络流量评估其性能
  • 证明了模式语言适合于从真实样本中自动挖掘

加密流量模式语言

表1展示了一个示例 Event|Application|Rule –|–|– Voice call|WhatsApp|3{1,3}, 56-60{1,3}, 400-800 Video call|WhatsApp|3{1,3}, 56-60{1,3}, 3{1,3}, 117 OR 3{1,3}, 56-60{1,3}, 3{1,3}, 144 Chat message|WhatsApp|3{1,3}, 52

规则语言规范 bound代表了最小和最大限制的重复次数。

expr ::= piece | piece, expr 
piece ::= atom | atom{bound} 
atom ::= number | number-number
bound ::= number | number,number 

有效性验证

使用模式语言手动为应用程序生成一组签名
25%作为参考,75%用于准确性验证

数据流采样机制

Flow-to-Process匹配

使用netstat来获取有关网络连接的信息,在Android设备中,通过BusyBox来使用netstat命令

不断的调用netstat并存储,将流和进程对应起来。

数据包过滤

TCP有一些机制来避免丢包,丢弃一些没有提供实质信息的数据包(例如需要重传的包)。

样本流量生成

设备:使用四台不同型号的安卓手机Sony Xperia D5503,红米3s,小米Note,红米Note3 Pro,并且获取Root权限。使用tcpdump在安卓设备上捕获流量。

OTT应用:WhatsApp、Skype、Facebook Messenger、Viber,专注于识别信息、语音、视频

总共收集了350个样本,每个样本模拟了任意数量的消息或单独的语音/视频呼叫。

准确率评估

命中率: TP 总体的准确率分别是93%,86%,84% 视频和语音准确率低的原因是因为降低FP的一个折中。

Application Messaging Voice Video
Facebook Messenger 83% 96% 96%
Skype 88% 100% 75%
Viber 100% 54% 88%
WhatsApp 100% 92% 75%

误报率: False Positive

FDR=FP/(TP +FP)

Application Messaging FDR Voice / video FDR
Facebook Messenger 0% 1%
Skype 5.5% 4.2%
Viber 1% 2%
WhatsApp 8% 0.6%

实现与性能

高效自动机

Aho-Corasick算法是一种字符串搜索算法。可以快速在一个文本中查找多个关键字,时间复杂度是O(n)。
用16位数据包大小来查找。

算法的具体实现略过 对重叠范围进行预处理,提取非重叠的范围。
152-156{1,5},150-600有重叠的区域,所以要划分为三个部分,150-151,152-156,157-600

152-156,150-151 
152-156,152-156 
152-156,157-600 
152-156,152-156,150-151 
152-156,152-156,152-156 
152-156,152-156,157-600 
152-156,152-156,152-156,150-151 
152-156,152-156,152-156,152-156 
152-156,152-156,152-156,157-600 
152-156,152-156,152-156,152-156,150-151 
152-156,152-156,152-156,152-156,152-156 
152-156,152-156,152-156,152-156,157-600 
152-156,152-156,152-156,152-156,152-156,150-151 
152-156,152-156,152-156,152-156,152-156,152-156 
152-156,152-156,152-156,152-156,152-156,157-600 

DPI Engine 集成

一个规则的示例,以YAML格式呈现

facebook_video: 
    event: packet 
    conditions: 
    - port: 443 
    - packet_train: '399{1,2}, 51{1,2}, 1000-1260{1,2}, 38' 
    actions: ... 
whatsapp_video: 
    event: packet 
    conditions: 
    - packet_train: 
        - '3{1,3}, 48-60{1,3}, 3{1,3}, 117' 
        - '3{1,3}, 48-60{1,3}, 3{1,3}, 144' 
        - '3{1,3}, 48-60{1,3}, 3{1,3}, 102' 

性能验证

使用专有的DPI引擎在一个实时流量测试台上实验性地评估了整个系统的性能。
使用了一台HPE Proliant DL380 Gen9服务器,带有两个Intel Xeon E5-2699 v4 CPU,支持超线程,提供了88个逻辑核(lcore),并配置了1TB的RAM。 系统有4x40 Gbps NICs。使用了CentOS 7.4版本。

DPI引擎被配置为使用8个内核来处理来自四个端口的流量(每个端口两个内核)。 这些内核仅执行简单的数据包解码,以便在内部将流量负载平衡到配置为执行流量检查的58个内核。 这些是运行我们的实现的核心。 系统中的其余lcores专用于其他任务,例如日志记录和shell访问。

流量负载包括实际的移动用户流量,一天中流量的变化范围在52-153 Gbps之间,平均为109 Gbps。平均每秒有为161K个连接。 在整个实验中,我们确认了该系统没有出现丢包现象。

作者使用mpstat查看CPU使用率,在一个时间段有130Gbps的流量,此时CPU使用率是34.2%,在启用拓展后,CPU使用率上升到了37.6%。使用Perf工具检查函数extension_packet_train_multiset_match,测量的结果也是占用3%。即该扩展对性能的占用很小。

增加签名数量1-20,对CPU额外的占用率在2.7%-3%之间

自动规则挖掘

规则挖掘方法

应用频繁模式挖掘(frequent pattern mining ,FPM)

步骤:

  1. 预处理:筛选与进程id不符的数据包和TCP重传的数据包。
  2. 数据包统计:统计数据包出现的频率,将出现频率大于阈值的包映射到一个唯一标识符。其余的包按负载按长度被分到四个相同大小的桶中。这一步是为了应对负载的长度是变化的,例如消息中的长度有长有短。
  3. 轨迹分割:数据包按间隔被切分为一个突发事件的流量,间隔小于一定阈值(1秒)。如果阈值设置的过大,可能一个突发事件中会有多个聊天消息。这些序列被用作FPM的输入。
  4. 频繁模式挖掘:使用ClaSP算法
  5. 规则生成:通过识别哪些闭合序列模式与基本真实事件匹配来生成规则。

对于不同方向的包,加一个负号来表示负载大小。

规则挖掘评估

TP rate

Application Messaging Voice Video
Facebook Messenger 42% (-41) 54% (-42) 83% (-13)
Skype 100% (+12) 96% (-4) 100% (+25)
Viber 100% (0) 96% (+42) 100% (+12)
WhatsApp 100% (0) 100% (+8) 100% (+25)

FDR

Application Messaging FDR Voice/video FDR
Facebook Messenger 0% (0) 3% (+2)
Skype 2% (-3.5) 8.4% (+4.2)
Viber 3% (+1) 2% (0)
WhatsApp 2% (-6) 3.3% (+2.7)

WhatsApp的消息活动数据包捕获。垂直线表示实际传出的聊天消息,而Main和FPM点显示检测到的事件。

下图展示了漏报和误报


Comments

Content