安全運維 | TeamTNT挖礦木馬應急溯源分析
在前一周的時間里,客戶有遇到被TeamTNT入侵挖礦的案例。但由于客戶在沒有給被入侵主機做快照的情況下,回滾了之前的快照,導致無法進一步入侵溯源排查。
因此在騰訊云公網上上搭建了redis未授權的漏洞環境并在控制臺安全組放行端口。隨后很短時間內便收到了云鏡的告警通知。
0x01 確定最早入侵時間點
通常根據云鏡的告警短信,基本可以確定最早入侵時間點。這對于后續的溯源分析非常重要。

因為在該主機上是我提前搭建好的redis漏洞環境,所以是通過redis入侵的。查看reids的相關日志確定對應時間有寫入文件的操作。

0x02 快照備份,及時止損
收到告警后第一時間對被感染的主機做了快照備份,當然不清楚感染的是挖礦還是勒索的情況下,最好還是先關機處理。畢竟應急響應的核心點是及時止損。
先給出分析結論,TeamTNT挖礦家族主要通過兩種方式入侵:
對外掃描6379端口redis未授權入侵寫入定時任務 讀取本機~/.ssh/authorized_keys文件橫向入侵
0x03 清理定時任務
linux下對應的幾個定時任務的文件位置都需要排查是否被寫入惡意命令。

0x04 清理挖礦相關進程
然后上機排查,發現cpu占用非常高,進程名為[ext4]。在linux通常系統進程外面會帶有[],猜測這里是為了混淆視聽,將挖礦的進程名帶上括號。
幾分鐘后使用top命令查看,發現挖礦進程不見了,但是系統依舊很卡。猜測做了進程隱藏或對命令劫持等手段。

被劫持的top命令
清理思路:換用busybox來查看進程。
發現命令找不到或者被替換后,在不清楚挖礦病毒對哪些命令做了什么修改的情況下,可以直接使用busybox代替系統命令。這里在curl和wget都無法使用的情況下,可以換lrzsz或者scp等其他方式傳一個busybox上去。
使用busybox可以發現一個是挖礦進程,另一個是pnscan掃描進程。直接kill進程后會馬上再起一個,所以用busybox先把源文件刪除后再殺進程。

busybox top

在清理掉挖礦進程后,cpu占用會減少,方便后續的操作。同時已經清理了cron定時任務后不會一段時間后又重啟挖礦。
0x05 根據入侵時間點排查修改的文件
根據云鏡告警的命令執行時間,通過find命令查找最近被修改過的文件。

通過排查入侵時間點被修改的文件,可以分析挖礦木馬的一些行為特征。特別是對于一些隱藏文件,或者容易被混淆的路徑文件夾。
比如圖中的 /var/tmp/…/dia/,…是隱藏的文件夾,很容易被忽略掉。

與此同時,賬戶下的其他主機由于配置的ssh密鑰也被橫向入侵了。相繼收到告警短信,提示執行高危命令。上機查看ssh登錄日志排查對應時間段,通過另一臺被入侵主機ssh密鑰連接過來的。

云鏡發出告警后,云鏡控制臺提示已離線,此時云鏡已經被卸載掉了。從騰訊云控制臺來看,連主機監控組件也一起被干掉了。所以被入侵后,從云鏡也只能拿到很少的有效信息。

0x06 查看主機網絡狀態
netstat查看網絡請求發現大量對外發起了6379端口的掃描。這個是由pnscan發起的對外掃描,pnscan進程清理掉即可。

被入侵后在iptables中發現添加了規則,禁止外網訪問僅允許本機訪問6379端口。避免redis再被其他人入侵。

0x07 修復被替換的命令及權限
查找缺失或被替換的命令:使用rpm -Va

用rpm比對被修改過的命令。missing表示命令找不到了,5代表MD5發生了改變,有可能對應的命令文件被替換或有修改。M則表示命令的權限發生了修改。
具體每個值的含義如下:
S 文件大小是否改變 M 文件的類型或文件的權限(rwx)是否被改變 5 文件MD5校驗是否改變(可以看成文件內容是否改變) D 設備中,從代碼是否改變 L 文件路徑是否改變 U 文件的屬主(所有者)是否改變 G 文件的屬組是否改變 T 文件的修改時間是否改變

命令文件權限被修改

wget和curl命令缺失
對于缺失的命令比如wget和curl,實際上是被重命名了。但是不清楚的情況下直接reinstall即可。對于系統命令可以使用yum whatprovides command 來查詢對應的包名,以ps命令為例。

ps命令被替換或修改過,想要恢復命令就可以使用yum reinstall procps-ng -y。

0x08 清理挖礦后門
命令修復之后,檢查挖礦腳本留下的后門公鑰和賬戶。

清理的時候會發現,很多文件都使用了chattr不讓其刪除。

像這樣的文件往往有很多,配合上面的find命令可以將特定時間內的文件全部取消掉這些權限。

上面這些在入侵時間點發生過修改的文件,都需要檢查是否被寫入惡意命令。清理掉對應的惡意文件,此時入侵排查的大部分步驟已完成。
0x09 排查相關可疑文件

同時使用find命令發現在/根目錄下面有大量的以.r開頭隱藏文件。這些都是挖礦木馬對外掃描存在6375端口開放的ip。

經測試這里大部分是其他的肉雞,或者是對外開放了6379端口,但redis運行在低權用戶,無法被直接提權利用。
0x10 修復漏洞,加固系統
經過上面溯源分析,確定了存在漏洞的系統組件。在清理完成之后,需及時修復相關的漏洞,避免再次被入侵。本文的redis為例,修復建議:
redis使用密碼連接,并設置一定強度的密碼。 使用低權用戶運行redis 將默認redis的6379端口改為其他端口。
0x11 挖礦木馬特征行為分析
TeamTNT木馬的整體攻擊流程如下圖所示:

TeamTNT的橫向傳播途徑如圖:
