8

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

 4 years ago
source link: https://www.freebuf.com/articles/system/230877.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文中我们将分享我们对模块化恶意软件 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)

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

ZnqENfJ.jpg!web

请注意,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 服务器的地址由以下代码初始化:

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 报告从受感染主机收集的一些信息,示例请求如下:

action=call&user_name=john⊥_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 进行回应,如下所示:

{
    result_code: [
        {
            "result_code": "200",
        }
    ]
}

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

action=command⊥_id=D63BAFF79F3A3504C70DC3298EE74C68

响应的示例如下:

{
  "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 服务器额外的模块,请求模块的数据传输通过:

action=module⊥_id=D63BAFF79F3A3504C70DC3298EE74C68&module_action=SchedulerModule

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

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 使用以下元数据进行配置:

server_rc4_key_recv     e097b3a6
server_rc4_key  40e5223b
bot_version     2018
seller  new1
c&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 服务器地址为:

myauto.bit
sokoban.bit

Spelevo Exploit Kit

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

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

learncpp.bit
mygranny.bit
pppoe.bit
six6.bit
weather0.bit

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

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 +0100
Receiver    from mx.pec.sogei.it (localhost [127.0.0.1]) by smtps.pec.sogei.it (Postfix) with ESMTP id 43YwxQ6pm5zgYCT for <[email protected]>; 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 <[email protected]>; 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    [email protected]
Return-Path     [email protected]
Attachments     ["daticert.xml", "Nuovi_contratti_2019__145038.zip", "smime.p7s"]
Number_of_attachments   3
Date    2019-01-08 15:22:50 (UTC)
To  ["[email protected]"]
From    "Per conto di: [email protected]" <[email protected]>
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 服务器为:

anyname.bit

控制面板

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

32AveiM.png!web

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

<!-- saved from url=(0043)hxxps://kyrkymalol.000webhostapp.com/admin/ -->

IOC

d2ee07bf04947cac64cc372123174900725525c20211e221110b9f91b7806332
ce0e46fa1c5b463ed4a070a05594a79203ed2dd5df96cece9f875e2957fda4fa
ca30c42334fcc693320772b4ce1df26fe5f1d0110bc454ec6388d79dffea4ae8
6a9841b7e19024c4909d0a0356a2eeff6389dcc1e2ac863e7421cca88b94e7e0
6e123ce5c7c48132f057428c202638eb9d0e4daa690523619316a9f72b69d17f
3846fcfdc6414685efd217a88613ed3383a61f8313a0aa7ecdcde8ed99c8ebac
7bac9b3b5598059db770cdeee74f0b1cf3078c2cb54cc2fcd18ae811d42a5d63
0f931fec3fd436d974d767f84f66b44f6f2fc168d9e6d77b2aa2e9d3bf4cd604
a5edab1596346358c8899b9f81ec49b0560da929327e0ef08ab51dcb277c9b70
b01fbb8cfeb16c4232fddea6dea53212a57e73ef32ee20056cd69d29570bf55c

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

*参考来源: FoxIT ,FB 小编 Avenger 编译,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK