Куда я попал?
SECURITM это SGRC система, ? автоматизирующая процессы в службах информационной безопасности. SECURITM помогает построить и управлять ИСПДн, КИИ, ГИС, СМИБ/СУИБ, банковскими системами защиты.
А еще SECURITM это место для обмена опытом и наработками для служб безопасности.
Раздел предназначен для различных скриптов цель которых обогатить информацией сервис или выполнить действия во внешних системах. 

KUMA

Данный скрипт и настройки позволяют отправить API запрос из KUMA в SECURITM при сработке правила корреляции, например при возникновении алерта.

Для импорта данных потребуется выполнить:
  1. Определить список импортируемых данных из KUMA;
  2. При необходимости создать поля и добавить их в соответствующий тип актива;
  3. Сформировать шаблон Импорт Kuma; 
  4. Сформировать токен в Профиль команды - API токены;
  5. Настроить KUMA для запуска скрипта. 
Пример скрипта:
#!/bin/bash
 
# === КОНСТАНТЫ ===
# Эти значения определяются один раз и используются при отправке запроса.

# Токен авторизации (Bearer Token)
# Используется для аутентификации в API SecurITM.
# Должен быть действительным токеном с правами на импорт активов.
TOKEN='укажите Ваш токен'

# Название шаблона импорта в сервисе SECURITM
# Данный шаблон определяет, как будут интерпретироваться переданные поля.
# В данном случае используется шаблон c названием "Импорт Kuma" который мы создали заранее.
TEMPLATE='Импорт Kuma'

# API-сервиса SECURITM
URI='https://веб адрес вашего сервера securitm/api/v1/assets/import'

# Объявляем массив для хранения полей актива.
# Это позволяет нам работать с параметрами в формате "ключ -> значение".
declare -A ARGS

# Зададим аргументы для командной строки
# Поддерживается два формата:
#   1. --ключ значение      (например: --ip 192.168.1.1)
#   2. ключ:значение        (например: name:"Сервер Kuma")
# В логике SECURITM ключ это внешнее поле в шаблоне импорта, значение - импортируемые данные

while [[ $# -gt 0 ]]; do
    case $1 in
        # Если аргумент начинается с "--", считаем его флагом
        --*)
            # Проверяем, что следующий аргумент существует и не является новым флагом
            if [[ -n "$2" && ! "$2" =~ ^-- ]]; then
           
                if [[ "$2" =~ ^[0-9]+$ ]]; then
                    ARGS["${1#--}"]="$2"
                else
                    # Иначе оборачиваем значение в двойные кавычки (для JSON)
                    ARGS["${1#--}"]=\""$2"\"
                fi
            else
                echo "Предупреждение: Указан флаг '$1', но отсутствует значение."
            fi
            shift  # Пропускаем текущий флаг
            shift  # Пропускаем значение после флага
            ;;
        
        # Обработка простых аргументов в формате ключ:значение
        *)
            # Разделяем строку по символу ':'
            IFS=':' read -r key value <<< "$1"

            # Проверяем, что есть и ключ, и значение
            if [[ -n "$key" && -n "$value" ]]; then
                # Если значение — число, передаём как число (без кавычек в JSON)
                if [[ "$value" =~ ^[0-9]+$ ]]; then
                    ARGS["$key"]="$value"
                else
                    # Строковые значения оборачиваются в кавычки
                    ARGS["$key"]=\""$value"\"
                fi
            else
                echo "Ошибка: Неверный формат аргумента: '$1'. Ожидается 'ключ:значение' или '--ключ значение'."
                exit 1
            fi
            shift  # Переходим к следующему аргументу
            ;;
    esac
done

# Поле шаблона 'template' обязательно для корректной обработки импорта в SECURITM.

ARGS[template]=\"${TEMPLATE}\"

# сформируем тело json запроса

JSON=""

# Перебираем все ключи в массиве ARGS
for KEY in "${!ARGS[@]}"; do
    if [[ -n "$JSON" ]]; then
        JSON="${JSON},"
    fi
    # Добавляем пару "ключ":значение
    JSON="${JSON}\"${KEY}\":${ARGS[$KEY]}"
done

JSON="{${JSON}}"

if [[ -z "$JSON" || "$JSON" == "{}" ]]; then
    echo "Ошибка: Не передано ни одного поля для импорта. JSON пуст."
    exit 1
fi

# Отладочная печать JSON
echo "Сформированный JSON: $JSON"

# Используем curl для POST-запроса к API
curl -k -s -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer ${TOKEN}" \
    -d "${JSON}" \
    "${URI}"

# Пояснение флагов curl:
#   -k : игнорировать проверку SSL-сертификата (не рекомендуется в продакшене)
#   -s : тихий режим (без прогресс-бара)
#   -X POST : метод запроса
#   -H : заголовки (тип содержимого и авторизация)
#   -d : тело запроса (наш JSON)
#   "${URI}" : адрес назначения

Настройки KUMA

Установка скрипта импорта на сервер KUMA. 
  1. Подключиться к серверу KUMA SIEM через SSH 
  2. Поместить скрипт securitm-api.sh в каталог /opt/kaspersky/kuma/correlator/<идентификатор>/scripts/ 
  3. Файл скрипта хранится на сервере, где установлен сервис коррелятора 
  4. На данный каталог необходимо установить права chmod -x 
 Настройка консоли администрирования KUMA. 
  1. Далее переходим в консоль администрирования KUMA (web) – выбираем раздел Ресурсы 
  2. Выбираем блок Правила реагирования 
  3. Нажимаем кнопку Добавить 
  4. Заполняем следующие поля: 
    • Название - указываем название правила 
    • Тип – указываем тип действия «Запуск скрипта» 
    • Время ожидания – устанавливаем время ожидания для выполнения скрипта «0» 
    • Название скрипта – указываем полное название скрипта с расширением (как указано в каталоге) securitm-api.sh 
    • Аргументы скрипта – Указываем аргументы, с которыми будет работать скрипт, например: -- name {{.CorrelationRuleName}} -- IP {{.SourceAddress}} 
    • Нажимаем кнопку Сохранить
 В логике SECURITM Аргументы скрипта-- nameи-- IP  это внешнее поле в шаблоне импорта, значение переменной обрамленной в фигурные скобки  {{.}} - импортируемые данные.

Мы используем cookie-файлы, чтобы получить статистику, которая помогает нам улучшить сервис для вас с целью персонализации сервисов и предложений. Вы может прочитать подробнее о cookie-файлах или изменить настройки браузера. Продолжая пользоваться сайтом, вы даёте согласие на использование ваших cookie-файлов и соглашаетесь с Политикой обработки персональных данных.