MacOS 上常見的七種混淆技術
MacOS 平臺的威脅日漸增多,攻擊者也越來越重視針對該平臺的用戶的攻擊,本文將會介紹七種 macOS 上常見的混淆技術。
混淆的 Shell 腳本
Shell 腳本可能是 Linux 平臺下最常見的惡意文件,在 macOS 上也不遑多讓。許多惡意軟件都將 Shell 腳本作為應用程序中的可執行文件,如下所示。
混淆的 Shell 腳本
也有攻擊者直接將腳本內置在鏡像文件中,通過別名來誘導用戶執行:
文件中的腳本
在安裝鏡像文件時,會看到教育用戶打開惡意軟件并繞過內置的 Gatekeeper 安全機制。
提示信息
要求用戶點擊的安裝 PKG 圖標其實是一個隱藏目錄中的 Shell 腳本的別名,名稱為 .hidden。該腳本經過輕微混淆,在 /tmp 目錄下使用隨機 12 個字符創建一個目錄后,會完成去混淆執行并刪除從同一目錄中的數據文件中提取的可執行文件:
混淆的 SHC
Shell Script Compiler 是將 Bash 腳本編譯生成可執行文件的技術,盡管這些可執行文件并不能做到完全獨立,仍然需要執行環境中包含指定的 Shell。
Shell Script Compiler
SHC 的 -U 參數可以使編譯后的二進制文件無法使用 ptrace 進行跟蹤,-e 參數支持設置程序終止運行的到期日期。如果使用不同的 -e 參數,相同的腳本就可以生成不同哈希的二進制文件。
Shell Script Compiler
SHC 被 SCSSET 惡意軟件大量使用,在野能夠持續發現相關樣本。從攻擊者的角度來看,使得編寫無法通過靜態分析讀取的惡意腳本變得非常簡單。而且,通過 -e 參數還能夠無限生成不同哈希值的樣本文件。
Shell Script Compiler
發現 SHC 編譯的二進制文件,唯一的方法就是通過沙盒執行觀察其行為。靜態檢測發現 SHC 編譯的二進制文件時可以將其認為是可疑的,編譯器生成的獨特字符串也利于檢測,但實際上只有通過執行才能準確區分是否惡意。
混淆的 Python 腳本
蘋果公司已經在 Monterey 12.3 及更高版本的 macOS 設備上取消了對 Python 2.7 的支持,所以針對 macOS 平臺的攻擊者已經對 Python 不再熱衷。
混淆的 Python 腳本
將 Python 腳本打包 .pyc 編譯好的 Mach-O 文件仍然是存在的攻擊媒介,更常見的則是將框架如 Meterpreter 經過多次 base64 編碼混淆處理,這就足以繞過許多檢測引擎。
混淆的 Python 腳本
混淆的 Cobalt Strike
Cobalt Strike 在 Windows 平臺非常常見,在 macOS 上出現甚少,但也不是完全沒有。
2021 年 9 月,OSX.Zuru 發起了供應鏈攻擊,針對使用 iTerm2、Mac 版 MS 遠程桌面、SecureCRT 和 Navicat 14 進行投毒。惡意軟件使用 UPX 加殼,解壓后是一個使用 C 語言編寫的 Mach-O 文件。該可執行文件經過混淆,包含超過 4 萬個垃圾函數。相同的混淆方式,后來也出現在針對 PyPI 的 pymafka 供應鏈攻擊中。
混淆的 Cobalt Strike
該混淆技術能夠通過二進制段的熵和哈希中進行識別。例如,__cstring 段的 MD5 哈希值為 c5a055de400ba07ce806eabb456adf0a,其熵值也能用于靜態識別特征:
混淆的 Cobalt Strike
混淆的 AppleScript
AppleScript 一直是被低估的攻擊向量,其在 macOS 系統中的存在時間甚至比 Python 都要長。最近幾年蘋果公司不再給予其過多的關注,但仍然通過 TCC 等其他機制來對其進行限制。
混淆的 AppleScript
AppleScript 能夠通過 run-only 選項來生成幾乎不可逆向恢復的編譯后代碼。在野發現的惡意軟件中,有使用四字節十六進制字符編碼將一個 run-only 的腳本嵌入到另一個腳本中。
混淆的 AppleScript
此類腳本無法使用內置工具進行反編譯,需要進行動態分析或者手動的逆向工程。想要靜態檢測的話,可以檢測嵌入的十六進制字符和標記 AppleScript 塊結尾的 Magic Number:FADE DEAD。
Poseidon 惡意軟件
Poseidon 是攻擊框架 Mythic 的 Golang 版本,可以使攻擊者操縱失陷主機。最近一次高調的攻擊,是針對 Rust 開發社區的 CreateDepression 供應鏈攻擊。
Poseidon 惡意軟件
左側為源代碼,右側是反匯編代碼。Poseidon 支持攻擊者與失陷主機中間發送與接收文件,還支持獲取按鍵記錄、屏幕截圖并進行持久化等。已編譯的 Poseidon 二進制文件中的字符串具有獨特的特征,很容易檢測。
Sliver 惡意軟件
開源框架 Sliver 被在野使用的越來越頻繁,可以通過 DNS、HTTPS、雙向 TLS 和 Wireguard 為攻擊者提供 C&C 信道。
Sliver 二進制文件多達 10MB 甚至更多,盡管 Sliver 本身不支持混淆或加殼,但在野發現了原始與定制的 UPX 加殼方案。
Sliver 惡意軟件
近期發現的 macOS 惡意軟件,偽裝成 Apple 軟件更新二進制文件并在用戶的 Library LaunchAgents 文件夾中進行持久化。該攻擊避免使用任何 Apple 專有軟件,并使用各種免費的工具(UPX、MacDriver 與 Platypus)。
結論
以上介紹的混淆機制并不是全部,攻擊者也在不斷精進,研究更多、更先進的混淆方式,例如 Pirrit、Adload 與 SliverSparrow 等。
蘋果仍然在嘗試阻止繞過 Gatekeeper 安全設置的各種下載,預計以后會有更多的惡意軟件在初始載荷中就嵌入后續的 Payload,并且結合更多的混淆和規避技術。