zoukankan      html  css  js  c++  java
  • 【原创】基带攻击:智能手机入侵的新手段

    当前针对智能手机主流的攻击集中在应用处理器上运行的软件,今天要介绍的这种攻击方式是打破手机的基带处理器,在基带堆栈中导致远程执行代码的攻击。这是一个全新的领域,但国内在这方面的研究几乎没有,发到Freebuf竟然都没审核通过。(需要基本通信技术GSMOpenBTS等基础)

           起于德国安全公司Comsecuris公司总经理Ralf-Phillip Weinmann研究员在上周透露,MIAMI-A以前未公开的基带漏洞影响了华​​为智能手机,笔记本电脑WWAN模块和IoT组件,可攻击数百万部华为手机。在一种攻击方案中,攻击者可以利用此漏洞对空中受攻击的设备执行内存破坏攻击。

    原文链接:https://threatpost.com/baseband-zero-day-exposes-millions-of-mobile-phones-to-attack/124833/?from=timeline

    一、基带是什么,有什么用?

           根据百科解释,基带是Baseband 信源(信息源,也称发射端)发出的没有经过调制(进行频谱搬移和变换)的原始电信号所固有的频带(频率带宽),称为基本频带,简称基带。

           基带本质上是手机中的一块电路,负责完成移动网络中无线信号的解调、解扰、解扩和解码工作,并将最终解码完成的数字信号传递给基站等上层处理系统进行处理,基带即为俗称的BB,可以理解为通信模块。

          基带芯片的组成大致可以分为五个模块,分别是CPU处理器、信道编码器、数字信号处理器、调制解调器和接口模块。核心部分最主要是两个部分:射频部分和基带部分。射频部分是将电信号调制成电磁波发送出去或是对接收电磁波进行解调,并且实现基带调制信号的上变频和下变频。基带部分一般是对信号处理,一般由固定功能的DSP提供强大的处理能力,在现代通信设备中,DSP一般被用作语音信号处理、信道编解码、图像处理等等。

          目前手机网络有分GSMCDMACDMA-2000WCDMATD-SCDMAFDD-LTETD-LTE等多种制式。手机支持什么制式网络及频段,通话质量的好坏、网速的快慢、信号的强弱都由这块基带芯片决定。

         生产手机基带芯片的厂家主要有:高通、德州仪器(TI)、意法半导体(ST)、博通、爱立信EMP、飞思卡尔半导体、PhilipsAgereInfineon、联发科(MTK)、展讯通信、ADINXP、华为海思、威盛凌阳互芯集成等等。

    以高通骁龙835为例,在整个SoC芯片上,集成了CPUGPUDSPISP、安全模块以及X16 LTE Modem

    二、基带是如何工作的?

           很简单,当我们用手机打电话、上网时,电信号首先要经过基带处理,然后在手机和基站间建立逻辑信道,语音、网络数据就通过逻辑信道发送给基站,实现信息的互联和通信。基带的重要性显而易见。

    一个经过简化的数字通信系统模型如下所示

     

    三、攻击手段

          Ralf-Phillip Weinmann早在2010年就发表了针对基带的数种攻击:

    链接:https://www.usenix.org/system/files/conference/woot12/woot12-final24.pdf

          对基带漏洞的挖掘同样通过对固件的逆向分析,几乎所有的基带处理器都是ARM处理器,因此得到了IDA Pro拆解器的良好支持,结合Google BinDiff工具可以重新识别二进制文件中的已知功能。通过计算功能的流程图上的多个度量,获得功能指纹,从几个标准编译器库和具有符号的RTOS二进制文件中的符号来识别诸如memcpy(),memmove()和bcopy()和RTOS系统函数的函数。这使我们能够识别使用可变长度存储器副本的功能,使我们能够快速查看其中哪些对于复制的数据使用了不足的长度检查。

    可利用的内存损坏类型总结有以下几种:

    1、长度检查不足

         这类漏洞通常导致堆上或堆叠上的数据被覆盖,攻击者可以利用这些数据来利用通常的方法来控制执行流程。利用这些嵌入式系统中的堆栈破坏漏洞比现有的桌面平台更容易实现。

    2、对象/结构生命周期问题

          由于在GSM中大量使用状态机,因此在生命周期问题中可能会导致内存损坏。这些可以是免费使用的错误(例如,已经释放的结构的悬挂指针)或未初始化的变量(在堆栈中最有用)。状态机的常见示例是用于处理传入的SMS和小区广播的状态机。

    3、内存信息泄漏

            这类漏洞不是内存损坏问题,但内存信息泄漏对于更好地利用内存损坏来说非常有用。通常,它们在上述生命周期问题的上下文中出现,至少在基带堆栈中。其中没有任何格式字符串问题,因为sprintf()函数的大多数使用都在诊断代码中,并且不允许传递任意格式的字符串。

    四、漏洞利用及危害

     

           简而言之,触发漏洞只需使用GSM移动设备的AT命令集中定义的自动功能,找到AT命令处理程序来设置S0寄存器。对于堆栈缓冲区溢出或其他漏洞,则直接对程序计数器进行控制,然后将值1加载到寄存器R0中,并重定向执行流入此功能。

         GSM基带软件堆栈中成功利用内存损坏,攻击者可以访问电话与隐私相关的硬件,控制电话基带侧的攻击者可以完全透明地监视用户,而无需从应用程序CPU侧入手。另一个问题就是围绕着围绕计费问题:一旦攻击者控制了基带,他可以拨打电话,发送高级短信或导致手机拥有者不了解的大量数据传输。这显然可能对运营商和终端用户造成困扰。

    五、总结

           从以上我们知道,基带固件的内存损坏存在并可以被实际利用。对这些安全问题的实际利用完全损害被攻击手机的完整性。仅仅进入恶意基站的附近就足以接管任何易受攻击的手机,而不需要用户交互。开发成本低到足以使这些攻击成为现实:对于中档笔记本电脑的价格为1500美元 ,攻击者可以购买硬件来操作带有OpenBTS的恶意GSM手机。

  • 相关阅读:
    Python-Matplotlib 12 多图figure
    Python-Matplotlib 11 子图-subplot
    Python Day16
    Python Day15
    Python Day13-14
    Python Day12
    Python Day11
    Python Day9-10
    Python Day8
    Python Day8
  • 原文地址:https://www.cnblogs.com/jayway0day/p/6707161.html
Copyright © 2011-2022 走看看