SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

文章首发地址:
https://xz.aliyun.com/t/15430
文章首发作者:
T0daySeeker

概述

在上两篇《针对LOL玩家的最新钓鱼活动剖析-大量国内玩家受控》及《BlackNET僵尸网络攻击场景复现及通信模型剖析》文章中,笔者对最新针对LOL玩家的钓鱼攻击活动以及开源BlackNET僵尸网络项目进行了详细的技术剖析,接下来,笔者将继续对报告中提到的SilentCryptoMiner挖矿木马进行详细的剖析。

通过对开源SilentCryptoMiner挖矿木马项目进行详细的剖析,笔者发现:

  • 原开源项目地址https://github.com/UnamSanctam/SilentCryptoMiner,由于目前此开源项目已被Github禁用,因此笔者通过其他渠道找到了SilentCryptoMiner 3.2.0版本的Release程序;
  • SilentCryptoMiner挖矿木马配套了WEB管理平台,项目地址为https://github.com/UnamSanctam/UnamWebPanel
  • SilentCryptoMiner挖矿木马通过进程注入、rootkit、进程监控等技术,可将被注入的挖矿进程隐藏和长期驻留;

小插曲

由于SilentCryptoMiner的原开源项目已被Github禁用,因此,笔者只能尝试从网络中查找备份项目,在搜索的过程中,笔者也是遇到了一个比较无语的事情,就是通过在Github上直接搜索SilentCryptoMiner字符串,匹配出的项目均带有病毒木马。。。也是醉了。。。 相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马框架

模拟构建

SilentCryptoMiner挖矿木马框架分为WEB面板控制端和远控木马编译器。

WEB面板控制端支持功能如下:

  • 查看上线信息,可查看被控主机活动窗口

WEB面板控制端运行页面如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

远控木马编译器支持对木马程序进行自定义配置。

远控木马编译器运行截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

框架目录剖析

尝试对SilentCryptoMiner挖矿木马框架的目录结构进行剖析,梳理发现:

  • WEB面板控制端:数据库文件存放于/db/unamwebpanel.db文件中;
  • 远控木马编译器:单个exe程序,运行后将释放gcc编译环境;

WEB面板控制端源码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

远控木马编译器运行后释放的gcc编译环境截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner攻击场景复现

生成木马

根据远控木马编译器可实现自定义木马程序配置:

  • Main:配置挖矿信息
    • Connection:矿池信息配置、注入进程配置等;
    • Mining:挖矿木马基本功能配置;
    • Advanced:挖矿木马高级功能配置(远控地址、上线地址);
  • Startup:自启动信息配置,启用watchdog等;
  • Assembly:文件描述信息配置
  • Icon:自定义图标
  • Signature
  • Options:添加Windos Defender例外、禁用Windows更新、使用Rootkit隐藏挖矿程序等;
  • Build:编译木马;

相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

编译木马

在生成木马阶段,当点击【Build】按钮后,远控木马编译器即会从自身释放相关目录及文件:

  • UCompilers目录:gcc编译环境
  • UFiles目录:木马程序源代码(编译完后删除)
  • xxx.cpp:木马程序源代码(编译完后删除)
  • resource.o:木马程序源代码(编译完后删除)

编译操作日志如下:

Starting...
Building miner sets...
Extracting miner files...
Converting resources...
Compiling Miner...
Compiling Uninstaller...
Compiling Checker...
Done!

成功编译后,远控木马编译器将在指定目录生成三个文件:

  • XXX.exe:木马主程序
  • XXX-check.exe:用于检测木马主程序是否运行
  • XXX-uninstaller.exe:用于卸载木马主程序

相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

尝试提取编译过程中使用的编译命令,梳理如下:

"C:UsersadminDesktopUCompilersgccbing++.exe" -m64 -Wl,-subsystem,windows -mwindows "123-watchdog.cpp" UFiles*.cpp UFilesSyscalls*.c UFilesSyscallssyscallsstubs.std.x64.s -O3 -static-libgcc -static-libstdc++ -fno-threadsafe-statics -s -o "123-watchdog.exe"

"C:UsersadminDesktopUCompilersgccbing++.exe" -m64 -Wl,-subsystem,windows -mwindows "123.cpp" UFiles*.cpp UFilesSyscalls*.c UFilesSyscallssyscallsstubs.std.x64.s resource.o -O1 -static-libgcc -static-libstdc++ -fno-stack-protector -fno-threadsafe-statics -fvisibility=hidden -Wl,--strip-all -s -o "123.exe"

相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

木马上线

在受控主机上直接运行XXX.exe木马程序,即可实现木马上线。上线成功后的WEB面板控制端运行页面如下**(使用Administrator权限运行时,Active Windows显示为Running as System)**,可查看被控主机上的活动窗口:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

使用XXX-check.exe即可查看当前木马程序是否运行,若运行,则尝试提取配置信息,相关运行截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

使用XXX-uninstaller.exe即可卸载当前木马程序。卸载后XXX-check.exe运行截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

受控主机

尝试对受控主机进行简单的临检分析,发现不同配置在被控主机中的表现不一样:

  • 配置一:默认开启[Main]->[Advanced]->[Stealth Targets]配置

创建explorer.exe进程,向explorer.exe进程注入恶意模块

相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

  • 配置二:在配置一基础上,开启[Options]->[Use Rootkit(Hide Miner)]、[Options]->[Run as Administrator]配置

使用rootkit向Taskmgr.exe,ProcessHacker.exe,perfmon.exe,procexp.exe,procexp64.exe程序隐藏挖矿进程dialer.exe

相关截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner木马技术剖析

由于SilentCryptoMiner木马在编译过程中做了一些优化选项,因此导致默认生成的SilentCryptoMiner木马分析起来还是会花费一些时间。

相关优化选项如下:

#优化和静态链接选项
-O1: 启用优化,-O1 是较低级别的优化选项。
-static-libgcc: 静态链接 GCC 库,避免使用动态库版本。
-static-libstdc++: 静态链接 C++ 标准库,避免使用动态库版本。
#安全和其他编译选项
-fno-stack-protector: 禁用栈保护机制(通常用于防止缓冲区溢出攻击)。
-fno-threadsafe-statics: 禁用线程安全静态初始化。
-fvisibility=hidden: 将符号的可见性设置为隐藏,减少符号暴露。
-Wl,--strip-all: 传递给链接器的选项,移除所有符号信息,减小文件体积。
-s: 剥离符号信息,进一步减小文件体积。

管理员权限检查

通过分析,发现样本运行过程中,将调用NtOpenProcessToken、NtQueryInformationToken函数,以检测当前进程是否具备管理员权限。

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

获取PEB信息

通过分析,发现样本运行过程中,将获取PEB信息,用于后续获取环境变量,相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

Windows Defender中添加排除项

通过分析,发现样本运行过程中,将调用powershell命令将UserProfile、ProgramFiles目录添加到Windows Defender的排除项中。

Powershell命令如下:

Add-MpPreference -ExclusionPath @($env:UserProfile, $env:ProgramFiles) -Force

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

关闭多个 Windows 服务

通过分析,发现样本运行过程中,将通过执行cmd命令和修改注册表的方式关闭多个Windows服务。

cmd命令如下:

sc stop UsoSvc & sc stop WaaSMedicSvc & sc stop wuauserv & sc stop bits & sc stop dosvc

注册表路径如下:

\Registry\Machine\SYSTEM\CurrentControlSet\Services\UsoSvc
\Registry\Machine\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc
\Registry\Machine\SYSTEM\CurrentControlSet\Services\wuauserv
\Registry\Machine\SYSTEM\CurrentControlSet\Services\BITS
\Registry\Machine\SYSTEM\CurrentControlSet\Services\dosvc

相关命令解析如下:

  • sc stop UsoSvc:停止 UsoSvc(Update Session Orchestrator Service),该服务与 Windows 更新管理有关。
  • 重命名RegistryMachineSYSTEMCurrentControlSetServicesUsoSvc注册表为UsoSvc_bkp
  • sc stop WaaSMedicSvc:停止 WaaSMedicSvc(Windows Update Medic Service),该服务负责修复 Windows 更新问题。
  • 重命名RegistryMachineSYSTEMCurrentControlSetServicesWaaSMedicSvc注册表为WaaSMedicSvc_bkp
  • sc stop wuauserv:停止 wuauserv(Windows Update Service),这是负责自动下载和安装 Windows 更新的服务。
  • 重命名RegistryMachineSYSTEMCurrentControlSetServiceswuauserv注册表为wuauserv_bkp
  • sc stop bits:停止 bits(Background Intelligent Transfer Service),负责后台传输和更新下载任务。
  • 重命名RegistryMachineSYSTEMCurrentControlSetServicesBITS注册表为BITS_bkp
  • sc stop dosvc:停止 dosvc(Delivery Optimization Service),用于优化 Windows 更新的传输和下载。
  • 重命名RegistryMachineSYSTEMCurrentControlSetServicesdosvc注册表为dosvc_bkp

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

解密算法

通过分析,发现样本运行过程中,将从自身载荷中解密PE文件,随后将把PE文件注入至进程中。

解密算法:循环异或32字节随机字符

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

注入进程

通过分析,发现样本运行过程中,将通过如下方法进行注入:

  • 解密rootkit
  • 将rootkit临时写入%temp%目录
  • 创建dialer.exe进程
  • 将rootkit注入至dialer.exe进程

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

自启动

通过分析,发现样本运行过程中,将通过以下方法实现自启动:

  • 执行powershell命令实现根据不同的操作系统版本选择不同的方法来创建计划任务
  • 将文件复制至自启动目录
  • 启动计划任务
  • 退出当前进程

powershell命令如下:

<#bovfveoi#> IF([System.Environment]::OSVersion.Version -lt [System.Version]"6.2") { schtasks /create /f /sc onlogon /rl highest /ru 'System' /tn 'GoogleUpdateTaskMachineQC' /tr '''%S''' } Else { Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute '%S')  -Trigger (New-ScheduledTaskTrigger -AtStartup)  -Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DisallowHardTerminate -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -ExecutionTimeLimit (New-TimeSpan -Days 1000))  -TaskName 'GoogleUpdateTaskMachineQC' -User 'System' -RunLevel 'Highest' -Force;

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

成功创建计划任务截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

注入watchdog

通过分析,发现样本运行过程中,将通过如下方法注入watchdog监控程序:

  • 解密watchdog
  • 将watchdog临时写入%temp%目录
  • 创建dialer.exe进程
  • 创建互斥对象:BaseNamedObjectsslbtivpxi
  • 将watchdog注入至dialer.exe进程

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

注入挖矿木马

通过分析,发现样本运行过程中,将通过如下方法注入挖矿程序:

  • 解密挖矿程序
  • 将挖矿程序临时写入%temp%目录
  • 创建dialer.exe进程
  • 创建互斥对象:BaseNamedObjectsvlztqluckoqlspci
  • 挖矿进程运行参数:vlztqluckoqlspci 6E3sjfZq2rJQaxvLPmXgsLarbp/k3bIoZjG0PoksqIhLJJ5yIDhrU0AIwicfJGQnW29JR6ADwqT6UN0iMcS3dvBQZfMAdEGIGlmXXLNLFsBjaLgY+eKmMld3DhJr2ChGQe2XoLgZ2SvHHFGyn6Z8pAQ4hjWHkFK3Ch/3a6pYC4XMCFOdHgN/BrSp9Yy0Xub9nfhBEe5jZ9ibblS7QSx+XzFN+Y8M71qt9OLGqCnZryXT0FEas88VbnOH43MDYo36DQEW0piK5cZlr4RPz6bDRw==
  • 将挖矿程序注入至dialer.exe进程

相关代码截图如下:

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

挖矿木马参数

尝试提取挖矿木马,并对其进行分析,发现挖矿木马运行后,将使用如下方法解密配置信息:

  • Base64解码
  • AES-CBC解密
    • KEY:UXUUXUUXUUCommandULineUUXUUXUUXU
    • IV:UUCommandULineUU

SilentCryptoMiner挖矿木马攻击场景复现及技术剖析


原文始发于微信公众号(T0daySeeker):SilentCryptoMiner挖矿木马攻击场景复现及技术剖析

版权声明:admin 发表于 2024年9月4日 下午4:31。
转载请注明:SilentCryptoMiner挖矿木马攻击场景复现及技术剖析 | CTF导航

相关文章