Reverse Engineering Session 2 by KK TAN ~ Real-world study CVE-2025–8088 [Experience Sharing]
Division Zero (Div0) 再次设立了动手实践的Shell GYM以提升我们的网络安全技能,感谢div0——一个由志愿者驱动的网络安全社区,汇集了网络安全专业人士、从业者和爱好者,共同改善这个领域。
KK Tan作为CounterShell的创始人,投入时间指导我们进行真实世界的漏洞利用——WinRAR漏洞CVE-2025–8088,该漏洞曾被名为“ROMCOM”的俄罗斯APT组织利用。
免责声明:不承担误用责任,仅限教育分享
我分享此经验仅用于教育目的,我们不纵容或支持任何非法、危险或有害的活动。任何使用此信息参与此类行为的个人或实体需自行承担风险,我们明确不对由此造成的损害、行为或后果承担任何责任。我们尊重知识产权,如果您认为本平台分享的任何内容侵犯了您的版权,请立即通知我们。
前言
CVE-2025–8088 (WinRAR)
CVSS 3评分:8.8 高危
受影响版本:WinRAR 7.12 及以下
这是一个影响Windows版WinRAR的路径遍历漏洞,允许攻击者通过构造恶意的归档文件来执行任意代码。
在今天的主题中,我们涵盖了WinRAR漏洞利用的POC,更多是关于如何利用备用数据流和RAR头部,并将头部中的payload(恶意文件)目标路径更改为指定位置,从而使RAR文件将隐藏文件解压到您指向的位置。
目录
- 0x01 工作流程
- 0x02 NTFS与数据流
- 0x03 Python预安装
- 0x04 概念验证 (POC)
- 0x05 使用工具进行逆向工程
0x01 工作流程
在今天的课程中,我们使用github.com/sxyrxyy提供的开…
来源:github.com/sxyrxyy/CVE…
RAR头部:RAR包含元数据,例如内容应解压到哪个路径。通过将占位符“xxxx”修改为目标路径,我们能够进行目录遍历。
诱饵文件:用于将payload内容隐藏在数据流内部。
占位符:用于占据诱饵文件上隐藏流的位置。
诱饵文件pika.pdf里面有什么?
pika.pdf的隐藏数据流是“mspaint”,这也是payload.bat中payload的内容。
什么是CRC32?
CRC32是RAR头部的完整性校验。任何对RAR文件的修改都会改变头部,这就是为什么在POC脚本中需要重新计算CRC32以适应这些更改。
0x02 NTFS与数据流
什么是文件系统?
文件系统有助于以结构化方式存储数据,使系统能够轻松管理和修改文件。想象一下把所有的东西都放在一个地方,当您需要它时,就像从山中搜寻数据一样。在Windows 98之前,人们使用的是FAT32系统。
NTFS不仅提供了更好的性能,还提供了更好的安全性和可靠性,例如日志记录功能可以为文件保留日志,使系统能够在崩溃后恢复您的文件。此外,文件权限和加密有助于提前保护您的文件和隐私。
数据流
数据流实际上是一个数据序列,用于记录您对文件的操作流。一个文件可以由一个或多个数据流组成。当您打开一个note.txt时,您可以看到文档中的任何文字,那是主数据流。除此之外,我们还有一个隐藏数据流,它也被黑客用来隐藏恶意内容,或者也许供情侣写秘密信件?
现在我们创建一个名为homework.txt的文件,您可以在里面写任何内容。
- 我们可以在文件目录中键入“cmd”以在当前文件位置打开cmd。
- 现在我们使用命令“echo”创建一个包含内容的文件,并输入命令读取文件以检查文件是否正确创建。
# 创建文件
echo we have to finish 1 geography and 1 science today > homework.txt
# 读取homework的内容
type homework.txt
一开始看起来很正常,接下来是神奇之处。
通过在文件后面加上:<Stream name>,我们将能够创建一个备用数据流(ADS)。
echo Let's meet at Bugis at 06:00 PM this saturday > homework.txt:secret
现在输入dir /r来检查隐藏的数据流。
dir /r
不带/R参数的“dir”命令不会显示数据流,所以不用担心你父亲用简单的“dir”检查你的文件。
现在我们可以使用“more”命令读取数据流。这个命令很容易记,想象有人在你俩之间充当电灯泡并说“tell me more!”
more < homework.txt:secret
0x03 Python预安装
当谈到Python时,我们会立刻想到“Pycharm”,它是一个自动设置的Python就绪编码环境,或者Kali Linux,它已经有运行Python的环境。所以在处理Windows时,我们需要从官网安装Python包。
下载后,安装到我们的虚拟机(VM)中,并设置变量:
- 右键点击您的Python图标(如果您不知道确切的文件路径),选择“打开文件位置”,直到找到该文件。复制您的目录,稍后可能需要用到。
- 在左下角,在搜索栏中输入“变量”,直到看到此选项。
- 选择“Path”并点击编辑,您会看到里面有很多目录,只需添加一个“;”来分隔并粘贴您的目录。
# 示例 # 记得添加在 ; 后面
C:\Windows\system32;C:\Users\Window10_Pro\AppData\Local\Programs\Python\Python313
除此之外,当您在系统上进行漏洞测试时,您肯定需要一个旧版本的应用,例如RAR的7.12版本,但同时您又拥有最新版本,因此将默认路径更改为7.12版本对您有好处。
0x04 概念验证 (POC)
首先,我们准备一个测试文件,最好是小于30KB作为诱饵文件。其次,我们输入命令:
--rar:我们要使用的rar.exe(带有易受攻击的7.12版本)--decoy:诱饵图像或txt文件--drop:恶意文件的投放位置--out:恶意RAR文件
python poc.py --rar rar.exe --decoy pika.jpg --payload payload.bat --drop C:\Programdata --out testrar.rar
获得恶意RAR文件后,使用以下命令运行它:
rar x testrar.rar
最后,我们成功地在想要的目标路径下生成了payload。
0x05 使用工具进行逆向工程
之后,KK TAN老师提出了一个挑战:对RAR文件进行加密以规避杀毒软件,但不会破坏POC的结构,使得RAR文件头部仍能被路径遍历注入替换。
这一部分更多是关于工具的使用,我还没有完全理解工具的工作流程,因此我建议您阅读CounterShell撰写的这篇博客:
www.countershell.com/blogarchive…
一如既往,KK TAN告诉我们要尽可能保持简单。
附加资源
如果您对恶意软件分析世界感兴趣,更多动态研究请访问:
intelligence.any.run/
或者您可以在此找到CVE-2025–8088相关的动态分析:
app.any.run/tasks/d1fd5…
未来我可能会撰写更多关于逆向工程的主题。 CSD0tFqvECLokhw9aBeRqpNzLTXFlojmzFn6OlyTg9WZHadWe/kB1nGg4DjhL0Vso6DF7lsirXhR8Tluktiu95lpuCsP0hKjyoa1+o4J5x5eQK2NS63Wx6yKUN5EQ+rZnmbRblJW0u4OXy+jD4gyTT74Tuq7/Z2YIzpeq4hvTjKLmbUFvjAtEXsF4ChbcW/e