您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)海蓮花APT組織使用最新MacOS后門(mén)程序發(fā)動(dòng)攻擊的示例分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
海蓮花APT組織(又名APT 32,APT-C-00,SeaLotus和Cobalt Kitty)是一個(gè)高度組織化的、專業(yè)化的境外黑客組織,該APT組織主要針對(duì)人權(quán)組織,媒體,研究機(jī)構(gòu)和海事建筑公司等進(jìn)行高級(jí)持續(xù)性攻擊。亞信安全多年來(lái)一直持續(xù)追蹤海蓮花組織,近日,我們發(fā)現(xiàn)該組織使用最新的MacOS后門(mén)程序,對(duì)裝有Perl程序的Mac系統(tǒng)進(jìn)行攻擊,亞信安全截獲了該后門(mén)程序,并將其命名為OSX_OCEANLOTUS.D。
MacOS后門(mén)程序通過(guò)帶有惡意word文檔的電子郵件傳播,Word文檔原始文件名為“2018-PHI?U GHI DANH THAM D? T?NH H?I HMDC 2018.doc”, 翻譯成中文就是“2018年HMDC大會(huì)登記表”, 而HMDC是一個(gè)在越南宣傳民族獨(dú)立和民主的組織。
惡意文檔運(yùn)行時(shí)的截圖
當(dāng)收件人打開(kāi)該文檔時(shí),該后門(mén)程序會(huì)建議收件人啟用宏。而這個(gè)惡意宏則采用了十進(jìn)制ASCII代碼逐個(gè)字符地進(jìn)行混淆,以逃避各種殺毒軟件的檢測(cè)。
文檔混淆后的代碼片段
去除混淆后,我們可以看到有效負(fù)載是用Perl編程語(yǔ)言編寫(xiě)的。它會(huì)從Word文檔中提取theme0.xml文件。theme0.xml是一個(gè)帶有0xFEEDFACE簽名的Mach-O32位可執(zhí)行文件,其也是該后門(mén)程序最終有效載荷。theme0.xml在執(zhí)行之前會(huì)先解壓到/ tmp / system / word / theme / syslogd目錄。
去除混淆后的Perl有效載荷
Dropper用于將后門(mén)安裝到受感染系統(tǒng)中并建立其持久性攻擊機(jī)制。
Dropper的主要功能
Dropper的所有字符串以及后門(mén)均使用硬編碼的RSA256密鑰進(jìn)行加密。其中,有兩種形式的加密字符串:RSA256加密的字符串,以及自定義的base64編碼和RSA256加密的字符串。
硬編碼的RSA256密鑰會(huì)顯示前20個(gè)字符
Dropper會(huì)使用setStartup()方法來(lái)判斷其是否以root身份運(yùn)行。并以此做為依據(jù),使用GET_PROCESSPATH和GET_PROCESSNAME方法對(duì)后門(mén)安裝的路徑和文件名進(jìn)行解密:
root用戶
路徑:/Library/CoreMediaIO/Plug-Ins/FCP-DAL/iOSScreenCapture.plugin/Contents/Resources/
進(jìn)程名:screenassistantd
普通用戶
路徑:?/ Library /Spelling /
進(jìn)程名:spellagentd
隨后,它使用Loader ::installLoader方法,讀取硬編碼的64位Mach-O可執(zhí)行文件(magic value 0xFEEDFACF),并寫(xiě)入先前確定的路徑和文件。
Dropper安裝后門(mén),將其屬性設(shè)置為“hidden”,并設(shè)置隨機(jī)文件的日期和時(shí)間
當(dāng)Dropper安裝后門(mén)時(shí),其會(huì)將屬性設(shè)置為“hidden”,并使用touch命令將文件日期和時(shí)間設(shè)置為隨機(jī)值:touch -t YYMMDDMM“/path / filename”> / dev / null。與此同時(shí),訪問(wèn)權(quán)限被更改為0x1ed = 755,相當(dāng)于u= rwx,go = rx。
Mach-O 可執(zhí)行文件(64位)的magic value 0xFEEDFACF
用GET_LAUNCHNAME和GET_LABELNAME方法為root用戶(com.apple.screen.assistantd.plist)和普通用戶(com.apple.spell.agent.plist)返回屬性列表“ .plist ” 的硬編碼名稱。之后,其會(huì)在/Library / LaunchDaemons /或?/ Library /LaunchAgents / 文件夾中創(chuàng)建持久性文件。當(dāng)操作系統(tǒng)啟動(dòng)時(shí),RunAtLoad用來(lái)運(yùn)行守護(hù)進(jìn)程,而KeepAlive使進(jìn)程無(wú)限期地運(yùn)行。該持久性文件被設(shè)置為掩藏屬性,文件的時(shí)間和日期也是隨機(jī)生成的。
具有持久性設(shè)置的屬性列表
launchctlload /Library/LaunchDaemons/filename.plist> / dev / nul或launchctl load?/ Library /LaunchAgents / filename.plist> / dev / nul命令使得操作系統(tǒng)在登錄時(shí)啟動(dòng)生成的后門(mén)文件,隨后Dropper將會(huì)刪除自身。
后門(mén)包含兩個(gè)主要函數(shù)infoClient和runHandle。infoClient負(fù)責(zé)將收集到的操作系統(tǒng)信息發(fā)送給C&C服務(wù)器(服務(wù)器本身是惡意的),并接收來(lái)自C&C服務(wù)器的返回信息,而runHandle負(fù)責(zé)后門(mén)功能。
后門(mén)的主要功能
infoClient在HandlePP類(lèi)中填充的變量:
HandlePP類(lèi)的變量列表
clientID是從環(huán)境變量衍生的MD5哈希,而strClientID是clientID的十六進(jìn)制表示。以下所有字符串均通過(guò)AES256和base64編碼加密。HandlePP :: getClientID方法使用的是下面的環(huán)境變量:
序列號(hào)
硬件UUID
MAC地址
隨機(jī)生成的UUID
對(duì)于初始信息包,后門(mén)還收集以下信息:
操作系統(tǒng)版本
運(yùn)行g(shù)etpwuid -> pw_name,scutil --get ComputerName和uname -m將分別提供以下返回值:
Mac OSX 10.12.
System Administrator
<owner’s name>’s iMac
x86_64
所有這些數(shù)據(jù)在發(fā)送到C&C服務(wù)器之前都被加密。詳細(xì)過(guò)程如下所述:
1. 擾碼
類(lèi)解析器的方法有多種,每個(gè)變量類(lèi)型的解析方法各不同,比如Parser::inBytes, Parser::inByte, Parser::inString以及Parser::inInt.。
Parser:: inByte方法
如果clientID等于以下字節(jié)序列B4 B1 47 BC 52 28 2873 1F 1A 01 6B FA 72 C0 73,那么這個(gè)擾碼的版本就是使用第三個(gè)參數(shù)(0x10)計(jì)算的,其被當(dāng)做一個(gè)DWORD來(lái)處理,每4個(gè)字節(jié)都與它進(jìn)行異或,如下例所示。
Parser :: inByte方法
當(dāng)擾碼一個(gè)字節(jié)時(shí),擾碼器首先確定字節(jié)值是奇數(shù)還是偶數(shù)。如果該值為奇數(shù),則將該字節(jié)和一個(gè)隨機(jī)生成的字節(jié)一起添加到數(shù)組中。在偶數(shù)值的情況下,首先添加隨機(jī)生成的字節(jié),然后添加該字節(jié)。在上面的例子中,第三個(gè)參數(shù)是'1'= 0x31,這是一個(gè)奇數(shù)。這意味著它將字節(jié)'1'和一個(gè)隨機(jī)生成的字節(jié)添加到最終的擾碼陣列。
Parser:: inString方法
擾碼一個(gè)字符串時(shí),擾碼器產(chǎn)生一個(gè)5字節(jié)長(zhǎng)的序列。首先,它產(chǎn)生一個(gè)隨機(jī)字節(jié),隨后是三個(gè)零字節(jié),一個(gè)隨機(jī)字節(jié),最后是字符串長(zhǎng)度的字節(jié)。假設(shè)我們想要混淆字符串'Mac OSX 10.12'。它的長(zhǎng)度是13 = 0x0d,兩個(gè)隨機(jī)字節(jié)是0xf3和0x92。最后的5字節(jié)序列看起來(lái)像F300 00 00 92 0D,然后原始字符串與5字節(jié)序列異或。
擾碼Mac OSX 10.12
1. 加密
加密的字節(jié)序列被傳遞到Packet ::Packet類(lèi)的構(gòu)造函數(shù)中,該類(lèi)創(chuàng)建隨機(jī)AES256密鑰并使用此密鑰加密緩沖區(qū)。
2. 編碼加密密鑰
為了使C&C服務(wù)器解密和加密數(shù)據(jù),隨機(jī)生成的AES256密鑰必須與加密數(shù)據(jù)一起包含在數(shù)據(jù)包中。然而,這個(gè)密鑰也是通過(guò)異或操作XOR 0x13進(jìn)行擾碼的,隨后對(duì)每個(gè)字節(jié)應(yīng)用ROL 6操作。
在輸出數(shù)據(jù)包中擾碼AES256密鑰的函數(shù)
擾碼和加密過(guò)程中的一些屏幕截圖:
灰色部分的字節(jié)表示已加密的計(jì)算機(jī)信息
隨機(jī)生成AES256密鑰
擾碼的AES256密鑰(0xC1異或0x13 = 0xD2,0xD2ROL 6 = 0xB4)等)
使用AES256密鑰加密的計(jì)算機(jī)信息
發(fā)送到C&C服務(wù)器的最終有效載荷的屏幕截圖,擾碼的AES256密鑰標(biāo)記為綠色,而加密的計(jì)算機(jī)信息標(biāo)記為紅色,其他是隨機(jī)生成的字節(jié)
當(dāng)后門(mén)收到來(lái)自C&C服務(wù)器的響應(yīng)時(shí),最終有效載荷需要通過(guò)解密和擾碼類(lèi)似的方式進(jìn)行解碼。 Packet:: getData解密接收到的有效載荷,而Converter::outString負(fù)責(zé)對(duì)結(jié)果進(jìn)行解擾。
從C&C服務(wù)器收到的數(shù)據(jù)包含以下信息:
HandlePP :: urlRequest(/appleauth/static/cssj/N252394295/widget/auth/app.css)
HandlePP :: keyDecrypt
STRINGDATA :: BROWSER_SESSION_ID(m_pixel_ratio)
StringData是::RESOURCE_ID
這些數(shù)據(jù)稍后將在C&C通信中使用,如下面的Wireshark屏幕截圖所示:
交換系統(tǒng)數(shù)據(jù)包信息后與C&C服務(wù)器的通信
同時(shí),該后門(mén)程序的runHandle方法將使用以下后門(mén)命令(每個(gè)命令有一個(gè)字節(jié)長(zhǎng)的代碼并由Packet:: getCommand提?。┱{(diào)用requestServer方法:
getCommand 方法
如下兩個(gè)示例都創(chuàng)建了一個(gè)線程,每個(gè)線程負(fù)責(zé)下載和執(zhí)行文件或在終端中運(yùn)行命令行程序:
用于下載和執(zhí)行以及在終端中運(yùn)行命令的命令
用于上傳和下載文件的命令
支持的命令及其各自的代碼
上述就是小編為大家分享的海蓮花APT組織使用最新MacOS后門(mén)程序發(fā)動(dòng)攻擊的示例分析了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。