黑客利用被入侵网站感染访问者iPhone

前几天Google Project Zero 的Ian Beer发布的一个帖子震惊了全世界的安全社区。根据Beer所说,在今年2月份,部分网站被黑客入侵,目的是攻击iPhone。这些网站每周都有成千上万的访问者,近两年内来黑客利用这些用户来传播iOS恶意软件。 

iOS感染史

有史以来,iOS从来没有感染过恶意软件,但要看是否属于以下两种情况之一:第一种情况是,你手机越狱了,安全限制解除导致安装恶意软件;另外一种情况是你被一个民族国家锁定。Ahmed Mansoor就是后者的一个典型的例子,他的目标是发送钓鱼短信,企图用NSO的恶意软件感染他的手机,这就是三叉戟事件。

感染iPhone的难度在于它需要利用某种0 day漏洞,而这些漏洞在公开市场上价值多达100多万美元。比如像Zerodium这样的公司会购买它们,不过广泛使用这些漏洞无异于“引火自焚”,并且这样Apple很可能发现漏洞的存在并修复应用程序。

这就是三叉戟干的好事儿——给一个非常有警惕性的记者发钓鱼短信这种愚蠢的行为,导致了价值三百万美元的漏洞被发现和修补。

因此,iPhone恶意软件感染始终被视为不会影响到普通用户的问题。毕竟,除非收益大于潜在成本,否则谁会花100多万美元来感染个人?当然,世事无绝对,Beer的研究结果颠覆了传统。

感染机制

根据Beer的说法,这些有问题的网站来访者,无论男女老少统统都遭受到了水坑攻击,使iOS产生了14个不同的漏洞,这些漏洞又被合并为五个不同的攻击链。

攻击链可以是两个或多个漏洞,甚至是一系列的漏洞,如果一起使用则可以实现特定目标,这是典型的目标系统的感染。在这种情况下,仅靠一个漏洞不足以实现目标,但将两个或更多个漏洞组合起来就有可能实现。

在使用的漏洞中,只有两个在发现时被提示为0 day(CVE-2019-7286和CVE-2019-7287)。Apple公司在2月7日发布的iOS 12.1.4版本中已经修复了这些问题。剩下的12个当时不是0 day,这意味着它们早已发现并且修补。这些攻击链能够感染运行iOS 10到iOS 12.1.3设备。

关于iOS 12.1.4的安全性内容

Beer是一个非常有技术头脑的人, 他对每一个攻击链都有非常详细的描述。并且很重要的一点是,每一个攻击链都被设计成相同的注入程序被注入设备,所以我们来重点关注一下iPhone恶意软件的注入。

iPhone恶意软件的注入

iPhone恶意软件注入程序,还没有被命名,能够逃脱iOS沙箱并以root身份运行,这基本上意味着它绕过了iOS的安全机制,并拥有最高级别的权限。

植入的恶意软件使用普通的未加密HTTP与硬编码IP地址来命令和控制(C&C)服务器通信。除了将数据上传到服务器之外,它还可以从服务器接收许多命令。

systemmail  : upload email from the default Mail.app

device      : upload device identifiers

               (IMEI, phone number, serial number etc)

locate      : upload location from CoreLocation

contact     : upload contacts database

callhistory : upload phone call history 

message     : upload iMessage/SMSes

notes       : upload notes made in Notes.app

applist     : upload a list of installed non-Apple apps

keychain    : upload passwords and certificates stored in the keychain

recordings  : upload voice memos made using the built-in voice memos app

msgattach   : upload SMS and iMessage attachments

priorapps   : upload app-container directories from hardcoded list of

                third-party apps if installed (appPriorLists)

photo       : upload photos from the camera roll

allapp      : upload container directories of all apps

app         : upload container directories of particular apps by bundle ID

dl          : unimplemented

shot        : unimplemented

live        : unimplemented

这个命令列表简直令人发指。除此之外,iPhone恶意软件还能够窃取所有钥匙串、照片、短信、电子邮件、联系人、便笺和录音。它甚至可以检索到完整的通话历史记录,并且能够对设备进行实时监控。

它还包括从许多主要的end-to-end加密消息传递客户端获取未加密的聊天记录的功能,包括信息、Whatsapp和Telegram。一旦受到感染,你所有加密信息不仅会被攻击者收集,而且还会通过Internet以明文形式传输。

如何应对

有一个好消息和一个坏消息,你想先听哪个?还是让我替你们选择吧!

坏消息是,我们目前还不知道有哪些网站受到了影响,因此也无法知道谁可能感染了这种神秘的iPhone恶意软件。这对那些意识到这个问题的人造成了很大的恐惧。

好消息是,我们现在没必要惊慌失措。因为这些漏洞已经修补了很长一段时间了。此外,当设备重启后,注入的程序实际上也保持不了多久。意思就是,每次重新启动受感染的iPhone时,或者安装iOS更新时,恶意软件就会被移除。(当然,如果再次访问受影响的网站,你的设备就可能会再次被感染。)

因此,任何运行iOS 12.1.4的设备不仅不受这些特定攻击的影响,而且在安装iOS 12.1.4(或更高版本)时重新启动,它也不会再被感染。除非有人永远不更新或重启手机,否则就不太有可能有人还会受到感染。如果您担心自己可能感染到病毒,只需安装最新的iOS更新,这就会重启手机并删除恶意软件。

比如现在有一部怀疑可能被感染的iPhone,我们来做一个简单的测试来验证一下, 但在重新启动之前您必须这样做,因为恶意软件需要处于活动状态。(免责声明:如果没有注入物的副本,我无法亲自验证,或找不到能够协助我这样做的其他人。)

首先,通过Lightning(或iPad Pro,USB-C)电缆将受影响的设备连接到Mac。

接下来,在Mac上打开Console应用程序,该应用程序位于Applications文件夹的Utilities文件夹中。

在Console中,找到设备列表中的电话并选择它。

此时,您将看到来自iOS设备的日志消息开始在右侧窗格中滚动。虽然Console不会向您显示过去的消息,但如果您在60秒或更短的时间内进行监控,受感染的iOS设备应生成包含某些短语的消息,例如“uploadDevice”,“postFile success”和“timer trig”。要查找的可能字符串列表可以在Beer的植入物拆解中找到; 代码显示NSLog命令的任何位置,表示将回送到日志中的消息。

影响

如果此时仍然没有更多有用的信息(例如被入侵的站点的名称),则无法知道是谁引起的或谁被感染。

Beer的文章在开头时说,恶意软件没有针对特定的人:

“这些被黑客攻击的网站,使用iPhone 0 day,对访客进行水坑攻击。  ”

他们没有特定目标,只要访问了被黑网站,即可被漏洞攻击设备,如果攻击成功,则设备将会被安装监控程序。

这么解释还算说得通。显然,恶意软件并不是针对个人。但是,这并不一定意味着它不具有针对性。

例如,在最近针对Coinbase和其他加密货币公司的攻击中使用的水坑攻击,使用Firefox 0 day,许多人访问了包含该漏洞的页面。但是,只有少数被恶意脚本感染。

由此看来,攻击不一定不是针对某些访问被黑网站的特定人群。实际上,这是水坑攻击的典型操作方式:目标群体可能访问的站点遭到入侵并用于传播恶意软件。在2013年,当攻击者破坏了一个基于Java的漏洞的开发者网站时,用OSX.Pintsized恶意软件感染了许多大公司(包括Apple)的开发人员使用。

启示

虽然这一事件的威胁已经过去,但这是一个令人大开眼界的启示。最终,一切都没有改变,你大爷仍然是你大爷。这种攻击未来还是有可能发生的,只是目前它还没有发生。

我仍然认为iPhone是这个星球上最安全的手机。但是,始终会有漏洞存在,并且完全有可能发生在当前版本的iOS上。

值得指出的是,大多数这些漏洞在发现时实际上并不是0 day。但很多人从来不更新他们的设备,潜在威胁倍增。所以还是建议大家更新到最新版本的iOS,这样您的设备才会受到保护。

iOS的极度封闭性意味着当这样的恶意软件出现时,人们无法判断他们的设备是否被感染。如果这个恶意软件能够持续存在,并且如果它没有将字符串泄漏到日志中,就很难确定iPhone是否被感染,这才是最危险的情况。

虽然Apple不允许在iOS上使用防病毒软件,但用户还是需要一些方法来检查他们的设备是否存在已知的威胁。