
Исследуйте вредоносные входы в Windows путем визуализации и анализа журнала событий Windows
LogonTracer v2 — это инструмент для исследования вредоносных входов в систему путем визуализации и анализа журналов событий Windows Active Directory. Инструмент связывает имя хоста (или IP-адрес) и имя учетной записи, найденные в событиях, связанных со входом, и отображает их в виде графа. Таким образом можно увидеть, с какой учетной записи происходит попытка входа и какой хост используется.
Данный инструмент визуализирует следующие идентификаторы событий, связанные со входом в Windows.
| Идентификатор события | Описание |
|---|---|
| 4624 | Успешный вход |
| 4625 | Сбой входа |
| 4662 | Выполнена операция над объектом |
| 4672 | Назначение специальных привилегий |
| 4719 | Изменена политика аудита системы |
| 4720 | Создана учетная запись пользователя |
| 4726 | Удалена учетная запись пользователя |
| 4728 / 4732 / 4756 | Участник добавлен в группу безопасности |
| 4729 / 4733 / 4757 | Участник удален из группы безопасности |
| 4768 | Аутентификация Kerberos (запрос TGT) |
| 4769 | Сервисный билет Kerberos (запрос ST) |
| 4776 | Аутентификация NTLM |
| 5137 | Создан объект службы каталогов |
| 5141 | Удален объект службы каталогов |
Более подробная информация описана в следующих документах:

LogonTracer v2.0 интегрирует механизм анализа на основе ИИ с использованием моделей OpenAI GPT, обеспечивая интеллектуальное обнаружение угроз, выходящее за рамки традиционных подходов, основанных на правилах.
LogonTracer использует PageRank, Скрытую марковскую модель и ChangeFinder для обнаружения вредоносных хостов и учетных записей из журналов событий.

С помощью LogonTracer также можно отображать журналы событий в хронологическом порядке.

Python 3.9 или новее (рекомендуется 3.12)
Neo4j 5.x (Community или Enterprise)
Ключ API OpenAI (необязательно — требуется только для функций анализа ИИ)
Модули Python
numpy
evtx
lxml
scipy
changefinder
flask
hmmlearn>=0.2.8
scikit-learn
elasticsearch-dsl>=7.0.0,<8.0.0
pyyaml
flask-sqlalchemy
flask-login
flask_wtf
flask-limiter
wtforms
GitPython
pysigma>=0.11.0
pysigma-backend-sqlite
openai>=1.0.0
aiohttp
neo4j
git clone https://github.com/JPCERTCC/LogonTracer.git
cd LogonTracer
pip3 install -r requirements.txt
Скачайте и запустите Neo4j. Установите начальный пароль и запомните порт Bolt (по умолчанию: 7687).
vi config/config.yml
Ключевые настройки:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # Имя пользователя Neo4j для учетной записи LogonTracer по умолчанию
default_password: "password" # Измените это перед первым запуском
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # Ваш пароль Neo4j
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
Откройте браузер по адресу http://localhost:8080.
python3 logontracer.py -e <путь/к/Security.evtx> -z <смещение UTC> -s <сервер Neo4j> -u <пользователь> -p <пароль>
python3 logontracer.py -x <путь/к/event.xml> -z <смещение UTC> -s <сервер Neo4j> -u <пользователь> -p <пароль>
python3 logontracer.py --es -s <сервер Neo4j> -u <пользователь> -p <пароль> --es-server <хост ES:порт>
Добавьте флаг --sigma для запуска обнаружения по правилам Sigma во время импорта:
python3 logontracer.py -e <путь/к/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <путь/к/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
После запуска веб-приложения нажмите Upload Event Log на левой боковой панели. Вы можете:

После загрузки с включенным Sigma-сканированием или после запуска повторного сканирования через API нажмите Sigma Scan Results на боковой панели для просмотра результатов.








С Neo4j Enterprise Edition LogonTracer поддерживает несколько независимых дел (расследований), каждое из которых хранится в отдельной базе данных Neo4j.
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<IP-адрес> \
jpcertcc/docker-logontracer
cd docker-compose
docker compose build
docker compose up -d
cd docker-compose-with-nginx
docker compose build
docker compose up -d
cd docker-compose-with-elasticstack
docker compose build
docker compose up -d
Следующее видео на YouTube показывает, как использовать LogonTracer.
Для получения более подробной информации ознакомьтесь с вики LogonTracer.
| Параметр | Описание |
|---|
-r, --run | Запустить веб-приложение |
-o PORT | Порт веб-приложения (по умолчанию: 8080) |
--host HOST | Адрес привязки (по умолчанию: 0.0.0.0) |
-e EVTX [...] | Импортировать EVTX-файл(ы) |
-x XML [...] | Импортировать XML-файл(ы) журналов событий |
-s SERVER | Адрес сервера Neo4j (по умолчанию: localhost) |
-u USER | Имя пользователя Neo4j (по умолчанию: neo4j) |
-p PASSWORD | Пароль Neo4j |
--wsport PORT | Порт Bolt Neo4j (по умолчанию: 7687) |
-z UTC | Смещение часового пояса (например, 9 для JST) |
-f DATE | Анализировать журналы с этой даты и времени (например, 2024-01-01T00:00:00) |
-t DATE | Анализировать журналы до этой даты и времени |
--add | Добавить данные без очистки базы данных |
--delete | Очистить базу данных перед импортом |
--sigma | Запустить сканирование по правилам Sigma во время импорта |
--sigma-only | Запустить только Sigma-сканирование (без обработки Neo4j) |
--sigma-rules PATH | Путь к папке с правилами Sigma (по умолчанию: sigma) |
--es | Импортировать данные из Elasticsearch |
--postes | Отправить результаты анализа в Elasticsearch |
--es-server HOST:PORT | Сервер Elasticsearch |
--es-index INDEX | Индекс Elasticsearch (по умолчанию: winlogbeat-*) |
--es-prefix PREFIX | Префикс событий Elasticsearch (по умолчанию: winlog) |
--case NAME | Имя дела для многобазового режима Neo4j Enterprise |
-c FILE | Путь к файлу конфигурации (по умолчанию: config/config.yml) |
--create_user USER | Создать нового пользователя Neo4j |
--create_password PASS | Пароль для нового пользователя Neo4j |
--role ROLE | Роль для нового пользователя (admin, architect, reader) |
--delete_user USER | Удалить пользователя Neo4j |
-l, --learn | Запустить анализ машинного обучения (Скрытая марковская модель) |