Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
3 апреля 2025 г. мы публично просматривали две новые таблицы для поддержки индикаторов и схем объектов STIX (структурированная информация об угрозах eXpression) и схемы объектов. ThreatIntelIndicatorsThreatIntelObjects В этой статье приведены примеры того, как включить объекты STIX в запросы для повышения охоты на угрозы и как перейти к новой схеме индикатора угроз.
Для получения дополнительной информации об аналитике угроз в Microsoft Sentinel см. раздел "Аналитика угроз в Microsoft Sentinel".
Это важно
Microsoft Sentinel будет собирать все разведывательные данные об угрозах в новые ThreatIntelIndicators и ThreatIntelObjects таблицы, продолжая сбор тех же данных в устаревшую ThreatIntelligenceIndicator таблицу до 31 июля 2025 года.
Обязательно обновите пользовательские запросы, правила аналитики и обнаружения, книги и автоматизацию, чтобы использовать новые таблицы к 31 июля 2025 года. После этой даты Microsoft Sentinel перестанет принимать данные в устаревшую ThreatIntelligenceIndicator таблицу. Мы обновляем все готовые решения аналитики угроз в Центре контента, чтобы использовать новые таблицы.
Мы представили важные обновления для процессов повторной публикации данных.
- Ранее данные были разделены и повторно опубликованы в Log Analytics в течение 12-дневного периода. Теперь все данные повторно публикуются каждые 7–10 дней. Эти данные можно определить в таблицах
ThreatIntelIndicatorsиThreatIntelObjects, проверив, равны лиLastUpdateMethodиLogARepublisher. - Новые таблицы теперь поддерживают больше столбцов, включая
Dataстолбец, содержащий полный объект данных (за исключением атрибутов, которые уже существуют в других столбцах), используемых в расширенных сценариях охоты. Если эти столбцы не соответствуют вашему сценарию, узнайте больше о фильтрации столбцов и строк перед приемом в Log Analytics. - Чтобы оптимизировать прием в Log Analytics, пары "ключ-значение" без данных исключаются. Кроме того, некоторые поля в столбце
Data( напримерdescription, иpattern) усечены, если они превышают 1000 символов. Дополнительные сведения об обновленной схеме и о том, как это может повлиять на использование, см. в статьях ThreatIntelIndicators и ThreatIntelObjects.
Определение субъектов угроз, связанных с конкретными индикаторами угроз
Этот запрос является примером сопоставления индикаторов угроз, таких как IP-адреса, с субъектами угроз:
let IndicatorsWithThatIP = (ThreatIntelIndicators
| extend tlId = tostring(Data.id)
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let ThreatActors = (ThreatIntelObjects
| where StixType == 'threat-actor'
| extend tlId = tostring(Data.id)
| extend ThreatActorName = Data.name
| extend ThreatActorSource = base64_decode_tostring(tostring(split(Id, '---')[0]))
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let AllRelationships = (ThreatIntelObjects
| where StixType == 'relationship'
| extend tlSourceRef = tostring(Data.source_ref)
| extend tlTargetRef = tostring(Data.target_ref)
| extend tlId = tostring(Data.id)
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let IndicatorAsSource = (IndicatorsWithThatIP
| join AllRelationships on $left.tlId == $right.tlSourceRef
| join ThreatActors on $left.tlTargetRef == $right.tlId);
let IndicatorAsTarget = (IndicatorsWithThatIP
| join AllRelationships on $left.tlId == $right.tlTargetRef
| join ThreatActors on $left.tlSourceRef == $right.tlId);
IndicatorAsSource
| union IndicatorAsTarget
| project ObservableValue, ThreatActorName
Перечисление данных аналитики угроз, связанных с конкретным субъектом угроз
Этот запрос содержит аналитические сведения о тактике, методах и процедурах (TTPs) субъекта угроз (замените Sangria Tempest именем субъекта угрозы, который вы хотите исследовать):
let THREAT_ACTOR_NAME = 'Sangria Tempest';
let ThreatIntelObjectsPlus = (ThreatIntelObjects
| union (ThreatIntelIndicators
| extend StixType = 'indicator')
| extend tlId = tostring(Data.id)
| extend PlusStixTypes = StixType
| extend importantfield = case(StixType == "indicator", Data.pattern,
StixType == "attack-pattern", Data.name,
"Unkown")
| extend feedSource = base64_decode_tostring(tostring(split(Id, '---')[0]))
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let ThreatActorsWithThatName = (ThreatIntelObjects
| where StixType == 'threat-actor'
| where Data.name == THREAT_ACTOR_NAME
| extend tlId = tostring(Data.id)
| extend ActorName = tostring(Data.name)
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let AllRelationships = (ThreatIntelObjects
| where StixType == 'relationship'
| extend tlSourceRef = tostring(Data.source_ref)
| extend tlTargetRef = tostring(Data.target_ref)
| extend tlId = tostring(Data.id)
| summarize arg_max(TimeGenerated,*) by Id
| where IsDeleted == false);
let SourceRelationships = (ThreatActorsWithThatName
| join AllRelationships on $left.tlId == $right.tlSourceRef
| join ThreatIntelObjectsPlus on $left.tlTargetRef == $right.tlId);
let TargetRelationships = (ThreatActorsWithThatName
| join AllRelationships on $left.tlId == $right.tlTargetRef
| join ThreatIntelObjectsPlus on $left.tlSourceRef == $right.tlId);
SourceRelationships
| union TargetRelationships
| project ActorName, PlusStixTypes, ObservableValue, importantfield, Tags, feedSource
Перенос существующих запросов на новую схему ThreatIntelIndicator
В этом примере показано, как перенести существующие запросы из устаревшей ThreatIntelligenceIndicator таблицы в новую ThreatIntelIndicators схему. Запрос использует оператор extend для воссоздания устаревших столбцов на основе столбцов ObservableKey и ObservableValue в новой таблице.
ThreatIntelIndicators
| extend NetworkIP = iff(ObservableKey == 'ipv4-addr:value', ObservableValue, ''),
NetworkSourceIP = iff(ObservableKey == 'network-traffic:src_ref.value', ObservableValue, ''),
NetworkDestinationIP = iff(ObservableKey == 'network-traffic:dst_ref.value', ObservableValue, ''),
DomainName = iff(ObservableKey == 'domain-name:value', ObservableValue, ''),
EmailAddress = iff(ObservableKey == 'email-addr:value', ObservableValue, ''),
FileHashType = case(ObservableKey has 'MD5', 'MD5',
ObservableKey has 'SHA-1', 'SHA-1',
ObservableKey has 'SHA-256', 'SHA-256',
''),
FileHashValue = iff(ObservableKey has 'file:hashes', ObservableValue, ''),
Url = iff(ObservableKey == 'url:value', ObservableValue, ''),
x509Certificate = iff(ObservableKey has 'x509-certificate:hashes.', ObservableValue, ''),
x509Issuer = iff(ObservableKey has 'x509-certificate:issuer', ObservableValue, ''),
x509CertificateNumber = iff(ObservableKey == 'x509-certificate:serial_number', ObservableValue, ''),
Description = tostring(Data.description),
CreatedByRef = Data.created_by_ref,
Extensions = Data.extensions,
ExternalReferences = Data.references,
GranularMarkings = Data.granular_markings,
IndicatorId = tostring(Data.id),
ThreatType = tostring(Data.indicator_types[0]),
KillChainPhases = Data.kill_chain_phases,
Labels = Data.labels,
Lang = Data.lang,
Name = Data.name,
ObjectMarkingRefs = Data.object_marking_refs,
PatternType = Data.pattern_type,
PatternVersion = Data.pattern_version,
Revoked = Data.revoked,
SpecVersion = Data.spec_version
| project-reorder TimeGenerated, WorkspaceId, AzureTenantId, ThreatType, ObservableKey, ObservableValue, Confidence, Name, Description, LastUpdateMethod, SourceSystem, Created, Modified, ValidFrom, ValidUntil, IsDeleted, Tags, AdditionalFields, CreatedByRef, Extensions, ExternalReferences, GranularMarkings, IndicatorId, KillChainPhases, Labels, Lang, ObjectMarkingRefs, Pattern, PatternType, PatternVersion, Revoked, SpecVersion, NetworkIP, NetworkDestinationIP, NetworkSourceIP, DomainName, EmailAddress, FileHashType, FileHashValue, Url, x509Certificate, x509Issuer, x509CertificateNumber, Data
Преобразование данных, отправляемых в Log Analytics
Преобразования в Azure Monitor позволяют фильтровать или изменять входящие данные до того, как они будут сохранены в рабочей области Log Analytics. Они реализованы как оператор языка запросов Kusto (KQL) в правиле сбора данных (DCR). Узнайте больше о том, как создавать преобразования рабочей области и затраты на преобразования.
Исключение столбцов, отправленных в Log Analytics
Таблицы ThreatIntelIndicator и ThreatIntelObjects включают столбец Data, содержащий полный исходный объект STIX. Если этот столбец не относится к вашему варианту использования, его можно отфильтровать перед приемом с помощью следующей инструкции KQL:
source
| project-away Data
Измените строки, отправленные в Log Analytics
Таблица ThreatIntelIndicators всегда получает по крайней мере одну строку для каждого неистекшего индикатора. В некоторых случаях шаблон STIX не может быть разобран на пары "ключ-значение". Когда это происходит, индикатор по-прежнему отправляется в Log Analytics, но включается только необработанный шаблон — позволяя пользователям при необходимости создавать пользовательские аналитические данные. Если эти строки не полезны для вашего сценария, их можно отфильтровать перед приемом с помощью следующей инструкции KQL:
source
| where (ObservableKey != "" and isnotempty(ObservableKey))
or (ObservableValue != "" and isnotempty(ObservableValue))
Связанный контент
Дополнительные сведения см. в следующих статьях:
- Аналитика угроз в Microsoft Sentinel.
- Подключите Microsoft Sentinel к каналам разведки угроз STIX/TAXII.
- Узнайте , какие типы, каналы TAXII и обогащения можно легко интегрировать с Microsoft Sentinel.
Дополнительные сведения о KQL см. в обзоре языка запросов Kusto (KQL).
Другие ресурсы: