Intrusion Detection System (IDS) — это система обнаружения вторжений с графическим интерфейсом, разработанная на C++ с использованием Qt. Система мониторит входящие и исходящие сетевые пакеты в реальном времени, обнаруживает и регистрирует подозрительную активность, такую как TCP SYN-пакеты, которые часто указывают на сканирование портов или DoS-атаки.
Для быстрого начала работы вы можете скачать готовый исполняемый файл из раздела релизов. Просто распакуйте архив и запустите Intrusion_Detection_System_IDS.exe
— никаких дополнительных установок не требуется!
Примечание: Готовый исполняемый файл содержит все необходимые библиотеки и может быть запущен на любом компьютере с Windows без установки Qt или других зависимостей.
Для корректного обнаружения сканирования портов и других атак с других компьютеров в сети необходимо:
- Запустить программу от имени администратора — это необходимо для работы в режиме promiscuous
- Установить Npcap — скачайте и установите Npcap с официального сайта
- При установке выберите опцию 'Install Npcap in WinPcap API-compatible Mode'
- Перезагрузите компьютер после установки
- Выбрать правильный сетевой адаптер — используйте физический сетевой адаптер, а не виртуальный
- Убедитесь, что выбранный адаптер поддерживает режим promiscuous
- Для Wi-Fi адаптеров может потребоваться включение режима мониторинга в настройках драйвера
- Проверить настройки сети — некоторые сетевые коммутаторы могут блокировать режим promiscuous
- В корпоративных сетях может потребоваться настройка порта коммутатора для работы в режиме зеркалирования (port mirroring)
Важно: Если вы не видите пакеты с других компьютеров в сети, проверьте, что все вышеперечисленные условия выполнены.
Режим Promiscuous позволяет сетевому адаптеру захватывать все пакеты в сети, а не только те, которые адресованы непосредственно этому компьютеру. Это необходимо для обнаружения сканирования портов и других атак с других компьютеров в сети.
В современных сетях с коммутаторами (switches) существуют ограничения на видимость пакетов:
-
Коммутаторы vs. Хабы:
- Хабы (устаревшие) отправляют все пакеты на все порты, что позволяет видеть весь трафик
- Коммутаторы (современные) отправляют пакеты только на порт назначения, что ограничивает видимость
-
Решения для работы с коммутаторами:
- Port Mirroring (SPAN) — настройка коммутатора для копирования трафика с одного порта на другой
- Network TAP — специальное устройство для перехвата сетевого трафика
- ARP Spoofing — техника перенаправления трафика (не рекомендуется в производственных сетях)
-
Домашние сети:
- В домашних сетях с Wi-Fi роутерами обычно трудно увидеть трафик других устройств
- Для тестирования можно использовать тестовый режим программы
Рекомендация: Если вам нужно обнаруживать атаки в реальной сети, рассмотрите возможность установки IDS на пограничном устройстве (например, на маршрутизаторе) или настройте port mirroring на коммутаторе.
- Полная поддержка Linux — система теперь официально работает на дистрибутивах Linux
- Адаптированные скрипты — добавлены специальные скрипты для сборки и запуска в Linux
- Автоматическое определение сетевых интерфейсов — корректная работа с различными типами интерфейсов в Linux
- Совместимость с libpcap — оптимизирована работа с Linux-версией библиотеки захвата пакетов
- Скрипты установки зависимостей — упрощенная установка необходимых компонентов для Linux
- Кроссплатформенная компиляция — улучшенная совместимость исходного кода между Windows и Linux
- Расширенная документация — добавлены детальные инструкции для запуска на Linux
- Исправления для Linux — адаптация типов данных и интерфейсов для корректной работы в Linux
- Улучшенный CMake — обновленные инструкции сборки для различных платформ
- Улучшена поддержка кириллических символов — исправлена кодировка UTF-8 во всех формах и сообщениях
- Перевод интерфейса на русский язык — все диалоговые окна и кнопки теперь корректно отображаются на русском
- Добавлено диалоговое окно "О программе" — реализован информационный диалог с данными о версии и функциях
- Усовершенствована система сохранения логов — добавлен запрос на сохранение при выходе из программы
- Улучшена работа с зашифрованными логами — оптимизирована работа с .enc файлами и механизм проверки пароля
- Исправлена проблема с отображением текста ошибок — теперь сообщения об ошибках корректно отображаются на всех компьютерах
- Улучшена поддержка кодировки UTF-8 — добавлена явная установка кодировки во всех .bat файлах и в коде приложения
- Исправлено отображение текста в окне отладки — теперь текст корректно отображается с использованием UTF-8
- Улучшен интерфейс диалоговых окон — увеличен размер окон сообщений для лучшей читаемости
- Оптимизирована работа с файлами логов — добавлена явная установка кодировки UTF-8 для файлов логов
- Режим Promiscuous — улучшена поддержка режима захвата всех пакетов в сети
- Обнаружение внешних сканирований — система теперь может обнаруживать сканирование портов с других компьютеров в сети
- Определение локальных и внешних IP — автоматическое определение локальных IP-адресов для точного обнаружения внешних угроз
- Расширенная отладочная информация — подробное логирование для диагностики проблем с захватом пакетов
- Улучшенная обработка TCP пакетов — более точное обнаружение сканирования портов и других атак
- Оптимизация захвата пакетов — увеличен таймаут для лучшего захвата пакетов в сети
- Проверка поддержки режима Promiscuous — автоматическая проверка возможностей сетевого адаптера
- Подробная документация — добавлена информация о настройке системы для обнаружения внешних угроз
- Улучшенные сообщения об ошибках — более информативные сообщения при возникновении проблем
- Совместимость с различными сетевыми адаптерами — улучшена поддержка различных типов сетевых адаптеров
- Темная тема — улучшенная читаемость и снижение нагрузки на глаза
- Цветовая индикация угроз — визуальное выделение подозрительных IP-адресов:
- 🔴 Красный — критический уровень (более 20 пакетов)
- 🟠 Оранжевый — высокий уровень (более 10 пакетов)
- 🟡 Желтый — средний уровень (более 5 пакетов)
- Индикатор статуса — визуальное отображение активности захвата пакетов
- Всплывающие подсказки — детальная информация о записях при наведении курсора
- Автоматическое изменение размеров колонок — улучшенное отображение данных в таблицах
- HTML-форматирование логов — цветовое выделение подозрительных пакетов в логе
- Расширенная классификация пакетов — более точное определение типов пакетов (TCP SYN, TCP ACK, TCP FIN, TCP RST, UDP, ICMP)
- Улучшенный анализ трафика — обнаружение аномалий в сетевом трафике
- Подробное логирование — HTML-форматирование логов с цветовой индикацией типов пакетов
- Обнаружение сканирования портов — анализ TCP SYN пакетов на привилегированные порты (< 1024)
- Обнаружение попыток подключения к уязвимым сервисам — мониторинг подключений к SMB, RDP, SSH, Telnet, MS SQL, MySQL
- Обнаружение UDP и ICMP флуда — анализ частоты пакетов на известные порты
- Генерация тестового трафика — возможность тестирования функциональности без реального сетевого трафика
- Тестовый адаптер — специальный режим работы без необходимости прав администратора
- Различные типы тестовых пакетов — генерация TCP, UDP и ICMP пакетов с различными параметрами
- Симуляция угроз — генерация подозрительных пакетов для тестирования системы обнаружения
- Обработка исключений — предотвращение сбоев приложения при возникновении ошибок
- Улучшенная обработка ошибок — информативные сообщения об ошибках в логах
- Безопасное завершение захвата — корректное освобождение ресурсов при остановке захвата
- Счетчики пакетов — отображение количества обнаруженных и подозрительных пакетов в статусной строке
- Кросс-платформенность — запуск на Linux, Windows и macOS без установки зависимостей
- Простота развертывания — автоматизированные скрипты для запуска на разных платформах
- Изоляция окружения — работа в изолированном контейнере для повышения безопасности
- Автономный режим — работа без установки дополнительных библиотек
- Скрипт развертывания — автоматическое создание портативной версии приложения
- Совместимость — работа на различных версиях Windows без дополнительных настроек

Главное окно приложения с темной темой и мониторингом сетевой активности

Анализ подозрительных пакетов с цветовой индикацией уровней угрозы

Обнаружение и классификация сетевых угроз в реальном времени
- Скачайте последний релиз из раздела релизов
- Распакуйте архив в любую директорию
- Запустите
Intrusion_Detection_System_IDS.exe
- Установите Qt 6.8.2
- Установите CMake
- Установите MinGW или Visual Studio
- Установите Npcap (обязательно выберите опцию "Install Npcap in WinPcap API-compatible Mode")
- Клонируйте репозиторий и соберите проект:
:: Клонирование репозитория
git clone https://github.com/scrollDynasty/Intrusion_Detection_System_IDS.git
cd Intrusion_Detection_System_IDS
:: Сборка проекта с MinGW
mkdir cmake-build-debug
cd cmake-build-debug
cmake .. -G "MinGW Makefiles"
cmake --build .
:: Создание портативной версии
cd ..
.\deploy.bat
:: Запуск приложения
.\deploy\Intrusion_Detection_System_IDS.exe
- Установите Docker Desktop для Windows
- Установите VcXsrv Windows X Server
- Запустите скрипт
run_docker.bat
- Установите необходимые зависимости (пример для Ubuntu/Debian):
# Обновление репозиториев
sudo apt update
# Установка Qt 6 и других зависимостей
sudo apt install -y build-essential cmake libpcap-dev qt6-base-dev libqt6widgets6 libqt6gui6 libqt6core6 libqt6network6
# Для других дистрибутивов:
# Fedora: sudo dnf install qt6-qtbase-devel qt6-tools-dev libpcap-devel cmake gcc-c++
# Arch Linux: sudo pacman -S qt6-base qt6-tools libpcap cmake gcc
- Клонируйте репозиторий и соберите проект:
# Клонирование репозитория
git clone https://github.com/scrollDynasty/Intrusion_Detection_System_IDS.git
cd Intrusion_Detection_System_IDS
# Сборка проекта с использованием готового скрипта
chmod +x build_linux.sh
./build_linux.sh
- Запустите приложение с правами администратора (для захвата пакетов):
# Запуск приложения с правами root
sudo ./run_linux.sh
# Клонирование репозитория
git clone https://github.com/scrollDynasty/Intrusion_Detection_System_IDS.git
cd Intrusion_Detection_System_IDS
# Сборка проекта
mkdir -p build
cd build
cmake ..
make -j$(nproc)
# Запуск приложения (требуются права root)
sudo ./Intrusion_Detection_System_IDS
# Установка Docker и docker-compose
sudo apt-get install -y docker.io docker-compose
sudo usermod -aG docker $USER # Требуется перезагрузка или выход/вход в систему
# Запуск приложения
chmod +x run_docker.sh
./run_docker.sh
# Установка Homebrew (если не установлен)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Установка Qt и других зависимостей
brew install cmake qt@6 libpcap
# Добавление Qt в PATH
echo 'export PATH="/usr/local/opt/qt@6/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# Клонирование репозитория
git clone https://github.com/scrollDynasty/Intrusion_Detection_System_IDS.git
cd Intrusion_Detection_System_IDS
# Сборка проекта
mkdir -p cmake-build-debug
cd cmake-build-debug
cmake ..
cmake --build .
# Запуск приложения
./Intrusion_Detection_System_IDS
# Установка Docker Desktop для Mac
brew install --cask docker
# Установка XQuartz
brew install --cask xquartz
# Запуск приложения
chmod +x run_docker_mac.sh
./run_docker_mac.sh
Для создания портативной версии приложения, которую можно запускать на любом компьютере с Windows без установки дополнительных библиотек, используйте скрипт deploy.bat
:
:: Запуск скрипта развертывания
.\deploy.bat
Скрипт создаст директорию deploy
со всеми необходимыми файлами. Вы можете архивировать эту директорию и распространять её как портативную версию приложения.
- Единое окружение — одинаковая среда выполнения на всех платформах
- Отсутствие конфликтов зависимостей — изолированное окружение для приложения
- Простота развертывания — не требуется установка Qt и других библиотек
- Dockerfile — основной файл для создания образа
- docker-compose.yml — конфигурация для запуска контейнера
- run_docker.sh — скрипт запуска для Linux
- run_docker.bat — скрипт запуска для Windows
- run_docker_mac.sh — скрипт запуска для macOS
# Разрешение выполнения скрипта
chmod +x run_docker.sh
# Запуск
./run_docker.sh
:: Запуск из командной строки
run_docker.bat
:: Или двойным щелчком по файлу run_docker.bat
# Разрешение выполнения скрипта
chmod +x run_docker_mac.sh
# Запуск
./run_docker_mac.sh
- Linux: Убедитесь, что вы разрешили доступ к X-серверу:
xhost +local:docker
- Windows: Проверьте, что VcXsrv запущен с параметрами
-multiwindow -clipboard -wgl
- macOS: Убедитесь, что XQuartz запущен и разрешены подключения:
xhost +localhost
- Для работы с сетевыми интерфейсами контейнер должен быть запущен с привилегированным доступом (
privileged: true
в docker-compose.yml) - На Windows может потребоваться запуск Docker Desktop от имени администратора
- Выбор сетевого интерфейса — выберите интерфейс для мониторинга из списка доступных
- Запуск/остановка захвата пакетов — управление процессом мониторинга
- Просмотр подозрительных IP-адресов — таблица с информацией о подозрительной активности
- Просмотр логов — детальная информация о захваченных пакетах
- Цветовая индикация — помогает быстро идентифицировать уровень угрозы
- Счетчик пакетов — показывает количество пакетов от конкретного IP-адреса
- Временные метки — время обнаружения подозрительной активности
- Типы пакетов — классификация пакетов по типу (SYN, ACK, FIN и т.д.)
- Модуль захвата пакетов — использует libpcap/Npcap для захвата сетевого трафика
- Модуль анализа — обрабатывает захваченные пакеты и выявляет подозрительную активность
- Модуль визуализации — отображает результаты анализа в удобном для пользователя виде
- Модуль логирования — сохраняет информацию о захваченных пакетах и обнаруженных угрозах
- C++17 — основной язык программирования
- Qt 6.8.2 — фреймворк для создания графического интерфейса
- libpcap/Npcap — библиотека для захвата сетевых пакетов
- CMake — система сборки
- Docker — контейнеризация приложения
- Расширенная аналитика — добавление статистики и графиков для анализа трафика
- Система оповещений — уведомления о подозрительной активности
- Экспорт данных — возможность экспорта результатов анализа в различные форматы
- Профили мониторинга — создание и сохранение различных профилей для мониторинга
- Интеграция с базами данных угроз — проверка IP-адресов по базам известных угроз
Для проверки работоспособности системы и обнаружения различных типов атак вы можете использовать включенные в дистрибутив скрипты и утилиты.
- Запустите IDS и выберите сетевой интерфейс для мониторинга
- Откройте командную строку от имени администратора
- Запустите Python-скрипт для DOS-атаки с параметрами:
# Для TCP атаки
python dos_attack.py -t 127.0.0.1 -p 80 -m tcp -d 10 -c 100
# Для UDP атаки
python dos_attack.py -t 127.0.0.1 -p 53 -m udp -d 10 -c 50
# Для ICMP (ping) атаки
python dos_attack.py -t 127.0.0.1 -m icmp -d 10 -c 50
Где:
-t
(--target): целевой IP-адрес-p
(--port): целевой порт (не требуется для ICMP)-m
(--mode): режим атаки (tcp, udp, icmp)-d
(--duration): продолжительность в секундах-c
(--connections): количество одновременных соединений
Результат: IDS должна обнаружить и отобразить подозрительную активность в таблице подозрительных IP и журнале событий.
- Запустите IDS и выберите сетевой интерфейс для мониторинга
- Запустите скрипт тестирования с помощью Nmap:
# Используя BAT файл
test_scan.bat
# Или напрямую с помощью Nmap
nmap -sS -p 1-1000 127.0.0.1
Результат: IDS должна обнаружить серию TCP SYN пакетов, распознать их как сканирование портов и отобразить в таблице подозрительных IP.
При успешном тестировании вы должны увидеть:
- Увеличение счетчика пакетов в статусной строке
- Появление новых записей в таблице подозрительных IP
- Предупреждающие сообщения в журнале событий
- Цветовую индикацию угроз в зависимости от количества обнаруженных пакетов
Если какой-либо из тестов не дает ожидаемых результатов, проверьте:
- Правильно ли выбран сетевой интерфейс
- Запущена ли программа с правами администратора
- Включен ли режим promiscuous
- Не блокирует ли антивирус или брандмауэр сетевую активность
Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.
Есть вопросы или предложения? Свяжитесь с нами!
- Email: ymarumar502@gmail.com
- GitHub: scrollDynasty
Разработал scrollDynasty
© 2024-2025 Intrusion Detection System
- Права суперпользователя (root) — обязательно для перехвата сетевого трафика
- Установленный libpcap — основная библиотека для захвата пакетов
- X11 сервер — для запуска графического интерфейса (предустановлен в большинстве дистрибутивов)
-
Нет доступа к сетевым адаптерам:
# Проверка наличия пользователя в группе, имеющей доступ к сетевым устройствам sudo usermod -a -G wireshark $USER # Перезагрузка системы или перелогин пользователя
-
Ошибка загрузки libpcap:
# Проверка установки libpcap ldconfig -p | grep pcap # Установка libpcap, если отсутствует sudo apt install libpcap-dev # Для Debian/Ubuntu
-
Проблемы с отображением Qt интерфейса:
# Проверка установки необходимых библиотек Qt sudo apt install libqt6widgets6 libqt6gui6 libqt6core6
- Улучшенный доступ к низкоуровневому сетевому API — более точный анализ пакетов
- Автоматическое определение всех сетевых интерфейсов — включая виртуальные интерфейсы
- Поддержка широкого спектра сетевых устройств — включая промышленные сетевые адаптеры
- Работа с контейнерами Docker — возможность запуска в изолированной среде