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