假面攻击:你所有的iOS应用都在我们的手掌心

2014年11月10日,火眼(Fireeye)移动安全研究人员发现那种使用enterprise/ad-hoc授权文件(provisioning)安装的iOS应用会替换掉从App Store下载的正版iOS应用,前提是两个app使用的是相同的bundle identifier。

这个恶意软件使用随机名称(比如“新生气小鸟”),诱使用户安装下载,但安装后就会发现,它并没有安装“生气小鸟”,而是将从App Store下载的合法应用替换掉了。所有从App Store上下载的应用都能被替换掉,除了iPhone本身自带的应用(如Mobile Safari)。

这个漏洞出现的原因是iOS并没有严格要求使用相同bundle identifier的应用的证书要匹配。目前我们发现漏洞存在的版本有iOS7.1.1、7.1.2、8.0、8.1以及8.1.1beta,iPhone越狱和非越狱机都受影响。攻击者利用该漏洞的方式可通过无线网络或USB。我们将这一漏洞命名为“假面攻击”。

我们在7月26日就已向苹果公司报告了这一漏洞。最近克劳德.箫发现“WireLurker”恶意程序。在仔细研究了WireLurker后,我们发现它开始利用“Masque攻击方式”的有限形式通过USB来公司iOS设备。假面攻击带来的攻击破坏要强于WireLurker。Masque攻击能导致iPhone上从App Store上下载的合法应用被替换掉,比如银行或邮件应用。这意味着攻击者能够窃取用户的银行凭证信息,只要恶意软件和将要被替换的合法应用使用一致的UI界面。

我们惊奇得发现,恶意程序甚至能够接入原始应用的本地数据,而且当原始应用被替换掉时本地数据扔保留了下来。这些本地数据中可能包含缓存的邮件,或甚是登陆许可证(login-tokens),以后恶意程序可使用这些关键信息来直接登陆用户账户。

目前,我们发现这个漏洞问题已经开始传播。所以面对这样的形势,我们认为有必要让公众了解详细情况,因为潜在的危险可能影响到每一个人。与此同时,我们也向大家列出了一些解决办法,帮助iOS用户能更好的享受到应有的服务。

安全影响

通过Masque攻击,攻击者能够诱使受害者下载安装恶意应用,使用伪造的应用名(攻击者起的名字),而且该恶意应用会将合法的应用替换掉(使用相同的bundle identifier)。Masque攻击方式无法替换iPhone自带的应用,如Mobile Safari,但就是能替换从App Store下载的应用。经过我们的总结发现,假面攻击会带来以下严重的安全后果:

1. 攻击者会模仿原始应用的登陆界面以窃取用户的登陆凭证信息。我们通过对多个银行及邮件应用已经验证了这个事实。就是说这个恶意程序会使用与原始应用相同的UI界面欺骗用户,诱使他们输入自己的登陆凭证信息,然后攻击者将凭证信息传送到远程服务器上。

2. 我们还发现原始应用的目录下的数据,比如说本地数据缓存,即使在原始应用被替换掉时,这些本地数据仍保留在恶意应用的本地目录中。所以恶意程序窃取了这些敏感信息。我们通过邮件类应用证实了这个事实,具体发现就是恶意软件窃取了重要邮件的本地缓存,然后将这些信息上传到其远程服务器上。

3. MDM(移动设备管理)接口无法辨别恶意应用和原始合法应用,如果它们使用的是相同的bundle identifier。目前MDM API不会获取每个应用的凭证信息(certificate information)。这样的话,MDM也就很难发现此类攻击。

4. 我们曾在病毒公告白皮书2014(Apple without a shell – iOS under targeted attack)中提到过,那些使用enterprise provisioning描述文件(我们都将其称作“EnPublic应用”)的应用不受苹果审查。因此,攻击者就是利用这一漏洞,使用iOS私有API进行强大的攻击活动,比如像后台监控(CVE-2014-1276)和模仿iCloud的UI界面来窃取用户的Apple ID和密码的活动。

5. 攻击者通过Masque攻击还能绕过正常应用的沙盒,然后通过利用iOS已知漏洞获取root权限,比如之前盘古团队进行的攻击活动。

举例

我们在进行实验时,使用了一个内部应用,用的bundle identifier是“com.google.Gmail”,应用名字为“新生气小鸟”。我们通过enterprise凭证给这款应用签名。当我们从网站上安装这款应用时,它便替换了iPhone上原始的Gmail应用。

图1

图1展示了整个过程,图1中的a、b展示了合法的Gmail应用已安装在iPhone设备上,而且有22封未读邮件。图1中c展示受害者被引诱去安装下载(从网上)一个名为“新生气小鸟”的内部应用。需要注意的是“新生气小鸟”是这个恶意程序的名称,其实攻击者可以把它设置成任意的名字。但这个恶意程序用户的bundle identifier是“com.google.Gmail”。

当用户点击“安装”后,图1中d展示的是安装过程中内部应用替换了原始应用。图1中e展示原始Gmail应用被内部应用替换。安装完后,当用户打开Gmail应用时,用户就自动登录到一个UI几乎完全一致,只是在界面上方能看到一小行字“没错,你上钩了”的应用,呵呵,这只是我们恶作剧为了向大家展示这一攻击过程提前设置好的信息。在真实攻击活动中,攻击者可不会跟你这么礼貌。与此同时,原始应用的本地缓存邮件数据,在一个sqlite3数据库以清晰文本形式储存的数据,在图2中展示,就被上传到远程的服务器上。

注意Masque整个攻击过程完全是在无线网络下进行的,并没有依靠将一个设备连接到一台电脑上。

图2

视频

解决办法和预防方法

iOS用户可以采取以下三个步骤来降低被攻击的风险:

1. 下载应用时,除了App Store不要去乱七八糟的第三方下载平台

2. 不要点击第三方网页给你弹出的一个弹框内显示的安装提示(如图3),不管弹框内写的是什么信息都不要相信。弹框内的信息都是攻击者使用吸引人的字眼来诱使用户点击的。

3. 当打开一款app时,如果iOS给你发出警告信息“不受信任的应用开发者(图3)”,请选择“不信任”,然后立即卸载这款应用

图3

检查一下,是否已经通过Masque攻击活动下载了很多应用了,iOS7用户可以检查安装在他们iPhone上的enterprise provisioning描述文件,这一信息表明了Masque攻击可能植入的恶意软件的签名身份。路径是“Settings – > General -> Profiles” for “PROVISIONING PROFILES”。iOS7用户可以向相关安全部门上报可疑的provisioning描述文件。删除provisioning描述文件可以防止enterprise签名应用(依靠provisioning描述文件才能运行的应用)运行。但是iOS8设备未显示已经安装在设备上的provisioning描述文件,我们建议用户需要更加谨慎,在安装应用程序时。

我们在7月份时已向苹果报告了此漏洞。因为目前苹果推出的标准防御手段或接口无法预防此次攻击,我们希望苹果能够向专业的安全技术设备供应商提供更为强大的接口,以保护企业用户不受此类攻击的影响。

在此,我们要感谢火眼团队成员Noah Johnson和Andrew Osheroff,感谢他们为demo视频做出的贡献。此外,我们还想感谢Kyrksen Storer和Lynn Thorne,感谢他们为这次博文做出的贡献,尤其,还要感谢Zheng Bu,感谢他提供的珍贵的评论和反馈。

原文链接:http://www.fireeye.com/blog