Telegram-бот для отправки уведомлений о новых сработках в системе Positive Technologies Sandbox
Текущая версия приложения проверена и работает с указанной версией PT Sandbox
- Описание проекта
- Требования
- Установка приложения
- Удаление приложения
- Изменение конфигурации приложения
- Обновление приложения
- Участие в разработке
- Лицензия
- Авторы
Данная утилита предназначена для отправки уведомлений о новых подозрительных вердиктах в системе Positive Technologies Sandbox через Telegram-бота.
Основная интеграция этого приложения и PT Sandbox выполняется по протоколу syslog (на транспортном уровне используется TCP).
Приложение:
- Прослушивает весь входящий трафик на специализированном порту
- Отсеивает неподходящие syslog-события
- Выбирает только те события, которые содержат подстроку
- scan_machine.final_result -(событие вынесения вердикта по заданию) - Выполняет фильтрацию по
тело сообщения→result→verdict→threat_level - Отправляет информацию через Telegram-бота, если уровень угрозы соответствует настройкам пользователя
-
Docker с модулем Docker Compose для запуска приложения в контейнере
-
Сетевая доступность для трансляции syslog-сообщений от PT Sandbox до хоста с приложением
ℹ️ Встроенный сервер работает по протоколу TCP. Приём UDP сообщений не тестировался. Syslog-сообщения могут транслироваться через балансировщики нагрузки.
-
Доступ к
https://api.telegram.orgдля взаимодействия с Telegram Bot API -
Аккаунт в Telegram
Для работы Telegram-бота необходимо получить токен доступа.
-
Перейдите в диалог с BotFather — официальным Telegram-ботом для создания новых ботов
-
Отправьте команду
/start -
Выберите
/newbotиз предложенного списка -
Введите имя для создаваемого бота (любое название в рамках цензуры, не обязательно уникальное)
-
Введите username (ссылку) для бота:
- Должен быть уникальным
- Должен заканчиваться на
bot - При некорректном вводе BotFather запросит ввод повторно
-
При успешном создании BotFather предоставит:
- Ссылку на бота (
t.me/<username>) — рекомендуется перейти и нажать "Запустить", чтобы бот отобразился в ваших диалогах - Токен доступа — можно скопировать нажатием на текст токена. Понадобится при настройке приложения
- Ссылку на бота (
⚠️ Важно: Никому не сообщайте токен от вашего бота! При компрометации токена удалите бота через BotFather и создайте нового.
Необходимо получить Telegram ID беседы для отправки сообщений.
Если бот должен уведомлять только вас:
- Перейдите к боту Get My ID для получения вашего ID
- Отправьте команду
/start - Скопируйте или запомните числовое значение
Your user IDиз ответного сообщения
Если бот должен уведомлять группу пользователей:
-
Создайте группу в Telegram. Название и аватарка могут быть любыми. Приглашать участников пока не требуется
-
Перейдите к боту Get My ID для получения Telegram ID группы
-
Нажмите на профиль бота вверху. В профиле выберите
Добавить в группу. В списке выберите созданную группу -
Скопируйте или запомните числовое значение
Current chat ID(включая знак "-", если присутствует)ℹ️ Если сообщение не появилось, отправьте
/start@getmyid_bot -
Удалите бота
Get My IDиз группы через меню управления группой -
Добавьте вашего основного бота в созданную группу аналогичным образом
Тип группы: Установить как Частная группа. Новых людей приглашать следует только личноСохранение контента: Запретить копирование (пересылку)Разрешения: Выключить все разрешения у пользователейАдминистраторы: Добавить бота как администратора. Это позволит отправлять сообщения, даже если всем пользователям отправка запрещена. Все возможности администратора у бота могут быть выключены
Скачайте исходный код одним из способов:
Через Git:
git clone https://github.com/Security-Experts-Community/ptsb-notifier.gitИли скачайте ZIP-архив по ссылке:
https://github.com/Security-Experts-Community/ptsb-notifier/archive/refs/heads/main.zip
⚠️ Важно: Установка должна выполняться от имени супер пользователя root или sudo.
ℹ️ Порт по умолчанию: Приложение будет слушать входящий syslog-трафик от PT Sandbox на локальном порту
1468хоста. Если порт занят, измените1468:514на<нужный порт>:514в файлеbuilder/docker-compose.yaml. Порт514является внутренним в docker-контейнере и его менять не нужно.
-
Перейдите в директорию проекта:
cd ptsb-notifier -
Сделайте установочный скрипт исполняемым:
chmod +x install.sh
-
Запустите процесс установки:
sudo ./install.sh
-
Настройте параметры конфигурации:
ℹ️ Для значений по умолчанию просто нажимайте Enter
- Адрес веб-интерфейса PT Sandbox:
Enter value for parameter PTSB_MAIN_WEB (current: ''):
Для перехода к страницам заданий с обнаруженными сработками. Если используется FQDN — вводите FQDN. Если используется отказоустойчивый кластер — вводите адрес кластера.
-
Режим фильтрации угроз (
THREAT_FILTER_MODE):Режим Описание Цветовая индикация ALLВсе вердикты 🔘 Серый, 🟡 Жёлтый, 🔴 Красный UNWANTEDПотенциально опасное и опасное ПО 🟡 Жёлтый, 🔴 Красный DANGEROUSТолько опасное ПО 🔴 Красный Enter value for parameter THREAT_FILTER_MODE (current: ALL):⚠️ Важно: Ввод регистрозависим, необходимо вводить значение заглавными буквами.
- Токен Telegram-бота:
Enter value for parameter TG_BOT_TOKEN (current: ''):
Вставьте токен, который был получен от BotFather при создании бота.
- ID чата Telegram:
Enter value for parameter TG_CHAT_ID (current: ''):
Введите Telegram ID чата (ваш личный или группы), который был получен ранее. Если содержит знак минус, вставьте с минусом.
- Смещение часового пояса от UTC:
Enter value for parameter UTC_CUSTOM_OFFSET (current: 3):Syslog-демон на PT Sandbox отправляет время в UTC+0. Для МСК укажите +3, для МСК-1 укажите +2. Поддерживается ввод отрицательного числа (например, -1).
- Адрес веб-интерфейса PT Sandbox:
-
Дождитесь завершения установки:
✔ Service ptsb-notifier Built ✔ Container ptsb-notifier Started
В веб-интерфейсе PT Sandbox перейдите: Система → Основные параметры → Отправка сообщений в системный журнал по протоколу syslog
- Включите отправку сообщений по протоколу syslog
- В качестве адреса
Сервера системного журналаукажите адрес хоста, на котором было развернуто приложение - В качестве порта укажите
1468(или ваш настроенный порт) - Протоколом выберите
TCP - Сохраните изменения и подождите несколько минут для их применения
ℹ️ Примечание: Если syslog-трафик от PT Sandbox будет поступать в приложение через балансировщик — произведите его настройку аналогичным образом.
Для проверки работоспособности приложения, отправьте на проверку любой файл, хэш которого добавлен в черный список.
⚠️ Важно: Удаление должно выполняться от имени суперпользователя root или через sudo.
-
Перейдите в корневую директорию скачанного проекта:
cd ptsb-notifier -
Сделайте файл исполняемым:
chmod +x uninstall.sh
-
Запустите процесс удаления приложения:
sudo ./uninstall.sh
По окончании удаления скрипт выведет информацию о том, что удаление docker-контейнера и образа завершено.
Изменение конфигурации может потребоваться, если вы хотите поменять параметры (например, токен Telegram-бота или Telegram ID чата). При этом переустановки не происходит.
⚠️ Важно: Изменение конфигурации должно выполняться от имени суперпользователя root или через sudo.
-
Перейдите в корневую директорию скачанного проекта и запустите процесс установки:
cd ptsb-notifier sudo ./install.sh -
Введите новые значения для тех параметров, которые требуется изменить. Если параметр менять не нужно, просто нажмите
Enter -
При запросе выберите
updateдля переконфигурации основных параметров:Image of 'ptsb-notifier' already exists. Do you want to update parameters of application or fully rebuild? (update/rebuild): update
Обновление может потребоваться, если вышла новая версия. В этом случае происходит пересборка приложения.
⚠️ Важно: Перед обновлением сохраните текущие параметры:cat config/default.env. При скачивании новой версии черезgit cloneможет перезаписаться файл со старыми параметрами.
⚠️ Важно: Обновление должно выполняться от имени суперпользователя root или через sudo.
-
Перейдите в корневую директорию скачанного проекта и запустите процесс установки:
cd ptsb-notifier sudo ./install.sh -
Если параметр менять не нужно, просто нажмите
Enterи значение останется равным тому, что сохранено в скобках -
При запросе введите
rebuildдля пересборки приложения:Image of 'ptsb-notifier' already exists. Do you want to update parameters of application or fully rebuild? (update/rebuild): rebuild
-
Приложение будет запущено в контейнере с новой версией, которая была скачана ручным способом.
⚠️ Важно: Обновление должно выполняться от имени пользователя владельца директории, где находится сейчас проект. По факту, от того пользователя, который изначально скачивал проект черезgit clone, а не от имени суперпользователя root или через sudo. Но пользователь должен иметь доступ кsudoправам.
⚠️ Важно: Данный метод работает только при установленномgitна хосте.
-
Перейдите в корневую директорию скачанного проекта:
cd ptsb-notifier -
Сделайте файл исполянеым:
chmox +x update.sh
-
Запустите процесс обновления:
./update.sh
-
Скрипт проверит, есть ли новые версии в оригинальном репозитории.
- Если таких версий нет, будет выведено сообщение о том, что используется самая последняя доступная версия.
- Если новые версии вышли, выведется сообщение обо всех новых коммитах, а также будет предложено установить самую свежую версию из
origin/main.
-
Запустится проверка локальных файлов на соответствие файлам в
origin/main.- Если конфликтов в изменениях нет, то скрипт продолжит работу по обновлению.
- Если есть конфликты, будет предложено 3 варианта дальнейших действий:
- Удаление всех локальных изменений и приведение папки-проекта к виду оригинального репозитория
origin/main⚠️ Важно: Будут выполнены командыgit reset --hard origin/mainиgit clean -fd. При этом, файлconfig/default.envне затрагивается. - Отмена обновления и выход из завершения скрипта обновления без внесения каких-либо изменений.
- Ручное разрешение конфликтов для последующего возможного обновления.
⚠️ Важно: Если по итогам разрешения конфликтов всё равно будут обнаруженыdiffфайлы - процесс обновления прервется и скрипт завершит выполнение.
- Удаление всех локальных изменений и приведение папки-проекта к виду оригинального репозитория
-
Выведется сообщение с запросом на перезапуск контейнера приложения. Ввод
yилиYосуществит перезапуск:Are you ready to proceed with restaring newer version of container? (y/N): y -
Если для пользователя, запускавшего обновление настроен запрос пароля для выполнения
sudo- потребуется ввести пароля для перезапуска контейнера с приложением.⚠️ Важно: В случае трех неудачных попыток ввода пароля - скрипт заверштися с ошибкой. При этом, локальная папка-проект будет соответствовать состоянию самой последней версииorigin/main. Однако, новая версия контейнера запущена не будет. В таком случае необходимо запустить скриптinstall.shи выбратьrebuildв конце. -
Запустится пересборка проекта. По результатам установки будет проверена работоспособность созданного проекта через 5 секунд после запуска. А также будет выведена информация о вновь установленной версии.
Мы приветствуем вклад от сообщества! Если вы хотите внести свой вклад в развитие проекта, ознакомьтесь с руководством по участию в разработке.
Мы приветствуем:
- Сообщения об ошибках и предложения улучшений
- Улучшение документации
- Добавление новых функций
- Улучшение обработки ошибок и логирования
Этот проект распространяется под лицензией Creative Commons Attribution-NonCommercial 4.0 International License.
p.s. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.
Автор не имеет отношения к компании Positive Technologies и не является её сотрудником. Также автор не несет ответственности за любые последствия от использования приложения на реальных инсталляциях. Ответственность лежит исключительно на конечном пользователе.
