Threat hunting: гипотеза должна переживать смену инструментов
Синтетический research-shot: схема проблемы, контроля, evidence и ретеста в фирменной лабораторной стилистике Virusologia.
Коротко: Сильный hunt-flow живёт дольше конкретного инструмента. Он описывает не 'какой запрос я написал в пятницу', а 'какую гипотезу проверяю, какие сущности ищу и как распознаю ложный след'.

Проблема

Во многих SOC охота на угрозы живёт в виде скриншота запроса, ad hoc фильтра и устной памяти нескольких аналитиков. Стоит сменить лог-источник или команду, и повторяемость исчезает.

Ещё одна проблема - hunt не заканчивается критериями. Аналитик что-то увидел, но не зафиксировал, что считать подтверждением, где нужен enrichment и когда гипотеза отвергается.

Решение

Нужно описывать hunt как flow: входная гипотеза, сущности, источники, трансформации, enrichment, expected benign explanations и branching. Тогда hunt можно повторять и адаптировать к другой телеметрии.

Хорошая инженерная привычка - после каждого полезного hunt делать defensive artifact: detection idea, exclusion notes, playbook update или enriched inventory query.

Что проверить руками

  • Записать гипотезу человеческим языком до написания запроса.
  • Определить сущности: host, user, process, file, network flow, token, cloud identity.
  • Отдельно зафиксировать plausible benign explanations.
  • После завершения сохранить hunt outcome: validated, inconclusive, disproved, promoted to detection.

Типичные ошибки

  • Путать hunt и dashboard browsing.
  • Считать любой необычный сигнал подозрительным, не имея baseline и benign paths.
  • Не превращать успешный hunt в reusable control или documented playbook.

Defensive checklist

  • У hunt есть явная гипотеза и критерий завершения.
  • Сущности и enrichment известны заранее.
  • Benign explanations документированы.
  • Итог охоты превращается в detection, playbook или inventory improvement.

Безопасный пример кода

Kestrel-подобный skeleton для гипотезы о необычном child process. Пример рассчитан на owned/lab-среду и показывает инженерную логику проверки, а не эксплуатационную цепочку.

# pseudo-huntflow for training
processes = GET process FROM edr://hosts
            WHERE parent_name = "winword.exe"

suspicious = FIND process
             FROM processes
             WHERE name IN ("powershell.exe", "cmd.exe", "wscript.exe")

enriched = APPLY who_signed TO suspicious
         | APPLY known_admin_tool TO suspicious

DISP suspicious WHERE known_admin_tool = true
RETURN enriched

Как это должно попасть в отчёт

  • Hypothesis record: what, why, evidence threshold, benign alternatives.
  • Evidence: entity path, enrichment result, analyst decision.
  • Retest: same flow works against next week of telemetry or a new data source.
Этическая рамка: материал предназначен для defensive security, исследования собственных систем, controlled labs и подготовки remediation. Здесь нет вредоносных payload-цепочек, persistence-инструкций и шагов для несанкционированного доступа.