起因

某天,发现一台服务器上出现了一个大量占用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/文件夹中。由于不了解具体是什么内容,我尝试代开其中一个查看:发现并没找到对应的文件,用sudo权限去查找,发现无法找到该cpmg开头的文件。

事情陷入了僵局。回到原处,尝试从启动进程的命令本身寻找线索。

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 删除

crontab命令

然后删掉对应的执行文件:

sudo rm –r …/

最后关停掉对应的所有该用户下的进程:

pkill –u postgres

kill -9 10316

至此该问题终于得到解决。

总结

是什么原因导致该病毒文件被放到服务器中?

现在想到的一种可能是登录用户的密码被破解了。由于前面涉及的用户是postgres,所以可能的情况是有人用默认的用户名和密码进行嗅探登录。幸亏该用户没有根权限。但是需要引起注意的就是:

1、 能不创建用户就不创建用户

2、 能禁止登录就禁止登录

3、 密码要尽量复杂

4、 变更默认端口防止嗅探

完。

一次Ubuntu下的排雷记录的更多相关文章

  1. ubuntu下定时弹窗记录工作日志

    背景 记录工作日志,是一个很好的习惯,但不容易坚持,本来打算每天记录,但经常拖延,拖着拖着,有一些事情就忘记了. 等到写周报或月报的时候,才会开始翻邮件,聊天记录,各个仓库的提交log等,回忆都干了些 ...

  2. ubuntu下eclipse 安装记录

    基本是参考:http://www.metsky.com/archives/611.html 完成. 中间遇到小问题,在此记录下,方便遇到同样问题的难友. 先说下快速打开命令行快捷键:Ctrl+Alt+ ...

  3. ubuntu 下安装docker 踩坑记录

    ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...

  4. 踩坑记录:ubuntu下,http代理无法修改的问题

    事情经过: 今天在ubuntu下使用http代理的时候,碰到一个奇怪的现象.就是在当前shell窗口下,输入“env  | grep proxy”,显示的http_proxy一直都存在,即使我修改了本 ...

  5. 记录Ubuntu下使用docker使用

    关键词:docker.Dockerfile等等. 这里主要记录Ubuntu下docker使用细节. 首先是如何安装,然后如何创建docker镜像.搭建docker服务器.运行使用docker. 1. ...

  6. [问题记录]Ubuntu下chmsee安装失败的解决

    日期:2016年2月26日 一直在找Ubuntu下查看chm的工具但是普遍不理想,发现在deepin中的chmsee相对比较好,但是直接执行网上的sudo apt-get install chmsee ...

  7. 在Ubuntu下搭建ASP.NET 5开发环境

    在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...

  8. Ubuntu杂记——Ubuntu下安装VMware

    转战Ubuntu,不知道能坚持多久,但是自己还是要努力把转战过程中的学习到的给记录下来.这次就来记录一下,Ubuntu下如何安装VMware. 就我所知,Linux下有VirtualBox和VMwar ...

  9. Ubuntu下的PHP开发环境架设

    Ubuntu下的PHP开发环境架设   今天重新装了ubuntu那么就吧过程记录下. 打开终端,也就是命令提示符. 我们先来最小化组建安装,按照自己的需求一步一步装其他扩展.命令提示符输入如下命令: ...

随机推荐

  1. Leetcode 678.有效的括号字符串

    有效的括号字符串 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何右括号 ) 必须 ...

  2. visionpro halcon 哪个好

    visionpro halcon 哪个好 很多朋友会问到visionpro和halcon这两款机器视觉软件,到底学哪个好呢,今天众寻网就给大家讲一讲: 首先比较下两者的优缺点: halcon: 提供的 ...

  3. STL应用——hdu1412(set)

    set函数的应用 超级水题 #include <iostream> #include <cstdio> #include <algorithm> #include ...

  4. 进程id

    我们知道怎么通过fork函数创建(或者说是复制)一个进程,但是我们要怎么样操作这个被创建出来的进程呢?那就需要用到他的进程id,所以就要获取进程id,一下提供一些获取进程id的函数和其使用方法. 1) ...

  5. elementUI默认样式修改不成功的问题

    问题: login.vue中引入<style lang="postcss" src="./login.css" scoped></style& ...

  6. 文件系统中 atime,lazytime,relatime 详聊

    atime,ctime,mtime是文件inode的三个时间戳,分别表示文件最近一次的访问时间:inode本身的更改(changed)时间:文件数据的更改(modify)时间:这几个概念还是很好区分. ...

  7. javaScript运算符学习笔记

    1.赋值运算符 javaScript运算符可以分为简单赋值和复合赋值运算.简单赋值运算是将赋值运算符(=)右边的表达式的值保存到赋值运算符左边的变量中,复合赋值运算则是混合了其他操作(算术运算操作,位 ...

  8. Hibernate常用方法之_插入

    1.使用session的save方法进行插入 public void saveUser(User user){ Session session = null; Transaction transact ...

  9. Mapreduce简要原理与实践

    探索Mapreduce简要原理与实践 目录-探索mapreduce 1.Mapreduce的模型简介与特性?Yarn的作用? 2.mapreduce的工作原理是怎样的? 3.配置Yarn与Mapred ...

  10. 【COGS 2051】王者之剑 最小割

    这个其实就是在说明相邻的点不能取,我们发现只要其满足这个条件他总能走出来,那么我们就最小割就是了,我们先黑白染色,S 一排黑点 一排白点 T 对于相邻的点我们就直接中间连INF,于是就满足只要一个点选 ...