EagleEye - система IDS на основе хоста и мониторинга сети
Этот проект требует большой доработки для готовности к использованию, так как это мой дипломный проект, поэтому он не удобен для пользователя, только для опытных пользователей, бета-версия, и я опубликовал/сделал его только в образовательных целях!
EagleEye состоит из двух частей:
Клиент(написан на Golang)
Назначение: Захватывать каждый пакет на устройстве и извлекать важные детали известных протоколов, затем отправлять все собранные данные мастеру, если он онлайн!
Использование: Должен быть установлен на каждом устройстве, которое вы хотите мониторить (например, устройства сотрудников для компаний).
Мастер: (написан на Python и Bootstrap)
Назначение: Получать каждый пакет, отправленный клиентами, отображать его в организованном виде в таблице мониторинга GUI, отображать информацию о подключенных устройствах, такую как текущий системный пользователь/информация о системе, сравнивать захваченные данные с уже написанными моделями угроз и, наконец, предупреждать пользователя мастера о возможных угрозах безопасности в сети, как это сделала бы типичная IDS-система!
Использование: Должен работать на сервере в той же сети, что и клиенты (например, на сервере, управляемом IT-отделом или командой синего хакерства для компании).
Для получения дополнительной информации вам нужно будет почитать о (С)истемах (О)бнаружения (В)торжений и их типах. Я рекомендую руководство NIST.
Скриншоты
Основной GUI
Таблица мониторинга
Обратите внимание, кнопки в таблице дают вам возможность экспортировать таблицу в форматы (CSV, Excel, PDF), копировать данные таблицы в буфер обмена и распечатывать данные таблицы, если хотите.
Поиск по таблице мониторинга
Простой поиск
Детальный поиск
Как видите, поиск здесь дает возможность искать любой элемент, представленный в таблице.
Таблица подключенных устройств
При подключении нового клиента к мастеру
Информация о каждом клиенте
Обратите внимание: таблица обновляется автоматически каждые 5 секунд или при обновлении страницы!
Таблица угроз
Когда обнаружены угрозы
Подробности о любых возможных обнаруженных угрозах + ссылка по клику
Уведомление на рабочем столе об угрозах
Обратите внимание: таблица обновляется автоматически каждые 5 секунд или при обновлении страницы!
Инструкции по установке
Клиент
Требования
В настоящее время поддерживает только систему Windows (из-за данных, получаемых из реестра; необходимо изменить это).
Следующие инструкции
Инструкции по установке
Убедитесь, что у вас установлен Golang.
Установите библиотеку gopacket с помощью команды:
go get github.com/google/gopacket
Измените следующие переменные в коде в соответствии с вашими потребностями:
Строка 57: Измените переменную url на текущий URL мастера
Строка 59: Измените переменную device на сетевой интерфейс, который вы будете прослушивать; для Windows вам понадобится эта статья!
Строка 66: Измените переменную filter на желаемый фильтр захвата сетевых пакетов или оставьте пустым (если хотите захватывать все пакеты). Синтаксис фильтра — bpf, который используется в поиске Wireshark; вы можете изучить его по этому руководству. Я также оставил несколько примеров в комментариях, если кто-то захочет их использовать.
В CMD перейдите в каталог клиента, конечно.
Теперь вы можете запустить клиент как скрипт с помощью этой команды: go run main.go
Чтобы скомпилировать/собрать его, вы можете использовать следующую команду: go build -o client.exe main.go, возможно, вам понадобится это руководство.
Если вы все это сделали, идите, живите жизнью, чувак 😆 (Шучу)
Мастер
Требования
Любая ОС.
Следующие инструкции; это намного проще, чем клиент, не волнуйтесь LOL!
Инструкции по установке
Убедитесь, что у вас установлен Python 3 (версия 3.5 и выше) и pip.
В CMD перейдите в папку мастера, затем установите зависимости с помощью команды: pip install -r requirements.txt или python -m pip install -r requirements.txt
Если вы работаете в Windows и цветной вывод в CMD для вас важен, выполните эту команду: pip install -r coloring-requirements.txt или python -m pip install -r coloring-requirements.txt
Теперь несколько переменных для изменения в соответствии с вашими потребностями 😆
Строка 21: Измените переменную host_port на порт, на котором вы хотите обслуживать (По умолчанию:8000)
Строка 23: Измените переменную serve_localhost на True, если вы хотите запустить мастер только на локальном хосте (По умолчанию:True)
Строка 24: Измените переменную view_browser на True, если вы хотите, чтобы мастер автоматически открывал обслуживающий URL в браузере (По умолчанию:True)
Теперь вы можете запустить мастер с помощью python interface.py
Получайте удовольствие :)
Список TODO
Расширение GUI (вход пользователя, настройки...)
Добавить уведомления по электронной почте и SMS.
Оптимизировать использование сети
Добавить больше моделей угроз, особенно более сложных, таких как атаки на основе ARP-спуфинга.
Добавить подробные отчеты для таблицы угроз безопасности.
Добавить возможность проверки статуса каждого клиента и его изменения, если устройство неактивно и не в сети, скажем, в течение 1 часа.
Сделать клиент работающим на большем количестве платформ.
Создать GUI установки для клиента (более удобный для пользователя)