软件无线电和开源基站在漏洞挖掘中的应用 PART 4:基带安全的一些探索和学习资源整合

0x00 什么是基带

基带的全称是“基本频率带宽”,也就是信源所发出的原始电信号对应的频率带宽,因此我们也将这个原始电信号称为基带信号。此外原始电信号可以从数字信源也可以模拟信源发出,因此基带信号也对应有数字基带和模拟基带两种。但无论是哪一种基带信号,它都直接表达了信源需要传递的信息。此外基带信号中包含有频率达到无穷大的交流信号和直流信号,如果一个信号符合这个条件,我们也可以将其称为基带信号。

0x01 什么是基带芯片

基带是从英文base-band翻译而来,它是手机中最重要的一个模块,主要功能是负责打电话和数据上网,我们所熟知的2G/3G/4G/5G网络都是跟基带有关的。没有基带,手机就不能打电话,不能用移动数据上网,那手机就是一台只能用wifi上网小平板了。基带在有些场合,可以理解为跟调制解调器。

基带芯片是指负责把基带信号转换为频带信号以及把接收到的频带信号转回基带信号的硬件芯片,其作用相当于调制解调器。因此基带芯片支持哪些频段的信道,就意味着其可以把基带信号转换成哪些特定频率的频带信号,也就是我们常说的支持哪些网络了。至于把基带信号转换成哪一个频段的频带信号,就是由基带芯片的固件以及手机系统配合决定了。

https://zhuanlan.zhihu.com/p/39215118

  • 3G时代,做基带芯片的公司还是挺多的,全球3G手机芯片厂商包括高通、英飞凌、飞思卡尔、意法半导体-恩智浦、博通、Marvell和德州仪器,号称七雄争霸。后面才加入一个大家所熟知的联发科(MTK)。
  • 大浪淘沙,潮起潮落,时至今日,以上八家中,除了高通和联发科,其他相继退出或者出售。
  • 4G时代,手机芯片厂商经历了一轮混战重新洗牌后,到目前为止,全世界有能力的做手机芯片的公司包括:
  • 高通,联发科,英特尔,华为海思,三星,大唐联芯,展讯。
  • 其中能做全网通基带的只有:
  • 高通,联发科,英特尔,华为海思,三星。
  • 所谓全网通,就是一个基带能兼容中国移动,中国联通,中国电信2G/3G/4G各个网络共六个模式的基带。
  • 4G: TD-LTE、FDD-LTE
  • 3G: TD-SCDMA、CDMA(EVDO、2000)、WCDMA
  • 2G: GSM

0x02 3GPP

既然说到了通信,就不能不提标准组织 3GPP:

3GPP移动通信的标准化组织3rd Generation Partnership Project,成立于上世纪末,主要职能是为了制订移动通信的技术标准,保证各个不同国家以及运营商在移动通信方面的兼容性,最常见的例子就是能够让我们的手机可以做到在不同的国家漫游使用。 3GPP所制定的移动通信技术标准涵盖了所有的2/3/4/5G通信相关的技术体系,产生了大量的技术文档。 节选自 阿里安全谢君的文章: 移动基带安全研究系列文章之概念与系统篇

0x03 基带安全

本系列文章第一篇中,已经提过:基带漏洞最大的威胁是可以通过OTA(空中接口)利用,即通过发射加载漏洞利用代码的无线电波,从空中接口利用漏洞,在受害者无任何感知的情况下,远距离对受害者进行攻击。通过软件无线电跟开源基站,在空口实现远程攻击基带,在 Android手机中执行命令、在RFS写入文件。另外,目前市面上存在很多基于 Android操作系统的智能智能网联车,开源基站也同样适用于网联车的破解。

车联网攻击面思维脑图:

IVI 部分:

source : DEF CON 25 – Mickey Shkatov, Jesse Michael, Oleksandr Bazhaniuk – Driving down the rabbit hole

单独提取基带部分:

既然基带安全作为基础设施安全不可忽视的一项,如何入门学习?又有哪些资源、破解案例?如何挖掘基带相关的漏洞?这些问题也浮现在脑海中。

比较经典的一个案例是Amatcama在参加Pwn2own的时候,通过对三星基带固件的逆向分析、漏洞利用,配合开源基站发射加载漏洞利用代码的无线电波,从空中接口利用漏洞,在受害者无任何感知的情况下,远距离对受害者进行攻击。通过软件无线电跟开源基站,在空口实现远程攻击基带,在 Android手机中执行命令、在RFS写入文件。详情可在参考部分找到伟神写的 Mosec 2018 议题解读。

另外一个比较经典的案例就是腾讯科恩实验室的5G 基带远程代码执行:

Marco通过 SDR OAI 5G基站实现远程、无接触攻击手机,通过漏洞修改手机IMEI 设备串码。

0x04 漏洞考古

除了上述两个经典案例,在 16 年 17 年的时候就曾爆出:福特、英菲尼迪、日产和宝马旗下部分老车装载的德国英飞凌芯片其调制解调器AT指令集存在安全漏洞,英飞凌2G基带芯片— S-Gold 2(PMB 8876),该零件被上游厂商德国大陆集团用于生产车载信息控制单元(TCU)。

source :Defcon Driving Down the Rabbit Hole

英飞凌该基带芯片存在安全问题(第一个漏洞:堆栈的缓冲区溢出、第二个漏洞:可使攻击者控制内存,在TCU的基带无线电处理器上远程执行代码),第二个漏洞可通过部署 SDR 基站,然后将TCU吸附到开源基站里,整个漏洞利用过程可以做到远程无接触,而 TCU 需要做得仅仅是开机、搜索基站信号,一旦被吸附到 SDR 基站即可触发漏洞,受害者全程无感知。

详见:

https://us-cert.cisa.gov/ics/advisories/ICSA-17-208-01

TCU 上存在 2G 模块,且 SIM 卡可替换

PCB 正面
PCB 背面
GSM 模块 执行AT 指令

 REcon Reverse Engineering and Exploiting Samsung’s Shannon Baseband

By

Nico Golde <nico@comsecuris.com> @iamnion
Daniel Komaromy <daniel@comsecuris.com> @kutyacica

0x05 基带漏洞挖掘

漏洞挖掘的前提是获得基带芯片的信息内容:如基带源码、基带固件等。

基带固件提取,大致方法:从升级包中提取、通过ramdump将已经解密的基带固件从内存中直接dump出来(这种方法貌似仅限于三星的设备),具体操作方法可参考文章底部的参考资料。

如果有基带源码,可通过源码审计的方式进行。不过获取源码的难度比较大,部分手机厂商内部会有基带相关的手册和SDK,问了一些这方面领域的朋友,这块一般芯片公司会与手机厂商签署保密协议,一旦出现资料外泄的情况,泄密的员工被揪出来了通常是直接开除。介于这种情况,源码审计这块要做,一般也就大厂的安全部门自己做内部的安全审计,第三方安全研究人员很难参与其中。

但是互联网是有记忆的,只要你有足够耐心和细心,总是能在互联网上找到一些有趣的东西:

─ msm8610_2014-07-24
 │   ├── android_bootable_bootloader.zip
 │   ├── android_bootable_recovery.zip
 │   ├── android_build.zip
 │   ├── android_device.zip
 │   ├── android_hardware.zip
 │   ├── android_system.zip
 │   ├── android_vendor_prowave.zip
 │   ├── android_vendor_qcom_build.zip
 │   ├── android_vendor_qcom_opensource.zip
 │   ├── android_vendor_qcom_proprietary.zip
 │   ├── AU_INFO.txt
 │   └── root.zip
 ├── msm8625_2013-03-26
 │   ├── android_bootable_bootloader.zip
 │   ├── android_build.zip
 │   ├── android_device.zip
 │   ├── android_hardware.zip
 │   ├── android_system.zip
 │   ├── android_vendor_qcom_opensource.zip
 │   ├── android_vendor_qcom_proprietary.zip
 │   ├── android_vendor_ts_proprietary.zip
 │   ├── info.txt
 │   └── root.zip
 ├── msm8626
 │   ├── msm8626
 │   │   └── wcnss_proc
 │   ├── msm8626_modem
 │   │   ├── modem_proc
 │   │   └── modem_proc.tar
 │   └── qcom_adsp
 │       ├── avs
 │       ├── build
 │       ├── core
 │       ├── hap
 │       ├── platform
 │       ├── qdsp6
 │       ├── qmimsgs
 │       ├── Sensors
 │       └── tools
 ├── msm8909_2015-09-01_amss_device
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   ├── trustzone_images.zip
 │   └── wcnss_proc.zip
 ├── msm8916_2014-12-03_amss_qrd
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   └── trustzone_images.zip
 ├── msm8926_2014-05-16
 │   ├── android_bootable_bootloader_lk.zip
 │   ├── android_build.zip
 │   ├── android_device.zip
 │   ├── android_hardware.zip
 │   ├── android_vendor_qcom_opensource.zip
 │   ├── android_vendor_qcom_proprietary.zip
 │   └── AU_INFO.txt
 ├── msm8926_2014-07-19
 │   ├── android_device.zip
 │   ├── android_hardware.zip
 │   ├── android_vendor_qcom_opensource.zip
 │   ├── android_vendor_qcom_proprietary.zip
 │   └── AU_INFO.txt
 ├── msm8939_2014-11-06_amss_device
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   ├── trustzone_images.zip
 │   └── wcnss_proc.zip
 ├── msm8939_2014-12-08_amss_device
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   ├── trustzone_images.zip
 │   └── wcnss_proc.zip
 ├── msm8939_2014-12-08_amss_oem
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   ├── trustzone_images.zip
 │   └── wcnss_proc.zip
 ├── msm8974_2013-06-28_amss_oem
 │   ├── adsp_proc.zip
 │   ├── AU_INFO.txt
 │   ├── boot_images.zip
 │   ├── common.zip
 │   ├── debug_image.zip
 │   ├── info.zip
 │   ├── LINUX.zip
 │   ├── modem_proc.zip
 │   ├── rpm_proc.zip
 │   ├── trustzone_images.zip
 │   └── wcnss_proc.zip
 └── msm8974_2013-10-29_amss_oem
     ├── adsp_proc.zip
     ├── AU_INFO.txt
     ├── boot_images.zip
     ├── common.zip
     ├── debug_image.zip
     ├── info.zip
     ├── LINUX.zip
     ├── modem_proc.zip
     ├── rpm_proc.zip
     ├── trustzone_images.zip
     └── wcnss_proc.zip

高通的基带硬件按照功能的不同分为两类:

  1. MSM系列 (MobileStation Modem)
  2. MDM系列 (Mobile DataModem)

MSM系列主要是给手持移动通信设备使用,例如手机等

MDM系列主要是给移动数据流量设备使用,车联网或其它物联网设备等

MSM系列与MDM系列的区别

MSM系列芯片包括应用处理器(Application Processor)和基带系统处理器(Baseband Processor)还有Wi-Fi,蓝牙等,这个主要是提供整体的手机解决方案来给手机产商使用,Android生态的大部分手机都是运行在高通的MSM系列的SoC之上,例如小米5手机搭载的高通骁龙系列S820的SoC就是MSM8996系列的芯片,应用处理器运行的是Android系统。

0x06 参考资料

伟神 ahwei :MOSEC议题解读 | PWN2OWN shannon基带破解之旅

谢君 vessial : 移动基带安全研究系列文章之概念与系统篇

DEF CON 25 – Mickey Shkatov, Jesse Michael, Oleksandr Bazhaniuk – Driving down the rabbit hole

https://www.youtube.com/watch?v=5QBOmr_ZyLo

https://media.defcon.org/DEF CON 25/DEF CON 25 presentations/DEF CON 25 - Mickey-Jesse-and-Oleksander-Driving-Down-the-Rabbit-Hole-UPDATED.pdf

Reverse Engineering and Exploiting Samsung’s Shannon Baseband —> PDF

https://www.slideshare.net/slides_luis/baseband-playground-10652487

资源:

Awesome-Cellular-Hacking https://github.com/W00t3k/Awesome-Cellular-Hacking

Awesome-Baseband https://github.com/R3dFruitRollUp/Awesome-Baseband

RFSec-ToolKit https://github.com/cn0xroot/RFSec-ToolKit

发表评论

Please log in using one of these methods to post your comment:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s