macOS惡意軟件駐留技術分析

處理Malware的過程中,發現一個翻譯的文章,還不錯,轉載過來供讀者學習借鑑!

本文分析研究人員之前見過的macOS惡意軟件駐留技術。

不管是加密貨幣挖礦、廣告惡意軟件劫持、或監聽用戶的惡意軟件都有一個共同點:就是需要在終端上實現駐留。在蘋果macOS平臺上,攻擊者有多種方法來實現駐留。下面對研究人員之前見過的macOS惡意軟件駐留技術進行分析。

LaunchAgent

在macOS上實現駐留的最常見方式是通過LaunchAgent。Mac用戶在Library文件夾下都有一個LaunchAgent文件夾,用來指定用戶每次登陸後要執行的代碼。系統還有一個自己的LaunchAgents文件夾。因爲該文件夾是由於macOS自己管理的,默認請求下惡意軟件不會進入該文件夾。

LaunchAgents以property list file的形式來指定要執行的文件,或包含要執行的命令。

因爲用戶LaunchAgents安裝過程中不需要權限,因此這是最簡單也是最常見的駐留方式。但在OSX 10.7 Lion之後版本,用戶默認情況下隱藏了父Library文件夾,使攻擊者更加容易地可以隱藏代理。

用戶可以通過手動檢查的方式來找出該庫,但企業安全解決方案應當監控文件夾的內容,並對寫入該位置的惡意進程進行攔截或發出告警。

LaunchDaemon

LaunchDaemons只存在於計算機或系統級,從技術上講是爲駐留代碼預留的,因爲不與用戶交互,因此對惡意軟件來說是完美的。攻擊者將daemon寫入/Library/LaunchDaemons需要管理員權限。因爲大多數mac用戶都是管理員用戶,所以習慣上會在請求認證時爲軟件提供認證來安裝組件。在下圖中,計算機被三個不同的、惡意LaunchDaemons感染了。

 

因爲LaunchDaemons運行在開始菜單中,因此安全軟件意識到什麼daemon在運行,以及什麼時間寫新的daemon非常重要。作爲System LaunchAgents,System LaunchDaemons是受SIP保護的,所以首先要監控的位置是/Library/LaunchDaemons

不要認爲你認識的標記就不是惡意的。一些指向未簽名代碼的合法LaunchDaemons可能會被一些惡意代碼所替換。比如,Wireshark就說使用了LaunchDaemon /Library/LaunchDaemons/org.wireshark.ChmodBPF.plist
執行未簽名代碼的路徑爲:
/Library/Application Support/Wireshark/ChmodBPF/ChmodBPF
蘋果自己還使用並不會立刻清除的LaunchDaemon:
/Library/LaunchDaemons/com.apple.installer.cleanupinstaller.plist
它指向了可能會被惡意代碼替換的 /macOS Install Data 文件夾中的可執行文件。

有了全新後,攻擊者就可以修改這些property plist的程序參數或指向的可執行文件來獲取駐留。因爲這些程序會以root權限運行,安全解決方案好像也沒有什麼用處。

Profiles

Profiles一般是組織使用,允許IT管理員管理用戶機器,但被惡意軟件作者誤用了。隨着Profiles通過郵件或網站傳播,誘使用戶安裝只是社會工程的一個元素。

配置profiles使用戶使用特定的瀏覽器設置、DNS代理設置、VPN設置。許多其他的payload都有可能使其被濫用。

用戶也可以在System Preferences Profiles面板查看Profiles,管理員也可以枚舉/Library/Managed Preferences文件夾來查看Profiles。但在profiles沒有安裝的系統中是不會存在System Preferences Profiles面板和文件夾的。

Cron

惡意軟件開發者還盯上了有漏洞的cron作業。雖然蘋果已經宣佈新的cron作業要求用戶交互在10.15 Catalina上安裝,但這並不影響攻擊者使用它作爲一種駐留的方法。當用戶已經被誘使安裝了惡意軟件,那麼用戶提示就已經不是一種有效的安全措施了。AdLoad 和Mughthesec惡意軟件就使用惡意cron作業來實現駐留。

20190621165505-439c04ea-9402-1.pnguploading.4e448015.gif轉存失敗重新上傳取消20190621165505-439c04ea-9402-1.pnguploading.4e448015.gif轉存失敗重新上傳取消20190621165505-439c04ea-9402-1.pnguploading.4e448015.gif轉存失敗重新上傳取消

Kexts

內核擴展被合法軟件廣泛用於實現駐留,比如PUP軟件MacKeeper。開源的keylogger logkext也已經出現很多年了,但kexts並不是惡意軟件常用的方法,因爲相對來說比較難創建、缺乏隱蔽性、很容易被移除。

如何找到駐留的Login Items

蘋果對Login Items做出的修改對惡意軟件駐留帶來了新的講話。Login Items很容易就可以通過System Preferences工具進行枚舉,但蘋果的一個新機制可以使安裝的應用程序在登陸時自啓動,即將Login Item加入到bundle中。雖然該機制的目的是讓合法開發者通過app的用戶接口位logIn項目提供控制,廣告惡意軟件和PUP軟件開發人員濫用該機制作爲一種駐留機制,因爲對用戶來說,可靠地枚舉出哪些應用含有login item是很難的。
對普通用戶來說枚舉所有的Login Items很不簡單,但對admin來說就很簡單了,只需要分析下面的文件就可以了:
~/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm

AppleScript & Friends

對AppleScript來說,Apple最有用的工具“swiss army knife”可以提供一些駐留的方法。第一個是使用Folder Actions,允許攻擊者執行代碼,甚至可以遠程讀取內容到內存中。這是一種聰明的無文件惡意軟件攻擊方法。

 

還有一種方法是利用Mail規則來完成駐留,具體是發送給受害者一個精心僞造的郵件來觸發代碼。該方法是靜默的,而且可以繞過許多監測工具。防護者可以通過分析ubiquitous_SyncedRules.plist文件和SyncedRules.plist文件來檢查是否有可疑的mail規則。比如,快遞的bash腳本grep -A1 "AppleScript" ~/Library/Mail/V6/MailData/SyncedRules.plist
可疑枚舉所有調用AppleScripts的Mail規則。然後檢查是否有惡意內容。

Also Ran

rc.commonlaunchd.conf已經不支持在macOS上運行了,在10.9 Mavericks版本之後就移除了對StartupItems的支持。縱然如此,一些老舊的nix tricks仍然在被使用。包括使用jobsperiodics和loginhooks,以及emond服務。

Periodics

Periodics是常被用於駐留的系統腳本,可以計劃每天、每週和每月運行。Periodics的內容保存在文件夾etc/periodic中。

列出每個子文件夾的內容可以看出periodics的標準集。如果沒有發現其他內容,那麼這些內容都是可疑的,應該對其進行檢查。

如下圖所示,uptime腳本可以在沒有用戶交互或通知的情況下每天運行。

 

LoginHooks和LogoutHooks

LoginHooks和LogoutHooks目前已經很少使用了,但在macOS Mojave中仍然是實現駐留的一種很好的方法。從名字就可以看出,當用戶登入或登出的時候這些機制就會運行。

寫這些hook很簡單,但是檢查這些文件是否存在也很簡單。下面的命令就可以返回是否有LoginHook或LogoutHook值的結果:
sudo defaults read com.apple.loginwindow
如果有,就表明這是一個到該腳本的命令或路徑,然後考慮是否進一步調查。

At Jobs

at jobs的知名度就相對低一些了。但是運行一次後,雖然默認是不啓用的,但是也有一些方法可以在系統重啓時運行代碼。單次使用可能並沒有什麼問題,因爲at jobs每次結束都會被重寫,但許多用戶尤其是沒有經驗的管理員可能並不會注意到jobs。
可以通過枚舉/var/at/jobs目錄來檢查計劃任務的at jobs。Jobs的前綴有一個字母a,名字爲十六進制風格,如下圖所示:

Emond

在OSX 10.5 Leopard中,蘋果引入了一種新的名爲emond的登入機制。看起來emond並沒有完全開發完成就被蘋果公司放棄了,但在macOS 10.14 Mojave中仍然是可用的。
2016年,研究人員James Reynolds對emond和其能力進行了綜合型的分析,並得出結論:在perl腳本中登入、運行命令或發送郵件很容易,那麼爲什麼我要用emond而不是腳本呢?
而且很多mac admin可能並不知道該服務,但是對攻擊者來說,管理員不瞭解的駐留機制或許是最好的方法。
監測emond的惡意使用並不難,只需要運行以下腳本就可以了:
/private/var/db/emondClients
管理員也可以很容易地進行檢查來查看攻擊者是否在該位置放置了惡意文件:

因爲emond在很多環境中是沒有合法使用的理由的,所以emondClient目錄中找到的文件都是可疑的。

結論

從上面的分析可疑看出,在macOS中完成駐留有很多的方法。因爲管理員應該多瞭解一些macOS中駐留的方法並及時發現惡意內容,也可以使用一些安全產品來檢測和防止macOS惡意軟件駐留。

翻譯自:
https://www.sentinelone.com/blog/how-malware-persists-on-macos/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章