
Honeypot per Windows che utilizza ProjFS per proiettare file esca che attivano avvisi nel registro eventi e sul desktop quando vengono acceduti, con registrazione delle sessioni remote SMB per il rilevamento dei movimenti laterali.
File Falsi. Sicurezza Reale.
File system virtuale honeypot per Windows — attira gli aggressori in una directory che sembra reale, poi coglili in flagrante.
PhantomFS utilizza il Windows Projected File System (ProjFS) per mostrare una directory virtuale piena di file esca convincenti — report finanziari, chiavi SSH, credenziali API, fogli di calcolo HR, NDA — che esistono solo in memoria. Nessun dato viene mai scritto su disco finché un aggressore (o una minaccia interna) non ne apre uno.
Nel momento in cui un file viene toccato, PhantomFS:
PhantomFS)Poiché gli utenti legittimi non hanno motivo di aprire file che non hanno messo loro, ogni avviso è ad alta affidabilità. Nessuna regolazione, nessun ML, nessuna dipendenza dal cloud — solo un driver Windows nativo e un singolo eseguibile.
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)PhantomFS-v1.1.0-x64.zip dalle Release ed estrailoEnable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonlyC:\PhantomFS\Virtual\Documents in Esplora risorse — vedrai i file escaTutte le impostazioni risiedono in PhantomFS.exe.config. Tutte le chiavi sono opzionali — omettere una chiave utilizza il valore predefinito mostrato nella tabella.
Usa il PhantomFS Profile Builder per generare diversi profili di configurazione per i tuoi scenari di distribuzione:
<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 — pulizia automatica -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — registrazione sessioni remote -->
<resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
Quando un file viene accesso tramite una condivisione SMB, PhantomFS rileva il PID 4 (processo di sistema Windows / driver kernel SMB) come chiamante e chiama automaticamente NetSessionEnum per identificare l'utente remoto. La voce del Registro eventi e la notifica Toast includeranno:
PhantomFS — Contenuto file esca letto
File : Documents\Q4_Financial_Report_2024.pdf
Processo : System (PID 4)
Remoto : CORP\jsmith @ DESKTOP-A1B2C3D [192.168.1.45]
Requisiti per la registrazione remota:
resolveRemoteIPs richiede che la macchina client sia risolvibile tramite DNSDopo che un file sintetico viene aperto e idratato (contenuto scritto su disco), un timer in background controlla ogni 30 secondi ed elimina i file il cui tempo di idratazione supera autoCleanupDelaySeconds. Il file eliminato torna a essere un segnaposto virtuale ProjFS — il prossimo accesso riattiva la callback ProjFS come se il file non fosse mai stato aperto.
I file ancora aperti quando scatta il timer di pulizia vengono saltati senza errore e riprovati al ciclo successivo di 30 secondi.
Aggiungi voci sotto <syntheticFileList> nella configurazione:
\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[
... il contenuto del tuo file qui ...
]]></template>
</syntheticTemplates>
Apri Visualizzatore eventi → Log di Windows → Applicazione e filtra per origine PhantomFS.
PhantomFS include un workflow in .github/workflows/build.yml che compila per x64 e ARM64 in parallelo e pubblica una Release su GitHub ad ogni tag di versione.
# Richiede .NET Framework 4.8 SDK o Visual Studio Build Tools
csc.exe /platform:x64 /r:System.Xml.dll /out:PhantomFS.exe src\PhantomFS.cs
csc.exe si trova tipicamente in:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
\\hostname\PhantomFS\Virtual innesca un avviso immediato con il nome utente dell'aggressore e l'IP di origine\Finance puntando alla radice virtuale insieme alla vera condivisione finanziaria; la registrazione della sessione remota identifica esattamente quale account ha sfogliato l'esca~\Documents; attacchi insider o della supply chain attivano avvisi prima dell'esfiltrazioneresolveRemoteIPs=false per saltare DNS in ambienti in cui le ricerche esterne sono bloccate; il nome macchina NetBIOS viene comunque catturatoPhantomFS è gratuito, open-source e con licenza MIT. Se ti ha fatto risparmiare tempo — o ha catturato un vero aggressore — considera di sponsorizzare lo sviluppo continuativo.
Gli sponsor ricevono:
Gli sponsor aziendali ($500+/mese) ricevono un canale Slack privato per supporto diretto e richieste di funzionalità.
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.
Avviso sul marchio: PhantomFS™ è un marchio di Alloy Secure. Tutti i diritti riservati.
PhantomFS viene fornito esclusivamente per scopi difensivi legittimi di sicurezza — inclusi rilevamento di intrusioni, ricerca di minacce e test di penetrazione autorizzati su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta a monitorare.
Sei l'unico responsabile per assicurarti che l'uso di PhantomFS sia conforme a tutte le leggi locali, nazionali e internazionali applicabili, incluse ma non limitate a frode informatica, intercettazione, privacy e diritto del lavoro. Distribuire PhantomFS su sistemi o reti senza la dovuta autorizzazione potrebbe essere illegale.
Gli autori e i contributori di PhantomFS:
Usalo a tuo rischio. Utilizzando PhantomFS riconosci di aver letto questa dichiarazione, di averla compresa e di accettare di esserne vincolato.
Avviso sul marchio: PhantomFS™ è un marchio di Alloy Secure. Tutti i diritti riservati.
Costruito sulla Windows Projected File System API — la stessa tecnologia che alimenta WSL2 e OneDrive Files On-Demand.
Ispirato dal mio lavoro come ricercatore presso Thinkst 💚 https://citation.thinkst.com/talk/94782
| Caratteristica | Dettagli |
|---|
| Esca a impronta zero | I file vengono proiettati su richiesta — nulla viene scritto su disco a meno che un aggressore non legga un file |
| Registro eventi Windows | Event ID 1001 (lettura file), 1002 (creazione segnaposto), 1003 (avviato), 1004 (arrestato) |
| Avvisi Toast | Notifica desktop immediata tramite Windows PowerShell — funziona anche in RDP |
| Registrazione sessioni remote | Nome utente SMB e indirizzo di origine catturati tramite NetSessionEnum quando il PID 4 attiva l'accesso |
| Pulizia automatica | I file sintetici materializzati vengono cancellati dopo un ritardo configurabile; al prossimo accesso tornano virtuali |
| Modelli configurabili | PDF, XLSX, DOCX, JSON, CSV, PEM, testo semplice — tutti serviti da modelli XML nella configurazione |
| Cooldown per file | Limitazione configurabile (default 15 s) impedisce inondazioni di avvisi quando uno strumento legge più blocchi |
| Elenco file sintetici | Elenco XML predefinito di nomi file convincenti con dimensioni in byte realistiche |
| Singolo eseguibile | PhantomFS.exe + PhantomFS.exe.config — nessun installer richiesto |
| Chiave | Predefinito | Dalla versione | Descrizione |
|---|
enableEventLog | true | 1.0.0 | Scrive nel log eventi Applicazione di Windows |
enableToast | true | 1.0.0 | Invia notifica desktop Toast |
alertOnOpen | true | 1.0.0 | Avvisa quando viene creato un segnaposto (sfogliatura directory) |
alertOnRead | true | 1.0.0 | Avvisa quando i dati del file vengono effettivamente letti |
toastCooldownSeconds | 15 | 1.0.0 | Secondi minimi tra Toast per lo stesso percorso file |
verbose | false | 1.0.0 | Output console extra per diagnostica |
virtRoot | (arg 1) | 1.0.0 | Sovrascrive il percorso radice virtuale dalla configurazione anziché dalla riga di comando |
sourceRoot | (vuoto) | 1.0.0 | Directory di appoggio reale opzionale — lascia vuoto per modalità solo sintetici |
syntheticOnly | true | 1.0.0 | Serve solo i file elencati in <syntheticFileList> |
autoCleanupEnabled | true | 1.1.0 | Elimina i file sintetici materializzati dopo il ritardo e torna allo stato virtuale |
autoCleanupDelaySeconds | 300 | 1.1.0 | Secondi dopo l'idratazione prima che il file venga cancellato (timer di pulizia eseguito ogni 30 s) |
resolveRemoteIPs | true | 1.1.0 | Risolve DNS il nome host del client SMB in un indirizzo IP; impostare a false se la latenza di risoluzione è inaccettabile |
| Event ID | Livello | Significato |
|---|
| 1001 | Avviso | I dati di un file esca sono stati letti (include utente/IP remoto quando applicabile) |
| 1002 | Avviso | Un segnaposto di file esca è stato creato (file sfogliato/stat'ato) |
| 1003 | Informazioni | PhantomFS avviato — percorso radice virtuale e impostazioni registrate |
| 1004 | Informazioni | PhantomFS arrestato correttamente |