窃密恶意软件Raccoon最新样本Stealer v2分析
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 服务器。
存储路径
网络安全工程师企业级学习路线
这时候你当然需要一份系统性的学习路线
如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

相关文章:
窃密恶意软件Raccoon最新样本Stealer v2分析
Raccoon 是一个恶意软件家族,2019 年来一直在地下犯罪论坛中以恶意软件即服务的身份进行售卖。2022 年 7 月,该恶意软件家族发布了 C 语言编写的新版本 Raccoon Stealer v2,打破了以往使用 C 开发的传统。 Raccoon 是一个信息窃密恶意软件&a…...
足球俱乐部管理系统
技术:Java、JSP等摘要:网站是一种主要的渠道。人们通过互联网快速、准确的发布信息、获取信息。而足球俱乐部是足球职业化、专业化的一个标志,是足球运动员以足球谋生时,所被聘用的机构,应运时代发展,规模、…...
2023上半年数学建模竞赛汇总(比赛时间、难易程度、含金量、竞赛官网)
1、美国大学生数学建模竞赛等级:国家级是否可跨校:否竞赛开始时间:2月17日~2月21日综合难度:⭐⭐⭐⭐ 竞赛含金量:⭐⭐⭐⭐⭐竞赛官网:https://www.comap.com/2、MathorCup高校数学建模挑战赛---大数据竞赛…...
【python学习笔记】:PHP7 Null合并运算符
在PHP7,一个新的功能,空合并运算符(??)已被引入。它被用来代替三元运算并与 isset()函数功能结合一起使用。如果它存在并且它不是空的,空合并运算符返回它的第一个操作数;否则返回第二个操作数。 示例 <?php// fetch the value of $_…...
数据结构与算法——3.时间复杂度分析1(概述)
前面我们已经介绍了,研究算法的最终目的是如何花费更少的时间,如何占用更少的内存去完成相同的需求,并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异,但我们并不能将时间占用和空间占用量化。因此,接下来…...
FPGA学习之日常工作复位电路
最近一个多月没有写博客了,然后最近工作中也遇到一个复位信号的问题。问题是这样的,关于外部复位信号,之前我们的处理方式都是通过PLL产生的Lock信号作为内部的复位信号。但是由于换到A54上面没有IP核,所以只有不用PLL,…...
【洛谷 P1177】【模板】快速排序 题解(快速排序+指针)
【模板】快速排序 题目描述 利用快速排序算法将读入的 NNN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C 选手请不要试图使用 STL,虽然你可以…...
Pthon--自动化实用技巧篇--文件目录处理
为什么要讲这一篇,主要是因为这个在自动化测试框架或者脚本的编写的时候会用到,还是比较方便的。看上述两个函数。getcwd()、chdir()。使用 os.getcwd() 函数获得当前工作目录。使用 os.chdir()函数改变当前工作目录。所以在用chdir()函数的时候别忘记指…...
想招到实干派程序员?你需要这种面试法
技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽: “我经常在想,能不能把我们项目中的代码打印出来,作为候选人的面试题的一部分?” “能不能把一个Bug带上环境,让候选人来试试怎么解决…...
cesium常见操作:鼠标点击获取对象
目录 一、viewer.scene.pick(获取Cartesian2) 二、 viewer.scene.pickPosition(获取Cartesian3) 三、viewer.scene.drillPick(穿透拾取,获取所有对象) 四、viewer.scene.globe.pick…...
【玩转c++】git的安装和使用以及可视化处理
本期主题:git的安装和使用(windows环境)博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题 小编的能力有限,出现错误希望大家不吝赐1.两个工具介绍第一个工具git,链接gitee或者github等代码托…...
第三阶段02-Mybatis框架
Mybatis框架 Mybatis框架是目前最流行的数据持久层框架, 使用Mybatis框架可以帮助程序员自动生成JDBC代码, 程序员只需要通过注解或xml配置文件提供需要执行的SQL语句,以及对象和表的映射关系, Mybatis框架会根据此映射关系和SQL自动生成出JDBC代码,从而提高开发效率 Mybatis框…...
基于超像素的多视觉特征图像分割算法研究
0.引言 背景: 经典聚类算法:Kmeans、FCM 现有问题: 1)现有算法大都是基于单一的视觉特征而设计的,eg:基于颜色特征的分割。 2)没有考虑像素周围的空间信息;分割结果:多噪…...
mysql的三大日志
摘自https://blog.csdn.net/chuige2013/article/details/123027580 一. 初步认识 binlog二进制日志 redolog undolog 二. binlog binlog记录写入行操作 作用 1)、主从复制:在Master端开启binlog,然后将binlog发送到各个Slave端,S…...
API接口及社区电子商务化的解释
API是应用程序的开发接口,在开发程序的时候,我们有些功能可能不需要从到到位去研发,我们可以拿现有的开发出来的功能模块来使用,而这个功能模块,就叫做库(libary)。比如说:要实现数据传输的安全,…...
[蓝帽杯 2021]One Pointer PHP
知识点:php 数组整型溢出,open_basedir 绕过分析 利用数组整型溢出绕过,因为PHP 会对溢出的数字处理为 float 类型。 <?php include "user.php"; if($userunserialize($_COOKIE["data"])){$count[$user->count]…...
【JAVA】xxl-job服务搭建
xxl-job服务搭建 1.下载xxl-job项目 https://github.com/xuxueli/xxl-job 2.数据库表创建 3.修改配置 注意:这是两个项目,一个是xxl-job前台,一个是xxl-job执行器,找到这两个项目得配置文件,修改配置。 配置文件地址…...
毕业设计 基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计
基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2心率检测电路设计2.3 TFT2.4寸彩屏电路设计3、部分代码展示3.1 ADC初始化3.2 获取ADC采样值3.3 LCD引脚初始化3.3 在LCD指定位置显…...
【10k~30k的区别】=== 功能测试、自动化测试、性能测试的区别
按测试执行的类型来分:功能测试、自动化测试、性能测试 1.功能测试 功能测试俗称点点点测试。初级测试人员的主要测试任务就是执行测试工程师所写的测试用 例,记录用例的执行状态及bug情况。与开发人员进行交互直到bug被修复。 功能测试理论…...
《MySQL学习》 索引失效的三种特殊情况
一.条件字段使用函数 explain select * from bpm_proc_instance bpi where CREATED_AT > 2022-06-01 CREATED_AT 字段建立了索引,此时explain分析的结果表明能使用到索引 但如果我们对 CREATED_AT 字段使用函数 explain select * from bpm_proc_instance bpi w…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
