1 概述
近期,安天CERT监测到多起Outlaw挖矿僵尸网络攻击事件,该挖矿僵尸网络最早于2018年被发现,主要针对云服务器从事挖矿活动,持续活跃。安天CERT在分析近期的攻击事件中发现,该挖矿僵尸网络样本在第三版本基础上有了重要更新,其功能更加多样、隐匿性更高、清除更加困难。主要传播途径和功能依旧是SSH暴力破解攻击目标系统,植入SSH公钥,以达到长期控制目标系统的目的,同时下载执行基于Perl脚本语言编写的后门和开源门罗币挖矿木马,使用扫描和暴力破解工具对其他主机进行相应攻击。
2 攻击流程
Outlaw挖矿僵尸网络首先会通过扫描SSH服务对目的主机进行暴力破解,获取权限后下载最终载荷文件dota3.tar.gz,然后不落地执行tddwrt7s.sh脚本中的指令,初始化脚本,将载荷放到/tmp目录下,解压缩载荷文件,并执行载荷文件中的第一个Perl脚本initall,该脚本最终会执行载荷文件中的第二个Perl脚本init2,会在cron.d文件中写入计划任务,依次执行a、b、c文件夹中的a、a、start脚本。
- a文件夹:
- a文件的主要作用是检测与清除RedTail挖矿僵尸网络相关的恶意行为,执行run文件。
- run文件用于启动并管理名为kswapd00的挖矿程序以及stop脚本。
- stop文件的主要功能是执行init0文件以及清理目标系统中的指定文件和进程。
- init0文件用于全面排查并清理与挖矿相关的活动。
- b文件夹:
- a文件的主要功能是执行stop和run文件。
- stop文件主要是终止并删除预设置的特定进程。
- run文件是一个ShellBot的Perl脚本,主要功能为端口扫描、DDoS攻击、反向Shell和发回状态消息等。
- c文件夹:
- start文件会执行run文件。
- run文件的主要功能是根据系统的CPU物理核心数和架构来决定运行top和stop文件。
- stop文件主要功能是批量终止与特定挖矿进程或系统监控进程等相关的任务。
- top文件首先会获取受害机器的系统架构,根据系统架构调整默认线程数,随后执行kthreadadd脚本并传递参数。
- kthreadadd文件针对不同系统架构提供对应的可执行文件。
- kthreadadd32/kthreadadd64文件是针对不同架构扫描和暴力破解工具,对扫描出来的IP地址进行针对性的22端口暴力破解。
图 2‑1 Outlaw挖矿僵尸网络攻击流程图
3 样本梳理与功能分析
3.1 样本梳理
针对Outlaw挖矿僵尸网络攻击,对其样本及功能进行梳理,如下表所示:
表 3‑1 样本及功能梳理
样本名 | 落地名 | 样本路径 | 功能 |
tddwrt7s.sh | 不落地 | 内存中 | 解压缩落地载荷并执行初始脚本initall |
initall | initall | /tmp/.X2pP-unix/.rsync/initall | 执行init2脚本 |
init/init2 | init/init2 | /tmp/.X2pP-unix/.rsync/ | 将计划任务写入cron.d文件中,并依次执行每个文件夹下的初始脚本 |
a文件夹/a | a | /tmp/.X2pP-unix/.rsync/a/a /home/用户名/.configrc7/a/a | 检测与清除RedTail挖矿僵尸网络相关的恶意行为 |
a文件夹/run | run | /tmp/.X2pP-unix/.rsync/a/run /home/用户名/.configrc7/a/run | 启动挖矿程序kswapd00 |
upd | upd | /home/用户名/.configrc7/a/upd | 挖矿程序守护脚本 |
a文件夹/stop | stop | /tmp/.X2pP-unix/.rsync/a/stop /home/用户名/.configrc7/a/stop | 清理目标系统中的指定文件和进程 |
a文件夹/init0 | init0 | /tmp/.X2pP-unix/.rsync/a/init0 /home/用户名/.configrc7/a/init0 | 检测并终止与加密货币挖矿相关的活动 |
a文件夹/kswapd00 | kauditd0 | /tmp/.X2pP-unix/.rsync/a/kswapd00 /tmp/.kswapd00 /var/tmp/.kswapd00 /home/用户名/.configrc7/a/kswapd00 | 挖矿程序挖矿 |
b文件夹/a | a | /tmp/.X2pP-unix/.rsync/b/a /home/用户名/.configrc7/b/a | 执行stop文件 |
sync | sync | /home/用户名/.configrc7/b/sync | 执行run文件 |
b文件夹/stop | stop | /tmp/.X2pP-unix/.rsync/b/stop /home/用户名/.configrc7/b/stop | 终止一系列特定的进程,并且删除特定的文件 |
b文件夹/run | edac0 | /tmp/.X2pP-unix/.rsync/b/run /home/用户名/.configrc7/b/run | Stealth Shellbot改编脚本 |
c文件夹/start | start | /tmp/.X2pP-unix/.rsync/c/ | 创建一个名为aptitude的Shell脚本 |
aptitude | aptitude | /tmp/.X2pP-unix/.rsync/c/aptitude | 执行run脚本 |
c文件夹/run | run | /tmp/.X2pP-unix/.rsync/c/run | 判断系统架构 |
c文件夹/stop | stop | /tmp/.X2pP-unix/.rsync/c/stop | 结束竞品相关的任务 |
c文件夹/top | top | /tmp/.X2pP-unix/.rsync/c/top | 获取系统架构 |
c文件夹/kthreadadd | kthreadadd | /tmp/.X2pP-unix/.rsync/c/kthreadadd | 判断系统架构 |
c文件夹/kthreadadd32和64 | kauditd0 | /tmp/.X2pP-unix/.rsync/c/kthreadadd32和64 | 扫描和暴力破解其他地址 |
表 3‑2 挖矿程序中的矿池地址和钱包地址
矿池地址 | 钱包地址 |
88.218.17.122:80 | 483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS |
179.43.139.84:80 | |
179.43.139.85:442 | |
185.165.169.188:80 | |
185.165.169.188:442 | |
185.247.224.154:80 | |
sglt5wettkyseyxrvlmn453ivmeb3zqzqu3b3sgspcuxf2h6ggx2i4qd.onion:8080 |
3.2 功能分析
样本载荷文件整体目录结构如下图所示:
图 3‑1 载荷目录结构
3.2.1 未落地脚本——tddwrt7s.sh文件
tddwrt7s.sh文件主要功能是检查特定目录是否存在,如果存在则执行其中的初始化脚本;如果不存在,则进行一系列文件操作,包括删除旧文件、创建新目录、并最终执行另一个脚本。
图 3‑2 对载荷进行文件操作
3.2.2 执行后续脚本——initall文件
initall文件的功能是判断主目录下是否存在.configrc7目录,如果不存在,执行init2文件,如果存在,则退出。
图 3‑3 执行init2文件
3.2.3 写入计划任务——init/init2文件
init/init2这两个文件功能大致相同,其核心功能为在cron.d文件中写入计划任务,定期执行挖矿恶意样本。
图 3‑4 在cron.d文件中写入计划任务
3.2.4 a文件夹
3.2.4.1 检测与清除RedTail挖矿僵尸网络——a文件
a文件是a文件夹下的初始文件,该文件首先会删除当前用户的所有计划任务,检查是否具有root权限:如果是root,删除并重建/usr/bin/systemtd文件,禁用/usr/bin目录的写权限,以隐藏恶意文件或防止系统更新覆盖。
图 3‑5 检查是否具有root权限
接下来是检测与清除RedTail挖矿僵尸网络相关的恶意行为。具体分析如下:检查定时任务(crontab)中是否存在“redtail”、提取与“redtail”相关的文件路径、获取CPU占用最高的进程PID、终止高CPU占用的进程及其子进程、删除与“redtail”相关的文件、从计划任务中移除所有包含“redtail”的条目。
图 3‑6 检测与清除RedTail挖矿僵尸网络
创建一个名为upd的shell脚本文件,主要用于检查挖矿木马进程是否存活。如果已存在运行的进程,则退出。否则,启动run文件重新执行挖矿木马,确保持续运行。
图 3‑7 检查挖矿木马进程是否存活
通过检测CPU型号并设置特定的MSR寄存器值,以及优化hugepages的配置,来提高挖矿木马的效率。
图 3‑8 优化hugepages配置提高挖矿木马效率
3.2.4.2 启动挖矿程序——run文件
run文件用于启动并管理名为kswapd00的挖矿程序。它先停止潜在冲突进程,记录当前目录路径,后台运行挖矿程序并隐藏其输出,最后保存挖矿进程的PID以便后续管理。
图 3‑9 启动并管理名为kswapd00的挖矿程序
3.2.4.3 执行后续脚本——stop文件
stop文件的主要功能是执行init0文件以及清理目标系统中的指定文件和进程。具体包括:删除配置文件(如xmrig.json)、停止和结束多个与挖矿程序相关的潜在干扰的进程。
图 3‑10 执行init0文件
3.2.4.4 排查并清理竞品挖矿活动——init0文件
init0文件是一个可以全面排查并清理与挖矿活动相关的工具,该工具主要功能是检测并终止与加密货币挖矿相关的活动,包括清理文件、结束进程和阻断网络连接。
图 3‑11 排查并清理竞品挖矿活动
3.2.4.5 挖矿程序——kswapd00
该文件为开源挖矿程序XMRig改编而来,使用的版本为6.22.1,将挖矿配置文件内置在程序中。
图 3‑12 开源挖矿程序XMRig改编
3.2.5 b文件夹
3.2.5.1 执行后续脚本——a文件
a文件的主要功能是执行stop文件以及创建一个新的脚本sync并运行run文件。
图 3‑13 执行run文件
3.2.5.2 终止特定进程——stop文件
stop文件主要功能是终止一系列特定的进程,并且删除特定的文件。
图 3‑14 终止一系列特定的进程
3.2.5.3 IRC后门程序——run文件
run文件实际是一个ShellBot的Perl脚本,由开源Perl脚本Stealth Shellbot改编而来,通过443端口连接到IRC服务器,主要功能为端口扫描、DDoS攻击、反向Shell和发回状态消息等。
图 3‑15 IRC后门程序
3.2.6 c文件夹
3.2.6.1 执行后续脚本——start
start文件会创建一个名为aptitude的Shell脚本,然后利用该脚本执行run文件。
图 3‑16 执行run文件
3.2.6.2 检查系统的CPU物理核心数和架构——run文件
run文件的主要功能是根据系统的CPU物理核心数和架构来决定是否在后台运行top程序,以及在运行前是否需要执行额外的等待和执行stop文件操作。
图 3‑17 检查系统的CPU物理核心数和架构
3.2.6.3 批量终止挖矿进程相关任务——stop文件
stop文件主要功能是批量终止与特定挖矿进程或系统监控进程等相关的任务,并清理临时文件。
图 3‑18 批量终止挖矿进程相关任务
3.2.6.4 获取目标主机系统架构——top文件
top文件首先会获取目标主机的系统架构,根据系统架构调整默认线程数,arm架构线程数设置为75,i686架构线程数设置为325,其他架构默认线程数为475。
图 3‑19 获取目标主机系统架构
随后执行kthreadadd脚本并传递参数,为后续扫描做准备。
图 3‑20 执行kthreadadd脚本并传递参数
3.2.6.5 对目标主机进行适配——kthreadadd
kthreadadd文件针对不同系统架构提供对应的可执行文件,确保在目标设备上能够正确运行扫描程序。
图 3‑21 对目标主机进行适配
3.2.6.6 扫描和暴力破解工具——kthreadadd32/kthreadadd64文件
kthreadadd32/kthreadadd64文件是针对不同架构扫描和暴力破解工具,通过top文件传来的参数进行扫描,对扫描出来的IP地址进行针对性的22端口暴力破解。
图 3‑22 扫描和暴力破解工具命令行界面
该工具存在如下C2服务器地址连接。
图 3‑23 C2服务器地址
4 Outlaw挖矿僵尸网络落地排查与清除方案
4.1 Outlaw挖矿僵尸网络落地识别
1. 计划任务 /home/用户名/.configrc7/cron.d */30 * * * * /tmp/.kswapd00 || /home/pc/.configrc7/a/kswapd00 > /dev/null 2>&1 5 6 */2 * 0 /home/pc/.configrc7/a/upd>/dev/null 2>&1 @reboot /home/pc/.configrc7/a/upd>/dev/null 2>&1 5 8 * * 0 /home/pc/.configrc7/b/sync>/dev/null 2>&1 @reboot /home/pc/.configrc7/b/sync>/dev/null 2>&1 0 0 */3 * * /tmp/.X2pP-unix/.rsync/c/aptitude>/dev/null 2>&1 2. 文件 /tmp/.X2pP-unix/* /tmp/.kswapd00 /home/用户名/.configrc7*(root用户/root/.configrc7) /var/tmp/.kswapd00 3. 进程名 kthreadadd32/64 kauditd0 edac0 4. 网络 185.165.169.188 179.43.139.83 88.218.17.122:80 179.43.139.84 179.43.139.85 185.247.224.154:80 5. SSH公钥 ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr |
4.2 清除方案
1. 删除计划任务 crontab -r 2. 删除相关文件 rm -rf /tmp/.X2pP-unix rm -rf /tmp/.kswapd00 rm -rf /var/tmp/.kswapd00 rm -rf /home/用户名/.configrc7(root用户/root/.configrc7) 3. 结束相关进程 kthreadadd32/64 kauditd0 edac0 4. 删除SSH密钥 rm -rf /home/用户名/.ssh/authorized_keys |
5 事件对应的ATT&CK映射图谱
针对攻击者投放挖矿木马的完整过程,安天梳理本次攻击事件对应的ATT&CK映射图谱如下图所示。
图 5‑1 事件对应的ATT&CK映射图谱
攻击者使用的技术点如下表所示:
表 5‑1 事件对应的ATT&CK技术行为描述表
ATT&CK阶段/类别 | 具体行为 | 注释 |
侦察 | 主动扫描 | 扫描22端口 |
初始访问 | 利用外部远程服务 | 利用SSH远程访问 |
执行 | 利用命令和脚本解释器 | 使用shell脚本 |
持久化 | 利用外部远程服务 | 利用SSH公钥持久化 |
利用计划任务/工作 | 创建计划任务 | |
防御规避 | 修改文件和目录权限 | 修改文件和目录权限 |
删除信标 | 删除自身 | |
混淆文件或信息 | 使用混淆技术混淆文件 | |
凭证访问 | 暴力破解 | SSH暴力破解 |
网络嗅探 | 扫描特定端口 | |
命令与控制 | 使用应用层协议 | 使用IRC协议 |
影响 | 资源劫持 | 占用CPU资源 |
6 防护建议
针对挖矿攻击,安天建议企业采取如下防护措施:
- 安装终端防护:安装反病毒软件,针对不同平台建议安装安天智甲终端防御系统Windows/Linux版本;
- 加强SSH口令强度:避免使用弱口令,建议使用16位或更长的口令,包括大小写字母、数字和符号在内的组合,同时避免多个服务器使用相同口令;
- 及时更新补丁:建议开启自动更新功能安装系统补丁,服务器应及时更新系统补丁;
- 及时更新第三方应用补丁:建议及时更新第三方应用如Redis等应用程序补丁;
- 开启日志:开启关键日志收集功能(安全日志、系统日志、错误日志、访问日志、传输日志和Cookie日志),为安全事件的追踪溯源提供基础;
- 主机加固:对系统进行渗透测试及安全加固;
- 部署入侵检测系统(IDS):部署流量监控类软件或设备,便于对恶意代码的发现与追踪溯源。安天探海威胁检测系统(PTD)以网络流量为检测分析对象,能精准检测出已知海量恶意代码和网络攻击活动,有效发现网络可疑行为、资产和各类未知威胁;
- 安天服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查;安天7*24小时服务热线:400-840-9234。
7 IoCs
IoCs |
88.218.17[.]122 |
179.43.139[.]84 |
179.43.139[.]85 |
185.165.169[.]188 |
185.247.224[.]154 |
sglt5wettkyseyxrvlmn453ivmeb3zqzqu3b3sgspcuxf2h6ggx2i4qd.onion |
179.43.139[.]83 |
179.43.180[.]82 |
179.43.180[.]83 |
185.247.224[.]154 |
185.196.9[.]59 |
185.196.8[.]139 |
hxxp://188.165.194.59/tddwrt7s.sh |
hxxp://188.165.194.59/dota3.tar.gz |
hxxp://193.86.16.40/tddwrt7s.sh |
hxxp://193.86.16.40/dota3.tar.gz |
hxxp://161.35.72.143/tddwrt7s.sh |
hxxp://80.79.125.90/dota3.tar.gz |
hxxp://157.245.129.95/dota3.tar.gz |
hxxp://152.32.202.213/dota3.tar.gz |
hxxp://185.140.12.250/dota3.tar.gz |
hxxp://188.165.194.59/dota3.tar.gz |
hxxp://161.35.231.77/dota3.tar.gz |
hxxp://213.199.46.247/dota3.tar.gz |
6DA1E7B40CE4DDD784ABBA9594EF4468 |
1C36E8AAAC825BCB9A086ECF2A471C89 |
E8FFC6AAC5C2784B10319C25D229A44E |
99EF3C8F719E40E4A2DBC34C45F6FB64 |
DD83F74474E80FCD3CA122AA9A05D583 |
5B4E8EFF7A4C6AC80AE09EB26D0617BF |
参考资料
- 安天.典型挖矿家族系列分析一丨Outlaw(亡命徒)挖矿僵尸网络[R/OL].(2022-11-03)
https://www.antiy.cn/research/notice&report/research_report/20221103.html