from:KeyRaider: iOS Malware Steals Over 225,000 Apple Accounts to Create Free App Utopia
最近,WeipTech(威鋒技術組)分析了一些用戶報告的可疑iOS應用,發現了存儲在某服務器上超過22,5000個有效的Apple賬戶和密碼。
通過與WeipTech的合作,我們(Paloalto)識別了92個尚未發現過的惡意軟件樣本。為了找出惡意軟件作者的意圖,我們對樣本進行了分析,并將這個惡意軟件家族命名為“KeyRaider”。從結果來看,我們相信這是有史以來因惡意軟件所造成的最大Apple賬號泄露事件。
在中國,KeyRaider 將目標鎖定在已越獄的iOS設備上,并通過第三方Cydia源傳播。并且這個惡意軟件很可能已經影響到了18個國家的用戶,包括中國、法國、俄羅斯、日本、英國、美國、加拿大、德國、澳大利亞、以色列、意大利、西班牙、新加坡和韓國等。
KeyRaider 通過MobileSubstrate框架來hook系統進程,攔截iTunes通信來竊取Apple賬戶用戶名、密碼和設備GUID。?它還會竊取iPhone 和 iPad設備上的Apple 推送通知服務證書和私鑰、App Store購買憑證,并禁用本地和遠程解鎖功能。
KeyRaider已經成功竊取了超過22,5000個有效的Apple賬戶、輸千個證書、私鑰和購買憑證。惡意軟件將竊取到的數據上傳到了存在漏洞的C2(command and control)服務器上,因此暴露了用戶信息。
此次攻擊的目的是為了讓用戶通過使用兩款iOS越獄應用(越獄后通過Cydia源安裝的應用)來免費下載官方App Store的任意應用,且不需要付款就可以在應用內進行購買服務。越獄應用是能夠讓用戶執行在正常設備上無法進行的操作的軟件包。
這兩款越獄應用會劫持app購買請求,下載存放在C2 服務器中被竊取的賬戶和購買憑證,然后模擬iTunes協議登陸到Apple服務器,購買app或其他用戶請求的項目。這兩款越獄應用已經被下載超過20,000次,這意味著大約20,000名用戶正在濫用其他225,000個被竊取的證書。
一些受害者已經報告了他們的Apple賬戶存在非正常app購買記錄和其他一些勒索行為。
Palo Alto Networks和WeipTech?已經提供了能夠檢測KeyRaider?惡意軟件和識別被竊取的證書的服務。在接下來的內容中,我們會提供惡意軟件和攻擊的細節。
此次攻擊最早由i_82發現,他是一名來自揚州大學的學生、WeipTech成員。WeipTech是一個非職業技術團體,由WeiPhone(中國最大的Apple粉絲網站)的用戶組成。之前WeipTech與我們合作,披露了iOS和OS X上的惡意軟件AppBuyer、WireLurker。
從2015-07-01開始,WeipTech?開始調查一些用戶Apple賬戶在未經授權的情況下,購買和安裝了iOS app。再對用戶安裝的越獄應用進行調查后,他們發現了一款越獄應用收集用戶信息,并上傳到一個未知的網站。他們發現這個網站存在SQL注入,能夠查看到所有的數據記錄。Figure 1是”top 100”數據庫的截圖

Figure 1.?WeipTech 發現在C2服務器上存在SQL注入(from WeipTech)
在數據庫中,WeipTech?發現了標明為“aid”字段一共有225,941?條記錄。大約2萬條記錄包含明文用戶名、密碼、GUIDs。剩余的記錄是加密的。
通過逆向惡意應用,WeipTech?發現了一段代碼,這段代碼中使用靜態key為“mischa07”的AES加密算法對數據進行加密。利用靜態key,我們能夠解密用戶名和密碼。經過登陸驗證,他們確信記錄中的信息都是有效的Apple賬戶。在網站管理員發現、關閉服務之前,WeipTech調查人員下載了大約一半的數據庫記錄。
8月25日,WeipTech在微博發布漏洞預警,將漏洞提交到WooYun(烏云漏洞報告平臺),并后續轉交第三方合作機構CNCERT/CC(國家互聯網應急響應中心)處理。
當?Palo Alto Networks研究人員在分析WeipTech?報告的惡意軟件時,我們發現它沒有包含惡意代碼來竊取密碼并上傳數據到C2 服務器。然而,通過WeipTech?提供的其他信息,我們發現存在其他的惡意越獄應用,存在竊取用戶信息并上傳到相同的服務器上。
我們將這個新的iOS惡意軟件家族命名為?“KeyRaider”?,因為它會竊取密碼、私鑰和證書。
據我們了解,KeyRaider僅通過?Weiphone’Cydia 倉庫在越獄iOS設備上來進行傳播。不像其他的Cydia源,如BigBoss、ModMyi。WeiPhone為注冊用戶提供私有倉庫,用戶可以直接上傳他們的越獄應用app,并與其他人進行共享
在2015年,一個名為“mischa07”的用戶,上傳了至少15款KeyRaider 應用到它的私人倉庫(http://apt.so/index.php?r=cydiaTa/index&user_id=8676626),如Figure 2. 此外,他的名字也被作為加解密key,硬編碼在惡意軟件中,如Figure 3。我們高度懷疑此人為KeyRaider’s?的開發者。

Figure 2.?mischa07’s 個人Cydia 倉庫

Figure 3.?“mischa07″ 作為加密key被硬編碼在惡意軟中
根據Weiphone的網頁顯示,一些由mischa07?上傳的越獄應用已經被下載過上萬次,如Figure 4。這些app和工具提供如游戲作弊、系統調優和app廣告過濾等功能。
在mischa07的倉庫中,有兩款特別的應用
●iappstore?(Figure 5): 能夠讓用戶從Apple官方應用商店免費下載需要付費的應用
●iappinbuy:能夠讓用戶在一些官方應用商店下載的app中免費購買付費道具或服務
Mischa07也在?Weiphone 社區中對這兩款越獄應用進行推廣,如Figure 6,但一些用戶并不相信這些所謂神奇的功能。然而,根據Weiphone’s?網站上顯示,iappinbuy?仍人有20,199次下載,如Figure 4,而iappstore?有62次下載(僅對最新版進行統計)

Figure 4.?一個惡意樣本被下載超過30,000 次

Figure 5.? iappstore 惡意軟件能夠直接從App Store安裝需要付費的 apps

Figure 6.?作者推廣它的iappstore 應用
另一名以“氵刀八木” 或 “bamu”.的身份的Weiphone?用戶也在傳播 KeyRaider? 惡意軟件。因為Bamu的個人倉庫(http://apt.so/aptso)提供許許多有用的應用,這使得它在社區中非常受歡迎。在這次攻擊被揭露之后,bamu已經刪除了倉庫中他所上傳的所有惡意軟件,并關閉了它。在Weiphone的幫助下,我們對Bamu上傳的所有應用進行了檢查,其中77款應用中都包含了KeyRaider?惡意軟件。與mischa07?開發不同版本的惡意軟件不同,bamu是通過對已存在app(如iFile, iCleanPro 和 avfun)進行重新打包,并在其中加入惡意代碼。
當KeyRaider?將竊取到的用戶密碼上傳到C2 服務器時,?HTTP URL中會包含一個名為 “flag”或”from”的參數,用來追蹤受感染的來源。在mischa07的代碼中,這個參數的值通常為app應用的名字,如’letv’。而在bamu的應用中,則是“bamu”。從泄露的數據的統計得出,超過67%的被竊取信息來至與bamu.
因為bamu?僅僅是一個分銷者(distributor),后面的行為分析主要集中在來至mischa07的應用樣本
KeyRaider收集三種用戶數據,通過HTTP請求上傳到C2服務器,這里發現了兩個不同的C2服務器
?<top100.gotoip4.com>
?<www.wushidou.cn>
在分析的過程中,這些域名都被解析到了113.10.174.167這個IP地址。在C2服務器上的?“top100”?數據庫里有三張表?“aid”, “cert” 和 “other”。 在server端,KeyRaider?利用4個PHP腳本來存取數據庫,aid.php, cert.php, other.php 和 data.php 通過分析代碼和WeipTech下載的泄露數據,我們發現aid表存儲225,941條記錄,包含Apple ID的用戶名、密碼、設備GUID。 Cert表存儲了5,841條受感染設備的證書和私鑰,而這些信息用于Apple推送消息通知服務,如Figure 7。最后other表存儲了超過3,000條設備的GUID和來至app store server 的app購買憑證

Figure 7.?泄露cert表中的一條記錄
我們對泄露的Apple ID郵箱地址進行了整理,有超過一半的用戶使用QQ郵箱,下是排名前十的賬戶郵箱地址域名(其中6個主要由中國用戶在使用)
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
然而,我們也發現一些屬于其他國家或地區的郵箱地址域名,這包括
?tw: Taiwan
?fr: France
?ru: Russia
?jp: Japan
?uk: United Kingdom
?ca: Canada
?de: Germany
?au: Australia
?us: United States
?cz: Czech Republic
?il: Israel
?it: Italy
?nl: Netherlands
?es: Spain
?vn: Vietnam
?pl: Poland
?sg: Singapore
?kr: South Korea
KeyRaider惡意代碼存在于?Mach-O 動態庫中,作為MobileSubstrate 框架的插件。通過MobileSubstrate API,惡意軟件能夠hook系統進程或其他iOS apps的任意API
之前許多iOS惡意軟件家族也同樣濫用MobileSubstrate。比如由Reddit用戶發現,SektionEins? 分析的the Unflod (aka SSLCreds or Unflod Baby Panda)?,會攔截SSL加密通信,竊取Apple賬戶密碼。去年發現的AppBuler也利用了同樣的技術來竊取密碼、在app store中購買app。KeyRaider?進一步利用了次技術。KeyRaider?主要實現了一下惡意行為
●竊取Apple賬戶(用戶名、密碼)和設備GUID
●竊取被用于Apple推送通知服務的證書和私鑰
●阻住受感染的設備通過密碼和iCloud 服務來解鎖設備
注:MobileSubstrate是一個框架,允許第三方的開發者在系統的方法里打一些運行時補丁以擴展一些方法,類似于OS X上的Application Enhancer。所以iOS系統越獄環境下安裝絕大部分插件,必須首先安裝MobileSubstrate
大部分KeyRaider?樣本hook itunesstored進程的 SSLRead和SSLWrite函數(Figure 8). itunesstored?是系統守護進程,負責與app store進行通信(使用 iTunes 協議)。

Figure 8.?KeyRaider hooks SSLRead and SSLWrite in itunesstored
當App Store 客戶端像用戶請求輸入Apple賬戶登錄時,登錄信息會通過SSL加密會話發送到App Store server。在SSLwrite的替換函數中,KeyRaider?會尋找此類會話,通過特定的pattern在發送的數據中搜尋Apple 賬戶的用戶名、密碼和設備 GUID(Figure 9). 接下來,在SSLRead替換函數中,這些憑證會通過AES加密算法,使用靜態的key “mischa07”來加密,然后發送到KeyRaider? C2 服務器(Figure 10).

Figure 9.?Searching for Apple account information in SSL data

Figure 10.?Uploading stolen credentials to the C2 server
除了hook SSLRead和SSLWrite,KeyRaider?需要調用MGCopyAnswer(“UniqueDeviceID”) 來讀取設備的GUID。
在一些樣本中,KeyRaider?也會hook apsd守護進程 – 負責iOS系統的Apple推送通知服務。它hook 定義在Security?框架的SecItemCopyMatching?函數。這個API用于搜尋匹配給定查詢的?keychain items。
當搜索查詢有值為“APSClientIdentity”的label?,KeyRaider?會執行原來SecItemCopyMatching函數,然后調用SecIdentityCopyCertificate 和 SecIdentityCopyPrivateKey,從原本函數執行返回結果中來拷貝證書和私鑰?(Figure 11). 之后,這些信息和GUID一起被發送到C2服務器上(Figure 12). 在iOS keychain中,被標記APSClientIdentity?的key用于推送通知。通過這些信息,攻擊者可以在系統上偽造推送通知。

Figure 11.?Copy push service’s certificate and private key

Figure 12.?Upload certificate and key
當KeyRaider? hook SecItemCopyMatching,除了攔截通知證書,它也會將當前查詢的label和特定的字符串 “com.Apple.lockdown.identity.activation”進行比較。如果匹配,KeyRaider?會將查詢結果的值設置為0. (Figure 13)
再發布文章之前,網上還沒有關于com.apple.lockdown.identity.activation 查詢的公開文檔。我們相信這個查詢是用于解鎖設備的。通過將返回值設置為0,KeyRaider?會阻止用戶解鎖他們的設備,即使通過手機輸入了正確的解鎖碼或通過iCloud服務遠程解鎖設備。
在我們目前發現的所有樣本信息中,這段代碼是獨立的,沒有被其它代碼調用。它僅僅是被實現,然后被導出為一個函數。然而,我們已經有證據表明,利用這個函數來進行實際攻擊已經發生了。
一些KeyRaider?樣本實現了從C2服務器下載購買憑證和Apple賬戶的功能。但這個功能僅僅在?iappstore 和 iappinbuy?兩個應用中被真正使用過。 根據用戶的描述,iappstore?能夠免費從app store中下載任意應用。讓我們來看一下他們是如何實現的.
這個app hook SSLWrite?兩次,第一次用于竊取密碼。第二次hook 會嘗試判斷當前的HTTP請求是否是“POST /WebObjects/MZBuy.woa/wa/buyProduct”。以此來判斷當前會話是否是使用iTunes協議進行購買。(Figure 14).

Figure 14.?Hooking app purchase session
如果請求是購買行為,SSLWrite會被調用,hooking代碼會嘗試在發送的數據(用于獲取當前app的付款信息)中匹配一些關鍵詞,如“salableAdamId”, “appExtVrsId”, “vid”, “price”, “guid”, “installedSoftwareRating” and “pricingParameters”?。如果這個app是需要付費的,fire()函數會被調用。
Fire 函數會調用readAid()函數,readAid函數會讀取位于/var/mobile/Documents/iappstore_aid.log的本地文件。這個文件包含了用戶賬戶的用戶名、密碼、設備GUID,相關的iTunes會話token、cookie、電話號碼、運營商、操作系統信息、iTunes CDN 服務器號。然后解析數據,創建一個賬戶對象。
如果文件不存在,它會調用?readAidUrl(),readAidUrl會從KeyRaider C2服務器下載新的賬戶信息,然后創建一個賬戶對象。(Figure 15). Figure 16?展示了一個從服務器下載的賬戶。

Figure 15.?Downloads apple account from C2 server

Figure 16.?Stolen apple account was downloaded from C2 server
創建賬戶對象之后,fire()會生成plist格式的字符串,里面包含賬戶信息,接著調用?login()和sendBuy().
Login()函數會創建一個連接到以下URL的HTTP連接,URL中會帶上plist字符串和一個類似Appstore客戶端用戶代理的值
?p*-buy.itunes.Apple.com/WebObjects/MZFinance.woa/wa/authenticate
這會造成使用遠程Apple賬戶來登陸當前的iTunes會話(Figure 17)

Figure 17.?Emulating login protocol
發起Login請求之后,login()會解析返回的結果,獲取cookie、token和其他信息,然后將這些信息和賬戶密碼保存到本地iappstore_aid.log文件中,供后續購買時使用。如果因為密碼錯誤導致登陸失敗,它會再一次調用readAidUrl()?,從C2 server中獲取一個不同的Apple賬戶。
sendBuy()函數的工作與login()函數類似,但請求了另一個URL,用于app購買驗證
?p*-buy.itunes.apple.com/WebObjects/MZBuy.woa/wa/buyProduct
通過這個過程,iappstore?應用可以使用竊取到的賬戶成功購買任意app 除了這些操作之外,在兩個獨立的函數verifySF() 和verifySF2()?中,KeyRaider?也會嘗試獲取Apple賬戶密碼找回問題和答案。這個函數在我們的分析樣本中還未完成。
iappinpay的功能和iappstore類似。唯一的不同是購買接口改變了。(Figure 18)。在C2服務器數據庫中也存儲了一些之前在app內購買(?In-App-Purchase)的憑證,作者似乎計劃實現重用這些憑證的功能,如將這些憑證發送到Apple server,以證明他們之前已經購買過此服務。
除了竊取Apple賬戶來購買app,KeyRaider?擁有內置的鎖定功能來進行勒索。
之前的一些iPhone勒索軟件工具基于通過iCloud服務來遠程控制iOS設備。這類攻擊可以通過重置賬號密碼來解決。而對于KeyRaider?,它在本地禁用了所有解鎖操作,及時是輸入的正確的解鎖碼或密碼。此外,它也能使用竊取的證書和私鑰來發送通知消息來索要贖金,而推送通知消息不需要經過Apple推送服務器。因此,之前使用的解決方法不再有效。
下面是一名受害者報告的被勒索截圖

Figure 19.?Ransom message on locked iPhone
下面是一些攻擊者利用你泄露的用戶名、密碼等信息能夠做的事情
應用推廣:在受害者手機中安裝指定的app,來提升App Store rankings
Cash Back:使用的賬戶來購買付費應用
垃圾郵件:使用iMessage來發送垃圾信息
勒索:利用賬戶密碼,竊取隱私信息來進行勒索 等等
需要注意,KeyRaider?僅影響越獄的iOS設備,未越獄設備不受影響。 WeipTech上線了查詢服務?<http://www.weiptech.org/ >,你可以輸入自己的Apple賬戶郵箱,了解它是否被泄露。Palo Alto Networks 在8月26日將竊取的賬戶信息反饋給了Apple。還需要注意的是,因為攻擊者發現并修復了其接收數據服務器的漏洞,WeipTech?只能還原約一半的被竊取數據。因此,從不受信任的Cydia?源安裝過這類越獄應用的用戶可能都會受影響。
用戶可以通過下列方法來判斷自己的iOS設備是否受影響
1.通過Cydia安裝openssh
2.通過SSH連接到device
3.到?/Library/MobileSubstrate/DynamicLibraries/ 目錄,對目錄下的所有文件grep以下字符串
?wushidou
?gotoip4
?bamu
?getHanzi
如果任何dylib?文件包含任意一個字符串,刪除這些文件和同名的plist文件,然后重新啟動
除此之外,我們也建議用戶在移除惡意軟件之后,修改Apple賬戶的密碼,并開啟雙因素認證功能。https://support.apple.com/en-us/HT204152 最后,如果你想避免遭遇 KeyRaider 以及類似惡意軟件,請盡量避免越獄。Cydia?源不會對上傳應用進行嚴格的安全檢查,通過它安裝應用存在風險。
9ae5549fdd90142985c3ae7a7e983d4fcb2b797f CertPlugin.dylib
bb56acf8b48900f62eb4e4380dcf7f5acfbdf80d MPPlugin.dylib
5c7c83ab04858890d74d96cd1f353e24dec3ba66 iappinbuy.dylib
717373f57ff4398316cce593af11bd45c55c9b91 iappstore.dylib
8886d72b087017b0cdca2f18b0005b6cb302e83d 9catbbs.GamePlugin_6.1-9.deb
4a154eabd5a5bd6ad0203eea6ed68b31e25811d7 9catbbs.MPPlugin_1.3.deb
e0576cd9831f1c6495408471fcacb1b54597ac24 9catbbs.iappinbuy_1.0.deb
af5d7ffe0d1561f77e979c189f22e11a33c7a407 9catbbs.iappstore_4.0.deb
a05b9af5f4c40129575cce321cd4b0435f89fba8 9catbbs.ibackground_3.2.deb
1cba9fe852b05c4843922c123c06117191958e1d repo.sunbelife.batterylife_1.4.1.deb
特別感謝來自WeipTech的i_82向我們共享數據、報告以及其它有用的信息。 感謝來自WeipTech的CDSQ向我們提供樣本,感謝來自WooYun的Xsser、FengGou的信息共享。 感謝Palo Alto Networks的Sereyvathana Ty、Zhaoyan Xu、Rongbo Shao幾位對惡意軟件進行的分析,感謝Palo Alto Networks的Ryan Olson對本報告的審校。