
PhantomFS v1.2.20
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 que é o PhantomFS?
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:
- Escreve uma entrada no Log de Eventos do Windows (log de Aplicativo, fonte
PhantomFS) - Dispara uma notificação Toast na sessão ativa da área de trabalho
- Registra o nome exato do arquivo, timestamp e contexto do processo
- Quando acessado via compartilhamento de rede — captura o nome de usuário SMB e endereço de origem
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.
Funcionalidades
| 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 |
Requisitos
- Windows 10 versão 1809 (Build 17763) ou posterior — Windows 11 recomendado
- .NET Framework 4.8
- Windows Projected File System recurso opcional ativado (
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart) - Privilégios de administrador para iniciar a raiz virtual
Início Rápido
Comandos Simples (recomendado)
- Baixe
PhantomFS-v1.1.0-x64.zipda página de Releases e extraia - Execute como Administrador — ative o ProjFS:
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart - Execute
.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonly - Navegue até
C:\PhantomFS\Virtual\Documentsno Explorer — você verá os arquivos isca - Abra um — veja o Toast disparar e verifique Visualizador de Eventos → Logs do Windows → Aplicativo
Configuração
Todas 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:
Seçã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>
| 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 |
Registro de Sessão Remota
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:
- O serviço Server deve estar em execução (inicia automaticamente sempre que um compartilhamento está ativo)
- O PhantomFS deve estar em execução na máquina que hospeda o compartilhamento
resolveRemoteIPsrequer que a máquina cliente seja resolvível via DNS
Comportamento da Limpeza Automática
Apó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.