執(zhí)行摘要
上周,谷歌的威脅分析小組分享了“使用macOS漏洞分析水坑攻擊”報告,該活動疑似APT活動。谷歌的報告集中在兩個漏洞的使用上:一個0 day和一個N day(有補丁的已知漏洞)。
事實上,在谷歌發(fā)布報告時,這兩個漏洞已經(jīng)被修復(fù)了幾個月。而利用這些漏洞投放的惡意軟件卻沒有受到太多關(guān)注:一個后門,該后門即使在最新的macOS Monterey的補丁系統(tǒng)上也能正常運行。
谷歌將該后門命名為 “Macma”,我們也將使用這個名字。在谷歌發(fā)布后不久,ObjectiveSee上很快發(fā)布了對后門的相關(guān)分析(名為“OSX.CDDS”)。在本文中,我們深入研究了macOS.Macma,分享了更多的IOC來幫助防御者和分析人員,并推測了macOS.Macma的一些(迄今未被提及)有趣的工件。
持久性
基于谷歌 TAG 團(tuán)隊的工作,我們成功獲取了威脅者植入的后門的兩個版本,我們將其標(biāo)記為UserAgent 2019和UserAgent 2021。兩者都非常有趣,但可以說早期的 2019 版本壽命更長,因為交付機(jī)制似乎在 macOS Monterey 上運行良好。
2019年版的macOS.Macma在macOS Monterey上可以正常運行
UserAgent 2019是一個由名為 “SafariFlashActivity.app ”的應(yīng)用程序投放的Mach-O二進(jìn)制文件,其本身包含在一個。DMG文件中(谷歌發(fā)現(xiàn)的磁盤鏡像樣本的名稱為 “install_flash_player_osx.dmg”)。UserAgent 2021是一個獨立的Mach-O二進(jìn)制文件,包含與2019年版本基本相同的功能以及一些新增的AV捕獲功能。這個版本的macOS.Macma是在威脅者利用谷歌文章中描述的漏洞時,由一個單獨的Mach-O二進(jìn)制文件投放安裝的。
兩個版本都在當(dāng)前用戶的~/Library/LaunchAgents文件夾中安裝相同的持久性代理com.UserAgent.va.plist。
Macma的持久性代理com.UserAgent.va.plist
如上圖所示,屬性列表包含一些有趣的功能。首先,除了可執(zhí)行文件的路徑外,我們可以看到持久性代理在運行前向惡意軟件傳遞兩個參數(shù):-runMode和ifneeded。
該代理還將當(dāng)前的工作目錄切換到一個自定義文件夾,在該文件夾中,將存放來自單獨的鍵盤記錄器模塊的數(shù)據(jù)等。
我們發(fā)現(xiàn)一個有趣的現(xiàn)象,開發(fā)者選擇將LimitLoadToSessionType鍵的值設(shè)為 “Aqua”。Aqua “值確保LaunchAgent僅在有一個登錄的GUI用戶時運行(而不是作為后臺任務(wù)運行或在用戶通過SSH登錄時運行)。這可能是確保其他功能正常運行所必需的,例如請求用戶授予對麥克風(fēng)和輔助功能的訪問權(quán)限。
提示受害者允許macOS.Macma 訪問麥克風(fēng)
然而,由于在完全沒有指定鍵的情況下,launchd默認(rèn)為 ”Aqua“,因此這種包含是相當(dāng)多余的。我們可以推測,這里包含的鍵表明開發(fā)者熟悉在其他背景下開發(fā)其他LaunchAgents,而某些背景下鍵可能是必要的。
”混亂的“開發(fā)過程
由于我們正在討論屬性列表,SafariFlashActivity.app 的 Info.plist 中就有一些有趣的工件,這反過來又使我們注意到捆綁可執(zhí)行文件中的一些其他奇怪之處。
查找包含Info.plist的捆綁包中的惡意軟件的一個好處是,它提供了一些關(guān)于惡意軟件何時、在什么機(jī)器上構(gòu)建的有趣細(xì)節(jié)。
macOS.Macma是在ElCapitan上構(gòu)建的
在這種情況下,我們看到該惡意軟件是在運行Build 15C43的El Capitan機(jī)器上構(gòu)建的。這很奇怪,因為Build 15C43從來都不是一個公開發(fā)布的版本:它是El Capitan 11.2的beta 版(測試版),在2015年10月至11月左右短暫地提供給開發(fā)人員和AppleSeed(Apple beta 測試人員)。2015 年 12 月 8 日,El Capitan 11.2 發(fā)布了內(nèi)部版本號 15C50,取代之前的 11.1 公開版本,從 10 月 21日開始內(nèi)部版本為 15B42。
在這個時候,我們注意到,該惡意軟件是用臨時簽名進(jìn)行簽名的,這意味著它不需要Apple開發(fā)人員賬戶或ID來滿足代碼簽名要求。
這里面有一個異常之處:該捆綁包是在不需要開發(fā)人員賬戶的情況下簽名的,但似乎用來創(chuàng)建這個版本的macOS.Macma的macOS版本確實來自于一個開發(fā)人員賬戶。這樣的賬戶可能屬于作者,可能是偷來的,也可能是用假身份證獲得的。但是,后兩種情況似乎與臨時簽名存在矛盾,如果開發(fā)者有一個假的或偷來的Apple ID,為什么不用它來編碼,以增加可信度呢?
當(dāng)我們在猜測開發(fā)者或開發(fā)者的身份時,軟件包中的另外兩個工件值得一提。/MacOS中的主要可執(zhí)行文件名為”SafariFlashActivity“,顯然是在2019年9月16日編譯的。在/Resources文件夾中,我們看到了9天前(9月7日)構(gòu)建的可執(zhí)行文件”SafariFlashActivity1“的早期版本。
雖然這兩個可執(zhí)行文件共享大量的代碼和功能,但它們之間也有一些區(qū)別。有趣的是,它們似乎是由兩個完全不同的用戶創(chuàng)建的,有意或無意為之。
同一macOS.Macma捆綁包中兩個二進(jìn)制文件的用戶字符串
用戶賬戶 ”lifei“(推測為李飛,一個常見的中文名字)似乎已經(jīng)取代了用戶賬戶 ”lxk“。當(dāng)然,這可能是同一個人操作不同的用戶賬戶,或者是兩個完全不同的人從一個共同的項目中分別構(gòu)建。事實上,在如此短的時間內(nèi),代碼之間存在著足夠大的差異,因此有理由認(rèn)為兩個開發(fā)人員在同一個項目上獨立工作,并且一個開發(fā)人員被選為嵌入/MacOs文件夾中的最終可執(zhí)行程序。
請注意,在 ”lifei “構(gòu)建中,我們看到第一次使用”Mac_Ma “和 ”preexcel“--在最終代碼簽名中用作團(tuán)隊標(biāo)識。這些都沒有出現(xiàn)在 ”lxk “構(gòu)建中,”SafariFlashActivity“似乎是項目名稱。這種分歧甚至擴(kuò)展到包中使用的標(biāo)識符和代碼簽名中使用的標(biāo)識符之間的異常不一致,其中一個是xxxx.SafariFlashActivity,另一個是xxx.preexcl-project。
macOS.Macma的捆綁和代碼簽名中使用的標(biāo)識符不一致
無論如何,在2019年版本的macOS.Macma的其他幾個二進(jìn)制文件中發(fā)現(xiàn)了 ”lifei “這個字符串,而 ”lxk “卻沒有再出現(xiàn)。在2021年的版本中,”lifei “和 ”lxk “以及所有其他開發(fā)人員工件都從安裝程序和UserAgent二進(jìn)制文件中完全消失了,這表明開發(fā)過程已經(jīng)被故意清理。
用戶lifei的 ”Macma “似乎已經(jīng)贏得了 ”開發(fā)者之戰(zhàn)“
最后,如果我們回到在軟件包中發(fā)現(xiàn)的各種(公認(rèn)的,可偽造的)編譯日期,還有一個奇怪的現(xiàn)象:我們注意到,該惡意軟件似乎是在2015年的macOS開發(fā)者版本上編譯的,然而Info.plist的版權(quán)日期是2018年,而根據(jù)(完全可操作的)時間戳,這個軟件包中的可執(zhí)行文件是在三年多后的2019年9月構(gòu)建的。
我們能從這些糾纏不清的線索中得出什么結(jié)論?無可否認(rèn),沒有什么具體的結(jié)論。但似乎有兩種合理的說法,即使是相互競爭的說法:也許威脅者花了非常大的力氣,而且很可能是不必要的力氣來混淆這些二進(jìn)制文件中的工件。或者,威脅者存在些許混亂的開發(fā)過程,有不止一個開發(fā)人員和不斷變化的需求。毫無疑問,事實要復(fù)雜得多,但鑒于上述工件的性質(zhì),我們懷疑后者很可能至少是故事的一部分。
對于防御者來說,這些提供了大量可收集的工件,也許可以幫助我們在未來的事件中識別這個惡意軟件或追蹤這個威脅者。
鏈接到 Android 和 Linux 惡意軟件
當(dāng)我們查看可執(zhí)行代碼本身中的工件時,事情開始變得更加有趣了。正如我們在介紹中指出的,關(guān)于這個惡意軟件之前的報告將其稱為 ”O(jiān)SX.CDDS“。我們可以看到命名的原因,因為代碼中充斥著以CDDS為前綴的方法。
在2021年UserAgent可執(zhí)行文件中發(fā)現(xiàn)的一些CDDS方法
但是,該代碼是DDS(數(shù)據(jù)分發(fā)服務(wù))框架的一個實現(xiàn)。我們試圖找到與macOS.Macma中使用的功能相匹配的DDS的特定實現(xiàn),雖然我們的搜索結(jié)果為空白,但我們確實發(fā)現(xiàn)了其他使用相同框架的惡意軟件。
Android惡意軟件投放了一個包含相同CDDS框架的ELF bin
指向已知Android 惡意軟件投放器的鏈接
這些 ELF bin 和兩個版本的 macOS.Macma 的 UserAgent 還有一個共同點,即字符串”O(jiān)ctstr2Dec“和 ”Dec2Octstr“。
macOS.Macma和惡意ELF共享對象文件之間的共同點
后面的這些字符串,似乎是包含八進(jìn)制和小數(shù)的字符串的轉(zhuǎn)換,可能只是巧合或代碼重用的問題。我們發(fā)現(xiàn)的代碼相似性也有指向臭名昭著的Shedun Android惡意軟件的安裝程序的鏈接。
谷歌的TAG在其報告中指出,macOS.Macma與一個他們未能完全修復(fù)的iOS漏洞鏈有關(guān)。我們的分析表明,macOS.Macma背后的威脅者至少是在重用ELF/Android開發(fā)人員的代碼,并且可能也將惡意軟件瞄準(zhǔn)了Android手機(jī)。但這些需要進(jìn)一步分析,以了解這些連接的延伸程度。
Macma的鍵盤記錄和 AV 捕獲功能
雖然該惡意軟件之前的報告已經(jīng)涵蓋了macOS.Macma功能的基本情況,但我們希望擴(kuò)展之前的報告以揭示更多的 IoC。
如前所述,macOS.Macma將在~/Library/LaunchAgents/com.UserAgent.va.plist處投放一個持久性代理,在~/Library/Preferences/lib/UserAgent處投放一個可執(zhí)行程序。
正如我們在上面指出的,LaunchAgent 將確保在正常運行之前,可執(zhí)行文件的當(dāng)前工作目錄將更改為上述的”lib “文件夾。該文件夾被用作由鍵盤記錄器 ”kAgent “收集的數(shù)據(jù)的存儲庫,該記錄器本身與 ”at “和 ”arch “Mach-O二進(jìn)制文件一起被放置在~/Library/Preferences/Tools/。
由macOS.Macma投放的二進(jìn)制文件
kAgent鍵盤記錄器從任何文本輸入字段(包括 Spotlight、Finder、Safari、Mail、Messages 和其他具有密碼等文本字段的應(yīng)用程序)創(chuàng)建捕獲的鍵盤記錄文本文件。創(chuàng)建的文本文件的名稱帶有Unix的時間戳,并收集在名為 ”data“的目錄中。
文件1636804188包含由鍵盤記錄器捕獲的數(shù)據(jù)
我們還注意到,這個惡意軟件會訪問remote.php文件,以返回用戶的IP地址。相同的 URL 有著悠久的使用歷史。
HTTP://cgi1.apnic.net/cgi-bin/my-ip.php
圖片
Android和macOS的惡意軟件都會ping這個URL
最后,我們注意到,在。/MacOS/SafariFlashActivity ”lifei “二進(jìn)制文件中,還有一個IoC從未出現(xiàn)在其他地方,而且我們在任何測試運行中也沒有看到投放,那就是:
/Users/%s/Library/Safari/Safari.app/Contents/MacOS/UpdateHelper
惡意軟件試圖在Safari文件夾中投放一個文件
這值得一提,因為目標(biāo)文件夾,即用戶的Library/Safari文件夾,自Mojave以來一直受到TCC保護(hù)。由于這個原因,任何試圖在那里安裝的行為都會違反目前的TCC保護(hù)(雖然存在繞過的情況)。因此,它看起來像是El Capitan時代早期代碼開發(fā)的遺留物,而且我們確實在后來的版本中沒有看到這個字符串。但是,它的獨特性足以讓防御者提防:在任何版本的macOS上都沒有任何合法的理由讓這個路徑的可執(zhí)行文件存在。
結(jié)論
捕獲針對macOS用戶的APT是一個罕見的事件,在這個示例中,我們很幸運地發(fā)現(xiàn)了被投放的惡意軟件,而且非常明顯。不管用來投放惡意軟件的載體是什么,Payload本身是完全有效的,能夠竊取數(shù)據(jù)并監(jiān)視macOS用戶。這只是警醒我們,僅僅依靠mac設(shè)備本身并不能完全保證安全性。這可能是一個APT開發(fā)的Payload,但代碼很簡單,任何感興趣的相關(guān)人員都可以復(fù)制。
IoC
SHA1
000830573ff24345d88ef7916f9745aff5ee813d;UserAgent 2021 payload, Mach-O
07f8549d2a8cc76023acee374c18bbe31bb19d91;UserAgent 2019, Mach-0
0e7b90ec564cb3b6ea080be2829b1a593fff009f;(Related) ELF DYN Shared object file
2303a9c0092f9b0ccac8536419ee48626a253f94;UserAgent 2021 installer, Mach-0
31f0642fe76b2bdf694710a0741e9a153e04b485;SafariFlashActivity1, Mach-0
734070ae052939c946d096a13bc4a78d0265a3a2;(Related) ELF DYN Shared object file
77a86a6b26a6d0f15f0cb40df62c88249ba80773;at, Mach-0
941e8f52f49aa387a315a0238cff8e043e2a7222;install_flash_player_osx.dmg, DMG
b2f0dae9f5b4f9d62b73d24f1f52dcb6d66d2f52;client, Mach-0
b6a11933b95ad1f8c2ad97afedd49a188e0587d2;SafariFlashActivity, Mach-0
c4511ad16564eabb2c179d2e36f3f1e59a3f1346;arch, Mach-0
f7549ff73f9ce9f83f8181255de7c3f24ffb2237;SafariFlashActivityInstall, shell script
文件路徑
~/Library/Preferences/Tools/at
~/Library/Preferences/Tools/arch
~/Library/Preferences/Tools/kAgent
~/Library/LaunchAgents/com.UserAgent.va.plist
~/Library/Preferences/UserAgent/lib/Data/
~/Library/Preferences/UserAgent/lib/UserAgent
~/Library/Safari/Safari.app/Contents/MacOS/UpdateHelper
標(biāo)識符
xxxxx.SafariFlashActivity
xxxxxx.preexcl.project