misty's technology stack

一天不折腾, 一天没长进.

解决CentOS被wbew挖矿程序入侵的方法

来龙去脉

昨天收到阿里云的安全邮件,主机被挖矿程序入侵
《解决CentOS被wbew挖矿程序入侵的方法》

有必要了解一下挖矿,百度搜索结果

所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。比特币网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格答案。随后比特币网络会新生成一定量的比特币作为赏金,奖励获得答案的人。
比特币的本质其实就是一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组。而每一个特解都能解开方程并且是唯一的。[8] 以人民币来比喻的话,比特币就是人民币的序列号,你知道了某张钞票上的序列号,你就拥有了这张钞票。而挖矿的过程就是通过庞大的计算量不断的去寻求这个方程组的特解,这个方程组被设计成了只有 2100 万个特解,所以比特币的上限就是 2100 万。

使用top命令查看了一下, wbew这个进程占用了99%的CPU,不能忍,着手找解决方案,百度呗,果然有小伙伴和我遇到了相同的问题
论坛上提供的解决思路,关于minerd

初步尝试

首先按照正常思路

  • top 命令或者 ps-ef |grep wbew (这个需要知道是哪个程序,可以先top一下) 查看程序的pid 然后kill -9 [pid] ,过了没有多久 ,又启动了,果然没有这么简单

  • 然后 删除程序的路径(这个阿里云日志已经指出来了) rm /etc/wbew ,不然可以先find一下

  • 经过上面的操作,发现程序在关闭一会之后依然会自动起来,烦死个人

再次尝试

  • iptables -A INPUT -s xmr.crypto-pool.fr -j DROP 和iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP 网上说要这么操作,我感觉不太行,因为我是centos7的防火墙操作已经变了,但是死马当活马医吧

  • 再删除/usr/local/etc 下root文件中的内容 ,我的这个机器没有,根据程序的表现来看应该是有个计划任务,下面着手来操作计划任务

  • /var/spool/cron/root , /var/spool/cron/crontabs/root.,/etc/cron.d/root 从这些计划任务文件中入手 移除恶意脚本的计划任务,你可能会遇到无法写入问题,参考下面的解决方案

    • chattr -isa /var/spool/cron/root 先去除isa属性,在使用vim编辑删除恶意计划
    • crontab -l 查看计划任务
    • service stop crond 或者 crontab -r 删除所有的执行计划,你会发现根本没用,呵呵
  • chmod -x minerd ,取消掉执行权限 我的是chmod -x /etc/wbew ,根据实际情况来

  • rm /etc/wbew 删除 ,kill -9 [pid]然后kill掉进程

  • 然后按照阿里云的提示 /tmp/crloger1 删掉 ,因为脚本下载的程序都/tmp目录

  • 做完这些 ,我也以为解决了,其实不然,放弃,放弃,睡觉,睡觉,命要紧已经很晚了,服务器关掉吧,反正其他程序被干扰无法运行

第二天打开服务器,解决了,再也没有出现 ,发现关键就两个地方,第一个恶意计划,第二个,之前没有说也就是本事件的根源

毕竟解决这个问题不是目的,而是事情的根源redis服务 ,我不就是偷了个懒,为了统一测试环境 ,将 redis 开放了外网访问,并且没有设置密码,还使用的默认端口,好吧,我活该

参考其他小伙伴的解决方式

解决方式

登录服务器后用top命令查看CPU利用率并不高,感觉不一定真是挖矿程序在作怪,或挖矿还没启动。用ps -ef命令列出进程,发现一个名为“httpdz”的可疑进程,杀死进程后,这个httpdz又立即启动。

查阅/etc/crontab、/etc/cron.d和/var/spool/cron,后两个目录下的名为root的文件被写入了三个任务计划,是下载一个shell文件并执行。通过查看这个shell文件,程序又从网站下载了一个可执行文件crloger1到/tmp,其属性被置为+ia。

用pstree命令又发现了一个名为migrations的异常进程,文件位于/etc,注意不是migration,也是杀死之后又重新启动。

处理步骤:

修改root密码;

~/.ssh/出现了不认识的authorized_keys,改属性后删除。

删除连接网站下载文件的任务计划;

执行chattr -ia chloger1;

杀死httpdz和migrations,删除/etc/httpdz、/etc/migrations和/tmp/crloger1。

系统没有设置redis密码。设置redis密码, 限定可以连接redis的IP, 改redis默认端口6379。如果不用redis,干脆停掉也行。

观察了24小时,阿里云没有再推送警告。

修复redis挖矿程序入侵漏洞

配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.

配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf
打开 ~/.ssh/authorized_keys 删除你不认识的账号
查看你的用户列表,是不是有你不认识的用户添加进来。 如果有就删除掉.

防范技巧

  • Redis不要监听在危险IP上,如果有请加防火墙控制;
  • Redis一定要增加密码限制,且不能是弱口令 ,修改requirepass设置密码;
  • Redis尽量不要用Root用户身份来启动。

定时任务相关操作

  • 查看定时任务:vim /etc/crontab

  • 列出所有的定时任务:crontab -l

  • 删除所有用户定时任务:crontab -r

  • cat /etc/rc.d/rc.local 查看恶意操作脚本开机就执行的

操作中遇到的问题解决方案

Linux 文件不能被root修改与编辑原因

摘录至Linux公社

近段时间公司的一台服务器被恶意添加了一些定时器任务到crond的配置文件"/var/spool/cron/root"里,本想着只要简单使用crontab -e命令把该恶意的任务去除掉就可以了,但修改后发现无论我怎么努力也保存不了,直接修改文件“/var/spool/cron/root”也不行,我苦思是什么力量让这个拥有至高无上权力的root用户都无法对该文件进行更改和删除。后来经一资深Linux的朋友点拔一下才知道,文件除了有读写执行权限控制外还有更底层的文件属性,这里汲及到的两个查看和更改文件属性的命令是lsattr和chattr。

使用 lsattr /var/spool/cron/root 一看才知道该文件被添加了sia属性:s---ia------- /var/spool/cron/root,然后使用:chattr -isa /var/spool/cron/root 把这三个属性去除,即可对该文件进行修改了,成功地把该恶意任务去除。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注