업데이트로 돌아가기
New releaseAug 14, 2026

PhantomFS v1.2.20

Windows honeypot으로, ProjFS를 사용하여 유인 파일을 투영하고, 접근 시 이벤트 로그 및 데스크톱 알림을 트리거하며, SMB 원격 세션 로깅을 통해 측면 이동 탐지를 지원합니다.

공유

PhantomFS — 가짜 파일. 진짜 보안.

가짜 파일. 진짜 보안.
Windows용 가상 허니팟 파일 시스템 — 공격자를 실제처럼 보이는 디렉터리로 유인한 후 현장에서 잡습니다.

MIT 라이선스 플랫폼 .NET 4.8 스폰서


PhantomFS란 무엇인가?

PhantomFS는 Windows Projected File System (ProjFS) 을 사용하여 재무 보고서, SSH 키, API 자격 증명, 인사부 스프레드시트, NDA 등 설득력 있는 유인 파일들로 가득 찬 가상 디렉터리를 표면화합니다. 이 파일들은 메모리에만 존재합니다. 공격자(또는 내부 위협)가 파일을 열기 전까지는 데이터가 디스크에 기록되지 않습니다.

파일이 접근되는 순간, PhantomFS는 다음과 같은 동작을 수행합니다:

  • Windows 이벤트 로그 항목을 기록합니다 (응용 프로그램 로그, 출처 PhantomFS)
  • 활성 데스크톱 세션에 토스트 알림을 표시합니다
  • 정확한 파일 이름, 타임스탬프 및 프로세스 컨텍스트를 기록합니다
  • 네트워크 공유를 통해 접근될 경우 — SMB 사용자 이름과 소스 주소를 캡처합니다

합법적인 사용자는 자신이 넣지 않은 파일을 열 이유가 없기 때문에 모든 경보는 신뢰도가 높습니다. 튜닝, 머신러닝, 클라우드 종속성 없이 — 네이티브 Windows 드라이버와 단일 실행 파일만으로 작동합니다.


기능

기능세부 사항
제로 풋프린트 유인파일은 요청 시 투영됨 — 공격자가 파일을 읽지 않으면 디스크에 아무것도 기록되지 않음
Windows 이벤트 로그이벤트 ID 1001 (파일 읽기), 1002 (플레이스홀더 생성), 1003 (시작됨), 1004 (중지됨)
토스트 알림Windows PowerShell을 통해 즉시 데스크톱 알림 — RDP를 통해서도 작동
원격 세션 로깅PID 4가 접근을 트리거할 때 NetSessionEnum을 통해 SMB 사용자 이름과 소스 주소 캡처
자동 정리구성 가능한 지연 후 구체화된 합성 파일 삭제; 다음 접근 시 가상 상태로 복귀
구성 가능한 템플릿PDF, XLSX, DOCX, JSON, CSV, PEM, 일반 텍스트 — 모두 구성 파일의 XML 템플릿에서 제공됨
파일별 쿨다운구성 가능한 쓰로틀 (기본 15초) — 도구가 여러 청크를 읽을 때 경보 홍수 방지
합성 파일 목록현실적인 바이트 크기를 가진 설득력 있는 파일 이름의 드롭인 XML 목록
단일 실행 파일PhantomFS.exe + PhantomFS.exe.config — 설치 프로그램 불필요

요구 사항

  • Windows 10 버전 1809 (빌드 17763) 이상 — Windows 11 권장
  • .NET Framework 4.8
  • Windows Projected File System 선택적 기능 활성화 (Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart)
  • 가상 루트를 시작하기 위한 관리자 권한

빠른 시작

간단한 명령어 (권장)

  1. 릴리즈에서 PhantomFS-v1.1.0-x64.zip 다운로드 및 압축 해제
  2. 관리자 권한으로 실행 — ProjFS 활성화, Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
  3. .\PhantomFS.exe --virtroot C:\PhantomFS\Virtual\Documents --syntheticonly 실행
  4. 탐색기에서 C:\PhantomFS\Virtual\Documents로 이동 — 유인 파일이 보일 것입니다
  5. 하나 열기 — 토스트가 발생하고 이벤트 뷰어 → Windows 로그 → 응용 프로그램을 확인하세요

구성

모든 설정은 PhantomFS.exe.config에 있습니다. 모든 키는 선택 사항입니다 — 키를 생략하면 표에 표시된 기본값이 사용됩니다.

배포 시나리오에 따라 다양한 구성 프로필을 생성하려면 PhantomFS 프로필 빌더를 사용하세요:

<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 — auto-cleanup -->
  <autoCleanupEnabled>true</autoCleanupEnabled>
  <autoCleanupDelaySeconds>300</autoCleanupDelaySeconds>

  <!-- v1.1.0 — remote session logging -->
  <resolveRemoteIPs>true</resolveRemoteIPs>
</settings>
기본값버전설명
enableEventLogtrue1.0.0Windows 응용 프로그램 이벤트 로그에 기록
enableToasttrue1.0.0데스크톱 토스트 알림 전송
alertOnOpentrue1.0.0플레이스홀더가 처음 생성될 때 (디렉터리 탐색) 경보
alertOnReadtrue1.0.0파일 데이터가 실제로 읽힐 때 경보
toastCooldownSeconds151.0.0동일한 파일 경로에 대한 토스트 사이 최소 시간 (초)
verbosefalse1.0.0진단을 위한 추가 콘솔 출력
virtRoot(인수 1)1.0.0명령줄 대신 구성에서 가상 루트 경로 재정의
sourceRoot(비어 있음)1.0.0선택적 실제 백업 디렉터리 — 합성 전용 모드의 경우 비워 둠
syntheticOnlytrue1.0.0<syntheticFileList>에 나열된 파일만 제공
autoCleanupEnabledtrue1.1.0지연 후 구체화된 합성 파일을 삭제하고 가상 상태로 복귀
autoCleanupDelaySeconds3001.1.0구체화 후 파일이 삭제되기까지의 시간 (초) (정리 타이머는 30초마다 실행)
resolveRemoteIPstrue1.1.0SMB 클라이언트 호스트 이름을 IP 주소로 DNS 확인; 조회 지연이 허용되지 않는 경우 false로 설정

원격 세션 로깅

파일이 SMB 공유를 통해 접근될 때, PhantomFS는 PID 4 (Windows 시스템 프로세스 / 커널 SMB 드라이버)를 호출자로 감지하고 자동으로 NetSessionEnum을 호출하여 원격 사용자를 식별합니다. 이벤트 로그 항목 및 토스트 알림에는 다음이 포함됩니다:

PhantomFS — 허니팟 파일 내용 읽힘
파일    : Documents\Q4_Financial_Report_2024.pdf
프로세스 : System (PID 4)
원격  : CORP\jsmith @ DESKTOP-A1B2C3D  [192.168.1.45]

원격 로깅 요구 사항:

  • Server 서비스가 실행 중이어야 함 (공유가 활성화될 때마다 자동으로 시작됨)
  • PhantomFS가 공유를 호스팅하는 머신에서 실행 중이어야 함
  • resolveRemoteIPs는 클라이언트 머신이 DNS를 통해 확인 가능해야 함

자동 정리 동작

합성 파일이 열리고 구체화(콘텐츠가 디스크에 기록됨)된 후, 백그라운드 타이머가 30초마다 확인하여 구체화 시간이 autoCleanupDelaySeconds를 초과한 파일을 삭제합니다. 삭제된 파일은 가상 ProjFS 플레이스홀더로 복귀하며, 다음 접근 시 파일이 한 번도 열리지 않은 것처럼 ProjFS 콜백이 다시 트리거됩니다.

정리 타이머가 실행될 때 아직 열려 있는 파일은 오류 없이 건너뛰며 다음 30초 주기에 재시도됩니다.

유인 파일 추가

구성 파일의 <syntheticFileList> 아래에 항목을 추가하세요:

\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[
    ... 여기에 파일 내용을 넣으세요 ...
  ]]></template>
</syntheticTemplates>

이벤트 로그 참조

이벤트 뷰어 → Windows 로그 → 응용 프로그램을 열고 출처 PhantomFS로 필터링하세요.

이벤트 ID수준의미
1001경고유인 파일의 데이터가 읽힘 (해당되는 경우 원격 사용자/IP 포함)
1002경고유인 파일 플레이스홀더가 생성됨 (파일이 탐색되거나 stat됨)
1003정보PhantomFS 시작됨 — 가상 루트 경로 및 설정 기록
1004정보PhantomFS가 정상적으로 중지됨

CI/CD — GitHub Actions

PhantomFS는 .github/workflows/build.yml에 워크플로우를 포함하며, x64ARM64용으로 병렬로 컴파일하고 모든 버전 태그에서 GitHub 릴리스를 게시합니다.


소스에서 빌드

# .NET Framework 4.8 SDK 또는 Visual Studio Build Tools 필요
csc.exe /platform:x64 /r:System.Xml.dll /out:PhantomFS.exe src\PhantomFS.cs

csc.exe는 일반적으로 다음 위치에 있습니다:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe

배포 아이디어

  • 워크스테이션 트랩 — 로그온 시 예약된 작업으로 실행; \\hostname\PhantomFS\Virtual로의 측면 이동은 공격자의 사용자 이름과 소스 IP와 함께 즉시 경보를 발생시킴
  • 파일 서버 카나리아 — 실제 재무 공유 옆에 가상 루트를 가리키는 \Finance 공유 배치; 원격 세션 로깅이 미끼에 접근한 정확한 계정을 식별함
  • 개발자 머신~\Documents에 가짜 AWS 키 및 SSH 키 표면화; 내부자 또는 공급망 공격이 데이터 유출 전에 경보를 트리거함
  • 에어갭 세그먼트 — 외부 조회가 차단된 환경에서 DNS를 건너뛰기 위해 resolveRemoteIPs=false 설정; NetBIOS 머신 이름은 여전히 캡처됨


스폰서십

PhantomFS는 무료 오픈소스이며 MIT 라이선스입니다. 시간을 절약해 주었거나 실제 공격자를 잡는 데 도움이 되었다면 지속적인 개발을 후원해 주시기 바랍니다.

❤ GitHub에서 후원하기

후원자는 다음을 받습니다:

  • 우선 이슈 응답
  • 새로운 템플릿 및 기능에 대한 조기 액세스
  • 릴리즈 노트에 언급

기업 후원자 (월 $500 이상)는 직접 지원 및 기능 요청을 위한 비공개 Slack 채널을 받습니다.


라이선스

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.

상표 고지: PhantomFS™는 Alloy Secure의 상표입니다. 모든 권리는 보유됩니다.


면책 조항 — 허용 가능한 사용

PhantomFS는 합법적인 방어적 보안 목적으로만 제공됩니다 — 침입 탐지, 위협 연구, 소유하거나 명시적인 서면 허가를 받은 시스템에 대한 권한 있는 침투 테스트를 포함합니다.

귀하의 PhantomFS 사용이 모든 관련 지역, 국가 및 국제 법률(컴퓨터 사기, 도청, 개인정보 보호, 고용법을 포함하되 이에 국한되지 않음)을 준수하는지 확인하는 것은 전적으로 귀하의 책임입니다. 적절한 권한 없이 시스템이나 네트워크에 PhantomFS를 배포하는 것은 불법일 수 있습니다.

PhantomFS의 작성자 및 기여자는:

  • 특정 목적에 대한 적합성에 대해 어떠한 보증도 하지 않으며, 명시적이든 묵시적이든
  • 이 소프트웨어의 사용 또는 오용으로 인해 발생하는 직접적, 간접적, 우발적 또는 결과적 손해에 대해 어떠한 책임도 지지 않음
  • 모든 환경에서의 PhantomFS 배포로 인한 데이터 손실, 시스템 손상, 법적 책임 또는 제3자 피해에 대해 책임을 지지 않음

사용에 따른 책임은 귀하에게 있습니다. PhantomFS를 사용함으로써 귀하는 이 면책 조항을 읽고 이해했으며 그 조건에 구속되는 데 동의함을 인정합니다.

상표 고지: PhantomFS™는 Alloy Secure의 상표입니다. 모든 권리는 보유됩니다.


감사의 말

Windows Projected File System API를 기반으로 구축되었습니다 — WSL2 및 OneDrive 파일 주문형을 구동하는 동일한 기술입니다.

Thinkst의 연구원으로서의 제 작업에서 영감을 받았습니다 💚 https://citation.thinkst.com/talk/94782

카테고리