假文件。真安全。
为Windows打造的虚拟蜜罐文件系统——引诱攻击者进入看似真实的目录,然后当场捕获他们。
PhantomFS 利用 Windows 投影文件系统(ProjFS) 呈现一个充满逼真假文件的虚拟目录——这些文件(财务报表、SSH 密钥、API 凭据、HR 电子表格、保密协议等)仅存在于内存中。在攻击者(或内部威胁)打开文件之前,不会有任何数据写入磁盘。
一旦文件被触碰,PhantomFS 将:
PhantomFS)由于合法用户没有理由打开他们未放置的文件,每个警报都具有高置信度。无需调优、无需机器学习、无需云依赖——仅需一个原生 Windows 驱动和一个可执行文件。
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)PhantomFS-v1.1.0-x64.zip 并解压Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonlyC:\PhantomFS\Virtual\Documents——您将看到诱饵文件所有设置位于 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>
当通过 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]
远程记录的要求:
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 |
|---|
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™ 是 Alloy Secure 的商标。保留所有权利。
基于 Windows 投影文件系统 API 构建——该技术也是 WSL2 和 OneDrive 文件按需同步的基础。
灵感来源于我在 Thinkst 作为研究员的工作 💚 https://citation.thinkst.com/talk/94782
| 特性 | 详情 |
|---|
| 零足迹诱饵 | 文件按需投影——除非攻击者读取文件,否则不会写入磁盘 |
| 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——无需安装程序 |
| 键 | 默认值 | 起始版本 | 说明 |
|---|
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 |
| 级别 |
|---|
| 含义 |
|---|
| 1001 | 警告 | 诱饵文件的数据被读取(适用时包含远程用户/IP) |
| 1002 | 警告 | 诱饵文件占位符被创建(文件被浏览/stat'd) |
| 1003 | 信息 | PhantomFS 启动——记录虚拟根路径和设置 |
| 1004 | 信息 | PhantomFS 干净地停止 |