Raccoon 是一个恶意软件家族,2019 年来一直在地下犯罪论坛中以恶意软件即服务的身份进行售卖。2022 年 7 月,该恶意软件家族发布了 C
语言编写的新版本 Raccoon Stealer v2,打破了以往使用 C++ 开发的传统。
Raccoon 是一个信息窃密恶意软件,能够从浏览器窃取例如密码、Cookie 和自动填充数据等隐私信息。特别的,攻击者对加密货币钱包也很感兴趣。
主要区别
Raccoon v2 也是一种窃密类恶意软件,2022 年 7 月 3 日被在野首次发现,使用 C 语言与汇编语言编写而成。
新版本 Raccoon 有一些新功能,但数据窃密机制与老版本仍然相同:
所有字符串都使用 base64+RC4 加密
WinAPI 函数的动态加载
放弃了对 Telegram API 的依赖
其中,恶意软件获取 C&C 服务器列表的方式发生了重大变化。Raccoon Malware v1 滥用 Telegram 来获取 C&C
服务器列表,而新版本已经放弃该方式。转而使用通过受攻击者控制的服务器的硬编码 IP 地址来获取 C&C 服务器列表,再下载后续恶意软件。
调试信息
分析的样本(0cfa58846e43dd67b6d9f29e97f6c53e)带有完整的调试信息,可以查看其编译日期为 2022 年 5 月 26 日
13:58:25,如下所示:
调试头文件
Raccoon Stealer v2 还通过动态解析 API 名称来隐藏攻击意图,窃密程序使用 LoadLibraryW 与 GetProcAddress
来解析每个必要的函数,如下所示。
动态解析
API
DLL 文件命和 WinAPI 函数的名称,都以明文形式存储在二进制文件中。加载的 DLL 文件包括:
kernel32.dll
Shlwapi.dll
Ole32.dll
WinInet.dll
Advapi32.dll
User-32.dll
Crypt32.dll
Shell32.dll
Raccoon v1 未使用动态解析,所以使用加壳技术来逃避检测,而 Raccoon v2 就直接以未加壳的方式进行投递。下图显示了 Raccoon v1
使用的 DLL 文件:
导入表
一旦函数完成解析,恶意软件就开始对字符串进行解密。首先对 base64 编码进行解码,然后使用密钥 edinayarossiya
进行 RC4
解密。所有字符串都使用解密函数 string_decryption() 进行解密,如下所示:
字符串解密
旧版本的 Raccoon Stealer 只加密硬编码的 IP 地址,不加密其他字符串。而 Raccoon v2
将所有纯文本字符串都进行加密。Raccoon v1 的几个明文字符串如下所示:
Raccoon
v1 明文字符串
在对 Raccoon v2 样本字符串进行手动解密后,可以得到以下明文字符串:
Raccoon
v2 明文字符串
Raccoon
v2 明文字符串
C&C 服务器的 IP 地址保存在恶意软件中,使用相同的方式进行解密,但密钥为
59c9737264c0b3209d9193b8ded6c127
。恶意软件通信的 IP 地址为
hxxp://51.195.166.184/
,解密如下所示:
解密
C&C 服务器地址
加密的字符串可以使用 CyberChef 等工具进行解密,如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S5TCzeYT-1677499214414)(https://image.3001.net/images/20220802/1659409353_62e893c99e583643eb9cd.png!small)]Raccoon
v2 C&C 服务器 IP 地址
这种技术在两个版本的恶意软件中都十分常见,在 Raccoon v1 中如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LACMRCC5-1677499214415)(https://image.3001.net/images/20220802/1659409354_62e893ca3b56f07fdefd7.png!small)]Raccoon
v1 C&C 服务器 IP 地址
完成所有字符串的解密后,恶意软件会联系 C&C 服务器进行检查并下载恶意 DLL 文件。
泄露数据之前的检查
执行恶意软件核心功能前,会对环境进行检查。例如,通过获取互斥量的句柄(8724643052)查看是否在计算机上已经存在运行实例等。
这样确保同时只能运行一个恶意软件实例,下图显示了 Raccoon v2 互斥量的检查与创建。
Raccoon
v2 互斥
下图为 Raccoon v1 中互斥量的检查与创建:
Raccoon
v1 互斥
检索匹配进程 Token 是否为 S-1-5-18
,确定以 SYSTEM 身份运行,如下所示:
Raccoon
v2 枚举进程 Token
如果以 SYSTEM 用户身份运行,使用 fun_CreateToolhelp32Snapshot 进行进程的枚举。下图显示了调用
enumerate_processes() 函数进行进程枚举的过程:
进程枚举
进程枚举
主机指纹
恶意软件会对主机环境进行指纹识别,利用:
RegQueryValueExW 获取机器 ID
GetUserNameW 获取用户名
下图显示了恶意软件通过 RegQueryKeyExW 和 RegQueryValueExW 函数从注册表项
SOFTWAREMicrosoftCryptography 中获取机器 ID。
获取机器
ID
下图使用 GetUserNameW 函数获取用户名:
获取用户名
用户名缓冲区
完成后,将机器 ID 与用户名等信息回传给 C&C 服务器。为此,恶意软件会创建一个字符串保存这些数据。缓冲区中构建的数据结构如下所示:
指纹信息
紧接着在后面附加 RC4 加密密钥,整体结构为 machineId=<MachineGuid>|<UserName>&configId=<RC4 key>
。
命令与控制
C&C 通信完全通过 HTTP 协议进行,恶意软件首先解密获取 C&C 服务器的 IP 地址列表(存储在 local_3c 中)。分析的样本文件只包含一个
IP 地址,就只联系一个 IP 地址,如下所示:
C&C
通信
缓冲区中的
URL
请求头
恶意软件检查是否存在响应,如果没有响应,恶意软件就会立刻退出,因为恶意软件的数据泄露需要 C&C 服务器的响应进行触发。下图中可以看到,这部分功能与
ExitProcess() 函数一同出现:
验证响应
Raccoon v1 依靠 Telegram Bot API 获取 C&C 服务器列表,但 Raccoon Malware v2 使用 5 个硬编码 IP
地址,放弃了对 Telegram 的依赖。
数据泄露
撰写文章时,C&C 服务器的 IP 地址已经失效,无法分析相关流量数据。
服务器失效
只能根据之前的监测数据进行分析,恶意软件下载了其他恶意 DLL 文件。
下载的
DLL 文件
恶意软件使用 SHGetFolderPathW 函数获取 C:\Users\\AppData 路径并追加
Local,将此目录作为存储被窃信息的位置,再回传到 C&C 服务器。
存储路径
网络安全工程师企业级学习路线
这时候你当然需要一份系统性的学习路线
如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。
一些我收集的网络安全自学入门书籍
一些我白嫖到的不错的视频教程:
上述资料【扫下方二维码】就可以领取了,无偿分享