針對某云平臺服務器的“云鏟”挖礦木馬事件分析
時間 : 2021年02月02日 來源: 安天CERT
1、概述
安天CERT聯合哈爾濱工業大學聯合實驗室通過網絡安全監測發現了一起Linux系統挖礦木馬事件。在該挖礦木馬的掃描策略中,以硬編碼的某云平臺網段IP地址作為起始地址。分析人員判定該挖礦木馬對某云平臺服務器存在一定的針對性,安天CERT基于此特點將該事件中的挖礦木馬命名為“云鏟”。
該挖礦木馬運行后通過服務器下載三個文件(主模塊、惡意鏈接庫、開源挖礦程序)。主模塊功能為對掃描到目標進行SSH暴力破解,進而傳播該挖礦木馬;運行下載的挖礦程序進行挖礦;將惡意鏈接庫路徑寫入預加載文件中,實現屏蔽相關命令對惡意文件實體和惡意進程的查找;將SSH公鑰寫入目標系統root用戶.ssh目錄中,實現以root用戶對該系統的長期訪問。主模塊初始階段掃描以其硬編碼的某云平臺服務器IP地址作為起始地址,包括該IP地址的同網段和相鄰網段IP地址,后續隨機掃描外網段IP地址及樣本所在網絡的外網IP地址,同時對內網相關IP進行掃描。
安天CERT通過對該起事件的詳細分析,在報告中給出了相應的檢測、處置和加固方案。
特別致謝:中國科學技術大學網絡信息中心針對本篇報告提供的相關幫助。
目前,安天智甲終端防御系統(Linux版本)可實現對該挖礦木馬的查殺與有效防護。
安天探海威脅檢測系統(PTD)可以在流量中檢測該木馬的傳播,對橫向移動過程中的主機發現行為和端口掃描行為進行檢測。同時支持對各類具有控制能力的協議如SSH、TELNET、RDP等協議的暴力密碼猜解方式進行檢測,有效發現此類橫向移動傳播方式。
2、樣本分析
經分析研判,文件bioset為該挖礦木馬的主模塊,其在目標主機運行后首先針對相關目標進行SSH暴力破解,同時在/root/.ssh/目錄下創建authorized_keys文件,并將SSH公鑰信息寫入其中,以便后續對該目標主機的訪問。其次下載并運行挖礦程序(kthreadd)和新的主模塊(bioset),同時下載了惡意鏈接庫文件(libcurl.so.2.17.0),將該文件寫入/etc/ld.so.preload中,實現針對相關命令的預加載,進而屏蔽這些命令對該挖礦木馬相關文件、進程的查看。
表 2-1挖礦木馬相關文件
文件名 |
hash |
備注 |
bioset |
1EB3662AB4D710EF72450DAC9087A96C |
主模塊 |
kthreadd |
7275D8B380E6FACC7C5420603F2672CC |
由開源挖礦程序xmrig修改而來 |
libcurl.so.2.17.0 |
F8F745BC28CF24170B422F9B209BEACB |
惡意鏈接庫文件 |
authorized_keys |
A4BCD006B681D3EF99C3C28BE376116E |
攻擊者SSH公鑰 |
2.1 主模塊分析
2.1.1 下載惡意文件bioset ,kthreadd,libcurl.so.2.17.0
表 2-2主模塊樣本標簽
病毒名稱 |
Trojan/Linux.BitCoinMiner |
原始文件名 |
bioset |
MD5 |
1EB3662AB4D710EF72450DAC9087A96C |
文件格式 |
BinExecute/Linux.ELF |
文件大小 |
1.42 MB (1,490,328 字節) |
數字簽名 |
無 |
加殼類型 |
upx |
VT首次上傳時間 |
無 |
該模塊連接到遠程服務器http://www.fullskystar.top,該域名注冊時間為2020年10月14日,通過POST請求指定參數,下載文件。
表 2-3 提交參數
參數 |
所下載文件 |
{ "key": "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF", "info": "2FB42DEF495B310F" } |
kthreadd |
{ "key": "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF", "info": "2D1468E16B0C19D6" } |
bioset |
{ "key": "0FC2C00124A496A2D8EC43F60CDA466026E646214A2ACAF6E0C9BF43D44C388A93CA18CDAD5B13D190F084EE023A318CD3842279CEE44616F173F04F4EFBC2DF", "info": "002A04B9C955C4F1" } |
libcurl.so.2.17.0 |
2.1.2 添加攻擊者的SSH公鑰,達到長期控制該系統的目的
圖 2-1 將密鑰信息寫入文件
攻擊者公鑰:
SSH-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAv54nAGwGwm626zrsUeI0bnVYgjgS/ux7V5phklbZYFHEm+3Aa0gfu5EQyQdnhTpo1adaKxWJ97mrM5a2VAfTN+n6KUwNYRZpaDKiUwmHNUSW7E1S18ClTCBtRsC0rRDTnIrslTRSHlM3cNN+MskKTW/vWz/oE3ll4MMQqexZlsLvMpVVlGq6t3XjFXz0ABBI8GJ0RaBS81FS2R1DNSCb+zORNb6SP6g9hHk1i9V5PjWNqNGXyzWIrCxLc88dGaTttUYEoxCl4z9YOiTw8F5S4svbcqTTVIu/zt/7OIQixDREGbddAaXZXidu+ijFeeOul/lJXEXQK8eR1DX1k2VL+w== rsa 2048-040119
2.1.3 使用內置的密碼表對其它IP進行SSH暴力破解,用戶名為root,傳播挖礦木馬。
圖 2-2 利用密碼表進行SSH暴力破解
該挖礦木馬使用密碼表對相關網段IP進行SSH暴力破解,密碼數量共計2000多個,部分如下。
圖 2-3 部分密碼表
2.1.4 主要針對某云平臺相關主機進行SSH暴力破解
在挖礦木馬母體中存在一個硬編碼的IP地址:8.129.*.*,該IP地址隸屬于廣東省深圳市某云平臺。其SSH暴力破解對象主要以該IP地址作為起始地址,包括其同網段和相鄰網段的IP。而IP地址8.129.0.0-8.129.255.255的范圍隸屬于某云平臺。
圖 2-4 某云平臺服務器網段掃描
其中還針對內網、樣本所在的外網IP以及部分境外網段進行IP掃描。
圖 2-5 境外網段掃描
2.2 挖礦程序分析
表 2-4 挖礦程序
病毒名稱 |
RiskTool/Linux.BitCoinminer |
原始文件名 |
kthreadd |
MD5 |
7275D8B380E6FACC7C5420603F2672CC |
文件格式 |
BinExecute/Linux.ELF |
文件大小 |
1.21 MB (1,274,136 字節) |
數字簽名 |
無 |
加殼類型 |
upx |
VT首次上傳時間 |
2020-12-28 11:17:40 |
VT檢測結果 |
19 / 62 |
挖礦程序(kthreadd)運行后連接礦池地址www.fullskystar.top:443進行挖礦。挖礦程序使用upx殼進行了壓縮,由開源挖礦程序xmrig修改而來,在此不做詳細分析。配置信息如下:
圖 2-6 挖礦程序配置信息
2.3 惡意鏈接庫分析
表 2-5 惡意鏈接庫
病毒名稱 |
RiskTool/Linux.BitCoinminer |
原始文件名 |
libcurl.so.2.17.0 |
MD5 |
F8F745BC28CF24170B422F9B209BEACB |
文件格式 |
BinExecute/Linux.ELF |
文件大小 |
26.4 KB (27,112 字節) |
數字簽名 |
無 |
加殼類型 |
無 |
VT首次上傳時間 |
2020-12-09 03:10:30 |
VT檢測結果 |
3 / 63 |
該惡意程序為動態鏈接庫文件,通過LD_PRELOAD方式被加載。主要功能是將惡意文件實體和相關的網絡鏈接進行隱藏,當用戶使用ls和netstat等命令進行查看時,無法發現惡意文件的存在。對4個字符串ld.so.preload、bioset、kthreadd和libcurl.so.2.17.0進行過濾。
圖 2-7 惡意鏈接庫屏蔽的相關信息
當使用命令top,htop命令查看進程,使用命令w查看登錄用戶,使用uptime查看使用時間,使用ss,netstat查看網絡操作時,如果存在上面4個字符串,則不進行顯示,隱藏惡意文件相關信息。
圖 2-8 惡意鏈接庫注入的相關命令文件
3、檢測、處置與加固方案
3.1 檢測
使用安天智甲終端防御系統(Linux版本)在主機側檢測。
圖 3-1 安天智甲檢測結果
使用安天探海威脅檢測系統(PTD)在網絡側檢測。
圖 3-2 安天探海檢測下載挖礦程序報警
圖 3-3 安天探海檢測SSH暴力破解
網絡手動檢測方法:
網關或流量鏡像處Linux系統上執行如下命令進行檢測,短時間內觀察是否有異常的SYN數據包來發現類似的對外掃描:
tcpdump -i < interface> -nn "tcp port 22 and ((tcp[tcpflags]&(tcp-syn)!=0)&&(tcp[tcpflags]&(tcp-ack)==0))"
圖 3-4 流量檢測
3.2 處置
由于該挖礦木馬通過預加載惡意鏈接庫,給處置帶來一定阻礙,清除過程復雜。具體方法如下:
首先,安裝busybox,利用該命令結合ps、kill命令結束路徑為“/usr/bin/bioset”、“/usr/bio/kthreadd”的進程;其次,將下列文件只讀屬性去除。并將/etc/ld.so.preload文件內容置空;最后刪除下列文件中除/etc/ld.so.preload文件之外的四個文件,以上操作完成后,可在此確認相關文件是否正常刪除,若刪除完畢,則完成該挖礦木馬的清除。
/etc/ld.so.preload
/lib/libcurl.so.2.17.0
/usr/bin/kthreadd
/usr/bin/bioset
/root/.ssh/authorized_keys
以下代碼為清除該挖礦木馬的shell腳本代碼,該代碼僅在Centos7中測試,未在其他系統上測試,請參考使用。(若刪除root用戶的authorized_keys文件會影響實際業務,可手工刪除木馬寫入的攻擊者公鑰。)
#!/usr/bin/bash
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 && mv busybox-x86_64 busybox && chmod +x busybox && mv busybox /usr/bin/
busybox ps -ef |grep /usr/bin/kthread |grep -v color |awk '{print $1}'| xargs busybox kill
busybox ps -ef |grep /usr/bin/bioset |grep -v color |awk '{print $1}'| xargs busybox kill
busybox chattr -i /etc/ld.so.preload
busybox echo "" >> /etc/ld.so.preload
busybox chattr -i /usr/bin/kthreadd
busybox rm -rf /usr/bin/kthreadd
busybox chattr -i /usr/bin/bioset
busybox rm -rf /usr/bin/bioset
busybox chattr -i /root/.ssh/authorized_keys
busybox rm -rf /root/.ssh/authorized_keys
busybox chattr -i /lib/libcurl.so.2.17.0
busybox rm -rf /lib/libcurl.so.2.17.0
3.3 加固
1. 建議更換root用戶密碼,密碼位數至少為15位,密碼元素至少包含三種元素(大小寫字母,數字,符號)。
2. 建議在不影響業務的情況下,root用戶盡量不對外提供遠程訪問,可使用其他自定義用戶對服務器進行遠程維護和管理。