
PhantomFS v1.2.20
Windows蜜罐,利用ProjFS投射诱饵文件,当文件被访问时触发事件日志和桌面警报,并通过SMB远程会话日志记录来检测横向移动。
假文件。真安全。
为Windows打造的虚拟蜜罐文件系统——引诱攻击者进入看似真实的目录,然后当场捕获他们。
什么是 PhantomFS?
PhantomFS 利用 Windows 投影文件系统(ProjFS) 呈现一个充满逼真假文件的虚拟目录——这些文件(财务报表、SSH 密钥、API 凭据、HR 电子表格、保密协议等)仅存在于内存中。在攻击者(或内部威胁)打开文件之前,不会有任何数据写入磁盘。
一旦文件被触碰,PhantomFS 将:
- 写入一条 Windows 事件日志条目(应用程序日志,源为
PhantomFS) - 向当前桌面会话发送一条 Toast 通知
- 记录精确的文件名、时间戳和进程上下文
- 当通过网络共享访问时——捕获 SMB 用户名和源地址
由于合法用户没有理由打开他们未放置的文件,每个警报都具有高置信度。无需调优、无需机器学习、无需云依赖——仅需一个原生 Windows 驱动和一个可执行文件。
特性
| 特性 | 详情 |
|---|---|
| 零足迹诱饵 | 文件按需投影——除非攻击者读取文件,否则不会写入磁盘 |
| Windows 事件日志 | 事件 ID 1001(文件读取)、1002(占位符创建)、1003(启动)、1004(停止) |
| Toast 警报 | 通过 Windows PowerShell 立即发出桌面通知——甚至可在 RDP 下工作 |
| 远程会话记录 | 当 PID 4 触发访问时,通过 NetSessionEnum 捕获 SMB 用户名和源地址 |
| 自动清理 | 在可配置延迟后删除已实例化的合成文件;下次访问时恢复为虚拟文件 |
| 可配置模板 | PDF、XLSX、DOCX、JSON、CSV、PEM、纯文本——均通过配置文件中的 XML 模板提供 |
| 每文件冷却 | 可配置的节流(默认 15 秒),防止工具读取多个块时警报泛滥 |
| 合成文件列表 | 可放下的 XML 列表,包含逼真的文件名和实际字节大小 |
| 单个可执行文件 | PhantomFS.exe + PhantomFS.exe.config——无需安装程序 |
系统要求
- Windows 10 版本 1809(内部版本 17763)或更高版本——推荐 Windows 11
- .NET Framework 4.8
- 启用 Windows 投影文件系统可选功能(
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart) - 启动虚拟根目录需要管理员权限
快速开始
简单命令(推荐)
- 从 Releases 下载
PhantomFS-v1.1.0-x64.zip并解压 - 以管理员身份运行——启用 ProjFS:
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart - 执行:
.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonly - 在资源管理器中浏览
C:\PhantomFS\Virtual\Documents——您将看到诱饵文件 - 打开其中一个——观察 Toast 通知并检查 事件查看器 → Windows 日志 → 应用程序
配置
所有设置位于 PhantomFS.exe.config 中。所有键均为可选——省略某个键将使用表中显示的默认值。
使用 PhantomFS 配置文件生成器 为您的部署场景生成不同的配置方案:
<settings> 部分
<settings>
<enableEventLog>true</enableEventLog>
<enableToast>true</enableToast>
<alertOnOpen>true</alertOnOpen>
<alertOnRead>true</alertOnRead>
<toastCooldownSeconds>15</toastCooldownSeconds>
<verbose>false</verbose>
<virtRoot></virtRoot>
<sourceRoot></sourceRoot>
<syntheticOnly>true</syntheticOnly>
<!-- v1.1.0 — 自动清理 -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — 远程会话记录 -->
<resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
| 键 | 默认值 | 起始版本 | 说明 |
|---|---|---|---|
enableEventLog | true | 1.0.0 | 写入 Windows 应用程序事件日志 |
enableToast | true | 1.0.0 | 发送桌面 Toast 通知 |
alertOnOpen | true | 1.0.0 | 首次创建占位符(目录浏览)时发出警报 |
alertOnRead | true | 1.0.0 | 实际读取文件数据时发出警报 |
toastCooldownSeconds | 15 | 1.0.0 | 同一文件路径的 Toast 之间最小间隔秒数 |
verbose | false | 1.0.0 | 诊断用额外控制台输出 |
virtRoot | (参数 1) | 1.0.0 | 从配置而非命令行覆盖虚拟根路径 |
sourceRoot | (空) | 1.0.0 | 可选的真实后备目录——留空表示仅使用合成模式 |
syntheticOnly | true | 1.0.0 | 仅提供 <syntheticFileList> 中列出的文件 |
autoCleanupEnabled | true | 1.1.0 | 延迟后删除已实例化的合成文件并恢复为虚拟文件 |
autoCleanupDelaySeconds | 300 | 1.1.0 | 文件实例化后删除前的秒数(清理计时器每 30 秒运行一次) |
resolveRemoteIPs | true | 1.1.0 | DNS 解析 SMB 客户端主机名为 IP 地址;如果查询延迟不可接受,设置为 false |
远程会话记录
当通过 SMB 共享访问文件时,PhantomFS 检测到 PID 4(Windows 系统进程/内核 SMB 驱动程序)作为调用者,并自动调用 NetSessionEnum 识别远程用户。事件日志条目和 Toast 通知将包含:
PhantomFS — 蜜罐文件内容读取
文件 : Documents\Q4_Financial_Report_2024.pdf
进程 : System (PID 4)
远程 : CORP\jsmith @ DESKTOP-A1B2C3D [192.168.1.45]
远程记录的要求:
- 服务器服务必须正在运行(只要存在共享,它就会自动启动)
- PhantomFS 必须在托管该共享的机器上运行
resolveRemoteIPs要求客户端机器可通过 DNS 解析
自动清理行为
合成文件被打开并实例化(内容写入磁盘)后,后台计时器每 30 秒检查一次,并删除实例化时间超过 autoCleanupDelaySeconds 的文件。已删除的文件恢复为虚拟的 ProjFS 占位符——下次访问将重新触发 ProjFS 回调,如同该文件从未被打开过。
清理计时器触发时仍处于打开状态的文件将被跳过(无错误),并在下一个 30 秒周期重试。
添加诱饵文件
在配置的 <syntheticFileList> 下添加条目:
\Documents,true,0,1744586986
\Documents\Q4_Financial_Report_2024.pdf,false,8192,1744586986
\Documents\Employee_Salaries_2024.xlsx,false,4096,1743942586
\IT\Keys,true,0,1744586986
\IT\Keys\deploy_key.pem,false,3247,1742354986
添加内容模板
<syntheticTemplates>
<template name="my_custom_file.txt"><![CDATA[
... 您的文件内容在此 ...
]]></template>
</syntheticTemplates>
事件日志参考
打开 事件查看器 → Windows 日志 → 应用程序 并按源 PhantomFS 筛选。
| 事件 ID | 级别 | 含义 |
|---|---|---|
| 1001 | 警告 | 诱饵文件的数据被读取(适用时包含远程用户/IP) |
| 1002 | 警告 | 诱饵文件占位符被创建(文件被浏览/stat'd) |
| 1003 | 信息 | PhantomFS 启动——记录虚拟根路径和设置 |
| 1004 | 信息 | PhantomFS 干净地停止 |
CI/CD — GitHub Actions
PhantomFS 附带一个工作流 .github/workflows/build.yml,它并行编译 x64 和 ARM64,并在每个版本标签上发布 GitHub Release。
从源码构建
# 需要 .NET Framework 4.8 SDK 或 Visual Studio Build Tools
csc.exe /platform:x64 /r:System.Xml.dll /out:PhantomFS.exe src\PhantomFS.cs
csc.exe 通常位于:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
部署思路
- 工作站陷阱——作为登录时计划任务运行;任何横向移动到
\\hostname\PhantomFS\Virtual都会立即发出警报,包含攻击者的用户名和源 IP - 文件服务器金丝雀——在真实财务共享旁放置一个指向虚拟根的
\Finance共享;远程会话记录精确识别哪个账户触碰了诱饵 - 开发机——在
~\Documents中呈现虚假的 AWS 密钥和 SSH 密钥;内部或供应链攻击在数据泄露前触发警报 - 气隙网段——设置
resolveRemoteIPs=false以跳过外部查询被阻止的环境中的 DNS;仍可捕获 NetBIOS 计算机名
赞助
PhantomFS 是免费、开源、MIT 许可的。如果它节省了您的时间——或捕获了真正的攻击者——请考虑赞助以支持持续开发。
赞助者将获得:
- 优先处理问题回复
- 提前获取新模板和新功能
- 在发行说明中被提及
企业赞助者(每月 $500+)将获得一个用于直接支持和功能请求的私人 Slack 频道。
许可证
MIT License
Copyright (c) 2026 Alloy Secure
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
商标声明: PhantomFS™ 是 Alloy Secure 的商标。保留所有权利。
免责声明 — 可接受使用
PhantomFS 仅提供 用于合法的防御性安全目的——包括入侵检测、威胁研究以及对您拥有或已获得明确书面授权监控的系统进行授权的渗透测试。
您有全权责任确保您对 PhantomFS 的使用符合所有适用的地方、国家和国际法律,包括但不限于计算机欺诈、窃听、隐私和劳动法。在未获得适当授权的情况下,在系统或网络上部署 PhantomFS 可能构成违法。
PhantomFS 的作者和贡献者:
- 不作任何明示或暗示的保证,包括针对特定用途的适销性和适用性
- 不承担任何直接、间接、附带或后果性损害,无论其由使用或误用本软件引起
- 不对因在任何环境中部署 PhantomFS 而导致的任何数据丢失、系统损坏、法律责任或对第三方的损害 负责
使用风险自负。 使用 PhantomFS 即表示您承认已阅读、理解并同意受本免责声明条款的约束。
商标声明: PhantomFS™ 是 Alloy Secure 的商标。保留所有权利。
致谢
基于 Windows 投影文件系统 API 构建——该技术也是 WSL2 和 OneDrive 文件按需同步的基础。
灵感来源于我在 Thinkst 作为研究员的工作 💚 https://citation.thinkst.com/talk/94782