在一个以前的帖子我们介绍了在垃圾邮件广告系列中交付的2个有效载荷。恶意二重唱 -upatre.(恶意软件下载器)和dyreza.(凭证偷窃师)。在这篇文章中,我们将看看核心dyreza.- 它使用的技术。

注意,Dyreza是一种复杂的恶意软件,各种样本具有各种技术 - 但是,主要功能仍然很常见。

分析样品

行为分析

当Dyreza开始感染电脑时 - 它会像火一样蔓延。在Process Explorer中观察它,我们可以看到许多新进程出现和消失。我们可以注意到,它部署探险家Svchost.队列......所有这些都是为了混淆执行流动,希望令人困惑的分析师。

删除了2个恶意文件的副本 - INC:\ Windows%应用程序数据%- 在伪随机名称下,匹配Regex:[A-ZA-Z] {15} .exe, IEvfhnlkmcyaxbgfy.exe.

通过在任务计划程序中添加新任务来实现这种持久性 - 它在每分钟之后部署恶意样本,以确保它保持运行。

task_persistance.

注入其他进程的代码(Svchost.探险家)与C&C沟通:

dyreza_connections.

Explorer_inject.检查virustotal.我们可以确认,已联系服务器已被报告为恶意:

当我们部署任何Web浏览器时,它会直接将代码注入其进程并部署非法连接。它是与C&C保持联系的方式,监控用户的活动和窃取凭据。

我们还可以看到在作为小型数据库的Temp文件夹中创建的文件,其中dyreza存储信息,然后发送到C&C。

在代码内

主要可执行文件

Dyreza不会在具有少于2个处理器的机器上启动。此技术用作防御,防止文件在VM上运行。它基于VM通常只具有一个处理器 - 与现在使用的大多数物理机器相比,VM通常只有一个处理器。它是通过检查适当的字段来实现的PEB(过程环境块),这是指出的FS:[30]。只有在满足条件时,感染才会继续。

cpu_check.

在执行开始时,恶意软件将其他导入表加载到新分配的内存页面中。模块和函数的名称在运行时解密。

如果它在调试器下部署 - 使用函数,它会检查lookupprivilegevalue.与争论Sedebugprivilege.- 如果返回非零值,则终止执行。

current_process_seedbug.

有效执行遵循很少的替代路径。决定,通过哪条路径基于初始条件 - 类似程序运行的可执行路径和参数进行。当它第一次部署时(从随机位置)部署时,它会使自己的副本C:\ Windows%应用程序数据%并将副本部署为新进程。作为部署副本的参数(来自C:\ Windows),它将路径传递给另一副本。

如果它从有效路径部署和初始参数传递验证,则执行另一种检查 - 如果它第一次部署它。它是通过创建特定的全局互斥锁(它的名称是计算机名称和操作系统版本的散列来实现 -getComputerName.rtlgetversion.)。

如果此条件也满足并且已存在互斥锁,则它遵循主路径,部署恶意代码。首先,加密数据和密钥从可执行的资源加载。

资源

T1RY615NR - 加密32位代码,UZGN53WMY - 关键,YS45H26GT - 加密的64位代码

打开包装:

Res3_decoded.

解压缩算法非常简单 -key_data.包含值数据- 值列表值的索引key_data。我们处理索引列表并读取相应的值:

def解码(数据,key_data):i for i在范围内的解码= bytearray()(0,len(数据)):val_index = data [i]解码(key_data [val_index])返回解码

此脚本解密转储资源:

https://github.com/hasherezade/malware_analysis/blob/master/dyreza/dyreza_decoder.py.

揭示的内容包含要注入的shellcode和具有恶意函数的DLL(适当的32或64位)。主样本选择哪一个通过检查它是否通过WOW64运行来解压缩和部署(在64位机器上的32位仿真) - 调用函数iswow64过程

resource_decide.

恶意DLL(核心)

在这个阶段,恶意软件的功能变得非常清晰。DLL不包含太多的混淆 - 它具有清晰的字符串和典型的导入表。

我们可以看到用于与C&C进行通信的字符串:

弦

两者 - 32和64位DLL都具有类比功能。只有与架构相关的元素和字符串都不同。

代理标识系统:

check_sys.

然后 - 将此数据包含在发送给C&C的信息中:

sys_check.

在64位版本的DLL中存在类似的过程,只有硬编码的字符串“_32位”被“_64bit”代替:

64bit.

此外,检查网络设置(用于验证和通知C&C客户端是否可以建立返回连接 - 命令:autobackconn)

network_settings_detect.

它遵循浏览器的目标:

攻击_EDGE.

以下 - 尝试发送被盗帐户凭据:

Scass_Teal.

除了监视浏览器之外,它还收集有关计算机(它的硬件,用户,程序和服务)的一般信息 - 以报告为单位:

grab_generalinfo.

恶意软件不仅窃取信息和嗅探用户的浏览,还尝试完全控制系统 - 执行各种shell命令 - 系统关闭等。以下示例:

添加用户

尝试添加具有管理权限的用户

shutdown_sys.

关机系统(autokillos)

C&CS.

这个僵尸网络非常谨慎。不仅进行了通信加密,而且还采取了许多对策以防止检测。

首先,将C&C的地址从硬编码池中随机挑选。本池存储在Dyreza DLL(AE加密)的资源之一中。下面,我们可以在执行有效载荷期间看到它如何解密,:

解密_cnc.

(此处提供了一种用于解密C&CS列表的脚本,此处提供:https://github.com/hasherezade/malware_analysis/blob/master/dyreza/dyrezadll_decoder.py.

此外,证书由特定C&C的每个连接进行更改。基础架构基于受损的WiFi路由器网络(最常是:航空公司microtik.)。

服务器在端口443(标准HTTPS)或4443上接收加密连接(如果特定路由器的标准HTTPS端口被合法服务占用)。

结论

Dyreza是一个由专业人士开发的折衷主义恶意软件。很明显,他们不断履行质量 - 每个新版本都有一些新的想法和改进,使分析更加努力。

附录