渗透测试的WINDOWS NTFS技巧集合
字数 1595 2025-08-29 08:32:24

Windows NTFS 文件系统渗透测试技巧全集

目录

  1. 技巧1: 创建没有权限的文件夹 (CVE-2018-1036)
  2. 技巧2: 使用供选数据流(ADS)绕过路径限制
  3. 技巧3: 创建无法通过"..."文件夹找到的文件
  4. 技巧4: "隐藏"目录连接的指向目标
  5. 技巧5: 隐藏供选数据流(ADS)
  6. 技巧6: 隐藏进程二进制
  7. Windows CMD的技巧
  8. 防御建议

技巧1: 创建没有权限的文件夹 (CVE-2018-1036)

原理

Windows允许为文件夹设置特殊权限,例如允许创建文件但不允许创建文件夹。通过在文件名末尾添加::$INDEX_ALLOCATION可以绕过这种限制。

操作步骤

  1. 在受限文件夹(如C:\Windows\Tasks\)中执行:
    mkdir test::$INDEX_ALLOCATION
    
  2. 现在可以在创建的文件夹中自由创建文件和子文件夹

删除方法

rd test::$INDEX_ALLOCATION

影响

  • 绕过ACL权限限制
  • 可能导致权限提升
  • 微软已修复(CVE-2018-1036)

技巧2: 使用供选数据流(ADS)绕过路径限制

ADS基础

  • 文件格式:<文件名>:<数据流名称>:<类型>
  • 默认格式:test.txt::$DATA
  • 特殊流:Zone.Identifier(下载文件时自动添加)

关键技巧

  1. 执行ADS中的程序

    wmic process call create "C:\test:Putty.exe"
    
  2. 文件夹ADS

    echo 123 > C:\Windows\Tracing:test.dll
    
    • 路径解析会返回C:\Windows\,但实际上文件存储在C:\Windows\Tracing中
  3. 绕过安全检查

    • 上传:foo.ps1文件,创建applicationFolder\uploadedData:foo.ps1
    • 安全检查认为文件在applicationFolder\
  4. 特殊字符

    • 使用原生API创建包含"*的文件名
    • 可能导致路径解析问题或XSS

技巧3: 创建无法通过"..."文件夹找到的文件

创建特殊文件夹

mkdir ....::$INDEX_ALLOCATION

访问方法

cd ...\...\

特性

  • 无法通过GUI(explorer.exe)正常访问
  • PowerShell搜索会陷入无限循环
  • 大多数命令行工具可以访问
  • 反病毒软件通常可以检测其中内容

技巧4: "隐藏"目录连接的指向目标

创建隐藏目录连接

mklink /J "..." "C:\Windows\System32"

特性

  • dir命令显示[...]而非实际目标
  • 可以创建多级连接点
  • 路径混淆可能导致执行错误文件

安全影响

  • 可用于TOCTOU攻击
  • 可能绕过应用程序白名单

技巧5: 隐藏供选数据流(ADS)

隐藏方法

  1. 使用保留名

    echo 123 > ...:hidden.txt
    
    • 不会显示在dir /r或streams.exe中
  2. 添加空格和点

    echo test > "test. .::$DATA"
    
    • 工具无法正常访问
  3. 驱动器根目录ADS

    echo 123 > C:\:abc.txt
    
    • 隐藏在dir /r

技巧6: 隐藏进程二进制

操作步骤

  1. 创建三个文件:

    • file(合法程序)
    • file. .(恶意程序)
    • filex x(另一个合法程序)
  2. 使用调试器(WinDbg)修改进程创建参数:

    • ntdll!NtCreateUserProcess设置断点
    • 修改文件名指针,将x改为.
  3. 结果:

    • 执行file. .(恶意程序)
    • 任务管理器显示file的签名
    • Process Explorer显示filex x的路径

影响

  • 可能绕过基于哈希的白名单检查
  • 进程信息显示不准确

Windows CMD的技巧

命令混淆

  1. 插入^符号

    ca^l^c
    
    • 等同于calc
  2. 零长度环境变量

    cal%os:~0,-56%c
    
    • 利用子字符串创建空变量
  3. 路径技巧

    C:\Windows/\//\system32\calc.exe
    
    • 混合使用\/
  4. UNC路径

    \\127.0.0.1\C$\windows\system32\calc.exe
    

防御建议

  1. 权限设置

    • 不要仅依赖文件夹创建权限作为安全边界
  2. 路径处理

    • 规范化所有路径
    • 检查特殊字符和ADS
  3. 进程监控

    • 不依赖表面信息验证进程合法性
  4. 工具使用

    • 使用专门工具检测ADS和特殊文件夹
    • 考虑使用原始磁盘扫描而非API
  5. 输入验证

    • 严格验证文件名和路径输入
    • 处理所有可能的路径表示形式

参考资源

Windows NTFS 文件系统渗透测试技巧全集 目录 技巧1: 创建没有权限的文件夹 (CVE-2018-1036) 技巧2: 使用供选数据流(ADS)绕过路径限制 技巧3: 创建无法通过"..."文件夹找到的文件 技巧4: "隐藏"目录连接的指向目标 技巧5: 隐藏供选数据流(ADS) 技巧6: 隐藏进程二进制 Windows CMD的技巧 防御建议 技巧1: 创建没有权限的文件夹 (CVE-2018-1036) 原理 Windows允许为文件夹设置特殊权限,例如允许创建文件但不允许创建文件夹。通过在文件名末尾添加 ::$INDEX_ALLOCATION 可以绕过这种限制。 操作步骤 在受限文件夹(如C:\Windows\Tasks\)中执行: 现在可以在创建的文件夹中自由创建文件和子文件夹 删除方法 影响 绕过ACL权限限制 可能导致权限提升 微软已修复(CVE-2018-1036) 技巧2: 使用供选数据流(ADS)绕过路径限制 ADS基础 文件格式: <文件名>:<数据流名称>:<类型> 默认格式: test.txt::$DATA 特殊流: Zone.Identifier (下载文件时自动添加) 关键技巧 执行ADS中的程序 : 文件夹ADS : 路径解析会返回C:\Windows\,但实际上文件存储在C:\Windows\Tracing中 绕过安全检查 : 上传 :foo.ps1 文件,创建 applicationFolder\uploadedData:foo.ps1 安全检查认为文件在 applicationFolder\ 中 特殊字符 : 使用原生API创建包含 " 或 * 的文件名 可能导致路径解析问题或XSS 技巧3: 创建无法通过"..."文件夹找到的文件 创建特殊文件夹 访问方法 特性 无法通过GUI(explorer.exe)正常访问 PowerShell搜索会陷入无限循环 大多数命令行工具可以访问 反病毒软件通常可以检测其中内容 技巧4: "隐藏"目录连接的指向目标 创建隐藏目录连接 特性 dir 命令显示 [...] 而非实际目标 可以创建多级连接点 路径混淆可能导致执行错误文件 安全影响 可用于TOCTOU攻击 可能绕过应用程序白名单 技巧5: 隐藏供选数据流(ADS) 隐藏方法 使用保留名 : 不会显示在 dir /r 或streams.exe中 添加空格和点 : 工具无法正常访问 驱动器根目录ADS : 隐藏在 dir /r 中 技巧6: 隐藏进程二进制 操作步骤 创建三个文件: file (合法程序) file. . (恶意程序) filex x (另一个合法程序) 使用调试器(WinDbg)修改进程创建参数: 在 ntdll!NtCreateUserProcess 设置断点 修改文件名指针,将 x 改为 . 结果: 执行 file. . (恶意程序) 任务管理器显示 file 的签名 Process Explorer显示 filex x 的路径 影响 可能绕过基于哈希的白名单检查 进程信息显示不准确 Windows CMD的技巧 命令混淆 插入^符号 : 等同于 calc 零长度环境变量 : 利用子字符串创建空变量 路径技巧 : 混合使用 \ 和 / UNC路径 : 防御建议 权限设置 : 不要仅依赖文件夹创建权限作为安全边界 路径处理 : 规范化所有路径 检查特殊字符和ADS 进程监控 : 不依赖表面信息验证进程合法性 工具使用 : 使用专门工具检测ADS和特殊文件夹 考虑使用原始磁盘扫描而非API 输入验证 : 严格验证文件名和路径输入 处理所有可能的路径表示形式 参考资源 Microsoft NTFS文档 Google Project Zero文章 ADS隐藏技巧 AVGater攻击