Фиды
Методы API получения фидов
Структура фидов описана в разделе Справочники.
GET /api/v2/feeds/tree
Метод используется для получения дерева доступных для клиента фидов с учетом иерархии.
Выводятся не все, а только доступные для клиента фиды.
Вызывается без параметров.
Пример запроса
curl --location --request GET 'https://api.data.rt-solar.ru/api/v2/feeds/tree' \
--header 'Authorization: Bearer {JWT_TOKEN}'
Пример ответа
В ответе API будет предоставлен список фидов в массиве feeds представленный в древовидной структуре.
{
"feeds": [
{
"name": "4rays_pulse",
"id": "111306d9-87ea-4027-b865-ad6dfaa70abc",
"feeds": [
{
"name": "active_c2",
"id": "222306d9-87ea-4027-b865-ad6dfaa70abc",
"parent_id": "111306d9-87ea-4027-b865-ad6dfaa70abc"
},
{
"name": "cybercrime",
"id": "333306d9-87ea-4027-b865-ad6dfaa70abc",
"parent_id": "111306d9-87ea-4027-b865-ad6dfaa70abc",
"feeds": [
{
"name": "honeypot_attacker",
"id": "444306d9-87ea-4027-b865-ad6dfaa70abc",
"parent_id": "333306d9-87ea-4027-b865-ad6dfaa70abc"
}
]
}
]
},
{
"name": "generic",
"id": "555306d9-87ea-4027-b865-ad6dfaa70abc",
"feeds": [
{
"name": "apt",
"id": "666306d9-87ea-4027-b865-ad6dfaa70abc",
"parent_id": "555306d9-87ea-4027-b865-ad6dfaa70abc"
}
]
},
{
"name": "fincert",
"id": "777306d9-87ea-4027-b865-ad6dfaa70abc"
}
]
}
Описание ответа
В ответе API представляются данные в формате JSON.
| № | Поле | Тип данных | Описание | Пример |
|---|---|---|---|---|
| 1 | name | string | Название фида | "name": "active_c2" |
| 2 | id | string | UUID фида | "id": "421da453-5f3b-4542-b8fe-099f7d9cbe2b" |
| 3 | feeds | array(string) | Массив дочерних фидов. Заполняется только для дочерних фидов | {
"feeds": [
{
"name": "generic",
"id": "555306d9-87ea-4027-b865-ad6dfaa70abc",
"feeds": [
{
"name": "apt",
"id": "666306d9-87ea-4027-b865-ad6dfaa70abc",
"parent_id": "555306d9-87ea-4027-b865-ad6dfaa70abc"
}
]
}
]
} |
| 4 | parent_id | string | UUID родительского фида. Заполняется только для дочерних фидов | "parent_id": "421da453-5f3b-4542-b8fe-099f7d9cbe2b" |
GET /api/v2/feeds/{feed-name-by-tree}
Метод используется для получения индикаторов конкретного фида.
В параметре feed-name-by-tree передается название фида (пути, источники данных), из которого запрашиваются индикаторы.
feed-name-by-tree- /4rays_pulse
- /4rays_pulse/active_c2
- /4rays_pulse/cybercrime
- /4rays_pulse/cybercrime/backdoor
При вызове метода API GET /api/v2/feeds без параметров вернутся все индикаторы из доступных пользователю фидов.
Пример запроса
curl --location --request GET 'https://api.data.rt-solar.ru/api/v2/feeds/4rays_pulse' \
--header 'Authorization: Bearer {JWT_TOKEN}'
Пример запроса без параметров
curl --location --request GET 'https://api.data.rt-solar.ru/api/v2/feeds' \
--header 'Authorization: Bearer {JWT_TOKEN}'
Параметры запроса
| № | Параметр | Тип данных | По умолчанию | Описание | Варианты значений / пример |
|---|---|---|---|---|---|
| 1 | fields | array(string) | base | Поля, возвращаемые в ответе. Поддерживает алиасы и конкретные имена. |
|
| 2 | ids | array(string) (UUID) | — | Идентификаторы индикаторов. Можно указать несколько значений через запятую. | ids=421da453-5f3b-4542-b8fe-099f7d9cbe2b |
| 3 | indicator_types | array(string) | all | Типы индикаторов. Поддерживает алиасы и конкретные имена. |
|
| 4 | actions | array(string) | all | Действия в фидах. Поддерживает алиасы и конкретные имена. |
|
| 5 | direction_sort | string | ASC | Направление сортировки и итерации.
|
|
| 6 | updated_at | string (ISO 8601, микросекунды) | — | Время для пагинации.
Берётся из поля | 2022-10-26T17:30:00.000001Z |
| 7 | limit | int | 1000 | Количество индикаторов в ответе от 1 до 1000. | 100 |
Пример ответа
API возвращает массив объектов, каждый из которых содержит полную информацию об индикаторе компрометации (IoC). Ниже представлен пример одного элемента массива с подробными комментариями к ключевым полям:
[
[
{
"id": "421da453-5f3b-4542-b8fe-099f7d9cbe2b",
"type": "IPV4",
"value": "192.0.2.100",
"description": "описание",
"portal_url": "https://portal.example.com/network-indicators/421da453-5f3b-4542-b8fe-099f7d9cbe2b",
"created_at": "2022-10-26T17:30:00.000001Z",
"updated_at": "2022-10-26T17:30:00.000001Z",
"first_seen": "2022-10-26T17:30:00.000001Z",
"last_seen": "2022-10-26T17:30:00.000001Z",
"zone": "MALICIOUS",
"categories": [
"malicious"
],
"feeds": [
{
"name": "4rays_pulse",
"action": "CREATE",
"valid_until": "2022-10-26T17:30:00.000001Z",
"feeds": [
{
"name": "c2",
"action": "CREATE",
"valid_until": "2025-10-26T17:30:00.000001Z"
}
]
}
],
"attributes": {
"key": "value"
},
"contexts": [
{
"source_name": "whois",
"attributes": {
"nameservers": "ns1.example-domain.net",
"registrar": "EXAMPLE-REGISTRAR-RU"
}
},
{
"source_name": "infrastructure",
"attributes": {
"asn.asn": "AS12345",
"location.country": "RU",
"network.range": "192.0.2.0/24"
}
}
],
"related_objects": [
{
"id": "cf830e6d-addc-4983-8c38-906ef5fb6457",
"type": "IPV4",
"value": "203.0.113.50"
},
{
"id": "12330e6d-addc-4983-8c38-906ef5fb6457",
"type": "THREAT_ACTOR",
"value": "Example Threat Actor",
"mitre_id": "T1134"
}
],
"network": {
"heuristics": [
{
"risk_level": "CRITICAL",
"description": "У индикатора обнаружены признаки вредоносной активности, соответствующей его категории"
}
]
},
"file": {
"verdicts": ["YARA:Nix.HackTool.3snake.1a"],
"os": "NIX",
"size": 207232,
"file_identifiers": ["php-fpm"],
"mime": "application/x-sharedlib",
"hashes": {
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"sha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709"
}
},
"flat_feeds": [
{
"name": "4rays_pulse",
"action": "CREATE",
"valid_until": "2022-10-26T17:30:00.000001Z"
}
],
"feed_names": ["4rays_pulse", "c2"],
"active": true,
"action": "CREATE",
"valid_until": "2025-10-26T17:30:00.000001Z",
"feed_source": "ti_cloud"
}
]
Описание ответа
В ответе API предоставляется массив объектов (FeedIndicatorV2) в формате JSON.
| № | Поле | Тип данных | Описание | Варианты значений | Пример |
|---|---|---|---|---|---|
| 1 | id | string | UUID индикатора | — | "421da453-5f3b-4542-b8fe-099f7d9cbe2b" |
| 2 | type | string | Тип индикатора |
| "IPV4" |
| 3 | value | string | Значение индикатора | — | "5.8.95.174" |
| 4 | description | string | Описание индикатора | — | "IP dangerous" |
| 5 | portal_url | string | Ссылка на портал
( | — | "https://portal.example.com/network-indicators/421da453-5f3b-4542-b8fe-099f7d9cbe2b" |
| 6 | created_at | string | Дата и время создания индикатора (ISO 8601, микросекунды) | — | "2022-10-26T17:30:00.000001Z" |
| 7 | updated_at | string | Дата и время последнего обновления (ISO 8601, микросекунды) | — | "2022-10-26T17:30:00.000001Z" |
| 8 | first_seen | string | Дата и время первого обнаружения индикатора | — | "2022-10-26T17:30:00.000001Z" |
| 9 | last_seen | string | Дата и время последнего обнаружения индикатора | — | "2022-10-26T17:30:00.000001Z" |
| 10 | zone | string | Уровень критичности угрозы |
| "MALICIOUS" |
| 11 | categories | array(string) | Категории индикатора | Примеры:
| ["spam"] |
| 12 | feeds | array(object) | Массив объектов с информацией о фидах (дерево) | См. FeedItemV2 | |
| 13 | attributes | object | Дополнительные атрибуты индикатора в формате ключ-значение | — | {"key": "value"} |
| 14 | contexts | array(object) | Контекстная информация об индикаторе из различных источников | См. IoCContextV2 | |
| 15 | related_objects | array(object) | Связанные объекты | См. RelatedObjectV2 | |
| 16 | network | object | Сетевая информация об индикаторе | См. IoCNetwork | |
| 17 | file | object | Информация о файле (для файловых индикаторов) | См. IoCFile | |
| 18 | flat_feeds | array(object) | Фиды плоским списком (extra) | См. FeedItemV2 | |
| 19 | feed_names | array(string) | Имена активных фидов
(extra, исключая | — | ["4rays_pulse", "c2"] |
| 20 | active | bool | Признак активности индикатора (extra) | true, false | true |
| 21 | action | string | Общее действие (extra) |
| "CREATE" |
| 22 | valid_until | string | Максимальный срок валидности по всем фидам (extra) | — | "2025-10-26T17:30:00.000001Z" |
| 23 | feed_source | string | Константа | ti_cloud | "ti_cloud" |
Жизненный цикл индикатора в фидах
Индикатор компрометации (IoC) может находиться в нескольких фидах одновременно. Для каждого фида, в который входит индикатор, ведётся своя история изменений. Основные события жизненного цикла отражаются в поле action объекта фида:
| Действие | Значение | Описание |
|---|---|---|
| Добавление | CREATE | Индикатор впервые появился в данном фиде |
| Обновление | UPDATE | Индикатор уже был в фиде, но его атрибуты или срок действия изменились |
| Удаление | DELETE | Индикатор отозван из фида (по TTL, вручную или при изменении критериев) |
📄 Пример дерева фидов для одного индикатора:
"feeds": [
{
"name": "4rays_pulse",
"action": "UPDATE",
"valid_until": "2035-12-10T12:42:05.321519Z",
"feeds": [
{
"name": "cybercrime",
"action": "UPDATE",
"valid_until": "2035-12-10T12:42:05.321519Z",
"feeds": [
{
"name": "malware",
"action": "UPDATE",
"valid_until": "2035-12-10T12:42:05.321519Z"
}
]
}
]
},
{
"name": "generic",
"action": "DELETE",
"valid_until": "2035-12-10T12:42:05.321519Z"
}
]
В этом примере индикатор активен в фиде 4rays_pulse (и его дочерних), но удалён из фида generic.
Агрегированное поле active
На основе действий во всех фидах вычисляется агрегированное поле active:
- Если хотя бы в одном фиде действие
CREATEилиUPDATE→active = true - Если во всех фидах действие
DELETE→active = false
Таким образом, active = false означает, что индикатор отозван из всех фидов и должен быть снят с мониторинга в интегрируемых системах.
Временная метка valid_until
Для сетевых индикаторов (IP-адреса, домены, URL) в каждом фиде может присутствовать поле valid_until — время, до которого индикатор считается актуальным. По истечении этого времени фид автоматически формирует действие DELETE.
Для файловых индикаторов (хэши MD5, SHA1, SHA256) поле valid_until отсутствует — их жизненный цикл управляется исключительно через action.
Рекомендации по фильтрации
- Не используйте
active = trueв фильтрах, если вам нужно обрабатывать отзыв индикаторов. При таком фильтре событияDELETEне попадут в выгрузку, и целевая система не получит команду на снятие индикатора с мониторинга (revoked). - Для корректной обработки удаления добавляйте в фильтр условие
action == "DELETE"или используйте полеvalid_untilдля сетевых индикаторов. - Если вы не хотите отслеживать отзыв, можно фильтровать по
active = true, но это следует делать осознанно.
Описание поля contexts
Это необязательный набор данных, который содержит контекстную информацию об индикаторе из различных источников и может присутствовать для обогащения индикаторов дополнительными сведениями.
Наличие конкретных источников и атрибутов зависит от типа индикатора и доступности данных в момент обогащения.
Данные в поле contexts хранятся в массиве IoCContextV2, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| source_name | string | Название источника |
| attributes | map[string]string | Атрибуты контекста |
Разрешённые источники и их атрибуты:
| Источник | Атрибуты |
|---|---|
| fincert | apt, attack_type, class, family, format, mitre |
| fstec | bulletin_date, bulletin_id, summary |
| infrastructure | asn.asn, asn.created, asn.name, asn.org, asn.rir, asn.route, asn.type, location.city, location.continent, location.country, location.last_verified_at, location.latitude, location.longitude, location.state, location.timezone, network.abuse_email, network.domain, network.range |
| tor | dirport, orport |
| whois | age.days, creation, dnssec, expiration, expiration_status.days_left, ips, last_verified_at, nameservers, ns_analysis.detected_providers, registrar, registrar_info.email |
Описание поля network (heuristics)
Эвристика - результирующее правило или алгоритм, который на основе анализа данных и признаков формирует вероятностную оценку или классификацию объекта/события.
Результат работы эвристики:
Результатом работы эвристики является автоматически сгенерированное заключение, которое:
- Классифицирует объект по уровням риска, на основе которых определяется зона
- Формулирует текстовое описание выявленных признаков и рисков
Пример:
"heuristics": [
{
"risk_level": "HIGH",
"description": "Suspicious Network Behavior - обнаружены множественные подключения к недоверенным хостам в короткий промежуток времени"
}
]
Данные в поле network хранятся в массиве IoCNetwork, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| heuristics | array(IoCHeuristic) | Массив эвристик |
Данные в поле heuristics хранятся в массиве IoCHeuristic, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| risk_level | string | Уровень риска: CRITICAL, HIGH, MEDIUM, DECREASE, SAFE, INFO, INCREASE |
| description | string | Описание эвристики |
Описание поля file
Данные в поле file хранятся в массиве IoCFile, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| verdicts | array(string) | Вердикты анализа файла |
| file_identifiers | array(string) | Имена и пути файла |
| os | string | Целевая ОС: WIN, NIX, MAC, CROSS, ANDROID |
| size | uint64 | Размер файла |
| mime | string | MIME-тип файла |
| hashes | IoCFileHashes | Хэши файла |
Данные в поле hashes хранятся в массиве IoCFileHashes, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| md5 | string | MD5 хэш |
| sha1 | string | SHA1 хэш |
| sha256 | string | SHA256 хэш |
Описание поля feeds
Данные в поле feeds хранятся в массиве FeedItemV2, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| name | string | Название фида |
| action | string | Действие: CREATE, UPDATE, DELETE |
| valid_until | string | Срок валидности (ISO 8601, микросекунды) |
| feeds | []FeedItemV2 | Вложенные дочерние фиды |
Описание поля related_objects
Данные в поле related_objects хранятся в массиве RelatedObjectV2, состоящем из следующих полей:
| Поле | Тип | Описание |
|---|---|---|
| id | string | UUID связанного объекта |
| type | string | Тип: IPV4, IPV6, SOCKETV4, SOCKETV6, DOMAIN, URL, FILE, MD5, SHA1, SHA256, REPORT, THREAT_ACTOR, MALWARE, TOOL, ATTACK_PATTERN, TECHNIQUE, SUBTECHNIQUE |
| value | string | Значение связанного объекта |
| mitre_id | string | MITRE ATT&CK ID (заполняется для объектов с MITRE-данными) |