
Windowsハニーポット:ProjFSを使用してデコイファイルを投影し、アクセスされるとイベントログとデスクトップアラートをトリガー。さらに、SMBリモートセッションのログを記録して横移動検出を実現。
偽のファイル。本当のセキュリティ。
Windows向け仮想ハニーポットファイルシステム — 攻撃者を本物に見えるディレクトリにおびき寄せ、現行犯で捕まえます。
PhantomFSは**Windows Projected File System (ProjFS)**を利用して、記憶域にのみ存在する説得力のあるおとりファイル(財務報告書、SSHキー、API認証情報、人事スプレッドシート、NDAなど)で満たされた仮想ディレクトリを表面化します。攻撃者(または内部脅威)がファイルを開くまで、データがディスクに書き込まれることはありません。
ファイルが触れられた瞬間、PhantomFSは:
PhantomFS)正当なユーザーが自分で置いていないファイルを開く理由はないため、すべてのアラートは高信頼性です。チューニング不要、ML不要、クラウド依存なし — ネイティブWindowsドライバと単一の実行可能ファイルのみです。
| 機能 | 詳細 |
|---|---|
| フットプリントゼロのおとり | ファイルはオンデマンドで投影される — 攻撃者が読み取らない限りディスクに書き込まれない |
| Windows Event Log | イベント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 — インストーラー不要 |
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 --syntheticonly を実行するC:\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 — auto-cleanup -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — remote session logging -->
<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 | SMBクライアントのホスト名をDNS解決してIPアドレスに変換します。ルックアップのレイテンシが許容できない場合は false に設定 |
ファイルがSMB共有を介してアクセスされると、PhantomFSは呼び出し元としてPID 4(Windows Systemプロセス / カーネルSMBドライバ)を検出し、自動的にNetSessionEnumを呼び出してリモートユーザーを識別します。イベントログエントリとToast通知には以下が含まれます。
PhantomFS — Honeypot File Content Read
File : Documents\Q4_Financial_Report_2024.pdf
Process : System (PID 4)
Remote : 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[
... your file content here ...
]]></template>
</syntheticTemplates>
イベントビューアー → Windowsログ → アプリケーション を開き、ソース PhantomFS でフィルタリングします。
| イベントID | レベル | 意味 |
|---|---|---|
| 1001 | 警告 | おとりファイルのデータが読み取られました(該当する場合はリモートユーザー/IPを含む) |
| 1002 | 警告 | おとりファイルのプレースホルダが作成されました(ファイルが参照/statされました) |
| 1003 | 情報 | PhantomFSが起動しました — 仮想ルートパスと設定が記録されました |
| 1004 | 情報 | PhantomFSが正常に停止しました |
PhantomFSには .github/workflows/build.yml にワークフローが含まれており、x64 と ARM64 向けに並行してコンパイルし、バージョンタグごとにGitHub Releaseを公開します。
# Requires .NET Framework 4.8 SDK or 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 を設定。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: