Назад к обновлениям
New releaseSep 21, 2026

APT-Hunter V4.0

APT-Hunter — это инструмент поиска угроз (Threat Hunting) для журналов событий Windows, созданный с подходом фиолетовой команды (purple team) для обнаружения движений APT, скрытых в море журналов событий Windows, чтобы сократить время выявления подозрительной активности.

Поделиться

APT-Hunter

APT-Hunter

Threat hunting for Windows event logs, built with a purple-team mindset.

Release Downloads Stars Contributors Python 3.8+ License

APT-Hunter — это инструмент threat hunting для журналов событий Windows. Он использует предопределённые правила обнаружения и статистику журналов, чтобы выявлять активность APT, скрытую в больших объёмах событий, сокращая время, необходимое для обнаружения подозрительного поведения. Он особенно эффективен при оценке компрометации.

Результаты записываются в виде таймлайна, который можно анализировать непосредственно в Excel, Timeline Explorer, Timesketch и аналогичных инструментах, либо изучать во встроенной веб-панели с опциональной локальной LLM-сортировкой.

Содержание

Возможности

  • Обнаружение на основе правил для Security, System, Sysmon, PowerShell, Defender, WinRM, Scheduled Tasks, Terminal Services и других журналов; тип журнала определяется автоматически.
  • Многопроцессный движок для быстрого анализа больших наборов журналов.
  • Hunting по строке, регулярному выражению или файлу регулярных выражений, а также поддержка правил Sigma.
  • Hunting по журналам аудита Office 365.
  • Вывод в виде таймлайна в форматах Excel, CSV (готовый для Timesketch) и отдельные отчёты по входу в систему, выполнению процессов и доступу к объектам.
  • Веб-панель с фильтрацией, графиками, таймлайном инцидента и экспортом IR-отчёта (Markdown / .docx).
  • Локальный анализ с помощью LLM через любой OpenAI-совместимый сервер (Ollama, LM Studio, llama.cpp). Никакие данные не покидают вашу машину.
  • Агентная сортировка, которая кластеризует тысячи оповещений в короткий, удобный для проверки список находок.

Установка

Скачайте скомпилированные бинарные файлы со страницы Releases или запустите из исходного кода (Python 3.8+):

git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt

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

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport

-p принимает каталог или отдельный файл. Добавьте -web, чтобы открыть панель по завершении анализа.

APT-Hunter Help

APT-Hunter analysing with all reports

APT-Hunter command-line output

APT-Hunter Excel output

APT-Hunter CSV output with Timesketch

Параметры командной строки

Запустите python3 APT-Hunter.py -h для полного списка. Основные параметры:

ПараметрОписание
-p, --pathФайл или папка с журналами для анализа
-o, --outИмя / каталог для выходных данных
-start, -endОграничить таймлайн (формат ISO)
-tzЧасовой пояс (local или, например, Asia/Dubai)
-coresИспользуемые ядра CPU (по умолчанию: половина доступных)
-hunt, -huntfile, -eidHunting по строке/регулярному выражению, файлу регулярных выражений или Event ID
-sigma, -rulesHunting с правилами Sigma, преобразованными в JSON
-o365hunt, -o365rules, -o365rawHunting по журналам аудита Office 365
-procexec, -logon, -objaccess, -allreportДополнительные отчёты
-web, -webview, -webhost, -webportЗапуск веб-панели
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-contextЛокальный анализ с помощью LLM

Примеры

Анализ папки с файлами EVTX (типы журналов определяются автоматически):

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport

Фокус на определённом временном интервале:

python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56

Hunting по строке, регулярному выражению или файлу регулярных выражений:

python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2

Hunting с правилами Sigma:

python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2

Получение последних правил Sigma, преобразованных для APT-Hunter (создаёт rules.json):

./Get_Latest_Sigma_Rules.sh

Веб-панель

Просмотр сгенерированного отчёта в браузере: фильтрация, графики, таймлайн инцидента и экспорт IR-отчёта.

python3 run_webapp.py <Output>/<Output>_Report.xlsx     # или передайте каталог с выходными данными
python3 APT-Hunter.py -p <logs> -o <Output> -web         # анализ, затем открытие панели
python3 APT-Hunter.py -webview <Output>                  # открыть существующий отчёт

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

По умолчанию сервер привязывается к 0.0.0.0:5000. Используйте --host / --port (или -webhost / -webport), чтобы изменить это, например --host 127.0.0.1, чтобы оставить его локальным. Проверенные находки и таймлайн сохраняются при перестроении кэша отчёта.

Main dashboard

Главная панель: общее число событий и количество по уровням серьёзности, разбивка по серьёзности, наиболее часто срабатывающие правила обнаружения и ежедневный объём событий. В боковой панели перечислены все журналы событий и сводные таблицы в отчёте.

Incident timeline plot

Таймлайн инцидента: закреплённые находки, отображённые по времени и цветокодированные по уровню серьёзности. Масштабируйте и перемещайтесь по насыщенным участкам, генерируйте AI-резюме для руководства и экспортируйте IR-отчёт или CSV.

Incident timeline event details

Хронологический таймлайн: цепочка атаки раскрывается в её подсобытия, а панель деталей показывает описание, техники MITRE и оценку.

График таймлайна инцидента масштабируется, поэтому всплески событий с интервалом в минуты или секунды остаются читаемыми: перетащите по графику, чтобы приблизить участок, Shift+перетаскивание для перемещения, Ctrl/Cmd+колесо для масштабирования относительно курсора, или используйте полосу обзора под ним. Метки никогда не перекрываются; те, что не помещаются, скрываются, а при наведении на точку отображается список всех событий, наложенных на неё.

Локальный анализ с помощью LLM

Оценка обнаруженных событий на вредоносность с помощью локальной модели из командной строки:

python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High

Или по каждому событию из панели (проверить, объяснить, сопоставить). Настройте провайдера (Ollama / LM Studio / llama.cpp), модель, URL и таймаут на странице Settings панели. Подходит любой OpenAI-совместимый локальный сервер; никакие данные не отправляются в облачный сервис.

Агентная сортировка

Agentic Triage в боковой панели превращает тысячи оповещений в короткий список находок:

  1. Кластеризация. Оповещения в выбранной области (минимальная серьёзность, компьютеры, временное окно) группируются по правилу, хосту, Event ID и форме сообщения. Отчёт с ~13,5 тыс. оповещений обычно сворачивается до нескольких десятков кластеров.
  2. Вердикт первого прохода. LLM оценивает каждый кластер ровно один раз. Этот проход дешёвый и исчерпывающий, что гарантирует, что ничего не пропущено.
  3. Расследование. Агент прорабатывает оставшиеся зацепки с помощью инструментов: он ищет оповещения, читает исходный журнал событий за оповещением, просматривает таймлайн вокруг момента времени и связывает найденное в цепочки атак. Он может только предлагать находки; он никогда не записывает в таймлайн сам.
  4. Проверка. Находки появляются в очереди с оценкой, вердиктом, техникой MITRE, доказательствами и трассировкой расследования агента. Accept добавляет находку в таймлайн инцидента (и в IR-отчёт / экспорт .docx); Reject отбрасывает её. Задайте порог авто-добавления в Settings (или для каждого запуска), чтобы автоматически принимать находки с высокой оценкой.

Фаза расследования требует LLM, поддерживающей вызов инструментов. Если ваша не поддерживает, APT-Hunter переключается на фиксированный конвейер pivot/correlate. Покрытие в любом случае идентично, поскольку агент лишь добавляет глубину поверх первого прохода. Количество раундов работы инструментов и ограничение по реальному времени задаются в Settings.

Agentic Triage runs

Agentic Triage: история запусков показывает область, количество оповещений и кластеров, находки и вызовы LLM за запуск. Здесь 91 критическое оповещение на одном хосте свернулось в 32 кластера и одну цепочку атаки с высокой оценкой.

Agentic investigation trace

Детали находки: описание, техники MITRE, доказательства и полная трассировка расследования (каждое прочитанное событие, окно таймлайна и поиск по оповещениям, выполненные агентом), чтобы каждый вывод можно было проверить.

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

Примеры выходных данных

ПримерОписание
Sample_TimeSketch.csvТаймлайн, который можно загрузить в Timesketch, чтобы увидеть полную картину атаки
Sample_Report.xlsxКаждое событие, обнаруженное во всех предоставленных журналах Windows
Sample_Logon_Events.csvВсе события входа в систему с разобранными полями (дата, пользователь, исходный IP, процесс входа, рабочая станция, тип входа, устройство, исходный журнал)
Sample_Process_Execution_Events.csvВсе выполнения процессов, зафиксированные из журналов событий
Sample_Object_Access_Events.csvДоступ к объектам, зафиксированный из события 4663
Sample_Collected-SIDS.csvПользователи и их SID, чтобы помочь в расследованиях
EventID_Frequency_Analysis.xlsАнализ частоты Event ID

Автор

Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief

Лицензия

Распространяется под GNU GPL v3. См. LICENSE.

Благодарности

Спасибо Joe Maccry за его огромный вклад в сценарии использования Sysmon (более 100 сценариев, добавленных Joe)

Категории