01.简介
Raccoon(浣熊) 是一个恶意软件家族,自2019年初以来一直在地下论坛上作为恶意软件即服务出售。2022年7月上旬,发布了该恶意软件的新变种,通常称为Raccoon Stealer v2,是用C语言编写的,与以前主要用C++编写的版本不同。
Raccoon恶意软件是一个强大的窃取程序,它允许从浏览器窃取数据,例如密码、cookie和自动填充数据。Raccoon盗窃者还支持从所有加密货币钱包中盗窃。
在本文中,我们将简单分析exe格式的Raccoon Stealer v2,并强调与先前版本的主要区别。Raccoon Stealer恶意软件的作者宣布其它格式亦可使用,包括DLL和嵌入在其它PE文件中的版本。目前,聚铭网络流量智能分析审计产品已支持对该恶意软件的检测。
02.详细分析
Raccoon v2是一种信息窃取恶意软件,于2022年7月3日首次出现。该恶意软件是用C和汇编语言编写的。
尽管我们注意到下面提到的较新变体中的一些新功能,但数据窃取机制仍然与其前身相同:
所有字符串文字的 Base64 + RC4 加密方案;
WinAPI 函数的动态加载;
放弃了对 Telegram API 的依赖。
获取命令和控制服务器列表的方式发生了重大变化。Raccoon Malware v1被发现滥用Telegram网络来获取命令和控制服务器列表,而较新的变种已放弃使用Telegram。相反,他们使用受威胁者控制的服务器的硬编码IP地址来获取命令和控制服务器列表,从中下载下一阶段的有效负载(主要是 DLL)。
分析的文件具有完整的调试数据。根据Debug headers编译日期是星期四,26/05/2022 13:58:25 UTC,如图1所示:

图1:Raccoon v2调试头文件
Raccoon Stealer v2通过使用动态解析API名称而不是静态加载的机制来隐藏其意图。窃取程序使用LoadLibraryW和GetProcAddress来解析每个必要的函数。DLL和WinAPI函数的名称以明文形式存储在二进制文件中。
一旦函数解析完成,窃取者将运行其字符串解密例程。此过程很简单,其主要手法是RC4加密字符串并以base64编码存储在样本中。本文示例首先对base64编码进行解码,然后使用密钥“edinayarossiya”对加密字符串进行解密。函数string_decryption()中的所有字符串都遵循此方法。
以前版本的Raccoon Stealer不加密硬编码IP地址以外的字符串文字。Raccoon v2变体通过加密所有纯文本字符串来克服这个问题。Raccoon v1的几个明文字符串如图 2 所示:

图2:Raccoon v1中的纯文本字符串
在对 Raccoon v1 样本字符串进行手动解密后,得到以下(图 3 和图 4)明文格式的字符串:

图3:Raccoon v2解密字符串

图4:Raccoon v2解密字符串
命令和控制IP地址保存在恶意软件中,并遵循相同的解密例程,但具有不同的密钥59c9737264c0b3209d9193b8ded6c127。恶意软件联系的IP地址是' hxxp://51(.)195(.)166(.)184/ '。
03.解密C&C地址
加密的C&C IP地址可以使用CyberChef等公共工具轻松破解,如图5所示:

图5:Raccoon v2 IP地址(通过cyberchef工具)
一旦完成了设置函数和解密字符串的所有条件,恶意软件将在联系命令和控制服务器以下载恶意DLL和泄露信息之前执行一些检查。
在执行恶意软件的主要例程之前,它会进行某些检查以了解执行环境。这包括确保恶意软件尚未在计算机上运行;此外,恶意软件还会检查它是否作为NT系统运行。
恶意软件获取互斥锁的句柄并检查它是否匹配特定值。如果匹配,恶意软件将继续执行,如8724643052;此技术用于确保一次只运行一个恶意软件实例。
通过检索Process令牌并匹配文本“S-1-5-18”,恶意软件确定它是否以SYSTEM用户身份运行。
如果以SYSTEM用户身份运行,所有正在运行的进程的枚举都是在fun_CreateToolhelp32Snapshot的帮助下完成的。否则,恶意软件会在没有枚举的情况下继续运行。
04.获取主机指纹
一旦恶意软件知道它运行的环境,它就会开始对主机进行指纹获取。该恶意软件使用如下方法:
RegQueryValueExW用于获取机器ID;
获取用户名W。
完成这一切后,恶意软件将枚举MACHINE ID和用户名等信息,然后将数据发送到远程命令和控制服务器。
为此,恶意软件会创建一个char字符串并开始将这些值附加到其中。它首先添加机器 ID 和用户名,图6 显示了缓冲区中构建的有效负载:

图6:缓冲区负载
05.与C&C通讯
程序利用HTTP协议与远程命令与控制服务主机进行通讯。之前解密的IP地址(hxxp://51(.)195(.)166(.)184/)用于命令和控制通信。恶意软件联系先前解密的命令和控制IP地址列表(存储在 local_3c 中)。由于该恶意软件仅包含一个命令和控制IP地址,因此发布请求仅针对一个。

图 7:缓冲中的URL
发出请求后,恶意软件会检查内容主体长度是否为零。如果没有从命令和控制接收到内容或内容主体长度为零,则恶意软件退出。进行此检查的目的是因为恶意软件的渗漏机制需要命令和控制来响应列表 IP 地址。
Raccoon v1依靠Telegram Bot API描述页面来获取命令和控制 IP 地址并建立连接。该系列的最新恶意软件变体 (v2) 已开始在二进制文件中硬编码 IP 地址以完成此任务。Raccoon Malware v2使用5个硬编码IP地址并对其进行迭代。
06.数据泄漏
Raccoon Stealer v2依靠命令和控制服务器的响应来关闭所需的DLL,并决定下一步行动。在撰写此文时,命令和控制IP已失效,因此无法分析流向主机的流量。
该恶意软件使用对SHGetFolderPathW的WINAPI调用来获取到C:\Users\<User>\AppData的路径,并将“Local”附加到它,并将其用作存储被盗信息的路径,然后再将其发送到命令和控制。