作者BILLY LAU, YEONGJIN JANG, CHENGYU SONG
- 原文:http://media.blackhat.com/us-13/US-13-Lau-Mactans-Injecting-Malware-into-iOS-Devices-via-Malicious-Chargers-WP.pdf
- Slides:http://www.cc.gatech.edu/~yjang37/papers/mactans_slide.pdf
- 知乎上的解读:http://www.zhihu.com/question/21424271
主要内容
利用假冒的充电器获取iOS设备UDID,获取授权文件provisioning profile,然后注入恶意应用。
根本原因
iOS(版本<=iOS 6)的物理缺陷
(1)任何和client建立会话的host都被client隐式地信任。
host可以在不需要用户允许的情况下查询或者修改client的状态。
(2)对于更改设备状态的行为,client不请求用户同意;设备状态被查询时,也不给用户提供任何提示。
(3)client上安装的应用可以被隐藏,方式与苹果隐藏自己的IOS系统应用一样。
(4)host可以在client上执行应用(如debugserver)而不需要用户同意。
(5)苹果Provisioning Portal的使用可自动获取授权文件(provisioning profile),通过提交目标设备的UDID可以自动获得授权文件。
(6)统一的数据、控制和电源接口。
主要问题:当iOS设备插入一个修改设备状态的host时,屏幕上没有可见提示。
iOS恶意软件注入攻击
- 概念性证明目标:将iOS设备插入一个假的USB充电器,攻击不需要越狱或用户交互。
- 攻击条件:
苹果30-pin或是闪电USB线
激活的iOS个人开发者许可证
iOS设备(攻击目标)
网络连接 - Mactans充电器,包括:
一个充电的USB端口
小规模微处理器/微控制器
Linux操作系统
iOS RPC通信库(如libmobiledevice)
攻击步骤
获取UDID
简单地通过标准工具如lsusb查询设备的USB标识符获取UDID,甚至可以在设备有口令锁定的情况下获取UDID。获取和安装授权文件
将UDID提交到developer.apple.com用于生成授权文件,这里有两种方式联网:通过SIM卡模块配备3G/3G移动网络;安装WiFi模块,通过扫描未保护的访问点、破解弱的访问点、暴力破解无线口令或是通过DNS隧道上网。
有了授权文件后,Mactans可以通过与com.apple.misagent通信将授权文件安装到目标设备上。注入恶意应用
通过与com.apple.mobile.installation_proxy注入任意应用到iOS设备。payload
注入的应用和其他普通应用拥有一样的权限,但Mactans应用绕过了苹果应用商店的检查。攻击者可以利用iOS私有API,创建一些在检查过程中会被拒绝的应用,比如:
(1)后台程序可以通过私有API调用截取当前屏幕的内容;
(2)注入的应用可以在通过与com.apple.mobile_image_mounter通信挂载DeveloperDisk.dmg,利用其私有库生成触屏事件并模拟硬件按钮按下。
缓解对策
在设备状态被通过USB连接的host查询或者修改时,操作系统应该通知用户。主要的措施是需要用户同意,以便host启动client上的应用或是像debugserver一样的特殊应用。对于iOS而言,苹果还应该阻止第三方开发者在应用的Info.plist中设置SBAppTags的值为hidden。