MacOS 上常見的七種混淆技術(shù)
MacOS 平臺的威脅日漸增多,攻擊者也越來越重視針對該平臺的用戶的攻擊,本文將會介紹七種 macOS 上常見的混淆技術(shù)。

混淆的 Shell 腳本
Shell 腳本可能是 Linux 平臺下最常見的惡意文件,在 macOS 上也不遑多讓。許多惡意軟件都將 Shell 腳本作為應(yīng)用程序中的可執(zhí)行文件,如下所示。

混淆的 Shell 腳本
也有攻擊者直接將腳本內(nèi)置在鏡像文件中,通過別名來誘導(dǎo)用戶執(zhí)行:

文件中的腳本
在安裝鏡像文件時(shí),會看到教育用戶打開惡意軟件并繞過內(nèi)置的 Gatekeeper 安全機(jī)制。

提示信息
要求用戶點(diǎn)擊的安裝 PKG 圖標(biāo)其實(shí)是一個(gè)隱藏目錄中的 Shell 腳本的別名,名稱為 .hidden。該腳本經(jīng)過輕微混淆,在 /tmp 目錄下使用隨機(jī) 12 個(gè)字符創(chuàng)建一個(gè)目錄后,會完成去混淆執(zhí)行并刪除從同一目錄中的數(shù)據(jù)文件中提取的可執(zhí)行文件:
混淆的 SHC
Shell Script Compiler 是將 Bash 腳本編譯生成可執(zhí)行文件的技術(shù),盡管這些可執(zhí)行文件并不能做到完全獨(dú)立,仍然需要執(zhí)行環(huán)境中包含指定的 Shell。

Shell Script Compiler
SHC 的 -U 參數(shù)可以使編譯后的二進(jìn)制文件無法使用 ptrace 進(jìn)行跟蹤,-e 參數(shù)支持設(shè)置程序終止運(yùn)行的到期日期。如果使用不同的 -e 參數(shù),相同的腳本就可以生成不同哈希的二進(jìn)制文件。

Shell Script Compiler
SHC 被 SCSSET 惡意軟件大量使用,在野能夠持續(xù)發(fā)現(xiàn)相關(guān)樣本。從攻擊者的角度來看,使得編寫無法通過靜態(tài)分析讀取的惡意腳本變得非常簡單。而且,通過 -e 參數(shù)還能夠無限生成不同哈希值的樣本文件。

Shell Script Compiler
發(fā)現(xiàn) SHC 編譯的二進(jìn)制文件,唯一的方法就是通過沙盒執(zhí)行觀察其行為。靜態(tài)檢測發(fā)現(xiàn) SHC 編譯的二進(jìn)制文件時(shí)可以將其認(rèn)為是可疑的,編譯器生成的獨(dú)特字符串也利于檢測,但實(shí)際上只有通過執(zhí)行才能準(zhǔn)確區(qū)分是否惡意。
混淆的 Python 腳本
蘋果公司已經(jīng)在 Monterey 12.3 及更高版本的 macOS 設(shè)備上取消了對 Python 2.7 的支持,所以針對 macOS 平臺的攻擊者已經(jīng)對 Python 不再熱衷。

混淆的 Python 腳本
將 Python 腳本打包 .pyc 編譯好的 Mach-O 文件仍然是存在的攻擊媒介,更常見的則是將框架如 Meterpreter 經(jīng)過多次 base64 編碼混淆處理,這就足以繞過許多檢測引擎。

混淆的 Python 腳本
混淆的 Cobalt Strike
Cobalt Strike 在 Windows 平臺非常常見,在 macOS 上出現(xiàn)甚少,但也不是完全沒有。
2021 年 9 月,OSX.Zuru 發(fā)起了供應(yīng)鏈攻擊,針對使用 iTerm2、Mac 版 MS 遠(yuǎn)程桌面、SecureCRT 和 Navicat 14 進(jìn)行投毒。惡意軟件使用 UPX 加殼,解壓后是一個(gè)使用 C 語言編寫的 Mach-O 文件。該可執(zhí)行文件經(jīng)過混淆,包含超過 4 萬個(gè)垃圾函數(shù)。相同的混淆方式,后來也出現(xiàn)在針對 PyPI 的 pymafka 供應(yīng)鏈攻擊中。

混淆的 Cobalt Strike
該混淆技術(shù)能夠通過二進(jìn)制段的熵和哈希中進(jìn)行識別。例如,__cstring 段的 MD5 哈希值為 c5a055de400ba07ce806eabb456adf0a,其熵值也能用于靜態(tài)識別特征:

混淆的 Cobalt Strike
混淆的 AppleScript
AppleScript 一直是被低估的攻擊向量,其在 macOS 系統(tǒng)中的存在時(shí)間甚至比 Python 都要長。最近幾年蘋果公司不再給予其過多的關(guān)注,但仍然通過 TCC 等其他機(jī)制來對其進(jìn)行限制。

混淆的 AppleScript
AppleScript 能夠通過 run-only 選項(xiàng)來生成幾乎不可逆向恢復(fù)的編譯后代碼。在野發(fā)現(xiàn)的惡意軟件中,有使用四字節(jié)十六進(jìn)制字符編碼將一個(gè) run-only 的腳本嵌入到另一個(gè)腳本中。

混淆的 AppleScript
此類腳本無法使用內(nèi)置工具進(jìn)行反編譯,需要進(jìn)行動態(tài)分析或者手動的逆向工程。想要靜態(tài)檢測的話,可以檢測嵌入的十六進(jìn)制字符和標(biāo)記 AppleScript 塊結(jié)尾的 Magic Number:FADE DEAD。
Poseidon 惡意軟件
Poseidon 是攻擊框架 Mythic 的 Golang 版本,可以使攻擊者操縱失陷主機(jī)。最近一次高調(diào)的攻擊,是針對 Rust 開發(fā)社區(qū)的 CreateDepression 供應(yīng)鏈攻擊。

Poseidon 惡意軟件
左側(cè)為源代碼,右側(cè)是反匯編代碼。Poseidon 支持攻擊者與失陷主機(jī)中間發(fā)送與接收文件,還支持獲取按鍵記錄、屏幕截圖并進(jìn)行持久化等。已編譯的 Poseidon 二進(jìn)制文件中的字符串具有獨(dú)特的特征,很容易檢測。
Sliver 惡意軟件
開源框架 Sliver 被在野使用的越來越頻繁,可以通過 DNS、HTTPS、雙向 TLS 和 Wireguard 為攻擊者提供 C&C 信道。
Sliver 二進(jìn)制文件多達(dá) 10MB 甚至更多,盡管 Sliver 本身不支持混淆或加殼,但在野發(fā)現(xiàn)了原始與定制的 UPX 加殼方案。

Sliver 惡意軟件
近期發(fā)現(xiàn)的 macOS 惡意軟件,偽裝成 Apple 軟件更新二進(jìn)制文件并在用戶的 Library LaunchAgents 文件夾中進(jìn)行持久化。該攻擊避免使用任何 Apple 專有軟件,并使用各種免費(fèi)的工具(UPX、MacDriver 與 Platypus)。
結(jié)論
以上介紹的混淆機(jī)制并不是全部,攻擊者也在不斷精進(jìn),研究更多、更先進(jìn)的混淆方式,例如 Pirrit、Adload 與 SliverSparrow 等。
蘋果仍然在嘗試阻止繞過 Gatekeeper 安全設(shè)置的各種下載,預(yù)計(jì)以后會有更多的惡意軟件在初始載荷中就嵌入后續(xù)的 Payload,并且結(jié)合更多的混淆和規(guī)避技術(shù)。















 
 
 













 
 
 
 