
Honeypot do Windows que utiliza ProjFS para projetar arquivos isca que acionam alertas no Log de Eventos e na área de trabalho quando acessados, com registro de sessão remota SMB para detecção de movimento lateral.
Arquivos Falsos. Segurança Real.
Sistema de arquivos honeypot virtual para Windows — atraia invasores para um diretório que parece real, e então os pegue em flagrante.
O PhantomFS utiliza o Windows Projected File System (ProjFS) para exibir um diretório virtual repleto de arquivos isca convincentes — relatórios financeiros, chaves SSH, credenciais de API, planilhas de RH, NDAs — que existem apenas na memória. Nenhum dado é gravado em disco até que um invasor (ou ameaça interna) abra um deles.
No momento em que um arquivo é tocado, o PhantomFS:
PhantomFS)Como usuários legítimos não têm motivo para abrir arquivos que não colocaram lá, cada alerta é de alta confiança. Sem ajustes, sem aprendizado de máquina, sem dependências na nuvem — apenas um driver nativo do Windows e um único executável.
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)PhantomFS-v1.1.0-x64.zip da página de Releases e extraiaEnable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonlyC:\PhantomFS\Virtual\Documents no Explorer — você verá os arquivos iscaTodas as configurações ficam em PhantomFS.exe.config. Todas as chaves são opcionais — omitir uma chave usa o padrão mostrado na tabela.
Use o PhantomFS Profile Builder para gerar diferentes perfis de configuração para seus cenários de implantação:
<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 — limpeza automática -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — registro de sessão remota -->
<resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
Quando um arquivo é acessado através de um compartilhamento SMB, o PhantomFS detecta o PID 4 (o processo System do Windows / driver SMB do kernel) como o chamador e automaticamente chama NetSessionEnum para identificar o usuário remoto. A entrada no Log de Eventos e a notificação Toast incluirão:
PhantomFS — Leitura de Conteúdo de Arquivo Isca
Arquivo : Documents\Q4_Financial_Report_2024.pdf
Processo: System (PID 4)
Remoto : CORP\jsmith @ DESKTOP-A1B2C3D [192.168.1.45]
Requisitos para registro remoto:
resolveRemoteIPs requer que a máquina cliente seja resolvível via DNSApós um arquivo sintético ser aberto e hidratado (conteúdo gravado em disco), um timer em segundo plano verifica a cada 30 segundos e exclui arquivos cujo tempo de hidratação exceda autoCleanupDelaySeconds. O arquivo excluído reverte para um placeholder virtual do ProjFS — o próximo acesso re-dispara o callback do ProjFS como se o arquivo nunca tivesse sido aberto.
Arquivos que ainda estão abertos quando o timer de limpeza dispara são ignorados sem erro e tentados novamente no próximo ciclo de 30 segundos.
Adicione entradas em <syntheticFileList> na configuração:
\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[
... conteúdo do seu arquivo aqui ...
]]></template>
</syntheticTemplates>
Abra Visualizador de Eventos → Logs do Windows → Aplicativo e filtre pela fonte PhantomFS.
O PhantomFS inclui um workflow em .github/workflows/build.yml que compila para x64 e ARM64 em paralelo, e publica uma Release no GitHub a cada tag de versão.
# Requer .NET Framework 4.8 SDK ou Visual Studio Build Tools
csc.exe /platform:x64 /r:System.Xml.dll /out:PhantomFS.exe src\PhantomFS.cs
O csc.exe normalmente está em:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
\\hostname\PhantomFS\Virtual dispara um alerta imediato com o nome de usuário e IP de origem do invasor\Finance apontando para a raiz virtual junto com o compartilhamento real de finanças; o registro de sessão remota identifica exatamente qual conta navegou pela isca~\Documents; ataques internos ou de supply chain disparam alertas antes da exfiltraçãoresolveRemoteIPs=false para pular DNS em ambientes onde consultas externas são bloqueadas; o nome NetBIOS da máquina ainda é capturadoPhantomFS é gratuito, open-source e licenciado sob MIT. Se ele economizou seu tempo — ou pegou um invasor real — considere patrocinar o desenvolvimento contínuo.
Patrocinadores recebem:
Patrocinadores corporativos ($500+/mês) recebem um canal privado no Slack para suporte direto e solicitações de funcionalidades.
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.
Aviso de Marca Registrada: PhantomFS™ é uma marca registrada da Alloy Secure. Todos os direitos reservados.
O PhantomFS é fornecido apenas para fins defensivos legais de segurança — incluindo detecção de intrusão, pesquisa de ameaças e testes de penetração autorizados em sistemas que você possui ou para os quais possui permissão explícita por escrito para monitorar.
Você é o único responsável por garantir que seu uso do PhantomFS esteja em conformidade com todas as leis locais, nacionais e internacionais aplicáveis, incluindo, mas não se limitando a, leis de fraude computacional, interceptação telefônica, privacidade e trabalho. Implantar o PhantomFS em sistemas ou redes sem a devida autorização pode ser ilegal.
Os autores e colaboradores do PhantomFS:
Use por sua conta e risco. Ao usar o PhantomFS, você reconhece que leu este aviso legal, o entendeu e concorda em se vincular a seus termos.
Aviso de Marca Registrada: PhantomFS™ é uma marca registrada da Alloy Secure. Todos os direitos reservados.
Construído sobre a API Windows Projected File System — a mesma tecnologia que alimenta o WSL2 e o OneDrive Files On-Demand.
Inspirado pelo meu trabalho como pesquisador na Thinkst 💚 https://citation.thinkst.com/talk/94782
| Funcionalidade | Detalhes |
|---|
| Iscas com pegada zero | Arquivos são projetados sob demanda — nada é gravado em disco a menos que um invasor leia um arquivo |
| Log de Eventos do Windows | Event ID 1001 (leitura de arquivo), 1002 (placeholder criado), 1003 (iniciado), 1004 (parado) |
| Alertas Toast | Notificação imediata na área de trabalho via Windows PowerShell — funciona até mesmo via RDP |
| Registro de sessão remota | Nome de usuário SMB e endereço de origem capturados via NetSessionEnum quando o PID 4 dispara o acesso |
| Limpeza automática | Arquivos sintéticos hidratados são excluídos após um atraso configurável; revertem para virtuais no próximo acesso |
| Modelos configuráveis | PDF, XLSX, DOCX, JSON, CSV, PEM, texto simples — todos servidos a partir de modelos XML na configuração |
| Cooldown por arquivo | Limitação configurável (padrão 15 s) evita enxurrada de alertas quando uma ferramenta lê múltiplos fragmentos |
| Lista de arquivos sintéticos | Lista XML pronta para uso com nomes de arquivo convincentes e tamanhos realistas em bytes |
| Executável único | PhantomFS.exe + PhantomFS.exe.config — sem necessidade de instalador |
| Chave | Padrão | Desde | Descrição |
|---|
enableEventLog | true | 1.0.0 | Escrever no log de eventos do Aplicativo do Windows |
enableToast | true | 1.0.0 | Enviar notificação Toast na área de trabalho |
alertOnOpen | true | 1.0.0 | Alertar quando um placeholder é criado pela primeira vez (navegação no diretório) |
alertOnRead | true | 1.0.0 | Alertar quando os dados do arquivo são realmente lidos |
toastCooldownSeconds | 15 | 1.0.0 | Segundos mínimos entre Toasts para o mesmo caminho de arquivo |
verbose | false | 1.0.0 | Saída extra no console para diagnósticos |
virtRoot | (arg 1) | 1.0.0 | Sobrescrever o caminho da raiz virtual a partir da configuração em vez da linha de comando |
sourceRoot | (vazio) | 1.0.0 | Diretório real opcional de suporte — deixe vazio para modo somente sintético |
syntheticOnly | true | 1.0.0 | Servir apenas os arquivos listados em <syntheticFileList> |
autoCleanupEnabled | true | 1.1.0 | Excluir arquivos sintéticos materializados após o atraso e reverter para virtuais |
autoCleanupDelaySeconds | 300 | 1.1.0 | Segundos após a hidratação antes do arquivo ser excluído (timer de limpeza roda a cada 30 s) |
resolveRemoteIPs | true | 1.1.0 | Resolver DNS do nome do host do cliente SMB para um endereço IP; defina como false se a latência da consulta for inaceitável |
| Event ID | Nível | Significado |
|---|
| 1001 | Aviso | Os dados de um arquivo isca foram lidos (inclui usuário/IP remoto quando aplicável) |
| 1002 | Aviso | Um placeholder de arquivo isca foi criado (arquivo foi navegado/stat'ado) |
| 1003 | Informação | PhantomFS iniciado — caminho da raiz virtual e configurações registrados |
| 1004 | Informação | PhantomFS parou de forma limpa |