The Windows Projected File System (ProjFS), introduced in Windows 1809, allows applications to virtualize file system content, making it appear as if files exist on disk and hydrating them on demand when accessed.
**What Happened**
Microsoft developed ProjFS as a feature enabling user-mode applications, known as "providers," to virtualize file system content. The article delves into its technical architecture, explaining its function as a minifilter, its communication methods, and its various applications.
**Who is Affected**
* **Administrators** are responsible for enabling the ProjFS feature.
* **Developers** can create custom "providers" to define how files and data are projected.
* **End-users and applications** interact with these projected files, often unaware of their virtualized nature until they are accessed.
**Security Implications**
ProjFS presents both offensive and defensive security implications:
* **Offensive:**
* **Privilege Escalation:** A user with medium integrity can initiate a ProjFS provider, potentially allowing them to control file appearances and access, which could bypass higher-privilege restrictions.
* **Data Manipulation:** Providers can prevent file deletions or alter file content upon reading on a per-process basis, enabling sophisticated methods for hiding or manipulating data.
* **Defensive:**
* **Tripwire/Canary Files:** ProjFS can be utilized to create "canary" files that act as tripwires. These can log file access, modifications, and operations in detail, potentially without requiring a kernel-mode minifilter.
* **Enhanced Visibility:** ProjFS offers significant file visibility, which may replace the need for minifilters in certain scenarios, aligning with Microsoft's trend away from kernel-mode components.
**Technical Details**
ProjFS operates as a minifilter, not a standalone file system. It uses reparse points (specifically `IO_REPARSE_TAG_PROJFS` and `IO_REPARSE_TAG_PROJFS_TOMBSTONE`) to identify its virtualized files and directories. It functions at a specific filter altitude (189800) and supports pre/post callbacks for file I/O operations. Communication between the kernel-mode ProjFS minifilter and the user-mode provider occurs through filter communication ports, such as `PrjFltPort`. The core components include the `prjflt.sys` driver, the `ProjectedFSLib.dll` library, and the provider application itself. ProjFS supports various notifications, including `NEW_FILE_CREATED`, `FILE_OPENED`, and `FILE_READ`, with "PRE" notifications allowing for interception and denial of operations like deletion, renaming, and hardlink creation.
**What Defenders Should Know**
Defenders can leverage ProjFS to enhance file monitoring and threat detection. By configuring ProjFS providers with specific "canary" files, security professionals can gain detailed insights into file access patterns, detect unauthorized modifications, and identify malicious activities like ransomware. The capability to log file operations and process interactions provides a potent defensive tool, particularly in environments where kernel-mode solutions are restricted. Understanding how providers can intercept and respond to file operations is crucial for both utilizing ProjFS defensively and recognizing its potential misuse. ProjFS is presented as an efficient technology for improving file visibility and overall security posture γ1γ.