2022年2月初,哈工大安天联合CERT实验室在网络安全监测中发现某网络攻击组织利用SSH爆破投放挖矿程序的活动比较活跃,经关联分析研判,该组织最早在2021年底开始出现,本次监测到攻击者所用的托管域名为david1337.dev,该域名中的样本是由开源工具和挖矿程序构成,之后又相继关联到多个域名与IP均和“1337”字符串有关,故安天CERT将该挖矿组织命名为“1337”组织。
“1337”组织通过扫描暴露在互联网之上的TCP 22端口确定攻击对象范围,利用SSH爆破工具对暴露该端口的信息基础设施实施暴力破解攻击。暴力破解成功后,攻击者会在托管网站下载相应工具和脚本,针对受害者内部网络的TCP 22端口实施扫描和爆破。在此基础上,对受害者内部网络的IP地址实施扫描窥探并将扫描结果写入指定文本,继而利用暴力破解工具对存活状态的IP地址对应端点设施实施爆破攻击,以此实现在受害者内部网络中的横向移动。下载挖矿程序和挖矿程序执行脚本,进行挖矿。经判定,该挖矿程序为开源挖矿程序Phoenix Miner,主要挖取以太币。
攻击者针对目标系统投放Phoenix Miner挖矿木马进行挖矿,梳理本次攻击事件对应的ATT&CK映射图谱如下图所示。
图 2‑1事件对应的ATT&CK映射图谱
本次事件中,攻击者使用的技术点如下表所示:
表 2‑1事件对应ATT&CK技术行为描述表
ATT&CK阶段/类别 | 具体行为 | 注释 |
侦察 | 主动扫描 | 扫描22端口 |
执行 | 利用命令和脚本解释器 | 使用脚本执行挖矿程序 |
防御规避 | 隐藏行为 | 隐藏挖矿程序进程 |
凭证访问 | 暴力破解 | 暴力破解SSH服务 |
发现 | 发现账户 | 检测系统活跃账户 |
发现文件和目录 | 遍历系统文件和目录 | |
扫描网络服务 | 扫描22端口 | |
发现系统信息 | 检测系统信息 | |
影响 | 资源劫持 | 利用系统CPU、GPU资源进行挖矿 |
“1337”组织通过互联网扫描22端口,搜索有哪些资产暴露在互联网上,之后使用SSH爆破工具对这些资产进行暴力破解。该组织攻陷受害主机后,会通过托管服务器下载相应工具和脚本,对内网进行22端口扫描,并对扫描到的资产使用爆破工具进行爆破,使用下载的脚本收集目标主机活跃账户信息等。最后在137.74.155.105的网站上下载名为“.zankyo.tar”的压缩文件,该文件解压后包含两个文件,一个是名为“script”的脚本文件,另一个是名为“meinkampfeth”的挖矿程序。经判定,script脚本的作用是执行meinkampfeth挖矿程序,meinkampfeth挖矿程序实质为开源以太币挖矿程序Phoenix Miner。
图 3‑1 攻击流程图
在对受感染服务器进行排查时发现,在var/tmp/.x路径下发现三个隐藏文件,经分析名为log20220209_160224.txt的文件是挖矿程序的日志,名为meinkampfeth的文件为挖矿程序,名为script的文件是执行挖矿程序的脚本。
图 3‑2 挖矿程序路径
根据挖矿日志发现该挖矿程序于2022年2月9日16点02分开始进行挖矿,结束时间为2022年2月14日15点02分,且该挖矿程序为开源挖矿程序Phoenix Miner。
图 3‑3 挖矿日志
script脚本的作用是执行/var/tmp/.x目录下的挖矿程序meinkampfeth,矿池地址为sg.stratu.ms:16232,钱包地址为0x7e81549e13Faeee0Bc9833dA540Ff604c9EaE4aA。
图 3‑4 script脚本
在查看历史命令时发现了攻击者具体的操作行为,使用wget命令下载了ps文件,并对该文件赋予可读可写可执行权限,之后执行该文件,经判定,该文件为端口扫描工具,共扫描三个网段,分别为10.10.0.0/16、10.242.0.0/16和192.168.0.0/16。
图 3‑5 端口扫描
扫描完成后攻击者开始下载brute、find.sh和passmaker文件并执行,执行后删除。经判定,brute文件为SSH暴力破解工具,find.sh为以获取服务器重要信息为目的的bash脚本,passmaker为字典生成脚本。
图 3‑6 下载攻击工具和脚本
最后使用wget命令下载zankyo.tar压缩文件,解压缩,并赋予可读可写可执行权限,继而执行script脚本文件,并以此运行meinkampfeth挖矿程序。
图 3‑7 下载挖矿程序并执行
针对非法挖矿安天建议企业采取如下防护措施:
5.1.1 ps—端口扫描工具
该文件是一款端口扫描工具,能够针对B类和C类IP地址进行任意端口探测。将扫描中存活的主机IP地址写入名为“bios.txt”中,端口扫描完成会提示“Portscan completed in %u seconds.(found %d ips)”。
图 5‑1 ps端口扫描工具
5.1.2 brute—暴力破解工具
该文件是一款暴力破解工具,真实文件名是haiduc,首次出现在Outlaw僵尸网络组织样本中,后期常被多个挖矿组织使用。
图 5‑2 haiduc工具
该工具使用生成好的密码字典pass爆破已知的IP地址,对应的参数为线程数、模式数、字典、端口和bash命令。
图 5‑3 haiduc工具参数
5.1.3 find.sh—系统探测脚本
该脚本用于探测系统可登录账户数量和对应账户名。
图 5‑4 探测系统可登录账户数量和对应账户名
在对该组织托管网站分析时发现,不仅存在攻击流程中出现的样本,还有一些未用到的样本,如banner、kl.tar.gz、lopata.tar.gz和j.tar.gz。
banner是一款可以识别IP地址信息的工具,将识别结果写入banner.log,生成的banner.log文件中包含所有开放22端口的IP地址。此列表中已经将所有存活IP地址的范围缩小到仅包含具有SSH-2.0-OpenSSH协议信息的主机。
图 5‑5 banner工具参数
kl.tar.gz压缩包中包含以太币挖矿程序、矿池和钱包地址配置文件、启动脚本和伪装成数据库名的隐藏进程工具XHide。
钱包地址: 0x586f0235729e186cfc7e8c2c373b725cd2a34dbf
图 5‑6 kl.tar.gz压缩包内容
lopata.tar.gz压缩包中包含门罗币挖矿程序和启动脚本。其中矿池地址和钱包地址如下:
表 5‑1 lopata.tar.gz矿池地址和钱包地址
矿池地址 | 139.99.124.170:80 |
钱包地址 | 4BrL51JCc9NGQ71kWhnYoDRffsDZy7m1HUU7MRU4nUMXAHNFBEJhkTZV9HdaL4gfuNBxLPc3BeM kLGaPbF5vWtANQo8mHMLcaEdNiy25Jz |
j.tar.gz压缩包中包含门罗币挖矿程序和启动脚本。其中矿池地址和钱包地址如下:
表 5‑2 j.tar.gz矿池地址和钱包地址
矿池地址 | 37.187.95.110:80 |
钱包地址 | 4BrL51JCc9NGQ71kWhnYoDRffsDZy7m1HUU7MRU4nUMXAHNFBEJhkTZV9HdaL4gfuNBxLPc3BeM kLGaPbF5vWtANQopjrAXPo91QqP1Wv7 |
表 5‑3 相关样本梳理
样本下载地址 | 详细说明 |
hxxp[:]//137.74.155.105/.zankyo.tar | 以太币挖矿程序和启动脚本 |
hxxp[:]//david1337.dev/kl.tar.gz | 以太币挖矿程序、启动脚本、配置文件及XHide工具 |
hxxp[:]//david1337.dev/banner | IP地址识别工具 |
hxxp[:]//david1337.dev/brute | SSH暴力破解工具 |
hxxp[:]//david1337.dev/ps | 端口扫描工具 |
hxxp[:]//david1337.dev/lopata.tar.gz | 门罗币挖矿程序和启动脚本 |
hxxp[:]//david1337.dev/j.tar.gz | 门罗币挖矿程序和启动脚本 |
hxxp[:]//david1337.dev/find.sh | 目标主机活跃账户信息提取工具 |
IoCs |
B1E8B84795C9C307877F47D4A81C372E |
4452CEF303618C0E98F797DBD0FB00C7 |
1C09013A71FE594E9BF63C255DE69C91 |
378B933553E75ABD757D7DB7E1237FAA |
946689BA1B22D457BE06D95731FCBCAC |
45901E5B336FD0EB79C6DECB8E9A69CB |
DC6E956855BCF3EDE2658B11C2E5FA95 |
ADA7F255DE13ADC37AD69D5C97E6B602 |
139.99.124.170:80 |
hxxp[:]//137.74.155.105/.zankyo.tar |
hxxp[:]//david1337.dev/kl.tar.gz |
hxxp[:]//david1337.dev/banner |
hxxp[:]//david1337.dev/brute |
hxxp[:]//david1337.dev/ps |
hxxp[:]//david1337.dev/lopata.tar.gz |
hxxp[:]//david1337.dev/j.tar.gz |
hxxp[:]//david1337.dev/find.sh |