导语:大多数安全团队认为NTFS连接点和符号链接只是小众的文件系统功能。然而安全研究人员的最新发现证明,通过巧妙的路径构造,任何普通用户都可以创建递归循环,让EDR的文件夹扫描功能陷入死循环——恶意文件就此消失于无形。
一、NTFS连接点基础知识
在深入GhostTree之前,我们需要了解NTFS的两种重解析点(Reparse Point):
符号链接(Symbolic Link):可以指向文件或目录,跨越卷操作 连接点(Junction):仅可指向目录,本卷内操作
这两种功能都是Windows为兼容性和灵活性而设计的,正常情况下需要管理员权限才能创建——但有一个例外:用户创建的连接点不需要特殊权限,只需要目标文件夹的写权限。
二、GhostBranch:基础的单点循环
2.1 原理
GhostBranch是GhostTree的基础技术。它的核心思想非常简单:
# 创建子文件夹
mkdir C:testchild
# 将child指向其父文件夹C:test
mklink /J C:testchild C:test
结果是什么?C:testchild既是C:test的子文件夹,又指向C:test本身。这创建了一个逻辑循环。
2.2 路径爆炸效果
通过这个结构,可以生成无限多的有效路径:
C:testchildchildchild...
C:testchildchildchildchild...
所有这些路径都指向同一个地方——但Windows认为它们都是有效的。
三、GhostTree:二叉树结构的路径迷宫
GhostTree在GhostBranch的基础上引入多个子文件夹,产生指数级的路径爆炸:
3.1 创建方法
# 创建两个子文件夹
mkdir C:parentP
mkdir C:parentB
# 将它们都指向父文件夹
mklink /J C:parentP C:parent
mklink /J C:parentB C:parent
3.2 路径多样性
现在每一层路径可以在”P”和”B”之间选择:
C:parentPPPP...
C:parentBBBB...
C:parentPBPB...
随着路径增长,可能的路径数量呈指数增长:
数学计算:
- 单层最大深度约126个文件夹(受路径长度限制)
- 每层2种选择(P或B)
- 总路径数 = 2^126 ≈ 8.5×10^18
这个数字已经超过地球上沙粒的总数。
四、为什么这能绕过EDR?
4.1 EDR的扫描机制
现代EDR产品普遍使用文件夹扫描作为恶意软件检测手段之一。当EDR安装时,它会扫描系统中的关键文件夹,寻找已知的恶意文件特征。
4.2 遭遇GhostTree的场景
假设攻击者:
- 在某文件夹中放置恶意软件
- 创建GhostTree结构
- 当EDR尝试递归扫描该文件夹时…
EDR会陷入无限递归,因为每进入一层,理论上都有两个新的子文件夹,而它们都循环回父文件夹。实际扫描会达到Windows路径长度限制(约260字符),但此时已经扫描了亿亿计的”假”路径。
结果:扫描永远无法完成,恶意文件从未被检测。
五、实测效果
安全研究人员测试了GhostTree对Windows Defender的影响:
# 创建一个GhostTree结构
mkdir C:maliciousP
mkdir C:maliciousB
mklink /J C:maliciousP C:malicious
mklink /J C:maliciousB C:malicious
# 放置恶意软件
copy malware.exe C:malicious
使用Windows Defender进行文件夹扫描时,系统会陷入长时间的扫描状态,最终超时——恶意文件保持未检测状态。
六、Microsoft回应
研究人员向微软报告了这一问题。微软的回应是:
“绕过高德纳终端防御不是跨越安全边界”
换句话说,微软认为这只是”规避检测”而非真正的安全漏洞,因此不予修复。这与微软对”边界内”攻击的传统定义一致。
不过研究人员指出,这种技术确实可以被用于实际的攻击场景,不仅仅是”检测规避”。
七、检测与防御建议
7.1 监控junction创建
安全团队应该在SIEM中创建规则,监控异常数量的连接点创建:
# 监控 Junction 创建的 PowerShell 脚本
Get-WinEvent -FilterHashtable @{LogName="Security";ID=4657} |
Where-Object {$_.Message -match "mklink"} |
Select-Object TimeCreated, ProcessName, TargetName
7.2 文件访问模式分析
EDR应该监控以下异常行为:
- 短时间内对同一文件的多次不同路径访问
- 递归扫描过程中的异常超时
- Junction创建事件与后续文件写入的关联
7.3 缓解措施
短期:
- 部署专门检测GhostTree的EDR规则
- 监控Junction创建事件
- 限制普通用户创建连接点的能力(通过组策略)
长期:
- EDR需要实现循环检测和路径规范化验证
- 微软应该考虑为连接点创建添加审核日志
八、攻击场景
GhostTree可以被用于:
恶意软件持久化:将恶意软件藏在无法被扫描的文件夹中
数据外泄掩护:在大量假路径中混入真实的外泄通道
后门隐藏:让后门文件完全逃脱AV/EDR的文件夹扫描
九、总结
GhostTree是一个巧妙利用Windows文件系统特性的攻击技术。它不依赖任何漏洞利用,而是”合理使用”系统的已有功能。这种”设计内”的攻击往往更难防御,因为微软可以辩称这是”按预期工作”。
对于安全团队而言,这意味着需要从单纯的签名扫描转向更智能的行为分析和异常检测。路径操纵技术再次提醒我们:防御不是简单地建立规则,而是要理解攻击者的思维方式。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。













暂无评论内容