國外安全公司FireEye的博客文章,覺得還不錯就翻譯了一下,如有不足,敬請指正。(視頻部分需要翻墻)
原文鏈接:https://www.fireeye.com/blog/threat-research/2015/06/three_new_masqueatt.html
在最近的IOS8.4版本里,蘋果修復了幾個漏洞包括允許攻擊者部署兩種新型的假面攻擊(CVE-2015-3722/3725,和CVE-2015-3725)。我們叫這兩種利用方法Manifest Masque和Extension Masque,它們可以被用來摧毀apps,包括系統應用程序(比如:Apple Watch,Health,Pay等等),并且可以破壞應用的數據容器。在這篇文章中,我們也不會透露之前修補過的漏洞的細節,而是去關注那些沒有被曝光的假面攻擊漏洞:Plugin Masque(插件假面攻擊),它可以繞過IOS的強制權限措施并且劫持VPN通信。我們的調查也表明三分之一的IOS設備在發布8.1.3版本5個月之后仍然沒有更新到8.1.3及以上版本,而這些設備仍然可能遭受假面攻擊。
我們總結了五種假面攻擊方法,如下表所示:
名稱 | 至今為止發現的危害 | 修復狀態 |
App Masque |
* 替換一個已知的應用 * 獲取隱私數據 |
在IOS 8.1.3被修復[6] |
URL Masque |
* 繞過信任提示 * 劫持應用程序內部通信 |
在IOS 8.1.3被部分修復 [11] |
Manifest Masque | * 在無線安裝的過程中破壞其他應用程序 (包括. Apple Watch, Health, Pay, 等等.) | 在iOS 8.4被部分修復 |
Plugin Masque |
* 繞過信任提示 * 繞過VPN插件的權限 * 替換一個存在的VPN插件 * 劫持設備通信 * 阻止設備重啟 * 利用更多的內核漏洞 |
在iOS 8.1.3被修復 |
Extension Masque |
* 獲取其他應用程序數據 * 或者阻止另外的應用程序獲取它自己的數據 |
在iOS 8.4被部分修復 |
Manifest Masque攻擊利用了CVE-2015-3722/3725漏洞來破壞在IOS系統內已經存在的應用程序,當受害者使用企業配置文件通過無線來從一個網頁上安裝IOS內部的應用程序時。被摧毀的應用程序(攻擊的目標)可以使一個常規的從官方應用商店下載的應用程序,或者是更重要的系統應用程序,比如Apple Watch,Apple Pay,App Store,Safari,配置文件等。這個漏洞影響所有的IOS7版本以及IOS8.4之前的版本。我們在2014年八月第一次通知蘋果公司這個漏洞。
Extension Masque可以破壞應用程序數據容器的約束。一個和IOS內部的應用程序一起安裝的惡意的擴展應用程序可以獲得所有目標應用程序的數據容器,或者也可以組織目標應用程序獲得它自己的數據容器。在六月十四號,安全研究者Luyi,Xiaofeng等揭示了幾個在OS X上存在的問題,包括一個和Extension Masque相似的問題5。他們做了很棒的研究,但是卻錯過了在IOS上的這個漏洞。他們的報告聲稱:“這個安全風險在IOS上是不存在的”。然而,數據容器的問題并不會影響所有的IOS8版本而是IOS8.4之前的版本,并且可以被攻擊者利用來偷取目標應用程序的數據容器內的所有數據。我們獨自發現了這個在IOS上的漏洞,并且通知了蘋果公司在報告5發布之前,蘋果公司也把這個問題作為CVE-2015-3725的一部分修復了。
除了這兩個已經在IOS8.4上打過補丁的漏洞,我們還發現了另外一個通過替換VPN插來實現的不可信的代碼注入攻擊,也就是Plugin Masque Attack。我們在2014年九月份向蘋果公司提交了這個漏洞,然后蘋果公司在IOS8.1.3給原始的假面攻擊(App Masque)[6,11]打補丁的時候也修復了這個插件假面攻擊漏洞。然而,這個漏洞比原始的假面攻擊漏洞要嚴重得多。這個惡意代碼可以被注入到neagent進程并且可以執行特權操作,比如在不引起用戶注意的情況下監控所有VPN的通信。我們最早在2015年4月份的Jailbreak Security Summit 7上分析了這種攻擊方法。這里我們把這種攻擊分類為Plugin Masque Attack。
我們會討論技術細節并對這三種假面攻擊方法做出分析。
為了使用公司配置文件來通過無線分發IOS內的應用程序,必須要創建一個包含一個重定向到XML manifest文件的超鏈接的web頁面,而這個XML manifest文件是被保存在一個http服務器上的1。這個XML manifest文件也包含了這個內部應用程序的元數據,包括它綁定的標識符,綁定的版本和.ipa文件的下載鏈接,如下所示。當通過無線安裝這個內部的IOS應用程序的時候,IOS會首先下載manifest文件,為安裝進程解析元數據。
<a href="itms-services://?action=downloadmanifest&url=https://example.com/manifest. plist">Install App</a>
<plist>
<array>
<dict>
...
<key>url</key>
<string>https://XXXXX.com/another_browser.ipa</string>
...
<key>bundle-identifier</key>
<string>com.google.chrome.ios</string>
…
<key>bundle-version</key>
<string>1000.0</string>
</dict>
<dict>
… Entries For Another App
</dict>
<array>
</plist>
根據蘋果的官方文檔1,綁定的標識符的范圍應該是“你的應用程序的綁定標識符,確切的說是像你的Xcode工程中定義的那樣”。然而,我們發現IOS并沒有驗證在網頁XML manifest文件中的綁定的標識符和在應用程序內部的綁定標識符的一致性。如果網頁上的XML manifest文件有一個和另一個設備上的真正的應用程序相同的綁定標識符,并且在manifest文件中綁定的版本號高于這個真正的應用程序的版本,原始的應用程序會被卸載到一個虛擬的占位符,然而內部的應用程序回繼續使用它內置的綁定id來進行安裝。這個虛擬的占位符會在受害者重啟設備后消失。并且,如上面的代碼所示,一個manifest文件可以包含不同應用程序的元數據入口來在同一時間分發多個應用程序,這也意味著這個漏洞可以導致多個應用程序可以被受害者的一次點擊所卸載。
通過利用這個漏洞,一個應用程序開發者可以在安裝他自己的應用程序的同時卸載掉其他的應用程序(比如競爭對手的應用程序)。用這種方法,攻擊者可以在IOS中實施Dos攻擊或者釣魚攻擊。
Figure 1.通過安裝“惡意chrome”并卸載掉原始的chrome來進行釣魚攻擊
Figure 1展示了一個釣魚攻擊的例子。當用戶點擊一個在Gmail應用程序內的URL時,這個URL被用“googlechrome-x-callback://”策略重寫,然后會被設備上的Chrome所處理。然而,攻擊者可以利用Manifest Masque漏洞來卸載原始的chrome并且安裝記錄了相同策略的惡意的chrome。和原始的假面攻擊不同,原始攻擊需要相同的綁定標識符來替換一個原始的應用程序,而這個釣魚攻擊中的惡意的chrome程序使用一個不同的綁定標識符來bypass安裝者的綁定標識符驗證。然后,當受害者點擊Gmail內的URL時,惡意的Chrome程序可以接管重寫URL策略并且實施更多復雜的攻擊。
更糟糕的是,一個攻擊者可以利用這個漏洞來摧毀所有的系統應用(Apple Watch, Apple Pay UIService, App Store, Safari, Health, InCallService, Settings等)。一旦被摧毀,這些系統應用程序將再也不能被受害者使用,既是受害者重啟設備。
這里我們在IOS8.3版本來演示一下DoS攻擊摧毀所有的系統應用程序以及一個App應用商店應用程序(Gmail)當受害者只是通過無線點擊一次來安裝一個系統內應用。
Demo: iOS Manifest Masque Attack - YouTube Links:https://www.youtube.com/embed/tR9U16krpXs?rel=0
蘋果公司在IOS8系統引入了擴展應用程序特征2。不同類型的擴展應用程序為開發者提供了各種各樣的新方法來擴展IOS8系統上應用的功能。比如,應用程序可以作為窗口小部件出現在今天的屏幕上,可以給Action表增加新的按鈕,為IOS的照片應用提供照片濾鏡,或者展示一種新的系統風格的鍵盤3。另外,iPhone上的手表擴展程序4代表了IOS8.2/8.3上所有手表類應用的邏輯。一個擴展應用程序可以執行代碼,并且被限制為只能接近他自己的數據容器的數據。擴展程序是作為IOS應用程序的一部分被分發的,這可以被攻擊者利用作為一種潛在的攻擊手段。
我們獨立地發現了IOS系統應用程序內部的擴展不僅可以獲得全部的權限來接觸其他的應用的數據容器,還可以阻止其他的應用程序獲得他們自己的數據容器。,只要擴展程序和目標應用程序使用了相同的綁定標識符。一個攻擊者可以誘惑一個受害者來安裝一個內部的應用程序通過使用頁面上的公司配置文件,也可以確保惡意擴展程序在受害者的設備上。
這類攻擊的影響是和安裝有害擴展程序和目標應用程序的順序有關的。注意一個擴展程序不可以被單獨安裝,它必須作為應用程序的一部分來被分發。所以在下面的內容中,當我們安裝一個擴展程序的時候,就意味著我們正在安裝一個帶有這個擴展程序的應用。
這里是一個破壞數據容器的攻擊的demo。在這個demo中,一個惡意的擴展程序可以獲得所有的Gmail的數據容器內的所有數據,并且上傳到攻擊者服務器。
Demo: iOS Extension Masque Attack - YouTube Links:https://www.youtube.com/embed/rmIp2-k-TCU?rel=0
和IOS擴展程序不同,VPN插件是另外的一種在.ipa文件中綁定的類型。和不需要任何權限就可以嵌入到任何IOS8的應用程序中的擴展程序相比,VPN應用和VPN插件需要被分配“com.apple.networking.vpn.configuration”權限來提供系統內的VPN服務。迄今為止只有極少數的IOS開發者可以在IOS系統上發布這樣的VPN客戶端(比如Cisco Anyconnect, Junos Pulse, OpenVPN等)。在安裝之后,VPN插件就通過一個特權系統進程(neagent8)被加載,不使用任何的用戶接口。
Figure 2展示了Junos Pulse的.ipa文件的目錄結構,VPN插件(SSLVPNJuniper.vpnplugin)定位到了這個Payload目錄,和應用(Junos Pulse.app)一起為用戶提供驗證VPN的接口。
Figure 2 Junos Pulse應用的目錄結構
我們發現如果一個內部的應用程序嵌入了一個惡意的VPN插件,并且這個惡意插件是和受害者的IOS系統上的正規的VPN插件擁有相同的綁定ID,這個惡意的VPN插件就可以被成功的安裝并且將正規的VPN插件替換掉,不需要任何特殊的權限(比如“com.apple.networking.vpn.configuration”)。然后,當受害者啟動正常的VPN程序來獲得VPN服務的時候,惡意的VPN插件中的不可信代碼就會被neagent進程加載并且進行權限操作,比如劫持/監控VPN的通信。注入代碼到neagent進程中來逃避沙箱也是在盤古8[8,12]越獄工具中使用的一個關鍵的利用手段。通過利用VPN插件的漏洞,就可以直接對任何8.1.2版本及以前的設備進行越獄通過無線使用其他的內核EXP。這個漏洞是和CVE-2014-4493相關的,在IOS8.1.3版本被修復,我們首先發現并分析了這個攻擊在2015年四月的Jailbreak Security Summit 7上。
這里是一個不可信代碼執行攻擊的demo。在這個demo中,包含了一個惡意的VPN插件內部的應用程序被安裝到了受害者的設備上。在用戶使用原始的Junos Pulse應用來驗證VPN之后,惡意VPN插件的POC代碼就被neagent進程加載和執行了。
while(1) {
syslog(LOG_ERR, "[+] ========= ****** PoC DYLIB LOADED ****** ==========");
sleep(3);
}
POC code of the malicious VPN Plugin
注意成功實施這次攻擊并不需要用戶來點擊/信任這個內部的應用。即使用戶強制卸載了這個被攻擊的VPN應用,這個應用也仍然會在重啟之后重新安裝。這就意味著用戶不能輕易的卸載掉這個應用。即使用戶嘗試去長按關機鍵來關掉這個手機,運行攻擊者代碼的neagent進程也會持續在后臺運行并且阻止設備進行真正的重啟。手機的屏幕會是完全黑色的,并且看起來像在重啟。然而,帶有攻擊者代碼的neagent進程可以持續在后臺運行。
Demo: Plugin Masque Attack - youtube
Links:https://www.youtube.com/embed/alfkkru-RDk?rel=0
IOS8.1.3版本的發布(這個版本App Masque, URL Masque, and Plugin Masque的問題都被修復或者部分修復了)是在2015年的1月份,并且IOS眾所周知會快速的采用新版本。然而,我們最近的針對幾個比較著名的網絡的IOS web通信的監控顯示了令人驚訝的結果。如Figure 3所示,我們監控的將近三分之一的IOS通信仍然是在低于8.1.3版本的設備上,即使已經發布這個版本5個月了。在數據通信之后的這些設備對于所有類型的假面攻擊仍然是脆弱的,包括App Masque, URL Masque, 和Plugin Masque。我們呼吁每個人,特別是企業用戶,要對IOS進行徹底的更新。
Figure 3 根據FireEye監控的網絡通信的IOS版本比例
總結一下,盡管蘋果公司已經在IOS8.1.3版本修復或者部分修復了原始的假面攻擊漏洞[6,11],仍然有其他類型的攻擊利用IOS安裝進程中的漏洞。我們在這篇文章中紕漏了三種假面攻擊的變形來幫助用戶認識到風險,并且更好的保護他們自己。并且,我們建議所有的IOS用戶保持對自己的系統版本進行更新。
Reference:
1 https://manuals.info.apple.com/MANUALS/1000/MA1685/en_US/ios_deployment_reference.pdf
2 https://developer.apple.com/app-extensions/
3 https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/NotificationCenter.html
4 https://developer.apple.com/library/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/DesigningaWatchKitApp.html
5 https://drive.google.com/file/d/0BxxXk1d3yyuZOFlsdkNMSGswSGs/view
6 https://www.fireeye.com/blog/threat-research/2014/11/masque-attack-all-your-ios-apps-belong-to-us.html
7 http://thecyberwire.com/events/docs/nsmail.pdf
8 https://cansecwest.com/slides/2015/CanSecWest2015_Final.pdf
[9] https://itunes.apple.com/us/app/cisco-anyconnect/id392790924?mt=8
[10] https://itunes.apple.com/us/app/junos-pulse/id381348546?mt=8
[11] https://www.fireeye.com/blog/threat-research/2015/02/ios_masque_attackre.html
[12] http://en.pangu.io/