
Pot de miel Windows utilisant ProjFS pour projeter des fichiers leurres qui déclenchent des alertes dans le Journal des événements et sur le bureau lorsqu'ils sont consultés, avec enregistrement des sessions distantes SMB pour la détection des mouvements latéraux.
Faux fichiers. Vraie sécurité.
Système de fichiers virtuels honeypot pour Windows — attirez les attaquants dans un répertoire qui a l'air réel, puis prenez-les sur le fait.
PhantomFS utilise le système de fichiers projeté Windows (ProjFS) pour afficher un répertoire virtuel rempli de fichiers leurres convaincants — rapports financiers, clés SSH, identifiants API, feuilles de calcul RH, NDA — qui n'existent qu'en mémoire. Aucune donnée n'est jamais écrite sur le disque tant qu'un attaquant (ou une menace interne) n'en ouvre un.
Au moment où un fichier est touché, PhantomFS :
PhantomFS)Comme les utilisateurs légitimes n'ont aucune raison d'ouvrir des fichiers qu'ils n'ont pas placés là, chaque alerte est de haute fiabilité. Pas de réglage, pas de ML, pas de dépendances cloud — juste un pilote Windows natif et un exécutable unique.
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)PhantomFS-v1.1.0-x64.zip depuis Releases et extrayez-leEnable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonlyC:\PhantomFS\Virtual\Documents dans l'Explorateur — vous verrez les fichiers leurresTous les paramètres se trouvent dans PhantomFS.exe.config. Toutes les clés sont facultatives — omettre une clé utilise la valeur par défaut indiquée dans le tableau.
Utilisez le Générateur de profil PhantomFS pour créer différents profils de configuration pour vos scénarios de déploiement :
<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 — nettoyage automatique -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — journalisation de session distante -->
<resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
Lorsqu'un fichier est accédé via un partage SMB, PhantomFS détecte le PID 4 (le processus Système Windows / pilote SMB noyau) comme appelant et appelle automatiquement NetSessionEnum pour identifier l'utilisateur distant. L'entrée du journal des événements et la notification Toast incluront :
PhantomFS — Lecture du contenu d'un fichier leurre
Fichier : Documents\Rapport_Financier_T4_2024.pdf
Processus : Système (PID 4)
Distant : CORP\jsmith @ DESKTOP-A1B2C3D [192.168.1.45]
Prérequis pour la journalisation distante :
resolveRemoteIPs nécessite que la machine cliente soit résolvable via DNSAprès qu'un fichier synthétique est ouvert et matérialisé (contenu écrit sur le disque), un minuteur d'arrière-plan vérifie toutes les 30 secondes et supprime les fichiers dont le temps de matérialisation dépasse autoCleanupDelaySeconds. Le fichier supprimé revient à un espace réservé virtuel ProjFS — le prochain accès déclenche à nouveau le rappel ProjFS comme si le fichier n'avait jamais été ouvert.
Les fichiers encore ouverts lors du déclenchement du minuteur de nettoyage sont ignorés sans erreur et réessayés lors du prochain cycle de 30 secondes.
Ajoutez des entrées sous <syntheticFileList> dans la configuration :
\Documents,true,0,1744586986
\Documents\Rapport_Financier_T4_2024.pdf,false,8192,1744586986
\Documents\Salaires_Employes_2024.xlsx,false,4096,1743942586
\IT\Clefs,true,0,1744586986
\IT\Clefs\cle_deploiement.pem,false,3247,1742354986
<syntheticTemplates>
<template name="mon_fichier_personnalise.txt"><![CDATA[
... votre contenu de fichier ici ...
]]></template>
</syntheticTemplates>
Ouvrez Observateur d'événements → Journaux Windows → Application et filtrez par source PhantomFS.
PhantomFS fournit un workflow à .github/workflows/build.yml qui compile pour x64 et ARM64 en parallèle, et publie une release GitHub sur chaque tag de version.
# Nécessite le SDK .NET Framework 4.8 ou les outils de build Visual Studio
csc.exe /platform:x64 /r:System.Xml.dll /out:PhantomFS.exe src\PhantomFS.cs
csc.exe se trouve généralement à :
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
\\nom_hote\PhantomFS\Virtual déclenche une alerte immédiate avec le nom d'utilisateur et l'IP source de l'attaquant\Finance pointant vers la racine virtuelle à côté du partage finance réel ; la journalisation de session distante identifie exactement quel compte a parcouru l'appât~\Documents ; les attaques d'initiés ou de la chaîne d'approvisionnement déclenchent des alertes avant l'exfiltrationresolveRemoteIPs=false pour ignorer le DNS dans les environnements où les recherches externes sont bloquées ; le nom de machine NetBIOS est toujours capturéPhantomFS est gratuit, open-source et sous licence MIT. S'il vous a fait gagner du temps — ou a permis de capturer un véritable attaquant — merci d'envisager de sponsoriser le développement continu.
Les sponsors reçoivent :
Les sponsors corporatifs (500 $/mois et plus) reçoivent un canal Slack privé pour un support direct et des demandes de fonctionnalités.
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.
Avis de marque déposée : PhantomFS™ est une marque déposée d'Alloy Secure. Tous droits réservés.
PhantomFS est fourni uniquement à des fins de sécurité défensive légales — notamment la détection d'intrusion, la recherche sur les menaces et les tests d'intrusion autorisés sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de surveiller.
Vous êtes seul responsable de vous assurer que votre utilisation de PhantomFS est conforme à toutes les lois locales, nationales et internationales applicables, y compris mais sans s'y limiter les lois sur la fraude informatique, les écoutes électroniques, la vie privée et le droit du travail. Déployer PhantomFS sur des systèmes ou réseaux sans autorisation appropriée peut être illégal.
Les auteurs et contributeurs de PhantomFS :
Utilisation à vos risques et périls. En utilisant PhantomFS, vous reconnaissez avoir lu cette clause de non-responsabilité, la comprendre et accepter d'être lié par ses termes.
Avis de marque déposée : PhantomFS™ est une marque déposée d'Alloy Secure. Tous droits réservés.
Construit sur l'API du système de fichiers projeté Windows — la même technologie qui alimente WSL2 et OneDrive Fichiers à la demande.
Inspiré par mon travail en tant que chercheur chez Thinkst 💚 https://citation.thinkst.com/talk/94782
| Fonctionnalité | Détails |
|---|
| Leurres sans empreinte | Les fichiers sont projetés à la demande — rien n'est écrit sur le disque sauf si un attaquant lit un fichier |
| Journal des événements Windows | ID d'événement 1001 (lecture de fichier), 1002 (création d'espace réservé), 1003 (démarrage), 1004 (arrêt) |
| Alertes Toast | Notification de bureau immédiate via Windows PowerShell — fonctionne même via RDP |
| Journalisation de session distante | Nom d'utilisateur SMB et adresse source capturés via NetSessionEnum lorsque le PID 4 déclenche l'accès |
| Nettoyage automatique | Les fichiers synthétiques matérialisés sont supprimés après un délai configurable ; retour à l'état virtuel lors du prochain accès |
| Modèles configurables | PDF, XLSX, DOCX, JSON, CSV, PEM, texte brut — tous servis à partir de modèles XML dans la configuration |
| Refroidissement par fichier | Limitation configurable (15 s par défaut) pour éviter une avalanche d'alertes lorsqu'un outil lit plusieurs blocs |
| Liste de fichiers synthétiques | Liste XML prête à l'emploi de noms de fichiers convaincants avec des tailles d'octets réalistes |
| Exécutable unique | PhantomFS.exe + PhantomFS.exe.config — pas d'installateur requis |
| Clé | Valeur par défaut | Depuis | Description |
|---|
enableEventLog | true | 1.0.0 | Écriture dans le journal des événements Windows (Application) |
enableToast | true | 1.0.0 | Envoi d'une notification Toast sur le bureau |
alertOnOpen | true | 1.0.0 | Alerte lors de la première création d'un espace réservé (parcours du répertoire) |
alertOnRead | true | 1.0.0 | Alerte lorsque les données du fichier sont réellement lues |
toastCooldownSeconds | 15 | 1.0.0 | Secondes minimales entre les Toasts pour le même chemin de fichier |
verbose | false | 1.0.0 | Sortie console supplémentaire pour le diagnostic |
virtRoot | (argument 1) | 1.0.0 | Remplacement du chemin racine virtuel depuis la configuration plutôt que la ligne de commande |
sourceRoot | (vide) | 1.0.0 | Répertoire de sauvegarde réel facultatif — laisser vide pour le mode synthétique uniquement |
syntheticOnly | true | 1.0.0 | Servir uniquement les fichiers listés dans <syntheticFileList> |
autoCleanupEnabled | true | 1.1.0 | Supprimer les fichiers synthétiques matérialisés après le délai et revenir à l'état virtuel |
autoCleanupDelaySeconds | 300 | 1.1.0 | Secondes après la matérialisation avant la suppression du fichier (le minuteur de nettoyage s'exécute toutes les 30 s) |
resolveRemoteIPs | true | 1.1.0 | Résolution DNS du nom d'hôte client SMB en adresse IP ; définir sur false si la latence de résolution est inacceptable |
| ID d'événement | Niveau | Signification |
|---|
| 1001 | Avertissement | Les données d'un fichier leurre ont été lues (inclut l'utilisateur/IP distant le cas échéant) |
| 1002 | Avertissement | Un espace réservé de fichier leurre a été créé (fichier parcouru/interrogé via stat) |
| 1003 | Information | PhantomFS démarré — chemin racine virtuel et paramètres enregistrés |
| 1004 | Information | PhantomFS arrêté proprement |