Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PhantomFS — 仅向允许的进程提供载荷,使用 Windows 投影文件系统功能 | Kitploit
工具/GitHubGitHub/s1lkys/phantomfs
加密/解密工具Payload生成红队Payload 开发
GitHubs1lkys/phantomfs

PhantomFS

仅向允许的进程提供载荷,使用 Windows 投影文件系统功能

查看仓库
25337个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PhantomFS

ProjFS 提供程序。投影文件,其内容取决于哪个进程读取它们。有效载荷以 AES-256-CBC 加密存储在磁盘上,仅在运行时在内存中解密。这不应该绕过任何 EDR,因为当允许的进程尝试读取时,有效载荷会被写入磁盘。其他所有进程都会被拒绝访问。这可能会惹恼一些分析人员,因为他们的工具无法读取它,或者只是加载一个诱饵。但你可以很容易地通过重解析点看出这是 ProjFS。

工作流程

root@kitploit:~
1) 生成密钥:    PhantomFS.exe -keygen
2) 加密有效载荷: PhantomFS.exe -encrypt mimikatz.exe -key <key> -out mimikatz.enc
3) 提供服务:    PhantomFS.exe C:\Staging -file mimikatz.enc -key <key> -decoy C:\Windows\System32\calc.exe

示例:
PhantomFS.exe C:\Staging -file mimikatz.enc -key 7ed5a44412447be587b2ca2e4eacb17d41c869360663ae0fea1d0caca159483c -decoy C:\Windows\System32\calc.exe

结果:文件系统出现 C:\Staging\calc.exe。

  • cmd.exe 读取时获得解密后的 mimikatz 字节
  • 其他所有进程获取真实的 calc.exe 字节加上空填充
  • 非允许进程的删除/重命名尝试被阻止

构建

VS2022,打开 PhantomFS.sln,构建 x64 Release。需要 Windows SDK(ProjFS 头文件和库)。

先决条件

root@kitploit:~
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart

提供程序以中等完整性运行,无需管理员权限(ProjFS 功能激活确实需要管理员权限)。

CLI 参考

密钥生成

root@kitploit:~
PhantomFS.exe -keygen

加密

root@kitploit:~
PhantomFS.exe -encrypt <input> -key <64_hex_chars> -out <output.enc>

格式:[16字节随机IV][带PKCS7填充的AES-256-CBC密文]

提供

root@kitploit:~
PhantomFS.exe <root_dir> -file <payload.enc> -key <hex> -decoy <benign_file>
    [-name <virtual_filename>]
    [-allow <process_substring>]  (可重复,默认:powershell.exe, pwsh.exe, cmd.exe)
    [-deny-read <process_substring>]  (可重复)
    [-quiet]

工作原理

ProjFS 回调在每次文件访问时接收 TriggeringProcessImageFileName:

  • GetFileDataCallback:根据规则检查进程,提供有效载荷或诱饵字节
  • NotificationCallback PRE_DELETE:阻止非允许进程删除文件
  • FILE_HANDLE_CLOSED:调用 PrjDeleteFile 强制重新水合

重新水合技巧是必要的,因为 ProjFS 在第一次读取后会缓存文件内容。如果没有它,第二个读取者将获得第一个读取者所接收到的内容。

检测面

  • PrjStartVirtualizing API 调用
  • IO_REPARSE_TAG_PROJFS 重解析点
  • 启用的 ProjFS Windows 功能
  • 高度为 189800 的 PrjFlt 微过滤器(fltmc.exe)
  • Microsoft-Windows-ProjFS ETW 提供程序
  • 频繁的文件状态转换(已水合 -> 占位符)

灵感来源:

  • https://www.huntress.com/blog/windows-projected-file-system-mechanics
下载工具