让iPhone与iPad数秒内沦陷的62078苹果后门

“如果微软像胖虎一样恶霸,那么苹果比小夫阴险一百倍。”我经常用这句话及指纹解锁一事来简短评论苹果计算机。最近特别推荐两组搜索关键词:“生物识别国主机器”、fingerprints usernames not passwords。其他苹果后门案例比较难以三言两语解释给麻瓜听,例如finfisher、MDM、iMessage、Find my iPhone等等。今天要谈的苹果usb + wifi后门也是如此。

最近美国政府突然再次呼吁勿使用公共USB充电站。从纽约时报的报道里的连接跟关键词出发,我简单摘要爬文心得:通过usb充电入侵手机的方式,通称为juice jacking。从实例的角度来看,至少有两大类很不一样的方式。一类是适用于攻击android/iOS/windows/MacOS/linux所有操作系统的BadUSB — 所以任何人的usb充电线都应该要戴保险套;另一类则是苹果的usb + wifi后门,也就是本文的主题。本文的主要参考数据是安全专家Jonathan Zdziarski写的How Juice Jacking Works, and Why It’s a Threat跟Sabri Haddouche写的How to finally disable this ******* Wi-Fi Sync port (62078) on iOS。

先谈一下android手机上一个很实用的机制。我在课堂上都鼓励学生激活android手机的adb传文件功能,除了传文件之外,也可以在计算机上实镜展演手机操作。一旦激活,每当手机与一部陌生计算机接上usb数据连接 (不含“仅与充电座进行电力连接”) 的时候,手机都会跳出警告消息,问你是否要信任这部计算机。一旦信任,那部计算机就可以对手机为所欲为。默认情况下,信任是暂时的 (仅限这一次连接);如果是自己的计算机,当然就可以勾选永久信任。如果你想要的话,android手机也允许信任的计算机通过wifi进行无线adb连接,但我都劝学生及读者不要激活。身为一位通识等级的信息安全老师,我认为adb连接机制这样的设计很正常合理。

苹果的iphone也有类似的机制。但是跟google的公开透明 (提供adb连接文件与程序代码) 形成强烈的对比,苹果的连接机制甚至没有正式的名字,我能找到的最好的相关关键词是62078 (端口号) 或lockdownd (手机那头的服务名称)。所以高手们只好通过逆向工程(还好目前TPM噩梦尚未成真,逆向工程尚属合法) 在2010年左右发布开放源码的libimobiledevice函数库让三大PC机操作系统皆可与iOS设备沟通,而不必受限于苹果官方所提供的工具。

图片来源

以下引用Zdziarski那篇2013年6月的文章:

“iPhone手机上有一个lockdownd随时倾听从62078端口传来的指令。只要连到这个端口、以正确的协议下指令,即可启动手机上的诸多服务,包含(可以下载你个人信息的) “备份”功能及(iTunes会用到的) “安装软件”功能。还有其他服务 (让计算机端) 可以启动封包监听以及用各种方式下载个人信息。事实上其中有一些苹果的服务我只能称之为后门 — 它可以从你的手机下载个人信息,过程却毫不加密。想要从iOS设备读数据出来或写东西进去,都要靠这个关键服务 (lockdownd)。从2010年起,就有许多开发者与黑客把这程序代码纳入他们各自的项目。有些商业安全鉴识公司用这个服务从iPhone上捞出他们自家产品的信息,而有一些更狂野的黑客则拿它来偷裸照、盗窃身份等等。”

当然,其中一个“应用”就是Juice Jacking — 当你把iPhone连到一个陌生的usb充电座时,不会想到墙后面可能是一部恶意的计算机,正渴望着通过62078端口唤醒你手机上的lockdownd来替它服务。

“最大的问题就是苹果的设计。手机不会问用户是否要允许(企图usb连接的) 设备与你配对。它就这么直接帮你配对了。每. ..一…次。所以一连上线之后几秒之内,就创建了一笔新的配对记录。更糟的是,这个配对记录就这么一辈子跟着你的手机,除非用户决定要(从iCloud的备份?) 还原iPhone。也就是说, (自从你上次还原之后) 任何曾经与你手上的手机(在你有意识或无意识的动作下) 配对过的设备,都可以访问你手机上的任何个人数据。有没有觉得有一点恶心了呢?”

还不急着吐,更恶心的还在后面:

“虽然配对过程一定要通过usb,但只要配对过之后,那个设备就可以通过usb或wifi操作你的手机,就算你把wifi同步功能关掉也没用。这意味着一名黑客只需要争取到配对的几秒钟usb连接,之后只有网络就可以无限期下载你的个人数据。”

所谓的“有网络就可以…”指的应该是与你在同一个wifi区网或同一个电信数据区网。所以他又补充:黑客(或是诸如NSA之类的政府监控机关) 还可以便用“已知的无线网络”强迫你的手机加入他的网络,或是若能成功入侵电信企业,也就能够通过电信数据网络操作你的手机。

以上这些现象,完全不是“程序设计的疏忽”所能解释的。任何一位具有正常水准安全常识的程序设计师,都不可能犯这种错误,更何况这个lockdownd服务如此地重要,参与开发的必然是苹果公司众多精英其中的超级精英。不~可~能~是疏忽。 在我看来,这些就是刻意打开的后门无误。 Zdziarski又丢下了更可怕的一句话:

“还有几个我不能够公开说的后门,可以让攻击者从你的设备下载你个人信息,不管你有没有激活备份加密机制、不管你的手机是否进入锁定状态。”

Zdziarski的那篇文章贴出的时间,大约也就是Snowden爆料NSA的PRISM等等监听机制的前后。而苹果也在此时新推出的iOS 7上面加上了“usb连接时会询问用户是否同意”的机制,但对上述其他问题都没有处理。到了2014年,甚至已有简体中文教学文解说该 “漏洞”。Sabri的文章及补救教学最早是2015年4月发布出来的;最后一次更新是2016年1月。直到今天,他的文章还是这么说的:“已经联系过苹果了,但他们却从未回应。”会不会是他后来没再维护这个网页了呢?我在搜索的过程其中,感到很诡异:这么严重的 “漏洞”,竟然很难找到主流媒体或安全媒体的报道。从2018年5月的一个quora提问跟2019年5月的一个slackexchange提问看来,苹果应该是到了晚近依旧没有把这个 “漏洞” 封起来。

“12/9下午” 噗友 @irvinfly找到2018年4月关于Trustjacking的报道,描述的基本上就是62078后门。文中提到iOS 7的补救方式,但也指出苹果对其他的问题依旧没有处理:

“(看到”是否信任” 消息时) 用户被误导,以为这(信任)只在实体连接时有效,所以就假设拔线之后他的私人数据就安全了。 … 攻击者可以便用这个漏洞在受害设备上安装恶意的apps,甚至可以把既有的app换成一个修改过的版本,看起来跟原来的app一模一样,但其实却可以在app打开时监控用户,甚至可以便用未公开的API全程(不限app打开时的意思?) 监控其他活动。

在我们以尽责的方式(意指先私下通知,隔一段时间后才公开此文) 向苹果披露之后,苹果(在iOS 11) 加了一个机制,确认只有iOS设备用户才能选择信任陌生计算机。方式是在用户确认信任一部计算机时,要求用户输入密码。如图所示,用户看到的消息依旧会令他误以为断线之后就可以确保他的私密数据是安全的。 . .. 苹果并没有全面性地回应Trustjacking的问题。一旦用户选择信任那部有问题的计算机,本文所描述的其他攻击照样继续有效。”

且让我用一个简单的譬喻来略过技术细节,帮你指出问题的核心。

所以到了2019年的现在, “漏洞” 依旧存在:陌生人只需要骗你同意过一次,光明正大地从正门进来、让你看着他从正门离开,然后你就会安心地进卧房睡觉了。之后,他依旧可以不定时地、不惊扰你地从侧门进你家。 十年前就公开的漏洞,就连Symantec这样重量级的公司在 (已经太晚了的) 2018年向苹果的回应,依旧被苹果顾左右而言他应对掉了。 我个人不相信苹果没有能力处理这个拖了十年的问题。我认为苹果根本就不愿意处理,因为这是它刻意留的后门。

撰文过程发现几件引人遐想的事,也顺便记载。维基百科写道:“苹果的iOS采取了多个安全措施以减小攻击面,包含不再允许设备自动挂载usb硬盘,也发布安全更新以修补诸如Mactans所提出的漏洞”但却并未提供苹果安全更新公告的相关联接。而且“自动挂载”根本就不是这个 “漏洞” 的重点啊!想要用网络时光机手动备份Zdziarski那篇文章时,网络时光机说:This URL has been excluded from the Wayback Machine. 我只好自己手动备份:文本版、图片版。2017年,苹果延揽iPhone破解专家Jonathan Zdziarski,而Zdziarski也关闭了他的twitter账号。