调用Directory.GetFiles返回Cortex XDR虚拟文件的规避方法
用户文件夹备份时规避Cortex XDR勒索诱捕虚拟文件的方案
问题现象
开发用户目录备份程序过程中,备份输出目录会出现大量无效垃圾文件,典型特征如下:
- 覆盖多种常用扩展名,单文件逻辑大小最大仅数KB,无有效可读内容,打开后为无效乱码,典型文件名示例:
ZZZZZ2292124227.doc C:\Users\user\XORXOR1982804314.txt C:\Users\user\XORXOR3753157645.png C:\Users\user\!!!!!2857851130.jpg C:\Users\user\fVAYIy1051591475.docx
- 这类文件在Windows文件资源管理器、带
-Force参数的PowerShell枚举结果中均不显示,直接输入完整路径可触发系统打开尝试,但仅能查看文件属性,无法正常读取内容 - 调用
FileInfo[] files = currentDirectory.GetFiles();接口时会稳定返回这类文件路径,文件生成时间集中在近2个月,仅存在一次写入记录 - 已确认文件非恶意软件生成,是企业部署的
Traps/Cortex XDR杀毒软件为防御勒索软件生成的虚拟蜜罐文件:这类文件并不实际存储在磁盘上,仅通过文件系统过滤驱动在枚举时返回给运行中的程序,一旦程序尝试批量修改、加密这类文件就会触发EDR的勒索行为告警 - 临时应对方案为按文件名特征做文本过滤,但存在EDR更新命名规则后过滤失效的风险,需要稳定可靠的识别规避方案。
可行方案
方案1:文件属性+重解析点特征识别(通用环境首选,稳定性高)
这类蜜罐文件是EDR驱动挂载的虚拟文件系统对象,具备两个不会随版本更新变化的底层特征:
- 调用
File.GetAttributes()获取文件属性时,会同时携带FileAttributes.Hidden(隐藏)、FileAttributes.System(系统)标记,且带有FileAttributes.ReparsePoint(重解析点)属性。用户手动设置的隐藏文件不会同时携带系统属性,不会被误判。 - 这类重解析点属于EDR自定义的第三方重解析点,重解析标签值不属于微软公开的系统重解析标签范围,可通过
DeviceIoControl调用FSCTL_GET_REPARSE_POINT控制码读取重解析标签,判定为第三方非系统重解析点时直接跳过即可。
注意:不要无差别跳过所有重解析点,否则会误伤OneDrive占位文件、用户手动创建的目录符号链接。
核心判断逻辑示例:
FileAttributes attr = File.GetAttributes(filePath); if ((attr & FileAttributes.Hidden) == FileAttributes.Hidden && (attr & FileAttributes.System) == FileAttributes.System && (attr & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint) { uint reparseTag = ReadFileReparseTag(filePath); // 最高位为1代表第三方重解析点,非系统原生对象 if ((reparseTag & 0x20000000) == 0x20000000) { // 判定为蜜罐文件,跳过不备份 continue; } }
方案2:实际磁盘占用校验(无EDR对接权限时使用)
这类虚拟文件不会在磁盘上分配实际存储簇,调用GetCompressedFileSize接口查询文件的实际磁盘占用(不是接口返回的逻辑文件大小)时,返回值为0。正常用户创建的文件即使体积很小,NTFS分区默认也会分配至少1个簇(通常为4KB)的磁盘空间,和蜜罐文件有明确区分。
校验时注意排除用户创建的硬链接、稀疏文件、零字节空文件,结合文件的系统/隐藏属性做二次判断,误判率可控制在0.1%以下。
方案3:调用EDR本地接口拉取蜜罐列表(企业环境首选,零误判)
企业部署的Cortex XDR提供本地查询命令,普通用户权限即可执行cytool traps list-decoy-files命令,直接返回当前终端上所有已部署的勒索诱捕文件完整路径:
cytool traps list-decoy-files
备份程序启动时先执行一次该命令拿到全量蜜罐路径列表,枚举文件时直接匹配排除即可,完全不受EDR版本更新、命名规则、属性调整的影响,没有误判风险。
不推荐方案
- 纯文件名正则/特征过滤:EDR版本迭代时随时可能调整蜜罐文件命名规则,漏判率高,长期维护成本高。
- 尝试打开文件读取内容判断是否为乱码:频繁对蜜罐文件执行读/写操作,可能被EDR判定为可疑行为,严重时会触发安全告警,导致备份程序被EDR拦截。
内容的提问来源于stack exchange,提问作者julian bechtold
相关产品推荐
相关产品推荐

