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

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

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

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

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

Категории

Все категории
Loading categories
dnsmonster — Инструментарий для пассивного захвата и мониторинга DNS | Kitploit
Инструменты/GitHubGitHub/fenkohq/dnsmonster
Сниффинг и анализ пакетовСбор информацииСетевая безопасностьРазведка угрозАнализ DNSАнализ Журналов
GitHubfenkohq/dnsmonster

dnsmonster

Инструментарий для пассивного захвата и мониторинга DNS

Репозиторий
360601914 дней назадПроверено Kitploit
Сайт

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Build Status Go Version Latest Version License Open Issues

Мы изучаем возможность создания управляемого SaaS-решения для dnsmonster! Помогите сформировать будущее пассивного мониторинга DNS, поделившись своими отзывами и требованиями: Пройдите наш короткий опрос

Содержание

  • Dnsmonster
  • Основные возможности
  • Установка
    • Linux
      • Контейнер
      • Сборка вручную
      • Статическая сборка
    • Windows
    • FreeBSD и MacOS
  • Архитектура
    • Установка "всё в одном" с помощью Docker
      • Демо "всё в одном"
    • Развёртывание в корпоративной среде
  • Конфигурация
    • Параметры командной строки
    • Переменные окружения
    • Файл конфигурации
    • Какова политика хранения данных
  • Дискретизация и пропуск
    • Дискретизация на этапе предварительной обработки
    • Пропускаемые домены
    • Разрешённые домены
    • SAMPLE в запросах SELECT ClickHouse
  • Поддерживаемые источники данных
  • Поддерживаемые выходные каналы
  • План развития
  • Связанные проекты

Dnsmonster

Фреймворк пассивного мониторинга DNS, написанный на Golang. dnsmonster реализует сниффер пакетов для DNS-трафика. Он может принимать трафик из файла pcap, с живого интерфейса или через сокет dnstap и способен индексировать и хранить сотни тысяч DNS-запросов в секунду: доказано, что на обычном компьютере он индексирует более 200 000 запросов в секунду. Инструмент ориентирован на масштабируемость, простоту и удобство использования, помогая командам безопасности понимать детали DNS-трафика предприятия. dnsmonster не стремится отслеживать DNS-диалоги; скорее, он индексирует DNS-пакеты по мере их поступления. Также он не нарушает конфиденциальность конечных пользователей, позволяя маскировать IP-адреса L3 (IPv4 и IPv6), что даёт возможность проводить анализ трендов на агрегированных данных без возможности связать запросы с конкретным пользователем. Пост в блоге

Код до версии 1.x считается бета-версией и может содержать критические изменения. Пожалуйста, ознакомьтесь с примечаниями к каждому тегу, чтобы увидеть список возможных поломок между релизами и способы предотвращения потери данных.```mermaid graph TD subgraph Input B1["network input"] B2["pcap file"] B3["dnstap socket"] end

subgraph "Process"
    C1["Sampling based of ratio"]
    C2["Packet Process"]
    C3["Dispatcher"]
    O11["Output1"]
    O12["Domain Skip (optional)"]
    O13["Domain Allow (optional)"]
    O21["Output2"]
    O22["Domain Skip (optional)"]
    O23["Domain Allow (optional)"]
    O31["Output3"]
    O32["Domain Skip (optional)"]
    O33["Domain Allow (optional)"]
end

B1 --> Process
B2 --> Process
B3 --> Process

C1 --> C2
C2 --> C3
C3 --> O11
C3 --> O21
C3 --> O31

O11 --> O12 --> O13
O21 --> O22 --> O23
O31 --> O32 --> O33

subgraph Output
    Splunk
    Syslog
    H["ClickHouse"]
    Postgres
    Kafka
    I["JSON File"]
    Influx
    Elastic
    J["stdout"]
    Parquet
    Sentinel
end

O13 --> H
O23 --> I
O33 --> J
# Основные возможности

- Возможность использования `afpacket` и захвата пакетов с нулевым копированием в Linux.
- Поддержка BPF
- Возможность маскировки IP-адреса для повышения конфиденциальности
- Возможность задания коэффициента предварительной выборки (sampling)
- Возможность задания списка `fqdn` для пропуска, чтобы избежать записи определённых доменов/суффиксов/префиксов в хранилище
- Возможность задания списка "разрешённых" доменов для логирования доступа к определённым доменам
- «Горячая» перезагрузка файлов/ссылок со списками пропуска и разрешённых доменов
- Модульный вывод с настраиваемой логикой для каждого потока вывода.
- Автоматическая политика хранения данных с использованием атрибута TTL в ClickHouse
- Встроенная панель Grafana для вывода в ClickHouse.
- Возможность распространения в виде одного статически скомпонованного бинарного файла
- Возможность настройки через переменные окружения, параметры командной строки или конфигурационный файл
- Возможность семплирования (SAMPLE) результатов с помощью ClickHouse
- Возможность отправки метрик через `prometheus` и `statstd`
- Высокая степень сжатия благодаря встроенному хранилищу LZ4 в ClickHouse
- Поддержка DNS поверх TCP, фрагментированного DNS (udp/tcp) и IPv6
- Поддержка [dnstap](https://github.com/dnstap/golang-dnstap) через Unix-сокет или TCP
- Встроенная интеграция с SIEM через Splunk и Microsoft Sentinel

# Установка

## Linux

Лучший способ начать работу с `dnsmonster` — загрузить бинарный файл из раздела релизов. Бинарный файл статически собран с использованием `musl`, поэтому он должен работать «из коробки» во многих дистрибутивах. Для поддержки `afpacket` необходимо использовать ядро версии 3.x+. Любой современный дистрибутив Linux (CentOS/RHEL 7+, Ubuntu 14.0.4.2+, Debian 7+) поставляется с версией ядра 3.x+, поэтому всё должно работать «из коробки». Если предварительно скомпилированная версия не работает в вашем дистрибутиве, пожалуйста, создайте issue с подробностями и соберите `dnsmonster` вручную, используя раздел [Сборка вручную](#build-manually).

### Контейнер

Поскольку `dnsmonster` использует возможность захвата сырых пакетов, Docker/Podman демон должен предоставить контейнеру соответствующее разрешение (capability).```
sudo docker run --rm -it --net=host --cap-add NET_RAW --cap-add NET_ADMIN --name dnsmonster ghcr.io/mosajjal/dnsmonster:latest --devName lo --stdoutOutputType=1

Сборка вручную

  • с libpcap: Убедитесь, что у вас установлены пакеты go, libpcap-devel и linux-headers. Названия пакетов могут отличаться в зависимости от вашего дистрибутива. После этого просто клонируйте репозиторий и выполните `go build ./cmd/dnsmonster````sh git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster cd /tmp/dnsmonster go get go build -o dnsmonster ./cmd/dnsmonster
- без `libpcap`:
`dnsmonster` использует только одну функцию из `libpcap`, и это преобразование фильтров стиля `tcpdump` в байт-код BPF. Если вы можете обойтись без поддержки BPF, вы можете собрать `dnsmonster` без `libpcap`. Обратите внимание, что на любой другой платформе захват пакетов возвращается к `libpcap`, поэтому он становится жесткой зависимостью (*BSD, Windows, Darwin)```sh
git clone https://github.com/mosajjal/dnsmonster --depth 1 /tmp/dnsmonster 
cd /tmp/dnsmonster
go get
go build -o dnsmonster -tags nolibpcap ./cmd/dnsmonster

Приведённая выше сборка также работает на ARMv7 (RPi4) и AArch64.

Статическая сборка

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