
PhantomFS v1.2.20
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.
Cos'è PhantomFS?
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:
- Scrive una voce nel Registro eventi di Windows (log Applicazione, origine
PhantomFS) - Invia una notifica Toast alla sessione desktop attiva
- Registra il nome esatto del file, il timestamp e il contesto del processo
- Se accesso tramite condivisione di rete — cattura il nome utente SMB e l'indirizzo di origine
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.
Caratteristiche
| 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 |
Requisiti
- Windows 10 versione 1809 (Build 17763) o successiva — Windows 11 consigliato
- .NET Framework 4.8
- Funzionalità opzionale Windows Projected File System abilitata (
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart) - Privilegi di amministratore per avviare la radice virtuale
Avvio rapido
Comandi semplici (consigliati)
- Scarica
PhantomFS-v1.1.0-x64.zipdalle Release ed estrailo - Esegui come Amministratore — abilita ProjFS,
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart - Esegui
.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonly - Vai a
C:\PhantomFS\Virtual\Documentsin Esplora risorse — vedrai i file esca - Aprilo uno — guarda il Toast attivarsi e controlla Visualizzatore eventi → Log di Windows → Applicazione
Configurazione
Tutte 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:
Sezione <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>
| 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 |
Registrazione sessioni remote
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:
- Il servizio Server deve essere in esecuzione (si avvia automaticamente ogni volta che una condivisione è attiva)
- PhantomFS deve essere in esecuzione sulla macchina che ospita la condivisione
resolveRemoteIPsrichiede che la macchina client sia risolvibile tramite DNS
Comportamento della pulizia automatica
Dopo 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.
Aggiunta di file esca
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
Aggiunta di modelli di contenuto
<syntheticTemplates>
<template name="my_custom_file.txt"><![CDATA[
... il contenuto del tuo file qui ...
]]></template>
</syntheticTemplates>
Riferimento Registro eventi
Apri Visualizzatore eventi → Log di Windows → Applicazione e filtra per origine PhantomFS.
| 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 |
CI/CD — GitHub Actions
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.
Compilazione dal sorgente
# 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
Idee per la distribuzione
- Trappola workstation — esegui come attività pianificata all'accesso; qualsiasi movimento laterale a
\\hostname\PhantomFS\Virtualinnesca un avviso immediato con il nome utente dell'aggressore e l'IP di origine - Canarino su file server — posiziona una condivisione
\Financepuntando alla radice virtuale insieme alla vera condivisione finanziaria; la registrazione della sessione remota identifica esattamente quale account ha sfogliato l'esca - Macchina sviluppatore — mostra chiavi AWS e SSH false in
~\Documents; attacchi insider o della supply chain attivano avvisi prima dell'esfiltrazione - Segmento air-gapped — imposta
resolveRemoteIPs=falseper saltare DNS in ambienti in cui le ricerche esterne sono bloccate; il nome macchina NetBIOS viene comunque catturato
Sponsorizzazione
PhantomFS è 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:
- Risposte prioritarie ai problemi
- Accesso anticipato a nuovi modelli e funzionalità
- Una menzione nelle note di rilascio
Gli sponsor aziendali ($500+/mese) ricevono un canale Slack privato per supporto diretto e richieste di funzionalità.
Licenza
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.
Dichiarazione di non responsabilità — Uso consentito
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:
- Non forniscono garanzie, esplicite o implicite, riguardo all'idoneità per uno scopo particolare
- Non accettano alcuna responsabilità per danni diretti, indiretti, incidentali o consequenziali derivanti dall'uso o dall'abuso di questo software
- Non sono responsabili per perdita di dati, danni al sistema, responsabilità legali o danni a terzi derivanti dalla distribuzione di PhantomFS in qualsiasi ambiente
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.
Riconoscimenti
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