写在最前面

这篇论文前前后后看了一周吧,本来是无线网的论文报告,但是系统安全要交一篇顶会的论文精读报告,于是就顺手拿过来交作业了

反正讲论文的原则是,首先我自己得看懂吃透,不过就是这种一稿多投的行为不值得提倡就是了

精读笔记会结合自己做的ppt来写,所以会有大概二三十张ppt的截图

论文的全文翻译在另一个分类下面,部分翻译的有问题(因为本人没学过移动网络和时序逻辑,形式语言和自动机也忘得差不多了,有些知识还是临时补的)

Part 1:概述

目前的蜂窝网络(包括最新一代),存在设计缺陷和部署缺陷,经常受到攻击,攻击形式包括截获和窃听、跟踪用户位置、中断服务等,同时又可能影响用户甚至国家关键基础设施的隐私和安全

此类生态中发现漏洞需要较长时间生成并分发补丁,运营成本也很高,甚至需要与运营商合作,且不同的补丁可能也会有无法预见的错误

对于相关的攻击而言,目前的工作主要是通过分析控制层协议规范或部署来发现新的攻击,但很少集中于提出防御机制或检测攻击发生的设备,而且这些机制出于部分原因未能被广泛应用,包括需要修改已部署的蜂窝网络协议,这需要和网络运营商协作,专注于识别特定的攻击,可扩展性较差,不能处理现实场景(如漫游等)

本文提出一种实用方法,部署一种以设备为中心的防御,这种防御原则上类似于入侵防御系统,运行时监测网络流量,识别可疑行为并通过不同的措施来阻止可疑行为的发生

Part 2:预备知识

接下来简单介绍一下本文的预备知识,首先是LTE架构

  • UE:一个包含SIM卡的蜂窝设备,每个SIM卡有一个IMSI号和IMEI号(IMSI和IMEI暴露回损害用户隐私和安全)
  • eNodeB:LTE中网络覆盖区域可分解为六边形单元,每个单元由一个基站支持(eNodeB)
  • E-UTRAN:由覆盖区域和UE支持的基站创建的网络称为E-UTRAN
  • EPC:核心网,为用户提供服务,EPC可被视为运行在一起并不断通信的服务的合并

接下来介绍一下本文会用到的一些名词和概念

  • 非预期行为:表示一些可能不利于用户的隐私和安全的行为,比如网络运营商使用空加密,但是在本文讨论中,并非所有的非预期行为都是一个可利用的攻击
  • 特征:这里指的是非预期行为的特征,它通过考虑事件的相对时间顺序来构造,比如说,在完成身份验证后收到了一个未受保护的消息,这可以被构造为一个非预期行为的特征
  • 会话:一系列的协议消息,从设备发送连接请求开始(如rrc连接请求,附件请求),并包含所有消息(包括当前连接启动请求消息),直到发送下一个连接启动请求
  • β非预期会话,是一个包含非预期行为β的会话
  • Trace:一系列的会话
  • 变体:(这个没看懂,后期可能会补上,但是大概率会忘掉)

此外,本文考虑三种不同的攻击特征表示方法,在时间和空间开销、可解释性和检测精度方面有不同的权衡,需要用到一些形式语言的知识,这里简单介绍一下

  • DFA,也即确定型有穷自动机,特点是他的每一步操作都是确定的,因此当DFA接受一个输入符号时,总是可以跳转到一个唯一确定的状态

这里是一个简单的DFA状态图,start表示起始状态,带有小写字母的箭头是弧,表示状态转换,圆圈表示状态,如果是状态是双圈则表示为接受状态,单圈为拒绝状态,本图种ABD为拒绝,C为接受

  • Mealy Machine:米利机,也是有穷自动机的一种,米利机的特点是基于当前状态和输入来生成输出(摩尔机不考虑输入),在弧上用斜杠表示输入和输出,斜杠左侧为当前输入,右侧为输出

本图中输出的是真值0或1,但是本文对米利机的输出做了一些小小的改动,使其不输出真值,转而输出该自动机识别的某种特定的攻击

  • PLTL:过去时间线性时序逻辑,是一种在命题u偶记得基础上加上时序操作得到的分析方法,主要用于描述和验证体系结构特性的形式化方法

本文采用PLTL的原因是其可以对事件的时间顺序进行简洁表示,因此作为用于表示漏洞特征方式之一

Part 3:PHOENIX 概览

接下来是PHOENIX的概览

在本文中,重点关注了4GLTE控制平面协议的非预期行为,主要是关注控制层的协议,比如NAS和RRC协议,如果有必要的话,可以将其扩展至数据层

其次是威胁模型,本文中将敌手视为拥有以下若干能力的攻击者,包括

  • 可以使用拥有合法凭证的恶意手机设备
  • 可以设置一个胭脂基站,克隆合法参数,并提供比附近合法基站更高的信号强度
  • 可以设置一个基站,作为设备和合法基站之间的中继,能够随意丢弃、重放和注入信息,同时假设其可以加密
  • 对于有针对性的攻击,假设其可以访问受害者的软身份(如电话号码,社交网络信息)

在确定了工作重心和威胁模型后,是本文面临挑战

  • 轻量级:因为是运行时检测,攻击检测必须是轻量级的,否则大量的运行开销产生负面影响
  • 独立的方式操作:运行于设备端,无需运营商的协助
  • 协议无关:本文讨论的主要关注4G LTE控制层协议,但是应当可以扩展至未来可能发现的攻击(比如针对5G的攻击
  • 高精度:检测准确率要够高,否则就是狼来了的故事
  • 可行性:系统应该在非预期会话进行时尽快的检测到攻击,如果说攻击发生之后才识别到,大概率是亡羊补牢

本文在以下两种情况讨论PHOENIX的结构

第一个是部署在基带处理器中,将PHOENIX作为成熟的防御功能,对于部署在基带处理器中的PHOENIX是最简单的结构,其包含两个组件

一个是攻击特征数据库组件,包含负责检测的攻击特征,特征可以由网安专家生成,也可以从可选的PHOENIX组件中组合

另一个是监控器组件,监控器分析解码的消息和载荷并将它们与预填充的可疑行为特征数据库进行匹配,若确定了行为特征,则监控器的操作取决于部署场景,在部署在基带处理器的时候,监控器会将非法信息传递给纠正模块,并由纠正模块根据特征进一步操作

第二个是作为一个安卓应用程序部署,将其作为一个预警系统

对于此类部署场景,PHOENIX需要一个额外的组件,消息提取器,用于收集基带处理器和网络之间的进出消息(如对协议包的解码),然后将消息输入监视器以进行漏洞检测

之前提到了若监控器检测到了行为特征,其操作取决于部署场景,部署在安卓的场景时,监控器会识别出漏洞并将消息和可能得补救措施返回给用户

接下来是PHOENIX的工作流程,其主要分为四个步骤,我们以Android APP部署场景为例,对于部署在基带处理器的场景类似,但是无需进行步骤1

  1. 消息提取器提取协议包并解码
  2. 计算消息及其有效载荷的预定义谓词并发送给监视器
  3. 监视器将当前的追踪流分为良性或脆弱性(这里的脆弱性指的是前面提到的非预期行为
  4. 若PHENIX识别了一个脆弱性的流,会采取相关措施,具体会取决于部署场景,基带处理器可以将其丢弃或终止连接,Android APP可以经过用户这是个可疑行为,并给出可能的补救措施

此外,PHOENIX还包含了一个辅助的组件,特征合成器

特征合成器主要用于自动的合成漏洞特征,比如在网络安全专家知道攻击的成因但是不知道如何表示的时候,可以用这个辅助的组件,或者说专家也不知道具体的攻击成因的时候,也可以使用这个组件

但是本文更希望是专家和特征合成器协作来生成漏洞特征,而不是完全依赖合成器,更具体而言,可以是合成器给出多个候选的特征,然后专家选择一个他认为最合适的

Part 4:脆弱性特征表示与监控器

对于脆弱性的特征,本文采用正则语言和PLTL两种方法表示,是因为他们在捕获事件的相对时间顺序方面的有效性,因为考虑到事件的相对排序往往足以综合一个可识别的和精确的漏洞特征

在正则语言部分,又细分为DFA和米利机

对于DFA,本文用其来表示一个特定的漏洞特征v,具体如下

将U视为所有有限协议协议执行的traces,也即全集,而对于给定的脆弱性v,用语言L表示v出现的所有有限协议执行,则L对U的补集L*,为所有不发生v的有限协议执行的traces

语言L*会拒绝所有v发生的traces,接受所有v不发生的traces,其字母表为协议消息类型、有效载荷和对应的断言

如果期望采用一个大的特征来表示所有的漏洞,本文给出的方法是采用米利机,其输出表示一个特定的协议执行是良性的还是脆弱性的,此时米利机的输出会标识脆弱性

对于PLTL而言

本方案中,每个漏洞保留一个行为特征作为一个PLTL公式,该公式仅拒绝脆弱性问题发生的有限traces

之前提到的方案需要有较高的精读,因为无法识别所发生的特定漏洞,因此本方案没有为所有漏洞保留一个巨大的PLTL公式,否则会影响提供的特定漏洞的补救措施

接下来讨论如何基于漏洞特征的表示来监视漏洞特征

对于基于DFA的监控器,需要在内存中单独存储DFA的当前状态,若转换到了一个不接受的状态,则意味着监视器探测到了漏洞

基于米利机的监控器和基于DFA的类似,不同之处在于其输出标签表名是否观测到了一个漏洞,若观测到了,则给出具体观测到的漏洞

而基于PLTL的监控器,考虑一种基于动态规划的方法

此方法中,为了监视PLTL公式Φ,监视器需要获得Φ的子式的1 bit信息,若当前状态下Φ的真值位为True,则表示无漏洞

Part 5:PHOENIX的实现

接下来是PHOENIX的实例化,和之前所说的一样,分为基带处理器和安卓App两种部署场景

为了模拟PHOENIX与基带处理器的集成,本文扩展了srsUE,以便可以检测到可疑行为

基带处理器的实例化中采用基于PLTL的监视器(采用PLTL的原因是测试数据表明他是最有效的方式)

对于这种方式,在C++中合成基于DP算法的PLTL监控器

其次,根据评估特征所需要的信息,监视器被集成在RRC或NAS名称空间文件中,这些文件负责处理各个层的消息

而为了授权PHOENIX删除消息或关闭连接,PHOENIX会返回一个布尔值以表示是否违反了特征,以便让函数继续处理消息

当作为安卓应用程序实现时,我们使用基于DFA、MM-和PLTL的监控器实例化PHOENIX,下面讨论组件的实现

Message Extractor:该组件先从基带处理器获取消息,为了有效地解析协议包,本文修改了MobileInsight的流量分析器来更有效地捕获RRC和NAS层的流量,然后对其应用必要的方式,并将消息传递给监视器

基于DFA的监视器将转换集、接收状态列表、当前状态和字母表存储在内存中,转换关系通过查字典方式完成,若转移到一个非接受状态则被认为是一种攻击

基于米利机的监控器和DFA类似,但有一个例外,由于MM没有任何可接受或不可接受的状态,因此转换的输出符号表示发生了哪种特定的攻击

对于PLTL,本文在Python中实现了DP算法来监控PLTL公式,本文的实现为每个子公式的真值存储一个位,并使用位操作来识别真值

最后是可选组件特征合成器,实现细节如下

对于采用DFA和米利机学习攻击特征,均采用LearnLib中实现的PRNI被动自动机学习算法,提供攻击traces 和非攻击traces 及其所有前缀作为输入

而对于PLTL而言,采用PySMT,这是一个基于py的求解器无关的库,构建在SMT-LIB上

对于每个攻击,利用数据集的80%为其创建五个候选特征,并用剩余的20%评估这些特征

Part 6:评估与结论

最后是实验的评估与相关结论

对于实验设置,考虑下列因素

在样本大小部分,考虑不同大小的traces,数量在50~2500之间,每个tarces包含良性和恶性traces各一半

为了衡量特征的有效性,需要将训练和测试分离,本文为每个攻击创建不相交的测试和训练集,包含各1000个良性和恶性traces

对于监控器的评估,本文在三种不同的COTS Android设备上进行监控器的实验,此外还建立了一个类似的4GLTE测试台,使用srsLTE和USRPB210,连接到系统

在有效性方面,本文全面实现了PHOENIX,并通过srsLTE重放良性和恶性traces

针对效率测试,本文开发了一个应用程序,通过重放设备内的日志来模逆大量数据包注入的情况

对于攻击集,本文考虑了十五种不同的攻击来评估PHOENIX,采用的这些攻击可以代表4G LTE控制层中已知的大多数漏洞,同时又具有一些特征,比如违反事件的时间顺序,或者由恶意eNodeB或MME触发

对于特征合成器的评估结果,表三给出了特征合成器运行时识别不同攻击时的P值,R值,F值

根据实验结果,所有方法都可以高度成功的识别攻击,然而在不同合成器中,DFA平均产生更多的假阳性和假阴性,两者均在百分之17-20左右,而Mealy Macihine和PLTL更可靠,产生的假阳性和假阴性数量明显更少,大约是万分之三

下面的图六是三种特征合成器针对每次攻击所需要的学习时间,y轴为在对数刻度的秒,x轴为训练数据集的大小

测试结果显示,PLTL特征合成器需要更多的时间来生成攻击特征

此外,本文认为一个高质量的特征应该具有非常高的F值,而图7显示了训练数据集对特征质量的影响,在训练集大小为500时,所有的测试都得到了较高的F值,但是随着数据集的变大,基于DFA的aka攻击存在波动

最后是效率,结果显示米利机每秒处理的消息速度比其他两种要高出几个数量级,这可以归因于米利机只保存一个内部状态,且依赖于一个字典查找来决定过渡以及是否将traces标记为攻击

其次是DFA,因为DFA和米利机类似,依赖于简单字典查找,效率要比基于DP算法的PLTL更快

根据测试结果,即便是最慢的PLTL,其每秒可以处理的消息比在真实traces中观察到的NAS和RRC通信量产生的消息更多

之后本文还对真实世界的流量进行测试,结果和之前的一样,DFA产生了大量的错误警告,通过分析这些错误警告,本文认为DFA并没有充分考虑真实网络中的流量的某些行为,从而导致了错误警告

而对于PLTL而言,在三个不同的运营商上均产生了警告,经过分析,这些并不是错误警告,而是运营商实际存在的配置错误

对于本部分的结论是,PLTL被证明是最适合满足核心需求的监控器组件

最后是对本文的一个总结,本文设计了PHOENIX,一种通用的监测设备蜂窝网络流量和识别攻击的方法,并且本文给出了PHOENIX的两种部署场景

一个是部署在改动的srsUE,检测漏洞并防止潜在的非预期行为,另一个是以Android APP的方式,使得蜂窝设备推断恶意消息流并提醒用户

最后经过实验和分析,PLTL被证明是最好的方法,可以高效的识别所有的15种4G LTE的n day攻击,同时其内存开销可忽略不计