Pegasus間諜套件內(nèi)部原理及流程剖析
事件介紹
這篇報(bào)道是關(guān)于最近發(fā)生的在全球范圍內(nèi)活躍的APT間諜軟件的深度研究,Lookup團(tuán)隊(duì)已經(jīng)捕獲了樣本,并且在一臺全新的iOS設(shè)備上進(jìn)行了深度研究。NSO集團(tuán)提供的間諜軟件套裝名為Pegasus(可戲稱為天馬流星拳),Pegasus是一套高度定制化和自動化的間諜軟件,其內(nèi)置三叉戟(3個iOS的0day漏洞組合),可以有效刺破iOS的安全機(jī)制,抵達(dá)內(nèi)核,完全控制手機(jī),然后竊取其中數(shù)據(jù)。運(yùn)用動態(tài)庫hooking的方式來破壞內(nèi)核層與應(yīng)用層的安全機(jī)制,包括且不限于語音、電話、GMAIL、FACEBOOK、WHATSAPP、FACETIME、VIBER、WECHAT、TELEGRAM等等,不管是蘋果的內(nèi)置應(yīng)用還是第三方應(yīng)用,完全不能幸免(因?yàn)槟玫搅藃oot權(quán)限,監(jiān)控軟件的進(jìn)程已經(jīng)是上帝模式)。Pegasus所使用的三叉戟漏洞,已經(jīng)被蘋果在最新的iOS 9.3.5中修補(bǔ)完成,下文中將對其進(jìn)行詳細(xì)的介紹。
根據(jù)最新的報(bào)道,NSO集團(tuán)從2010年開始就已經(jīng)出售武器化的監(jiān)控軟件套裝給企業(yè)和組織,到眼前被發(fā)現(xiàn)為止已經(jīng)存在了很長一段時間來了,其宣稱組合使用了高維度的系統(tǒng)組合漏洞來完成滲透和攻擊,可以輕易地進(jìn)入iOS、安卓和黑莓系統(tǒng),竊取其內(nèi)部信息。
這款間諜軟件高度隱蔽并且模塊化,易于定制。它使用了高強(qiáng)度的加密來保護(hù)自身不被傳統(tǒng)殺毒軟件發(fā)現(xiàn),并且保證被發(fā)現(xiàn)之后進(jìn)行“自爆”,提高取證難度。我們的報(bào)告指出三叉戟漏洞包含以下三種漏洞的組合:
- CVE-2016-4657:Safari的Webkit內(nèi)核上的內(nèi)存泄露漏洞,用戶點(diǎn)擊之后攻擊者可以占領(lǐng)這臺機(jī)器。
- CVE-2016-4655:內(nèi)核信息泄露漏洞繞過KASLR,攻擊者可以計(jì)算出內(nèi)核的基質(zhì),鎖定內(nèi)核的位置。
- CVE-2016-4656:iOS內(nèi)核內(nèi)存漏洞導(dǎo)致越獄,不管是32位還是64位均可以越獄其內(nèi)核,并安裝監(jiān)控軟件。
根據(jù)代碼顯示,這款間諜軟件套裝至少存在了超過兩年的時間,代碼里顯示部分配置適配于iOS 7,這個版本蘋果在2013年就發(fā)布了。
Pegasus利用了我們的生活已經(jīng)離不開移動手機(jī)這一特點(diǎn),手機(jī)是一款一直聯(lián)網(wǎng)的終極信息管理終端。手機(jī)用戶覺得他們的手機(jī)非常安全,毫無破綻,他們使用手機(jī)來發(fā)送/接受位置、打電話發(fā)送語音、進(jìn)行社交和工作,但是他們不知道其實(shí)手機(jī)已經(jīng)被Pegasus完全監(jiān)控了,他們的一舉一動均在NSO集團(tuán)的掌握之中。Pegasus的一份授權(quán)賣25000美元,他們賣掉了300份授權(quán),得到了超過800萬美元的收入。
這份報(bào)告深入研究了Pegasus從開始到結(jié)束的技術(shù)細(xì)節(jié),包括三叉戟漏洞的利用細(xì)節(jié),以及監(jiān)控組件的技術(shù)實(shí)現(xiàn),讓大家看一看一款監(jiān)控軟件究竟可以干哪些事情,并且做到什么地步。
三叉戟漏洞是最新的漏洞,一直到iOS 9.3.4版本依然有效,直到我們跟蘋果合作,推出了9.3.5之后,才偃旗息鼓。請升級到最新的9.3.5,以確保自己的手機(jī)安全。
0×01.背景
隨著移動設(shè)備進(jìn)一步的滲透進(jìn)我們的日常生活當(dāng)中,惡意軟件作者就瞄上了這塊巨大的市場,持續(xù)的開發(fā)木馬間諜軟件運(yùn)行于受害者的設(shè)備上,受害者卻渾然不知。這些暗黑的項(xiàng)目中,有些是為了謀財(cái),例如廣告木馬、銀行卡木馬、或者短信欺詐,有些則是為了竊取組織或者個人情報(bào),例如高度定制的系統(tǒng)級別木馬,在受害者毫不知情的情況下,偷偷把信息傳回控制服務(wù)器。
間諜軟件通??梢宰龅绞占芎φ叩亩绦拧⒙?lián)系人、通話記錄、通話錄音,或者遠(yuǎn)程開啟攝像頭和麥克風(fēng),對目標(biāo)進(jìn)行監(jiān)聽和監(jiān)視。包括錄下聲音和視頻,傳回控制服務(wù)器。
有些間諜軟件甚至可以做到傳播病毒和木馬,以受害人手機(jī)為基礎(chǔ)和跳板,進(jìn)一步攻擊最終目標(biāo)。這項(xiàng)技術(shù)非常復(fù)雜和冒險(xiǎn),攻擊者往往得掌握著目標(biāo)系統(tǒng)的0day漏洞才能成功。所以不管是私人安全公司還是企業(yè)系統(tǒng)均推出漏洞回饋計(jì)劃,有償征集系統(tǒng)漏洞。
兩家私人安全公司Gamma集團(tuán)和Hacking Team公司,自從被爆出開發(fā)了移動平臺監(jiān)控軟件并出售給政府機(jī)構(gòu)之后,都上了各大媒體頭條。這些監(jiān)控軟件造價(jià)不菲,功能豐富,往往只有大金主才能使用,里面內(nèi)置的0day漏洞更是確保其行動萬無一失。
以色列NSO集團(tuán)平時行事低調(diào),不顯山不露水,這次行動已經(jīng)進(jìn)行了五年之久,也沒人發(fā)現(xiàn)。這家由Niv Carmi,Shalev Hulio,和Omri Lavie在2010年建立的NSO集團(tuán)宣稱,已經(jīng)把自己開發(fā)的監(jiān)控軟件賣給了各國的政府集團(tuán)。他們宣傳自己的監(jiān)控軟件是無法被檢測的,其中以為創(chuàng)始人還說:“我們是名副其實(shí)的魅影”。私人公司費(fèi)城兄弟在2014年以1.1億美元收購了NSO集團(tuán)。在此之外,NSO集團(tuán)還組建了移動軟件安全公司Kaymera,既射門,又守門,風(fēng)光無限,一時無兩。
0×02.時間線
- 2016.08.12 Citizen Lab報(bào)告監(jiān)控軟件給Lookout團(tuán)隊(duì)
- 2016.08.15 兩家團(tuán)隊(duì)合作分析這款間諜軟件所使用的技術(shù)之后,提交給了蘋果
- 2016.08.25 蘋果釋放9.3.5更新,封堵漏洞
Pegasus間諜套裝
攻擊的方式很簡單,有效載荷的傳播也是靜默方式。攻擊者給受害者發(fā)送一個URL,可以是短信、郵箱、社交軟件或者任何其他方式,受害者僅需點(diǎn)擊一下鏈接,服務(wù)器就開始向受害者的手機(jī)傳輸攻擊載荷,遠(yuǎn)程越獄受害者的手機(jī),然后安裝監(jiān)控軟件。一切都是在受害者不知情的狀況下發(fā)生的,受害者唯一可以察覺的就是按下這個鏈接之后,瀏覽器自動退出了。
監(jiān)控軟件包含木馬代碼和程序,用來監(jiān)控、收集數(shù)據(jù)并且上傳到服務(wù)器,受害者的一舉一動盡在攻擊者的掌握之中。監(jiān)控軟件可以完全控制以下軟件:GMAIL,F(xiàn)ACETIME,F(xiàn)ACEBOOK,LINE,MAIL.RU,CALENDAR,WECHAT,SURESPOT,TANGO,VIBER,SKYPE,TELEGRAM,KAKAOTALK。
為了達(dá)到完全靜默監(jiān)控,監(jiān)控軟件不會下載這些軟件的木馬版本,重新安裝到受害者手機(jī)上。而是采用預(yù)裝的版本,包括系統(tǒng)軟件和用戶安裝的軟件。
一般情況下,iOS的系統(tǒng)是為軟件做好分離設(shè)計(jì)的,軟件之間是無法通信甚至無法知道對方存在的。但是越獄后的系統(tǒng)確是可以通過hooking的方式來監(jiān)控其他軟件的。三叉戟軟件套裝通過加載其動態(tài)鏈接庫到目標(biāo)進(jìn)程的方式,可以應(yīng)用于hook那些安裝有Cydia Mobile Substrate框架的軟件。這個框架在越獄社區(qū)非常有名,三叉戟套裝也使用了這個框架。
用戶感染了Pegasus之后,手機(jī)處于完全的監(jiān)控狀態(tài)之中,包括電話錄音,通話記錄,短信,麥克風(fēng)/攝像頭實(shí)時通信(幾乎變成對講機(jī))。在這個階段獲取到信息之后,監(jiān)控者可以將這些信息用于下個階段的入侵,例如拿到你的銀行卡賬戶和密碼,拿到郵箱賬戶密碼,以及社保等等。
受害者點(diǎn)擊鏈接之后,攻擊者展開攻擊。攻擊分為三個階段,每個階段都包含了攻擊模塊代碼和隱蔽軟件。攻擊是線性的,每個階段都依賴于上個階段的代碼、隱蔽軟件的成功,每個階段都使用了關(guān)鍵的三叉戟漏洞,以確保進(jìn)攻成功進(jìn)行。
階段一:傳遞Safari內(nèi)核的Webkit漏洞,這個階段是誘使受害者點(diǎn)擊一個網(wǎng)站地址,誘發(fā)漏洞,執(zhí)行代碼,位32位機(jī)器和64位機(jī)器分別下載用于下個階段的代碼;
階段二:這個階段是執(zhí)行上個階段下載來的代碼,代碼是一段加密后的亂碼。每個下載都是用單獨(dú)的密碼單獨(dú)加密的,傳統(tǒng)的云端特征碼檢測技術(shù)在此失效(大多數(shù)殺軟均采用特征碼技術(shù)),這些代碼中含有內(nèi)核基質(zhì)定位代碼和UAF漏洞利用代碼,并且包含了代碼解密程序。在此階段內(nèi)核基質(zhì)被定位并被越獄。
階段三:這個階段設(shè)備開始安裝上個階段下載解密好的監(jiān)控程序Pegasus,并且動態(tài)庫hooking到想要監(jiān)控的程序,程序也會檢測設(shè)備是不是已經(jīng)通過其他方法越獄過,如果是,則移除任何第三方控制方式(例如SSH),使其成為Pegasus專屬監(jiān)控設(shè)備。程序也會監(jiān)控三個階段的執(zhí)行是否成功,如果失敗(或者特定狀態(tài)下),則清除自身不留痕跡,春夢了無痕。
階段三使用的程序部署在一個tarball里面(test222.tar),每段代碼都有其自己的目的,稍后詳述。
- # ca.crt - root keystore中的TLS certificate
- # ccom.apple.itunessotred.2.csstore - standalone模式的JavaScript代碼,會在重啟時執(zhí)行。用于在重啟時執(zhí)行未簽名的代碼以及靜默維持jailbreak。
- # converter - 根據(jù)pid來入侵dylib。這只不過是把Cydia開源軟件庫中的cynject程序重命名而已。
- # libaudio.dylib - 通話錄音的基礎(chǔ)庫
- # libimo.dylib - imo.im的嗅探庫
- # libvbcalls.dylib - Viber的嗅探庫
- # libwacalls.dylib - Whatsapp的嗅探庫
- # lw-install - 安裝換新所有嗅探庫
- # systemd - 發(fā)送報(bào)告及文件到服務(wù)器
- # watchdog
- # worked - SIP模塊
我們檢測到的攻擊最高可以用于iOS 9.3.4版本,攻擊者維護(hù)著一份龐大的代碼庫用于攻擊iOS從7到9.3.3,我們檢測的代碼中沒有9.3.4的配置信息,但是對于9.3.4版本依然有效(我們知道9.3.4的發(fā)布,僅僅是為了封堵盤古團(tuán)隊(duì)手上的漏洞,盤古團(tuán)隊(duì)手上的漏洞可以越獄到9.3.3)。所以我們推薦大家升級到9.3.5。
另外一個特性就是,標(biāo)準(zhǔn)的越獄檢測程序無法檢測到設(shè)備已經(jīng)越獄,因?yàn)楣粽叩哪繕?biāo)是盡可能的隱蔽。所以受害者的設(shè)備哪怕在專業(yè)程序的檢測下,依然是“未越獄”的狀態(tài)。
0×03.專業(yè)開發(fā)團(tuán)隊(duì)
Pegasus有著模塊化的設(shè)計(jì),簡單高效。比如它維護(hù)者一份magic table,用來分辨不同設(shè)備,不同iOS版本號下的內(nèi)核內(nèi)存基址,iOS 9.2.1在iPhone 6上的內(nèi)核內(nèi)存基址如下圖所示:
這樣就算出了每個程序在內(nèi)存中的地址(基于內(nèi)核地址的偏移量),這個信息在破解時幫了大忙。
另外,模塊化的代碼命名方式對于我們的剖析內(nèi)部構(gòu)造也是非常有力,例如libwacalls就是Whatsapp的嗅探庫,libvbcalls就是Viber的嗅探庫,代碼及其高效簡潔,這跟其他木馬作者不同,其他作者總是盡全力隱藏其目的,而Pegasus是木馬界的一股清流。
還有,程序健壯,高可用也是充分保證的,哪怕在最初階段我們也發(fā)現(xiàn)了他們的debugging代碼和QA標(biāo)準(zhǔn),這些都是企業(yè)級別測試組織流程。
0×04.革命性的軟件
這款木馬已經(jīng)運(yùn)作了數(shù)年,這足以讓我們產(chǎn)生給它頒發(fā)一座軟件健壯大獎的沖動,并且它還支持所有ihone型號上運(yùn)行的所有iOS版本,從iPhone 4s到iPhone 6s Plus。
這是一段證明其適用于iOS7 (發(fā)布于2013年)的代碼片斷。
剖析“三叉戟”漏洞
這套間諜軟件內(nèi)置了三個iOS系統(tǒng)內(nèi)核漏洞,這里稱之為“三叉戟”漏洞。這套漏洞組合在iOS 9.3.3上被發(fā)現(xiàn),在9.3.4版本上也運(yùn)行良好,于9.3.5版本被蘋果封堵。
0×05.CVE-2016-4657:Safari的Webkit內(nèi)核上的內(nèi)存泄露
在Safari的Webkit內(nèi)核上存在的內(nèi)存崩潰漏洞,使攻擊者可以執(zhí)行任意代碼。Pegasus利用這個漏洞在Safari的進(jìn)程中獲取初始化代碼執(zhí)行權(quán)限。這個漏洞比較復(fù)雜,我們將繼續(xù)分析,持續(xù)報(bào)道。
0×06.CVE-2016-4655:內(nèi)核信息泄露漏洞繞過KASLR
在Pegasus可以執(zhí)行jailbreak之前,它必須先知道內(nèi)核位于內(nèi)存的哪里。蘋果的內(nèi)核基址隨機(jī)化技術(shù)使得內(nèi)核在內(nèi)存中出現(xiàn)的方式完全隨機(jī),找不到內(nèi)核在哪里,攻破內(nèi)核更是無從談起了。Pegasus利用了iOS內(nèi)核讀取棧數(shù)據(jù)時缺乏邊界檢查,導(dǎo)致Pegasus能夠獲取棧上額外的數(shù)據(jù),而函數(shù)的返回地址一般會被保存在棧上,刺探到了內(nèi)核的基址。
0×07.CVE-2016-4656:iOS內(nèi)核內(nèi)存漏洞導(dǎo)致越獄
這個漏洞則是一個典型的UAF漏洞,通過精心構(gòu)造數(shù)據(jù)可以在Free之后先分配對象來重新占用之后再觸發(fā)Use,也可以進(jìn)一步轉(zhuǎn)換成double free,獲取內(nèi)核態(tài)的執(zhí)行權(quán)限從而執(zhí)行越獄代碼。
0×08.越獄維持技術(shù)
一旦內(nèi)核被攻破了,Pegasus開始準(zhǔn)備安裝越獄環(huán)境。
- # 關(guān)閉內(nèi)核保護(hù)措施,例如代碼簽名
- # 重新掛載系統(tǒng)分區(qū)
- # 清除Safari的緩沖區(qū)(清除攻擊痕跡)
- # 寫入越獄文件(包含主要加載器 /sbin/mount_nfs)
在上一節(jié)的階段二中,Pegasus會移除/etc/nfs.conf導(dǎo)致文件系統(tǒng)加載/sbin/mount_nfs(這就是階段三的越獄加載器),/sbin/mount_nfs是以root的權(quán)限運(yùn)行的,所以越獄軟件接管了系統(tǒng)的完整權(quán)限。階段三結(jié)束后,Pegasus需要在重啟后也繼續(xù)維持越獄狀態(tài),所以使用一段jsc二進(jìn)制代碼替換了系統(tǒng)中的rtbuddyd,并且鏈接到CVE-2016-4657,達(dá)到越獄持久化。
木馬分析
Pegasus是我們檢測過的最隱蔽和最高效的間諜軟件套件。它使用神話般的方式來安裝和隱藏自己,一旦它躋身系統(tǒng)之中,它有一連串方式來隱藏通訊和達(dá)到反查殺的功能,并且hook到root和mobile進(jìn)程中來收集系統(tǒng)和用戶信息。
0×09.安裝和持久化
軟件在階段三運(yùn)行l(wèi)w-install時安裝到受害者手機(jī)上。Lw-installl負(fù)責(zé)了持久化的的大部分設(shè)計(jì)功能,包括重啟后持續(xù)接管,以及另外一些小手段防止手機(jī)變磚。
Lw-install做的第一件事情,就是檢查iOS的版本號,根據(jù)手機(jī)運(yùn)行的是iOS 9還是之前的版本執(zhí)行不同的代碼。
如果用戶手機(jī)安裝的是iOS 9,lw-install會運(yùn)行.plist上的/sbin/launchctl load 拖到/Library/LaunchDeamons(這個目錄通常是空的,或者用于存放越獄后開機(jī)啟動plist服務(wù)列表,例如SSHD),這樣可以保證重啟后立即運(yùn)行。
如果運(yùn)行的不是iOS 9,lw-install會先刪除一些數(shù)據(jù),然后運(yùn)行代碼,log文件在這里/private/var/wireless/Library/com.apple.wifid.r.log。
0×0901.持久化技術(shù):JSC提權(quán)
Pegasus用jsc開發(fā)工具來實(shí)現(xiàn)越獄持久化,這個組件是包含在iOS環(huán)境之中的,其功能是使用戶可以在Webkit瀏覽器之外運(yùn)行JavaScript代碼。在這個組件里的內(nèi)存崩潰漏洞使得Pegasus執(zhí)行代碼得到了持久化的能力。
持久化過程中,rtbuddyd這個守護(hù)進(jìn)程被一段簽名過并有著運(yùn)行權(quán)限的jsc代碼替換。系統(tǒng)重啟時,在early-boot階段假的rtbuddyd會運(yùn)行,鏈接到com.apple.itunesstored.2.cstore文件,這個文件的結(jié)構(gòu)與CVE-2016-4657類似,再次載入攻擊腳本攻破內(nèi)核,進(jìn)行越獄。過程如下:
- # 運(yùn)行jsc代碼 –early boot
- # 運(yùn)行攻擊代碼找到內(nèi)核基址
- # 攻擊內(nèi)核越獄
- # 釋放Pegasus監(jiān)控套件,systemd、watchdogd。
上一次分析中我們就提到,Pegasus的自我保護(hù)和反偵察功能是優(yōu)先于監(jiān)控功能的。也就是說,寧可不再監(jiān)控,也要保護(hù)自己不被發(fā)現(xiàn),因?yàn)橐坏┍话l(fā)現(xiàn)、分析(這就是我們現(xiàn)在在做的事情),馬上就會變成眾矢之的,尸骨無存了。
所以,Pegasus有一大堆功能來保持其隱蔽性和靜默性,它持續(xù)地監(jiān)控手機(jī)狀態(tài)并且阻止任何其他的方法來越獄/連接手機(jī),并且當(dāng)紙包不住火時,它有完整的自毀功能,從手機(jī)里完整的移除自己。
0×0902.禁用更新
階段三禁用了軟件更新,使手機(jī)無法收到任何軟件更新提示信息。
0×0903.檢測越獄狀態(tài)
階段三會檢測手機(jī)是否已經(jīng)越獄;
Pegasus每次啟動時也會檢測一次是否越獄。
0×0904.監(jiān)控設(shè)備
為了可以持續(xù)監(jiān)測和通訊,Pegasus禁用了系統(tǒng)的“深度睡眠”功能。(so那些受害人需要頻繁充電?)
軟件也在監(jiān)測電池狀態(tài)。同時監(jiān)測網(wǎng)絡(luò)狀態(tài),查看是否是運(yùn)營商網(wǎng)絡(luò)或者wifi網(wǎng)絡(luò),可能是用于選擇何時合適將所有數(shù)據(jù)上傳服務(wù)器。
0×0905.靜默上傳至C&C服務(wù)器
Pegasus擁有多種靜默通信方式,systemd貌似使用的是短信方式。
盡管看上去像一條來自谷歌的密碼重置短信,這個短信實(shí)際上是發(fā)給Pegasus的更新C&C服務(wù)器的指令命令行。Pegasus可以接受5種像這樣的命令短信,指令I(lǐng)D是驗(yàn)證碼中的最后一位,在這個例子中就是9。
這個功能可以在http或者h(yuǎn)ttps不可用的時候,C2(C&C中繼服務(wù)器)服務(wù)器框架也下線的時候,這個功能就是Pegasus最后的救命稻草,指導(dǎo)它去發(fā)現(xiàn)新的C2服務(wù)器,這項(xiàng)前無古人的設(shè)計(jì),確保了哪怕服務(wù)端已經(jīng)完全down掉,發(fā)個短信也能迅速換新Pegasus。
短信的姿勢可以是這些:
0×0906.自毀
Pegasus有高度敏感的反偵察系統(tǒng),保證其不被發(fā)現(xiàn),當(dāng)其貌似即將暴露的時候,它就會開始自毀進(jìn)程,并且移除李鬼版本的rtbuddyd和com.apple.itunesstored.2.csstore 。
0×10.收集數(shù)據(jù)
收集數(shù)據(jù)作為Pegasus監(jiān)控軟件的默認(rèn)功能,是我們見過的間諜軟件中最高效完備,兼容性最高的。它收集所有有價(jià)值的信息,例如密碼、聯(lián)系人、日歷以及其他高價(jià)值信息的敲門磚,包括Sms,calendar,address book,gmail,viber,F(xiàn)acebook,Whatsapp,line,kakao,WeChat,surespot,IMO.im,mail.ru,tango,VK,odnoklashniki。
0×1001.日歷
作為高價(jià)值信息,Pegasus當(dāng)然想要受害者的日歷。Systemd進(jìn)程會抓取VCAL文件并通過短信發(fā)送出去。
0×1002.聯(lián)系人
Pegasus會抓取受害者的所有聯(lián)系人信息。
0×1003.GPS信息
Pegasus會抓取設(shè)備的GPS信息并發(fā)送出。
0×1004.捕獲用戶密碼
0×1005.捕獲Wifi和路由器密碼
Pegasus為了偷到用戶的所有密碼,會分析抓取所有的wifi的SSID ,wep/wpa密碼。已經(jīng)蘋果的路由器airport,time capsule等等。
0×11.攔截電話與短信
Pegasus在后臺安裝好語音(libaudio.dylib)與短信(libimo.dylib)竊聽庫,這些庫非常健壯,但是還有一些特制的庫用于攔截關(guān)鍵協(xié)議。Libaudio.dylib庫注冊了許多觀察接口,這些觀察接口由Pegasus旗下眾多模塊發(fā)送ID進(jìn)行觸發(fā),在下面的例子中l(wèi)ibwacalls和libvbcalls觸發(fā)了觀察接口,請見下圖。
0×1101.進(jìn)程注入:converter
Pegasus使用converter來實(shí)時動態(tài)注入通訊軟件進(jìn)程空間(例如Whatsapp),converter來源于cynject(這是Cydia的開源項(xiàng)目)。這個庫使用一個pid作為參數(shù),然后使用Mach內(nèi)核API注入一個dylib到目標(biāo)進(jìn)程,converter的使用方式如下:
另外,converter還有一個失敗模式,監(jiān)聽鍵盤上的一個鍵,用來上傳一個自定義的dylib。
0×1102.Skype
Pegasus會抓取所有的Skype通話記錄,包含錄音。
0×1103.Telegram
0×1104.Whatsapp
Pegasus使用動態(tài)鏈接庫libwacalls.dylib來hook Whatsapp的關(guān)鍵進(jìn)程并且監(jiān)聽各種通信手段,通過我們捕獲的樣本,可以看出Pegasus已經(jīng)對Whatsapp擁有了完整的攔截權(quán)限。Whatsapp在通話接通、打斷或者結(jié)束的時候libwacalls會發(fā)出系統(tǒng)級通知,其他軟件會接收到信號在他們知道ID的情況下,Pegasus的通知信號是獨(dú)特的并且并不復(fù)雜,他們是由56個字符組成的字符串,看上去是由sha224產(chǎn)生的。Pegasus的其他模塊會監(jiān)聽這些ID并且開始工作。在Whatsapp的情況下我們發(fā)現(xiàn)這些信號由libwacalls發(fā)出,最終由libaudio.dylib捕獲并且開始錄音,錄制受害者的通話內(nèi)容。
Libaudio.dylib把來自于Whatsapp的通話錄音保存在以下文件夾:
- # micFileName - /private/var/tmp/cr/x.<call_id>.caf
- # spkFileName - /private/var/tmp/cr/t.<call_id>.caf
- # sentryFileName - /private/var/tmp/cr/z.<call_id>.caf
Libwacalls.dylib首先通過試圖嘗試連接/usr/lib/libdata.dylib的文件的存在來確認(rèn)Cydia Mobile substrate是否安裝在系統(tǒng)里,否則繼續(xù)執(zhí)行解密字符串來定位需要hook的類和方法。Libwacalls.dylib負(fù)責(zé)hook CallManager類下的以下方法:
- # setCallConnected
- # setCallInterrupted
- # setCallInterruptedByPeer
- # endCall
還有CallLogger類里的addCallEvent方法。
所有的hook都依賴于系統(tǒng)通知機(jī)制IPC。
0×1105.Viber
我們捕獲的樣本中,Viber的hook動態(tài)庫libvbcalls會抓取所有的Viber通信記錄。Libvbcalls的hook方式與libwacalls類似,當(dāng)電話接通和結(jié)束的時候,libvbcalls也會發(fā)送ID。
CallEnded用來hook通話的結(jié)束時間并且發(fā)送系統(tǒng)級的ID。
下列ID是libvbcalls發(fā)送的。
- # onCallStarted : eb899b6873eb166859e610915dd002ea21b6057bd31fc6c1b38f27e2
- # onCallEnded : b79cd49420fbeba629a0290bc890c66924dd8452d0c2fd5ba9b327d0
Libaudio.dylib收到ID后開始錄音,并且把通話保存到下列文件夾:
- # micFileName - /private/var/tmp/cr/x.<call_id>.caf
- # spkFileName - /private/var/tmp/cr/t.<call_id>.caf
- # sentryFileName - /private/var/tmp/cr/z.<call_id>.caf
0×12.實(shí)時監(jiān)控
為了能夠監(jiān)控手機(jī)的所有輸入和輸出,Pegasus可以實(shí)時錄制音頻和視頻。就好像Omri Lavie在Financial Times所說的“你們的手機(jī)現(xiàn)在就跟對講機(jī)沒啥區(qū)別”,請見下文函數(shù):
結(jié)論
我們依賴手機(jī)來存儲數(shù)碼資產(chǎn),手機(jī)一直帶在身邊已經(jīng)成為了我們的語音、視頻、文字一體化通訊系統(tǒng)。里面的很多秘密,成為罪犯的攻擊目標(biāo)。NSO集團(tuán)作為網(wǎng)絡(luò)武器商,擁有數(shù)百名員工,并且每年收入數(shù)百萬美元。NSO只是一個例子,但是我們知道他并不是唯一的一個,就像我們知道的Hacking Team,F(xiàn)inisher,還有其他的互聯(lián)網(wǎng)組織。這個軟件只是iOS版本,據(jù)報(bào)道還有Android和Blackberry版本。
這份文件告訴我們,維持手機(jī)系統(tǒng)版本up to date的重要性,還有就是即使是最新版的軟件,也要保持警惕。
0×13.附錄A:TLS證書信息
0×14.附錄B:越獄檢測IOCs信息