背景
某项目服务器服务器cpu超负荷运转,top命令显示有一波高耗cpu进程在运行,并且执行程序都是linux的命令,如图
基本可以确认是挖矿病毒,和以往挖矿病毒不一样的是,该病毒显示的名称都是Linux的命令(迷惑行为?)
排查
既然名称都是一些常用命令,首先要确认的是这些工具是否被病毒感染,确认的办法就是找一台操作系统版本一样的没有被感染的服务器,对两边的命令进行md5sum
,以cat命令为例
- 确认cat命令位置
# which cat
/usr/bin/cat
- 执行md5sum
# md5sum /usr/bin/cat
1484a27859e2ca20ad667cc06d595d22 /usr/bin/cat
如果两边命令的md5一直说明工具没有被感染,只是病毒的一种迷惑行为,那如何找到病毒的运行程序位置呢,第一想到的办法是用strace监控病毒打开的本地文件,但病毒似乎都是在读写,并没有打开文件,也可能是打开动作在监控之前已经完成了,总之这个方法行不通
在Linux中,一切皆文件,应用程序使用的资源包括网络都会分配一个文件描述符,lsof命令可以查看应用程序拥有的文件描述符
从这里可以看出几个重要信息
- 病毒确实打开了/usr/bin/fold命令,也正因此,可以进行伪装
- 猜测病毒的程序位于/tmp/.python借助python运行,但状态为deleted说明运行后脚本被删了
- 病毒后台程序ip为209.141.40.190该ip位于境外
所以解决的方法和比较简单
- 禁用python,回收其可执行权限
chmod -x /usr/bin/python
##也可以改名
mv /usr/bin/python /usr/bin/pythonx
- kill掉所有进程
- 最好重启服务器
总结
近年来因为比特币的疯狂导致挖矿病毒越来越猖獗,我是非常支持国家出手打击比特币,一个没有任何价值,需要消耗大量电力资源,为犯罪分子提供隐秘资金渠道,为洗钱者提供便利,就是这么一个东西,竟然市值高达万亿美元,只能说这世界太疯狂了。谴责归谴责,为了保护服务器的安全,建议服务器做以下防护
- 关闭外网访问通道,所有的访问通过网关进行访问
- 禁用curl,wget,python命令,大部分病毒脚本会利用这些命令远程下载病毒执行
- 禁用crontab,如果系统没有用到crontab的功能,就关闭掉,病毒会借助crontab进行复活
- 不使用root启动程序,应用程序难免有漏洞,如果用root启动应用程序意味着一旦业务系统被入侵,病毒可以直接掌控整个主机
- 通过官网下载ssh连接工具,所有与服务器连接的工具必须从官网下载,不要百度上搜索下载,你下载的可能带病毒
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。