前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PsiXBot:模块化.NET僵尸网络的进化

PsiXBot:模块化.NET僵尸网络的进化

作者头像
FB客服
发布2020-04-18 22:54:20
7590
发布2020-04-18 22:54:20
举报
文章被收录于专栏:FreeBuf

本文中我们将分享我们对模块化恶意软件 PsiXBot 的分析。该恶意软件于 2017 年首次出现,最近一段时间核心代码与模块有了很大改变。其中包括键盘记录与 Outlook 和浏览器凭据窃取,随着这些新开发项目的完成以及在野观察到的第一批大规模投放,PsiXBot 已正式在恶意软件生态中崭露头角。

介绍

2019 年 2 月 21 日,我们开始注意到一个逐渐铺开的、名为 SmokeLoader 的 Bot,将会在受感染的机器上安装额外的恶意软件,分发 .NET 恶意软件样本。进一步研究发现,该 Bot 是一个具有模块化功能的 Bot,例如从受感染主机窃取数据以及接收、执行任务的功能。当 Spelevo Exploit Kit 在 3 月 16 日开始分发相同的恶意软件时,我们觉得还有进一步调查分析的必要。

从 2017 年开始开发到目前退出 Beta 版本,可以看到它通过多个感染向量进行分发,例如 Exploit Kit 与恶意软件加载器的联动。

分析

最初的分析起源于偶然发现的一条关于 PsiXBot 恶意软件早期版本的 Twitter。同时期也有其他 Twitter 中提到了同一恶意软件的早期版本。

版本概述:

2017 年年中时期:在野发现第一个版本(SHA256:d2ee07bf04947cac64cc372123174900725525c20211e221110b9f91b7806332) 2018 年 8 月:发现更新版本(SHA256:ce0e46fa1c5b463ed4a070a05594a79203ed2dd5df96cece9f875e2957fda4fa) 2019 年年初:通过不同的感染媒介分发最新版恶意软件(SHA256:ca30c42334fcc693320772b4ce1df26fe5f1d0110bc454ec6388d79dffea4ae8)

下图显示了不同版本程序的代码结构,左侧是第一个版本,右侧是最新版本:

请注意,PsiX 来源于程序的名字,看一下 PDB 路径可以发现相同的命名:G:\WORK\MONEY\BOT\NoName\PsiX\obj\Release\NoNameBot.pdb。

另外,看一下上图中间样本的代码结构,也可以看到 Radius。另外在 C&C 服务器中也可以发现部分字符:radcall.bit、radbot.bit 与 rrradiusspace.bit。

经过分析,各个版本间主要的差异是:

添加更多的模块支持新命令 使用 AES 加密字符串 版本从 Beta 1.0.0 更新到 1.0.1

以下都以最新版本为主进行介绍。

您可能已经注意到了,恶意软件使用 .NET 编写的,而且没有使用混淆。通常来说,主要的 Payload 都隐藏在一个 Dropper 内,一旦执行就会调用 Main() 函数。首先通过查看硬编码的互斥锁 gfdhfyf543543cdsdfsdf 来验证它是唯一运行的实例,然后在正式运行前执行大量循环模拟 sleep() 函数。

大多数字符串使用硬编码字符串密钥通过 AES 进行加密,分析样本的示例使用的是 1243hewqr8n1220g321&^*&^Tb0。

此外,它还会检查受害者的语言设置,如果语言设置为 ru-RU(俄语),恶意软件将会直接退出。对于所有其他语言设置,恶意软件将会继续恶意软件活动。

程序还会检查文件名是否与配置的文件名对应。对应不上时,通过 WMI 调用 CopyEx 函数后通过 WMI 复制二进制文件。安装路径为 %APPDATA% 文件夹内的 Local\Microsoft.exe。

安装成功后,恶意软件会与配置好的 C&C 服务器进行通信,C&C 服务器的地址由以下代码初始化:

代码语言:javascript
复制
public static string[] valid = new string[]{    
"pppoe.bit",    
"weather0.bit",    
"mygranny.bit",    
"six6.bit",    
"learncpp.bit"};

为了与 .bit 域名进行通信,使用硬编码的 DNS 服务器(193.37.213.223)。DNS 解析成功后,恶意软件会 ping 每个 C&C 服务器,使用第一个响应的 C&C 服务器。

Bot 向 C&C 报告从受感染主机收集的一些信息,示例请求如下:

代码语言:javascript
复制
action=call&user_name=john&bot_id=D63BAFF79F3A3504C70DC3298EE74C68&av=N/A&os_major=Microsoft 
Windows 7 Home Basic N &permissions=User&os_bit=64&cpu=Intel(R) 
Core(TM) i7-6820HQ CPU @ 2.70GHz&gpu=Standard VGA Graphics 
Adapter&ram=2048&hdd=C:12345/67890&version=1.0.1&user_group=Admin&pc_net=4.0

参数的含义是:

参数

含义

action

请求的目的

user_name

受感染主机的用户名

bot_id

标识受感染主机的唯一字符串

av

安装的杀毒软件名称

os_major

操作系统名称

permissions

用户的权限

os_bit

操作系统架构

cpu

CPU 型号

gpu

GPU 型号

ram

可用内存

hdd

硬盘序列号

version

恶意软件版本号(最新版为 1.0.1)

user_group

用户组名称

pc_net

安装的.NET框架版本

使用硬编码的密钥(63a6a2eea47f74b9d25d50879214997a)通过 R 算法对数据加密传输。值得注意的是,作者加密了大部分字符串,除了 R 加密密钥、纯文本的 C&C 服务器地址和 DNS 服务器地址。

C&C 服务器使用 JSON 进行回应,如下所示:

代码语言:javascript
复制
{    
result_code: [        
{            
"result_code": "200",        
}    
]}

如果服务器返回有效响应,则恶意软件会在请求执行新命令前休眠 95 秒,这是通过发送数据完成的:

代码语言:javascript
复制
action=command&bot_id=D63BAFF79F3A3504C70DC3298EE74C68

响应的示例如下:

代码语言:javascript
复制
{  
"result_code": [    
{      
"result_code": "200"    
}  
],  "commands": [    
{      
"command_id": "1485",      
"command_action": "GetSteallerPasswords",      
"command_data": "",      "command_arg": ""    
},    
{      
"command_id": "1486",      
"command_action": "StartSchedulerModule",      
"command_data": "",      
"command_arg": ""    
}  
]}

在上面的示例中,C&C 服务器 要求执行两个命令,command_action 值是要调用的方法的确切名称,恶意软件根据该值动态解析方法。为了避免硬编码字符串,作者实现了一种简单的方法来升级恶意软件:如果在执行期间恶意软件中没有 C&C 发送的方法名称,就简单的忽略该方法。其中一个调用的方法类型为 SukaBlyat,该词在俄语俚语中是一个冒犯性词汇。

这两个接收的命令被用来请求 C&C 服务器额外的模块,请求模块的数据传输通过:

代码语言:javascript
复制
action=module&bot_id=D63BAFF79F3A3504C70DC3298EE74C68&module_action=SchedulerModule

随后,下载并执行该模块,同时发送以下命令:

代码语言:javascript
复制
action=result&command_id=1485&command_result=6E756C6C

当前版本支持的命令:

Download DownloadAndExecute Execute GetInstalledSoft GetKeylogs GetOutlook GetProcessesList GetScreenShot GetSteallerCookies GetSteallerPasswords StartAndroidModule StartBTC StartComplexModule StartKeylogger StartNewComplexModule StartSchedulerModule StopProcess

模块

最新版本的 Bot 支持以下模块:

BrowserModule(stMod.exe):从各种浏览器以及 FileZilla FTP 客户端 Dump 密码或 Cookie。接受一个参数指定要 Dump 的数据:-passes 密码或 -cookies cookie。程序返回一个包含所有被盗信息的字符串,看起来基于 QuasarRAT 项目 BTCModule(LESHI.exe):接受参数与加密货币地址。支持 -btc、-ether、-ltc、-monero 和 -ripple。程序每隔 3 秒监视一次剪贴板,验证复制的文本是否是有效的地址。如果检查成功则将其替换为一个配置好的钱包地址 ComplexModule(Client.exe):旧版 QuasarRAT 的开源代码,特别需要注意的是字符串 xclient(它是此模块命名空间的一部分),该字符串出现在 2016 年的一个分支中。在反编译的源代码中,我们发现了 QuasarClient KeyLoggerModule(KeyLoggerModule.exe):使用 SetWindowsHookEx 的 API 进行全局 Hook 监听键盘操作,截获的数据保存在名为 Logger.log 的文件中 NewComplexModule(RemoteClient.exe):类似远程桌面的程序,允许用户进行交互并启动浏览器 OutlookModule(OutlookPasswordRecovery.dll):Dump Outlook 密码并返回包含检索到的信息的字符串 SchedulerModule(Scheduler.exe):用于确保持久性,它只创建一个计划任务,每分钟运行一次 Bot

分发

通常来说,有两种方式分发恶意软件:

感染新的受害者

利用现有感染的机器

PsiXBot 通过垃圾邮件或者 Exploit Kit(例如 Spelevo Exploit Kit)分发恶意软件。以及通过地下黑市提供的服务,在已感染的设备通过如 SmokeLoader 等恶意软件上加载 PsiXBot。

SmokeLoader

执行分发 PsiXBot 恶意软件任务的 SmokeLoader 使用以下元数据进行配置:

代码语言:javascript
复制
server_rc4_key_recv     
e097b3a6server_rc4_key  
40e5223bbot_version     
2018seller  
new1c&c    
http://5gssghhs2w.org/2/c&c    
http://dvhwzq.ru/2/c&c    
http://hdxaet.ru/2/c&c    
http://hghwwgh6.info/2/c&c    
http://jdcbhs.ru/2/c&c    
http://kdcbst.ru/2/c&c    
http://kkted54d.ru/2/c&c    
http://si3213gher.com/2/c&c    
http://vshmesz.com/2/c&c    
http://vygxxhh.bit/2/

SmokeLoader 任务分发的 URL 是:hxxp://favoritfile.in/7-8.exe。

从分发的地址下载的样本的 SHA256 为:9b8c0c82fe79ae15e0f723d6aa267d38d359a7260613a091a2d70d770488e919。

该样本的 C&C 服务器地址为:

代码语言:javascript
复制
myauto.bitsokoban.bit

Spelevo Exploit Kit

Spelevo Exploit Kit 分发的样本的 SHA256 为:ca30c42334fcc693320772b4ce1df26fe5f1d0110bc454ec6388d79dffea4ae8。

该样本的 C&C 服务器为:

代码语言:javascript
复制
learncpp.bitmygranny.bitpppoe.bitsix6.bitweather0.bit

另一个分发投递的渠道是垃圾邮件,我们观测到的其中一个垃圾邮件活动与意大利有关,包含以下元数据:

代码语言:javascript
复制
Receiver    
from pecfe04.sogei.it (pecfe04.sogei.it [26.2.42.237]) by PECP-BE02 (lmtpd) with LMTP id 28663.002; 
Tue, 8 Jan 2019 16:22:51 +0100 (CET)Receiver    
from PECP-FE04 ([127.0.0.1]) by pecfe04.sogei.it (Dovecot) with LMTP id 474fM6e/NFysCAAAxEz/xA ; 
Tue, 08 Jan 2019 16:22:51 +0100Receiver    
from mx.pec.sogei.it (localhost [127.0.0.1]) by smtps.pec.sogei.it (Postfix) with ESMTP id 43YwxQ6pm5zgYCT for <protocollo@pec.agenziariscossione.gov.it>; 
Tue, 8 Jan 2019 16:22:50 +0100 (CET)Receiver    
from smtps.pec.aruba.it (smtpecgo01.pec.aruba.it [80.88.94.21]) by mx.pec.sogei.it (Postfix) with ESMTPS for <protocollo@pec.agenziariscossione.gov.it>; 
Tue, 8 Jan 2019 16:22:50 +0100 (CET)Receiver    
from avvocatismcv.com (ipvspec1.pec.ad.aruba.it [62.149.152.1]) by smtps.pec.aruba.it (Postfix) with ESMTPSA id 43YwxQ2V8Sz2L7hcc; 
Tue, 8 Jan 2019 16:22:50 +0100 (CET)Reply-To    
luigi.ferrandino@avvocatismcv.comReturn-Path     luigi.ferrandino@avvocatismcv.comAttachments     
["daticert.xml", "Nuovi_contratti_2019__145038.zip", "smime.p7s"]Number_of_attachments   
3Date    2019-01-08 15:22:50 (UTC)To  ["luigi.ferrandino@avvocatismcv.com"]From    
"Per conto di: luigi.ferrandino@avvocatismcv.com" <posta-certificata@pec.aruba.it>Subject     
POSTA CERTIFICATA: Re: Notificazione ai sensi della legge n. 53 del 1994

该压缩文件包含一个 JavaScript 脚本(SHA256:e4006cde4a96048ff25727459abfae0ffd37985d04581793be784d7cf50e32d7),一旦执行从 hxxp://img.martatovaglieri.it/index?83836 下载下一个阶段的 Payload。

下载的二进制文件的 SHA256 为:db1f57ffd6c58e1d40823e2c8834e45a67271557ceaa1b3bcccf4feab83243a1。

该样本文件的 C&C 服务器为:

代码语言:javascript
复制
anyname.bit

控制面板

下图显示了 PsiXBot 的登录面板:

在 HTML 中可以发现以下代码:

代码语言:javascript
复制
<!-- saved from url=(0043)hxxps://kyrkymalol.000webhostapp.com/admin/ -->

IOC

代码语言:javascript
复制
d2ee07bf04947cac64cc372123174900725525c20211e221110b9f91b7806332ce0e46fa1c5b463ed4a070a05594a79203ed2dd5df96cece9f875e2957fda4faca30c42334fcc693320772b4ce1df26fe5f1d0110bc454ec6388d79dffea4ae86a9841b7e19024c4909d0a0356a2eeff6389dcc1e2ac863e7421cca88b94e7e06e123ce5c7c48132f057428c202638eb9d0e4daa690523619316a9f72b69d17f3846fcfdc6414685efd217a88613ed3383a61f8313a0aa7ecdcde8ed99c8ebac7bac9b3b5598059db770cdeee74f0b1cf3078c2cb54cc2fcd18ae811d42a5d630f931fec3fd436d974d767f84f66b44f6f2fc168d9e6d77b2aa2e9d3bf4cd604a5edab1596346358c8899b9f81ec49b0560da929327e0ef08ab51dcb277c9b70b01fbb8cfeb16c4232fddea6dea53212a57e73ef32ee20056cd69d29570bf55c

可以在 GitHub 页面上找到完整的 IOC 列表。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 分析
  • 模块
  • 分发
    • SmokeLoader
      • Spelevo Exploit Kit
      • 控制面板
      • IOC
      相关产品与服务
      日志服务
      日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档