
Сканер Windows для криминалистического анализа только для чтения, выявляющий следы программного обеспечения — постоянство, артефакты выполнения (Prefetch, Shimcache, BAM), корреляцию активности пользователей и Ghost Tasks. Более 20 модулей, сопоставленных с MITRE ATT&CK.
# GhostTrace
> **Найдите то, что программное обеспечение оставило после себя в Windows, прежде чем оно найдёт путь обратно.**
GhostTrace — это локальный инструмент для поиска следов в Windows для специалистов по реагированию на инциденты, системных администраторов и опытных пользователей, заботящихся о безопасности. Он собирает данные о персистентности, выполнении, активности и оставленных артефактах в проверяемую запись, а затем предлагает строго ограниченную очистку только тогда, когда вы явно её выбираете.
[](https://github.com/Devzinh/GhostTrace/actions/workflows/ci.yml)
[](https://github.com/Devzinh/GhostTrace/releases/latest)


[](LICENSE)
**[Скачать](https://github.com/Devzinh/GhostTrace/releases/latest)** | **[Требования](#requirements)** | **[Быстрый старт](#quick-start)** | **[Возможности](#what-it-collects)** | **[Модель безопасности](#forensic-safety)** | **[Дорожная карта](https://github.com/devzinh/ghosttrace/blob/main/docs/roadmap.md)** | **[Португальский (Бразилия)](https://github.com/devzinh/ghosttrace/blob/main/docs/README_PT_BR.md)**
---
## Зачем нужен GhostTrace
Удаление приложения не всегда устраняет его операционный след. Записи автозагрузки, запланированные задачи, кэшированные свидетельства выполнения, значения реестра, службы и папки могут оставаться ещё долго после того, как установщик сообщил об успехе.
GhostTrace превращает этот широкий вопрос в сфокусированное локальное расследование:
- **Один сфокусированный поиск** по <!-- CONFIRME: número real de módulos, deve bater com as tabelas abaixo --> NN криминалистическим модулям.
- **Доказательства по источникам**, с находками, ошибками и метаданными, сохраняемыми отдельно для каждого модуля.
- **Автономность по замыслу** — без телеметрии, загрузок или зависимости от облака.
- **Готовый к аудиту вывод**, включая TXT-записи, JSON-вывод для целевых коллекторов и журналы очистки.
- **Очистка под контролем человека** — никогда не автоматическое исправление.
## Требования
| Пункт | Требование |
| --- | --- |
| Операционная система | Windows 10 или 11, x64 |
| Права | Администратор, требуется для чтения защищённых артефактов |
| Среда выполнения | Не требуется. MSI является автономным. |
| Диск | <!-- CONFIRME --> ~NN МБ после установки, плюс место для вывода отчётов |
## Проверьте загрузку
GhostTrace читает защищённые артефакты Windows и запускается с повышенными правами. Проверьте установщик перед его выполнением, особенно на хосте, который вы расследуете.
```powershell
Get-FileHash .\GhostTrace-1.5.0-x64.msi -Algorithm SHA256
```
Сравните результат с `SHA256SUMS.txt`, публикуемым вместе с каждым релизом.
<!-- CONFIRME: publique o SHA256SUMS.txt junto de cada release, senão remova o bloco acima -->
Установщик пока не подписан кодом, поэтому SmartScreen и некоторые EDR-продукты пометят его при первом запуске. Проверьте хэш, а не просто игнорируйте предупреждение.
## Быстрый старт
### Установка
Скачайте последний x64 MSI из [Релизов](https://github.com/Devzinh/GhostTrace/releases/latest):
```text
GhostTrace-<version>-x64.msi
```
Пакет является автономным, поэтому на целевой машине не требуется предустановленная среда выполнения .NET. Запускайте GhostTrace от имени администратора для доступа к защищённым артефактам Windows.
### Поиск по имени программного обеспечения
```powershell
GhostTrace.CLI scan --name nvidia
```
Интерактивный процесс показывает прогресс, группирует находки по техникам и может экспортировать запись расследования. Если существуют безопасные кандидаты на очистку, вы должны выбрать их и ввести фразу подтверждения до любого удаления.
Урезанный пример того, что это выдаёт:
```text
$ GhostTrace.CLI scan --name nvidia
MODULE FINDINGS STATUS
PersistenceScanModule 2 OK
ScheduledTasksScanModule 1 OK
TaskCacheScanModule 1 PartialSuccess
PrefetchScanModule 4 OK
[Persistence] HKLM\...\Run\NvBackend
-> C:\Program Files\NVIDIA Corporation\Update Core\NvBackend.exe (missing)
[Ghost Task] TaskCache\Tree entry with no COM counterpart (T1053.005)
\NvProfileUpdaterOnLogon_{...}
TaskCacheScanModule: PartialSuccess. 2 keys unreadable (access denied).
```
<!-- CONFIRME: substitua pelo output real de uma execução sua, redigido -->

### Запуск в автоматизации
```powershell
GhostTrace.CLI scan --name nvidia --quiet --output C:\Cases\Host1
```
`--quiet` создаёт неинтерактивную TXT-запись. Сбой записи отчёта возвращает ненулевой код выхода, поэтому автоматизация не завершается молчаливо без артефакта.
### Основные команды
| Цель | Команда |
| --- | --- |
| Открыть интерактивное меню | `GhostTrace.CLI` |
| Выполнить полную триаж | `GhostTrace.CLI scan` |
| Найти именованное приложение | `GhostTrace.CLI scan --name <n>` |
| Записать запись сканирования для скриптов | `GhostTrace.CLI scan --name <n> --quiet --output <directory>` |
| Сопоставить COM планировщика задач и TaskCache | `GhostTrace.CLI scan-tasks-correlate-json --output <report.json>` |
| Проверить каталог, ключ реестра или журнал событий | `scan-fs-json`, `scan-reg-json`, `scan-evt-json` |
Выберите язык интерфейса с помощью `--lang`:
```powershell
GhostTrace.CLI scan --name nvidia --lang en
GhostTrace.CLI --lang pt-BR
```
### Коды выхода
<!-- CONFIRME: ajuste para os códigos reais implementados -->
| Код | Значение |
| --- | --- |
| `0` | Сканирование завершено, и любой запрошенный отчёт записан |
| `1` | Недопустимые аргументы или неподдерживаемая среда |
| `2` | Сбой записи отчёта |
| `3` | Отменено оператором |
## От сбора к анализу

1. GhostTrace запускает модули, доступные для выбранного сбора.
2. Каждый модуль возвращает свои собственные находки, ошибки и метаданные.
3. CLI отображает краткую сводку и записывает локальную запись по запросу.
4. Любая выбранная операция очистки записывается в отдельный журнал аудита.
## Что он собирает
| Область | Источники доказательств |
| --- | --- |
| Персистентность | Run/RunOnce, автозагрузка, службы, Winlogon, IFEO, AppInit, LSA, Active Setup, WMI и запланированные задачи |
| Выполнение | Prefetch, Shimcache, BAM/DAM, UserAssist и MUICache |
| Активность пользователя | История PowerShell, история исходящих RDP-подключений, RecentDocs, USB и сетевые артефакты |
| Установленное ПО и остатки | Записи деинсталляции, StartupApproved, Program Files, ProgramData и следы AppData |
| Сопоставление запланированных задач | Расхождения COM и TaskCache для расследования Ghost Tasks (T1053.005) |

<details>
<summary>Справочник модулей (внутренние имена коллекторов)</summary>
**Персистентность**
| Модуль | Источник |
| --- | --- |
| `PersistenceScanModule` | Папки Run/RunOnce и автозагрузки |
| `ServicesScanModule` | Значения `ImagePath` служб и драйверов |
| `AsepScanModule` | Winlogon, IFEO, AppInit, LSA и Active Setup |
| `ScheduledTasksScanModule` | COM планировщика задач, включая скрытые задачи |
| `TaskCacheScanModule` | Аномалии `TaskCache\Tree` |
| `WmiPersistenceScanModule` | `__EventFilter`, `__EventConsumer` и привязки |
**Выполнение и активность**
| Модуль | Источник |
| --- | --- |
| `PrefetchScanModule` | Файлы `.pf` Windows 10/11, включая сжатие XPRESS-Huffman |
| `ShimcacheScanModule` | AppCompatCache |
| `BamScanModule` | Записи BAM/DAM по SID |
| `UserAssistScanModule` | Запуски GUI и счётчики использования |
| `MuiCacheScanModule` | Shell MUICache |
| `PowerShellHistoryScanModule` | История PSReadLine и сигналы подозрительных команд |
| `RdpConnectionScanModule` | История исходящих RDP-подключений |
| `RecentDocsScanModule` | RecentDocs проводника |
| `UsbDeviceScanModule` | История USBSTOR |
| `NetworkArtifactsScanModule` | Файл hosts и известные сетевые профили |
<!-- CONFIRME: complete com os módulos restantes de "Installed software and leftovers" para fechar a contagem declarada no topo -->
</details>
## Криминалистическая безопасность
GhostTrace — это **коллектор, доступный только для чтения по умолчанию**. Его рабочий процесс очистки нацелен на остатки программного обеспечения, а не на автоматическое устранение вредоносных программ.
- Никаких сетевых вызовов, телеметрии, загрузки доказательств или облачной учётной записи не требуется.
- Очистка начинается без предварительно выбранных элементов и требует явного выбора плюс ввода подтверждения.
- Кэши выполнения и истории активности никогда не являются кандидатами на очистку.
- Каталог можно удалить только тогда, когда он находится непосредственно под доверенным корнем, точно соответствует имени цели и не является junction или symlink.
- Частичные совпадения имён становятся `FilesystemTraceHint`: их можно сообщать, но никогда удалять.
- JSON-отчёты записываются атомарно, сохраняя существующий отчёт до завершения замены.
- `Ctrl+C` корректно отменяет сопоставление запланированных задач и чтение файлов Prefetch.
> Находка — это доказательство, а не вердикт. Интерпретируйте её с учётом временной шкалы хоста, вашей среды и вашего процесса реагирования на инциденты.
### Чем GhostTrace не является
- Не антивирус и не инструмент устранения вредоносных программ.
- Не инструмент криминалистики памяти. Он читает только артефакты диска и реестра.
- Не удалённый коллектор. Он проверяет локальный хост.
- Не механизм вынесения вердиктов. Он сообщает доказательства для интерпретации аналитиком.
## Выводы, соответствующие расследованию
| Вывод | Лучше всего подходит для |
| --- | --- |
| Интерактивная таблица | Быстрый анализ аналитиком |
| TXT-отчёт | Локальная запись от `scan`, включая автоматизацию `--quiet` |
| JSON-отчёт | Целевые коллекторы и сопоставление запланированных задач |
| Журнал очистки | Аудит удалённых, пропущенных и неудачных действий очистки |
`PartialSuccess` означает, что модуль выдал находки, но также столкнулся с ограничением. Прочитайте ошибки этого модуля, прежде чем считать отсутствие результата чистым источником.
## Создан для доверия
- Pull request'ы восстанавливают, собирают и тестируют на Windows с .NET 10.
- Шлюз релиза тестирует полный `GhostTrace.sln` перед сборкой MSI.
- Оба проекта `src/GhostTrace.Tests` и `tests/GhostTrace.Tests.Unit` включены в решение и CI.
- Стабильные релизы принимают только теги `v<major>.<minor>.<patch>`.
- GhostTrace выпущен под [лицензией MIT](https://github.com/devzinh/ghosttrace/blob/main/LICENSE).
## Удаление
Удалите GhostTrace через **Параметры > Приложения > Установленные приложения** или из командной строки с повышенными правами:
```powershell
msiexec /x GhostTrace-1.5.0-x64.msi /qn
```
Отчёты и журналы очистки, записанные в ваш выходной каталог, не удаляются деинсталлятором. Удалите их вручную, когда дело будет закрыто.
## Документация
- [Плейбук по сопоставлению запланированных задач](https://github.com/devzinh/ghosttrace/blob/main/docs/playbooks/scheduled-tasks-correlation.md)
- [Дорожная карта продукта](https://github.com/devzinh/ghosttrace/blob/main/docs/roadmap.md)
- [Решения по UX и архитектуре](https://github.com/devzinh/ghosttrace/blob/main/docs/design/ux-architecture-decisions.md)
- [Руководство по тестовым проектам](https://github.com/devzinh/ghosttrace/blob/main/tests/README.md)
- [README на португальском (Бразилия)](https://github.com/devzinh/ghosttrace/blob/main/docs/README_PT_BR.md)
## Участие
Вклад приветствуется. Держите коллекторы доступными только для чтения, распространяйте `CancellationToken`, отражайте пробелы в покрытии как ошибки результатов и включайте тесты с изменениями поведения. [Дорожная карта](https://github.com/devzinh/ghosttrace/blob/main/docs/roadmap.md) выделяет следующие области с высоким влиянием.
---
GhostTrace поддерживает расследование. Проверяйте каждый артефакт в контексте хоста, его временной шкалы и ваших операционных процедур.