在早前我们就已经发布过有关iOS假面攻击威胁的文章,你可以参考文末参考文档中[2][3][4]。到目前为止,这类攻击依旧十分流行。FireEye最近从HackingTeam军火库中发现11款iOS App使用了假面攻击,其中有一款恶意App还是针对未越狱用户的。
对这些受欢迎的社交App以及聊天App进行逆向工程并加入攻击代码。其中包括WhatsApp, Twitter, Facebook, Facebook Messenger, WeChat, Google Chrome, Viber, Blackberry Messenger, Skype, Telegram,以及 VK。与这些App的正常版本不同的是,这些假面App都含有一个泄漏敏感数据以及连接远程服务器的设计。由于App中所提供的服务,图标等与应用商店中真实的App完全相同,他们可以放心大胆的替换iOS 8.1.3版本之前的真实App。
注意,攻击者是可以远程配置图标的。所以对于高于iOS 8.1.3版本的设备,尽管假面攻击漏洞已经被修复(App使用相同的图标是不会被替换的),攻击者仍然可以通过配置一个独特的图标来部署假面App。
上图显示了经过重新打包的Facebook应用在运行时的行为,启动应用程序之后连续3次弹出请求访问照片,麦克风,以及联系人的警告。
恶意的假面攻击App利用MachO format的LC_LOAD_DYLIB命令将一个恶意的dylib (named “_PkgSign”)注入到真正的可执行文件中,这个dylib实现了恶意攻击的逻辑核心。
由于每一个假面攻击App内部结构各不相同,dylib需要使用连接不同的泄漏数据的方法。在下表中我们已经列出来,恶意dylib管理的假面攻击App的id前缀固定为“TIGI000”以及一个定制的类来远程管理恶意攻击。
注入的dylib在真正的可执行文件中连接38个类中的52个敏感函数,所有连接的类方法都符合真实应用程序的关键功能。比如在Whats App中使用“[SKPConversation OnMessage:andMessageobjectid:]”拦截短信,以及“[VideoVoipCallerView OnBeginTalk:]”开始录制通话。
注入的dylib扮演着App可执行文件的一部分,可以读取/修改app中的数据收集敏感信息然后发送到远程服务器。
Skype, Wechat等中的语音通话记录 Skype, Whats App, Facebook messenger等中的短消息拦截 Chrome网站历史记录 电话 SMS/短信内容 精确的GPS坐标记录 联系人信息 照片
需要特别注意的是,dylib有能力完成仅从目标用户下载数据的任务。其会将IMEI发送到远程服务器进行筛选,攻击者看是否感兴趣,然后服务器再决定是否获取其敏感信息。尽管如此,如果用户在keychain中将SKIP-LICENSE设置为1,我们有方法绕过其检测。
最后,所有的数据都经过Json格式重新封装,然后发送给服务器。上图就演示了上传数据(实际值已去除),items包含了不同的数据类型,例如通讯应用的聊天记录,地理位置,通话记录等。
远程服务器和恶意行为都是通过URL进行配置的,在每一个样本案例中,我们发现一个用来增加Info.plist文件的定制URL。这个URL遵循“TIGI0000X://”格式,与表格中所列相同。
通过连接“application:openURL:sourceApplication:annotation:”函数,当打开这个URL,恶意dylib就开始解析配置数据。
从HackingTeam泄漏出的工具可以看出,针对iOS设备更加先进的攻击方法已经出现。我们鼓励iOS用户保持最快速度更新固件版本,以及验证应用程序的来源。
[1] VB2014 paper: Apple without a shell – iOS under targeted attack
[2] iOS Masque Attack Revived: Bypassing Prompt for Trust and App URL Scheme Hijacking
[3] Masque Attack: All Your iOS Apps Belong to Us
[4] Three New Masque Attacks against iOS: Demolishing, Breaking and Hijacking
* 参考来源 fireeye ,译者/鸢尾 转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)