https://github.com/scrolldynasty/intrusion_detection_system_ids
Intrusion_Detection_System_IDS
https://github.com/scrolldynasty/intrusion_detection_system_ids
c cmake cpp detection-systems ids makfile npcap python python3
Last synced: 2 months ago
JSON representation
Intrusion_Detection_System_IDS
- Host: GitHub
- URL: https://github.com/scrolldynasty/intrusion_detection_system_ids
- Owner: scrollDynasty
- License: mit
- Created: 2025-01-25T15:05:48.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-03-16T17:50:10.000Z (2 months ago)
- Last Synced: 2025-03-16T18:55:28.424Z (2 months ago)
- Topics: c, cmake, cpp, detection-systems, ids, makfile, npcap, python, python3
- Language: HTML
- Homepage:
- Size: 27.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🛡️ Intrusion Detection System (IDS)




## 📖 Обзор
**Intrusion Detection System (IDS)** — это система обнаружения вторжений с графическим интерфейсом, разработанная на C++ с использованием Qt. Система мониторит входящие и исходящие сетевые пакеты в реальном времени, обнаруживает и регистрирует подозрительную активность, такую как TCP SYN-пакеты, которые часто указывают на сканирование портов или DoS-атаки.
## 🚀 Быстрый старт
### ⚡ Готовый исполняемый файл
Для быстрого начала работы вы можете скачать готовый исполняемый файл из [раздела релизов](https://github.com/scrollDynasty/Intrusion_Detection_System_IDS/releases). Просто распакуйте архив и запустите `Intrusion_Detection_System_IDS.exe` — никаких дополнительных установок не требуется!
> **Примечание:** Готовый исполняемый файл содержит все необходимые библиотеки и может быть запущен на любом компьютере с Windows без установки Qt или других зависимостей.
### 🔧 Настройка для обнаружения сканирования портов с других компьютеров
Для корректного обнаружения сканирования портов и других атак с других компьютеров в сети необходимо:
1. **Запустить программу от имени администратора** — это необходимо для работы в режиме promiscuous
2. **Установить Npcap** — скачайте и установите [Npcap](https://nmap.org/npcap/) с официального сайта
- При установке выберите опцию 'Install Npcap in WinPcap API-compatible Mode'
- Перезагрузите компьютер после установки
3. **Выбрать правильный сетевой адаптер** — используйте физический сетевой адаптер, а не виртуальный
- Убедитесь, что выбранный адаптер поддерживает режим promiscuous
- Для Wi-Fi адаптеров может потребоваться включение режима мониторинга в настройках драйвера
4. **Проверить настройки сети** — некоторые сетевые коммутаторы могут блокировать режим promiscuous
- В корпоративных сетях может потребоваться настройка порта коммутатора для работы в режиме зеркалирования (port mirroring)> **Важно:** Если вы не видите пакеты с других компьютеров в сети, проверьте, что все вышеперечисленные условия выполнены.
### 📡 Режим Promiscuous и ограничения сетевых коммутаторов
#### Что такое режим Promiscuous?
Режим Promiscuous позволяет сетевому адаптеру захватывать все пакеты в сети, а не только те, которые адресованы непосредственно этому компьютеру. Это необходимо для обнаружения сканирования портов и других атак с других компьютеров в сети.#### Ограничения сетевых коммутаторов
В современных сетях с коммутаторами (switches) существуют ограничения на видимость пакетов:1. **Коммутаторы vs. Хабы:**
- **Хабы (устаревшие)** отправляют все пакеты на все порты, что позволяет видеть весь трафик
- **Коммутаторы (современные)** отправляют пакеты только на порт назначения, что ограничивает видимость2. **Решения для работы с коммутаторами:**
- **Port Mirroring (SPAN)** — настройка коммутатора для копирования трафика с одного порта на другой
- **Network TAP** — специальное устройство для перехвата сетевого трафика
- **ARP Spoofing** — техника перенаправления трафика (не рекомендуется в производственных сетях)3. **Домашние сети:**
- В домашних сетях с Wi-Fi роутерами обычно трудно увидеть трафик других устройств
- Для тестирования можно использовать тестовый режим программы> **Рекомендация:** Если вам нужно обнаруживать атаки в реальной сети, рассмотрите возможность установки IDS на пограничном устройстве (например, на маршрутизаторе) или настройте port mirroring на коммутаторе.
## ✨ Новые функции и улучшения в версии 3.1.3
### 🐧 Официальная поддержка Linux
- **Полная поддержка Linux** — система теперь официально работает на дистрибутивах Linux
- **Адаптированные скрипты** — добавлены специальные скрипты для сборки и запуска в Linux
- **Автоматическое определение сетевых интерфейсов** — корректная работа с различными типами интерфейсов в Linux
- **Совместимость с libpcap** — оптимизирована работа с Linux-версией библиотеки захвата пакетов
- **Скрипты установки зависимостей** — упрощенная установка необходимых компонентов для Linux### 🛠️ Технические улучшения
- **Кроссплатформенная компиляция** — улучшенная совместимость исходного кода между Windows и Linux
- **Расширенная документация** — добавлены детальные инструкции для запуска на Linux
- **Исправления для Linux** — адаптация типов данных и интерфейсов для корректной работы в Linux
- **Улучшенный CMake** — обновленные инструкции сборки для различных платформ## ✨ Новые функции и улучшения в версии 3.1.2
### 🐛 Исправления и улучшения интерфейса
- **Улучшена поддержка кириллических символов** — исправлена кодировка UTF-8 во всех формах и сообщениях
- **Перевод интерфейса на русский язык** — все диалоговые окна и кнопки теперь корректно отображаются на русском
- **Добавлено диалоговое окно "О программе"** — реализован информационный диалог с данными о версии и функциях
- **Усовершенствована система сохранения логов** — добавлен запрос на сохранение при выходе из программы
- **Улучшена работа с зашифрованными логами** — оптимизирована работа с .enc файлами и механизм проверки пароля## ✨ Новые функции и улучшения в версии 3.1.1
### 🐛 Исправления багов
- **Исправлена проблема с отображением текста ошибок** — теперь сообщения об ошибках корректно отображаются на всех компьютерах
- **Улучшена поддержка кодировки UTF-8** — добавлена явная установка кодировки во всех .bat файлах и в коде приложения
- **Исправлено отображение текста в окне отладки** — теперь текст корректно отображается с использованием UTF-8
- **Улучшен интерфейс диалоговых окон** — увеличен размер окон сообщений для лучшей читаемости
- **Оптимизирована работа с файлами логов** — добавлена явная установка кодировки UTF-8 для файлов логов## ✨ Функции и улучшения в версии 3.1.0
### 🔍 Улучшенное обнаружение внешних угроз
- **Режим Promiscuous** — улучшена поддержка режима захвата всех пакетов в сети
- **Обнаружение внешних сканирований** — система теперь может обнаруживать сканирование портов с других компьютеров в сети
- **Определение локальных и внешних IP** — автоматическое определение локальных IP-адресов для точного обнаружения внешних угроз
- **Расширенная отладочная информация** — подробное логирование для диагностики проблем с захватом пакетов
- **Улучшенная обработка TCP пакетов** — более точное обнаружение сканирования портов и других атак### 🛠️ Технические улучшения
- **Оптимизация захвата пакетов** — увеличен таймаут для лучшего захвата пакетов в сети
- **Проверка поддержки режима Promiscuous** — автоматическая проверка возможностей сетевого адаптера
- **Подробная документация** — добавлена информация о настройке системы для обнаружения внешних угроз
- **Улучшенные сообщения об ошибках** — более информативные сообщения при возникновении проблем
- **Совместимость с различными сетевыми адаптерами** — улучшена поддержка различных типов сетевых адаптеров## ✨ Функции и улучшения в версии 3.0.0
### 🎨 Современный пользовательский интерфейс
- **Темная тема** — улучшенная читаемость и снижение нагрузки на глаза
- **Цветовая индикация угроз** — визуальное выделение подозрительных 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 пакетов с различными параметрами
- **Симуляция угроз** — генерация подозрительных пакетов для тестирования системы обнаружения### 🛡️ Повышенная стабильность
- **Обработка исключений** — предотвращение сбоев приложения при возникновении ошибок
- **Улучшенная обработка ошибок** — информативные сообщения об ошибках в логах
- **Безопасное завершение захвата** — корректное освобождение ресурсов при остановке захвата
- **Счетчики пакетов** — отображение количества обнаруженных и подозрительных пакетов в статусной строке### 🐳 Поддержка Docker
- **Кросс-платформенность** — запуск на Linux, Windows и macOS без установки зависимостей
- **Простота развертывания** — автоматизированные скрипты для запуска на разных платформах
- **Изоляция окружения** — работа в изолированном контейнере для повышения безопасности### 📦 Портативность
- **Автономный режим** — работа без установки дополнительных библиотек
- **Скрипт развертывания** — автоматическое создание портативной версии приложения
- **Совместимость** — работа на различных версиях Windows без дополнительных настроек## 📸 Скриншоты
![]()
Главное окно приложения с темной темой и мониторингом сетевой активности
![]()
Анализ подозрительных пакетов с цветовой индикацией уровней угрозы
![]()
Обнаружение и классификация сетевых угроз в реальном времени
## 🚀 Установка и запуск
### 🪟 Windows
#### Вариант 1: Использование готового исполняемого файла (рекомендуется)
1. Скачайте последний релиз из [раздела релизов](https://github.com/scrollDynasty/Intrusion_Detection_System_IDS/releases)
2. Распакуйте архив в любую директорию
3. Запустите `Intrusion_Detection_System_IDS.exe`#### Вариант 2: Сборка из исходного кода
1. Установите [Qt 6.8.2](https://www.qt.io/download)
2. Установите [CMake](https://cmake.org/download/)
3. Установите [MinGW](https://www.mingw-w64.org/downloads/) или [Visual Studio](https://visualstudio.microsoft.com/downloads/)
4. Установите [Npcap](https://nmap.org/npcap/) (обязательно выберите опцию "Install Npcap in WinPcap API-compatible Mode")
5. Клонируйте репозиторий и соберите проект:
```cmd
:: Клонирование репозитория
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
```#### Вариант 3: Запуск через Docker
1. Установите [Docker Desktop для Windows](https://www.docker.com/products/docker-desktop)
2. Установите [VcXsrv Windows X Server](https://sourceforge.net/projects/vcxsrv/)
3. Запустите скрипт `run_docker.bat`### 🐧 Linux
#### Вариант 1: Установка из исходного кода
1. Установите необходимые зависимости (пример для Ubuntu/Debian):
```bash
# Обновление репозиториев
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
```2. Клонируйте репозиторий и соберите проект:
```bash
# Клонирование репозитория
git clone https://github.com/scrollDynasty/Intrusion_Detection_System_IDS.git
cd Intrusion_Detection_System_IDS# Сборка проекта с использованием готового скрипта
chmod +x build_linux.sh
./build_linux.sh
```3. Запустите приложение с правами администратора (для захвата пакетов):
```bash
# Запуск приложения с правами root
sudo ./run_linux.sh
```#### Вариант 2: Ручная сборка и запуск
```bash
# Клонирование репозитория
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
```#### Вариант 3: Запуск через Docker
```bash
# Установка 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
```### 🍎 macOS
#### Установка зависимостей
```bash
# Установка 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
```#### Сборка из исходного кода
```bash
# Клонирование репозитория
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
```bash
# Установка 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`:
```cmd
:: Запуск скрипта развертывания
.\deploy.bat
```Скрипт создаст директорию `deploy` со всеми необходимыми файлами. Вы можете архивировать эту директорию и распространять её как портативную версию приложения.
## 🐳 Docker: подробное руководство
### Преимущества использования Docker
- **Единое окружение** — одинаковая среда выполнения на всех платформах
- **Отсутствие конфликтов зависимостей** — изолированное окружение для приложения
- **Простота развертывания** — не требуется установка Qt и других библиотек### Структура Docker-файлов
- **Dockerfile** — основной файл для создания образа
- **docker-compose.yml** — конфигурация для запуска контейнера
- **run_docker.sh** — скрипт запуска для Linux
- **run_docker.bat** — скрипт запуска для Windows
- **run_docker_mac.sh** — скрипт запуска для macOS### Запуск на разных платформах
#### Linux
```bash
# Разрешение выполнения скрипта
chmod +x run_docker.sh# Запуск
./run_docker.sh
```#### Windows
```cmd
:: Запуск из командной строки
run_docker.bat:: Или двойным щелчком по файлу run_docker.bat
```#### macOS
```bash
# Разрешение выполнения скрипта
chmod +x run_docker_mac.sh# Запуск
./run_docker_mac.sh
```### Возможные проблемы и их решение
#### Проблемы с отображением GUI
- **Linux**: Убедитесь, что вы разрешили доступ к X-серверу: `xhost +local:docker`
- **Windows**: Проверьте, что VcXsrv запущен с параметрами `-multiwindow -clipboard -wgl`
- **macOS**: Убедитесь, что XQuartz запущен и разрешены подключения: `xhost +localhost`#### Проблемы с доступом к сетевым интерфейсам
- Для работы с сетевыми интерфейсами контейнер должен быть запущен с привилегированным доступом (`privileged: true` в docker-compose.yml)
- На Windows может потребоваться запуск Docker Desktop от имени администратора## 💻 Использование приложения
### Основные функции
1. **Выбор сетевого интерфейса** — выберите интерфейс для мониторинга из списка доступных
2. **Запуск/остановка захвата пакетов** — управление процессом мониторинга
3. **Просмотр подозрительных IP-адресов** — таблица с информацией о подозрительной активности
4. **Просмотр логов** — детальная информация о захваченных пакетах### Интерпретация результатов
- **Цветовая индикация** — помогает быстро идентифицировать уровень угрозы
- **Счетчик пакетов** — показывает количество пакетов от конкретного IP-адреса
- **Временные метки** — время обнаружения подозрительной активности
- **Типы пакетов** — классификация пакетов по типу (SYN, ACK, FIN и т.д.)## 🛠️ Технические детали
### Архитектура приложения
- **Модуль захвата пакетов** — использует libpcap/Npcap для захвата сетевого трафика
- **Модуль анализа** — обрабатывает захваченные пакеты и выявляет подозрительную активность
- **Модуль визуализации** — отображает результаты анализа в удобном для пользователя виде
- **Модуль логирования** — сохраняет информацию о захваченных пакетах и обнаруженных угрозах### Используемые технологии
- **C++17** — основной язык программирования
- **Qt 6.8.2** — фреймворк для создания графического интерфейса
- **libpcap/Npcap** — библиотека для захвата сетевых пакетов
- **CMake** — система сборки
- **Docker** — контейнеризация приложения## 🔮 Планы на будущее
- [ ] **Расширенная аналитика** — добавление статистики и графиков для анализа трафика
- [ ] **Система оповещений** — уведомления о подозрительной активности
- [ ] **Экспорт данных** — возможность экспорта результатов анализа в различные форматы
- [ ] **Профили мониторинга** — создание и сохранение различных профилей для мониторинга
- [ ] **Интеграция с базами данных угроз** — проверка IP-адресов по базам известных угроз## 🧪 Тестирование программы
Для проверки работоспособности системы и обнаружения различных типов атак вы можете использовать включенные в дистрибутив скрипты и утилиты.
### 📊 Проверка с помощью Python-скрипта для DOS-атак
1. **Запустите IDS** и выберите сетевой интерфейс для мониторинга
2. **Откройте командную строку** от имени администратора
3. **Запустите Python-скрипт для DOS-атаки** с параметрами:```bash
# Для 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 и журнале событий.
### 🔍 Проверка с помощью Nmap
1. **Запустите IDS** и выберите сетевой интерфейс для мониторинга
2. **Запустите скрипт тестирования** с помощью Nmap:```bash
# Используя BAT файл
test_scan.bat# Или напрямую с помощью Nmap
nmap -sS -p 1-1000 127.0.0.1
```**Результат**: IDS должна обнаружить серию TCP SYN пакетов, распознать их как сканирование портов и отобразить в таблице подозрительных IP.
### 🔄 Интерпретация результатов тестирования
При успешном тестировании вы должны увидеть:
1. **Увеличение счетчика пакетов** в статусной строке
2. **Появление новых записей** в таблице подозрительных IP
3. **Предупреждающие сообщения** в журнале событий
4. **Цветовую индикацию** угроз в зависимости от количества обнаруженных пакетовЕсли какой-либо из тестов не дает ожидаемых результатов, проверьте:
- Правильно ли выбран сетевой интерфейс
- Запущена ли программа с правами администратора
- Включен ли режим promiscuous
- Не блокирует ли антивирус или брандмауэр сетевую активность## 📜 Лицензия
Этот проект распространяется под лицензией **MIT**. Подробности смотрите в файле [LICENSE](LICENSE).
## 💬 Контакты
Есть вопросы или предложения? Свяжитесь с нами!
- **Email**: [email protected]
- **GitHub**: [scrollDynasty](https://github.com/scrollDynasty)---
Разработал scrollDynasty
© 2024-2025 Intrusion Detection System
## 📋 Особенности работы на Linux
### 🔧 Требования для захвата пакетов
- **Права суперпользователя (root)** — обязательно для перехвата сетевого трафика
- **Установленный libpcap** — основная библиотека для захвата пакетов
- **X11 сервер** — для запуска графического интерфейса (предустановлен в большинстве дистрибутивов)### 🛡️ Возможные проблемы и их решения
- **Нет доступа к сетевым адаптерам**:
```bash
# Проверка наличия пользователя в группе, имеющей доступ к сетевым устройствам
sudo usermod -a -G wireshark $USER
# Перезагрузка системы или перелогин пользователя
```- **Ошибка загрузки libpcap**:
```bash
# Проверка установки libpcap
ldconfig -p | grep pcap
# Установка libpcap, если отсутствует
sudo apt install libpcap-dev # Для Debian/Ubuntu
```- **Проблемы с отображением Qt интерфейса**:
```bash
# Проверка установки необходимых библиотек Qt
sudo apt install libqt6widgets6 libqt6gui6 libqt6core6
```### 🔍 Дополнительные возможности в Linux
- **Улучшенный доступ к низкоуровневому сетевому API** — более точный анализ пакетов
- **Автоматическое определение всех сетевых интерфейсов** — включая виртуальные интерфейсы
- **Поддержка широкого спектра сетевых устройств** — включая промышленные сетевые адаптеры
- **Работа с контейнерами Docker** — возможность запуска в изолированной среде