问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
.NET恶意软件Dark Crystal RAT的详细样本分析
对.NET恶意软件Dcrat样本的一次粗浅分析,手动解码三阶段恶意软件,提取C2服务器和一些恶意行为分析。
前言 == Dark Crystal RAT (Dcrat)是一种典型的RAT恶意软件,可以让攻击者从远程控制被感染的计算机,通常用于窃取各种类型的敏感信息,例如剪贴板内容和应用程序中的个人登录详细信息。 第一阶段 ==== DIE查看 ----- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-ea026189a13aaf30cca4dcc4285160628807bc8b.png) 基于.NET的恶意软件,使用dnSpy进行分析;样本还有混淆保护。 同时查看信息熵: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-6253237d5f1071792e7b597aa93ee13872bda67f.png) 很高的熵,这表明了Dcrat可能载入了另一个有效负荷。 dnSpy分析 ------- 使用dnSpy进行分析,跳转到入口点: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-af3476da03a6485f94c0bf1098623104f659796e.png) 恶意软件创建了一个极大的数组unit,一直向下翻,发现解密: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-25d42a930f7346a482a972b1a548d5695ff8e37f.png) 经过解密之后,以名称`koi`加载到内存中。 查看解密代码`Decrypt`: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a1208aefaf5398a76f871e18888c3ca8c52d87da.png) 根据`LoadModule`函数,koi是以模块的形式载入的,那我们就有了一个办法来提取到这一块内存。 ### 模块断点提取koi 首先创建模块断点: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b60677113823c8bf8bbd40e8cb80e57d6e4852bc.png) 使用俩个通配符来创建断点,这将会使恶意软件在加载任何模块时发生中断。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-c1b8ab36b72a84c966c6070c7a3e938b3103cb2b.png) 启动程序,之后程序会断下来,最先加载的模块是mscorlib.dll,点击继续,程序会接着断在样本自身。这里再接着运行一次就能发现koi加载了: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-2283fa5b58345bfaf6894d15c02a0434f709197d.png) 在顶部调式的窗口点击模块: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-50c7b172bbd4e78e5541375f494ed96153b5fb20.png) 保存为koi.exe ### 解密后提取 另一种提取第二阶段的办法,直接在Decrypt后面下断点,将解密后的array2复制出来保存为exe文件。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-cfc11359b2eabc7eb2c662cd8dbc6dec5a23ebab.png) 0x4D0x5A。PE文件标志 第二阶段 koi.exe ============ DIE查看 ----- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-2c7cdc1d7d10272c1cfedf0dfbca40a069ee3f62.png) 同样是一个基于.NET的32位恶意软件,加了混淆保护。 !\[image.png\][https://shs3.b.qianxin.com/attack\_forum/2024/08/attach-7a74b7559da15a64ba401b489aa7f8da05208532.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-7a74b7559da15a64ba401b489aa7f8da05208532.png)) 观察信息熵,似乎没有加壳或者其它混淆。 dnSpy分析 ------- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-f7248580a963eac7e79ba58ce573d25b56b2bce8.png) 同上一个文件一样,koi的初始名字为rewrwr,右键发现没有入口点。 在Form1中发现大量的类似base64编码的文本数据: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-7e6174cd54c0dba3c965f6ffb58b5845e31c7bda.png) 尝试解密: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-5be4350d1773b9805ae078d27976cb4d128b3ccf.png) 推测是经过了其它的混淆。 在下面找到了混淆的逻辑: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-674ca45017c5d42cb66c15515fcc99359fafddd8.png) 通过一个for循环,每次取第一个字母。验证一下: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-d6f6209ac760887b6b0d500fb40428246835c281.png) MZ,PE文件标识。依据该混淆逻辑编写一个python脚本: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-04ba012c0b7d74aaefcaaf09930e321f33fb4957.png) 将提取出的数据保存为output.bin 第三阶段 ==== DIE查看 ----- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-75a7158ce938bc0fc701b592f41253804a0e1268.png) 依旧是基于.NET的32位程序,没有混淆。 查看信息熵: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-d8e2af0600ce249cb419d372a53443d851045379.png) 熵表现也很正常,即没有可以隐藏大型负载的高平坦曲线。 dnSpy分析 ------- ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-47ba0f1dee4f6d5ffb7224e8eee485e813e48b2a.png) DIE显示没有ConfuserEx,但实际情况还是很难分析。尝试用NETRecatorSlayer反混淆了一下。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b3eea36ea9be1dae7f5a0c034833d5686d4a464b.png) ### C2域名提取 在Class55中发现了一个有趣的字符串: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-5b9bdd5b49fc5a2e3148f8d1d119006d9c09d95e.png) 看起来像 base64 编码 + gzip(H4sIAA 是 base64 编码的 gzip 标头),尝试用cyberchef解密一下: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b0b267a6fd4875a051c6703d6fe0b71eb3014a5d.png) 结果看起来还需要在逆转一下和base64一次。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-ed864bb7667c536dbf9f51d933608e6ee78ffd2c.png) 得到了一个字典 和 互斥锁 `Wzjn9oCrsWNteRRGsQXn` 以及一些基本配置。 但是似乎还是没有什么用,往下继续,发现第二个字符串: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-34b9ce37b5d3273f3585fc6db4042f96c4ba3be2.png) 按照刚刚的步骤解码: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-20017fc0b04fc24f4262ff37508bd4f5141f0fd7.png) 得到一串乱码,回去分析代码: i59,base64编码: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b50ee10fa7a5631c8c9e66d068da80aec39931c7.png) smethod\_3, Reverse: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-2b227170e9c7df7d01f35e1e40a3527b9291229e.png) i6B,根据字典替换字符: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-c8fd8029a72b82e32397412856b58acf9e997cb6.png) smethod\_4 --> smethod\_2, base64编码+gunzip: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-54ea9d5f521169f6bf2a625d1642684219f9cf58.png) 混淆的思路就出来了,对刚刚得到的SCRT字典做一点处理: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-558bdf3fca4e98f35c134b2d5e3975c32a552aa5.png) 用第一处字符串解密得到的SCRT字典对第二个字符串base64+gunzip后的字符串进行字符替换,编写一个python脚本进行处理: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-e0e783e071c6fa6ae3044d887f237339dbb9befa.png) !image.png\]([https://shs3.b.qianxin.com/attack\_forum/2024/08/attach-64541fa2ce4e6644af351b256859975948d97091.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-64541fa2ce4e6644af351b256859975948d97091.png)) 得到C2服务器的地址 行为分析 ---- 一些Dcrat恶意软件常见的恶意行为,窃取信息的操作、键盘记录器、从远程URL下载文件... ### 窃取信息 Dcrat会从剪贴板中窃取信息: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b324074d693fd1f39efe3e16f85cc327ca642aaa.png) 尝试从剪贴板读取 Unicode 文本并存储在 `@class.string_0` 中 获取屏幕截图: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-0a8a1e80cb9fcc9a8218769a331fc5c316f49d2a.png) uKI方法获取屏幕截图,包括宽和高。 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-9ecf08c6cf2537c8a48568e4ec040cee60b75739.png) ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-25b29b7af47301610bfbf3175d7292f2ff215afe.png) Dcrat不断获取屏幕截图,将屏幕截图转换成字节数组JPEG的形式再上传到C2服务器。 窃取Steam凭证: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b820e85aea06d915cc6e13a73f5ed1826bcc143b.png) 通过检索注册表项的操作获取Steam路径和登录用户,之后解析loginusers.vdf文件以获取Steam ID和Steam游戏平台中的游戏名称列表。 窃取纸飞机凭证: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-61e168b6cc14867d6d1c13a1510c831def54f35e.png) 窃取Discord文件: ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-fe38daea864f4d397b41ac1809e20963820f13b8.png) ### 持久性操作 Dcrat使用计划任务和修改注册表来实现持久性。 #### 通过schtasks.exe创建计划任务 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-970a45c4ec683fa4097f8da8bca6b6a87a9fcfb0.png) 第一个任务 - /tn 指定任务名称,通常是该恶意程序本身 - /sc MINUTE /mo 创建一个每隔几分钟就执行一次的任务(5,15) - /tr 执行的程序路径 - /f 强制创建 第二个任务创建了一个在用户登录时执行的计划任务,添加了个新参数-以最高权限执行。 第三个任务同第一个,但是以最高权限执行。 通过计划任务(定时执行、登录执行)可以确保恶意程序在计算机上的持久性。 #### 修改注册表键 ![image.png](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-9758f13e31d9a09dda701c8886005d1437bb6ee1.png) 修改 `Run` 子键,Dcrat尝试在每个节点下的 `"Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run"` 都添加一个新的键值对,值为Dcrat恶意程序的路径。该注册表位置用于存放要在用户登录时自动启动的程序。 修改 `Winlogon` 子键,Dcrat尝试在 `"Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"` 子键中修改 `Shell` 键。这个键通常指向系统外壳程序(如 `explorer.exe`),代码将指定文件路径追加到 `Shell` 键的值中。通过修改 `Shell` 键,恶意软件可以在用户登录后立即启动。
发表于 2024-08-21 09:35:54
阅读 ( 18086 )
分类:
漏洞分析
0 推荐
收藏
0 条评论
请先
登录
后评论
Sciurdae
12 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!