服務(wù)器被入侵(疑似挖礦病毒)處理
?
一圣猎、環(huán)境介紹:
系統(tǒng):ubuntu 18.04
內(nèi)存:128G?
硬盤:500G(操作系統(tǒng)盤)+15T(數(shù)據(jù)盤)
a另锋、查看物理CPU個(gè)數(shù)
root@ubuntu:~# cat /proc/cpuinfo| grep"physical id"| sort| uniq| wc -l
2
b浇揩、查看每個(gè)物理CPU中core的個(gè)數(shù)(即核數(shù))
root@ubuntu:~# cat /proc/cpuinfo| grep"cpu cores"| uniq
cpu cores????? :16
c、查看邏輯CPU總的個(gè)數(shù)(利用超線程技術(shù)實(shí)現(xiàn)匾嘱。2個(gè)物理CPU饺谬;2x16=32核;每核2線程:32x2=64線程)
root@ubuntu:~# cat /proc/cpuinfo| grep"processor"| wc -l
64
d冬殃、查看總線程數(shù)囚痴,可以理解為總邏輯cpu的數(shù)量
root@ubuntu:~# grep 'processor' /proc/cpuinfo| sort -u | wc -l
64?
e、查看? CPU型號(hào)
內(nèi)核:Linux ubuntu4.15.0-147-generic #151-Ubuntu SMP Fri Jun 18 19:21:19 UTC 2021 x86_64 x86_64x86_64 GNU/Linux
64?Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz? (利用超線程技術(shù)實(shí)現(xiàn)的64個(gè)邏輯CPU)
?文章主題之外補(bǔ)充:KVM审葬、VMwre等等虛擬化深滚,應(yīng)該分配幾顆CPU 是以總核數(shù)來確定的(如上16x2=32核)奕谭,不是以邏輯(線程數(shù))CPU 的數(shù)量來確定。
?
二痴荐、服務(wù)器狀態(tài)排查一
1血柳、如下圖可見,%CPU?us:用戶占用cpu(用戶CPU使用率)達(dá)到了50%生兆,(us是用戶CPU 使用率难捌,便于理解:CPU 分為用戶態(tài)和內(nèi)核態(tài),所以也分為用戶CPU占用率鸦难、系統(tǒng)CPU 占用率(用戶:就是在操作系統(tǒng)之上運(yùn)行的各種應(yīng)用軟件根吁;系統(tǒng):就是在操作系統(tǒng)本身),理解可參考:https://www.cnblogs.com/bailongcaptain/p/12397679.html)明刷。
?引用:之前看到過一篇文章介紹說:只要是跑著的線程婴栽,那么都是占用CPU的線程,如果一個(gè)進(jìn)程有多個(gè)線程在同時(shí)運(yùn)行辈末,那么cpu占滿是不可能的愚争,每個(gè)線程本來就是會(huì)被操作系統(tǒng)分配時(shí)間片的。舉個(gè)例子:如果3個(gè)線程同時(shí)運(yùn)行挤聘,那么只有問題線程所使用的30%是滿的轰枝,3個(gè)線程同時(shí)都是問題線程的概率是很小的(但不是沒有可能),所以cpu總體使用率可能是50%以上组去,但不可能達(dá)到100%鞍陨,遇到問題進(jìn)程,這個(gè)首先得看是不是程序占得cpu从隆,這個(gè)還是可以top一下诚撵,查看性能監(jiān)測(cè)器,確定是某個(gè)程序的話键闺,可以通過windbg抓dump進(jìn)行分析寿烟。然后聽到了一個(gè)感覺會(huì)有些燒腦的名詞——線程監(jiān)控,把內(nèi)部線程和系統(tǒng)線程id結(jié)合辛燥,可能會(huì)在調(diào)試狀態(tài)下查看CPU使用率筛武,然后找到哪個(gè)函數(shù)CPU占用過高這么個(gè)場(chǎng)景會(huì)用到。備注:在我的環(huán)境中達(dá)到50% 服務(wù)器并不卡挎塌,可能在高點(diǎn)達(dá)到70~80%就會(huì)卡了徘六。
?在我這個(gè)場(chǎng)景下,第一張圖:用戶CPU占用率達(dá)到了50%左右榴都,Load average 負(fù)載達(dá)到了32左右,CPU總核數(shù)也是32
第二待锈、三張圖就能清晰的看到? ? ? CPULoad average 達(dá)到了32左右
top 命令后按“1“:
2、心里想:CPU load average 負(fù)載這么高嘴高,可能是磁盤IO出問題的時(shí)候炉擅,CPU都等著向磁盤寫數(shù)據(jù)呢辉懒,或者磁盤有壞道,寫的慢谍失,CPU任務(wù)執(zhí)行不完眶俩,就一直處于等待的狀態(tài),所以導(dǎo)致的負(fù)載這么高快鱼,排查iowait信息颠印,如下顯示:磁盤IO是正常的。
3抹竹、排查定時(shí)任務(wù)crontab中任務(wù)腳本线罕,以及硬盤使用情況,內(nèi)存使用情況窃判,也都未發(fā)現(xiàn)異常钞楼。
4、列出進(jìn)程id, 線程id和cpu占有率袄琳,同時(shí)按照cpu占有率排序
root@ubuntu:/etc#psH -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
以為用這個(gè)命令可以把隱藏的進(jìn)程都顯示出來询件,是我年輕了!K舴宛琅!
5、排查網(wǎng)絡(luò)逗旁,服務(wù)器連接的IP以及監(jiān)聽的端口是否異常嘿辟,并使用ifconfig查看網(wǎng)卡收發(fā)的流量情況
6、排查/etc/passwd???是否有可疑用戶或者登錄的權(quán)限設(shè)置有問題(就不附圖片了)
?
7片效、排查/var/log/message??用戶登錄記錄红伦,我這用的是vim打開,里面的記錄也都被清空了淀衣,此時(shí)還沒有意識(shí)到/var/log下文件的重要性色建,這讓我很后悔,原因嘛舌缤,等下就曉得了。
思路小結(jié):以上排查后某残,偏偏CPU占用率很高国撵,其他的很正常,這不符合邏輯呀!!!
附上此時(shí)內(nèi)心獨(dú)白:真TM奇了怪了!!! 到底是個(gè)啥導(dǎo)致的CPU占用率這么高玻墅?介牙??要么就等他自己爆吧澳厢,反正又不能重啟环础;心里又想囚似,難得遇到這么個(gè)場(chǎng)景,重啟此時(shí)的服務(wù)器環(huán)境就沒有了线得,問題始終要解決饶唤,鼓著上吧。
?
三贯钩、服務(wù)器排查二
1募狂、重點(diǎn):以上的排查這是部分的排查,要想找到問題所在角雷,還是要耐住性子祸穷,雖然知道服務(wù)器里面有那么多的文件,遇到的問題就在這么多文件的其中勺三,但是解決的途徑也是在其中雷滚。
2、突然想到:一開始的/var/log/message 是直接用 vim 打開看的吗坚,并沒有把/var/log下的所有的文件都看過祈远,要不把?/var/log下的所有文件都看一遍,哈哈哈刻蚯,這可能是真是運(yùn)氣绊含,在/var/log/syslog里面盡然有很多的報(bào)錯(cuò)是關(guān)于SSH服務(wù)的,SSH服務(wù)一直在不斷的重啟炊汹,并且一直在調(diào)度分配新的job去執(zhí)行重啟躬充,懷疑可能是一直就是因?yàn)檫@個(gè)原因?qū)е碌腃PU占用率這么高;并且查看狀態(tài)一直有ip在暴力破解密碼讨便,同時(shí)也統(tǒng)計(jì)了一下密碼被暴力破解的次數(shù):有12萬多充甚。我們的密碼我感覺設(shè)置的也很簡單,感覺都經(jīng)受不了這么多次的嘗試霸褒。(別人設(shè)置的伴找,我的話最起碼十位數(shù)起步,大小寫废菱,特殊字符)
activating(start) 這個(gè)狀態(tài)是不正常的技矮。
3、排查了ssh服務(wù)的配置文件/etc/ssh/sshd_config 文件殊轴,里面沒有問題衰倦,手動(dòng)重啟了一遍,仍然是activating(start)這個(gè)錯(cuò)誤的狀態(tài)旁理,打算重做SSH服務(wù)
4樊零、重裝SSH 服務(wù),遇到了新的問題:
問題1孽文、Errors were encountered whileprocessing
問題2驻襟、The following packages have unmet dependencies:
?openssh-server : Depends: openssh-client (=1:7.2p2-4ubuntu2.8)
????????????????? Depends: openssh-sftp-serverbut it is not going to be installed
問題3:dpkg:erro processing package openssh-server(--configure) installed openssh-server package post-installation scriptsubprocess returned error exit status 1 errors were encontered while processing
問題4:dpkg: error processing package openssh-server (--configure):
?subprocess installed post-installation scriptreturned error exit status 10
Errorswere encountered while processing:
問題5:等等一連串的依賴報(bào)錯(cuò)之類的問題
以上的問題都是由于對(duì)ubuntu 的不熟悉夺艰,apt-get remove openssh-server 會(huì)出現(xiàn)一連串的問題,切記沉衣,要想把軟件卸載干凈就不要使用這個(gè) apt-get remove xxxxx郁副;
正確做法:apt-get purge openssh-server openssh-client ,就不會(huì)有上述的一些依賴問題厢蒜。
心得:出現(xiàn)以上類似的其他軟件包的問題霞势,其實(shí)可能都是由于在之前使用了remove。場(chǎng)景:若是現(xiàn)在需要新裝一個(gè)軟件斑鸦,出現(xiàn)了類似的上述的依賴報(bào)錯(cuò)問題愕贡,并且這個(gè)報(bào)錯(cuò)是之前卸載某個(gè)軟件遺留下來的,可以通過:先which xxx 或者whereis xxx 巷屿,查詢一下軟件包的主要配置文件在哪固以,將他cp備份保存一份;接下來使用apt-get purge xxxx 來卸載依賴報(bào)錯(cuò)的軟件(xxx是之前的卸載的軟件嘱巾,并且這個(gè)軟件在報(bào)錯(cuò)中一定會(huì)體現(xiàn)的)憨琳;然后apt-get install?–f && apt-get install xxxx 將依賴報(bào)錯(cuò)的軟件重新安裝,在把新的配置文件對(duì)照著cp備份保存的配置一下旬昭,再然后apt-get update更新如軟件包的信息篙螟,可以理解為更新下載源;最后再apt-get install 安裝需要新裝的那一個(gè)軟件问拘。
?
5遍略、重裝SSH服務(wù)遇到了個(gè)最棘手的問題,同時(shí)這個(gè)問題也證明了服務(wù)器確實(shí)已經(jīng)被入侵過了骤坐。
問題1绪杏、unable tomake backup link of `./usr/bin/sshd’ before installing new version: Operationnot permitted
這句話的意思是:我如果要apt-get install openssh-server?openssh-client ,需要先把/usr/bin/sshd 這個(gè)文件刪除掉纽绍,并且能夠?qū)@個(gè)文件有權(quán)限進(jìn)行讀寫執(zhí)行操作
問題2蕾久、root超級(jí)管理員也沒有權(quán)限對(duì)sshd文件進(jìn)行操作,我知道的Linux下有l(wèi)sattr 和chattr這倆命令是設(shè)置特殊權(quán)限的拌夏,但是從下圖可見僧著,使用這倆系統(tǒng)中自帶的命令對(duì)sshd文件進(jìn)行操作,顯示權(quán)限被拒絕了障簿。
?解決方法:
正常的lsattr應(yīng)該是這樣的端逼,有----------;
lsattr倆命令再這兩張圖片里面完全不一樣污淋,猜測(cè)第一張圖片里面的lsattr可能被修改或者替換了顶滩。接下我從相同版本的ubuntu
18.04上拷貝了lsattr和chattr 兩份文件,重命名為:lsattr_new 和 chattr_new寸爆,并上傳到了第一張圖片的服務(wù)器中礁鲁。
使用lsattr_new和 chattr_new 對(duì)sshd 進(jìn)行操作,終于生效了赁豆。
接下來重裝SSH服務(wù)仅醇,執(zhí)行命令:apt-get update && apt-get?install openssh-server openssh-client && systemct restart sshd 。
內(nèi)心獨(dú)白:心累~~~~一開始懷疑魔种,因?yàn)閟sh 服務(wù)一直不斷再重啟析二,再不停分配新的job,是這個(gè)原因?qū)е碌腃PU占用率這么高节预。唉叶摄,是我天真了!0材狻蛤吓!沒啥毛用!?飞狻会傲!看來還是因?yàn)槠渌脑颍诙蜗敕胖还芰擞淅猓屗约罕嗽偃ブ貑ⅰ?/b>
繼續(xù)繼續(xù)-------俺只是那么一想
?
三唆铐、借助第三方商用軟件——Bitdefender GravityZone排查
1、這個(gè)商用病毒查殺軟件支持的平臺(tái)以及系統(tǒng)版本還是挺全的奔滑,方式1艾岂、可以使用KVM或者VMware等虛擬機(jī)進(jìn)行部署,這個(gè)適用于有虛擬化環(huán)境朋其,只需要一臺(tái)虛擬機(jī)就能夠部署王浴,最低要求8G內(nèi)存;方式2梅猿、可以使用SAAS的方式進(jìn)行部署氓辣,但是需要聯(lián)網(wǎng),這個(gè)適用于部署在物理機(jī)上袱蚓。我這采用的是方式2
SAAS部署B(yǎng)itdefender?GravityZone步驟:
步驟1:登錄控制臺(tái)后钞啸,到這個(gè)頁面下完整安裝包(不能聯(lián)網(wǎng)的機(jī)器就不能用這個(gè)包,需要先聯(lián)網(wǎng)安裝,然后再給你生成一個(gè)內(nèi)網(wǎng)安裝包)我這的環(huán)境是可以上網(wǎng)的体斩。
步驟2:下載linux安裝包梭稚;上傳到服務(wù)器上后解壓壓縮包:tar –zxvf 包名;chmod +x installer 絮吵;./installer 進(jìn)行安裝
步驟3:使用圖片中的命令進(jìn)行掃描操作
掃描到有結(jié)果會(huì)自動(dòng)清理(清理:是剝離惡意代碼弧烤,重組正常的文件,清理之前會(huì)拷貝一份到隔離區(qū))
步驟4:完成后可以在控制臺(tái)蹬敲,網(wǎng)絡(luò)區(qū)域暇昂,點(diǎn)擊這個(gè)設(shè)備,彈出信息框伴嗡,掃描日志
客戶端掃描完成后急波,會(huì)出一份掃描清理的報(bào)告;
控制臺(tái)闹究,左側(cè)幔崖,隔離區(qū)也能看到掃描結(jié)果
步驟5:到控制臺(tái),左側(cè)渣淤,ThreatXploer可以看到更多信息
四赏寇、挖礦病毒的處理
1、价认、/usr/local/lib/libnss.so 文件的作用:
執(zhí)行top看到CPU占用率較高嗅定,但是顯示的進(jìn)程關(guān)于CPU的占用率都并不高,libnss.so 這個(gè)文件會(huì)動(dòng)態(tài)連接庫后門來隱藏進(jìn)程信息?
root@clamav:/etc# wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64
busybox-x86_64????? 100%[==================>] 977.65K?? 173KB/s???in 5.8s???
2021-07-14 19:31:15 (170KB/s) - ‘busybox-x86_64’ saved [1001112/1001112]
root@clamav:/opt# chmod +xbusybox-x86_64
root@clamav:/opt# mvbusybox-x86_64 busybox
root@clamav:/opt# mkdirruqing
root@clamav:/opt/ruqing#/opt/busybox ls -al /usr/local/bin/libnss.so
-rw-r--r--??? 1 root????root???????? 12952 Jul 14 19:34libnss.so
root@clamav:/opt/ruqing# /opt/busyboxls -al l /etc/ld.so.preload
-rw-r--r--??? 1 root????root???????? 12952 Jul 14 19:34libnss.so
root@ubuntu:/etc#/opt/busybox cat ld.so.preload
/usr/local/lib/libnss.so
?
2用踩、lsattr_new 和chattr_new 文章前面有介紹過渠退,
參數(shù)含義:
i:不允許對(duì)文件進(jìn)行刪除、改名脐彩,也不能添加和修改數(shù)據(jù)
a:只能在文件中増加數(shù)據(jù)碎乃,但是不能刪除和修改數(shù)據(jù)
u:在刪除時(shí),其內(nèi)容會(huì)被保存惠奸,以保證后期能夠恢復(fù)
使用lsattr_new查看libnss.so文件的特殊權(quán)限
root@ubuntu:/usr/local/bin#lsattr_new libnss.so
-u--ia--------e---lsattr
取消設(shè)置的權(quán)限
root@ubuntu:/usr/local/bin# chattr_new -uialibnss.so
root@ubuntu:/usr/local/bin# rm –rflibnss.so
?
3梅誓、在刪除libnss.so文件后,執(zhí)行任何命令都一直出現(xiàn)如下報(bào)錯(cuò)佛南,這是因?yàn)殛P(guān)鍵的挖礦進(jìn)程——zfsutils-md5sum還在運(yùn)行梗掰,
/etc/ld.so.prelod利用Linux的/usr/local/lib/libnss.so預(yù)加載型惡意動(dòng)態(tài)鏈接庫的后門
ERROR: ld.so: object'/usr/local/lib/libnss.so' from /etc/ld.so.preload cannot be preloaded (cannotopen shared object file): ignored.
關(guān)于ld.so.preload文件的解釋可參考:
使用lsattr_new 查看ld.so.preload文件的特殊權(quán)限
root@ubuntu:/etc# lsattr_new ld.so.preload
ERROR: ld.so: object'/usr/local/lib/libnss.so' from /etc/ld.so.preload cannot be preloaded (cannotopen shared object file): ignored.
-u--ia--------e--- ld.so.preload
# 執(zhí)行以上命令后,退出重新登錄嗅回,否則之前的bash是注入過libcurl.so的
# 下面的命令要等所有注入過libcurl.so.2.17.0的進(jìn)程都退出后才有用及穗,否則還會(huì)被改
取消設(shè)置的權(quán)限
root@ubuntu:/etc# chattr_new ld.so.preload
ERROR: ld.so: object'/usr/local/lib/libnss.so' from /etc/ld.so.preload cannot be preloaded (cannotopen shared object file): ignored.
root@ubuntu:/etc# pwd
ERROR: ld.so: object'/usr/local/lib/libnss.so' from /etc/ld.so.preload cannot be preloaded (cannotopen shared object file): ignored.
/etc
root@ubuntu:/etc# cat ld.so.preload
ERROR: ld.so: object'/usr/local/lib/libnss.so' from /etc/ld.so.preload cannot be preloaded (cannotopen shared object file): ignored.
/usr/local/lib/libnss.so
root@ubuntu:/etc# rm –rf ld.so.preload
?
4、鍵盤敲得干脆非響的一步绵载,連呼Nice9÷健?涟住!
刪除以上兩個(gè)文件后焚虱,便能看到了一直被隱藏的進(jìn)程zfsutiles-md5sum丸氛,該進(jìn)程使用top、ps著摔、unhide等命令均無法查出來。
從下圖能夠看到進(jìn)程zfsutiles-md5sum定续,占用服務(wù)器上所有CPU谍咆,運(yùn)行累計(jì)占用的時(shí)間以及CPU 占用率。
通過上圖中的zfsutils-md5sum進(jìn)程的pid是2649私股,使用命令:cd /proc/2649 下摹察,可看到紅框中內(nèi)容,exe鏈接的/usr/lib/zfs-linx/l2arc.mod/zfsutils-md5sum就是病毒的主程序
使用命令:kill -9 2649倡鲸,殺掉這個(gè)進(jìn)程供嚎,CPU占有率立馬恢復(fù)正常。
相當(dāng)可惜峭状,我盡然沒有記錄下這個(gè)關(guān)鍵性的kill克滴,就出去冒煙了!S糯病劝赔!
5、服務(wù)器中還有一個(gè)目錄/root/.debug是包含挖礦病毒程序胆敞,因?yàn)椴淮_定里面的部分內(nèi)容着帽,所以也需要將這個(gè) 文件夾刪除。
五移层、遺留問題
以為找到病毒程序仍翰,并kill 掉占用CPU資源的進(jìn)程就結(jié)束了?观话?只想感嘆人外有人予借,還沒完呢!7搜唷蕾羊!
1、問題1:系統(tǒng)的CPU 使用率雖然恢復(fù)正常帽驯,但仍然遺留有病毒程序龟再,/usr/lib/zfs-linux/l2arc.mod/路徑下的zfsutils-md5sum就是主運(yùn)行程序,如下圖尼变,該zfsutils-md5sum文件使用重新替換過的lsattr_new 也不能查看該文件具有的特殊權(quán)限信息利凑,同時(shí)對(duì)該文件進(jìn)行操作一直提示權(quán)限被拒絕浆劲。
2、問題2:su – 普通用戶 提示權(quán)限不夠哀澈,對(duì)系統(tǒng)中權(quán)限設(shè)置進(jìn)行了檢查牌借,是正確的,新建立test用戶進(jìn)行測(cè)試割按,結(jié)果也是提示權(quán)限拒絕膨报,這是因?yàn)閷⑶懊嫣岬降?root/.debug文件夾權(quán)限改為:700,屬主屬組均為root适荣,才導(dǎo)致的su – 普通用戶提示權(quán)限失效;將該目錄權(quán)限改為755后现柠,su – 普通用戶功能恢復(fù)正常,可是該文件是含有病毒的程序弛矛,最后也將該文件夾刪除了够吩。猜測(cè)可能是因?yàn)榄h(huán)境依賴問題,打算重啟一次服務(wù)器丈氓,重啟后卻發(fā)現(xiàn)周循,服務(wù)器網(wǎng)卡無法配置IP地址。重啟前未對(duì)網(wǎng)卡配置文件進(jìn)行過任何修改万俗,同時(shí)后面也排查了網(wǎng)卡配置文件湾笛,重試了幾次后都未能將網(wǎng)卡綁定上IP地址。