Aodzip@海特实验室
上周六,海特实验室参加GeekPwn2020,在现场演示了《利用设备层未知漏洞渗透LTE基站的远程攻破展示 》,在赛前沟通中,由于主办方无法采购到对应的品牌设备,故该项目无法成为一项比赛项目。但为向公众揭露新基建安全的重要性,海特实验室与主办方最终决定,将该项目作为GeekPWN2020的一项展示性项目,不参与最终评奖。
在本次演示中,海特实验室利用多款皮基站的漏洞控制设备,并控制在该基站设备下的移动设备通信,实现劫持、篡改。由于基站设备漏洞有极高风险,相关漏洞已经在第一时间向相关监管部门上报。为遵循负责任的安全漏洞披露流程,且相关基站漏洞与传统IoT漏洞相近,在本文中将不涉及展开。在本次的演示准备中,由于基站通信采用特殊的协议,所以实现劫持和篡改也并非是TCP/IP中传统的Sniffer或者MITM手段,互联网上可参考的资料非常之少,故写下该文章,希望能给后续研究的同学有一些参考价值。
微基站还是伪基站,和攻破了一台Wi-Fi路由器有区别吗?
在本次展示中并没有使用重定向技术去降级用户设备到已经是“马蜂窝”等级的2G网络,而是采用了关闭了2G频段,使用商业现网USIM卡的一台手机作为展示目标,传统的伪基站在这样的场景下是无能为力的,所以不是伪基站,而是微基站(皮基站)。直白的来说,通过IP网络可达的前提攻破一台皮基站,和打穿一台Wi-Fi路由器在技术原理上并没有什么区别,但是相对于整个实现过程中,找到并利用一个栈溢出只是迈出了第一步,随后的LTE基础架构才是真正的长征。有一定安全基础的读者可能会产生一个疑问:“只要搭建一台基站,启动MITMProxy和Wireshark,然后再让手机连上来不就好了么?”。没错,这也是我最开始的想法,然而现实总是很残酷的。
LTE的基础网络架构
![GeekPWN2020 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项目技术复盘 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项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
MME向UE传递
-
RAND: 随机数
-
SQN ^ AK: 加密后的滚动码
-
MAC: 签名的消息验证码
在这之后,USIM卡验证该消息是否合法,起到验证网络是否可信的作用,如果网络可信,将会回复如下消息
![GeekPWN2020 LTE项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
UE向MME传递
网络将基于上述的消息来验证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项目技术复盘 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项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
一个典型的被GTP协议包裹的DNS查询
如果想要接管手机的数据流量,光能解析GTP协议还不够,还需要完整的重现这部分的标记同步协议和篡改eNB所使用的SGW通信网关,这些数据存在MME和eNB的UE入网交互过程中,也就是上面所说的S1AP协议,我们的MITM软件会去实时追踪这一部分的标记交换,并篡改eNB所收到的SGW网关地址,实现将UE的数据流量重定向到我们自己编写的SGW网关上,并使我们的SGW网关实时与真实的MME保持通信标记同步。
![GeekPWN2020 LTE项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
经过TUN分离后的易于操作的HTTP报文
我们编写的SGW网关将会通过一个本地的TUN虚拟网卡来发送接收所有UE的数据流量,至此可以使用传统的MITMProxy或者Wireshark实现完整的TCP/IP数据流量嗅探或劫持篡改。
未演示的部分:HTTP内容篡改
由于时间关系,我们很遗憾的未能演示针对数据流量的篡改。和展示现场主持人所说的不太相同的地方,可以篡改数据流量并不是嗅探流量的水到渠成。嗅探流量只需要解决IPSec的双向抓包问题即可,而如果想要实现数据流量的篡改,则需要完成上述所提到的全部的MME MITM、SGW网关程序以及一个精巧部署的网络。
![GeekPWN2020 LTE项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
![GeekPWN2020 LTE项目技术复盘 GeekPWN2020 LTE项目技术复盘]()
一、物联网安全研究员(硬件安全方向)
工作地点:
1.杭州;
岗位职责:
1.嵌入式方向的安全漏洞挖掘;
2.嵌入式系统硬件软件设计与研发。
任职要求:
1.熟练使用C语言,可规范使用指针,结构体,联合体;
2.熟练使用Linux操作系统,理解Makefile原理并可编写Makefile文件;
3.了解数字电路原理,具有较扎实的计算机系统结构知识,理解操作系统原理;
4.了解WEB或PWN方向的漏洞挖掘过程,会使用相关工具如Zap、IDA等,会自行编写漏洞利用工具。
加分项:
1.具有网络安全公司实习经验;
2.具有网络安全赛事经验;
3.有设计电路板原理图和四层PCB布局经验;
4.熟练焊接0402,0201,QFN,BGA等元器件封装;
5.有AVR,ARM,MIPS,Xtensa等内核的MCU/SoC开发经验;
6.向知名平台提交过物联网方向的漏洞报告。
二、物联网安全研究员(固件安全方向)
工作地点:
1.杭州;
岗位职责:
1. 物联网通用协议、组件、操作系统漏洞挖掘与漏洞复现;
2. 物联网设备漏洞挖掘与漏洞复现;
3. 参与创新物联网安全研究项目;
任职要求:
1.具有二进制漏洞挖掘经验,熟悉ARM、MIPS等其他架构的漏洞利用技巧;
2.熟练掌握gdb、IDA等工具的使用;
3.具有一定的硬件基础和动手能力,掌握常见的嵌入式设备固件提取及解包的方法;
4.至少掌握一门编程语言,如C/C++/Perl/Python/PHP/Go/Java等。
加分项:
1.具有知名物联网设备/网络设备漏洞挖掘成果证明;
2.参加CTF比赛并获奖;
3.参与GeekPWN、HackPWN等智能设备破解大赛并取得成绩。
三、物联网安全研究员(无线电安全方向)
工作地点:
1.杭州;
岗位职责:
1. 无线通信协议的通用漏洞挖掘;
2. 无线通信应用系统的漏洞挖掘,如智能设备等。
任职要求:
1. 掌握无线通信基本原理及数字信号处理理论,熟悉各种调制解调算法,信道编码算法等;
2. 熟悉C/C++、MatLab、Python等编程语言;
3. 熟悉至少一种常见无线通信协议及其安全问题,如Wi-Fi、Bluetooth、Zigbee、4/5G等;
4. 熟练掌握SDR外设和GNURadio等工具的使用。
加分项:
1. 具有信息安全公司实习经验;
2. 有嵌入式固件逆向分析经验;
3. 参加CTF比赛并获奖;
4. 有智能设备的破解经验;
5. 通信工程、信息安全专业。
感兴趣的小伙伴请联系姜女士,或将简历及应聘职位投送至下方邮箱。(请注明来源“研究院公众号”)
联系人:姜女士
邮箱:double.jiang@dbappsecurity.com.cn
手机;15167179002,微信同号
本文始发于微信公众号(安恒信息安全研究院):GeekPWN2020 LTE项目技术复盘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/171230.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论