扒一扒CARBANAK的源代码,看它们是如何巧妙构思并运行的?(二)

xiaohui 逆向破解 2019年5月2日发布
Favorite收藏

导语:在上一篇文章​中,我们讨论了如何在CARBANAK中使用字符串哈希来管理整个代码库中的Windows API解析。但同时,CARBANAK的开发者在另一些任务中也使用了相同的字符串哈希算法。本文,我们将讨论CARBANAK是如何应对杀毒软件的检测并逃避它们的。

上一篇文章中,我们讨论了如何在CARBANAK中使用字符串哈希来管理整个代码库中的Windows API解析。但同时,CARBANAK的开发者在另一些任务中也使用了相同的字符串哈希算法。本文,我们将讨论CARBANAK是如何应对杀毒软件的检测并逃避它们的。

应对杀毒软件

使用源代码无疑会加快对字符串哈希的分析进程,例如,AV.cpp中的函数AVDetect通过进程名称哈希迭代进程来检测杀毒软件,如图1所示。

1.png

通过进程名称哈希检测杀毒软件

CARBANAK如何处理这些信息呢?它根据安装的内容来选择逃避杀毒软件的方法。图2显示了开发者通过注释禁用的AVG逃避的代码。

2.png

2017年11月,CARBANAK还学会了逃避流程注入检测。这种逃避使用的是Carberp变种木马中使用的一种技术,它用内存映射和通过QueueUserAPC异步过程调用的队列来替换远程堆分配和对CreateRemoteThread的调用。

分析幕后的开发构件

拥有源代码后,我们就有机会来了解幕后的开发构件和开发者的详细了。为此,我们在源代码转储中搜索了可能指向个人的构件,并进一步在Visual Studio解决方案文件中找到更多相关的信息。其中大多数引用驱动器O:作为源根(source root,),但我确实找到了以下主机路径:

C:\Users\hakurei reimu\AppData\Local\Temp

C:\Users\Igor\AppData\Local\Temp

E:\Projects\progs\Petrosjan\WndRec\…

E:\Projects\progs\sbu\WndRec\…

不幸的是,这些路径并不能给出很多有意义的答案。如果在以后的构件中观察到它们,那么可能会推断出它们之间的联系,但是在撰写本文时,我们对开发者还所知不多。

源代码的调查过程

CARBANAK源代码包含许多漏洞、以前的C2主机、密码和密钥信息。于是我们决定对这些信息进行全面的研究,并确定它们是否可以给研究带来新的信息,或证实之前的任何观察结果。

漏洞调查

首先,我想知道CARBANAK的开发者们是否使用了未公开披露的任何漏洞。因为我发现所有的漏洞都有详细记录,表1列出了我从CARBANAK源代码转储中查看到的升级权限代码。

3.jpg

CARBANAK源代码还包含大量复制于Mimikatz的代码,包括用于从lsass.exe转储密码的sekurlsa模块和用于允许多个远程桌面协议连接的终端服务修补代码。

关键材料的调查

我们的分析包括对源代码和附带的二进制文件中的密码和关键材料的调查,虽然其中许多都用于调试版本,但我们还是对它们进行了整理,以备将来猜测密码时用作参考。表2显示了用于rc2加密通信和其他目的的恢复密码,以及源代码中的相应名称及其遇到的状态(在源代码中激活,注释掉或编译成二进制文件)。

4.jpg

在CARBANAK源代码和二进制文件中找到的密码

我在调试目录中发现了一个加密的服务器证书,它似乎可以提供一个新的基于网络的指示,以准确地发现新的攻击趋势。我们通过在c#中修改一个公开可用的X509处理代码示例来遍历流行密码列表中的密码,从而强制使用这个容器。由于密码为单字符“1”,所以我们在不到1秒的时间内就找到了密码。该证书原来是用于测试的,因此密码很弱。证书如图3所示,详细信息见表3。

5.png

证书

6.1.jpg

6.2.jpg

6.3.jpg

证书详细信息

我还从源代码转储中解析了一个未受保护的私钥,图4和表4分别详细显示了私钥参数。

7.png

已解析的512位私钥

8.1.jpg

8.2.jpg

私钥参数

我在配置标头中找到了一个名为PUBLIC_KEY的值,其中的注释表明它是用于调试目的的。解析后的值如表5所示。

9.jpg

配置标头中定义的PUBLIC_KEY的私钥参数

调查基于网络的指示

源代码和二进制文件包含多个基于网络的指示符(NBI),它们与CARBANAK后门活动和FireEye之前观察到并记录的FIN7操作有明显的相似之处。表6显示了这些指示以及相关的FireEye公共文档。其中就包括遇到每个NBI时的状态(在源代码中活动、注释掉或编译成二进制文件)。域名被删除了,以防止浏览器、聊天客户端等意外解析或交互。

11.1.png

11.2.png

其中,四个TCP端点(80.84.49[.]50:443, 52.11.125[.]44:443, 85.25.84[.]223, and 37.1.212[.]100:700) 都是新发现的。

总结

经过我们对这个源代码转储的分析,可以证实它就是CARBANAK。另外,我们还发现了一些新的、有趣的信息。根据这些信息,我们能够将具体的漏洞信息通知给供应商,作出应对。有趣的是,这个项目本身并不叫CARBANAK,甚至也不叫Anunak,因为信息安全社区是根据恶意软件中发现的字符串构件来命名它的。开发者在Visual Studio项目中主要将恶意软件称为“bot”,包括文件名、源代码注释、输出二进制文件、用户界面和手册。

本文翻译自:https://www.fireeye.com/blog/threat-research/2019/04/carbanak-week-part-two-continuing-source-code-analysis.html如若转载,请注明原文地址: https://www.4hou.com/reverse/17738.html
点赞 3
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论