一次杀不死的进程记录
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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Cloud Hystrix 熔断
一、什么是熔断 在一个家庭中有各种各样的家电,我们假设每个家电都没有保险丝,一旦有一天某个家电出现短路,造成整个电路短路然后很有可能就把整个家庭的电器及电路给烧坏了。但如果每个家电入口线路都有一个保险丝(断路器),那么不管那个家电发生短路这个家电的保险丝就会快速熔断(断开电路),从而保护了整个电路及电路上其它的家电的正常运行。 软件行业里面的熔断机制与这个一致,在整个微服务集群中,由于其中一个或者几个微服务出现故障或堵塞,若没有快速的熔断机制,就会造成整个微服务集群的拥堵最终整个微服务出现雪崩被拖死。熔断机制的核心机制就是在确保某个微服务出现故障的时候实现快速熔断(断路)或者服务降级快速失败,避免拥堵。从而保证其它业务其它服务的正常运行。 二、Hystrix 设计原则 防止单个服务的故障,耗尽整个系统服务的容器(比如tomcat)的线程资源,避免分布式环境里大量级联失败。通过第三方客户端访问(通常是通过网络)依赖服务出现失败、拒绝、超时或短路时执行回退逻辑。 用快速失败代替排队(每个依赖服务维护一个小的线程池或信号量,当线程池满或信号量满,会立即拒绝服务而不会排队等待)和优雅...
- 下一篇
软件架构设计原则之“KISS”的总结使用
今天聊一聊软件架构设计中的 KISS 原则。 对! 就是亲嘴的那个 “KISS”! 一定要多练习。 ... ... ... ... 作为一个程序员我是推荐理解为“亲嘴”的,可以很好的解决单身问题,但作为一个架构师在“亲嘴”的同时,希望还能理解它另一层含义。 KISS KISS = Keep It Simple, Stupid. 它的核心就是把一切事情简单化,用最简单的解决方案来解决问题。 把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。 简单的人生就是幸福。但是这里需要说明的是简单是优秀的,但简单是有底线边界的,超过底线的简单也有变得稚幼。KISS原则来源于《UNIX编程艺术》中总结的。 简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。 核心: 拆分,把复杂的逻辑拆分为一个个单一执行单元。 简洁,只允许串型依赖的调用关系。 简单,单个执行单元代码量一定要尽可能少。 我们应该如何从KISS原则中获益? 你会以更快的速度解决更多的问题 你会以很简洁的代码来解决很复杂的问题 你能写出高质量的代码 你能完成更大的系统并且它很容易维护 你所编写的代码...
相关文章
文章评论
共有0条评论来说两句吧...