让我做免费矿工? 其实我还能黄雀在后

运维 1 8071

XMRig门罗币挖矿木马

XMRig https://github.com/xmrig/xmrig是一款开源高性能的矿工(门罗币挖矿)程序.这篇文章不是教你如何使用这个软件挖矿, 而是教你如何辨别服务器是不是被植入挖矿木马, 当了别人的免费矿工, 运气好还能坐收渔翁之利.

事件开头

博主正在写代码突然收到了阿里云服务器的短信警告, 大意就是服务器已经被植入了"挖矿程序". 马上SSH到服务器, 发现服务器CPU 100%, 卡的要命并且多了一个名为"xmrig"的进程. 百度了一番了解到这是个挖矿程序. 以为我的SSH帐号密码泄漏了, 由于时间比较晚了简单起见就恢复了服务器快照, 然后修改了SSH密码. 没想到的是第二天凌晨1点左右又收到阿里云短信警告说被植入了"挖矿程序".

月黑风高夜, 杀人放火天. 凌晨一点半, 放马害人间.

这么晚出来搞事情, 一看干的就是偷鸡摸狗的勾当.

怎么判断服务器是不是被植入了挖矿程序

典型的症状就是CPU占用率飙升几乎持续100%, 导致服务器卡顿. 如果你自己没有主动的开启一些耗用CPU的任务或程序, CPU却莫名的长时间维持100%的占用率, 你就要怀疑了. 在命令终端输入

top

命令查看进程, 默认是cpu使用率最高的进程排在第一. top 如上图这个名称为xmrig的进程占用了大量的CPU很可疑. 不认识没关系, 度娘!

干掉它

我已经知道那个PID 2992 名称为xmrig的进程就是挖矿程序了. 尝试kill 9 29982命令发现进程杀不掉, 马上又以一个新的PID继续运行了. 不过我发现这个xmrig是以docker container的形式运行的(代表了是通过docker入侵的我的服务器). 输入命令

docker container ps

查看正在运行的容器

root@ssyycc:~# docker container ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                      NAMES
1fbb8548f524        lore-blog:latest     "sh -c 'java -XX:+Un…"   2 days ago          Up 2 days           8080/tcp                                   lore-blog
e1acf8b43b83        nginx:1.17.3         "/bin/bash -c 'envsu…"   11 days ago         Up 11 days          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
3a00f9d9531d        mysql:8.0.17         "docker-entrypoint.s…"   11 days ago         Up 11 days          33060/tcp, 0.0.0.0:6612->3306/tcp          mysql
276246382d1a        tanchao2014/mytest   "/xmrig -a cryptonig…"   2 weeks ago         Up 4 seconds                                                   dazzling_shannon

前3个是我自己运行的容器, 很容易区分出最后一个就是挖矿程序了, 用命令

docker container stop 276246382d1a

停止该容器. 然后可以将该container和对应的image删除了.

docker container rm 276246382d1a
docker image rm [image id]

不过我还要扒一扒这个入侵者的信息, 所以暂时先不删除了. 但是最重要的还是封堵入侵的入口. 这个在之后的文章在提(一般都是用默认的端口2375开启了没有TLS的远程链接).

扒一扒入侵者

查了服务器的log, 登陆日志中并没有什么异样(并不是被入侵者清除了, 他也就是会用些工具的小白). docker的链接日志, 有个国外的IP. 看来是挂了代理或者是也是个被入侵的肉鸡服务器. 因为我服务器除了被安装了一个挖矿程序, 还被安装了一个扫描其它可入侵机器的程序. 只好看看这个xmrig的docker image 有没有什么有用的信息了. 我的服务器是ubuntu 18系统, 使用的docker官方脚本安装的docker应用. image在/var/lib/docker/image/目录下. 以下是部分image的配置信息.

"{
    ID": "276246382d1ab5f9c4d9b9d92c3a0b6e9256902984d7c6f10e87ee40ad2c0a6d",
    "Created": "2019-09-03T17:14:55.145078254Z",
    "Managed": false,
    "Path": "/xmrig",
    "Args": ["-a", "cryptonight", "-o", "stratum+tcp://pool.supportxmr.com:5555", "-p", "0904_1_47.52.92.236_2376", "-k", "-t", "1", "--donate-level=1", "--cpu-priority", "0", "-u", "45TwKEr1LjoEPuxnbfuPhaXCf138AoQvtSJ3jdqg1gPxNjkSNbQpzZrGDaFHGLrVT7AzM7tU9QY8NVdr4H1C3r2d3XN9Cty"],
    "Config": {
        "Hostname": "276246382d1a",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],
        "Cmd": ["-a", "cryptonight", "-o", "stratum+tcp://pool.supportxmr.com:5555", "-p", "0904_1_47.52.92.236_2376", "-k", "-t", "1", "--donate-level=1", "--cpu-priority", "0", "-u", "45TwKEr1LjoEPuxnbfuPhaXCf138AoQvtSJ3jdqg1gPxNjkSNbQpzZrGDaFHGLrVT7AzM7tU9QY8NVdr4H1C3r2d3XN9Cty"],
        "Image": "docker.io/tanchao2014/mytest",
        "Volumes": null,
        "WorkingDir": "",
        "Entrypoint": ["/xmrig"],
        "OnBuild": null,
        "Labels": {}
    }

挖矿程序运行时在后台输出的一些数据

* ABOUT        XMRig/2.14.1 gcc/8.3.0
 * LIBS         libuv/1.23.2 OpenSSL/1.1.1b 
 * CPU          Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz (1) x64 AES AVX2
 * CPU L2/L3    0.2 MB/40.0 MB
 * THREADS      1, cryptonight, av=0, donate=1%
 * ASSEMBLY     auto:intel
 * POOL #1      stratum+tcp://pool.supportxmr.com:5555 variant auto
 * COMMANDS     hashrate, pause, resume
[2019-09-20 13:41:40] use pool pool.supportxmr.com:5555  139.99.125.38 
[2019-09-20 13:41:40] new job from pool.supportxmr.com:5555 diff 20000 algo cn/r height 1927257
[2019-09-20 13:41:41] READY (CPU) threads 1(1) huge pages 0/1 0% memory 2048 KB
[2019-09-20 13:41:44] accepted (1/0) diff 20000 (63 ms)
[2019-09-20 13:41:58] new job from pool.supportxmr.com:5555 diff 35280 algo cn/r height 1927257
[2019-09-20 13:42:44] speed 10s/60s/15m 34.7 33.5 n/a H/s max 34.4 H/s
[2019-09-20 13:42:58] new job from pool.supportxmr.com:5555 diff 10000 algo cn/r height 1927257
[2019-09-20 13:43:44] speed 10s/60s/15m 34.4 34.6 n/a H/s max 34.8 H/s
[2019-09-20 13:43:58] new job from pool.supportxmr.com:5555 diff 10000 algo cn/r height 1927257
[2019-09-20 13:44:09] SIGTERM received, exiting
[2019-09-20 13:44:09] no active pools, stop mining

经过一翻查找扒出了入侵者的docker私有创库tanchao2014 截止至2019-09-21 00:23:14 该挖矿镜像下载量已经达到了7k多, 意味着最多可能已经有7k数量的主机被入侵并植入了挖矿程序. xmrig 上面还记录了这个入侵者的门罗币的钱包地址

45TwKEr1LjoEPuxnbfuPhaXCf138AoQvtSJ3jdqg1gPxNjkSNbQpzZrGDaFHGLrVT7AzM7tU9QY8NVdr4H1C3r2d3XN9Cty

还有挖矿的矿池矿池supportxmr.com

看我黄雀在后

进入矿池输入入侵者的钱包地址 入侵者矿池账户截图1.png 入侵者矿池账户截图2.png 这个页面最多时有170多个被入侵的主机同时在默默无闻的帮助这个混蛋挖矿. 注意看列表中的worker列的内容, 例如0830_188.131.149.3_2375 这个表示什么呢?

0830 //  08月30日侵入
188.131.149.3 // 被入侵的主机的IP地址
2375 // docker 远程链接的端口
2376 // 开启了TLS的 docker 远程链接的端口

0910_1_112.74.34.51_2375这种中间多个1的, 我没有猜到这个1表示什么. 其中有些服务器都被别人挖矿1个月了竟然还不知道... 用IDEA带的docker插件随便连接了几个地址, 发现都可以连接上. 那么我们完全可以让这个人当螳螂, 我们在后面当黄雀, 把它(就是这个它, 畜生)入侵好的主机中全都替换成自己的钱包地址. 想想还有点小激动, 要走上人生巅峰发笔横财啊(不知道它看到我这边文章会不会改命名规则). 不过我这么善良做不来啊, 干脆做个雷锋一口气连了10多个IP把挖矿的容器全都删了. 不过我删了后过不了多久它应该又会继续重新安装. 盼着那些肉鸡的主人赶紧发现吧. 毕竟我花时间帮你们删除你也不给我发工资啊^-^

钱包地址和矿池地我都完整的放出来, 你们可以帮忙关一关, 别真的做黄雀...

本文采用 知识共享署名4.0国际许可协议进行许可. 本站文章除注明转载/出处外, 均为本站原创或翻译,转载前请务必署名!

  1. 233

    回复