Files
2026-04-12 22:26:26 +04:00

11 KiB

Руководство по тестированию

Подготовка окружения

Для тестирования нужны две машины в одной сети (или две VM), либо одна машина с loopback-интерфейсом.

[Машина A — NIDS]          [Машина B — Атакующий]
192.168.1.100              192.168.1.200
sudo ./nids                nmap / hping3 / hydra
http://localhost:3000

Запуск системы перед каждым тестом:

# Терминал 1 — бэкенд
sudo ./nids

# Терминал 2 — фронтенд
cd frontend && bun run dev

# Открыть в браузере: http://localhost:3000
# Перейти на страницу «Захват» → выбрать интерфейс → «Начать захват»

Тест 1: Сканирование портов (Port Scan)

Инструмент: nmap

Установка:

# Debian/Ubuntu
sudo apt install nmap

# Arch
sudo pacman -S nmap

Запуск атаки (с машины B):

# SYN-scan — самый распространённый метод сканирования
sudo nmap -sS 192.168.1.100

# Агрессивное сканирование всех портов
sudo nmap -sS -p- --min-rate 1000 192.168.1.100

# Сканирование конкретного диапазона
sudo nmap -sS -p 1-1000 192.168.1.100

Ожидаемый результат:

Тип алерта:  port_scan
Критичность: high
Описание:    Port scan detected: 15 unique ports probed in 10s window
SrcIP:       192.168.1.200

Что проверить:

  • Алерт появляется в журнале (~10 секунд после начала сканирования)
  • SrcIP совпадает с адресом машины B
  • Счётчик Count отражает количество уникальных портов

Порог срабатывания: 15 уникальных портов за 10 секунд (настраивается в config.yaml).


Тест 2: Перебор паролей (Brute Force)

Инструмент: hydra или medusa

Установка:

# Debian/Ubuntu
sudo apt install hydra

# Arch
sudo pacman -S hydra

Требование: на машине A должен быть запущен SSH-сервер:

sudo systemctl start sshd

Запуск атаки (с машины B):

# Brute-force SSH с небольшим словарём
hydra -l root -P /usr/share/wordlists/rockyou.txt \
      -t 4 -V ssh://192.168.1.100

# Быстрый тест с inline паролями
hydra -l admin -p pass1,pass2,pass3,pass4,pass5,pass6,pass7,pass8,pass9,pass10,pass11 \
      ssh://192.168.1.100

# Только SYN-флуд на порт 22 (без hydra)
sudo hping3 -S -p 22 --flood 192.168.1.100

Ожидаемый результат:

Тип алерта:  brute_force
Критичность: critical
Описание:    Brute-force detected on port 22: 10 connection attempts in 30s
SrcIP:       192.168.1.200
DstPort:     22

Другие мониторируемые порты:

# FTP (21)
hydra -l admin -P wordlist.txt ftp://192.168.1.100

# RDP (3389) — если запущен xrdp
hydra -l administrator -P wordlist.txt rdp://192.168.1.100

# Telnet (23)
hydra -l root -P wordlist.txt telnet://192.168.1.100

Порог срабатывания: 10 попыток за 30 секунд на один порт.


Тест 3: DoS / DDoS атака

Инструмент: hping3

Установка:

# Debian/Ubuntu
sudo apt install hping3

# Arch
sudo pacman -S hping3

Запуск атаки (с машины B):

# SYN flood — классический DoS
sudo hping3 -S --flood -V -p 80 192.168.1.100

# ICMP flood
sudo hping3 --icmp --flood 192.168.1.100

# UDP flood
sudo hping3 --udp --flood -p 53 192.168.1.100

# С заданной скоростью (1500 пакетов/сек)
sudo hping3 -S -p 80 --faster -c 10000 192.168.1.100

Ожидаемый результат:

Тип алерта:  dos
Критичность: critical
Описание:    DoS attack detected from 192.168.1.200: 1234 pkt/s (threshold: 1000)
SrcIP:       192.168.1.200
Count:       1234

Проверка без второй машины (loopback):

# Флуд на локальный интерфейс (lo)
sudo hping3 -S --flood -V 127.0.0.1
# Бэкенд при этом нужно запустить с захватом на интерфейсе lo

Порог срабатывания: 1000 пакетов/сек от одного источника.


Тест 4: ARP Spoofing

Инструмент: arpspoof (пакет dsniff) или ettercap

Установка:

# Debian/Ubuntu
sudo apt install dsniff

# Arch
sudo pacman -S dsniff

Запуск атаки (с машины B):

# Подмена ARP: сообщаем машине A, что мы — шлюз (192.168.1.1)
sudo arpspoof -i eth0 -t 192.168.1.100 192.168.1.1

# Двусторонняя подмена (полный MITM)
# Терминал 1:
sudo arpspoof -i eth0 -t 192.168.1.100 192.168.1.1
# Терминал 2:
sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.100

Альтернатива — вручную через arping:

# Отправить ARP Reply с поддельным MAC
sudo arping -c 5 -A -I eth0 192.168.1.100

Ожидаемый результат:

Тип алерта:  arp_spoof
Критичность: critical
Описание:    ARP spoofing: IP 192.168.1.1 changed MAC from aa:bb:cc:dd:ee:ff to 11:22:33:44:55:66
SrcIP:       192.168.1.1
Protocol:    ARP

Важно: детектор срабатывает только если IP уже известен из предыдущих ARP-пакетов. Первая запись в таблицу — штатная, второй пакет с другим MAC — алерт.


Тест 5: DNS Аномалии

5A. DNS-туннелирование

Инструмент: iodine или ручная генерация

Установка:

# Debian/Ubuntu
sudo apt install iodine

# Arch
sudo pacman -S iodine

Имитация туннелирования вручную (через dig):

# Запрос с очень длинной меткой (>50 символов) — триггер детектора
dig "aGVsbG8td29ybGQtdGhpcy1pcy1hLXZlcnktbG9uZy1zdWJkb21haW4.example.com" @8.8.8.8

# Скрипт для многократной отправки
for i in $(seq 1 20); do
  dig "$(head -c 60 /dev/urandom | base64 | tr -d '\n/' | head -c 55).test.local" &
done

Ожидаемый результат:

Тип алерта:  dns_anomaly
Критичность: medium
Описание:    DNS tunneling suspected: label length 55 in query 'aGVsbG8t...test.local'

5B. Высокая частота DNS-запросов

Инструмент: dnsperf или bash-скрипт

# Установка dnsperf
sudo apt install dnsperf   # Debian/Ubuntu

# Генерация файла запросов
for i in $(seq 1 500); do
  echo "host$i.example.com A"
done > /tmp/dns-queries.txt

# Flood (200+ запросов за 60 секунд)
dnsperf -s 8.8.8.8 -d /tmp/dns-queries.txt -Q 50 -l 30

# Простой bash-вариант без dnsperf
for i in $(seq 1 250); do
  dig "sub$i.example.com" @8.8.8.8 +short &
done

Ожидаемый результат:

Тип алерта:  dns_anomaly
Критичность: medium
Описание:    High DNS query rate from 192.168.1.200: 200 queries in 60s

Тест через готовые PCAP файлы (без второй машины)

Это самый простой способ протестировать все детекторы одновременно.

Рекомендуемые источники PCAP:

Источник Описание
Wireshark Sample Captures Коллекция тестовых захватов
Malware Traffic Analysis Реальный вредоносный трафик
NETRESEC Тематические PCAP с атаками
CTF captures Захваты с соревнований

Скачать конкретные файлы:

# Nmap scan capture
wget https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=nmap.pcap \
     -O test-portscan.pcap

# ARP примеры
wget https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=arp-storm.pcap \
     -O test-arp.pcap

Использование:

  1. Открыть http://localhost:3000/capture
  2. Перейти на вкладку PCAP файл
  3. Перетащить файл → нажать Анализировать
  4. Алерты появятся в журнале через несколько секунд

Проверка API напрямую (без браузера)

# Список интерфейсов
curl http://localhost:8080/api/capture/interfaces

# Статус захвата
curl http://localhost:8080/api/capture/status

# Начать захват на eth0
curl -X POST http://localhost:8080/api/capture/start \
     -H "Content-Type: application/json" \
     -d '{"interface": "eth0"}'

# Все алерты
curl http://localhost:8080/api/alerts | python3 -m json.tool

# Алерты по типу
curl "http://localhost:8080/api/alerts?type=port_scan&page_size=10"

# Сводка статистики
curl http://localhost:8080/api/stats/summary | python3 -m json.tool

# Остановить захват
curl -X POST http://localhost:8080/api/capture/stop

# Скачать PDF отчёт
curl http://localhost:8080/api/reports/generate -o report.pdf

Таблица ожидаемых результатов

Тест Инструмент Алерт Критичность Время до срабатывания
Port Scan nmap -sS port_scan high ~10 сек
Brute Force SSH hydra brute_force critical ~30 сек
SYN Flood hping3 --flood dos critical ~1 сек
ARP Spoof arpspoof arp_spoof critical мгновенно
DNS Tunnel dig длинный dns_anomaly medium мгновенно
DNS Flood dnsperf dns_anomaly medium ~60 сек