NSO Group 飛馬間諜軟體鑑識報告

來源:國際特赦組織2021 年 7 月

2021-10-14 by 高田鑑識

前言

NSO Group 聲稱他們開發的 Pegasus (飛馬間諜軟體) 僅用於 “恐怖主義和犯罪調查” 並且 “不會留下痕跡“。本鑑識報告在此表明: 以上陳述均不屬實。此報告伴隨 Pegasus Project (飛馬計畫揭密) 一同發表。Pegasus Project 是一項合作調查計畫,參與者包括來自 10 個國家、17 個媒體組織的 80 多名新聞工作者,由 Forbidden Stories (被禁止的報導) 協調,並取得國際特赦組織安全實驗室技術支援。

國際特赦組織安全實驗室對世界各地人權捍衛者和新聞工作者進行數次行動裝置取證分析,此項研究揭露了 NSO Group 的 Pegasus 間諜軟體廣泛、持續地進行非法監視以及侵犯人權的事實,依照《聯合國工商業與人權指導原則》之規範,NSO Group 應緊急採取積極主動措施、充分進行人權盡職調查,以確保人權捍衛者和新聞工作者不會成為非法監視的目標。此鑑識報告中,國際特赦組織會分享此間諜軟體的方法原理,並針對 Pegasus 發布開源的行動裝置鑑識工具和入侵跡象的技術指標(indicators of compromise),以便協助資訊安全人員和社會大眾應對此類威脅。

此報告內容包括 Pegasus 間諜軟體於 iOS 和 Android 裝置上遺留的入侵紀錄,包括 2016 年有關人權捍衛者 Ahmed Mansoor 的 Pegasus 感染事件。本文詳述之 Pegasus 攻擊事件和附錄為 2014 年至 2021 年 7 月的資料。其中也包括無需與目標進行任何互動的 「零點擊 (zero-click)」 攻擊,該攻擊模式從 2018 年觀察至今,最近一次成功的零點擊攻擊是在 2021 年 7 月,採用多個「零時差漏洞(zero-Days)」對當時最新版本的 iPhone 12 (iOS 14.6) 進行攻擊。

本報告第 1 至第 8 節概述 Pegasus 間諜軟體感染後於行動裝置留下的數位證據,這些資料是由多國人權捍衛者和新聞工作者的行動裝置上蒐集而來。最後,第 9 節之中,報告紀錄了 Pegasus 自從 2016 年以來資訊架構的演變,NSO Group 重新設計的入侵方式採用多層架構的網域和伺服器,但由於 NSO Group 出現安全性操作錯誤使國際特赦組織安全實驗室能夠抽絲剝繭出 NSO 的基礎設施全貌,因此揭露一份多達 700 個 Pegasus 使用的網域清單。基於安全考量,報告中民間社會目標皆已匿名,本報告中,匿名個體改以一串字母數字代碼表示。

章節大綱

1. 發現 Pegasus 網路注入攻擊

在 2018 年一名國際特赦組織工作人員和一名沙烏地阿拉伯活動人士 Yahya Assiri 成為襲擊目標,國際特赦組織加強了對於 NSO Group Pegasus 的技術調查。2019 年,由於國際特赦組織安全實驗室發現摩洛哥人權捍衛者遭受攻擊,開始加強行動裝置鑑識方式。2020 年,又發現一名摩洛哥新聞工作者遭受入侵攻擊,進而取得確切證據。在此第一章節,將詳細介紹這些入侵事件與手法。

大量的公開報告顯示多年來 NSO Group 的客戶使用 Pegasus 簡訊漏洞攻擊,從摩洛哥活動人士 Maati Monjib 手機進行分析後取得了使用該攻擊方式的域名(Domains)相關訊息,他是 2019 年國際特赦組織報告紀錄中的活動人士之一。然而,在進一步分析之中,從 Safari 瀏覽歷史紀錄中發現可疑的網站重新導向,像是 Maati Monjib 嘗試瀏覽 Yahoo 之後立刻重新導向至另一個奇怪的 URL:

(請注意: 本文章內使用[.]旨在防止誤開啟惡意網域)

URL: https://bun54l2b67.get1tn0w.free247downloads[.]com:30495/szev4hz 立即顯得十分可疑,因為四級子網域屬於少見網址,且伺服器採用非標準的高埠號(port:30495),而 URI 本身與已曾記錄在案的 NSO Group Pegasus 入侵 SMS 攻擊簡訊類似。如同上表所述,資料庫 ID 16120 瀏覽 Yahoo 網站立即被重新導向至這個可疑的 URL。

2019 年 10 月的報告中,詳細說明了如何確認這些 URL 重新導向是透過戰術裝置(tactical devices)執行網絡注入攻擊的結果,是藉由惡意無線基地台 (Rogue Cell Tower) 或設置在行動網路業者端的專用設備。數個月後,分析摩洛哥獨立新聞工作者 Omar Radi (2020 年報告中的攻擊目標) 的 iPhone,也發現了類似 free247downloads[.]com 的網域紀錄。2019 年 11 月,在國際特赦組織初步報告之後,又出現一個新的註冊網域 urlpush[.]net,且重新導向 URL 至 https://gnyjv1xltx.info8fvhgl3.urlpush[.]net:30875/zrnv5revj。

儘管 Safari 歷史紀錄保存時間短暫且幾個月之後就會刪除 (也可能被惡意軟體清除),但仍然能夠在 Omar Radi 手機內資料庫中找到未出現在 Safari 歷史紀錄的 NSO Group 感染網域。例如,可以透過 Safari Favicon.db 資料庫辨識 Pegasus 完整保留的瀏覽 URL:

正如附錄中摩洛哥 Pegasus 2000 年報告的攻擊事件所述,這些重新導向不會僅在目標用戶使用瀏覽器時出現,當使用其他 app 時也會出現。例如, Omar Radi 使用 Twitter 預覽分享的連結時,com.apple.SafariViewService 會啟用 Safari WebView,當網站重新導向後立刻觸發網路注入攻擊。

因此,可以在 app 資料夾下的 WebKit、IndexedDB 資料夾內發現 free247downloads[.]comurlpush[.]net 網域瀏覽紀錄(APP 內開啟的 Web URL 會可在 APP 內 /WebKit localstorage 資料夾內找到線索)。在許多情形下,網路注入攻擊重新導向至 Pegasus Installation Server 後沒多久,Safari 就會建立 IndexedDB 檔。

此外,Safari Session Resource 日誌內所提供的瀏覽紀錄與 Safari 歷史紀錄並不一致。Safari 似乎不會完整記錄重新導向過程,且歷史紀錄可能只有最後一比瀏覽網頁紀錄。根據解析手機的 Safari Session Resource 日誌顯示,有額外的偽裝網域(staging domains)被當作跳板,最終則導向受感染的伺服器。實際上,這些日誌顯示,針對 Maati Monjib 最早的網路注入攻擊也與網域 documentpro[.]org 有關:

Maati Monjib 前往 http://yahoo.fr 網站時,網路注入攻擊將瀏覽器重新導向至 documentpro[.]org,之後再進一步重新導向至 free247downloads[.]com 後載入漏洞攻擊。同樣地,Omar Radi 某次前往法國報紙 Le Parisien 網站時,網路注入攻擊重新導向至 tahmilmilafate[.]com,之後再進一步重新導向至 free247downloads[.]comtahmilmilafate[.]info 網域也同樣有看到一樣的攻擊手法。

國際特赦組織在 2020 年 1 月發現 Omar Radi 的手機紀錄顯示,透過 baramije[.]net 重新導向至 gnyjv1xltx.info8fvhgl3.urlpush[.]net 頁面。網域 baramije[.]neturlpush[.]net 前後一天相繼註冊,並使用開源軟體 Textpattern CMS 建立釣魚網站。

網路活動紀錄並非觀察入侵跡象的唯一指標,對 iPhone 進行解析後發現有特定執行程序被漏洞利用,這一致的感染模式對後續檢驗受感染 iPhone 有極大的幫助。

2. Pegasus BridgeHead 和其他惡意程序

國際特赦組織、公民實驗室、和其他機構認定 Pegasus 間諜軟體主要透過網域名稱和其他網路基礎設施進行攻擊。然而,Pegasus 間諜軟體遺留在數位裝置上的數位痕跡,提供了另一個獨立的方式來判定 NSO Group 的入侵技術。iOS 裝置的執行程序和其網路使用量紀錄,分別存放在兩個 SQLite 資料庫檔案內,「DataUsage.sqlite」 和 「netusage.sqlite」,前者在 iTunes 備份中可見,後者包過了 Wi-Fi 的傳輸量但須透過 Full File System 提取才可取得。另外需注意的是,只有與網路活動相關的程序才會出現在這兩個資料庫檔案內。

Maati Monjib 和 Omar Radi 的網路使用量資料庫皆包含一個可疑的 “bh” 程序紀錄,在前往 Pegasus Installation 網域後多次觀察到此項程序的蹤跡。以下為 Maati Monjib 手機中 2018 年 4 月 ~ 2019 年 3 月的 “bh” 程序紀錄:

國際特赦組織發現 Omar Radi 於 2019 年 2 月至 9 月期間類似的紀錄:

最後一次 “bh” 執行紀錄是發生在網路注入攻擊成功後幾秒鐘 (如同先前 2019-09-13 17:01:56 的 favicon 網站圖示紀錄)。最重要的是,在 2016 阿聯酋人權捍衛者 Ahmed Mansoor 的攻擊事件復原的 Pegasus iOS 樣本中發現了 “bh” 痕跡,該事件由公民實驗室發現,並由網路資安公司 Lookout 進行深度分析。

正如 Lookout 分析結果所述,2016 年 NSO Group 利用 iOS JavaScriptCore Binary (jsc) 中的漏洞取得裝置上的遠端程式碼(code execution)執行權限,此漏洞也可確保裝置重開機後植入的惡意程式不被移除,可在入侵程式碼中找到與 “bh” 相關資訊:

以下是該模組於 Lookout 資安公司分析結果所述:

“bh.c – Loads API functions that relate to the decompression of next stage payloads and their proper placement on the victim’s iPhone by using functions such as BZ2_bzDecompress, chmod, and malloc”

Lookout 進一步對 /var/tmp/jb_cfg 資料夾內的一個設置(configuration)檔案與其它的二進制檔案進行說明。有趣的是,Pegasus 套件內的 libaudio.dylib 檔案可看到 _kBridgeHeadConfigurationFilePath 檔案匯出路徑指向該設置檔案:

因此,可以認定 “bh” 應該代表 “BridgeHead”,這可能是 NSO Group 為該入侵模組命名的內部名稱。當網路注入攻擊 Omar Radi 手機成功後立即出現的 “bh” 程序應與 BridgeHead 模組功能一致,該程序成功透過瀏覽器入侵、取得裝置最高權限並安裝 Pegasus 套件進行監控。

2.1 在 BridgeHead 後其它可疑程序

bh 程序於 2019 年 2 月 11 日初次顯現於 Omar Radi 的手機上,它發生在 Pegasus Installation Server 建立 IndexedDB 檔案與 Safari 紀錄了 favicon 網站圖示 10 秒之後。同時,位於 /private/var/root/Library/Preferences/ 資料夾內的 com.apple.CrashReporter.plist 檔資料被更新,可能用於停用對 Apple 回報當機日誌 (crash log) 的功能,攻擊鏈在此階段已取得 root 最高權限。

不到一分鐘後,第一次出現 “roleaboutd” 程序。

Omar Radi 的裝置在 2019 年 9 月 13 日時再次遭受攻擊,不久之後 “bh” 程序被植入。同時,com.apple.softwareupdateservicesd.plist 檔案被修改,並啟動 “msgacntd” 程序。

根據攻擊的時間點和情形,國際特赦組織認為 roleaboutdmsgacntd 程序屬於 Pegasus 間諜軟體的後期階段,該間諜軟體是在使用 BridgeHead payload (負載) 攻擊和特權提升之後安裝的。

同樣地,Maati Monjib 手機鑑識結果顯示除了 bh 之外還有更多的可疑執行程序,一個 pcsd 和一個 fmld 程序在 2018 年時出現:

國際特赦組織已確認該 iOS 版本中不存在如上所述的程序檔案名稱。

在 Omar Radi 和 Maati Monjib 手機上發現的這些入侵資料,在後續調查中也在世界各地被攻擊的目標裝置上找到了相同名稱的程序。

3. Pegasus 程序利用 Apple Photos 潛在漏洞攻擊

國際特赦組織進行 Pegasus Project (飛馬計畫) 調查期間,在其它案例上發現了上述 “bh” 程序蹤跡,但採用不同的漏洞攻擊方式入侵至裝置內。

某個案例中,一位法國人權律師 (代號: FRHRL1) 的手機遭到入侵,在 iOS Photos app (com.apple.mobileslideshow) 的網路流量首次紀錄數秒後就執行了 “bh” 程序。同樣地,在攻擊成功後,透過寫入 com.apple.CrashReporter.plist 檔案來停用當機報告 (crash reporting)。

iOS Photos app 的下一次 (同時也是最後一次) 網路活動紀錄是在 2019 年 12 月 18 日,再一次在此裝置上執行惡意程序。

另一個案例中,在 2020 年 5 月法國記者 (代號: FRJRN1) 的 iPhone 上發現了和 “mobileslideshow” 以及 “bh” 程序相似的模式:

國際特赦組織無法擷取與此攻擊相關的負載 (payload),但 iOS Photos app 或 Photostream 服務疑似被用於部署 Pegasus 攻擊鏈的一部分。App 本身可能已遭受攻擊或功能被濫用,向裝置發起傳統的 JavaScript 或瀏覽器攻擊。

從上表可以得知,其他程序名稱像是 mptbdckeblldfservernetdckkeyrollfd 皆出現在 bh 之後。而 fmldpcsd 程序,國際特赦組織相信是入侵成功之後額外下載並執行的負載 (payload)。在後續的調查中,發現了數十個與 Pegasus 感染相關的惡意程序名稱。

此外,國際特赦組織發現同一個 iCloud 帳戶 bogaardlisa803[@]gmail.com 與兩台受攻擊裝置上的 “com.apple.private.alloy.photostream” 服務有關。在國際特赦組織最近分析的許多感染裝置案例中,特別建立多個 iCloud 帳號似乎是遞送多個 「零點擊、zero-click」攻擊途徑的核心。

4. 2019 年廣泛使用的 iMessage 零點擊零時差攻擊

帶有惡意連結的 SMS 簡訊為 2016 ~ 2018 年 NSO Group 客戶的首選入侵策略,但近年來出現次數越來越少。在摩洛哥發現新的網路注入攻擊暗示著攻擊者的方式正在進化。網路注入攻擊是一種適合國內使用,有效且符合成本效益的攻擊途徑,尤其是行動電信網路發達的國家。雖然它只適用國內網路,但對於鎖定國外人士或僑民社區 (diaspora community) 的目標個體也極為有效。

從 2019 年開始,iOS 漏洞日漸增加,尤其是 iMessage 和 FaceTime,幸虧資安研究人員與廠商的調查與報告,這些漏洞才得以著手進行修補。

為了應對該情況,國際特赦組織加強了對 iMessage 和 FaceTime 的鑑識方式並收集與其相關的所有數位痕跡。當 iOS 裝置第一次使用 Facetime 或 iMessage 與他人聯繫時,iOS 會透過 Apple 伺服器來驗證對方的 Apple ID (可參考: 如何使用 iOS 的屬性列表檔(plist)取得聯絡人清單)。該 plist 記錄於  /private/var/mobile/Library/Preferences/com.apple.identityservices.idstatuscache.plist 內。該檔案可從一般 iTunes 備份取得,因此無需越獄 (jailbreak) 即可輕鬆提取。

這些紀錄在後續調查活動中發揮關鍵作用,在許多案例中,發現疑似 iMessage 驗證他人帳號後,Pegasus 程序便即刻在裝置上開始執行。以下紀錄提取自一位法國新聞工作者 (代號: FRJRN2) 的手機:

國際特赦組織對多個裝置進行鑑識分析後,發現了類似紀錄。在許多案例中,同一個入侵用的 iMessage 帳號會出現於多個被攻擊的目標裝置上,意即這些裝置被同一個攻擊者所鎖定。此外, roleaccountd 和 stagingd 程序與在其它裝置上皆有出現。

以下紀錄取自一位匈牙利新聞工作者 (代號: HUJRN1) 的 iPhone:

在此案例中,第一個可疑程序出現在 iMessage 透過 Apple 伺服器帳號驗證後的 5 分鐘。而 com.apple.CrashReporter.plist 檔案在之前成功遭受感染後便已存在於該裝置內,所以並且沒有再次寫入。

另一位匈牙利記者 (代號: HUJRN2) 的 iPhone 顯示相同 iMessage 帳號的驗證行為以及其他許多程序,包括 roleaccountd 和 stagingd:

需要注意的是,國際特赦組織 2019 年取得的數位證據中,iMessage 帳戶驗證後立即執行可疑程序,在 ID Status Cache File 紀錄中通常會看到有填入兩個 0x00 bytes 的電子郵件地址,如 bergers.o79@gmail\x00\x00om。

5. 2020 年 Apple Music 成為 Pegasus 的入侵管道

2021 年年中,國際特赦組織揭露了一起亞塞拜然知名新聞調查工作者 (代號: AZJRN1) 的案例,他在 2019 至 2021 年年中期間內多次成為零點擊 (zero-click) 攻擊的目標。再次於裝置上藉由鑑識分析發現入侵成功前的相同攻擊模式:

有趣的是,這次是新的一種 iOS 感染技術,用以入侵該裝置,感染成功事件發生在 2020 年 7 月 10 日:

Pegasus 於裝置上啟動前不久,可觀察到 Apple Music 的網路流量紀錄,這些 HTTP 是來至以下路徑的網路暫存檔案 (該檔案是透過越獄該裝置取得的): /private/var/mobile/Containers/Data/Application/D6A69566-55F7-4757-96DE-EBA612685272/Library/Caches/com.apple.Music/Cache.db

國際特赦組織無法透過鑑識確定 Apple Music 本身是否被利用於最初的感染攻擊,抑或是該 app 遭受濫用以進行沙盒逃逸 (Sandbox Escape) 和特權提升鏈 (Privilege Escalation Chain)。近期調查發現,內建 app (例如: iTunes Store) 可能會被用來進行瀏覽器漏洞攻擊,同時逃逸 Safari 應用程式的沙盒限制。

然而最重要的是,Apple Music 執行的 HTTP 導向 opposedarrangement[.]net 網域,該網域屬於先前確認過的 NSO Group Pegasus 網路基礎設施,且與針對摩洛哥網路注入攻擊時發現的獨特數位特徵相符 (參見第9節)。此外,這些 URL 與多年來調查 Pegasus 攻擊事件也雷同,如下一節所述。

6. Megalodon: iMessage 零點擊零時差攻擊於 2021 再現

國際特赦組織針對數台裝置的鑑識分析揭露了與 2019 年觀察的攻擊痕跡相似,近期在 2021 年 7 月亦發現了這些攻擊活動。國際特赦組織認為 Pegasus 目前是依靠零點擊漏洞進行攻擊,這些漏洞於 2021 年 7 月最新 iOS 版本中仍然有效。

在一位法國人權律師 (代號: FRHRL2) 的手機上,觀察到受害者本人不認識的 iMessage 可疑帳號驗證行為([email protected]),隨後便出現了 com.apple.coretelephony 程序執行的 HTTP 請求,這是 iOS 涉及所有電話相關作業的核心程序,很可能在該次攻擊中遭受濫用。另外在裝置存儲空間上的暫存檔案內找到該 HTTP 請求的數位痕跡: /private/var/wireless/Library/Caches/com.apple.coretelephony/Cache.db,內含請求及回應的 metadata。該裝置向 Amazon CloudFront 的一項前端服務發送了裝置上的資訊,包括型號 9,1 (iPhone 7) 和 iOS build number 18C66 (版本 14.3),意味著 NSO Group 近幾個月已轉而使用 AWS 服務。本次攻擊事件的時間點僅僅於 iOS 14.4 發布的幾週後。

com.apple.coretelephony 的 Cache.db 檔包含 HTTP 回應相關的詳細資訊,似乎下載了約 250kb 的二進制資料。確實,在 fsCachedData 子資料夾中找到了下載的二進制檔案,不幸的是,該檔案受到加密保護,國際特赦組織認為這是啟動 gatekeeperd 程序的負載 (payload)。隨後,分析了一名新聞工作者 (代號: MOJRN1) 的 iPhone,發現了非常相似的紀錄。該裝置在 2021 年 2 月至 4 月、歷經許多 iOS 版本期間反覆遭受攻擊。最近的攻擊意圖顯示以下入侵跡象:

很明顯地,先前個案中觀察到的一個 iMessage 帳號也用於本次攻擊入侵。com.apple.coretelephony  聯繫了同一個 CloudFront 網站、額外的程序被執行,並下載及啟用了惡意元件 。最初記錄表明,遭受攻擊時 iPhone 6s 的執行版本為 iOS 14.4 (build number: 18D52)。儘管 14.4.1 和 14.4.2 當時已可用,Apple 僅修補了 WebKit 中的漏洞,因此可以假定這些 iMessage 攻擊事件是利用零時差漏洞進行入侵。

值得注意的是,在此手機觀察到的許多惡意程序中含有 msgacntd,如之前所述,也發現它在 2019 年時在 Omar Radi 的手機上執行過。另外,在過去三年中觀察到攻擊事件所使用的 URL 具備一套規律模式,這證實了國際特赦組織的分析報告: 這 3 個 URL 實際上是 Pegasus 攻擊架構的元件。2020 年的 Apple Music 攻擊顯示出與 2019 年網路注入攻擊相同的第 4 級網域架構和高連接埠號。free247downloads[.]com 和 opposedarrangements[.]net 符合 Pegasus V4 網域特徵。

此外,Apple Music 攻擊所使用的 URL 和 2021 Megalodon 攻擊的 URL 具備相同的獨特規律。兩個 URL 都以隨機識碼作為開頭,後面接著 “stadium”。

國際特赦組織將此資訊回報給 Amazon,後來也接到 Amazon 回復,說明他們 “已迅速採取行動關閉了相關網路設施和帳戶”。2011 年 6 月 11 日,法國人權提倡者 (代號: FRHRD1) 的 iPhone 11 還顯示帳戶 linakeller2203[@]gmail.com 的 iMessage 帳號驗證紀錄以及隨後的惡意程序。該手機當下執行的版本為 iOS 14.4.2,並在隔天升級到 14.6。

最近,國際特赦組織在 2021 年 6 月 16 日觀察到一名印度新聞工作者 (代號: INJRN1) 的 iPhone XR (iOS 14.6 – 當時的最新版本) 遭受攻擊入侵的證據。最後,國際特赦組織在 2021 年 6 月 24 日確定了同樣為 iOS 14.6 的一名活動人士 (代號: RWHRD1) 的 iPhone X 感染事件。由於無法對這兩個裝置執行越獄,故無法提取 Cache.db 資料庫紀錄,但可以從這些 iPhone 提取的診斷數據了解 Pegasus 程序執行之前,有大量的 iMessage 推播通知 (Push Notifications)。

盧安達活動人士 (代號: RWHRD1) 的裝置顯示 2021 年 5 月和 6 月多次成功執行零點擊漏洞感染的證據,其中一個案例發生在 2021 年 5 月 17 日。記錄中含有一個未曾出現的 iMessage 帳戶,之後的幾分鐘內存儲空間上便建立了至少 20 個 iMessage 附件組塊 (attachment chunks)。

國際特赦組織沒有發現任何證據顯示 5 月 17 日攻擊成功,之後在 6 月 18 日和 6 月 23 日的攻擊成功導致 Pegasus 負載 (payload) 部屬於裝置上。一開始,接收到了許多 iMessage (com.apple.madrid) 推播通知 (Push Notifications) 並將附件組塊 (attachment chunks) 寫入存儲空間中。在檔案系統上找到的 48 個附件,檔範例如下:

程序崩潰發生時間點為 20:48:56,並導致 ReportCrash 程序啟動,之後又重新啟動了多個 iMessage 相關程序:

五分鐘後,發生了第二組崩潰並進行重新啟動,ReportCrash 程序和 iMessage 解析內容及客制 Avatar 相關程序一併啟動。

不久之後,於 20:54 攻擊成功,觀察到 com.apple.coretelephony 程序發出了一個網路請求,造成 Cache.db 檔案被修改,與國際特赦組織於 2021 年其他 Pegasus 零點擊攻擊中的行為相符。

最後,對印度新聞工作者 (代號: INJRN2) 完全更新版本 iOS 14.6 的 iPhone 12 所進行的鑑識分析也揭露成功入侵的跡象。這些近期發現的案例皆表明目前 NSO Group 的客戶皆可遠端入侵所有 iPhone 型號和 iOS 版本

國際特赦組織已將此資訊呈報給 Apple 公司,並得知 Apple 公司已展開調查。

7. 嘗試隱藏入侵證據未遂

國際特赦組織檢查過的幾部 iPhone 顯示,Pegasus 近期開始竄改感染裝置上的系統資料庫和記錄以隱藏其痕跡,進而阻礙國際特赦組織和其他調查人員的鑑識作業。

有趣的是,在對 DataUsage.sqlitenetusage.sqlite 資料庫一致性進行驗證時,Pegasus 的竄改痕跡變得更加明顯。Pegasus 已刪除 DataUsage 資料庫的 ZPROCESS 表中惡意程序名稱,但沒有刪除 ZLIVEUSAGE 表中的對應的紀錄。ZPROCESS 表儲存項目包括程序 ID 和名稱;ZLIVEUSAGE 表中有一列數據包含資料傳輸量和對應 ZPROCESS 紀錄的程序 ID。這些不一致的現象可用於辨認感染發生的時間點。檢測的裝置上若有這不一致性的紀錄,即有 Pegasus 入侵跡象。國際特赦組織分析的任何正常的 iPhone 都沒有發現類似以上所述的不一致性。

儘管這些資料庫正遭到刪除,仍可從系統的其他診斷日誌中復原近期執行程序的痕跡。例如以下從 HRD (代號: RWHRD1) 手機復原的紀錄:

系統日誌揭露 Pegasus 二進制檔案在裝置存儲空間上的路徑位置,這些檔案名稱與先前觀察到的程序執行日誌一致。二進制檔案位於 /private/var/db/com.apple.xpc.roleaccountd.staging/,與 Citizen Lab 的 2020 年 12 月報告一致。

另藉由其他資訊證實,Pegasus 似乎在 iOS 裝置上不再保有持續性,重開機後入侵的程序既被移除。因此,無法從儲存空間的檔案系統(non-volatile filesystem)中復原與此類程序相關的二進制負載 (payload)。唯一的方式是在不重啟裝置的情況下進行越獄(Jailbreak),並嘗試從記憶體中提取負載 (payload)。

8. Pegasus 程序偽裝成 iOS 系統服務

在國際特赦組織於世界各地的裝置進行大量鑑識分析中,在遭到入侵的手機中發現了一組惡意程序名稱。雖然某些程序 (例如 bh)似乎是特定入侵攻擊途徑專屬的,但大多數 Pegasus 程序名稱似乎單純只是偽裝成 iOS 系統程序名稱,多半是為了欺瞞鑑識人員,使其檢查日誌時忽略。偽裝成 iOS 二進制檔案的程序名稱的對照表如下:

與 Pegasus 相關的程序名稱清單,可從 AmnestyTech GitHub 的入侵指標內取得。

9. 拆解 Pegasus 多年來的攻擊基礎設施

自 2016 年公民實驗室 (Citizen Lab) 首次公布鑑識報告以來,NSO Group Pegasus 間諜軟體傳輸和蒐集數據使用的網域名稱、伺服器和基礎設施已經多次進化。

2018 年 8 月,國際特赦組織發表了一份報告 Amnesty International Among Targets of NSO-powered Campaign (國際特赦組織成為 NSO 贊助計劃之目標),其中描述國際特赦組織工作人員和沙烏地阿拉伯人權捍衛者如何成為入侵目標。該報告中,國際特赦組織節錄了 600 多個網域名稱與 NSO Group 攻擊基礎設施相關 。國際特赦組織在 2018 年 10 月發布了完整的網域名稱清單,在此報告中,這些網域名稱稱作 Pegasus network Version 3 (V3)

Version 3 基礎設施使用虛擬專用伺服器(VPS-Virtual Private Server) 和獨立伺服器,每個 Pegasus Installation 伺服器或 Command-and-Control (C&C) 伺服器皆在 443 埠上並具備獨立的網域和 TLS 憑證。之後,這些邊緣伺服器 (Edge Server) 將透過一系列伺服器進行代理 (proxy) 連線,NSO Group 稱之為 “Pegasus 匿名傳輸網路” (PATN-Pegasus Anonymizing Transmission Network)

可以為這些伺服器的 TLS 密碼套件建立一副數位指紋,該指紋技術在概念上與 Salesforce 於 2019 年發布的 JA3S 相似。借助該指紋,國際特赦組織安全實驗室進行了全面網路掃描以辨識 2018 年夏季活躍的 Pegasus Installation 和 C&C 伺服器。

NSO Group 在設定 Version 3 基礎建設時犯了嚴重的操作安全錯誤 — 之前 Version 2 網路的兩個網域 (pine-sales[.]com 和 ecommerce-ads[.]org) 在 Version 3 網路中重複使用。該錯誤促使國際特赦組織將 NSO Group Pegasus 產品與企圖對內部同事發起的攻擊聯繫在一起,Citizen Lab 在一份 2018 年報告中個別確認了該關聯性。

國際特赦組織和公民實驗室於 2018 年 8 月 1 日發表文章後不久(紅線),NSO Group 迅速關閉了許多 Version 3 伺服器。

圖片來源取自國際特赦組織 (Amnesty International) 資料

9.1 NSO Group 企圖進一步隱藏基礎設施

2019 年 8 月,國際特赦組織發現了另一起 NSO Group 工具用於入侵人權捍衛者的案例,這次位於摩洛哥,Maati Monjib 是本次攻擊的目標。攻擊利用包括利用Version 3 Pegasus 連結的簡訊。如先前所述,國際特赦組織對他的 iPhone 進行鑑識分析,並顯示新的重新導向域名 free247downloads.com,該連結與先前 NSO 所使用的相似。

經國際特赦組織觀察,在開啟 URL 連接不久之後裝置上會建立獨特的 Pegasus 入侵數位痕跡,故確認該網域與 NSO Group 有關。藉由該新網域,便可開始建立 Pegasus Version 4 (V4) 基礎設施清單。

為了增加調查的難度,NSO Group 重新規劃了他們的基礎設施,儘管如此,仍可觀察到每個感染鏈中至少運用了 4 個伺服器。

  1. 驗證伺服器 (Validation Server): 第一階段觀察到所使用的網頁伺服器,皆存放於第三方托管的雲服務上。該網站通常會採用 PHP 混肴程式碼或 CMS 內容管理系統。國際特赦組織認為此舉是為了讓網域不易被區分出。驗證伺服器 (Validation Server) 會檢查收到的請求,如果請求具備有效啟用的 URL,驗證伺服器會將受害者重新導向至新產生的攻擊伺服器網域。如果 URL 或裝置不是鎖定的目標,則將重新導向到偽裝的網站,所有到訪者或網路爬蟲只會看見偽裝的 PHP CMS。
  2. 感染域名系統伺服器 (Infection DNS System): 新的 NSO 攻擊似乎在每次僅使用唯一且獨一的子網域,既每個子網域都是隨著攻擊產生的,且該 DNS 子網域名稱只存活在短短的時間內,主要可增加鑑識人員根據裝置歷史日誌找尋攻擊伺服器位置的困難度。為了持續解析這些子網域,NSO Group 在每個感染的子網域中執行一個自訂的 DNS 伺服器,並取得了一個萬用 TLS 憑證,該憑證對每個產生的子網域皆有效,例如: *.info8fvhgl3.urlpush[.]net*.get1tn0w.free247downloads[.]com
  3. 飛馬植入伺服器 (Pegasus Installation Server): 為了提供實際感染的負載 (payload),NSO Group 需要在網際網路中的某個位置提供網站服務,用於讓目標裝置下載入侵程序。同樣地,NSO Group 為避免被搜尋引擎或網路掃描找出網站伺服器,通常會採用隨機高埠號執行網路伺服器。假設每個感染網路伺服器都是新一代 “Pegasus 匿名傳輸網路” 的一部分,與感染伺服器進行連線可能會透過代理伺服器回傳至 Pegasus 客戶端的基礎設施。
  4. 命令及控制伺服器 (Command and Control Server): 前幾代 PATN 中,NSO Group 使用不同的網域進行初步感染及隨後的間諜軟體連接。Citizen Lab 的 iPwn 報告提供的證據表明 Pegasus 再次使用不同的網域進行命令及控制。為避免被網路掃描發現,Pegasus 間諜軟體直接與 C&C 伺服器連接,不透過 DNS 域名查找過程或藉由 TLS SNI 欄位內的伺服器名稱。

9.2 辨識其它 NSO 攻擊網域

國際特赦組織首先對摩洛哥新聞工作者和人權捍衛者的感染網域及 DNS 伺服器設置進行鑑識分析,根據對摩洛哥使用之網域的了解,開發了一個可辨識 201 個 Pegasus Installation 網域的數位指紋,這些網域在初期掃描時尚處於啟用狀態,其中網域包括 urlpush[.]net 和 free247downloads[.]com

國際特赦組織隨後透過網路掃描、網域註冊模式、TLS 憑證發布辨識出另外 500 個網域,與最初的 201 個網域互相匹配。國際特赦組織認為這代表 Version 4 NSO Group 攻擊基礎設施的重要部分,現這 700 多個網域皆已公開,同時也建議社會大眾和媒體組織檢查他們的網路遙測情形和 DNS 日誌,以便檢查是否有入侵跡象。

9.3 從 NSO Group 基礎設施得知的資訊

下圖顯示 NSO Group Pegasus 基礎設施在 2016 ~ 2021 年中為期 4 年的轉變,2018 年 8 月,一名被 Pegasus 鎖定的國際特赦組織工作人員之調查報告發布後,大量的 Version 3 基礎設施突然關閉,而 Version 4 基礎設施隨後在 2018 年 9 月和 10 月開始逐步退出。

2019 年 11 月,WhatsApp 發佈通知說明 Pegasus 可能藉由 WhatsApp 入侵,便出現了大量新註冊的網域,可能是因為 NSO 輪替其網域以避免被發現,或是為了應對現存的第三方雲端基礎設施被中斷運作。

Citizen Lab iPwn 報告揭露了多個 Pegasus V4 網域之後,V4 DNS 伺服器基礎設施於 2021 年初開始陸續離線。國際特赦組織懷疑 V4 基礎設施關閉和 NSO Group 轉而使用雲端服務,如 Amazon CloudFront 以發起初期攻擊一事相關。使用雲端服務讓 NSO Group 得以阻絕某些網際網路掃描技術。

9.4 攻擊用基礎設施主要託管位置: 歐洲和北美地區

NSO Group Pegasus 基礎設施的伺服器主要託管於歐洲各國雲端數據中心,託管最多感染網域 DNS 伺服器的國家包括德國、英國、瑞士、法國和美國。

下表顯示每個供應商提供的 DNS 伺服器數量,辨識度最高的伺服器託管營運商皆為美國的公司 Digital Ocean、Linode 和 Amazon Web Services (AWS)。

許多雲端營運商提供多個、跨國的實體位置雲端機房服務,根據這兩項表格,NSO Group 提供給客戶的服務似乎主要透過美國雲端公司經營的歐洲數據中心。

經國際特赦組織調查,辨識出 28 個與感染基礎設施相關的 DNS 伺服器,這些伺服器的託管地點位於美國。

9.5 被動(Passive) DNS 資料庫顯示之感染網域解析

藉由對遭到入侵的裝置進行鑑識分析,國際特赦組織可判定 NSO Group 在每次嘗試傳遞 Pegasus 間諜軟體時都使用唯一且隨機產生的子網域。國際特赦組織根據辨識的 Version 4 網域進行被動 DNS 資料集蒐集,被動 DNS 資料庫紀錄網域的歷史 DNS 解析,通常包括子網域和對應的歷史 IP 位置。

如果子網域成功解析並且是透過執行被動 DNS 探測的網路,則子網域只會紀錄在被動 DNS 紀錄中。該探測數據是透過網路供應商和被動 DNS 數據供應商之間的協議蒐集而成,許多網路不涵蓋在此數據蒐集協議之中,例如: 摩洛哥使用的 Pegasus 感染網域都沒有紀錄被動 DNS 解析。

因此,以下解析僅代表整體 NSO Group Pegasus 活動的小部分相關子集。

urlredirect.net 觀察到的不重複子網域數量最多,在 2018 年 10 月 4 日 ~ 2019 年 9 月 17 日之間總共紀錄了 417 項解析。子網域數量第二多的是 mailappzone.com,在 2020 年 7 月 23 日~ 2020 年 10 月 15 日為期 3 個月內紀錄了 410 項解析。

國際特赦組織認為,總共 1748 個子網域中,每一個子網域都是 Pegasus 企圖入侵裝置的證據,這 23 個網域僅佔確定的 379 個 Pegasus Installation Server 網域中不到 7 %,由此可見,Pegasus 在過去 3 年中可能已進行數千次入侵攻擊。

10. 行動裝置、安全性和可稽核性

本報告中陳列的調查大部分和 Pegasus 針對 iOS 裝置的攻擊相關,然而,這並不能斷定 iOS 和 Android 或其他作業系統及廠商裝置之安全性優劣。根據國際特赦組織的經驗,調查人員在 Apple iOS 裝置上取得的鑑識痕跡明顯多於原生的 Android 裝置,因此本報告研究方法偏重於 iOS,故近期確認的大多數 Pegasus 感染案例都與 iPhone 有關。

此次調查以及先前的調查皆說明針對行動裝置的攻擊行為足以對社會大眾造成重大威脅。由於攻擊者的技術能力與易受攻擊對象的防護能力不對等,因此,既要預防可能到來的攻擊、又要在事後檢測攻擊事件是十分困難的。

雖然 iOS 裝置至少有提供一些有效的診斷方法,但歷史紀錄很稀少,並且容易被竄改。其他裝置幾乎無法取得有效的鑑識分析。儘管可以透過很多方法提升行動裝置安全性,並透過報告內容所述之方式減緩攻擊風險,定期檢查仍可更有效避免遭受攻擊。

為此,在保障隱私與安全性的前提下,國際特赦組織強烈建議裝置提供商提升裝置的可稽核性。系統開發者和手機製造商應增進與民間的交流,以進一步了解在網路議論中代表性較低的人權捍衛者所面臨的挑戰。

11. MVT 檢測工具、找出入侵跡象

長久以來,判別疑似遭受入侵的裝置一直被認為是幾近不可能達成的任務,尤其是在國際特赦組織從事的人權工作團體。透過國際特赦組織安全實驗室的努力,培養了得以保護從業的工作夥伴,包括身處風險中的活動人士、新聞工作者和律師。

這份報告中,不僅分享多年來建立的研究方法,也分享了鑑識流程所使用的工具以及蒐集到的 Pegasus 入侵指標。在 GitHub 上分享了所有的入侵指標(Indicators of Compromise),包括 Pegasus 基礎設施的網域名稱、從 iMessage 帳號驗證的電子郵件地址,以及國際特赦組織判定所有與 Pegasus 相關的程序名稱。

國際特赦組織也發布了 Mobile Verification Toolkit (行動裝置驗證工具套件)它是一項模組工具,可簡化從 Android 裝置提取、解析數據的作業流程以及對 iOS 備份和檔案系統備份的紀錄分析,且專門用於判定潛在的入侵跡象。

Mobile Verification Toolkit 以 STIX2 格式 呈現入侵指標,可判定裝置上是否有入侵跡象。與 Pegasus 入侵指標連動,可以確認 iPhone 是否已被入侵。

Mobile Verification Toolkit 功能包括:

  • 解密 iOS 加密備份檔案
  • 處理和解析多個 iOS 系統、App 資料庫和系統日誌的紀錄
  • 提取 Android 裝置已安裝的應用程式
  • 透過 adb 協議提取 Android 裝置診斷資訊
  • 比對提取的紀錄與 STIX2 格式惡意指標清單,自動判定惡意簡訊、到訪網站和惡意程序等等
  • 產生提取紀錄的 JSON 日誌,並挑出所有檢測出入侵痕跡的 JSON 日誌
  • 呈現提取紀錄以及所有檢測出入侵痕跡的時間軸排序

鑑識報告來源

前往

How to catch NSO Group’s Pegasus

Forensic Methodology Report:

Amnesty International’s Security Lab

前往
前往

國際特赦組織技術團隊 GitHub

入侵指標

本 GitHub 包含從國際特赦組織人權維護者的裝置上提取之入侵指標。

前往