[KL] "Playbook for checking external IP addresses"
Предустановленный плейбук [KL] "Playbook for checking external IP addresses" запускается при обнаружении подключения к внешнему IP-адресу и инициирует процесс обогащения Kaspersky TIP. Если результаты обогащения показывают, что количество угроз превышает 80, для активов типа "host" запрашиваются данные для расследования (список процессов) и выполняется действие "Включить сетевую изоляцию".
Дополнительная информация о плейбуке.
- Для правильной работы плейбука нужно настроить интеграцию с Kaspersky TIP.
- Интеграция с Active Directory необходима для выполнения действий по блокировке учетных записей.
- Если результат обогащения показывает, что оценка угрозы ниже 80, плейбук прерывается.
- Выполнение плейбука будет остановлено, если на любом из шагов возникнет ошибка.
- Действие "Включить изоляцию сети" необходимо вручную подтвердить во время выполнения плейбука.
Триггер плейбука содержит следующее выражение:
"event.new and ([ .Alerts[] | .Observables[] | select(.Value | test("^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.|127\\.)") | not) | .Value ] | length > 0)"
ResponseFunction используемые плейбуком: iocsEnrichment, getForensics, netIsolateOn.
Алгоритм плейбука содержит следующую последовательность действий по реагированию:
{
"version": "1",
"dslSpecVersion": "1.1.0",
"actionsSpecVersion": "1",
"playbookRunTimeout": "24h",
"executionFlow": [
{
"action": {
"function": {
"type": "iocsEnrichment",
"params": {
"fullEnrichment": true,
"observables": "${[ incident.Alerts[] | .Observables[] | {\"type\": .Type, \"value\": .Value } | select(.type==\"ip\" and (.value | test(\"^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.|127\\\\.)\") | not)) ] | unique_by(.value)}"
}
},
"onError": "stop",
"timeout": {
"scheduleToCloseTimeout": "24h"
},
"output": {
"filter": "${.}",
"action": "overwrite"
}
}
},
{
"decision": {
"conditions": [
{
"condition": "${\"${([.details.observableData[] | select(.status == \\\"ok\\\" and .ipObservableData.ipGeneralInfo.threatScore > 80)] | length > 0)}\"}",
"name": "Condition 1",
"steps": [
{
"decision": {
"conditions": [
{
"condition": "${incident.Alerts | map(.Assets) | flatten | map(select(.Type == \"host\")) | length > 0}",
"name": "alert has host(s)",
"steps": [
{
"action": {
"function": {
"type": "getForensics",
"assets": "${incident.Alerts | map(.Assets) | flatten | map(select(.Type == \"host\")) | map(.ID)}",
"params": {
"processes": {
"collect": true
},
"autoruns": {
"collect": false
}
}
},
"onError": "stop",
"timeout": {
"scheduleToCloseTimeout": "24h"
}
}
},
{
"action": {
"function": {
"type": "netIsolateOn",
"assets": "${incident.Alerts | map(.Assets) | flatten | map(select(.Type == \"host\")) | map(.ID)}",
"params": {
"exclusions": [],
"exclusionsConflictBehavior": "replace",
"isolationTimeoutSec": 28800
}
},
"onError": "stop",
"timeout": {
"scheduleToCloseTimeout": "24h"
},
"manualApprove": {
"timeout": "60m",
"emailNotifications": {
"enabled": true,
"delay": "10m"
}
}
}
}
]
}
]
}
}
]
}
]
}
}
]
}