Интеграции

В данном разделе описаны инструкции по интеграции KUMA с различными системами

Cheat Sheet по интеграциям KATA c KUMA

Введение

В KATA версии 7.0 появились новые возможности и интеграции с KUMA. Данная статья направлена на упрощение восприятия данных интеграций, а также агрегации на одной странице всех инструкций по взаимодействию данных систем.

Схема взаимодействия

image.png

Подробнее

Что такое KATA Alerts?

Вкладка Alerts в веб-интерфейсе KATA

image.png

Что такое User activity?

Вкладка Logs - User activity в интерфейсе KATA

image.png

Как настроить отправку алертов и действий пользователей KATA в KUMA - ссылка

Что такое EDR telemetry?

Вкладка Threat hunting в веб-интерфейсе KATA

image.png

Как настроить отправку телеметрии EDR в KUMA - ссылка

Что такое NDR events?

Вкладка Network traffic events в веб-интерфейсе KATA

image.png

Что такое NDR Audit?

Вкладка Logs - Audit в веб-интерфейсе KATA

image.png

Что такое NDR Application messages?

Вкладка Logs - Application messages в веб-интерфейсе KATA

image.png

Как настроить отправку событий, аудита и сообщений NDR в KUMA - ссылка

Что такое NDR Assets?

Вкладка Assets в веб-интерфейсе KATA

image.png

Как настроить передачу активов, обнаруженных NDR в KUMA - ссылка

Обогащение

Обогащение

LDAP-обогащение

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/2.1/ru-RU/217926.htm 

Настройка параметров подключения к LDAP-серверу

Зайдите в веб-интерфейс KUMA с учетной записью Главного администратора или администратора тенанта, для которого необходимо настроить подключение к LDAP-серверу для последующего обогащения событий информацией об учетных записях.

Перейдите на вкладку Параметры – LDAP-сервер и нажмите на кнопку Добавить параметры для нового тенанта.

image.png

В открывшемся окне выберите Тенант, укажите Интервал обновления в часах и задайте Время хранения данных. Затем нажмите на кнопку Добавить подключение.

image.png

В открывшейся вкладке задайте параметры подключения к LDAP-серверу:

  1. Укажите Название подключения
  2. В поле Секрет добавьте учетную запись пользователя для подключения к серверу Active Directory. Имя пользователя может быть указано в одном из двух форматов: <user>@<domain> или <domain>\<user>
  3. В поле URL укажите адрес одного или нескольких серверов LDAP (через запятую) в формате <hostname или IP-адрес сервера>:<порт>. Для незащищенного и startTLS подключения порт по умолчанию 389, для ssl – 636. В случае использования startTLS или ssl необходимо указывать hostname сервера, если сертификат сервера в поле SAN не содержит IP-адреса сервера.
  4. Выберите Тип подключения.
  5. Если на прошлом шаге был выбран тип ssl или startTLS, добавьте сертификат для проверки подлинности сервера в поле Сертификат. В случае, если для DC используется не самоподписанный сертификат, необходимо импортировать сертификат корневого центра сертификации.
  6. Важно! Сертификат самого DC должен содержать параметр DNS Name в поле SAN, соответствующий доменному имени данного сервера (если в URL был указан hostname сервера) или параметр IP Address в поле SAN, соответствующий IP-адресу данного сервера (если в URL был указан IP-адрес сервера).
  7. Задайте Время ожидания в секундах – период, в течение которого KUMA будет ожидать ответа от сервера контроллера домена.
  8. В поле База поиска (Base DN) укажите базовое отличительное имя каталога, в котором должен выполняться поисковой запрос.
  9. При необходимости укажите Пользовательские атрибуты учетных записей AD, на основе которых вы хотите обогащать события учетными записями.
  10. Убедитесь, что галочка для пункта Выключено снята и нажмите на кнопку Сохранить для сохранения параметров подключения к LDAP-серверу.

image.png

Нажмите на кнопку Сохранить. При необходимости нажмите на кнопку Импортировать учетные записи для немедленного импорта информации об учетных записях в KUMA.

image.png

На данном этапе настройка импорта информации об учетных записях в KUMA завершена. Настройка обогащения событий информацией об учетных записях KUMA рассматривается в следующем разделе.


Настройка LDAP-обогащения

LDAP-обогащение настраивается на уровне коллектора и позволяет наполнить события информацией об учетных записях (атрибутах, импортированных из AD). На основе полученных атрибутов доступно выполнение реагирования AD и KASAP, а также написание правил корреляции по атрибуту memberOf. Остальные атрибуты, импортируемые из AD, служат справочной информацией и используются в расследовании алертов и инцидентов.

Для настройки обогащения, перейдите в коллектор, события с которого необходимо дополнять информацией об учетных записях и перейдите на вкладку Обогащение событий и нажмите на кнопку Добавить сопоставление с учетными записями LDAP.

image.png

Нажмите на кнопку Добавить домен и введите полное наименовение домена в верхнем регистре. В случае, если обогащение было настроено для нескольких доменов, повторите процедуру необходимое количество раз.
В случае, если вы не знаете полного наименования домена для импортированных учетных записей, подключитесь к компоненту Core KUMA по ssh и выполните команду:

/opt/kaspersky/kuma/mongodb/bin/mongo kuma --eval 'accounts.findOne({},{_id:0, domain:1});'

Либо:

/opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma --quiet --eval "db.accounts.findOne({"archived":false},{"domain":1})"

В результате выполнения команды будет выведен домен:

image.png

Команда для ядра в кластере

Выполните команду на CP (Control Plane) для получения полного наименование деплоймента:

k0s kubectl get pods --all-namespaces

Получим следующий вывод:

image.png

Далее выполняем команду для монго в контейнере:

k0s kubectl exec --stdin --tty core-deployment-8659b48bb6-45grz -n kuma -c mongodb -- /bin/sh -c '/bin/mongo localhost/kuma --quiet --eval "db.accounts.findOne({},{_id:0, domain:1});"'

 

Если используется несколько доменов, то можно воспользоваться следующим запросом (выведет список всех доменов):

/opt/kaspersky/kuma/mongodb/bin/mongo kuma --eval 'db.accounts.distinct("domain");' 

Настройте Обогащение полей KUMA на основе атрибутов AD. Для этого выберите Применить сопоставление по умолчанию, либо через кнопку Добавить элемент укажите атрибуты и поля KUMA. 

image.png

Перейдите на вкладку коллектора Проверка параметров и нажмите на кнопку Сохранить и перезапустить сервисы для применения всех настроек.


На этом настройка обогащения LDAP завершена. В следующем разделе будут рассмотрены известные проблемы и пути их решения.


Известные проблемы

С версии KUMA 2.1.3, LDAP идет после других обогащений. Править нормалайзер (что неудобно) не нужно, а достаточно сделать правило обогащения, которое будет заменять EXAMPLE на EXAMPLE.LOCAL (если много разных доменов - можно сделать обогащение через словарь), чтобы все NetBIOS названия менялись на DNS названия доменов.

В некоторых событиях журналов Windows вместо DNS-имени домена может присутствовать NetBIOS-имя домена, которое не будет совпадать с DNS-именем домена, импортированных в KUMA учетных записей. Например, DEMO вместо DEMO.LAB.

Данная проблема решается доработкой нормализатора Windows.

Для этого откройте на редактирование используемый нормализатор Windows и перейдите в Основной парсинг событий – Обогащение.

image.png

Пролистайте раздел до кнопки Добавить обогащение и нажмите ее.

Задайте Тип источника – событие, Исходное поле – SourceNtDomain, Целевое поле – SourceNtDomain и нажмите на значок гаечного ключа рядом с исходным полем.

image.png

Нажмите кнопку Добавить преобразование. Выберите Тип преобразования replaceWithRegexp.

image.png

В левой части, в графе выражение укажите NetBIOS-имя домена в формате ^<NetBIOS-имя>$. В правой части, в графе чем заменить укажите DNS-имя домена. Нажмите кнопку ОК.

image.png

Выполните аналогичные действия для поля DestinationNtDomain.

Сохраните нормализатор и выполните Обновление параметров сервиса для сервиса коллектора Windows.


Проверка работы LDAP-обогащения

Для проверки работы обогащения перейдите на вкладку События и выполните поисковой запрос:

SELECT * FROM `events` WHERE SourceAccountID !='' OR DestinationAccountID!='' ORDER BY Timestamp DESC LIMIT 250

В результате будут выведены события, обогащенные информацией об учетных записях.

image.png

image.png

В случае если проведенные выше действия не обогащают данные перезагрузите службу коллектора и снова проверьте обогащение

Обогащение

GeoIP-обогащение (Геоданными)

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/3.2/ru-RU/233257.htm 

Скачанная и конвертированная база (IP2Location) - https://box.kaspersky.com/f/b961a874400a4a0ab66b/ 

Конвертация mmdb файла базы в CSV для KUMA - https://github.com/KUMA-Community/mmdb2kuma 

Российская база (требуется регистрация) - https://geoip.noc.gov.ru/ 

Скачивание БД

IP2Location

Чтобы скачать базы необходимо зарегистрироваться.  После регистрации и входа на сайт переходим по ссылке:  https://lite.ip2location.com/database-download 
И выбираем нужную нам БД (есть для ipv4 и ipv6) и скачиваем.

image.png

MAXMIND

Скачивание БД также доступно после регистрации. Также при регистрации проверяется соответствие выбранной странны и ip, с которого вы регистрируетесь. При этом при выборе страны отсутствует Россия. Возможно проблему можно решить через VPN.


Конвертация БД

Перед импортом базы ее необходимо конвертировать в формат, понятный KUMA. Для конвертации данных используется скрипт. Актуальный скрипт и команды запуска тут: https://support.kaspersky.com/help/KUMA/2.1/ru-RU/233259.htm 

В простейшем случае команда запуска выглядит так: 
python converter.py --type ip2location --input IP2LOCATION-LITE-DB11.CSV.ZIP --out geoip_ip2location.csv
После запуска нужно подождать 20-30 сек и в случае успешной конвертации получим файл CSV:

image.png


Загрузка БД в KUMA

Загрузка БД (предварительно сконвертированной скриптом!) осуществляется по пути: Settings - Common - GeoIP settings - Import from file

image.png

После добавления БД необходимо перезапустить все сервисы, где настроено обогащение по GeoIP (при выполнении тестов было достаточно выполнить reload, а не restart)

image.png

При импорте нового файла с данными GeoIP ранее добавленные данные перезапишутся (с созданием события аудита). Поэтому если нужно внести незначительные изменения для кастомизации сопоставления рекомендуется скачать текущую БД из интерфейса KUMA, после чего внести туда изменения и подгрузить обратно.

image.png


Обогащение GeoIP

image.png


Сопоставление по умолчанию доступно, если в качестве источника IP выбрано одно из полей событий SourceAddress, DestinationAddress и DeviceAddress. 
При выборе других полей в качестве источника сопоставление по умолчанию не доступно.

image.png

image.png

Далее нужно созданное правило выше закрепить в коллекторе в части обогащения. Пример того, как выглядит обогащенное событие:

image.png


Формат файла CSV:

Network,Country,Region,City,Latitude,Longitude
10.0.0.0/8,Russia,Moscow,Butovo,,
192.168.0.0/16,Russia,SPB,Zelenograd,,

Обогащение

Интеграция CyberTrace с KUMA

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/help/KUMA/3.2/ru-RU/217924.htm

Описание CyberTrace: https://support.kaspersky.ru/datafeeds/about/13850?_ga=2.203307089.1316632250.1728285594-385727687.1689681277 

Ссылка на актуальный дистрибутив CyberTrace : https://support.kaspersky.com/datafeeds/download/15920#block0 

Системные требования для CyberTrace

Минимальные системные требования (обработка ~4K EPS): 8 vCPU; 20 RAM; 200 HDD

Подробнее: https://support.kaspersky.com/help/CyberTrace/4.4/ru-RU/270383.htm 

Для загрузки фидов Лаборатории Касперского нужен доступ до  https://wlinfo.kaspersky.com (TCP/443). Важно: НЕ должен подменяться сертификат (SSL inspection) на периметре при доступе к ресурсу. Для загружки других фидов может потребоваться доступ, в зависимости от их размещения.


Установка CyberTrace на Linux

Распаковать загруженный архив: 

tar -C /opt -xvzf CyberTrace-rpm.tar.gz --no-same-owner

Переход в папку установки:

cd /opt/cybertrace

Учетная запись пользователя, выполняющего установку DEB|RPM-пакета, должна иметь права root.

Запуск скрипта установки:

./run.sh install

Установка CyberTrace выполняется в каталог /opt/kaspersky/ktfs.

После установки DEB|RPM пакета скрипт установки автоматически запускает конфигуратор, в котором нужно прочитать и принять лицензионное соглашение (EULA). После этого выполняется запуск сервисов CyberTrace: cybertrace_db и cybertrace.

Вход в веб-интерфейс по адресу https://<IP_or_Hostname>, УЗ по умолчанию admin / CyberTrace!1

Отключите фаервол на ОС или откройте доступ до нужных портов для работы CyberTrace 

Настройка на стороне CyberTrace

Вход в CyberTrace по: https://<IP_or_Hostname>, пароль по умолчанию: admin / CyberTrace!1

При первом входе после установки CyberTrace появится окно мастера первоначальной настройки (Initial Setup Wizard), в котором необходимо:

image.png

Для завершения первоначальной настройки нажать Close.

После завершения первоначальной настройки рекомендуется изменить пароль администратора, используемый по умолчанию.

Проверить успешность загрузки индикаторов компрометации можно следующим способом:

  1. Перейдите во вкладку Indicators и убедитесь в наличии индикаторов компрометации
  2. Перейдите во вкладку Dashboard -> виджет Supplier statistics и проверьте, что столбец Indicators для каждого фида отличен от 0.

Настройка на стороне KUMA

Начиная с версии 3.2 в KUMA доступно 2 метода интеграции с CyberTrace для потокового обогащения событий данными об индикаторах компрометации:

  1. С использованием API CyberTrace
  2. С помощью Kaspersky CyberTrace Service

Интеграция с использованием API CyberTrace

Данный метод позволяет отправлять большое количество объектов одним запросом на API-интерфейс CyberTrace. Рекомендуется применять в системах с большим потоком (>50k EPS) событий. Производительность Сybertrace-http значительно превосходит показатели прежнего метода cybertrace, который по-прежнему доступен для обеспечения обратной совместимости.

В веб-интерфейсе CyberTrace создайте новую учетную запись пользователя, которая будет использоваться KUMA для подключения к API CyberTrace. Для этого перейдите в раздел Settings -> Users  и нажмите Add new user. В появившемся окне New user укажите следующие параметры:

Нажмите Add.

Далее в веб-интерфейсе KUMA создайте секрет для подключения к API CyberTrace: перейдите в Ресурсы -> Секреты и нажмите Добавить. В появившемся окне укажите следующие параметры:

image.png

Создайте правило обогащения в веб-интерфейсе KUMA: перейдите в Ресурсы -> Правила обогащения и нажмите Добавить. В появившемся окне укажите следующие параметры:

image.png

Пример готового кода для добавления в правило обогащения:

SourceAddress insubnet [
  '10.0.0.0/8',
  '172.16.0.0/12',
  '192.168.0.0/16'
]
AND NOT DestinationAddress insubnet [
  '10.0.0.0/8',
  '172.16.0.0/12',
  '192.168.0.0/16'
]

Указываем поля DestinationHostName | RequestURL и DestinationNtDomain | DestinationDnsDomain, потому что в событии может быть только одно поле из пары. Если есть оба поля, коннектор CyberTrace в KUMA возьмет только уникальное значение и отправит в CyberTrace на анализ

Если объекты (IP, URL, Domain, Hash) расположены в “кастомных” полях, напр., DeviceCustomString1, то можно создать отдельное правило обогащения, в котором в качестве ключевого поля будет указано необходимое "кастомное" поле/поля

Добавьте созданное правило обогащения в параметрах сервиса коллектора (или коррелятора): перейдите в Ресурсы -> Активные сервисы и нажмите на название сервиса коллектора . В появившемся окне Редактирование коллектора перейдите на шаг Обогащение событий и в секции справа нажмите Добавить обогащение.

image.png

В поле Правило обогащения выберите ранее созданное правило обогащения.

image.png

После добавления правила обогащения перейдите на шаг Проверка параметров и нажмите Сохранить и обновить параметры сервисов для применения изменений конфигурации коллектора.

image.png

Интеграция с помощью Kaspersky CyberTrace Service 

Для повышения прозводительности, можно изменять число рабочих процессов коллектора (1 шаг настройки) / самого правила обогащения (для асинхронных задач эффективнее работа)

В KUMA перейдите в раздел Ресурсы - Правила обогащения. Нажмите на кнопку Добавить правило обогащения. В поле URL укажите IP адрес CyberTrace, остальные поля заполните по аналогии со скриншотом ниже. Затем нажмите на кнопку Сохранить.

image.png

Для снижения нагрузки на CyberTrace рекомендуется использовать фильтр на правиле обогащении, пример фильтра из пресейл пака: https://box.kaspersky.com/f/39a48398202543dbb9c9/ 

image.png

Добавьте созданное правило обогащения на нужные коллеторы или корреляторы. Ниже пример добавления в коррелятор.

image.png

После выполнения настроек необходимо сохранить и обновить (можно и перезапустить) параметры ресурса.

image.png


Проверка работы интеграции CyberTrace с KUMA

Подразумевается, что настроена интеграция событий с KSC на KUMA, на хосте, где будет проводиться тест установлен KES с последними обновлениями. Иначе используйте другие системы, с которыми осуществлена интеграция по событиям.

В CyberTrace в разделе Индикаторы, скопируйте любой URL из списка содержимых.

image.png

С хоста, где установлен KES осуществите переход в браузере по ссылке, например - http://www.kasprsky.com/test/wmuf и получите "отбивку" от KES. Через некоторое время появится событие от KSC. В событии будет обращение по вредоносной ссылке с дополнительным контекстом от CyberTrace, пример ниже:

image.png

Сопоставление названия фида и категории https://support.kaspersky.com/help/CyberTrace/5.0/ru-RU/166083.htm 

Количество обнаружений на основе объектов, полученных от KUMA, можно увидеть в дашборде статистики на CyberTrace:

При API интеграции обнариужения и статистика будут отсутствовать

image.png

В качестве упрощенного варианта проверки корректной работы обогащения CyberTrace можно отправить тестовое событие в коллектор с помощью утилиты netcat или утилиты kuma. В примере ниже используется тестовое событие в формате CEF, отправленное средствами netcat.

Для коллектора с транспортом TCP:
nc <IP-адрес> <порт> <<< 'CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|request=<любой URL из вкладки Indicators CyberTrace>'

Для коллектора с транспортом UDP:
nc -u <IP-адрес> <порт> <<< 'CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|request=<любой URL из вкладки Indicators CyberTrace>'

Пример обогащенного события на скриншоте ниже

image.png

Для создания алертов и отслеживания обращений к IP-адресам/доменам/URL, информация о которых есть в фидах CyberTrace, необходимо привязать к коррелятору следующие правила корреляции из SOC Package:

R201_Обнаружено соединение с подозрительным IP-адресом
R202_Обнаружено обращение на подозрительный Domain
R203_Обнаружено обращение на подозрительный URL

Обогащение

DNS-обогащение

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/2.1/ru-RU/217863.htm

Обогащение DNS

DNS обогащение позволяет преобразовывать доменные имена в адреса для следующих полей:

А также преобразовывать адреса в доменные имена для следующих полей:

Важный момент, DNS обогащение работает только для серых сетей

"Cache TTL" в настройках DNS Обогащения (Дефолтовое значение 60 сек), работает следующим образом:

Поле настройки URL - не обязательно. Если оставить пустым, то при обогащении будут использоваться системные настройки сервера. Соответственно, если DNS в ОС серверов коллекторов разные - то и обогащение будет разное


Настройка на стороне KUMA

Для повышения прозводительности, можно изменять число рабочих процессов коллектора (1 шаг настройки) / самого правила обогащения (для асинхронных задач эффективнее работа)

В разделе Ресурсы - Правила Обогащения создаем новое правило, ниже пример типового обогащения для DNS:

image.png

Далее нужно созданное правило выше закрепить в коллекторе в части обогащения.

Обогащение

Обогащение событий информацией об Активах

Активы могут попасть в KUMA следующими способами:

Коллекторы KUMA с периодически получают списки асcетов (активов) от ядра KUMA и хранят их памяти в виде таблиц, позволяющих определить AssetID по IP адресу и/или FQDN.

У ассета может быть указан массив значений IP и/или FQDN. Обогащение проверяет все IP ассета и/или FQDN.

Про склейку информации об активах, подробнее тут: https://support.kaspersky.com/help/KUMA/3.2/ru-RU/243031.htm 

При поступлении события в коллектор, коллектор выполняет:

После чего события, обогащенные информацией об ассетах направляются в коррелятор и/или хранилище.

Пример обогащенного события (при нажатии открывается карточка актива):

image.png

Правила обогащения информацией об активах

Информация в событии Информация в карточке актива Будет ли обогащение
IP IP + FQDN Да
FQDN IP + FQDN Да
IP + FQDN IP + FQDN Да
IP IP Да
FQDN IP Нет
IP + FQDN IP Нет
IP FQDN Нет
FQDN FQDN Да
IP + FQDN FQDN Да
Обогащение

Обогащение произвольного поля с утилитой Tracer

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

image.png

Утилита (скрипт) была написана для получения возможности обогощать событие по значению поля со сторонних систем с использованием языка программирования Python3. Tracer.py мимикрирует под механизм обогащения аналогично CyberTrace, с обогащенными данными можно работать подобно обогащению Threat Intelligence. Утилита может работать как на Linux (рекомендуется), так и Windows платформах (ОС).

Для продвинутых пользователей! Для работы с Tracer.py требуются навыки программирования Python3

Скрипт можно загрузить по ссылке в Пресейл-Паке контенте.

Необходимые библиотеки для работы Tracer.py:

  • import socket
  • from select import select
  • from signal import signal
  • from sys import platform
  • from re import match
  • from datetime import datetime
  • from dateutil.relativedelta import relativedelta

Для использования TCP_FASTOPEN (рекомендуется) на ОС Linux выполните команду ниже:

echo 3 > /proc/sys/net/ipv4/tcp_fastopen

Предварительные правки для Tracer.py:

На стороне KUMA нужно прописать следующее обогащение:

image.png

По картинке выше, обогащается значение поля Code и сопоставляется с полем Tracer - url. Производительность скрипта состовляет ~ 50 EPS, при рекомендуемой настройке Enrichment: 50 connections и 100 RPS.

Возможно использовать только поле url в сопоставлении, но туда можно поместить произвольные данные

При обогащении события получаем следующие обогащенные данные:

image.png

Так как используется "нелегальный" механизм обогащения в логах коллектора копятся (периодически очищайте) ошибки следующего вида:

image.png

Реагирование

Реагирование

Описание готовых интеграций по реагированию

Весь актуальный и новый контент с описанием добавляется в GitHub - https://github.com/KUMA-Community 

Реагирование из коробки KUMA

Реагирование на KES через KSC:
Реагирование KEDR:
Реагирование KICS Networks:
Реагирование AD (с версии KUMA 2.1):
Реагирование Kaspersky Automated Security Awareness Platform (KASAP) – это платформа для онлайн-обучения:

Готовые скрипты (описание)

Telegram Response:
Telegram Response Advanced: 
  • Оповещения об алерте в телеграм канале
  • Бот позволяет закрывать алерты по кнопке, создавать резервную копию и выполнять команды ssh на KUMA.
UserGate Response:
KEDR Response (script):
AD Response:
KWTS Response:
KSMG Response (по запросу):
KUMA:
  • Защита от брутфорса интерфейса KUMA
Cisco ASA Firewall:
BIFIT Mitigator:

Реагирование

Запуск скрипта коррелятором

Интерпретатор скрипта должен поддерживаться ОС на которой находится скрипт.

Для того чтобы коррелятор мог запускать скрипты.  Зайти по ssh на сервер где находится служба коррелятора и поместите скрипт (можно сделать с помощью WinSCP или любым другим инструментом) в следующую папку коррелятора:

/opt/kaspersky/kuma/correlator/<id>/scripts/

<id> - идентификатор коррелятора, можно найти в веб-интерфейсе (подробнее как это сделать ссылка)

Назначьте пользователя kuma владельцем файла и дайте файлу права на выполнение:

chown kuma:kuma /opt/kaspersky/kuma/correlator/<id>/scripts/my_script.sh
chmod +x /opt/kaspersky/kuma/correlator/<id>/scripts/my_script.sh

В группирующем поле правила корреляции должны находиться целевые поля, которые используются в правилах реагирования, в нашем примере это DestinationAddress.

image.png

В правиле реагирования рекомендуется добавить в условие (если необходимо) правило корреляции, на основе которого реагирование будет срабатывать:

image.png

После внесения изменений в ресурсах (правила корреляции или реагирования) необходимо обноить параметры коррелятора в активных сервисах

Реагирование

Настройка автоматического реагирования KUMA с помощью задач KSC

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/2.1/ru-RU/217923.htm

Сценарий демонстрации

Предлагается следующий сценарий для демонстрации возможностей по автоматическому реагированию с помощью задач на KSC:


Настройка на стороне KSC

Создать внутреннего пользователя на KSC с необходимыми правами подробнее тут.

Создать задачу поиска вирусов для KES либо обновления баз. В KUMA механизм автоматического реагирования работает только для KES.

image.png

В целях тестирования можно уменьшить область поиска. В дальнейшем эту настройку можно изменить.

image.png

Выполнить настройки задачи, как на рисунке ниже:

image.png

Для создания задачи нужно указать любое устройство. При автоматическом запуске задачи KUMA будет передавать хосты, на которых нужно запустить задачу.

Затем нужно выбрать учетную запись и Настроить запуск задачи вручную.

image.png

Важно в названии задачи сделать префикс «KUMA». Задачи для KES с этим префиксом будут доступны в интерфейсе KUMA. В нашем случае создаем задачу «KUMA Поиск вирусов».

image.png

Завершить создание задачи.


Настройка на стороне KUMA

Настроить интеграцию с KSC. При настройке «секрета» использовать учетную запись KSC, созданную на предыдущем шаге.

image.png

Далее можно убедиться, что поступают новые события аудита от KSC - подключен пользователь с адреса KUMA.

image.png

акже на этом шаге важно убедится, что значение в поле DestinationHostName записывается в виде полного доменного имени FQDN.

image.png

Если это не так и значение записывается в виде hostname без доменной части, то необходимо настроить нормализацию.
Для этого открыть нормализатор KSC.

image.png

Настроить преобразование для поля DestinationHostName перед сохранением события

image.png

image.png

Сохранить нормализатор и обновить параметры коллектора.
Проверить, что значение DestinationHostName в новых событиях сохраняются в виде FQDN.


Подготовка ресурсов KUMA

Далее необходимо создать правила корреляции и реагирования. Это можно сделать вручную либо импортировать ресурсы из файла (Демонстрационный). Данная инструкция с импортом ресурсов.

Файл ресурсов можно скачать по ссылке: https://box.kaspersky.com/f/a84686dbb6b3404987ff/ Пароль: KLaapt-M1 (вводится в интерфейсе KUMA при импортировании)

Для сработки правила реагирования необходимо добавить в наследуеме поля правила корреляции поле DestinationAssetID

image.png

image.png

Привязать правило корреляции к коррелятору:

image.png

Привязать правило реагирования к коррелятору.

image.png

Сохранить настройки и перезапустить коррелятор.

image.png


Проверка автоматического реагирования

На защищаемом устройстве эмулировать вирусное заражение с помощью eicar. Получено событие от KSC «Обнаружен вредоносный объект».

image.png

Создано корреляционное событие «[KES] Обнаружен вредоносный объект».

image.png

Получены события подключения KUMA к KSC – события аудита.

image.png

Получены события о выполнении задачи поиска вирусов на KSC.

image.png

В KSC присутствуют события обнаружения вируса, подключения KUMA, выполнения задачи поиска вирусов.

image.png

Реагирование

Блокировка адресов при помощи Cisco ASA Firewall на основе сработок алертов

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Данный скрипт добавлен пользователем KUMA Community и предоставляется AS IS без каких-либо гарантий и ответственности.

В нашем случае мы при помощи правила корреляции, на основе логов веб-сервера Apache, блокируем входящий трафик от внешних адресов.

Для настройки реагирования средствами Cisco ASA (блокировки IP адресов) (пример, при подключении по SSH) необходимо:

  1. Авторизоваться на ASA с привилегиями, позволяющими переходить в режим конфигурирования, отправить команду
    conf t
  2. Создать объект, в который наш скрипт будет добавлять адреса (черный список), назовём его BLACKLIST. Создаём командой 
    object network BLACKLIST
  3. На ASA создаём access-list, который будет блокировать входящие сетевые соединения из интернета от IP находящихся в нашем объекте. Пример:
    access-list INTERNET extended deny ip object-group BLACKLIST any

Настройка на стороне KUMA

  1. В группирующем поле правила корреляции должны находиться целевые поля, которые используются в правилах реагирования, в нашем примере это sourceAddressimage.png
  2. В "селекторы" и "действия" задаём необходимые в данном кейсе параметры.
    Обязательно добавить обогащение событие EventOutcome (как указано на скриншоте), это ключ (триггер) для следующего этапа по запуску правила реагирования.

    image.png

  3. Размещаем скрипт (находится в папке пресейл-пака) предварительно заменив ключевые данные в скрипте, а именно:ip asa, login, password с правами, необходимыми для добавления в объект BLACK (см. выше, этап настройки ASA)
  4. Скрипт помещаем на сервере(-ах) по пути 
    /opt/kaspersky/kuma/correlator/<id>/scripts/ и предоставляем права пользователю kuma, чтобы служба имела достаточные права для запуска скрипта, командами:
    chown kuma:kuma /opt/kaspersky/kuma/correlator/<id>/scripts/asa.py
    chmod +x /opt/kaspersky/kuma/correlator/<id>/scripts/asa.py

  5. Данный этап индивидуален и зависит конкретно от Вашего экземпляра ОС, возможно будут дополнительные ошибки при запуске скрипта, для проверки скрипт можно запускать вручную с сервера и проверять работоспособность

    Также на сервер коррелятора в pip3 необходимо до установить следующие библиотеки, для возможности запуска python3.*

    threading
    paramiko
    sys
    argparse
    subprocess

    команда:
    pip3 install threading paramiko sys argparse subprocess
  6. Создаём правило реагирования, которое будет непосредственно запускать скрипт на коллекторе (шаг 4)

    image.png

    ключевое, задаём Название скрипта, который мы перенесли на сервер коррелятора (шаг 4), также аргументы скрипта, как на скриншоте и ключевое поле EventOutcome = BLOCK (добавляется при срабатывании алерта, при помощи обогащения) (указано как пример, можно задать списком и другими полями).
  7. Осталось привязать новое правило корреляции. Привязываем к коррелятору. 
    Ресурсы -> Корреляторы -> Выбираем наш -> Корреляция, привязать (на скриншоте)

    image.png


  8. Также необходимо здесь же добавить правило реагирования

    image.png

  9. Готово, сохраняем и рестартуем коррелятор (ы)
Реагирование

Отправка уведомления в телеграм-бот

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Настройка Telegram

1. В Telegram находим бота: https://t.me/BotFather

2. Запускаем командой /start

image.png

3. Создаем нового бота командой /newbot

4. Вводим желаемое имя и логин бота (должен заканчиваться словом bot). В данном примере имя бота "KUMA DEMO" и логин бота "kumademo_bot".

image.png

5. По завершении получаем токен для обращения к боту и ссылку на него

image.png

6. Если планируется использовать бота в группе, а не в личных сообщениях, то необходимо изменить настройки приватности. Для этого вводим /mybots, выбираем своего бота из списка, выбираем Bot Settings, Group Privacy и выбираем Turn off. После этого бот сможет отправлять сообщения в группах.

7. Далее переходим в своего бота по ссылке полученной от BotFather и выполняем команду /start для запуска бота.

8. Для отправки сообщения отдельному пользователю необходимо начать диалог с ботом, а также узнать chat_id этого пользователя. Чтобы узнать chat_id пользователя заходим в бота https://t.me/getmyid_bot и вводим команду /start. Полученное значение chat_id потребуется в дальнейшем для отправки сообщений ботом

image.png

9. Чтобы отправлять сообщение ботом в группу необходимо узнать chat_id этой группы. Для этого в созданную группу необходимо пригласить бота https://t.me/getmyid_bot и он выведет chat_id группы (в поле Current chat ID), который потребуется в дальнейшем для отправки уведомлений. После получения id бота нужно удалить из группы.

10. Теперь можно отправить тестовое сообщение боту набрав в строке браузера команду:

https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text=test

Подставив вместо <token> и <chat_id> значения полученные ранее. В результате в личном чате или группе (в зависимости от выбранного способа) должно появиться уведомление, а в ответе браузера JSON не должен содержать ошибок.

image.png

11. После проверки работоспособности бота можно переходить к настройке отправки уведомлений.


Скрипт уведомления

1. Создайте скрипт уведомления

В простейшем виде скрипт отправки уведомления выглядит следующим образом:

#!/bin/bash
set -eu
CHAT_ID=<chat_id из п.8-9 предыдущего раздела>
TG_TOKEN=<token из п.5 предыдущего раздела>
RULE=$1
TEXT="Произошла сработка правила <b>$RULE</b>"
curl --data-urlencode "chat_id=$CHAT_ID" --data-urlencode "text=$TEXT" --data-urlencode "parse_mode=HTML" https://api.telegram.org/bot$TG_TOKEN/sendMessage

В случае, если у сервера коррелятора отсутствует прямой доступ в Интернет, скрипт можно модифицировать добавив адрес прокси-сервера для доступа в Интернет

#!/bin/bash
set -eu
CHAT_ID=<chat_id из п.8-9 предыдущего раздела>
TG_TOKEN=<token из п.5 предыдущего раздела>
RULE=$1
TEXT="Произошла сработка правила <b>$RULE</b>"
PROXY=<адрес и порт прокси-сервера>
curl --proxy $PROXY --data-urlencode "chat_id=$CHAT_ID" --data-urlencode "text=$TEXT" --data-urlencode "parse_mode=HTML" https://api.telegram.org/bot$TG_TOKEN/sendMessage
Еще один вариант скрипта

Еще один вариант скрипта, когда в качестве аргумента передаем следующие поля "{{.Timestamp}} | {{.Name}} | {{.DeviceHostName}}":

#!/bin/bash

set -eu

CHAT_ID=<chat_id из п.8-9 предыдущего раздела>
TG_TOKEN=<token из п.5 предыдущего раздела>

RULE=$1

# writing local log of arguments 
echo $(date +"%d-%m-%Y %T.%3N") - $RULE >> /opt/kaspersky/kuma/correlator/0b9200ae-d5a9-41ce-bf7b-c16814ed9524/scripts/bot.log

# escaping spec characters in argument except \s \| 
RULE=$(echo $RULE | sed 's/[][\~`!@#$%^&*()=+{};:'"'"'"<>/?-]/\\&/g')

#try to beautify alert if arg is like "{{.Timestamp}} | {{.Name}} | {{.DeviceHostName}}"
{
    TIME=$(date -d @$(($(echo $RULE | cut -d "|" -f 1)/1000)))
    NAME=$(echo $RULE | cut -d "|" -f 2)
    HOST=$(echo $RULE | cut -d "|" -f 3)
    TEXT="⚠️Алерт %0AПравило: <b>$NAME</b> %0AВремя: $TIME %0AХост: $HOST"
} || {
#else if can't beautify
    TEXT="⚠️Алерт %0AПравило: <b>$NAME</b> %0"    
}
    curl -XPOST "https://api.telegram.org/bot$TG_TOKEN/sendMessage?chat_id=$CHAT_ID&text=$TEXT&parse_mode=html"

Получаем алерт вида:

image.png

2. Поместите скрипт в папку коррелятора, уведомления о сработках которого необходимо отправлять через телеграм-бот

Путь для размещения скрипта

/opt/kaspersky/kuma/correlator/<id>/scripts/

<id> - идентификатор коррелятора, можно найти в веб-интерфейсе (ссылка)

3. Назначьте пользователя kuma владельцем файла и дайте файлу права на выполнение

chown kuma:kuma /opt/kaspersky/kuma/correlator/<id>/scripts/bot.sh
chmod +x /opt/kaspersky/kuma/correlator/<id>/scripts/bot.sh

Настройка KUMA

1. В веб-интерфейсе KUMA перейдите на вкладку Resources, выберите Response и нажмите на кнопку Add Response.

2. Задайте параметры правила реагирования

3. Далее перейдите в настройки коррелятора, который будет выполнять реагирование  На вкладке Response нажмите Add и из выпадающего списка выберите созданное ранее правило реагирования.

image.png

4. Обновите параметры сервиса коррелятора

5. Результат работы скрипта представлен ниже

image.png

Реагирование

Реагирование на BIFIT Mitigator

Данный скрипт добавлен пользователем KUMA Community и предоставляется AS IS без каких-либо гарантий и ответственности.

Описание

Скрипт позволяет осуществить временную блокировку трафика (tbl) в политике, которая подпадает под указанные параметры (src_ip, dst_ip, src_port, dst_port, protocol) или же в указанной политике.  


Аргументы

--server указываем ip адрес сервера, можно захаркодить в скрипте в hostnames = ['x.x.x.x', 'y.y.y.y'] # Вставить список хостов 
--user указываем имя пользователя, можно захаркодить в скрипте в user = 'login' # Заменить логин
--password указываем имя пользователя, можно захаркодить в скрипте в passwd = 'passwd' # Заменить пароль
--policy указываем policy_id, если известно заранее
-s, --ip_src IP адрес источника для блокировки
-d, --ip_dst IP адрес назначения для блокировки
-t, --time время на которое будет заблокирован трафик
-p, --port_src Порт источника для блокировки
-o, --port_dst Порт назначения для блокировки
-P, --protocol Протокол для блокировки


Правило реагирования

image.png


Скрипт

Скрипт на языке python доступен под спойлером

mitigator_block.py
#!/bin/python3

import argparse
import json
import ssl 
import sys


if sys.version_info >= (3, ):
        from urllib.request import Request, urlopen
        from urllib.error import HTTPError
else:
        from urllib2 import Request, urlopen, HTTPError

class RequestEx(Request):
    def __init__(self, *args, **kwargs):
        self._method = kwargs.pop('method', None)
        Request.__init__(self, *args, **kwargs)

    # 'add_data(str)' removed in Python 3.4 in favour of 'Request.data: bytes'
    def add_data(self, data):
        if hasattr(self, 'data'):
            self.data = data.encode('utf-8')
        else:
            Request.add_data(self, data)

    # Request.method was added in Python 3.3
    def get_method(self):
        return self._method if self._method else Request.get_method(self)
    
class MitigatorException(BaseException):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return self.message
    
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--server', help='Mitigator host')
    parser.add_argument('--user', help='Mitigator login')
    parser.add_argument('--password', help='Mitigator password')
    parser.add_argument('--policy', help='policy ID (as shown in URL)')
    parser.add_argument('--no-verify', help='disable TLS certificate validation', action='store_true')
    parser.add_argument('-s', '--ip_src',  required=True, help='IP address to block')
    parser.add_argument('-d', '--ip_dst', required=True, help='IP address to block')
    parser.add_argument('-t', '--time', required=True, help='block time in seconds', type=int)
    parser.add_argument('-p', '--port_src',  help='Port src to block', type=int)
    parser.add_argument('-o', '--port_dst',  help='Port dst to block', type=int)
    parser.add_argument('-P', '--protocol',  help='Protocol to block')
    return parser.parse_args()

def make_request(hostname, uri, method=None, token=None, policy=None, data=None, parameters=None):

    url = f'https://{hostname}/api/v4/{uri}'

    if parameters is not None:
        url = f'https://{hostname}/api/v4/{uri}?{parameters}'

    request = RequestEx(url, method=method)
    if token is not None:
        request.add_header('X-Auth-Token', token)
    if data is not None:
        request.add_data(json.dumps(data))
   
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE
    ctx = ctx
    try:
        response = urlopen(request, context=ctx)
    except HTTPError as e:
        try:
            raise MitigatorException(e.fp.read())
        except IOError:
            raise e
    return json.load(response)['data']


def block_traffic(hostname, token, options, policy_id):
#Вносим во временную блокировку ip адрес
    if policy_id:
        tbl_install = make_request(hostname, 
                                f'tbl/items?policy={policy_id}&no_logs=false&source=1', 
                                token=token, 
                                method='POST', 
                                data={
                                        "items": [
                                            {
                                                "prefix": options.ip_src,
                                                "ttl": options.time
                                            }
                                        ]
                                    } )
        tbl_install_check = make_request(hostname, f'tbl/list?policy={policy_id}', token=token, method='GET')


def search_policy(hostname, token, options):
    data_request = ''
    if options.ip_src is not None:
        data_request += f'src_address={options.ip_src}'
    if options.ip_dst is not None:
        data_request += f'&dst_address={options.ip_dst}'
    if options.port_src is not None:
        data_request += f'&src_port={options.port_src}'
    else:
        data_request += '&src_port=88' # обязательный параметр при запросе policy_id, но в политике может быть не настроен, подставляем произвольный
    if options.port_dst is not None:
        data_request += f'&dst_port={options.port_dst}'
    else:
        data_request += '&dst_port=88' # обязательный параметр при запросе policy_id, но в политике может быть не настроен, подставляем произвольный
    if options.protocol is not None:
        data_request += f'&protocol={options.protocol}' 
    else:
        data_request += '&protocol=TCP' # обязательный параметр при запросе policy_id, но в политике может быть не настроен, подставляем произвольный
    policy_request = make_request(hostname, f'policies/by_inbound_packet', token=token, method='GET', parameters=data_request)
    policy_id = policy_request.get('policy_id')
    return policy_id  

if __name__ == '__main__':
    options = parse_args()
    if options.server is not None:
        hostnames = [options.server]
    else:
        hostnames = ['x.x.x.x', 'y.y.y.y'] # Заменить список хостов 
    if options.user is not None:
        user = options.user
    else:
        user = 'user' # Заменить логин
    if options.password is not None:
        passwd = options.password
    else:
        passwd = 'passwd' # Заменить пароль
    
    for host in hostnames:
        url_prefix = f"https://{host}/api/v4"
        try:
            data = make_request(host, 'users/session', data={'username': user, 'password': passwd})
            token = data['token']
            if options.policy is None:
                policy_id = search_policy(host, token, options)
                block_traffic(host, token, options, policy_id)
            else:
                block_traffic(host, token, options, options.policy)
        except:
            continue 

Реагирование

Отправка уведомления в телеграм-бот со ссылкой на KATA и KUMA

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Данный сценарий рекомендуется использовать только в демонстрационных целях!
Правило корреляции из данного сценария написано с широким фильтром и на боевой инсталляции может генерировать большое число алертов!

Настройка Telegram

Настройки Telegram-бота, а также инструкции по импорту скрипта на коррелятор приведены в соответствующей статье 


Скрипт уведомления

Скрипт отправки уведомления выглядит следующим образом:

#!/bin/bash
set -eu
CHAT_ID=<id чата>
TG_TOKEN=<токен>
KUMA_ASSETS="https://<KUMA_ADDR>:7220/assets/all?asset="
TEXT="В KATA обнаружен TAA-детект <b>$1</b> на хосте <a href='$KUMA_ASSETS$3'>$2</a>.%0AАлерт KATA доступен по <a href='$4'>ссылке</a>"

curl --data-urlencode "chat_id=$CHAT_ID" --data "text=$TEXT" --data-urlencode "parse_mode=HTML" https://api.telegram.org/bot$TG_TOKEN/sendMessage

Для работы скрипта необходимо задать следующие параметры:

Поместите скрипт в папку коррелятора, уведомления о сработках которого необходимо отправлять через телеграм-бот


Настройка KUMA

Для реализации предложенного сценария необходимо:

1. Импортировать в систему пакет ресурсов по ссылке

Состав и пароль от пакета ресурсов

Пароль для импорта: Qwerty123!

Состав пакета:

image.png

2. На коллекторе для сбора событий KATA применить правило обогащения из пакета KATA alert (или коробочный аналог [OOTB] Kata Alert)

3. На коррелятор привязать правило корреляции [KATA] Обнаружен TAA-детект

4. На коррелятор привязать правило реагирования [DEMO] Telegram -2

5. Выполнить обновление параметров сервисов коллектора и коррелятора.


Результат работы скрипта

1. Когда КАТА возводит алерт по ТАА-правилам, в KUMA срабатывает правило корреляции. 
2. Корреляционное событие этого правила триггерит правило реагирования. 
3. По правилу реагирования запускается скрипт отправки уведомлений в Телеграм.

Уведомление в телеграм содержит наименование TAA-детекта, FQDN-хоста, на котором была обнаружена активность (со ссылкой на активы KUMA), ссылку на соответствующий алерт в KATA.

Пример уведомления

image.png


Реагирование

Интеграция по реагированию KUMA и KEDR

Настройки на KUMA

На стороне KUMA. Если мы не хотим делать отдельные интеграции разделенные по Тенантам (подходит для MSSP), а одну общую интеграцию с KEDR, то нужно убрать галочку Распределенное решение:

image.png

Задаем Адрес сервера и Порт, затем создаем Секрет для подключения к KEDR:

image.png

Придумайте название Секрета и сгенерируйте закрытый ключ нажав на значок Загрузки.

image.png

Распакуйте архив, затем загрузите Открытый ключ (cert.pem) и Закрытый ключ (key.pem).

image.png

Нажмите кнопку Сохранить для сохранения Секрета.

Затем снова на кнопку Сохранить для сохранения настроек Интеграции с KEDR.

image.png

Настройки на KEDR

На стороне KEDR нужно залогинться из под УЗ (с пролью администратора), по умолчанию это Administrator, перейти в раздел Внешние системы. Необходимо принять запрос от внешней системы (Внешний ID в настройках интеграции KUMA Должен совпадать с ID внешней системы в KEDR).

image.png

Для удобства можно задать имя внешней системы в KEDR:

image.png

Интеграция завершена.

image.png

Логирование работы с API на стороне CN (Central Node)

Зайти по ssh на сервер KATA/KEDR CN и выполнить команду:

[root@kata-cn-4 ~]# cat /var/log/kaspersky/apt-history/apt-history.log
2022-01-11 09:34:06.419690 info apt-history: EXTERNAL_SYSTEM=TEST_KUMA REQUEST_TIMESTAMP=2022-01-11T09:34:06.418883: network isolation SET: host=14b22842-33d6-d3ef-3789-ef5108d6d411 rule={"autoTurnoffTimeoutInSec":180}
2022-01-11 09:36:15.200333 info apt-history: EXTERNAL_SYSTEM=TEST_KUMA REQUEST_TIMESTAMP=2022-01-11T09:36:15.199826: network isolation DELETED: host=14b22842-33d6-d3ef-3789-ef5108d6d411

Реагирование

Реагирование на KICS Networks с помощью скрипта

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

В связи с ограничениями коробочного реагирования с KICS Networks (возможность выбора полей только *AssetID) в KUMA 2.х версиях был разработан скрипт, который может использовать произвольное поле, где находится UUID актива в KUMA.

Скрипт реагирования можно загрузить из Пресейл-Пак контент из соответсвующей папки.

Для попадания событий изменения категорий предварительно нужно настроить аудит активов, подробнее можно посмотреть тут. Вот так выглядит аудита активов (при ручном или любом другом типе добавления в категорию):

image.png

Далее необходимо создать правило корреляции, которое будет менять статус KICS for Networks на неразрешенное при добавлении в категорию, например Main/Categorized assets/KICS-NET/unwanted. Оно будет выглядеть так (необходимо пробросить поле DeviceExternalID в групирующие поля):

image.png

Пример сработки правила корреляции:

image.png

Далее нужно создать (либо загрузить из Пресейл-Пака) правило реагирование которое будет запускать скрипт из Пресейл-Пака, правило должно выглядеть следующим образом:

image.png

Скрипт необходимо загрузить и выгрузить на коррелятор и выполнить действия по этой статье.

В результате правило корреляции и реагирование нужно добавить в коррелятор и обновить его параметры. ТАким образом получим, что при перемещении актива в определенную категорию (например Активным способом по подсети), автоматом эти активы будут помечаться недоверенными.

Активы

Добавление активов в KUMA различными способами

Активы

Интеграция KUMA с KSC

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/2.1/ru-RU/217923.htm 

Интеграция KUMA с KSC позволяет получить активы и данные по ним, которыми управляет KSC, возможность запуска задач реагирования, перемещение активов между группами KSC, закрытие уязвимостей (при наличии лицензии от Kaspersky Endpoint Security для бизнеса Расширенный и выше) из интерфейса KUMA.

Для интеграции необходимо заранее создать учетную запись (внутреннего пользователя) в KSC:

image.png

Допускается также использовать доменную учетную запись пользователя для интеграции KUMA с KSC. Учетная запись пользователя в секрете KUMA указывается в формате: username@domain

Если на KSC включено MFA, то нужно сделать исключение для учетки KUMA. Согласно этой инструкции: https://support.kaspersky.com/help/KSC/14.2/ru-RU/211462.htm 

В дополнение к исключению MFA для интеграционной УЗ KUMA можно настроить список адресов, с которых разрешено подключение к KSC: https://support.kaspersky.com/KSC/14.2/ru-RU/231374.htm 

Созданной учетной записи необходимо назначить определенный набор прав доступа к функциям Kaspersky Security Center. Это можно сделать одним из следующих способов:

Перечень минимальных прав представлен на рисунке ниже. Данный набор прав позволяет:

image.png

Права пользователю нужно выдавать не только в свойствах KSC, но и в свойствах групп управляемых устройств, убедитесь, что не отключено наследование, чтобы права корректно распространялись на подгруппы

На стороне KUMA необходимо указать адрес и порт 13299 (этот порт используется по умолчанию), а также УЗ, о которой говорилось выше.

image.png

При нажатии в KUMA на кнопку "Сохранить", не должно всплавать сообщений об ошибке.

Если при выгрузке, отсутствует какая-либо группа или возникает ошибка - убедитесь, что включено наследование параметров сервера в каталогах и отсутсвуют "мертвые души" в иерархии

Активы

Импорт активов из KATA/NDR

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Данная инструкция предназначена строго для версии KATA/NDR 7.0.

Данная инструкция предназначена для импорта информации об активах, полученной KATA/NDR в KUMA.

Настройка KATA/NDR

Для настройки пересылки событий из KATA/NDR в SIEM KUMA необходимо выполнить следующие действия:

1. Перейти в веб-консоль KATA/NDR из-под учетной записи Администратора

2. Перейти в раздел Параметры Коннекторы и нажать на кнопку Добавить коннектор

image.png

3. В открывшемся окне настроить параметры интеграции с KUMA:

Тип коннектора
: KUMA;
Имя коннектора: произвольное название, например, KUMA;
Пароль доступа к сертификату коннектора: задайте пароль для файла свертки;
Пароль (повторно): повторите введенный ранее пароль;
Адрес сервера: Адрес CN KATA/NDR;
Узел размещения коннектора: Адрес сервера в кластере KATA/NDR для размещения коллектора (в случае Single node будет совпадать с предыдущем пунктом);
Пользователь программы: выбрать нужного из выпадающего списка.

image.png

3. По завершении заполнения необходимых полей нажать кнопку Сохранить.

В результате будет загружен архив, а также в интерфейсе KATA/NDR созданный коннектор перейдет в состояние Работает.

image.png


Настройка KUMA

Перейдите в веб-интерфейс KUMA на вкладку Параметры - KICS/KATA и задайте параметры интеграции:

Выключено: галочка должна быть снята для работы интеграции;
Тенант: выберите необходимый тенант из выпадающего списка;
Включить реагирование: требуется для изменения статуса устройств;
Файл свертки: загрузите архив, полученный при настройке на стороне KATA/NDR;
Пароль файла свертки
: укажите пароль от архива, заданный при настройке на стороне KATA/NDR;

image.png

По окончании настройки нажмите кнопку Сохранить.


Активы

Nessus и OWASP ZAP

В KUMA можно импортировать сведения об активах из отчетов о результатах сканирования устройств с помощью Nessus, OWASPZAP, системы контроля защищенности и соответствия стандартам. Импорт происходит через API с помощью утилиты import_asset_Nessus_OWASP.py (скрипт находится в Пресейл-Пак в папке Assets [ссылка доступна из Дисклеймера]). Импортированные активы отображаются в веб-интерфейсе KUMA в разделе Активы. При необходимости вы можете редактировать параметры активов.

Предварительные настройки в KUMA

Создайте пользователя с ролью главный администратор со следующими правами доступа для API:

image.png

Сохраните настройки, сгенерируйте токен и отдельно сохраните его, например, в каком-либо текстовом редакторе. Нажмите Сохранить.

Добавьте дополнительнео поле с названием «Description» в разделе Параметры - Активы - Пользовательские атрибуты.

image.png

Сохраните изменения.

Импорт отчета от Nessus

Пример отчета от Nessus в формате CSV:

Plugin ID,CVE,CVSS v2.0 Base Score,Risk,Host,Protocol,Port,Name,Synopsis,Description,Solution,See Also,Plugin Output,STIG Severity,CVSS v3.0 Base Score,CVSS v2.0 Temporal Score,CVSS v3.0 Temporal Score,VPR Score,Risk Factor,BID,XREF,MSKB,Plugin Publication Date,Plugin Modification Date,Metasploit,Core Impact,CANVAS
"70658","CVE-2008-5161","2.6","Low","1.2.3.9","tcp","22","SSH Server CBC Mode Ciphers Enabled","The SSH server is configured to use Cipher Block Chaining.","The SSH server is configured to support Cipher Block Chaining (CBC)encryption.  This may allow an attacker to recover the plaintext messagefrom the ciphertext.Note that this plugin only checks for the options of the SSH server anddoes not check for vulnerable software versions.","Contact the vendor or consult product documentation to disable CBC modecipher encryption, and enable CTR or GCM cipher mode encryption.","","The following client-to-server Cipher Block Chaining (CBC) algorithmsare supported:3des-cbcaes128-cbcaes192-cbcaes256-cbcblowfish-cbccast128-cbcThe following server-to-client Cipher Block Chaining (CBC) algorithmsare supported:3des-cbcaes128-cbcaes192-cbcaes256-cbcblowfish-cbccast128-cbc","","","1.9","","2.5","Low","32319","CERT:958563;CWE:200","","2013/10/28","2018/07/30","","",""

Далее необходимо хапустить скрипт import_asset_Nessus_OWASP.py по этому отчету указав необходимые параметры для его корректного запуска. Возможные опции скрипта:

# python import_asset.py --help
usage: import_asset.py [-h] --kuma KUMA --token TOKEN --tenant TENANT --vendor {Nessus,OWASPZAP} --filepath FILEPATH

options:
  -h, --help                  show this help message and exit
  --kuma KUMA                 IP адрес сервера KUMA
  --token TOKEN               Токен API
  --tenant TENANT             Имя Тенанта
  --vendor {Nessus,OWASPZAP}  Наименование вендора
  --filepath FILEPATH         Путь до отчета

Пример запуска по отчету Nessus:

python3 import_asset_Nessus_OWASP.py --kuma 10.68.85.126 --token 98417b064c2a5cdfdf6bd011126c6453 --tenant  Main --vendor Nessus --filepath C:\Users\ose\Downloads\nessus.csv

В KUMA актив будет выглядит следующим образом:

image.png

Импорт отчета от OWASP ZAP

Пример отчета от Nessus в формате CSV:

{
    "@programName": "OWASP ZAP",
    "@version": "2.13.0",
    "@generated": "Mon, 25 Sep 2023 11:43:20",
    "site": [
        {
            "@name": "https://demo.lab",
            "@host": "demo.lab",
            "@port": "443",
            "@ssl": "true",
            "alerts": [
                {
                    "pluginid": "10035",
                    "alertRef": "10035",
                    "alert": "Strict-Transport-Security Header Not Set",
                    "name": "Strict-Transport-Security Header Not Set",
                    "riskcode": "1",
                    "confidence": "3",
                    "riskdesc": "Low (High)",
					"reference": "https://ya.ru",
                    "desc": "<p>HTTP Strict Transport Security (HSTS)"
                }
            ]
        }
    ]
}

Далее необходимо хапустить скрипт import_asset_Nessus_OWASP.py по этому отчету указав необходимые параметры для его корректного запуска. Возможные опции скрипта:

# python import_asset.py --help
usage: import_asset.py [-h] --kuma KUMA --token TOKEN --tenant TENANT --vendor {Nessus,OWASPZAP} --filepath FILEPATH

options:
  -h, --help                  show this help message and exit
  --kuma KUMA                 IP адрес сервера KUMA
  --token TOKEN               Токен API
  --tenant TENANT             Имя Тенанта
  --vendor {Nessus,OWASPZAP}  Наименование вендора
  --filepath FILEPATH         Путь до отчета

Пример запуска по отчету OWASP ZAP:

python3 import_asset_Nessus_OWASP.py --kuma 10.68.85.126 --token 98417b064c2a5cdfdf6bd011126c6453 --tenant  Main --vendor OWASPZAP --filepath C:\Users\ose\Downloads\owasp.json

В KUMA актив будет выглядит следующим образом:

image.png

Активы

Импорт информации об активах RedCheck

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Импорт информации об активах RedCheck

В KUMA можно импортировать сведения об активах из отчетов о результатах сканирования сетевых устройств с помощью RedCheck, системы контроля защищенности и соответствия стандартам. Импорт происходит через API с помощью утилиты redcheck-tool.py. Импортированные активы отображаются в веб-интерфейсе KUMA в разделе Активы. При необходимости вы можете редактировать параметры активов.

Импорт поддерживается из RedCheck 2.6.8 и выше

Поддерживается импорт информации о хостах только под управлением ОС Windows

Для работы утилиты требуется python верси 3.6 или выше, а также библиотеки: csv, re, json, requests, argparse, sys

Чтобы импортировать данные об активах из отчета RedCheck:

1. Сформируйте в RedCheck отчет сканирования сетевых активов в формате CSV и скопируйте файл отчета на сервер со скриптом. Подробнее о задачах на сканирование и форматах выходных файлов см. в документации RedCheck.

Импорт доступен из "Простых" отчетов "Уязвимости" и "Инвентаризация" сгруппированных по хостам в формате CSV. Подробнее на сайте RedCheck: https://docs.redcheck.ru/articles/#!redcheck-user-269/reports 

2. Создайте токен для доступа к KUMA REST API. 

Требования к учетным записям, для которых генерируется API-токен:

3. Скопируйте утилиту redcheck-tool.py на сервер ядра KUMA и сделайте файл утилиты исполняемым с помощью команды:

chmod +x <путь до файла redcheck-tool.py>

4. Запустите утилиту redcheck-tool.py:

python3 redcheck-tool.py --kuma-rest <адрес и порт сервера KUMA REST API> --token <API-токен> --tenant <название тенанта, куда будут помещены активы> --vuln-report <Полный путь к файлу отчета "Уязвимости"> --inventory-report <Полный путь к файлу с отчета "Инвентаризация">

Пример:

python3 --kuma-rest example.kuma.com:7223 --token 949fc03d97bad5d04b6e231c68be54fb --tenant Main --vuln-report /home/user/vuln.csv --inventory-report /home/user/inventory.csv

Вы можете использовать дополнительные флаги и команды для импорта. Например, команду для отображения расширенного отчета о полученных активах  -v. Подробное описание доступных флагов и команд приведено в таблице Флаги и команды утилиты redcheck-tool.py. Также для просмотра информации о доступных флагах и командах вы можете использовать команду --help.

Информация об активах будет импортирована из отчета RedCheck в KUMA. В консоли отображаются сведения о количестве новых и обновленных активов.

Пример:

inventory has been imported for 2 host(s)
software has been imported for 5 host(s)
vulnerabilities has been imported for 4 host(s)

Пример расширенного вывода информации об импорте:

[inventory import]           Host: localhost        Code: 200  Response: {'insertedIDs': {'0': '52ca11c6-a0e6-4dfd-8ef9-bf58189340f8'}, 'updatedCount': 0, 'errors': []}
[inventory import]           Host: 10.0.0.2         Code: 200  Response: {'insertedIDs': {'0': '1583e552-5137-4164-92e0-01e60fb6edb0'}, 'updatedCount': 0, 'errors': []}
[software import][error]     Host: localhost        Skipped asset with FQDN localhost or IP 127.0.0.1
[software import]            Host: 10.0.0.2         Code: 200  Response: {'insertedIDs': {}, 'updatedCount': 1, 'errors': []}
[vulnerabilities import]     Host: 10.0.0.2         Code: 200  Response: {'insertedIDs': {}, 'updatedCount': 1, 'errors': []}
[vulnerabilities import]     Host: 10.0.0.1         Code: 200  Response: {'insertedIDs': {'0': '0628f683-c20c-4107-abf3-d837b3dbbf01'}, 'updatedCount': 0, 'errors': []}
[vulnerabilities import]     Host: localhost        Code: 200  Response: {'insertedIDs': {}, 'updatedCount': 1, 'errors': []}
[vulnerabilities import]     Host: 10.0.0.3         Code: 200  Response: {'insertedIDs': {'0': 'ed01e0a8-dcb0-4609-ab2b-91e50092555d'}, 'updatedCount': 0, 'errors': []}
inventory has been imported for 2 host(s)
software has been imported for 1 host(s)
vulnerabilities has been imported for 4 host(s)

Поведение утилиты при импорте активов:

Флаги и команды утилиты redcheck-tool.py

Флаги и команды Обязательный Описание
--kuma-rest <адрес и порт сервера ядра KUMA> Да По умолчанию для обращения по API используется порт 7223. При необходимости его можно изменить.
--token <токен> Да Значение в параметре должно содержать только токен. Учетной записи, для которой генерируется API-токен, должна быть присвоена роль Администратора или Аналитика.
--tenant <название тенанта> Да Название тенанта KUMA, в который будут импортированы активы из отчета RedCheck
--vuln-report <полный путь к файлу отчета "Уязвимости"> Да Файл должен содержать отчет "Уязвимости" в формате CSV
--inventory-report <полный путь к файлу отчета "Инвентаризация"> Нет Файл должен содержать отчет "Инвентаризация" в формате CSV
-v  Нет Выведение расширенной информации об импорте активов

Возможные ошибки

Сообщение об ошибке Описание
Tenant %w not found Имя тенанта не найдено
Tenant search error: Unexpected status Code: %d При поиске тенанта был получен неожиданный код ответа HTTP
Asset search error: Unexpected status Code: %d При поиске актива был получен неожиданный код ответа HTTP
[%w import][error] Host: %w Skipped asset with FQDN localhost or IP 127.0.0.1 При импорте информации инвентаризации/уязвимостей был пропущен хост с fqdn=localhost или ip=127.0.0.1

Активы

Импорт данных из отчетов MaxPatrol в KUMA 3.2

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Ссылка на документацию https://support.kaspersky.com/help/KUMA/3.2/ru-RU/265426.htm 

Импорт

Утилита для импорта находится в следующей директории kuma-ansible-installer/roles/kuma/files/maxpatrol-tool

Для импорта необходимо выполнить следующие шаги:

  1. Сформировать отчет сканирования сетевых активов в формате XML file
  2. Поместить отчет и скрипт в одной директории (можно выполнить на ядре KUMA)
  3. Подготовить API права для утилиты:
    1. В KUMA создать пользователя kuma-mp
    2. Дать права на GET /users/whoami и POST /assets/import
    3. Сгенерировать токен (его сохранить в файл на сервере, где будет выполнятся команда
  4. Далее в веб-консоли KUMA нужно будет скачать REST API CA image.png
  5. Этот сертификат нужно перенести на сервер, где будет выполнятся скрипт
  6.  Выполнить команду:
    ./maxpatrol-tool --kuma-rest <адрес и порт сервера KUMA REST API> --token <путь и имя файла с API-токеном> --tenant <название тенанта, куда будут помещены активы> <путь и имя файла с отчетом MaxPatrol> --cert <путь к файлу сертификата Ядра KUMA>

    Пример:

    ./maxpatrol-tool --kuma-rest example.kuma.com:7223 --token token.txt --tenant Main mp.xml --cert core-external-ca.cert
  7. Для автоматизации добавления активов из папки по отчетам - можно воспользоваться скриптом.
Активы

Импорт данных об активах из MaxPatrol VM

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Данная статья является дополнением к основной статье официальной документации https://support.kaspersky.com/help/KUMA/3.2/ru-RU/265427.htm 

Протестирована работоспособность c MaxPatrol VM 2.1

Подготовительные действия в MP VM

Созданной учетной записи в MaxPatrol VM присвойте роль "Оператор".

Создание конфигурационного файла

В конфигурационном файле kuma-ptvm-config.yaml:

Поиск импортированных активов

Для поиска импортированных активов MP VM перейдите в Активы -> Выберите Поиск с условиями и задайте условие согласно скриншоту ниже.

image.png

Нажмите Поиск.

image.png

Если актив уже ранее был импортирован из KSC и аналогичный актив импортируется из MP VM, в таком случае карточка актива дополнится информацией об уязвимостях, обнаруженных MP VM.

Если актив изначально был импортирован из MP VM и далее аналогичный актив (с аналогичным IP и FQDN) будет импортирован из KSC, в таком случае актив "переподчинится" на управляемый из KSC.

Для поиска активов, которые ранее уже были импортированы из KSC и информация в карточке таких активов была дополнена данными MP VM, выберите Поиск с условиями и задайте условия согласно скриншоту ниже.

image.png

image.png

Нажмите Поиск.

image.png

Карточка актива с информацией об уязвимостях, полученной из KSC и из MP VM выглядит согласно скриншоту ниже.

image.png

Активы

Автоматическое добавление активов

Описание

Данный скрипт и набор ресурсов позволяют автоматически на основании информации из событий (ip-адреса, доменные имена) создавать активы в KUMA

Данный скрипт рекомендуется использовать только в тестовой или демонстрационной инсталляции


Требования

python 3.6+

KUMA 3.0.2


Подготовка скрипта

1. Поместите файлы asset-import.py, kumaPublicApiV1.py, params.json на сервер коррелятора в папку scripts: /opt/kaspersky/kuma/correlator/id/scripts

id коррелятора можно получить из веб-интерфейса KUMA: Ресурсы -> Активные сервисы -> Выбрать галочкой коррелятор и в верхнем меню Копировать идентификатор сервиса. Идентификатор будет скопирован в буфер обмена.

2. Внесите изменения в файл params.json:

3. Измените владельца файлов на kuma:

chown kuma:kuma asset-import.py kumaPublicApiV1.py params.json

4. Разрешите запуск файла asset-import.py:

chmod +x asset-import.py

Подготовка KUMA

  1. Импортируйте все ресурсы из файла auto_asset_add (Пароль импорта: Qwerty123!)

  2. Если нужно, внесите изменения в фильтры org address filter и org hostname filter, указав домены и подсети вашей организации, по ним отбираются активы из событий для импорта.

  3. Привяжите все правила корреляции Auto import asset info (src/dst/dvc) к коррелятору

  4. Привяжите правило реагирования Auto asset import

  5. Обновите параметры сервиса коррелятора


Результат

В результате проделанных манипуляций в KUMA будут создаваться активы на основании информации, получаемой из событий.


Файлы

Все ресурсы доступны по ссылке: https://box.kaspersky.com/d/1eb25f174a3e44e2a1be/ 

AD/LDAP/ALD Pro

Интеграции с различными службами каталогов

AD/LDAP/ALD Pro

Интеграция KUMA с Active Directory (AD)

При интеграции с AD/ADFS важно иметь единое время на системах, настоятельно рекомендуется настроить NTP

 
Аутентификация работает только для одного домена. Поэтому  все группы должны быть созданы в корневом домене.
Пример инфраструктуры AD:

В дочернем домене созданы:

image.png

Пользователи являются членами соответствующих групп: 

image.png

Настройки KUMA 

Base DN – корневой домен (не обязательно весь корневой домен, зависит от вашего AD)

URL – контроллеры корневого домена, порт глобального каталога (обязательно)

Важно:

image.png

Далее – для каждого тенанта указываете DistinguishedName групп, соответствующих правам доступа.

image.png

Информация по ролям и их возможностям: https://support.kaspersky.com/help/KUMA/2.1/ru-RU/218031.htm 

Важный момент:

Результат

Для доменной аутентификации, как таковой учетки в KUMA не требуется. Когда все настроено, вводится доменный логин и пароль и в этот момент KUMA биндится к LDAP.

При аутентификации, пользователь вводит в консоль свою доменную учетку в формате UPN (user@example.com) и, на основании членства этой учетки в той или иной группе, пользователю предоставляется доступ к разным тенантам с указанными правами.

image.png

Пример входа в KUMA с доменной учетной записью (kuma-admin@sales.lab):

image.png

Права API можно выдавать только для внутренних пользователей, не из AD

Порты AD

Полезные команды

image.png

AD/LDAP/ALD Pro

Интеграция KUMA с ALD Pro

Интеграция является не официальной

Документация по службе каталогов для Linux Astra ALD Pro: https://astra.ru/software-services/application-software-astra-group/ald-pro/#docs 

Настройки выполняются по налогии со статьей: https://kb.kuma-community.ru/books/integracii/page/integraciia-kuma-s-active-directory-ad 

При интеграции с ALD Pro важно иметь единое время на системах, настоятельно рекомендуется настроить NTP

Выберите тип интеграции FreeIPA и группы для учетных записей заводите в таком виде:

uid=is.ldap.usr,cn=users,cn=accounts,dc=company,dc=com 
Пример настроенной интеграции:

image.png

В итоге доменная аутентификация работает и пользователи появлялись с заданными правами.

AD/LDAP/ALD Pro

Выгрузка LDAP информации в словарь KUMA

Предварительно нужно выполнить настройку обогащение по этой статье https://kb.kuma-community.ru/books/integracii/page/ldap-obogashhenie

Шаг 1.

Нам нужно выгрузить сопоставление, например login(sAMAccountName)-mail. Создаете словарь типа таблица (важно), ключ login, колонка mail. Добавляете одну запись любую, чтобы сохранить словарь можно было.

image.png

Если нужно выгрузить другое поле, посмотрите его название по примеру вывода одной записи из обогащения:
/opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma --quiet --eval "db.accounts.findOne({"archived":false})"

Шаг 2.

Выбираете пользователя в KUMA, даете ему права на запрос POST /dictionaries/update, генерируете токен и записываете себе куда-нибудь (например в блокнот).

Шаг 3. 

На коре выполняете скрипт (нужно поставить утилиту jq):

echo 'login,mail' > /tmp/accounts.csv; /opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma --eval 'DBQuery.shellBatchSize=<SIZE>; db.accounts.find({"archived":false},{"displayName":1, "sAMAccountName":1, "_id":0})' | grep -E '^{' | jq '.sAMAccountName,.displayName'| sed 'N;s/\n/,/' | sed 's/\"//g' >> /tmp/accounts.csv; curl -k --request POST 'https://<KUMA_IP>:7223/api/v1/dictionaries/update?dictionaryID=<DICTIONARY_ID>' --header 'Content-Type: multipart/form-data' --header 'Authorization: Bearer <TOKEN>' --form 'file=@"/tmp/accounts.csv"'; rm -rf /tmp/accounts.csv

После выполнения скрипта, в словарь запишутся логины и их электронная почта, импортированные из AD.

Более продвинутый заполненный запрос c автоподсчетом <SIZE>:

SIZE=$(perl -w -e "use POSIX; print ceil($(/opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma --quiet --eval "db.accounts.find({"archived":false},{"sAMAccountName":1, "mail":1, "_id":0}).count()")*1.1), qq{\n}"); echo 'login,mail' > /tmp/accounts.csv; /opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma --eval 'DBQuery.shellBatchSize='$SIZE'; db.accounts.find({"archived":false},{"sAMAccountName":1, "mail":1, "_id":0})' | grep -E '^{' | jq '.sAMAccountName,.mail'| sed 'N;s/\n/,/' | sed 's/\"//g' >> /tmp/accounts.csv; curl -k --request POST 'https://10.68.85.125:7223/api/v1/dictionaries/update?dictionaryID=72323930-c4fb-43c7-9360-5f8d5d929bbb' --header 'Content-Type: multipart/form-data' --header 'Authorization: Bearer 29ed4e42e25f7877c5ceb435736f860f' --form 'file=@"/tmp/accounts.csv"'; rm -rf /tmp/accounts.csv


KSC: увеличение лимита экспорта событий в SIEM (Syslog/CEF)

Официальная документация по настройке автоматического экспорта событий в SIEM-системы: https://support.kaspersky.ru/ksc/14.2/151333

По умолчанию KSC отдает события по Syslog не более 100 штук каждые 30 секунд. При большом количестве защищаемых устройств и/или передаваемых событий может возникнуть ситуация, когда события с KSC будут не успевать доставляться в SIEM, и  будет копиться очередь событий на отправку. 

Изменить значение по экспорту событий, можно в реестре в системе с установленным Сервером администрирования.

Раздел:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KasperskyLab\Components\34\1093\1.0.0.0\ServerFlags

Флаги:

Подходить к изменению значений по умолчанию нужно с осторожностью. Изменения скорости могут повлиять на общую производительность системы. Рекомендуется постепенно увеличивать значения, внимательно следя как за KSC, так и за его СУБД.

Создание TAA-алертов в KUMA с KATA

Введение

При отправке событий из KATA в KUMA есть известная проблема: KATA отправляет сообщение о TAA-сработке только при первой сработке на хосте, а само Syslog сообщение не содержит достаточной информации. События из телеметрии KEDR в свою очередь не содержат идентификатора алерта в KATA в связи с чем отсутствует возможность создания ссылки на карточку алерта в KATA. 

В этой статье представлен вариант решения этой проблемы, который позволяет создавать алерт в KUMA идентичный TAA-алерту в KATA, со всеми связанными событиями телеметрии.


Требования

Для работы метода требуется установленная KUMA версии 2.1 или выше, а также KATA версии 5.0 или выше.

На KUMA должна быть настроены коллекторы для приема Syslog сообщений от KATA И телеметрии от KEDR. Информацию по настройке данных источников можно найти в соответствующих статьях (ссылки приведены для последних версий).

Оба коллектора должны отправлять события в коррелятор.


Реализация

1. Загрузить пакет ресурсов по ссылке: https://github.com/KUMA-Community/kuma_taa_alert 

2. Импортировать все ресурсы из пакета в KUMA.

3. Перейти в Коррелятор, перейти на шаг Корреляция и привязать правила корреляции D007 и D008

image.png

4. Перейти на шаг Проверка параметров и обновить параметры сервиса коррелятора

image.png

5. Перейти в веб-интферфейсе в Параметры -> Алерты -> Сегментация и нажать Добавить параметры для нового тенанта (если в KUMA не настроены никакие правила сегментации), либо нажать на соответствующий тенант в списке (если в KUMA уже настроены какие-либо правила сегментации).

image.png

6. Создайте связь правила корреляции и правила сегментации как на рисунке ниже:

image.png

7. Сохраните все внесенные изменения.

На этом настройка завершена.


Результат

В результате проделанных манипуляций в KUMA на каждую TAA сработку будет возводиться алерт, в который согласно правилу сегментации будут добавляться все события телеметрии связанные с данной сработкой. Сам алерт будет содержать ID алерта KATA, ссылку на алерт KATA (для этого необходимо на коллекторе для сбора Syslog с KATA добавить обогащение [OOTB] KATA alert), а также связанные события телеметрии от KEDR.

Ниже представлен скриншот алерта в KUMA

image.png

А также соответствующий алерт в KATA

image.png

И связанные с ним события телеметрии

image.png


Ретроспективная проверка IoC с помощью KUMA и CyberTrace

Введение

Описанный ниже сценарий применим для версии CyberTrace 4.4 и выше. Ресурсы, поставляемые для данного сценария в KUMA применимы к версии 3.2 и выше, но могут быть сделаны аналогичные для версий 2.1+.

В данном сценарии рассматривается автоматизация ретроспективной проверки по IoC с использованием интеграции KUMA и CyberTrace.

Сценарий позволяет:

1. По расписанию выполнять ретроспективную проверку на стороне CyberTrace

2. Получать событие в KUMA по результатам ретроспективной проверки

3. Создавать коррреляционное событие и алерт на основании такого события, а также добавлять в корреляционное событие кликабельную ссылку на исходное событие, на которое сработал ретроскан.


Настройка CyberTrace

Подключитесь к CyberTrace от имени пользователя с правами администратора.

Настройка получения и отправки событий

Перейдите в раздел Settings - General.

В графе Incoming events выберите IP address and port, в поле IP address укажие адрес CyberTrace, на котором он будет принимать индикаторы от KUMA (запись 0.0.0.0 означает, что CyberTrace будет принимать соединения на всех адресах), а в поле Port задайте порт, на котором CyberTrace будет принимать индикаторы.

В графе Detection alerts в поле IP address укажите адрес коллектора KUMA, а в графе Port - порт коллектора KUMA.

По завершении настройки нажмите кнопку Save внизу экрана.

image.png


Настройка ретроспективной проверки

Перейдите в раздел Settings - Restroscan

Включите ретроскан ползунком Enabled. На вкладка General settings задайте необходимые настройки регулярности ретроспективной проверки и другие параметры.

image.png

Находясь в том же разделе, перейдите на вкладку Feeds и включите необходимые фиды для ретроспективной проверки.

image.png

Находясь в том же разделе, перейдите на вкладку Regular expressions и выберите RE_CONTEXT (обязательно в данном сценарии), а также те индикаторы, по которым планируется ретроспективная проверка.

image.png

По окончании настройки нажмите кнопку Save.


Настройка формата событий

Перейдите в раздел Settings - Detection alerts

Заполните Alert format, как показано в примере.

Category=%Category%|MatchedIndicator=%MatchedIndicator%%RecordContext%|KUMA_event_id=%RE_CONTEXT%|KUMA_event_date=%EventReceivedDate%|outcome=%Retroscan%

image.png

Выберите вверху Context и заполните Actionable fields, как в примере ниже.

"%ParamName%":"%ParamValue%"

image.png

Пролистайте в самый низ страницы и нажмите кнопку Save.

Настройки для Service alerts можете оставить по умолчанию или изменить по своему усмотрению. В данном сценарии рассматривается и требуется взаимодействие только с Detection alerts.


Настройка KUMA

1. Скачайте набор ресурсов (нормализатор и правило корреляции) по ссылке и импортируйте в KUMA.

Настройка обогащения

Важно! Обогащение должно выполняться именно методом cybertrace. Метод cybertarce-http не применим в данном случае, т.к. в CyberTrace до 5.0 версии включительно обогащение по API не доступно для ретроспективной проверки и отображения в детектах.

1. Настройте обогащение на коллекторах, где это требуется по инструкции из соответствующего раздела.


Настройка коллектора

1. На шаге Транспорт укажите тип и порт в соответствии с настройками на стороне CyberTrace.

image.png

2. На шаге Парсинг событий выберите нормализатор [DEMO] CyberTrace.

3. На шаге Маршрутизация проверьте, что в набор ресурсов коллектора добавлены следующие точки назначения:

- Хранилище. Для отправки обработанных событий в хранилище.
- Коррелятор. Для отправки обработанных событий в коррелятор.
Если точки назначения Хранилище и Коррелятор не добавлены, создайте их.

4. На шаге Проверка параметров нажмите Сохранить и создать сервис.

5. Скопируйте появившуюся команду для установки коллектора KUMA.


Настройка корреляции

1. Откройте на редактирование правило корреляции D016;CyberTrace;IoC Matched By Retroscan (или D016;CyberTrace;Обнаружение IoC в ходе ретроспективной проверки)

2. Перейдите в Селекторы - Локальные переменные

3. Отредактируйте значение переменной core подставив свой FQDN или IP-адрес ядра

Важно! FQDN для данного сценария не должен превышать 18 символов! В случае более длинного FQDN следует использовать IP-адрес.

Пояснение ограничения

Ссылка на событие KUMA (переменная url), которая будет помещена в корреляционное событие, находится в поле DeviceExternalID. Максимальная длина данных в этом поле 255 символов. Пустой запрос без FQDN содержит 237 символов, что дает возможность указать FQDN меньше или равным 18 символам.

При необходимости, можно изменить мапинг ссылки на событие на другое поле, например, Message. Но в таком случае ссылка будет "не кликабельная" и нужно будет копировать ее из события и вставлять в строку браузера.

image.png

4. Сохраните правило корреляции.

5. Привяжите к коррелятору правило корреляции D016;CyberTrace;IoC Matched By Retroscan

6. Обновите параметры сервиса коррелятора.


Результат

В результате по обнаружению в результате ретроспективного скнаирования в KUMA будет отправлено соответствующее обнаружение.

На основании данного обнаружения с помощью правила корреляции будет возведен алерт, в котором в поле DeviceExternalID будет доступна ссылка на событие KUMA, в котором было обнаружено совпадение.

image.png

При нажатии на ссылку откроется окно с событиями с подготовленным поиском и временным окном. Для отображения события требуется только нажать на кнопку Выполнить запрос. В результате отобразится событие KUMA, в котором с помощью ретроскана CyberTrace было найдено совпадение по индикатору.

image.png

Интеграция с Kaspersky MDR

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Предварительные требования

      • Перейдите в Settings -> API
      • Нажмите Add и укажите Connection Name (данное имя будет использоваться, как имя пользователя при создании инцидентов/комментариев/вложений и т.д., так как токен доступа не привязан к конкретному пользователю)
      • Укажите Role, чтобы определить права доступа для токена
      • Укажите Tenant при необходимости
    •  

      Если для создаваемых в консоли MDR инцидентов в поле "Тенант" отсутствует значение, добавьте значение "Корень без тенанта", чтобы скрипт при подключении обнаружил данные инциденты

    •  

      image.png

      • Нажмите Generate
      • После завершения процесса генерации будут получены:
        • JWT Token - он же refresh_token, который требуется активировать, чтобы получить новую пару refresh_token и access_token
        • ClientID - ID-клиента для подключения к API (требуется указывать при каждом запросе к API MDR)

image.png

image.png

image.png

Описание интеграции

Описанная в данной статье интеграция с Kaspersky Managed Detection and Response позволяет автоматически импортировать инциденты из консоли MDR в KUMA.

Настройка

TenantID можно получить из события аудита KUMA

После добавления токена в файл .refresh_token проверьте, что в конце файла отсутствует символ новой строки \n , из-за которого попытка аутентификации будет неуспешной. См. команды ниже:

# проверяем наличие символа новой строки
wc -l /opt/mdr/conf/.refresh_token
# если вывод "1 .refresh_token", то удаляем символ
perl -p -i -e 'chomp if eof' /opt/mdr/conf/.refresh_token
# проверяем, что символ новой строки успешно удален
wc -l /opt/mdr/conf/.refresh_token
# должен быть вывод "0 .refresh_token"
python3 ./main.py

Если при запуске скрипта появляются сообщения об отсутствии необходимых пакетов - выполните их установку

Лог работы скрипта пишется в /opt/mdr/log/app.log

nohup python3 /opt/mdr/main.py &
sudo crontab -e
@reboot sleep 300 && python3 /opt/mdr/main.py & # sleep в 5 минут добавлен, чтобы сервис kuma-core успел стартовать

Интеграция с ГосСОПКА

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/KUMA/2.1/ru-RU/221777.htm  

Настройка интерации

Для возможности отправки инцидентов в ГосСОПКА должна быть выполнена настройка, в разделе Параметры - НКЦКИ нужно указать параметры подключения:

Далее укажите сферу деятельности, местоположение и название компании.

image.png

Значение токена сохраняется в Секркте в KUMA:

image.png

Работа с инцидентом

После настройки взаимодействие с НКЦКИ и работа с инцидентом выполняется в разделе Инциденты. Для нового инцидента должны быть заполнены минимально необходимые поля:

Описание взаимодействия с НКЦКИ в онлайн-справке: https://support.kaspersky.com/KUMA/2.1/ru-RU/221855.htm 

image.png

После нажатия кнопки Экспорт открывается вкладка для заполнения карточки инцидента в формате, который требует НКЦКИ. При необходимости может быть выбран чек-бокс «Затронутая система имеет подключение к Интернету», это подразумевает заполнение дополнительных сведений на вкладке Технические данные.

image.png

Вкладки Технические данные и Дополнительно не обязательно заполнять для запуска экспорта, но информация будет запрошена со стороны ГосСОПКА позже.

image.png

Вся информация отображается в ЛК Заказчика. При этом в связи с особенностями работы портала перейти из интерфейса KUMA сразу в нужный инцидент в ГосСОПКА нельзя, придется искать в списке всех инцидентов. 

image.png

В интерфейсе KUMA можно отслеживать статус  инцидента и изменения содержимого (если изменения были выполнены на портале, а не из KUMA).

image.png

При получении обратной связи статус инцидента изменяется, при необходимости инцидент можно дополнить данными
Есть чат с НКЦКИ (не онлайн, примерно раз в 10 минут – особенности на стороне НКЦКИ). 

image.png

Есть возможность оповещений по почте о необходимости доработки инцидента.

image.png

Монтирование папки в KUMA

С версии KUMA 3.2 агент для Windows имеет возможность читать логи из файлов на ОС Windows. Таким образом, для некоторых случаев целесообразно использовать агентов для чтения логов локально без монтирования директорий.

Для чтения файла логов коллектором KUMA необходимо примонтировать папку содержащую логи, например, DHCP сервера на сервер коллектора KUMA.

Для начала необходимо установить утилиту cifs, если она еще не установлена.

yum install -y cifs-utils

Далее необходимо создать файл с учетными данными пользователя для доступа к общей папке /root/.dhcp-secret со следующим содержимым:

username=<имя пользователя с правами на чтение папки>
password=<пароль пользователя>
domain=<домен, в случае доменного пользователя>

Далее нужно создать папку на сервере коллектора KUMA, куда будет примонтирована папка с логами DNS сервера.

mkdir /mnt/dhcp

Далее в конец файла /etc/fstab необходимо добавить строку

\\<путь к общей папке сервера> <путь монтирования> cifs credentials=<файл с учетными данными>,cache=none 0 0

Пример:
\\dc-01.sales.lab\dhcp /mnt/dhcp cifs credentials=/root/.dhcp-secret,cache=none 0 0

Далее необходимо примонтировать общую папку командой:

mount -a

Для проверки успешности монтирования можно выполнить следующую команду:

ls /mnt/dhcp

В выводе консоли должны присутствовать файлы логов DHCP сервера с правами на чтение для всех пользователей

image.png

Далее создание файлового коллектора и создание службы в KUMA аналогии с этой статьей.

Интеграция Grafana c ClickHouse в KUMA

Интеграция является не официальной (не поддерживается)

Скачиваем и устанавливаем плагин:

image.png

Далее настраиваем в Connections (в старых версиях: Home - Administration - Data sources) по этому плагину:

image.png

Предварительно проверьте доступ к порту 8123, если доступа нет, обеспечьте его, например, проборосом портов.

URL: https://10.68.85.126:8123?allowMultiQueries=true    (можете также указать хостнейм, в случае иcпользования плагина Altinity)

Копируем содержимое ключевой информации в нужные секции:

image.png

Они берутся из хранилища по путям:
Затем внизу нажимаем на кнопку Save & Test.

При корректности настроек и сетевых доступов должны получить следующее:

image.png

Создаем дашборд со своими панелями (виджетами), пример:

image.png

image.png

Пример запроса:

SELECT  count(ID), DestinationUserName FROM kuma.events_local_v2 WHERE $__timeFilter_ms(Timestamp) AND DeviceEventClassID='4624'GROUP BY DestinationUserName

Переменная $__timeFilter_ms(Timestamp) обеспечивает проброс промежутка времени из графаны в запрос:

image.png

Чтобы поменять тип отображения можно выбрать другое представление тут:

image.png

image.png

image.png

Сохраняем и применяем панель/представление, далее подобным образом можно создать другие панели.

Интеграция Grafana c VictoriaMetrics (Prometheus) в KUMA

Интеграция является не официальной (не поддерживается)

Для начала нам понадобится сетевой доступ к локальной Victoria Metrics, находящейся на Core.

Для этого понадобится простой reverse-proxy (есть также и другие способы), в нашем случае мы будем слушать порт 1777, пример конфига для nginx:

server {

     listen   1777;
     server_name victoriametrics.kuma.local;

     location / {
             proxy_set_header X-Real-IP  $remote_addr;
             proxy_set_header X-Forwarded-For $remote_addr;
             proxy_set_header Host $host;
             proxy_pass http://127.0.0.1:9090;
     }
}

И рестартуем nginx.

Далее идём в нашу Grafana и добавляем соединение Prometheus (как на скриншоте):

image.png

Заполняем основные поля Name и URL и сохраняем:

image.png

Основная часть интеграции готова, теперь при построении дашборда мы можем использовать метрики KUMA, пример на скриншоте.

image.png

AI Скоринг активов

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

Официальная документация по данному разделу приведена в Онлайн-справке на продукт: https://support.kaspersky.com/help/KUMA/3.4/ru-RU/292782.htm 

Описание

AI-сервис позволяет уточнить критичность корреляционных событий, сгенерированных в результате срабатывания правил корреляции. 

AI-сервис получает из доступных кластеров хранения корреляционные события, содержащие непустое поле Affected assets, выстраивает ожидаемую последовательность событий и обучает модель AI. На основании цепочки срабатываний корреляционных правил AI-сервис высчитывает, является ли такая последовательность срабатываний характерной в этой инфраструктуре. Нехарактерные паттерны повышают рейтинг актива.

image.png

По результатам расчетов AI-сервиса в карточке активов становится доступным для просмотра Рейтинг AI и Статус. Рейтинг – это число, которое отражает степень нетипичной активности на активе, на которую стоит обратить внимание. Доступные значения поля Статус: Low, Medium, High, Critical.

image.png

После каждого перезапуска AI-сервиса, AI-сервис заново обучает модель и выполняет переоценку рейтинга активов, указанных в событиях за сегодня.

В директории, указанной в конфигурационном файле, хранятся события, которые AI-сервис получил из кластеров хранения KUMA за указанное количество дней. Например, если в конфигурационном файле указано 12 дней (period_for_train_days), AI-сервис будет получать события за последние 12 дней. Самые давние события удаляются из директории. В этой же директории будет храниться обученная модель.

Переобучение модели происходит в полночь по UTC. Переоценка рейтинга активов происходит раз в час для всех активов, которые были в событиях за сегодня по UTC.

Если лицензию удалить, поля Рейтинг AI и Статус будут скрыты из карточки актива. Если лицензию снова добавить, значения полей Рейтинг AI и Статус снова будут отображаться. 

Журналы сервиса хранятся в /var/log/syslog.

Установка

  1. Скачайте архив: ссылка. Архив содержит скрипты для установки и удаления сервиса, а также конфигурационный файл config.yaml.
  2. В конфигурационном файле config.yaml укажите порт, по которому хост Ядра будет ожидать подключения от AI-сервиса. Например, в установке в отказоустойчивой конфигурации должен быть указан порт 7226. Для остальных параметров можно оставить значения по умолчанию.
  3. Перейдите в директорию с файлами сервиса и из этой папки выполните команду:  bash ./install <путь к ИНВЕНТОРИ.yaml>
  4. По умолчанию сервис устанавливается на хост с Ядром. Если вы хотите установить сервис на другой хост, укажите в  конфигурационном файле <hostname>:<port> ядра KUMA в kuma_address и убедитесь в наличии сетевого доступа.
  5. Установщик генерирует необходимые сертификат и ключ в процессе установки и помещает их в  директории, указанные в конфигурационном файле, по умолчанию: /opt/kaspersky/mlservice/. Сертификат необходимо загрузить в KUMA. В веб-интерфейсе KUMA в разделе (появляется при наличии лицензии AI) Параметры – AI-сервис во вкладке AI рейтинг и статус активов заполните следующие поля:

image.png

Сразу после установки сервис будет пытаться в течение 15 минут подключиться к KUMA с интервалом в 1 минуту. Если сертификат не добавлен в веб-интерфейсе KUMA, подключение не будет выполнено и сервис остановится. В таком случае можно добавить сертификат и перезапустить (systemctl restart mlservice.service) AI-сервис, сервис опять попробует подключиться. AI-сервис установлен.