在一个以前的帖子我们介绍了在垃圾邮件广告系列中交付的2个有效载荷。恶意二重唱 -upatre.(恶意软件下载器)和dyreza.(凭证偷窃师)。在这篇文章中,我们将看看核心dyreza.- 它使用的技术。
注意,Dyreza是一种复杂的恶意软件,各种样本具有各种技术 - 但是,主要功能仍然很常见。
分析样品
- FF3D706015B7B142EE0A8F0AD7EA2911-dyreza.可执行文件 - 一个持久的僵尸网络代理,带有核心恶意活动的DLL
- 5A0E393031EB2ACCC914C1C832993D0B- dyreza dll(32bit)
- 91B62D1380B73BAEA53A50D02C88A5C6- Dyreza DLL(64位)
行为分析
当Dyreza开始感染电脑时 - 它会像火一样蔓延。在Process Explorer中观察它,我们可以看到许多新进程出现和消失。我们可以注意到,它部署探险家那Svchost.那队列......所有这些都是为了混淆执行流动,希望令人困惑的分析师。
删除了2个恶意文件的副本 - INC:\ Windows和%应用程序数据%- 在伪随机名称下,匹配Regex:[A-ZA-Z] {15} .exe, IEvfhnlkmcyaxbgfy.exe.
通过在任务计划程序中添加新任务来实现这种持久性 - 它在每分钟之后部署恶意样本,以确保它保持运行。
注入其他进程的代码(Svchost.那探险家)与C&C沟通:
检查virustotal.我们可以确认,已联系服务器已被报告为恶意:
- 141.8.226.14 - >https://www.virustotal.com/en/ip-address/141.8.226.14/information/
- 83.241.176.230 - >https://www.virustotal.com/en/ip-address/83.241.176.230/information/
- 197.231.198.234 - >https://www.virustotal.com/en/ip-address/197.231.198.234/information/
当我们部署任何Web浏览器时,它会直接将代码注入其进程并部署非法连接。它是与C&C保持联系的方式,监控用户的活动和窃取凭据。
我们还可以看到在作为小型数据库的Temp文件夹中创建的文件,其中dyreza存储信息,然后发送到C&C。
在代码内
主要可执行文件
Dyreza不会在具有少于2个处理器的机器上启动。此技术用作防御,防止文件在VM上运行。它基于VM通常只具有一个处理器 - 与现在使用的大多数物理机器相比,VM通常只有一个处理器。它是通过检查适当的字段来实现的PEB(过程环境块),这是指出的FS:[30]。只有在满足条件时,感染才会继续。
在执行开始时,恶意软件将其他导入表加载到新分配的内存页面中。模块和函数的名称在运行时解密。
如果它在调试器下部署 - 使用函数,它会检查lookupprivilegevalue.与争论Sedebugprivilege.- 如果返回非零值,则终止执行。
有效执行遵循很少的替代路径。决定,通过哪条路径基于初始条件 - 类似程序运行的可执行路径和参数进行。当它第一次部署时(从随机位置)部署时,它会使自己的副本C:\ Windows和%应用程序数据%并将副本部署为新进程。作为部署副本的参数(来自C:\ Windows),它将路径传递给另一副本。
如果它从有效路径部署和初始参数传递验证,则执行另一种检查 - 如果它第一次部署它。它是通过创建特定的全局互斥锁(它的名称是计算机名称和操作系统版本的散列来实现 -getComputerName.那rtlgetversion.)。
如果此条件也满足并且已存在互斥锁,则它遵循主路径,部署恶意代码。首先,加密数据和密钥从可执行的资源加载。
打开包装:
解压缩算法非常简单 -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过程。
恶意DLL(核心)
在这个阶段,恶意软件的功能变得非常清晰。DLL不包含太多的混淆 - 它具有清晰的字符串和典型的导入表。
我们可以看到用于与C&C进行通信的字符串:
两者 - 32和64位DLL都具有类比功能。只有与架构相关的元素和字符串都不同。
代理标识系统:
然后 - 将此数据包含在发送给C&C的信息中:
在64位版本的DLL中存在类似的过程,只有硬编码的字符串“_32位”被“_64bit”代替:
此外,检查网络设置(用于验证和通知C&C客户端是否可以建立返回连接 - 命令:autobackconn)
它遵循浏览器的目标:
以下 - 尝试发送被盗帐户凭据:
除了监视浏览器之外,它还收集有关计算机(它的硬件,用户,程序和服务)的一般信息 - 以报告为单位:
恶意软件不仅窃取信息和嗅探用户的浏览,还尝试完全控制系统 - 执行各种shell命令 - 系统关闭等。以下示例:
C&CS.
这个僵尸网络非常谨慎。不仅进行了通信加密,而且还采取了许多对策以防止检测。
首先,将C&C的地址从硬编码池中随机挑选。本池存储在Dyreza DLL(AE加密)的资源之一中。下面,我们可以在执行有效载荷期间看到它如何解密,:
(此处提供了一种用于解密C&CS列表的脚本,此处提供:https://github.com/hasherezade/malware_analysis/blob/master/dyreza/dyrezadll_decoder.py.)
此外,证书由特定C&C的每个连接进行更改。基础架构基于受损的WiFi路由器网络(最常是:航空公司那microtik.)。
服务器在端口443(标准HTTPS)或4443上接收加密连接(如果特定路由器的标准HTTPS端口被合法服务占用)。
结论
Dyreza是一个由专业人士开发的折衷主义恶意软件。很明显,他们不断履行质量 - 每个新版本都有一些新的想法和改进,使分析更加努力。
附录
- 很好Dyreza / Upatre跟踪器:https://techhelplist.com/maltlqr/- 经过@techhelplistcom.(当前样本的C&C列表:https://techhelplist.com/maltlqr/reports/01oct-20oct-status.txt.txt.)
- 脚本在这篇文章中使用:https://github.com/hasherezade/malware_analysis/tree/master/dyreza.
评论