Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86386979

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

APT_Apple_SL_Feat-1200x600.jpg

在之前關於Triangulation的介紹文章中,研究人員討論了TriangleDB的細節,這是這次活動中使用的主要植入程序,使它的C2協議和它可以接收命令。除其他事項外,它還能夠執行其他模塊。另外,這次活動是相當隱蔽的。

本文詳細介紹了該活動是如何進行隱蔽攻擊的。在此過程中,研究人員還將揭示有關此攻擊中使用組件的更多信息。

驗證組件在之前的文章中,研究人員概述了Triangulation活動攻擊鏈:設備接收惡意iMessage附件,啟動一系列漏洞利用,其執行最終導致啟動TriangleDB植入。攻擊鏈可以用下圖來概括:

1.png

除了TriangleDB植入的漏洞和組件外,攻擊鏈還包含兩個“驗證器”階段,即“JavaScript驗證器”和“二進制驗證器”。這些驗證器收集有關受害設備的各種信息,並將其發送到C2服務器。然後,這些信息被用來評估植入TriangleDB的iPhone或iPad是否可以作為研究設備。通過執行這樣的檢查,攻擊者可以確保他們的零日漏洞和植入程序不會被阻止。

JavaScript驗證器在攻擊鏈的開始,受害者會收到帶有零點擊漏洞的不可見iMessage附件。此漏洞的最終目標是在backupabbit[.]com域上默默地打開一個唯一的URL。該URL上託管的HTML頁麵包含NaCl密碼庫的模糊JavaScript代碼,以及加密的有效負載。這個負載是JavaScript驗證器。該驗證程序執行許多不同的檢查,包括不同的算術運算,如Math.log(-1)或Math.sqrt(-1),Media Source API、WebAssembly等組件的可用性。

如上所述,它通過使用WebGL在粉色背景上繪製一個黃色triangle併計算其校驗和來執行一種名為Canvas Fingerprint的指紋技術:

2.png

繪製triangle的代碼

3.png

繪製的triangle

事實上,正是這個triangle,研究人員把整個活動稱為Triangulation活動。

運行驗證器後,它會對所有收集到的信息進行加密,並將其發送到backuplabbit[.]com上的另一個唯一URL,以便接收攻擊鏈的下一階段。

二進制驗證器正如從攻擊鏈圖中看到的,這個驗證器在部署TriangleDB植入程序之前啟動。 JavaScript驗證器是一個腳本,與之相反,這個驗證器是一個Mach-O二進製文件(因此得名binary Validator)。啟動時,它使用AES解密其配置。這個配置是一個plist:

4.png

此列表包含必須由驗證器執行的操作列表(如DeleteLogs、DeleteArtifacts等)。具體地說:

1.從/private/var/mobile/Library/logs /CrashReporter目錄中刪除可能在利用過程中創建的崩潰日誌;

2.在各種數據庫(如ids-pub-id.db或knowledgeec .db)中搜索惡意iMessage附件的痕跡,然後刪除它們。為了能夠做到這一點,驗證器的配置包含40個用於發送惡意imessage的Apple id的MD5哈希值。研究人員成功破解了大部分哈希值,從而獲得了攻擊者控制的蘋果ID電子郵件地址列表:

5.png

3.獲取在設備上運行的進程列表以及網絡接口列表;

4.檢查目標設備是否已越獄。驗證器實現了對各種越獄工具的檢查,如Pangu、xCon、Evasion7、Electra、unc0ver、checkra1n等;

5.打開個性化廣告跟踪;

6.收集有關受害者的廣泛信息,如用戶名,電話號碼,IMEI和蘋果ID;

7.檢索已安裝應用程序的列表。

有趣的是,驗證器在iOS和macOS系統上都實現了這些操作:

6.png

研究人員還發現,驗證器實現了一個未使用的操作,攻擊者將其稱為PSPDetect。

7.png

這個操作從驗證器的配置中檢索一個文件列表(對於研究人員分析的驗證器配置,這個列表是空的),檢查它們是否存在於文件系統中,並產生一個找到的文件列表作為輸出。

此操作名稱中的縮寫PSP可能意味著“個人安全產品(personal security product)”,或者更簡單地說,是一種安全解決方案。因此,有可能在macOS設備上啟動此操作,以檢測已安裝的殺毒軟件。

執行完所有這些操作後,驗證器加密並將獲得的數據(進程列表、用戶信息等)發送到C2服務器。作為響應,服務器返回研究人員之前描述過的TriangleDB植入。

在日誌中找到線索“Triangulation活動”背後的攻擊者不僅通過在攻擊鏈中引入兩個驗證者來進行隱形操作。事實上,他們對TriangleDB植入程序的所有操作都非常小心。這可以從研究人員對攻擊者通過該植入程序向受攻擊設備發送的命令的分析中觀察到。

在植入與C2服務器建立通信並發送指令之後,它從C2服務器接收多個CRXShowTables和CRXFetchRecord命令。這些命令與可能顯示攻擊鍊和惡意軟件本身痕蹟的日誌檢索有關。檢索到的一些文件有:

1.崩潰日誌(Crash log)文件(例如/var/mobile/Library/Logs/CrashReporter);

2.數據庫文件(例如/private/var/mobile/Library/IdentityServices/ids-gossip.db)。這些數據庫文件可能包含攻擊者用來發送惡意iMessage的Apple ID。

一旦攻擊者收到這些文件,他們就會把它們從設備上刪除,這樣受害者就無法檢查它們,也無法發現潛在的攻擊跡象。在完成日誌收集和刪除後,攻擊者向植入程序發送多個CRXPollRecords命令,指示它定期從/private/var/tmp目錄中洩漏文件。上傳到C2服務器的文件的名稱應符合下列正則表達式:

8.png

具有這些名稱的文件包含由模塊產生的執行結果。這些模塊通過CRXUpdateRecord和CRXRunRecord命令上傳到受攻擊的設備。

麥克風錄音最侵犯隱私的模塊之一是麥克風錄製模塊,其名稱為“msu3h”,研究人員認為3h代表三小時,默認錄製時間。在執行時,它會解密(使用源自GTA IV哈希的自定義算法)其配置,但只有當電池電量超過10%時,它才會執行進一步的操作。

配置文件本身包含典型的配置數據,例如記錄多長時間和用於加密記錄的AES加密密鑰,但也包含更具攻擊性的參數,例如:

1.suspendOnDeviceInUse:設置當設備屏幕打開時是否應該停止錄製;

2.syslogRelayOverride:設置捕獲系統日誌時是否錄製音頻。

錄音使用Audio Queue API,聲音塊使用Speex編解碼器進行壓縮,然後使用AES進行加密。除了聲音數據,每個錄音都包含診斷信息,它有一個四字節的類型標識符,可以是:

9.png

鑰匙串洩露由於未知的原因,攻擊者決定添加一個額外的鑰匙串洩露模塊,儘管這樣的功能已經存在於TriangleDB中。這個鑰匙串模塊與TriangleDB中的邏輯相同,但主要基於iphone-dataprotection.keychainviewer項目中的代碼。鑰匙串(英文:Keychain)是蘋果公司Mac OS中的密碼管理系統。它在MacOS 8.6中被導入,並且包括在了所有後續的Mac OS版本中,包括Mac OS X。一個鑰匙串可以包含多種類型的數據:密碼(包括網站,FTP服務器,SSH帳戶,網絡共享,無線網絡,群組軟件,加密磁盤鏡像等),私鑰,電子證書和加密筆記等。

SQLite竊取模塊iOS上的許多應用使用SQLite來存儲它們的內部數據。因此,攻擊者實現能夠從各種SQLite數據庫竊取數據的模塊也就不足為奇了。所有這些模塊都具有相同的代碼庫,並且包含要執行的不同SQL查詢。同樣,它們的配置是加密的。當它被解密時,只能找到標準變量,如文件路徑,AES密鑰,查詢字符串等。

這些模塊的代碼相當奇特,例如,攻擊者在fopen()函數周圍實現了一個包裝器,添加了Z標誌(表明創建的文件應該經過aes加密和zlib壓縮),並與標準w(寫)標誌結合使用,如下圖所示:

10.png

同樣有趣的是,SQLite竊取模塊包含針對不同iOS版本的三個代碼版本:低於8.0、介於8.0和9.0之間、9.0及更高版本。

研究人員找到的每個模塊執行不同的SQL數據庫查詢。例如,有一個模塊處理來自knowledgeec .db數據庫的應用程序使用數據。另一個模塊提取與照片相關的元數據,例如照片中是否有孩子,該人是男是女(見下圖),以及從媒體文件中自動生成的文本。

11.png

攻擊者對WhatsApp、SMS和Telegram的信息也表現出了興趣,這也不足為奇,因為研究人員也發現了竊取這些數據的模塊。

位置監控模塊這個模塊在一個單獨的線程中運行,並試圖模擬被授權使用配置中指定的位置服務的bundle(例如/System/Library/LocationBundles/Routine.bundle)。除了使用GPS確定位置外,它還使用GSM,通過CoreTelephony框架檢索MCC (MobileCountryCode), MNC (MobileNetworkCode), LAC (LocationAreaCode)和CID (CellID)值。

使用gsm相關數據的一個原因是在沒有GPS數據的情況下估計受害者的位置。

12.png

結論Triangulation活動背後的攻擊者非常小心地避免被發現。他們在攻擊鏈中引入了兩個驗證器,以確保漏洞和植入程序不會被傳遞給安全研究人員。此外,麥克風錄音可以調整為在屏幕被使用時停止。位置跟踪器模塊可能不使用標準的GPS功能,如果這是不可用的,而是使用來自GSM網絡的元數據。

攻擊者還表現出對iOS內部的深刻理解,因為他們在攻擊過程中使用了未記錄的私有api。它們還在一些模塊中實現了對8.0之前iOS版本的支持。回想一下,這些模塊在2015年之前被廣泛使用,這表明這些模塊的代碼已經被使用了多長時間。

另外,這次攻擊中使用的一些組件包含的代碼可能表明它們也針對macOS系統,儘管截至發布日期,在macOS設備上沒有遇到Triangulation活動痕跡。

儘管Triangulation活動是在高度隱蔽的情況下執行的,但研究人員仍然能夠提取出完整的攻擊鏈,以及植入程序和插件。如果你想知道研究人員是如何設法繞過攻擊者引入的所有保護措施的,請點擊此文。