Cloud Files API实战:RedSun如何用CfCreatePlaceholders伪造恶意占位文件骗过Defender
【免费下载链接】RedSunThe Red Sun vulnerability repository项目地址: https://gitcode.com/gh_mirrors/re/RedSun
RedSun 是一个 Windows 安全漏洞 PoC 仓库,核心思路是借助 Cloud Files API 的CfCreatePlaceholders接口伪造恶意占位文件(云标签文件),反向利用 Windows Defender 对"带云标记文件"的错误处理逻辑,最终覆盖系统文件并提权至管理员。🔍
整个 PoC 只有一个 C++ 源文件,却把 Defender 的行为玩出了花——本指南带你一步步看懂它"骗"杀毒软件的完整原理,无需逐行读懂源码。
📌 一句话看懂 RedSun 漏洞
用作者自己的话说:Windows Defender 一旦发现某个恶意文件身上带有"云标签"(cloud tag),出于某种"神奇且荒谬"的逻辑,它不会删除文件,而是会把文件重写回原位置。PoC 正是滥用这一行为,把恶意可执行文件写进C:\Windows\System32,从而获得管理员权限。
作者在 README.md 中的吐槽也很直白:
反恶意软件产品应该删除恶意文件,而不是确保它们存在。
☁️ 先搞懂:Cloud Files API 与"占位文件"是什么?
Windows 10/11 的"按需文件"(Files On-Demand)机制,允许同步应用(如 OneDrive)在本地只保存一个占位文件(Placeholder):
- 本地只留文件元数据(大小、时间戳、云身份 ID),真实内容存放在"云端";
- 用户访问时才按需"水合"(hydration)拉回真实内容;
- 第三方同步引擎通过Cloud Files API(头文件
cfapi.h)与系统交互,其中三个关键函数:CfRegisterSyncRoot:把一个文件夹注册为同步根目录;CfConnectSyncRoot:建立同步引擎与系统的连接;CfCreatePlaceholders:批量创建带云标记的占位文件。
RedSun 的 DoCloudStuff 函数 就完整演示了这套流程:先用SERIOUSLYMSFT这个名字注册一个"假同步引擎",再用CfCreatePlaceholders创建占位文件,并打上CF_PLACEHOLDER_CREATE_FLAG_MARK_IN_SYNC标志,让系统认为"文件已在云端同步就绪"。
这就是欺骗的起点:Defender 看到"恶意文件 = 云同步文件",于是选择把它重写回原位置,而不是删除。⚠️
🛠️ 攻击链路拆解:RedSun 的五步棋
RedSun.cpp 的 main 函数 把整个攻击串成了 5 步:
第 1 步:伪造"诱饵"恶意文件
在%TEMP%\RS-<随机GUID>工作目录下创建TieringEngineService.exe,写入业界标准的 EICAR 杀毒测试字符串(RedSun.cpp)。EICAR 是通用 AV 测试样本,所有主流杀毒软件都会识别它。
第 2 步:主动触发 Defender 响应
PoC 以可执行权限再次打开该文件(RedSun.cpp),强制触发实时防护。此时 Defender 开始"处置"——正常预期是隔离删除,但由于文件即将被标记为云占位文件,Defender 反而把它重写回来。
第 3 步:后台线程盯住卷影副本
Defender 处置文件时会用到卷影副本(VSS,即HarddiskVolumeShadowCopy设备)。ShadowCopyFinderThread 在后台持续枚举\Device对象目录,一旦发现新的卷影副本出现,就对该文件请求batch oplock(FSCTL_REQUEST_BATCH_OPLOCK,RedSun.cpp)——这是同步引擎合法使用的文件锁,借此"卡住"Defender 文件操作的时机窗口。
第 4 步:把目录"调包"成系统目录
关键手法在 RedSun.cpp:PoC 把工作目录改造成指向C:\Windows\System32的目录联接(Junction / 挂载点重解析)。从这一步起,写入"工作目录"里的任何文件,实际都会落在 System32。
第 5 步:写入 System32 并以 SYSTEM 执行
PoC 轮询用FILE_SUPERSEDE方式打开C:\Windows\System32\TieringEngineService.exe(RedSun.cpp),把自己的副本复制进去,再激活"Tier Management Engine" COM 服务(RedSun.cpp)。至此,恶意代码以 SYSTEM 身份进入系统目录——权限提升完成。🏁
🧪 本地复现:RedSun PoC 运行效果
⚠️安全提示:本 PoC 会真实覆写
C:\Windows\System32下的文件并提升权限,请务必只在一次性虚拟机或隔离环境中测试,切勿在生产机器上运行。
上图就是官方文档中展示的 PoC 运行效果:控制台依次打印The sun is shinning...和The red sun shall prevail.,随后新开的管理员窗口里whoami显示nt authority\system——提权成功。
复现要点(依赖库参考 RedSun.cpp):
- Windows 10/11 环境,用 MSVC 编译,链接
synchronization.lib、sas.lib、ntdll.lib、CldApi.lib; - 确保 Defender实时保护开启——PoC 会等待 AV 响应,最长 120 秒,超时会提示
is real time protection enabled ?(RedSun.cpp); - 运行后若看到
The red sun shall prevail.,说明恶意占位文件已成功骗过 Defender 并落入 System32。
🛡️ 启示:这个漏洞教会了我们什么?
- 杀毒软件处理"云文件"的逻辑必须谨慎:Defender 对带云标签的恶意文件执行了"重写回原位置",与"隔离/删除"的本职背道而驰,这正是本漏洞的根源;
- 占位文件是合法功能,但可被伪装:Cloud Files API 本为 OneDrive 等同步场景设计,攻击者却能伪造"假同步引擎"身份(如本 PoC 的
SERIOUSLYMSFT),任何信任云标签的安全产品都可能被类似手法绕过; - 保持系统更新:此类逻辑缺陷通常会在后续 Defender 引擎或系统更新中修复,普通用户最有效的防护就是及时更新 Windows 与 Defender 签名;
- 减少不必要的第三方同步盘挂载:多余的"同步盘"会增加系统目录被异常"水合"篡改的风险面。
📚 项目资料速查
| 文件 | 说明 |
|---|---|
| RedSun.cpp | 完整 PoC 源码(C++,Windows 平台) |
| RedSun.cpp | DoCloudStuff:注册同步根 +CfCreatePlaceholders创建占位文件 |
| RedSun.cpp | 卷影副本监控与 batch oplock 线程 |
| RedSun.cpp | 目录联接(Junction)指向 System32 |
| RedSun.cpp | 轮询写入 System32 恶意可执行文件 |
| README.md | 漏洞原理说明与运行效果图 |
| LICENSE | 开源协议 |
【免费下载链接】RedSunThe Red Sun vulnerability repository项目地址: https://gitcode.com/gh_mirrors/re/RedSun
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考