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

maltrail v3.0

Система обнаружения вредоносного трафика в реальном времени, использующая публичные чёрные списки, статические следы вредоносного ПО и эвристический анализ для выявления угроз в DNS-, HTTP- и IP-трафике.

Поделиться

Maltrail

License Sensor Server Trails X

Maltrail

Maltrail — это система обнаружения сетевого трафика, которая выявляет взаимодействие с известной вредоносной инфраструктурой и сообщает об отдельных аномалиях трафика. Она сопоставляет домены, URL-адреса, IP-адреса, пары IP:port и значения User-Agent, наблюдаемые в сети, с набором индикаторов, называемых trails.

Обнаружение фиксируется как отдельное событие, содержащее источник, назначение, протокол, совпавший trail, классификацию и источник trail:```text "2026-08-07 09:14:22.117034" gw 10.13.13.2 57809 1.1.1.1 53 UDP DNS malware.bakewithdavid.com "asyncrat (malware)" (static)

Maltrail предназначен для сетевого мониторинга на основе индикаторов. Его эвристические обнаружения дополняют
сопоставление с трейлами, но не заменяют телеметрию конечных точек или систему предотвращения вторжений
общего назначения.

## Возможности

- Полная сборка трейлов, объединяющая более 3 000 встроенных статических файлов, 42 интеграции с публичными фидами
  и дополнительные трейлы, предоставляемые оператором.
- Многопоточный сенсор на Rust с использованием libpcap и опциональными воркерами захвата Linux `PACKET_FANOUT`.
- Сервер на Python, обеспечивающий интерфейс отчётности, приём событий и HTTP API.
- Пользовательские трейлы и белые списки в виде простого текста, которые можно проверять и контролировать версии.
- Эвристики для сканирования, исчерпания DNS, DGA-подобных запросов, подозрительных загрузок, прокси-зондирований,
  подозрительных значений User-Agent и связанной сетевой активности.
- Локальное журналирование событий, удалённое журналирование Maltrail, CEF через syslog и вывод Logstash JSON.
- Проверка развёртывания с помощью `maltrail-sensor -T` и опциональные метрики Prometheus.

## Содержание

- [Архитектура](#architecture)
- [Интерфейс отчётности](#reporting-interface)
- [Производительность](#performance)
- [Установка](#installation)
  - [Установщик](#installer)
  - [Сборка из исходного кода](#building-from-source)
  - [Systemd](#systemd)
  - [Docker](#docker)
- [Конфигурация](#configuration)
- [Трейлы](#trails)
- [События и API](#events-and-api)
- [Эксплуатация](#operations)
  - [Мониторинг](#monitoring)
  - [Хранение событий](#event-retention)
- [Документация](#documentation)
- [Участие в разработке](#contributing)
- [Проект](#project)
  - [Лицензия](#license)
  - [Сопровождающие](#maintainers)
  - [Спонсоры](#sponsors)
  - [Презентации и публикации](#presentations-and-publications)
  - [Производный чёрный список](#derived-blacklist)
  - [Сторонние интеграции](#third-party-integrations)
  - [Благодарности](#acknowledgements)

## Архитектура

Maltrail состоит из двух независимых процессов, которые могут работать на одном хосте или на разных хостах:```text
   ┌──────────┐   events (UDP or file)   ┌──────────┐
   │  sensor  │ ───────────────────────► │  server  │ ◄── browser
   └──────────┘                          └──────────┘
    Rust                                  Python
    libpcap + PACKET_FANOUT               reporting UI + API
    trail matching + heuristics

Сенсор захватывает трафик, выполняет сопоставление по следам и эвристический анализ, а затем формирует события. Он может записывать события локально (LOG_DIR), отправлять их на удалённый сервер Maltrail (LOG_SERVER) или делать и то, и другое. Он также может передавать CEF через syslog (SYSLOG_SERVER) и JSON в Logstash (LOGSTASH_SERVER).

Сервер принимает и хранит удалённые события, обслуживает локально доступные журналы событий и предоставляет веб-интерфейс и API.

Интерфейс отчётности

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

Интерфейс отчётности Maltrail

Интерфейс обслуживается server.py по адресу HTTP_ADDRESS:HTTP_PORT. Это чистый JavaScript с единственной сторонней зависимостью времени выполнения (PapaParse, для разбора CSV) и без этапа сборки. Одновременно просматривается один день, выбираемый с помощью средства выбора даты, которое также служит сеткой плотности событий по доступным ежедневным журналам. События передаются потоком из /events и агрегируются в браузере в угрозы — одна строка на каждую отдельную пару (source, trail) — отображаемые в сортируемой сетке с панелью деталей.

ВозможностьПримечания
Живой режимДобавленные события передаются через Server-Sent Events (/live) и объединяются с текущим представлением. При недоступности SSE происходит откат к опросу диапазонов байтов ежедневного журнала, либо для сессий, которые поток не может обслужить. Новые угрозы высокой важности могут вызывать уведомление на рабочем столе и звуковое оповещение; оба можно отключить
ПоискТокены с областью действия по полям (src: dst: port: proto: type: trail: info: family: tag: uid: sev: dir: status:; family:interlock подтягивает interlock-1/-2, осколки, на которые разбивается один дамп фида) в сочетании с пробелом как AND, - для исключения, * как подстановочные знаки, CIDR (src:10.0.0.0/8), а также числовые диапазоны и сравнения (port:>1024, count:>=100). Активные фильтры отображаются в виде удаляемых чипов
Ретроспективный поискИщет во всех сохраняемых ежедневных журналах по одному индикатору (/hunt), а не только по просматриваемому дню. Ограничен лимитом дней, бюджетом реального времени и пределом выборки; день, который бюджет прервал досрочно, сообщается отдельно от завершённых дней, а не засчитывается как завершённый итог. Побочный индекс по дням (LOG_DIR/index/, USE_EVENT_INDEX) позволяет проходу пропускать каждую несовпадающую строку и делает /counts точным
Карта мираПлотность событий по странам для выбранного дня (/geo), с размещением внешней конечной точки каждого события. События, которые не могут быть отнесены к внешнему адресу, сообщаются как неотображённые, а не угадываются. Установите HOME_LAT / HOME_LON, чтобы рисовать дуги происхождения
ТриажСтатус каждой угрозы (новая / в расследовании / решена / ложное срабатывание), заметки в свободной форме, теги и скрытие. Правила белого списка и точки опоры OSINT доступны из контекстного меню строки
Сохранённые представленияИменованные предустановки фильтров
ЭкспортТекущее отфильтрованное представление в виде CSV, JSON или обезвреженных индикаторов
Внешний видТёмная и светлая темы, а также дискретные шаги размера текста

Состояние триажа, сохранённые представления, теги и настройки внешнего вида хранятся в браузере (localStorage), а не на сервере: они привязаны к браузеру и источнику и не разделяются между аналитиками.

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

Обогащение данными о странах и ASN для отдельных адресов запрашивается на stat.ripe.net сервером, который кэширует результаты и передаёт их интерфейсу из своей собственной конечной точки /ripe; браузер не общается ни с чем, кроме Maltrail. Установите DISABLE_RIPE_LOOKUPS, чтобы полностью отключить исходящие запросы. Без них — или на хосте без доступа к интернету — флаги берутся из локальной таблицы RIR, а всё остальное в интерфейсе работает офлайн.

Производительность

Категории