新技术论坛
搜索
查看: 1104|回复: 0
打印 上一主题 下一主题

利用OTA攻击手机终端的实现

[复制链接]
  • TA的每日心情
    开心
    2016-12-9 18:18
  • 签到天数: 85 天

    连续签到: 1 天

    [LV.6]常住居民II

    扫一扫,手机访问本帖
    楼主
    跳转到指定楼层
    发表于 2016-3-20 02:49:40 来自手机 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    前言
    智能手机是每个人必备的移动设备。然而,很少人知道服务提供商能够隐蔽的、无处不在的控制你的设备。在全球超过20亿的移动设备中发现过这些隐藏的控件。一些机构一直悄悄地在智能手机、基带、笔记本电脑、嵌入式M2M设备,甚至是一些汽车上部署这些控件。服务提供商可以通过隐藏的被动层面去控制你的设备(Android、iOS、Blackberry),可以利用该控件通过 Over-the-Air对主流的蜂窝平台网络用户(GSM/CDMA/LTE)进行远程执行代码。


    OMA
    OMA全称是Open Mobile Alliance,即开放移动联盟,成立于2002年6月,它的目的是搜集市场需求,规范业务应用层和网络功能层之间的接口,定义一个公开的标准框架,从而为用户提供无缝隙的端到端业务。
    目前OMA对移动终端的浏览器(Browser)、终端管理(Device Management)、数据同步(Data Synchronization)、终端下载(OMA Download over the Air)、数字版权管理(OMA Digital Rights Management)等都定义了相应的规范,用以保证设备应用的互通性。OMA定义的业务范围基本涵盖了当前移动终端业务的所有方面。目前拥有超过20亿的移动设备用户。
    OMA-DM
    DM全称Device Management,即终端管理,是一种通过远程服务器对网络内终端进行管理的协议。通过OMA DM,服务器可以对终端设备进行固件更新、参数配置、数据采集等各种管理功能。主要管理对象如下:
    FUMO:固件更新对象,通过OTA (over the Air)方式,利用GPRS网络进行固件更新。
    ConnMO:连接参数管理对象,管理蜂窝网络和基带参数,APN、CDMA设置,Band、CSIM / UICC、LTE、IMS、VoWiFi等。
    LAWMO:锁定和擦除管理对象,锁定手机、恢复出厂设置等。
    DCMO:终端能力管理对象,管理设备功能,如加密设置、摄像头、蓝牙、GPS等。
    DiagMon:诊断和监测,管理和监控RF设置、电池状态、内存使用、进程列表等。
    SCOMO:软件和应用控制管理对象,能够远程安装、删除、启动、关闭应用软件。

    Red Bend是世界移动软件管理(MSM)领域的专业厂商,通过无线方式为软件提供固件、应用、设备管理解决方案。RedBendSoftware提供的移动软件管理软件帮助手机厂商和网络运营商加速其新业务及新功能的推广,能够让服务提供商集中管理软件分析、应用和固件无线更新。通过一个网上控制平台,服务提供商可以部署、安装、更新、激活、停用、分析和删除任何启用了Red Bend方案的移动设备上的软件。其市场占有率达到了70-90%,这意味着有70-90%的设备都可以被远程控制。使用RedBend Software的设备厂商如下:

    DM客户端与DM服务器通信分为三个以下阶段:
    会话发起阶段:由服务器下发Notification Initiation Alert消息发起一次DM会话过程,Notification Initiation Alert消息采用WAP方式编码,通过短消息方式发送到终端,此外,DM会话也可以由客户端发起。
    会话建立阶段:不管会话是如何发起,DM客户端将发送“Package1”消息开始会话建立过程,“Package1”消息中除了包含终端设备基本信息外,还有./DMAcc/节点下的认证、鉴权信息。之后,服务器回复“Package2”信息,携带DM命令。
    管理阶段:“Package3”是DM命令的执行结果,由客户端向服务器发送。此后,服务器可以继续下发更多的管理命令,重复管理阶段的过程,否则会话结束。

    OTA(Over-the-Air Technology)空中下载技术。是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。空中下载技术基于客户端/服务器方式,服务器端为运营商的后台系统(客服中心、计费系统、应用服务器等),客户端则是SIM卡。运营商的后台系统负责将服务请求发送给一个OTA网关,然后再由这个OTA网关把这些服务请求转换成短信后发给一个短信服务中心(SMSC),最后再由这个短信中心把它们传给服务区内的一个或多个SIM卡。
    最初的OTA payload类型:
    Network Initiated Alert (NIA),用来通知客户端的DM会话复位。
    DM Bootstrap,纯粹用来配置OMA-DM客户端。
    CP Bootstrap,原本是用来配置其他设备,现在作为配置OMA-DM客户端的辅助方法。
    其中NIA类的payload利用实例:用来唤醒客户端,连接到OMA-DM服务器,可以在多种类型的载体上发送。

    DM Bootstrap类的payload利用实例:提供初始配置信息和重置信息。

    客户端执行分析
    1、通过OTA向手机传入数据
    2、基带解析数据(WAP、PDUs、IMS、等等)
    3、基带再通过系统用户层接口传入数据和元数据
    4、系统用户层重新解析传入的基带传入的数据
    潜在的攻击方式:随着移动通信技术的发展,蜂窝移动通信全面影响着人们的工作和生活,使用中存在着许多安全保密隐患。 虽然移动通信系统采用了多种安全机制,但仍然存在很多安全漏洞,面临许多安全威胁。
    1、针对蜂窝网络的攻击
    GSM / CDMA的攻击载体:
    设备到设备的WAP推送
    第三方WAP推送接口
    M2M的UDP端口
    LTE 下一代攻击载体:
    IMS / SIP 数据网络设计
    布局更接近“常规”的互联网

    2、Rogue基站攻击:
    2.5G GSM基站可用于攻击全局LTE、GSM / LTE CDMA设备:
    干扰LTE/3G 的蜂窝频率,使其下降到2.5G,广播特定的蜂窝邻居信息,迷惑全局设备连接到2.5G GSM基站。
    作为一个“好邻居”,利用多个BTS广播蜂窝邻居信息极大地增加了暴露蜂窝网络的可能。小型基站——是获得蜂窝通信最稳定和有效的方法。


    尝试相关测试
    蜂窝网络测试所需硬件:
    1、NanoBTS,OpenBSC开源的基站控制器,内置SMPP接口。
    2、USRP B210,但存在不稳定问题。
    3、一个小型基站。

    鉴别被控制客户端(手机)的方法:
    1、IOS:查看用户配置文件的通讯中心接口
    2、Blackberry:查询无线电QCFM服务
    3、Windows Mobile:阅读帮助文档
    4、Android:
    检查可以接收WAP/Raw的数据和SMS/SMS intents
    检查RIL,广播,或其他可能利用基带直接访问的服务

    鉴别被控制客户端(嵌入式设备)的方法:
    1、逆向基带固件
    2、鉴别所有使用WAP/SyncML/WBXML的二进制文件
    3、追踪UART端口
    4、基于BTS的测试,监控所有的蜂窝通信

    模拟蜂窝网络环境:
    使用hook和modify修改应用程序来确定蜂窝网络的连接状态,让手机认为这是在一个蜂窝网络上,而真实情况是通过WiFi通信。以编程方式发送WAP消息测试功能,并进行本地fuzzing。
    代码注入到Zygote进程,在设备上hook所有的系统app,监控并寻找Android安全敏感的API ,可以实现下列功能:
    1、Crypto、SSL、IPCs、命令注入
    2、Webview、SQLi、共享参数
    3、URI处理程序、日志、文件权限
    4、分析Java/JNI


    OMA-DM的安全漏洞
    虽然移动通信系统采用了多种安全机制,但仍然存在很多安全漏洞。比如其中OMA-DM客户端身份验证,以及数据传输过程的加密缺陷等等。
    身份验证漏洞,目前运营商实现OMA-DM客户端身份验证是基于组合认证:
    设备的IMEI或MEID
    共享秘钥令牌
    如果攻击者对IMEI/MEID和秘钥机制足够了解,就可以控制OMA-DM客户端,IMEI号/ MEID是通过蜂窝网络广播出去的,设备的IMEI/MEID也是作为客户端的用户名使用,而它的密码则只是将IMEI简单的通过Base64和MD5算出来的。


    传输加密缺陷方面:
    SSL主机名的检查函数只是直接返回true

    前面提到的市场占有率非常高的移动软件管理(MSM)厂商“RedBend“,使用不安全的(HTTP)RedBend.com的测试服务器,这是一个不小的隐患:
    设备可以通过特定的WAP NIA指令使用HTTP测试服务器

    除了上面所说的安全漏洞及安全缺陷外,许多OMA-DM客户端也存下面的漏洞:
    Buffer overflows(缓冲区溢出)
    Heap corruption(堆损坏)
    Integer overflows(整数溢出)
    Format string issues(格式化字符串问题)
    Arbitrary reads(任意读取)
    Invalid Frees(无效释放)

    其中的一个可利用OMA-DM漏洞
    漏洞实例:Reading Memory
    自定义一个WBXML payload来利用和控制内存读漏洞
    利用某些SyncML功能返回已控制内存的内容
    单一的payload可以制作多种控制读取功能

    绕过ASLR:
    如果目标是IOS Android这些,那利用OMA-DM漏洞时还需要考虑如何绕过它,现在公认比较好也比较普遍的办法还是通过构造ROP链来执行最终的shellcode。
    为了构造ROP链,首先,肯定是要到当前可访问的地址空间去寻找一些可用的代码节,在这些代码节中去搜索指令碎片来构成我们的ROP链的ROP gadgets,那么在寻找代码节时,以下几点值得一提:
    1、堆中经常汇集了很多函数指针,那这些指针指向的函数代码可以供我们用于搜索。
    2、DM tree下的每个节点也包含了很多相邻的函数指针,同样这些函数的代码可以供我们搜索。
    3、代码节的基地址可以通过偏移量的计算来确定
    ROP链构造好后,还需要到栈上来找一片空闲区域来存放ROP链,那么栈空间的寻找也有以下几点值得一提:
    1、IOS方面:许多栈都是位于MALLOC_LARGE内存区域的附近,我们可以先定位到MALLOC_LARGE区域处,再基于MALLOC_LARGE往高处或往低处寻找。

    2、Android方面:Android上的ASLR的实现本身是比较弱的,大量的静态库文件都是位于同一个地址圈内。
    动态构建ROP链:
    手动的搜索大量gadgets并创建一个ROP链是非常的耗时的,特别是在IOS上时。那我们可以先去建立一个用于自动化的搜索并拼接可用gadgets,从而生成ROP链的C++工具。并且这个工具最好是可以保存多个大型的ROP链的,这样有一个好处就是当我们下次想为一个小的payload构造ROP链时,可以从其他已保存的大ROP链中拆解出一些(或全部)可用的gadgets.


    END
    通过OTA进行远程攻击的总体流程:
    首先,在我们的攻击设备上使用OTA无连接状态的WAP来推送NIA/Bootstrap payload给一台目标设备,绕过IMEI / MEID身份认证。然后OMA DM客户端响应,响应时可以不使用SSL(因为前面你也看到了SSL检查都只返回1),于是OMA DM会话建立,进入管理阶段。

    参考资料:https://www.blackhat.com/docs/us-14/materials/us-14-Solnik-Cellular-Exploitation-On-A-Global-Scale-The-Rise-And-Fall-Of-The-Control-Protocol.pdf
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|Archiver|开发者俱乐部 ( ICP/ISP证:辽B-2-4-20110106号 IDC证:辽B-1-2-20070003号 )

    GMT+8, 2024-12-23 18:44 , Processed in 1.377229 second(s), 19 queries .

    X+ Open Developer Network (xodn.com)

    © 2009-2017 沈阳讯网网络科技有限公司

    快速回复 返回顶部 返回列表