比特币偷窃者Dyreza的核心代码及技术分析

当前位置:首页 > 币圈百科 > 比特币偷窃者Dyreza的核心代码及技术分析

比特币偷窃者Dyreza的核心代码及技术分析

2023-02-06币圈百科237

Hacker

在本文中,我们将分析和研究两种有效载荷。这两个恶意程序相互配合。一个叫Upatre(负责下载其他蓑衣网小编2023恶意程序),一个叫Dyreza(负责窃取用户的各种身份信息)。在过去,我们已经分析了Dyreza的核心代码和使用的技术,然后我们将一步一步地进行分析。

Dyreza是什么?

Dyreza,目的是盗取银行账户和比特币。整个过程从通过Upatre下载Dyreza开始。据研究,目前提供Dyreza下载的服务器都是路由器(多为AirOS和MicroTik)。攻击者使用入侵路由器,加密资源包种类繁多。被感染的机器会通过Upatre下载路由器中存储的加密恶意代码程序,然后在用户系统中解密,得到Dyreza木马。

我们分析的意义在于,目前Dyreza家族的恶意程序有很多变种,但它们的主要行为轨迹仍然是共同的。通过分析它们的特点和共性,可以更好地为自己辩护。

000样本分析

-

样本:ff3d 706015 b 7 b 142 ee 08 a 0 f 0 ad 7 ea 2911

dy Reza的可执行文件,僵尸网络的客户端,负责执行重大恶意操作。[X][X]-[X][X][X][X]-[X][X]Sample:[X][X]5a 0e 393031 eb2a CCC 914 c 832993d 0bdy Reza DLL(.91 b 62d 1380 b 73 baea 53 a 50d 02 c 88 a5c 6Dyreza DLL(64 bit)

-

001行为分析

Snip20151110_46当dy Reza开始感染电脑时,它有一个迅速蔓延的感染期。我们可以在进程管理中看到,同时最直观的一点就是很多新的进程被创建然后结束,比如explorer、svchost、taskeng等等,进行这个阶段是为了混淆执行进程,干扰安全人员的研究分析。

接下来,它放入两个由正则表达式[a-za-z] {15}命名的恶意程序副本。Exe,即vfHNLkMCYaxBGFy.exe到C:\Windows和%APPDATA%的目录下,然后通过在任务调度中增加一个新任务,每分钟持续执行恶意程序样本,保证恶意程序的持续执行。

然后通过向其他进程(如svchost、explorer)注入恶意代码,然后与外部CC服务器进行通信。

从上面观察到的结果,我们可以在VirusTotal上发现,上述与svchost和explorer进程通信的服务地址已经被标记为恶意地址。主要结果如下,

?141.8.226.14-病毒总数/141 . 8 . 226 . 14/信息

?83.241.176.230-病毒总数/83 . 241 . 176 . 230/信息

?197 . 231 . 198 . 234-virus total/197 . 231 . 198 . 234/Information/Snip20151110_47

并且在安装任何网页浏览器时,都会直接在浏览器的进程中注入恶意代码,然后进行非法外联。这是恶意程序与外部CC服务器保持连接的方式,它还执行监视用户活动和窃取各种身份证书信息的功能。

通过研究还可以发现,Dyreza在发送到CC服务器之前,会将信息作为一个小数据库存储在一个名为TEMP的文件夹中。

Snip20151110_48002代码分析

环境检测

1。执行前检测——如果检测到机器上的CPU数量少于2,Dyreza将不会运行。这个技术是为了保护自己,保证自己的程序不在虚拟机环境下运行。因为从目前的市场和设备配置来看,除了虚拟机经常使用单核cpu以外,一般的物理机都是双核以上的,Dyreza也是以此作为判断的依据。通过检测进程环境块下线程信息块中FS:[0x30]区的信息来判断Dyreza。但只有在确认CPU数量大于2(含2)后,恶意程序才会继续执行。

2。在执行开始时,恶意软件将额外的表单加载到新分配的内存页面中。 在运行过程中,模块名和函数开始被解密。

3。执行环境的检测——通过LookupPrivilegeValue函数中的SeDebugPrivilege参数判断是否安装在调试器下。如果检测到返回值为非零,恶意程序的执行将被终止。

4。通过以下检测方法可以实现有效执行。首先根据初始环境跟踪检测路径,比如程序运行时的可执行路径和参数。第一次安装时,它会自我复制,将复制的文件放在C:\Windows和%APPDATA%目录中,并将复制的程序作为新进程安装。如果它被部署到一个有效的路径和初始参数并通过了验证,下一步就是检查-确认它是否是第一次安装。这一步是通过创建一个特定的全局互斥体(计算机名和系统版本的哈希值,通过两个函数获取:GetComputerName,RtlGetVersion)来实现的。

5。如果满足这个条件,并且互斥体已经存在,那么它将执行恶意代码的最重要的一步。最初,从可执行资源包中加载加密的数据和密钥。

Snip20151110_49

如上图,T1RY615NR -加密32位代码,ys 45h 26 gt-加密64位代码,UZGN53WMY - key

接下来,打开包装,取出代码:

。我们通过相应的索引列表读取相应的值。对应的代码如下,

def decode (data,key _ data):decode=bytearray()for I in range(0,Len(data)):val _ index=data[I]decode。Append (key _ data [val _ index])返回解码后的Snip20151110_50解密执行部分代码如下,

import argparse import hashlib from Crypto。cipher import aes BS=16 pad=lambda s:s(BS-len(s)% BS)* chr(BS-len(s)% BS)unpad=lambda s:s[:-ord(s[len(s)-1:])]def AES _ decrypt(enc,iv,key):cipher=AES.new(key,AES)。MODE_CBC,Iv)返回Unpad(密码。解密(enc))

详细执行代码,参考dyrezadll_decoder.py

解密后的文件包含一个用于注入的外壳代码和一个用于调用恶意程序函数的dll(兼容32/64位)。

Snip20151110_51

003内核恶意DLL

在这个阶段,恶意软件的功能就变得非常明确了。dll文件没有包含太多令人困惑的信息——它有明显的字符串和典型的导入表。

我们可以看到用于与CC服务器通信的字符串。Snip20151110_53

32位和64位dll的功能相似。两者之前只有模式相关的部分和字符串不同。客户端可以识别系统,然后将信息发送到CC服务器。

类似的程序在64位版本的DLL中,只是在其硬编码字符串中使用了“_64bit”而不是“_ 32 bit”:

Snip20151110_54

同时检查网络设置(确认并通知CC客户端是否ok。

Snip20151110_55除了监控浏览器,还收集电脑上相应的基本信息(如配置、现有用户等。)

Snip20151110_56这种恶意软件不仅窃取信息,嗅探用户的浏览活动,还试图完全控制系统,以便执行各种shell。一些例子如下:

Snip20151110_57尝试创建一个具有管理员权限的新用户:

关机操作可以通过命令AUTOKILLOS来执行。Snip20151110_58

004 CCs

为了防止僵尸网络被检测到,服务器和客户端之间的通信是加密的,采用了很多策略。

Snip20151110_59首先,CC服务器的地址是从硬编码池中随机选取的。地址池存储在Dyreza DLL的资源包中(用AES加密算法加密)。接下来,当执行payload时,我们可以看到它是如何被解密的。

Snip20151110_60以上是本次的分析讨论,具体的dyreza代码可以在Dyreza中获取。

参考资料来源:malwarebytes

编译/troy(黑客和极客FreeBuf.com)Snip20151110_61

比特币偷窃者Dyreza的核心代码及技术分析 | 分享给朋友: