GeekPWN2020 LTE项目技术复盘

admin 2020年10月26日21:12:33评论241 views字数 5063阅读16分52秒阅读模式

Aodzip@海特实验室

上周六,海特实验室参加GeekPwn2020,在现场演示了《利用设备层未知漏洞渗透LTE基站的远程攻破展示 》,在赛前沟通中,由于主办方无法采购到对应的品牌设备,故该项目无法成为一项比赛项目。但为向公众揭露新基建安全的重要性,海特实验室与主办方最终决定,将该项目作为GeekPWN2020的一项展示性项目,不参与最终评奖。
在本次演示中,海特实验室利用多款皮基站的漏洞控制设备,并控制在该基站设备下的移动设备通信,实现劫持、篡改。由于基站设备漏洞有极高风险,相关漏洞已经在第一时间向相关监管部门上报。为遵循负责任的安全漏洞披露流程,且相关基站漏洞与传统IoT漏洞相近,在本文中将不涉及展开。在本次的演示准备中,由于基站通信采用特殊的协议,所以实现劫持和篡改也并非是TCP/IP中传统的Sniffer或者MITM手段,互联网上可参考的资料非常之少,故写下该文章,希望能给后续研究的同学有一些参考价值。

微基站还是伪基站,和攻破了一台Wi-Fi路由器有区别吗?

在本次展示中并没有使用重定向技术去降级用户设备到已经是“马蜂窝”等级的2G网络,而是采用了关闭了2G频段,使用商业现网USIM卡的一台手机作为展示目标,传统的伪基站在这样的场景下是无能为力的,所以不是伪基站,而是微基站(皮基站)。直白的来说,通过IP网络可达的前提攻破一台皮基站,和打穿一台Wi-Fi路由器在技术原理上并没有什么区别,但是相对于整个实现过程中,找到并利用一个栈溢出只是迈出了第一步,随后的LTE基础架构才是真正的长征。有一定安全基础的读者可能会产生一个疑问:“只要搭建一台基站,启动MITMProxy和Wireshark,然后再让手机连上来不就好了么?”。没错,这也是我最开始的想法,然而现实总是很残酷的。

LTE的基础网络架构

一个最简单的LTE网络的组成,如下图

GeekPWN2020 LTE项目技术复盘

用户手中所使用的设备,如手机,共享单车,智能水表等,有一个统一的名称叫UE。任何一种基站,无论是宏基站还是微基站,在网络框图中都被称作eNodeB,我们接下来就简称eNB。MME是一个管理角色,负责管理若干个eNB,具体来讲,控制eNB与UE的连接断开,网络漫游,身份验证流程,一些短消息的传递等。SGW与PGW则是一个数据网关的角色,UE中所体现的“流量”,也就是“TCP/IP”网络,是由SGW与PGW一同提供的。HSS虽然不直接与eNB通信,但是它存储了所有入网用户的身份验证信息,在需要使用的时候提供给MME。如果用Wi-Fi网络来类比的话,eNB是AP,MME是AC,S/PGW是上行路由网关,HSS就是数据库里躺着的那张user表了。

位于内核态的IPSec

皮基站出于安全和其他考虑,并不会在互联网上直接传输数据,它经过IPSec网关,叫做SeGW的一个接入设备连入核心网。接入核心网后,可能存在一个叫HeGW(HeNB-GW)的设备统一代理位于核心网内的MME、SGW等端点IP。这样我们上面的最小LTE网络在皮基站这里就成为了这个样子

GeekPWN2020 LTE项目技术复盘

一般来说对于一个VPN网络,只要在它的虚拟网卡入口进行操作即可获得未加密的流量,然而Linux下的IPSec是基于内核态的,用户层并没有用于可以让Wireshark去监听的虚拟网卡接口,iptables也显得非常无力。即便是利用any的特性去做全局抓包,也只能获取到部分单向流量。好在掉了几天头发之后解决了这个问题,实现了透明的通信数据监听与劫持系统。一些相关研究也可以参考seeker在2019年针对femto的一篇演示文稿《4G LTE Man in the Middle: Attack with a Hacked Femtocell》,在这个演示文稿中可以看到作者已经通过Wireshark成功的捕获到了双向流量,可能是出于合理披露的考虑,作者没有过多提及相关的技术如何确切的填掉IPSec双向抓包的坑和具有了双向抓包能力后续利用的具体方法。

LTE的接入点选择与身份认证

LTE的接入点选择比较简单,首先SIM卡会告知手机我要选择某个运营商的网络——就好像是一个固定的SSID一样,之后手机会优先连接信号较强的eNB。由于在设计之初就考虑到2G的前车之鉴,LTE会使用包含了:临时密钥,消息签名,随机数,滚动码等机制来双向验证UE侧和eNB侧的合法性。下面用一个图来简单描述一下在UE入网的一瞬间发生了什么。

GeekPWN2020 LTE项目技术复盘

MME向UE传递

  • RAND: 随机数

  • SQN ^ AK: 加密后的滚动码

  • MAC: 签名的消息验证码

在这之后,USIM卡验证该消息是否合法,起到验证网络是否可信的作用,如果网络可信,将会回复如下消息

GeekPWN2020 LTE项目技术复盘

UE向MME传递

  • RES: 基于RAND SQN MAC计算出来的验证码

网络将基于上述的消息来验证SIM卡是否可信

基于SIM卡每一张密钥都不同的前提,想要脱离后端验证数据搭建一个eNB并让UE稳定信任是几乎不可能的。

不是UDP也不是TCP的SCTP

eNB与MME的通信是基于一种在三层链路上叫做SCTP的协议,基于这个协议上面又有应用态的S1-AP协议。可能也是因为这个SCTP既不是TCP也不是UDP,并不方便在现有的互联网上传输,我想这也许是依赖VPN的另一个原因。这个协议在可用性和防中间人方面有很多的优势和新特性,但是和S1-AP协议一结合,其中最值得关注的一点就是:几乎丧失了通过NAT传输的能力。直白来说,皮基站的IP必须是IPSec分配的IP而且要和整个核心网双向互通,如果尝试套一层NAT去剥离流量的话,会导致eNB无法正常工作,监听劫持系统的“透明”性是非常必要的。SCTP由于在网络安全界极少出现,在项目准备阶段并没有找到符合要求的MITM工具,在恶补了整个SCTP规范之后,基于C语言完成了一个可以保持一般SCTP正常工作的MITM工具,同时又可以针对特定的报文进行抓取和修改。

GeekPWN2020 LTE项目技术复盘

一个SCTP报文

ASN.1与S1AP

S1AP这个协议承载了eNB与MME通信过程中所有的数据,但是它解析起来却比较困难。该协议本身是开放的,由ASN.1语法书写,在SCTP上以PER格式编码传输。在项目开发的过程中没有找到一个方便的组件来处理这个协议,曾经尝试用固定偏移量+结构体的方式去捕获和修改部分关键数据,但是这种方式的操作并不稳定。最终还是相对完整的实现了S1AP的解析流程,到了这一步我的MITM程序可以有效的去捕获和处理S1AP协议中我们所关注的数据,从而欺骗eNB以为自己连接到了真实的核心网中,也可以正确的中继LTE在eNB侧验证所需的三元组,对于上游真正的MME来说,它是eNodeB,对于真正发射信号的eNodeB来说,它又是MME。

LTE的数据保全机制

LTE网络在接入的过程进行了身份认证,随后就会进行数据保全协商。主要应用在LTE信令传输过程中可能存在的一个叫做NAS-PDU的容器。其中包含了两种保全机制:数据加密与数据完整性验证,使用的密钥均是入网时生成的临时密钥。这个临时密钥是在入网的时候HSS通过S6e信令传递给MME的,并不会传递给eNB能接触到的网络,这是一个UE知,MME知而eNB,Wireshark都不知的东西。一般来说,为了整体网络的运行效率会关闭数据加密策略,但是一定会开启数据完整性验证。这种可选特性导致了直接暴露LTE信令虽然比较容易被监听,但是被保护的部分几乎无法被篡改。但是NAS-PDU本身的定位是“可能存在”,经过一段时间的分析,还是找到了一些在协议中忘记被NAS-PDU保护的漏网之鱼。

数据流量是如何承载的

可能和想象的不同,在LTE网络中,数据流量并不是直接在IP层做路由转发发送到互联网上的,而是被放在了一个叫GTP-U的外层包裹里,统一发往运位于核心网的SGW网关,在那里会实现数据包的解包和计费功能。这个架构导致了就算是皮基站架设在家中的宽带上,占用你的带宽的同时你也要为手机流量付费。GTP-U协议并不是一个一去一回,有状态跟踪的协议,而是更类似位于OSI二层的帧。为了保证移动网络的漫游特性,所有的GTP封包包含了一个类似Cookie的字段,这个类似Cookie的字段也会成为寻找通信目标的地址,eNB需要为UE发出的数据包打上SGW所认可的标记,反之,SGW向UE发送数据包也要带有eNB所认可的标记,而且这两个标记往往还是不同的,而且会随着时间变化而动态更新。

GeekPWN2020 LTE项目技术复盘

一个典型的被GTP协议包裹的DNS查询

如果想要接管手机的数据流量,光能解析GTP协议还不够,还需要完整的重现这部分的标记同步协议和篡改eNB所使用的SGW通信网关,这些数据存在MME和eNB的UE入网交互过程中,也就是上面所说的S1AP协议,我们的MITM软件会去实时追踪这一部分的标记交换,并篡改eNB所收到的SGW网关地址,实现将UE的数据流量重定向到我们自己编写的SGW网关上,并使我们的SGW网关实时与真实的MME保持通信标记同步。

GeekPWN2020 LTE项目技术复盘

经过TUN分离后的易于操作的HTTP报文

我们编写的SGW网关将会通过一个本地的TUN虚拟网卡来发送接收所有UE的数据流量,至此可以使用传统的MITMProxy或者Wireshark实现完整的TCP/IP数据流量嗅探或劫持篡改。

未演示的部分:HTTP内容篡改

由于时间关系,我们很遗憾的未能演示针对数据流量的篡改。和展示现场主持人所说的不太相同的地方,可以篡改数据流量并不是嗅探流量的水到渠成。嗅探流量只需要解决IPSec的双向抓包问题即可,而如果想要实现数据流量的篡改,则需要完成上述所提到的全部的MME MITM、SGW网关程序以及一个精巧部署的网络。


HatLab

GeekPWN2020 LTE项目技术复盘



GeekPWN2020 LTE项目技术复盘


1.


1.
2.

1.使C使
2.使LinuxMakefileMakefile
3.
4.WEBPWN使ZapIDA

1.
2.
3.PCB
4.04020201QFNBGA
5.AVRARMMIPSXtensaMCU/SoC
6.


1.


1. 
2. 
3. 

1.ARMMIPS
2.gdbIDA使
3.
4.C/C++/Perl/Python/PHP/Go/Java

1./
2.CTF
3.GeekPWNHackPWN


线

1.


1. 线
2. 线

1. 线
2. C/C++MatLabPython
3. 线Wi-FiBluetoothZigbee4/5G
4. SDRGNURadio使

1. 
2. 
3. CTF
4. 
5. 




double.jiang@dbappsecurity.com.cn
15167179002

本文始发于微信公众号(安恒信息安全研究院):GeekPWN2020 LTE项目技术复盘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年10月26日21:12:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GeekPWN2020 LTE项目技术复盘http://cn-sec.com/archives/171230.html

发表评论

匿名网友 填写信息