服務器挖礦病毒的解決方案


記錄一次解決挖礦病毒的過程(進程:susupdate,networkservice)

昨天晚上突然收到阿里雲的警報提醒,服務器又被攻擊,開始還沒當回事,晚上測試的時候發現服務器變的異常卡頓。然后進入后台查看,發現CPU直接飆升到100%.........

service011

1.找出病毒進程

我們使用top命令查看進程運行情況:

(由於當天晚上已經解決,但是忘記截圖保存,下面部分圖片來自於網絡)

se02se0

找到其中CPU占有率較高的進程,可能不同的環境對應的進程名稱不同。

  • 分析病毒的執行腳本
# update.sh文件:
# 由Redis侵入,將本機密碼set到redis中,dump.rdb文件修改為authorized_keys,然后把文件的目錄設置到/root/.ssh下,保證其可以使用 SSH 登錄到服務器。
config.json (挖礦配置)、
sysupdate (XMR 挖礦軟件)、
update.sh (病毒主腳本)、
networkservice(scanner掃描並入侵其他的主機)、
sysguard(watchdog 用於監控並保證病毒的正常運行以及更新)

2.根據進程號找到運行文件的位置

ls -l proc/{進程號}/exe

es03

在我的服務器下,其運行文件均存放於/etc目錄下的。

3.刪除病毒進程

kill -9 進程號

4.刪除病毒文件

在步驟2中,我們已經找到了病毒文件所在的地方,但是如果直接使用rm -rm 可能顯示拒絕操作,沒有權限。

4.1 文件無法正常刪除如何解決?

  • 問題背景

有時候需要修改文件的權限,但是即使在root下使用chmod命令也不一定能成功更改,有時也會遇到Operation not permitted的問題。

一般,Linux下root用戶的權限是最大 (Linux下UID數值越小的用戶,權限越大,可以看到最小值為0,即root用戶)

但是在使用chmod改變文件權限的時候,即使在root用戶下,也會遇到operation not permitted的問題。

其實chmod的底層實現是chattr命令,用此命的功能更為強大,甚至可以鎖定文件,即使root用戶也操作不了此文件。

  • 解決辦法

lsattr可用來查看文件的屬性:

lsattr filename

如果文件屬性中有i與a,或者其中一個,使用chattr命令去掉:

chattr -ia filename

對病毒文件進行刪除:

chattr -i sysupdate
rm -f sysupdate 
chattr -i sysupdates
rm -f sysupdates
chattr -i networkservice
rm -f networkservice
chattr -i sysguard
rm -f sysguard
chattr -i update.sh
rm -f update.sh
chattr -i config.json
rm -f config.json

5.刪除定時任務(重要!!)

這一步一定要做,我第一次刪除后忘記定時任務因為權限問題,沒刪掉,然后隔一段時間又重啟了。

crontab -l   查看定時任務
crontab -r   刪除所有定時任務

也可以直接進入目錄/var/spool/cron下查看定時程序:

se04

這一步直接使用rm -f或者corntab -r可能顯示:cannot remove ‘root’: Permission denied

由於此時我已經是root用戶,然后使用ll命令查看該定時人物的權限,果然無法修改。

  • 嘗試使用chomd修改權限

首先使用chattr -ia filename命令將文件的權限去掉;

直接使用chmod 777 filename,修改完畢后已經得到了權限,但是刪除仍然報錯。

  • 需要對/var/spool/下的文件修改權限
# 清除crontab
cd /var/spool/
chattr -i cron/
crontab -r

6.修改/root/.ssh/authorized_keys文件

攻擊者很聰明,修改了我的authorized_keys文件,可以直接ssh到我的主機,給自己留了后門。

cd /root/.ssh/
chattr -ia authorized_keys
rm -rf authorized_keys

7.修復SElinux和wget、curl指令

感覺真心無語了,把服務器的wget和curl指令給改了,改為了wge和cur。

  • 修改wget和curl
mv /bin/wge /bin/wget
mv /bin/cur /bin/curl
mv /usr/bin/wge /usr/bin/wget
mv /usr/bin/cur /usr/bin/curl
  • 修復SELinux

病毒腳本首先就會嘗試關閉SELinux子系統,我們可以使用getenforce命令查看SELinux狀態。

如果你想要重新打開,可以修改/etc/selinux/config文件將SELINUX=disabled改為SELINUX=enforcing,然后重新啟動服務器。

8.被攻擊的原因

病毒的問題是得到了解決,但是具體是啥東西造成的呢?

居然是Redis!!!

在昨天安裝了redis服務后,忘記開啟登錄密碼,唉。

大概原理分析:

1.redis沒有做任何安全措施,直接暴露在公網,任何redis客戶端都可以直接連接。

2.被惡意的連接連接上后,在他的機器上生成ssh秘鑰,然后set到redis中,最后使用redis的config命令,將默認RDB方式出來的dump.rdb文件修改為authorized_keys,然后把文件的目錄設置到/root/.ssh下。

3.這樣一來,就非常危險了,攻擊者可以直接ssh到你的linux主機,接下來,root賬戶,為所欲為。被挖礦也就不稀奇了。

  • 設置redis的登錄密碼
vi /usr/local/redis/bin/redis.conf

將requirepass yourpassword前的注釋去掉,其中yourpassword是你所設置的密碼。


免責聲明!

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



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