關於威脅情報處理週期模型
「威脅情報處理週期」(F3EAD)一詞源自於軍事,是美陸軍為主戰兵種各級指揮官設計的組織資源、部署兵力的方法。網路緊急應變中心借鏡這套方法,分成以下六個階段處理威脅情報資訊:
威脅情報處理週期F3EAD
某月某日,部署在合作方公有雲端伺服器上的「洋蔥「系統警告發現疑似木馬程序,於是應急響應團隊快速啟動應急相應流程:
幹係人等一鍵拉群,電話接入。
受害系統隔離待查。
安全系統、稽核日誌匯出待溯源分析。
業務系統架構、程式碼相關資料準備,待分析入侵突破口及受影響範圍
根據安全系統的審計記錄發現,惡意文件目錄存在另一個*.ko文件,而此文件是透過scp從另一伺服器傳過來。
由此可見,攻擊者先拿到某個存在弱點的伺服器權限,然後再跳轉scp木馬檔案到包括目前受害機在內的透過已攻陷的伺服器可存取的機器,並安裝控制。
接下來咱們重點分析這組木馬文件,根據AV廠商的命名規則(附錄1),暫為其命名為"Backdoor:Linux/Rmgr!rookit",其中「rmgr」來至木馬程式碼中多個函數用了rmgr前綴。
2.1. 木馬檔案
目前已經掌握的木馬檔案分成四部分,其功能簡單描述如下:
2.2 木馬工作流程
木馬從植入到運行,包括後續可能的滲透活動都採用了各種技術進行隱藏,如果沒有安全系統則很難發現。同時,該木馬也做了很多對抗,常規的安全監測能力未必可以發現。其運作流程簡要描述如下圖:
#木馬工作流程
2.3 木馬各部份主要功能
1. rmgr.ko
rootkit採用常見的LKM核心模組。下面逐一列舉此rootkit載入後的主要操作。
1)proc_create_data建立虛擬檔案/proc/.dot3,用於後續與木馬用戶態進程互動;
2) register_kprobe註冊4個kp結構體:
kp_kallsyms_lookup_name\krp_alloc_pid\kp_do_exit\kp_seq_path,用於透過kprobe來搶先在系統執行到這些函式的時候抹除對木馬程序的動作;
#kp#註冊的處理函數,fake_seq_path用來摘除核心程序鍊錶; 4) 當系統有讀取「/proc/net/tcp」檔案的時候,由fake_seq_show處理,抹除木馬網路連線; 5) 在fake_sys_getdents中patch vfs_readdir,抹除所有與木馬相關的資訊; #6) 當系統對木馬相關檔案存取的時候,會由fake_filldir處理,根據判斷呼叫者是否木馬操作來決定是否回傳正確結果; 7 ) 在核心模組鍊錶中刪除自己,kobject_del刪除自己的核心物件; #8) kthread_create建立核心執行緒dot_thread##建立核心模組自啟動/etc/sysconfig/modules/ati_remote3.modules寫入核心模組檔案/lib/modules/%s/kernel/drivers/input/misc/ati_remote3. ko釋放rmgr_fake_libc.so檔案到磁碟釋放rmgr_daemon檔案到磁碟,並以「[khelper]」進程名稱透過call_usermodehelper_exec運行它。
2. rmgr__fake_libc.so
此共用程式庫文件,由核心rootkit釋放寫入磁碟,路徑為/tmp/.tmp_{21個隨機字母數字},用於木馬的使用者態進程的行為隱藏。
subhook前綴的函數摘抄自開源程式碼(附錄2),詳細功能請移步github圍觀,本文不贅述。
fake前綴的函數主要用於對抗常見HIDS的進程和命令記錄,fork和execve直接透過syscall調用,而不使用glibc的封裝,避開了hook glibc方式的HIDS。
fake_bash_add_history則讓bash指令稽核功能失效。
3. rmgr_daemon
#此程序由rmgr.ko釋放寫入磁碟,路徑為/tmp/.tmp_{21個隨機字母數字}。由C 開發,編譯後upx加殼壓縮,直接用開源軟體upx -d rmgr_daemon即可脫殼,並無特殊處理。
它主要有的功能有:
1) 監控核心模組狀態,與核心rootkit資訊互動;
2) 更新;
3) 產生rmgr_fake_sshd,並且patchELF,修改依賴的動態函式庫,也就是加入rmgr_fake_libc.so,功能如前述;
##從核心取得路徑
#返迴路徑
patch ELF4) 連接C2 hm2.yrnykx.com;5) 管理rmgr_fake_sshd;
#其中patchELF程式碼摘錄自GitHub - NixOS/patchelf (附錄3)4. rmgr_fake_sshd
檔案由rmgr_daemon寫入磁碟,路徑為/tmp/.tmp_{ 21個隨機字母數字},它的運作均由rmgr_daemon管理。 作為後門它硬編碼了PRIVATE KEY ,如下圖:#因為透過patchELF hook了部分函數,實現了ssh登入之後的命令執行等行為的隱匿。而rmgr_fake_sshd本身,以及ssh登入派生的子程序均透過rmgr.ko根據前述分析透過patch核心呼叫實現隱匿。 rmgr_fake_sshd啟動時載入了硬編碼的sshd_config,請注意其中幾個關鍵配置。監聽在本地的26657端口,rmgr_daemon連接此端口轉發來至C2的ssh指令。這裡實作了擬合業務環境常用網路協議,使得常規的NIDS的偵測邏輯被繞過。
突破口加固,補丁更新,ACL加固。 維運通道,停用舊帳戶,修改攻擊連結中伺服器帳戶,並上雙重認證。 根據使用者角色限定可存取系統範圍。 受害系統dump保存虛機鏡像,待查。 重裝受害系統,重新發布部署業務環境。 新系統核心模組載入要求簽名校驗。
威脅情報金字塔模型
1. iocs
1) md5:
7d859a22f38f0bcd55a46bc8b67c40df
fa73b2fd914a0cfd5e7d#21
#fa73b2fd914a0cfd5e7d#2110hm2.yrnykx.com
2. ttps第五步:分析
粗略的分類其隱匿(進程、網路、檔案)手段有:
C2透過fake_sshd避開NIDS的偵測;透過patchELF繞過hook libc的命令審計HIDS;
透過fake_bash_add_history讓shell審計失效;
透過patch seq_show修改系統對/proc下檔案資訊讀取的返回,實現對木馬相關的檔案、進程、網路連接資訊的隱匿;
透過patch vfs_readdir實現隱藏木馬檔案;
透過摘除內核進程、模組鍊錶訊息,避免被rookit偵測工具發現核心中木馬痕跡;
可見,此木馬套裝存在大量技術細節來對抗安全系統,不過它主要針對市面上已知的一些舊款HIDS和事後取證調查工具。核心態的進程派生syscall hook和inotify 雲端查殺還是可以發現它的。
木馬與安全系統的對抗維度
一套完整的木馬系統不可能僅僅因為一次滲透入侵而開發,必然會借鑒很多開源或者家族代碼。所以從溯源角度來說,可以做程式碼「考古」工作,同時將相關程式碼風格和木馬行為納入安全系統特徵庫。限於篇幅,暫不在此贅述。
第六步:傳播F3EAD週期的分析階段(迭代)
從冰冷的情報到落地到我們安全系統安全能力的提升,這才實現了威脅情報的真正價值。
以上是如何進行基於威脅情報週期模型的APT木馬剖析的詳細內容。更多資訊請關注PHP中文網其他相關文章!