Migrar regras de deteção do Splunk para Microsoft Sentinel

As regras de deteção do Splunk são componentes de gestão de informações e eventos de segurança (SIEM) que se comparam às regras de análise no Microsoft Sentinel. Este artigo descreve os conceitos usados para identificar, comparar e migrar regras de detecção de Splunk para o Microsoft Sentinel. A melhor maneira de migrar as regras de detecção do Splunk para o Microsoft Sentinel é começar com a SIEM migration experience, que identifica regras analíticas prontas para uso (OOTB) para tradução automática.

Se quiser migrar a implantação do Splunk Observability, saiba mais sobre como migrar do Splunk para o Azure Monitor Logs.

Regras de auditoria

Microsoft Sentinel utiliza a análise de machine learning para criar incidentes acionáveis e de alta fidelidade. Algumas das suas detecções de Splunk existentes podem ser redundantes no Microsoft Sentinel, então não migre todas as detecções de Splunk às cegas. Examine as seguintes considerações de auditoria de regras ao identificar suas regras de detecção existentes.

  • Certifique-se de que seleciona casos de utilização que justificam a migração de regras, considerando a prioridade comercial e a eficiência.
  • Verifique se você compreende os tipos de regras do Microsoft Sentinel.
  • Verifique se compreende a terminologia da regra.
  • Reveja as regras desatualizadas que não têm alertas nos últimos 6 a 12 meses e determine se ainda são relevantes.
  • Elimine alertas ou ameaças de baixo nível que ignora regularmente.
  • Microsoft Sentinel Analytics requer que o tipo de dados esteja presente na área de trabalho do Log Analytics antes de uma regra ser ativada. Confirme se as fontes de dados necessárias estão conectadas e examine os métodos de conexão de dados. Revisite as conversações de recolha de dados para garantir a profundidade e a amplitude dos dados em todos os casos de utilização que planeia detetar. Em seguida, utilize a experiência de migração SIEM para garantir que as origens de dados são mapeadas adequadamente.

Migrar regras

Depois de identificar as detecções do Splunk a serem migradas, examine as seguintes considerações sobre o processo de migração:

  • Compare a funcionalidade existente das regras de análise OOTB do Microsoft Sentinel com os seus casos de utilização atuais. Utilize a experiência de migração SIEM para ver que deteções do Splunk são convertidas automaticamente em modelos OOTB.
  • Traduza as detecções que não se alinham com as regras de análise OOTB. A melhor forma de traduzir automaticamente deteções do Splunk é com a experiência de migração SIEM.
  • Descubra mais algoritmos para os seus casos de utilização ao explorar recursos da comunidade, como o Marketplace de Deteção de Ameaças Principais do SOC.
  • Traduzir manualmente as deteções se as regras incorporadas não estiverem disponíveis ou não forem traduzidas automaticamente. Crie as novas consultas KQL e reveja o mapeamento de regras.

Para obter mais informações, veja melhores práticas para migrar regras de deteção.

Passos de migração de regras

Siga estas etapas para validar, traduzir e testar cada regra de detecção do Splunk durante a migração para Microsoft Sentinel.

  1. Verifique se tem um sistema de teste implementado para cada regra que pretende migrar.

    1. Prepare um processo de validação para as regras migradas, incluindo scripts e cenários de teste completos.

    2. Certifique-se de que a sua equipa tem recursos úteis para testar as regras migradas.

    3. Confirme que tem as origens de dados necessárias ligadas e reveja os métodos de ligação de dados.

  2. Verifique se as deteções estão disponíveis como modelos OOTB no Microsoft Sentinel:

    • Utilize a experiência de migração SIEM para automatizar a tradução e a instalação dos modelos OOTB.

      Para obter mais informações, veja Utilizar a experiência de migração SIEM.

    • Se tiver casos de utilização não refletidos nas deteções, crie regras para a sua própria área de trabalho com modelos de regras OOTB.

      Em Microsoft Sentinel, aceda ao Hub de conteúdos.

      Filtrar Tipo de conteúdo para modelos de regras de análise.

      Localize e Instale/Atualize cada solução correspondente do hub de conteúdo ou modelo autônomo de regra de análise.

      Para obter mais informações, consulte Detetar ameaças fora da caixa.

    • Se tiver deteções que não estão abrangidas pelas regras OOTB de Microsoft Sentinel, experimente primeiro a experiência de migração SIEM para tradução automática.

    • Se nem as regras OOTB nem a migração SIEM traduzirem completamente a deteção, crie a regra manualmente. Use as seguintes etapas para criar sua regra:

      1. Identifique as origens de dados que pretende utilizar na regra. Identifique as tabelas de Microsoft Sentinel que pretende consultar ao criar uma tabela de mapeamento entre origens de dados e tabelas de dados.

      2. Identifique quaisquer atributos, campos ou entidades nos seus dados que pretenda utilizar nas suas regras.

      3. Identifique os critérios e a lógica da regra. Ao identificar seus critérios de regra e lógica, considere usar modelos de regra como exemplos de como construir suas consultas KQL.

        Considere filtros, regras de correlação, listas ativas, conjuntos de referência, listas de observação, anomalias de deteção, agregações, etc. Pode utilizar referências fornecidas pelo siEM legado para compreender como mapear melhor a sintaxe da consulta.

      4. Identifique a condição de disparo e a ação da regra e, em seguida, crie e revise sua consulta KQL. Ao revisar sua consulta, considere os recursos de orientação sobre otimização de KQL.

  3. Teste a regra com cada um dos seus casos de utilização relevantes. Se não fornecer os resultados esperados, reveja e edite o KQL e teste-o novamente.

  4. Quando estiver satisfeito, considere a regra migrada. Crie um guia estratégico para sua ação de regra, conforme necessário. Para obter mais informações, veja Automatizar a resposta a ameaças com manuais de procedimentos no Microsoft Sentinel.

Saiba mais sobre as regras de análise:

Compare a terminologia de regras

A tabela de comparação a seguir esclarece como uma regra baseada em KQL em Microsoft Sentinel corresponde a uma detecção baseada em SPL no Splunk.

Splunk Microsoft Sentinel
Tipo de regra • Agendado
• Em tempo real
• Consulta agendada
• Fusão
• Segurança da Microsoft
• Análise Comportamental do Machine Learning (ML)
Criteria Definir em SPL Definir no KQL
Condição do acionador • Número de resultados
• Número de anfitriões
• Número de origens
• Personalizado
Limiar: número de resultados da consulta
Action • Adicionar aos alertas acionados
• Evento de registro
• Exibir resultados para consulta
• E muito mais
• Criar alerta ou incidente
• Integra-se com o Logic Apps

Mapear e comparar exemplos de regras

Use as tabelas de exemplo de SPL para KQL e exemplos nesta seção para comparar e mapear regras do Splunk para o Microsoft Sentinel em vários cenários.

Compare comandos comuns de busca Splunk com exemplos de KQL

Esta tabela mapeia comandos comuns de busca SPL para seus equivalentes KQL no Microsoft Sentinel.

Comando SPL Descrição Operador KQL Exemplo de KQL
chart/ timechart Devolve resultados numa saída tabular para gráficos de série temporal. operador de composição … | render timechart
dedup Remove os resultados subsequentes que correspondem a um critério especificado. distinto
resumir
… | summarize by Computer, EventID
eval Calcula uma expressão. Saiba mais sobre comandos comunseval. expandir T | extend duration = endTime - startTime
fields Remove campos dos resultados da pesquisa. projeto
projeto fora
T | project cost=price*quantity, price
head/tail Devolve o primeiro ou último N resultados. top T | top 5 by Name desc nulls last
lookup Adiciona valores de campo de uma origem externa. dados externos
pesquisa
Exemplo de comando de busca KQL
rename Muda o nome de um campo. Use curingas para especificar vários campos. nome do projeto T | project-rename new_column_name = column_name
rex Especifica nomes de grupos com expressões regulares para extrair campos. corresponde ao regex … | where field matches regex "^addr.*"
search Filtra os resultados para resultados que correspondem à expressão de pesquisa. pesquisar search "X"
sort Ordena os resultados da pesquisa pelos campos especificados. sort T | sort by strlen(country) asc, price desc
stats Fornece estatísticas, opcionalmente agrupadas por campos. Saiba mais sobre os comandos de estatísticas comuns. resumir Exemplo de comando de estatísticas no KQL
mstats Semelhante às estatísticas, utilizadas em métricas em vez de eventos. resumir Exemplo do comando Mstats no KQL
table Especifica os campos a manter no conjunto de resultados e retém os dados em formato tabular. projeto T | project columnA, columnB
top/rare Apresenta os valores mais ou menos comuns de um campo. top T | top 5 by Name desc nulls last
transaction Agrupa os resultados da pesquisa em transações.

Exemplo de comando de transação SPL
Exemplo: row_window_session Exemplo de comando de transação KQL
eventstats Gera estatísticas de resumo a partir de campos nos seus eventos e guarda essas estatísticas num novo campo.

Exemplo de SPL
Exemplos:
Junte-se
make_list
mv-expansão
Exemplo de KQL
streamstats Localize a soma cumulativa de um campo.

Exemplo de SPL:
... | streamstats sum(bytes) as bytes _ total \| timechart
row_cumsum ...\| serialize cs=row_cumsum(bytes)
anomalydetection Localize anomalias no campo especificado.

Exemplo de SPL
series_decompose_anomalies() Exemplo de KQL
where Filtra os resultados da pesquisa com eval expressões. Utilizado para comparar dois campos diferentes. em que T | where fruit=="apple"

lookup comando: exemplo de KQL

Este exemplo de KQL é usado externaldata para replicar o padrão SPL lookup filtrando usuários contra uma fonte de dados externa.

Users 
| where UserID in ((externaldata (UserID:string) [
@"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt" 
h@"?...SAS..." // Secret token to access the blob 
])) | ... 

stats comando: exemplo de KQL

Este exemplo do KQL é usado summarize para contar transações e somar totais, agrupados por fruta e mês.

Sales 
| summarize NumTransactions=count(), 
Total=sum(UnitPrice * NumUnits) by Fruit, 
StartOfMonth=startofmonth(SellDateTime) 

mstats comando: exemplo de KQL

Este exemplo do KQL agrupa valores métricos em faixas de preço e conta os registros em cada faixa.

T | summarize count() by price_range=bin(price, 10.0) 

transaction comando: exemplo de SPL

Este exemplo de SPL agrupa eventos relacionados de início e parada em uma única transação por ID de atividade.

sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration

transaction comando: exemplo de KQL

Este exemplo de KQL replica o agrupamento de transações SPL ao unir eventos de início e parada em um ID de atividade compartilhado e calcular a duração.

let Events = MyLogTable | where type=="Event";
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime, 
Duration = StopTime – StartTime

Utilize row_window_session() para calcular valores de início de sessão para uma coluna num conjunto de linhas serializado.

...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))

eventstats comando: exemplo de SPL

Este exemplo de SPL calcula contagens de eventos por categoria em bins de um minuto e então adiciona um total por bin de tempo usando eventstats.

… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time

eventstats comando: exemplo de KQL

Aqui está um exemplo com a instrução join:

let binSize = 1h;
let detail = SecurityEvent 
| summarize detail_count = count() by EventID,
tbin = bin(TimeGenerated, binSize);
let summary = SecurityEvent
| summarize sum_count = count() by 
tbin = bin(TimeGenerated, binSize);
detail 
| join kind=leftouter (summary) on tbin 
| project-away tbin1

Aqui está um exemplo com a instrução make_list:

let binSize = 1m;
SecurityEvent
| where TimeGenerated >= ago(24h)
| summarize TotalEvents = count() by EventID, 
groupBin =bin(TimeGenerated, binSize)
|summarize make_list(EventID), make_list(TotalEvents), 
sum(TotalEvents) by groupBin
| mvexpand list_EventID, list_TotalEvents

anomalydetection comando: exemplo de SPL

Este exemplo de SPL detecta anomalias nos dados históricos de preços de fechamento ao longo de um período de 10 anos.

sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price

anomalydetection comando: exemplo de KQL

Este exemplo do KQL utiliza funções de análise de séries temporais para detectar anomalias nas tendências de login de contas desativadas ao longo de um período de retrospecto de sete dias.

let LookBackPeriod= 7d;
let disableAccountLogon=SignIn
| where ResultType == "50057"
| where ResultDescription has "account is disabled";
disableAccountLogon
| make-series Trend=count() default=0 on TimeGenerated 
in range(startofday(ago(LookBackPeriod)), now(), 1d)
| extend (RSquare,Slope,Variance,RVariance,Interception,
LineFit)=series_fit_line(Trend)
| extend (anomalies,score) = 
series_decompose_anomalies(Trend)

Compare comandos Splunk eval comuns com equivalentes KQL

Esta tabela mapeia funções SPL eval comuns para seus equivalentes KQL no Microsoft Sentinel.

Comando SPL Descrição Exemplo de SPL Comando KQL Exemplo de KQL
abs(X) Devolve o valor absoluto de X. abs(number) abs() abs(X)
case(X,"Y",…) Utiliza pares de X argumentos e Y , em que os X argumentos são expressões booleanas. Quando avaliados como TRUE, os argumentos devolvem o argumento correspondente Y . Exemplo de SPL case Exemplo de KQL
ceil(X) Teto de um número X. ceil(1.9) ceiling() ceiling(1.9)
cidrmatch("X",Y) Identifica endereços IP que pertencem a uma sub-rede específica. cidrmatch
("123.132.32.0/25",ip)
ipv4_is_match()
ipv6_is_match()
ipv4_is_match('192.168.1.1', '192.168.1.255')
== false
coalesce(X,…) Devolve o primeiro valor que não é nulo. coalesce(null(), "Returned val", null()) coalesce() coalesce(tolong("not a number"),
tolong("42"), 33) == 42
cos(X) Calcula o cosseno de X. n=cos(0) cos() cos(X)
exact(X) Avalia uma expressão X com aritmética de vírgula flutuante de precisão dupla. exact(3.14*num) todecimal() todecimal(3.14*2)
exp(X) Retorna eX. exp(3) exp() exp(3)
if(X,Y,Z) Se X for avaliado como TRUE, o resultado é o segundo argumento Y. Se X é avaliado como FALSE, o resultado é avaliado como o terceiro argumento Z. if(error==200,
"OK", "Error")
iff() Exemplo de KQL
isbool(X) Retorna TRUE se X é booliano. isbool(field) iff()
gettype
iff(gettype(X) =="bool","TRUE","FALSE")
isint(X) Devolve TRUE se X for um número inteiro. isint(field) iff()
gettype
Exemplo de KQL
isnull(X) Retorna TRUE se X é nulo. isnull(field) isnull() isnull(field)
isstr(X) Retorna TRUE se X é uma cadeia de caracteres. isstr(field) iff()
gettype
Exemplo de KQL
len(X) Esta função retorna o comprimento em caracteres de uma string X. len(field) strlen() strlen(field)
like(X,"y") Retorna TRUE se e somente se X é como o padrão SQLite em Y. like(field, "addr%") has
contains
startswith
corresponde ao regex
Exemplo de KQL
log(X,Y) Devolve o registo do primeiro argumento X com o segundo argumento Y como base. O valor predefinido de Y é 10. log(number,2) log
log2
log10
log(X)

log2(X)

log10(X)
lower(X) Devolve o valor em minúsculas de X. lower(username) tolower tolower(username)
ltrim(X,Y) Retorna X com os caracteres especificados no parâmetro Y removidos do lado esquerdo. A saída padrão de Y são espaços e tabulações. ltrim(" ZZZabcZZ ", " Z") trim_start() trim_start(“ ZZZabcZZ”,” ZZZ”)
match(X,Y) Retorna se X corresponde ao padrão de expressão regular Y. match(field, "^\d{1,3}.\d$") matches regex … | where field matches regex @"^\d{1,3}.\d$")
max(X,…) Devolve o valor máximo numa coluna. max(delay, mydelay) max()
arg_max()
… | summarize max(field)
md5(X) Retorna o hash MD5 de um valor de texto X. md5(field) hash_md5 hash_md5("X")
min(X,…) Devolve o valor mínimo numa coluna. min(delay, mydelay) min_of()
min()
arg_min
Exemplo de KQL
mvcount(X) Devolve o número (total) de X valores. mvcount(multifield) dcount …| summarize dcount(X) by Y
mvfilter(X) Filtra um campo de valores múltiplos com base na expressão booleana X . mvfilter(match(email, "net$")) mv-apply Exemplo de KQL
mvindex(X,Y,Z) Devolve um subconjunto do argumento de valores X múltiplos de uma posição inicial (baseada em zero) Y para Z (opcional). mvindex( multifield, 2) array_slice array_slice(arr, 1, 2)
mvjoin(X,Y) Dado um campo multivalorado X e um delimitador de cadeia de caracteres Y, une os valores individuais de X usando Y. mvjoin(address, ";") strcat_array Exemplo de KQL
now() Devolve a hora atual, representada na hora do Unix. now() now() now()

now(-2d)
null() Não aceita argumentos e devolve NULL. null() nulo null
nullif(X,Y) Inclui dois argumentos e XY, e devolve X se os argumentos forem diferentes. Caso contrário, devolve NULL. nullif(fieldA, fieldB) iff iff(fieldA==fieldB, null, fieldA)
random() Devolve um número pseudo-aleatório entre 0 para 2147483647. random() rand() rand()
relative_ time(X,Y) Dado um tempo de época X e um especificador de tempo relativo Y, retorna o valor temporal da época de Y aplicado a X. relative_time(now(),"-1d@d") tempo do unix Exemplo de KQL
replace(X,Y,Z) Devolve uma cadeia formada pela substituição da cadeia Z por cada ocorrência da cadeia de expressão Y regular na cadeia X. Devolve a data com os números de mês e dia mudados.
Por exemplo, para a 4/30/2015 entrada, o resultado é 30/4/2009:

replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/")
replace() Exemplo de KQL
round(X,Y) Retorna X arredondado para o número de casas decimais especificado por Y. O padrão é arredondar para um inteiro. round(3.5) round round(3.5)
rtrim(X,Y) Retorna X com os caracteres de Y cortados do lado direito. Se Y não for especificado, espaços e tabulações serão cortados. rtrim(" ZZZZabcZZ ", " Z") trim_end() trim_end(@"[ Z]+",A)
searchmatch(X) Retorna TRUE se o evento corresponder à string de pesquisa X. searchmatch("foo AND bar") iff() iff(field has "X","Yes","No")
split(X,"Y") Devolve X como um campo de valores múltiplos, dividido por delimitador Y. split(address, ";") split() split(address, ";")
sqrt(X) Devolve a raiz quadrada de X. sqrt(9) sqrt() sqrt(9)
strftime(X,Y) Retorna o valor temporal de época X renderizado usando o formato especificado por Y. strftime(_time, "%H:%M") format_datetime() format_datetime(time,'HH:mm')
strptime(X,Y) Dado um tempo representado por uma cadeia X, devolve o valor analisado a partir do formato Y. strptime(timeStr, "%H:%M") format_datetime() Exemplo de KQL
substr(X,Y,Z) Retorna um campo substring X da posição inicial (baseada em um) Y para Z (opcional) caracteres. substr("string", 1, 3) substring() substring("string", 0, 3)
time() Retorna a hora do relógio de parede com resolução de microssegundos. time() format_datetime() Exemplo de KQL
tonumber(X,Y) Converte a cadeia X de entrada num número, em Y que (opcional, o valor predefinido é 10) define a base do número para o qual converter. tonumber("0A4",16) toint() toint("123")
tostring(X,Y) Descrição Exemplo de SPL tostring() tostring(123)
typeof(X) Devolve uma representação de cadeia do tipo de campo. typeof(12) gettype() gettype(12)
urldecode(X) Devolve o URL X descodificado. Exemplo de SPL url_decode Exemplo de KQL

case(X,"Y",…) Exemplo de SPL

Este exemplo de SPL retorna uma string de mensagens diferente baseada no código de erro HTTP.

case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")

case(X,"Y",…) Exemplo de KQL

Este exemplo do KQL é usado case() para atribuir uma mensagem com base no valor do código de erro.

T
| extend Message = case(error == 404, "Not found", 
error == 500,"Internal Server Error", "OK") 

if(X,Y,Z) Exemplo de KQL

Este exemplo do KQL é usado iif() para indicar se um carimbo de data e hora corresponde ao dia atual.

iif(floor(Timestamp, 1d)==floor(now(), 1d), 
"today", "anotherday")

isint(X) Exemplo de KQL

Este exemplo de KQL verifica se X possui um tipo compatível com inteiros usando gettype e iif.

iif(gettype(X) =="long","TRUE","FALSE")

isstr(X) Exemplo de KQL

Este exemplo de KQL verifica se X é um valor de cadeia usando gettype e iif.

iif(gettype(X) =="string","TRUE","FALSE")

like(X,"y") exemplo

Esses exemplos de KQL mostram vários operadores de correspondência de strings que você pode usar para replicar o padrão de correspondência SPL like .

… | where field has "addr"

… | where field contains "addr"

… | where field startswith "addr"

… | where field matches regex "^addr.*"

min(X,…) Exemplo de KQL

Esses exemplos de KQL mostram diferentes formas de calcular valores mínimos usando min_of, min, e arg_min.

min_of (expr_1, expr_2 ...)

…|summarize min(expr)

…| summarize arg_min(Price,*) by Product

mvfilter(X) Exemplo de KQL

Este exemplo de KQL é usado mv-apply para filtrar e reduzir conteúdo multivalorado, semelhante à função SPL mvfilter .

T | mv-apply Metric to typeof(real) on 
(
 top 2 by Metric desc
)

mvjoin(X,Y) Exemplo de KQL

Este exemplo de KQL é usado strcat_array para unir elementos de array em uma única string com um separador personalizado.

strcat_array(dynamic([1, 2, 3]), "->")

relative time(X,Y) Exemplo de KQL

Este exemplo de KQL converte um valor de data-hora para tempo de época Unix para cálculos em tempo relativo.

let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s 
};

replace(X,Y,Z) Exemplo de KQL

Este exemplo de KQL usa replace() com um padrão regex para trocar as partes do mês e do dia de uma sequência de datas.

replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)

strptime(X,Y) Exemplo de KQL

Este exemplo de KQL é usado format_datetime para exibir apenas as horas e minutos a partir de um valor de data-hora.

format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')

time() Exemplo de KQL

Este exemplo do KQL formata um valor de data-hora como uma sequência de tempo mostrando horas, minutos e segundos.

format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')

tostring(X,Y) descrição

A função SPL tostring(X,Y) converte valores em strings e suporta várias opções de formatação. Ele retorna um valor de campo de X como uma cadeia.

  • Se o valor de X for um número, X será reformatado para um valor de cadeia.
  • Se X for um valor booleano, X é reformatado para TRUE ou FALSE.
  • Se X for um número, o segundo argumento Y é opcional e pode ser hex (convertido X num hexadecimal), commas (formatos com vírgulas X e duas casas decimais) ou duration (converte X de um formato de tempo em segundos para um formato de tempo legível: HH:MM:SS).
tostring(X,Y) Exemplo de SPL

Este tostring exemplo de SPL retorna:

foo=615 and foo2=00:10:15:

… | eval foo=615 | eval foo2 = tostring(
foo, "duration")

urldecode(X) Exemplo de SPL

Este exemplo SPL decodifica uma string codificada por URL de volta à sua forma original.

urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")

Compare comandos Splunk stats comuns com equivalentes KQL

Esta tabela mapeia funções comuns de agregação SPL stats para seus equivalentes KQL no Microsoft Sentinel.

Comando SPL Descrição Comando KQL Exemplo de KQL
avg(X) Devolve a média dos valores do campo X. avg() avg(X)
count(X) Devolve o número de ocorrências do campo X. Para indicar um valor de campo específico a corresponder, formate X como eval(field="value"). count() summarize count()
dc(X) Retorna a contagem de valores distintos do campo X. dcount() …\| summarize countries=dcount(country) by continent
earliest(X) Devolve o valor observado cronologicamente mais cedo de X. arg_min() … \| summarize arg_min(TimeGenerated, *) by X
latest(X) Devolve o valor observado cronologicamente mais recente de X. arg_max() … \| summarize arg_max(TimeGenerated, *) by X
max(X) Devolve o valor máximo do campo X. Se os valores de X não forem numéricos, o valor máximo é encontrado por ordem alfabética. max() …\| summarize max(X)
median(X) Devolve o valor mais médio do campo X. percentil() …\| summarize percentile(X, 50)
min(X) Devolve o valor mínimo do campo X. Se os valores de X não forem numéricos, o valor mínimo é encontrado por ordem alfabética. min() …\| summarize min(X)
mode(X) Devolve o valor mais frequente do campo X. top-hitters() …\| top-hitters 1 of Y by X
perc(Y) Devolve o valor de percentil X do campo Y. Por exemplo, perc5(total) devolve o quinto valor de percentil de um campo total. percentil() …\| summarize percentile(Y, 5)
range(X) Devolve a diferença entre os valores máximo e mínimo do campo X. intervalo() range(1, 3)
stdev(X) Devolve o desvio-padrão de exemplo do campo X. desvpad stdev()
stdevp(X) Devolve o desvio-padrão da população do campo X. stdevp() stdevp()
sum(X) Devolve a soma dos valores do campo X. sum() sum(X)
sumsq(X) Devolve a soma dos quadrados dos valores do campo X.
values(X) Devolve a lista de todos os valores distintos do campo X como uma entrada com múltiplos valores. A ordem dos valores é alfabética. make_set() …\| summarize r = make_set(X)
var(X) Devolve a variância de exemplo do campo X. variância variance(X)

Próximas etapas

Você aprendeu a identificar, comparar e mapear regras de detecção do Splunk para as regras de análise do Microsoft Sentinel. Continue migrando sua automação SOAR.