Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em 3 de abril de 2025, demonstramos publicamente duas novas tabelas para dar suporte aos esquemas de indicador e objeto STIX (Structured Threat Information eXpression): ThreatIntelIndicators
e ThreatIntelObjects
. Este artigo fornece exemplos de como incorporar objetos STIX em consultas para aprimorar a busca de ameaças e como migrar para o novo esquema de indicador de ameaça.
Para obter mais informações sobre inteligência contra ameaças no Microsoft Sentinel, consulte Inteligência contra ameaças no Microsoft Sentinel.
Importante
O Microsoft Sentinel irá ingerir toda a inteligência contra ameaças nas novas tabelas ThreatIntelIndicators
e ThreatIntelObjects
, enquanto continua a ingerir os mesmos dados na tabela herdada ThreatIntelligenceIndicator
até 31 de julho de 2025.
Atualize suas consultas personalizadas, regras de análise e detecção, pastas de trabalho e automação para usar as novas tabelas até 31 de julho de 2025. Após essa data, o Microsoft Sentinel interromperá a ingestão de dados na tabela herdada ThreatIntelligenceIndicator
. Estamos atualizando todas as soluções de inteligência contra ameaças prontas para uso no Hub de Conteúdo para aproveitar as novas tabelas.
Introduzimos atualizações importantes nos processos de republicação de dados.
- Anteriormente, os dados eram divididos e republicados no Log Analytics durante um período de 12 dias. Agora, todos os dados são republicados a cada 7 dias no início de cada semana. Você pode identificar esses dados nas tabelas
ThreatIntelIndicators
eThreatIntelObjects
verificando seLastUpdateMethod
é igual aLogARepublisher
. - As novas tabelas agora dão suporte a mais colunas, incluindo a
Data
coluna, que contém o objeto de dados completo usado em cenários avançados de busca. Se essas colunas não se alinharem ao seu cenário, saiba mais sobre como filtrar colunas e linhas antes da ingestão para o Log Analytics. - Para otimizar a ingestão ao Log Analytics, excluem-se pares de chave-valor que não contenham dados. Além disso, alguns campos dentro da
Data
coluna, comodescription
epattern
, serão truncados se excederem 1.000 caracteres. Para obter mais informações sobre o esquema atualizado e como ele pode afetar seu uso, consulte ThreatIntelIndicators e ThreatIntelObjects.
Identificar atores de ameaça associados a indicadores de ameaça específicos
Essa consulta é um exemplo de como correlacionar indicadores de ameaça, como endereços IP, com atores de ameaça:
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
Listar dados de inteligência contra ameaças relacionados a um ator de ameaça específico
Essa consulta fornece insights sobre as táticas, técnicas e procedimentos (TTPs) do ator de ameaça (substitua Sangria Tempest
pelo nome do ator de ameaça que você deseja investigar):
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
Migrar consultas existentes para o novo esquema ThreatIntelObjects
Este exemplo mostra como migrar consultas existentes da tabela herdada ThreatIntelligenceIndicator
para o novo ThreatIntelObjects
esquema. A consulta usa o operador extend
para recriar colunas herdadas com base nas colunas ObservableKey
e ObservableValue
na nova tabela.
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
Transformar dados antes de serem enviados para o Log Analytics
As transformações no Azure Monitor permitem filtrar ou modificar dados de entrada antes de serem armazenados em um espaço de trabalho do Log Analytics. Eles são implementados como uma instrução da Kusto Query Language (KQL) na regra de coleta de dados (DCR). Saiba mais sobre como criar transformações de workspace e o custo das transformações.
Transformar colunas para não serem visíveis ao enviar para o Log Analytics
As tabelas ThreatIntelIndicator
e ThreatIntelObjects
incluem uma coluna Data
que contém o objeto STIX original completo. Se essa coluna não for relevante para seu caso de uso, você poderá filtre-a antes da ingestão usando a seguinte instrução KQL:
source
| project-away Data
Transformar linhas enviadas para o Log Analytics
A ThreatIntelIndicators
tabela sempre recebe pelo menos uma linha para cada indicador não expirado. Em alguns casos, o padrão STIX não pode ser analisado em pares chave/valor. Quando isso acontece, o indicador ainda é enviado para o Log Analytics, mas somente o padrão bruto não analisado é incluído, permitindo que os usuários criem análises personalizadas, se necessário. Se essas linhas não forem úteis para o seu cenário, você poderá filtre-as antes da ingestão usando a seguinte instrução KQL:
source
| where (ObservableKey != "" and isnotempty(ObservableKey))
or (ObservableValue != "" and isnotempty(ObservableValue))
Conteúdo relacionado
Para obter mais informações, consulte os seguintes artigos:
- Inteligência contra ameaças cibernéticas no Microsoft Sentinel
- Conectar o Microsoft Azure Sentinel aos feeds de inteligência contra ameaças STIX/TAXII.
- Veja quais TIPs, feeds TAXII e enriquecimentos podem ser prontamente integrados ao Microsoft Sentinel.
Para mais informações sobre o KQL, confira a visão geral da Linguagem de Consulta Kusto (KQL).
Outros recursos: