
Ханипот Windows, использующий ProjFS для создания файлов-приманок, которые при обращении к ним вызывают события в Event Log и уведомления на рабочем столе, с журналированием удаленных сессий SMB для обнаружения бокового перемещения.
Фальшивые файлы. Настоящая безопасность.
Виртуальная файловая система-приманка для Windows — заманите атакующих в каталог, который выглядит настоящим, а затем поймайте их с поличным.
PhantomFS использует Windows Projected File System (ProjFS) для отображения виртуального каталога, заполненного правдоподобными файлами-приманками — финансовые отчёты, SSH-ключи, учётные данные API, таблицы HR, NDA, — которые существуют только в памяти. Никакие данные никогда не записываются на диск, пока атакующий (или инсайдер) не откроет один из них.
В момент касания файла PhantomFS:
PhantomFS)Поскольку у легитимных пользователей нет причин открывать файлы, которые они туда не помещали, каждое предупреждение является высокодостоверным. Никакой настройки, никакого машинного обучения, никаких облачных зависимостей — только родной драйвер Windows и один исполняемый файл.
| Функция | Описание |
|---|---|
| Приманки с нулевым следом | Файлы проецируются по требованию — ничего не записывается на диск, пока атакующий не прочитает файл |
| Журнал событий Windows | Идентификаторы событий: 1001 (чтение файла), 1002 (создан заполнитель), 1003 (запуск), 1004 (остановка) |
| Toast-уведомления | Мгновенное уведомление на рабочем столе через Windows PowerShell — работает даже через RDP |
| Логирование удалённых сессий | Имя пользователя SMB и исходный адрес захватываются через NetSessionEnum, когда PID 4 инициирует доступ |
| Автоматическая очистка | Гидрированные синтетические файлы удаляются после настраиваемой задержки; при следующем доступе снова становятся виртуальными |
| Настраиваемые шаблоны | PDF, XLSX, DOCX, JSON, CSV, PEM, обычный текст — все предоставляются из XML-шаблонов в конфигурации |
| Интервал кулдауна на файл | Настраиваемая задержка (по умолчанию 15 с) предотвращает лавину оповещений, когда инструмент читает несколько блоков |
| Список синтетических файлов | Встраиваемый XML-список правдоподобных имён файлов с реалистичными размерами в байтах |
| Один исполняемый файл | PhantomFS.exe + PhantomFS.exe.config — не требует установки |
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)PhantomFS-v1.1.0-x64.zip из Releases и распакуйте егоEnable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart.\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonlyC:\PhantomFS\Virtual\Documents в Проводнике — вы увидите файлы-приманкиВсе настройки находятся в PhantomFS.exe.config. Все ключи необязательны — пропуск ключа приводит к использованию значения по умолчанию, указанного в таблице.
Используйте PhantomFS Profile Builder для генерации различных профилей конфигурации под ваши сценарии развёртывания:
<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 — автоматическая очистка -->
<autoCleanupEnabled>true</autoCleanupEnabled>
<autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>
<!-- v1.1.0 — логирование удалённых сессий -->
<resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
| Ключ | По умолчанию | С версии | Описание |
|---|---|---|---|
enableEventLog | true | 1.0.0 | Запись в журнал событий приложений Windows |
enableToast | true | 1.0.0 | Отправка Toast-уведомления на рабочий стол |
alertOnOpen | true | 1.0.0 | Предупреждение при первом создании заполнителя (просмотр каталога) |
alertOnRead | true | 1.0.0 | Предупреждение при фактическом чтении данных файла |
toastCooldownSeconds | 15 | 1.0.0 | Минимальное количество секунд между Toast для одного и того же пути файла |
verbose | false | 1.0.0 | Дополнительный вывод в консоль для диагностики |
virtRoot | (арг. 1) | 1.0.0 | Переопределение пути виртуального корня из конфигурации, а не из командной строки |
sourceRoot | (пусто) | 1.0.0 | Необязательный реальный резервный каталог — оставьте пустым для режима только синтетики |
syntheticOnly | true | 1.0.0 | Обслуживать только файлы, перечисленные в <syntheticFileList> |
autoCleanupEnabled | true | 1.1.0 | Удалять материализованные синтетические файлы после задержки и возвращать к виртуальным |
autoCleanupDelaySeconds | 300 | 1.1.0 | Секунды после гидратации до удаления файла (таймер очистки запускается каждые 30 с) |
resolveRemoteIPs | true | 1.1.0 | Разрешать DNS-имя клиента SMB в IP-адрес; установите false, если задержка разрешения недопустима |
Когда к файлу обращаются через общую папку SMB, PhantomFS обнаруживает PID 4 (системный процесс Windows / драйвер SMB ядра) как вызывающий и автоматически вызывает NetSessionEnum для идентификации удалённого пользователя. Запись в журнале событий и Toast-уведомление будут содержать:
PhantomFS — Honeypot File Content Read
File : Documents\Q4_Financial_Report_2024.pdf
Process : System (PID 4)
Remote : CORP\jsmith @ DESKTOP-A1B2C3D [192.168.1.45]
Требования для удалённого логирования:
resolveRemoteIPs необходимо, чтобы клиентская машина была разрешима через DNSПосле того как синтетический файл открыт и гидратирован (содержимое записано на диск), фоновый таймер проверяет каждые 30 секунд и удаляет файлы, время гидратации которых превышает autoCleanupDelaySeconds. Удалённый файл возвращается к виртуальному заполнителю ProjFS — при следующем доступе снова срабатывает обратный вызов ProjFS, как если бы файл никогда не был открыт.