文档章节

一次杀不死的进程记录

蜗牛伊
 蜗牛伊
发布于 07/17 17:31
字数 1485
阅读 1308
收藏 32

1. 发现问题:

  • 服务器今天发现遭受木马攻击,疑似挖矿程序植入,cpu一路飙升至99%,导致其他程序异常卡顿。
  • 机智的我上来一个top命令让程序现出原形,结果发现一个dvjj的进程耗尽了资源。

 

2. 解决问题

  • 接着,查看这个命令是从哪里的启动的,发现没有什么有用的信息。

 

  • 那我换个方式,根据PID查看此进程的详细信息:ll /proc/19718 
  • Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。

 

 

  • 好家伙,看看这个dvjj到底写了些啥:cat /etc/dvjj,一堆火星文字刷屏,吓得我连按几个ctrl+c才退出。

 

  • 既然看不懂,我就不看嘛,删掉你:rm –rf /etc/dvjj,同时提示我有一封邮件,You have new mail in /var/spool/mail/root,于是查看邮件:cat /var/spool/mail/root,疯狂输出日志,好像是一直在下载什么东西

 

  • 不管了,先干掉再说吧:kill -9 19718,再次查看资源:top。怎么又起来了,中度郁闷中,杀不死的小强

 

  • 由于此程序会自动运行,立马想到定时任务,因此查看所有定时任务(系统级别和用户级别)系统级别的任务如下:

 

  • 查看用户级别的定时任务:cd /var/spool/cron/ ,只有一个用户和组都是root 的root文件

 

  • 查看定时任务内容:crontab –l,似乎是和redis相关的一堆自动下载任务,每隔几分钟就会执行一次

 

  • 既然如此,就删除当前用户的所有定时任务:crontab -r,提示我无法执行,我可是草鸡用户啊,怎么能这样对我。。。。。

 

  • 并且crontab –e 编辑命令均没有作用。最后,我决定采用rm –rf root 删除

 

  • 怎么这个文件既不能编辑也不能删除,太奇怪了!!这时,有两个命令可以派上用场:
chattr:可以修改文件系统属性,防止root用户误操作

lsattr: 查看文件系统属性

man chattr 可以查看命令使用详情

a 表示只能追加

e 表示文件使用区段映射磁盘上的块

 

  • 去除文件属性:chattr –ae root,但是依然不能删除,那就采用编辑此文件,成功删除里面的内容,心头一喜。

 

  • 查看root文件:cat root,无任何内容。另外,需要对这些定时任务文件修改属性:chattr +i  files,防止篡改

 

  • 修改执行文件/etc/dvjj的权限,由于此文件一直在增加内容,所以先删除后再新建一个空内容的文件,并且防止其修改:chattr +i /etc/dvjj

 

  • 查看进程树pstree,可以看到dvjj还有5个后台进程,因此是杀不死的

 

  • 查看此进程下的所有任务:ll /proc/11080/task,共六个程序

 

  • 查看进程所打开的端口和文件,lsof -p PID

 

  • 查看其中一个文件:cat /usr/lib64/ld-2.17.so,发现同样乱码,经过查询可以用strings命令进行转化,比如:

strings /usr/lib64/ld-2.17.so > virvus.txt

  • 然后再进行查看,前后折腾一番,但是我没有找到有用的信息。
  • 既然如此我就修改其木马文件权限:chmod 600 /usr/lib64/ld-2.17.so,让其无法执行,并且锁定文件:chattr +i /usr/lib64/ld-2.17.so
  • 上图中可以看到此连接的ip和端口:47.102.39.92:13531,封掉此ip和端口。
echo 47.102.39.92 >> /etc/hosts.deny

iptables -I INPUT -s 47.102.39.92 -ptcp --dport 13531 -j DROP

iptables -I OUTPUT -s 47.102.39.92 -ptcp --dport 13531 -j DROP

 

  • 接下来,再次杀死dvjj进程,反复查看进程,终于搞定这个杀不死的进程了。你以为这样就完了,并没有。。。。。输入:netstat -apntl,服务器还在尝试与对方握手,因为禁了ip所以连接不上!!!!!! 

 

3. 最后,检查启动项的文件

  • 检查最基本的开机启动项配置文件,尝试在开机启动文件中看看有没有可疑程序,如有有记得删除

    ls /etc/rc*/init.d
    ls /etc/rc*/

 

  • 检查chkconfig方法配置的自启动的服务:chkconfig --list

  • 关机重启,搞定

 

4. 总结:

1. 找出定时任务程序(/etc/cron*,/var/spool/cron/),清空并锁定chattr +i files

2. lsof -p PID找出程序使用的文件和IP及端口(netstat -anptl命令也可以找到ip和端口) ,将文件内容清空并锁定,将IP和端口封掉

3. 杀死程序,查看开机启动程序

4. 重启查看有无异常

 

  • 第一次遇到这种情况,前后忙活了很久,也查了很多资料,也算是学到了很多东西,所以服务器的安全性真的很重要,可以从以下方面进行防护:
1. 把所有软件升级到新版本

2. 修改所有软件默认端口号

3. 打开ssh/authorized_keys, 删除不认识的密钥

4. 删除用户列表中陌生的帐号

5. 封了他的ip

6. SSH使用密钥登录并禁止口令登录(这个一般是加运维一个人的秘钥)

7. 下载杀毒软件 clamav
  • 这里,贴上类似问题的解决过程,希望对大家有所帮助:

https://www.cnblogs.com/tssc/p/9265528.html

https://mp.weixin.qq.com/s/tk1yL6LPnbgjONUVaqPjzw

 

 

 

© 著作权归作者所有

蜗牛伊
粉丝 6
博文 37
码字总数 35372
作品 0
成都
程序员
私信 提问
加载中

评论(7)

会吹泡泡的鲸鱼
会吹泡泡的鲸鱼
我的redis也中毒了,占我满CPU就算了,还每天定时清空库,气死我了😤
C
CccccHc
Chattr -ia root之后为啥截图里还是删除失败
蜗牛伊
蜗牛伊 博主
这个确实不能删除,不知道为啥
dingdayu
dingdayu
同样经历过一次被web端口种入木马的经历,第一次清理掉,没过多久又被种,就把web停了,还好那次比较简单,一个木马,一个守护,守护藏的比较深。第二次被种明显进化了ls命令被篡改了,不知道都哪些命令会被篡改,只能重装系统。
刘柳
刘柳
如果他利用Root权限下载并篡改了一些程序,比如ls等,估计只能重装
harleyliao
harleyliao
你这个问题应该是利用了redis 4系的漏洞(如果你没开启外网端口绑定的话),另外ld.so是加载动态库的,不是木马吧
蜗牛伊
蜗牛伊 博主
是的,和redis有关,ld.so的相关文件我不太懂,不过已经重装系统了,谢谢
centos6.7 jps 下的进程,kill -9 杀不死,咋整?

centos6.7 jps 下的进程,kill -9 杀不死,咋整?

知行合一1
2017/02/23
811
1
DroidPlugin手札——home键强杀处理

DroidPlugin手札——home键强杀处理 DroidPlugin是360开源的插件化框架,github地址为:github.com/DroidPlugin…。 因公司业务及项目历史原因,来公司的这段时间一直在使用DroidPlugin进行业...

GitLqr
01/21
0
0
android中怎么实现一键清理内存的功能

android中怎么实现类似于LBE安全大师那样的一键清理功能,能够把进程杀死。用killBackgroundProcesses和restartPackage有些进程杀不死。求解

林彩神
2013/02/25
2.3K
1
windows使用命令行杀进程

问题 使用windows使用任务管理器GUI程序,杀不死进程,想死。 查询PID taskkill杀进程 感受 服务器端开发:珍爱生命,远离windows。还是要努力学好争取资源的能力,努力换一台centos。 参考:...

亚林瓜子
2018/04/23
0
0
PHP执行SHELL脚本问题

使用PHP执行目录下使用exec执行SHELL脚本,脚本内容是KILL游戏服务器进程,运行后,游戏进程依然存在,在服务器直接执行那个SHELL脚本是可以杀死的,测试前apache用户已经修改归属于ROOT组了...

沙-漠
2014/06/23
2.7K
6

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
29分钟前
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部