一次Ubuntu下的排雷记录
起因
某天,发现一台服务器上出现了一个大量占用cpu资源的进程。尝试手动杀掉,但很快就会自动重新创建新的进程。
追查
用命令lsof -p 10316
查看其文件路径:
该进程文件夹/proc/10316
下:
看到该文件夹下的exe文件是指向/var/tmp/.../Word,也就是文件夹名字就是"...",查看简要的信息:
其中:
cmdline — 启动当前进程的完整命令
environ — 当前进程的环境变量列表,彼此间用空字符(NULL)隔开;变量用大写字母表示,其值用小写字母表示
cwd — 指向当前进程运行目录的一个符号链接
exe — 指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝
文件介绍
查看cmdline文件发现:
说明这个进程是通过该命令启动的,通过查看进程状态也证实了这一点:
为了查找上面cpmg文件的路径,使用find命令find / -name cpmg49nhiCCK4u2Lvt2Y9Tasf8wpnkEYBoeVanWwuFJJRaHMhfPTr5C6QFb4
,找到一大堆文件的路径:
文件路径基本都是来源于/proc/
事情陷入了僵局。回到原处,尝试从启动进程的命令本身寻找线索。
postgres 10316 374 0.0 408984 13844 ? Ssl Aug29 202:19 sh cpmg49nhiCCK4u2Lvt2Y9Tasf8wpnkEYBoeVanWwuFJJRaHMhfPTr5C6QFb4 -o stratum+tcp://monerohash.com:5555 -p x -k -B -l Word.txt --donate-level=1
找到上述exe所指向的可执行文件Word,查看其目录发现:
Word是可执行文件,Word.txt是一个不断增长的类似于日志一样的文件,通过tail –f Word.txt的结果如下:
由此大概可以知道前面的启动命令是什么意思了,就是通过与其他机器建立连接,不断地上传数据。
但是仍然不知道它具体是怎么操作的,于是乎上谷歌查了一下stratum+tcp://monerohash.com:5555
这个东西,发现有网友出现过相同的问题,另有网页1介绍:
原来是些挖矿的病毒程序,上面的情况说明了自己的服务器已经被别人用作挖矿了。相似的网站还有下面这些
stratum+tcp://mine.moneropool.com:8080
stratum+tcp://mine.moneropool.com:3336
stratum+tcp://xmr.hashinvest.net:443
stratum+tcp://xmr.hashinvest.net:5555
stratum+tcp://monero.crypto-pool.fr:3333
stratum+tcp://monerohash.com:5555
stratum+tcp://mine.xmr.unipool.pro:3333
stratum+tcp://xmr.prohash.net:5555
stratum+tcp://xmr.miner.center:2777
stratum+tcp://mine.xmr.unipool.pro:80
stratum+tcp://pool.minexmr.com:7777
stratum+tcp://cryptonotepool.org.uk:7777
stratum+tcp://mro.poolto.be:3000
这样基本可以定位这里就是挖矿程序的源头。
仔细分析其中的文件:
/var/tmp/…/a
cron.d文件
run文件
udp文件
x文件
基本可以定位它无法杀死的原因就是加入了一个随时的定时任务,一旦杀死就会自动重启。
查看该用户的定时任务列表,当前用户默认只能看到自己的定时任务,所以需要sudo。
sudo crontab –l –u postgres
确实发现了该定时任务:
crontab命令选项基本只有对用户操作的选项:
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务
既然定位了问题,接下来就是解决该问题。
首先要做的就是删掉该定时任务:
sudo crontab –u postgres –r 删除
然后删掉对应的执行文件:
sudo rm –r …/
最后关停掉对应的所有该用户下的进程:
pkill –u postgres
或
kill -9 10316
至此该问题终于得到解决。
总结
是什么原因导致该病毒文件被放到服务器中?
现在想到的一种可能是登录用户的密码被破解了。由于前面涉及的用户是postgres,所以可能的情况是有人用默认的用户名和密码进行嗅探登录。幸亏该用户没有根权限。但是需要引起注意的就是:
1、 能不创建用户就不创建用户
2、 能禁止登录就禁止登录
3、 密码要尽量复杂
4、 变更默认端口防止嗅探
完。