|
我们的恶意软件分析师一直在寻找和研究各种恶意样本,这次我们在 ANY.RUN 在线恶意软件沙箱 中遇到了 Orcus RAT,并决定执行技术恶意软件分析。在本文中,你将了解此 RAT 如何存储和保护其配置以及如何在 Python 中编写内存转储提取器。
什么是 Orcus RAT ?
Orcus 是一种远程访问木马,具有一些独特的进程。 RAT 允许攻击者创建插件并提供强大的核心功能集,使其成为同类中相当危险的恶意程序。
Orcus RAT 恶意软件分析
恶意软件分析 的样本来自 ANY.RUN 数据库:
SHA-256 | 258a75a4dee6287ea6d15ad7b50b35ac478c156f0d8ebfc978c6bbbbc4d441e1 |
我们下载了 Orcus RAT 样本并在 DiE 中打开它以获取基本信息:
DiE 结果表明我们正在处理一个 .NET 示例,现在是开始对 Orcus 进行恶意软件分析的时候了。对于这个问题,DnSpy 就派上用场了。
Orcus RAT 类
我们的主要研究目标是找到 RAT 配置,第一个目标点是恶意软件类。在浏览它们时,我们遇到了一个名为 Orcus.Config 的命名空间,它包含以下类:
常量包括有关 Orcus RAT 使用的不同文件和目录的信息。例如,保存用户击键的文件的路径或示例使用的插件所在的目录。
设置包含用于解密恶意软件配置及其插件的包装方法。
SettingsData 是一个静态类,仅具有加密的恶意软件和插件配置字段。
Orcus 恶意软件资源
在 Settings 类中,我们看到了 GetDecryptedSettings 方法。稍后,它调用 AES.Decrypt。注意到它之后,我们可以假设 AES 算法加密了恶意软件配置:
AES 类是从 Orcus.Shared.Encryption 导入的,唯一的问题是程序集不包含这样的命名空间。要找到它,我们可以访问 Orcus RAT 资源:
我们似乎找到了一个程序集 orcus.shared,但是这个 costura 前缀是什么?为什么程序集以 .zip 扩展名存储?我们提取了这个资源并试图解压它。不幸的是,这是一个失误 —— 尽管有 .zip 扩展名,但该资源不是压缩类的。
在某些时候,这个程序集必须加载到应用程序中,我们决定寻找另一个发生这种情况的地方。当然,记住那个奇怪的 costura 前缀。很快我们就找到了包含 AssemblyLoader 类的 Costura 命名空间。它应该加载打包在 Orcus 资源中的程序集。
在 AssemblyLoader 类中,我们了解了如何从资源中加载程序集:
用 [url=https://gchq.github.io/CyberChef/#recipe=Raw_Inflate(0,0,'Adaptive',false,false)]CyberChef[/url] 重复这个操作后,我们得到了一个解压的程序集。
为避免任何第二个想法,我们将解压缩的程序集上传到 DnSpy。希望它能证实或否定我们对 Orcus RAT 使用的加密算法的假设。
此类包含用于加密和解密数据的方法,以及用于 AES 算法的初始化向量字段和具有密钥长度的字段。我们对加密过程并不真正感兴趣,但数据解密正是我们所需要的:
Orcus RAT 数据解密
我们发现了以下有关数据解密的信息:
- 除了 AES 算法之外,Base64 还应用于加密数据
- 确切的加密类型是 AES256-CBC
- 我们确定了加密密钥的派生方式
让我们讨论这个阶段,这个阶段肯定很有趣。为了生成给定字符串的密钥,Orcus 使用 PasswordDeriveBytes 类,该类基于 Microsoft 的 PBKDF1 算法。恶意软件使用默认设置:这意味着生成密钥的迭代次数为 100,哈希算法为 SHA1。
你想知道它是如何完成的吗?这是一个场景:
前 20 个字节照常进行,然后将一个字节计数器添加到从第 20 个字节到最后一个字节的继承字符串的每个 hash 字节。考虑到这一点,我们在 Python 中实现了这一点:
知道正确的密钥后,可以使用 CyberChef 解密数据。
作为解码的结果,我们得到了 XML 格式的恶意软件配置。
自动化 Orcus RAT 的配置提取过程
现在,我们将编写一个 Python 脚本,其中包含必要的数据来解密和自动提取配置。在研究了一些样本后,我们看到带有加密数据的字符串一个接一个地位于另外两个特定 UserString 对象 (字符串 "case FromAdministrationPackage.GetScreen" 和 "klg_") 之间的 UserString 流中。
接下来,使用 dnfile 库,我们实现了一个简单的算法,它遍历 UserStrings 以查找上述字符串。并且需要注意的是,它们之间接收到的字符串的数量必须是三个:
- 恶意软件的主要加密配置
- Orcus 使用的插件的加密配置
- 生成 AES 密钥的密钥
还可以始终使用 ANY.RUN 服务 来自动检索 Orcus RAT 配置。这是在短时间内分析恶意对象的一种更简单的方法。例如,沙盒已经从这个 Orcus 样本 中检索了所有数据,因此可以享受顺畅的研究。
结论
在本文中,我们简要分析了 Orcus RAT 并将其配置提取自动化。完整版的提取器可在链接中找到,所以不要忘记查看它!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|