標籤:

黑客組織「海蓮花」打造的全新macOS後門

黑客組織「海蓮花」打造的全新macOS後門

來自專欄 嘶吼RoarTalk

前言

趨勢科技於上周三(4月4號)宣稱,一種新型的MacOS後門程序(目前趨勢科技已將其定義為OSX_OCEANLOTUS.D )正被黑客組織「海蓮花」所使用,而其攻擊目標是那些安裝有Perl語言編程軟體的Mac用戶。

傳播過程分析

海蓮花(OceanLotus,又名Cobalt Kitty、SeaLotus、APT-C-00和APT 32)是高度組織化的、專業化的境外國家級黑客組織。自2012年4月起針對中國政府的海事機構、海域建設部門、科研院所和航運企業,展開了精密組織的網路攻擊,很明顯這是一個有國外政府支持的APT(高級持續性威脅)行動。

趨勢科技的研究人員認為,這個全新macOS後門是「海蓮花」所使用的最新的攻擊工具。

MacOS後門是在一個惡意的Word文檔中發現的,可能是通過電子郵件發送的。這意味著,新的MacOS後門程序是通過釣魚電子郵件中的惡意Word文檔進行傳播的。惡意Word文檔會偽裝成文件名為「2018-PHI?U GHI DANH THAM D? T?NH H?I HMDC 2018.doc」的文檔,翻譯過來也就是「2018年HMDC大會登記表」,而HMDC是一個在越南宣傳民族獨立和民主的組織。

惡意文檔攻擊時的截圖

在收件人打開該文檔時,它會建議收件人啟用該文檔的宏。而這個惡意宏則採用了十進位ASCII代碼來逐個字元地進行混淆,以逃避各種殺毒軟體的檢測。這種字元串的混淆加大逆向分析技術的難度,會讓該惡意軟體看起來不那麼可疑,如下圖所示。

文檔混淆後的代碼片段

在逆向分析之後,研究人員可以看到惡意有效載荷是用Perl編程語言編寫的。它從會從Word文檔中提取theme0.xml文件,theme0.xml文件是一個帶有0xFEEDFACE簽名的Mach-O 32位可執行文件,用於作為OSX_OCEANLOTUS.D後門程序的滴管組件(dropper),不過theme0.xml在執行之前會被解壓到 /tmp/system/word/theme/syslogd。

逆向分析之後的Perl有效載荷

滴管組件分析

滴管組件用於將後門安裝到受感染的系統中,並建立其持久性攻擊機制。

滴管組件的主要功能

滴管組件中的所有字元串以及後門本身都使用了硬編碼的RSA256密鑰進行加密。其中,加密字元串以兩種形式存在:使用RSA256加密的字元串,以及混合使用自定義base64編碼和RSA256加密的字元串。

硬編碼的RSA256密鑰會顯示前20個字元

使用setStartup()方法運行後,滴管組件會首先檢查它是否以ROOT許可權運行。因為只有這樣,GET_PROCESSPATH和GET_PROCESSNAME方法才會對硬編碼路徑和進程名稱進行解密,並安裝最終的後門程序。所以總結起來就是:

· 對於有ROOT許可權運行的設備來說:

1.硬編碼路徑是 /Library/CoreMediaIO/Plug-Ins/FCP-DAL/iOSScreenCapture.plugin/Contents/Resources/;

2.進程名稱是screenassistantd

· 對於沒有以ROOT許可權運行的設備來說:

1.硬編碼路徑是 ~/Library/Spelling/;

2.進程名稱是spellagentd;

隨後,在實現了Loader::installLoader方法後,惡意軟體就會讀取硬編碼的64位Mach-O可執行文件(magic value 0xFEEDFACF),並寫入之前確定的路徑和文件。

滴管組件安裝後門後,會將其屬性設置為「隱藏」,並設置一個隨機文件日期和時間

如上所示,當滴管組件安裝後門程序時,它會將其屬性設置為「hidden(隱藏)」 ,並使用touch命令將文件創建日期和時間設置為隨機值,touch命令為 touch –t YYMMDDMM 「/path/filename」 > /dev/null,此時訪問許可權將被更改為0x1ed = 755,這等於u=rwx,go=rx。

Mach-O可執行文件的隨機值0xFEEDFACF(64位)

用GET_LAUNCHNAME和GET_LABELNAME方法將為root用戶(com.apple.screen.assistantd.plist)和普通用戶(com.apple.spell.agent.plist)返回屬性列表「.plist」的硬編碼名稱。

然後,滴管組件將在/Library/LaunchDaemons/或~/Library/LaunchAgents/文件夾中創建持久文件。當操作系統啟動時,RunAtLoad將命令launchd來運行守護進程,而KeepAlive將命令啟動以使進程無限期地運行。這個持久性文件也被設置為隱藏著隨機生成的文件日期和時間。

具有持久性設置的屬性列表

/launchctl load /Library/LaunchDaemons/filename.plist或 /dev/nul or launchctl load ~/Library/LaunchAgents/ filename.plist > /dev/nul 將命令操作系統在登錄時啟動已刪除的後門文件。在該過程結束時,滴管組件會自行刪除該過程。

後門分析

後門程序包含兩個主要函數infoClient和runHandle,這兩個函數所實現的功能是不同的,infoClient負責收集用戶的設備系統信息,並將這些信息提交給命令和控制(C&C)伺服器以及接收額外的C&C通信信息,而runHandle則負責後門功能。

後門的主要功能

infoClient在HandlePP類中填充的變數:

屬於HandlePP類的變數列表

clientID是來自環境變數的MD5哈希,而strClientID是clientID的十六進位表示。下面的所有字元串都是通過AES256和base64編碼加密的。HandlePP::getClientID方法使用的是以下環境變數:

序列號

硬體UUID

MAC地址

隨機生成的UUID

對於初始信息包來說,後門也會收集以下信息。

操作系統版本

運行getpwuid ->pw_name, scutil – – -get ComputerName, uname – m將分別提供以下返回值:

1.Mac OSX 10.12;

2.System Administrator;

3.<owner』s name>』s iMac;

4.x86_64;

所有這些數據在發送到C&C伺服器之前都會被加密和加密,詳細過程如下所述。

1.擾碼

擾碼就是作有規律的隨機化處理後的信碼,類解析器的方法有多種,每個變數類型的解析方法各不同,比如 Parser::inBytes, Parser::inByte, Parser::inString以及 Parser::inInt.。

Parser :: inBytes方法

如果clientID等於下面的位元組序列B4 B4 B1 47 BC 5282873 1F 1A 01 6B FA 72 C0 73,那麼這個擾碼的版本就是使用第三個參數(0x10)計算的,它被當做一個DWORD來處理。每4個位元組都與它異或,如下面的例子所示。

Parser :: inByte方法

當擾碼一個位元組時,擾碼器首先確定位元組值是奇數還是偶數。如果該值是奇數,則將位元組加上一個隨機生成的位元組添加到數組中。如果該值是偶數的情況,首先添加隨機生成的位元組,然後添加位元組。在上面的例子中,第三個參數是1= 0x31,這是一個奇數。這意味著它將位元組1和一個隨機生成的位元組添加到最終的擾碼陣列。

Parser :: inString方法

當擾碼字元串時,擾碼器會產生一個5位元組長的序列。首先,它生成一個隨機位元組,然後是3個零位元組,1個隨機位元組,最後是一個位元組長度的字元串。假設研究人員要打亂字元串 Mac OSX 10.12。則它的長度是13 = 0x0d,兩個隨機位元組是0xf3和0x92。最後的5位元組序列看起來就像F3 00 00 92 0D,而原來的字元串則與5位元組序列異或。

擾碼Mac OSX 10.12

2.加密

加密的位元組序列會被傳遞給Packet::Packet類的構造函數中,該類會創建一個隨機的AES256密鑰,並使用這個密鑰對緩衝區進行加密。

3.對加密密鑰編碼

為了使C&C伺服器能夠解密加密數據,隨機生成的AES256密鑰必須連同加密數據一起包含在數據包中。然而,這個密鑰也是通過異或操作XOR 0x13進行擾碼的,隨後對每個位元組應用ROL 6操作。

在輸出數據包中對AES256密鑰進行擾碼的函數

以下是在擾碼和加密過程中的一些屏幕截圖:

灰色部分的位元組表示已加密的計算機信息

隨機生成AES256密鑰

擾碼的AES256密鑰(0xC1異或0x13 = 0xD2,0xD2 ROL 6 = 0xB4等)

用AES256密鑰加密的計算機信息

發送到C&C伺服器的最終有效載荷的屏幕截圖,擾碼的AES256密鑰標記為綠色,而加密的計算機信息標記為紅色,其他位元組只是隨機生成的位元組

當後門收到來自C&C伺服器的響應時,最終的有效載荷需要以類似的方式通過解密和擾碼來進行解碼。Packet::getData 負責解密接收到的載荷,而Converter::outString 負責對結果進行解擾。

來自C&C伺服器的接收數據包括以下信息:

1.HandlePP::urlRequest (/appleauth/static/cssj/N252394295/widget/auth/app.css);

2.HandlePP::keyDecrypt;

3.STRINGDATA::BROWSER_SESSION_ID (m_pixel_ratio);

4.STRINGDATA::RESOURCE_ID;

這些數據稍後將在C&C通信中被用到,如下面的Wireshark截圖所示。

交換系統數據包信息後與C&C伺服器的通信過程

與此同時,負責後門功能的runHandle將使用以下後門命令調用requestServer方法(每個命令都有一個位元組長的代碼,並由Packet::getCommand提取):

getCommand方法

下圖顯示了幾個可能的命令代碼中的兩個示例,這兩個示例,都創建一個線程,每個線程負責下載和執行文件,或者在終端中運行一個命令行程序。

用於下載和執行的命令,以及在終端中運行一個命令

用於上傳和下載文件的命令

支持的命令及其各自的代碼

總結

雖然針對Mac設備的惡意攻擊並不像其他系統那樣常見,但這一新的MacOS後門的發現可能是通過網路釣魚郵件發送的,這意味著每個用戶都可能通過網路釣魚的方式被攻擊。

IoCs

本文翻譯自:blog.trendmicro.com/tre如若轉載,請註明原文地址: 4hou.com/web/11036.html 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

Windows 下的 7 種 DLL 劫持技術
[翻譯] Intel 處理器設計缺陷導致嚴重安全漏洞
又雙叒叕是你!有人開始利用虛假《權利的遊戲》泄漏資源發起APT攻擊
SecWiki周刊(第159期)
DNS異常檢測在安全方向的多個應用

TAG:信息安全 |