Migrar regras de detecção do ArcSight para o Microsoft Sentinel
Este artigo descreve como identificar, comparar e migrar suas regras de detecção do ArcSight para as regras de análise do Microsoft Sentinel.
Identificar e migrar regras
O Microsoft Sentinel usa a análise de machine learning para criar incidentes acionáveis e de alta fidelidade, e algumas das detecções existentes podem ser redundantes no Microsoft Sentinel. Portanto, não migre todas as regras de detecção e análise indiscriminadamente. Examine essas considerações à medida que identifica as regras de detecção existentes.
- Selecione casos de uso que justifiquem a migração da regra, considerando a prioridade e a eficiência dos negócios.
- Verifique se você entende os tipos de regras do Microsoft Sentinel.
- Verifique se você entende a terminologia de regras.
- Examine todas as regras que não dispararam nenhum alerta nos últimos 6 a 12 meses e determine se elas ainda são relevantes.
- Elimine ameaças de baixo nível ou alertas que você costuma ignorar.
- Use a funcionalidade existente e verifique se as regras de análise internas do Microsoft Sentinel podem abordar seus casos de uso atuais. Como o Microsoft Sentinel usa a análise de machine learning para produzir incidentes acionáveis e de alta fidelidade, é provável que algumas das suas detecções existentes não sejam mais necessárias.
- Confirme as fontes de dados conectadas e examine os métodos de conexão de dados. Reveja as conversas de coleta de dados a fim de garantir a profundidade e a amplitude dos dados nos casos de uso que você planeja detectar.
- Explore os recursos da comunidade, como o Marketplace de Detecção de Ameaças do SOC Prime, para verificar se as suas regras estão disponíveis.
- Considere se um conversor de consultas online, como o Uncoder.io, pode funcionar para suas regras.
- Se as regras não estiverem disponíveis ou não puderem ser convertidas, elas precisarão ser criadas manualmente, usando uma consulta KQL. Examine o mapeamento de regras para criar consultas.
Saiba mais sobre as melhores práticas para migrar regras de detecção.
Para migrar suas regras de análise para o Microsoft Sentinel:
Verifique se há um sistema de teste em vigor para cada regra que você deseja migrar.
Prepare um processo de validação para suas regras migradas, incluindo scripts e cenários de teste completos.
Verifique se a equipe tem recursos úteis para testar suas regras migradas.
Confirme se você tem todas as fontes de dados necessárias conectadas e examine os métodos de conexão de dados.
Verifique se as detecções estão disponíveis como modelos internos no Microsoft Sentinel:
Se as regras internas forem suficientes, use modelos de regra internos para criar regras para seu próprio workspace.
No Microsoft Sentinel, vá para a guia Configuração > Análise > Modelos de regra e crie e atualize cada regra de análise relevante.
Para obter mais informações, confira Criar regras de análise agendadas de modelos.
Se você tiver detecções que não são cobertas pelas regras internas do Microsoft Sentinel, tente um conversor de consulta online, como Uncoder.io, para converter suas consultas em KQL.
Identifique a condição de gatilho e a ação de regra e, em seguida, construa e revise sua consulta KQL.
Se nem as regras internas nem um conversor de regra online forem suficientes, você precisará criar a regra manualmente. Nesses casos, use as seguintes etapas para começar a criar sua regra:
Identifique as fontes de dados que você deseja usar em sua regra. Você desejará criar uma tabela de mapeamento entre fontes de dados e tabelas de dados no Microsoft Sentinel para identificar as tabelas que deseja consultar.
Identifique quaisquer atributos, campos ou entidades em seus dados que você deseja usar em suas regras.
Identifique os critérios de regra e a lógica. Neste estágio, talvez você queira usar modelos de regra como exemplos de como construir suas consultas KQL.
Considere filtros, regras de correlação, listas ativas, conjuntos de referência, watchlists, anomalias de detecção, agregações e assim por diante. Você pode usar referências fornecidas pelo SIEM herdado a fim de entender como mapear melhor a sintaxe da sua consulta.
Identifique a condição de gatilho e a ação de regra e, em seguida, construa e revise sua consulta KQL. Ao revisar sua consulta, considere os recursos de diretrizes de otimização do KQL.
Teste a regra com cada um de seus casos de uso relevantes. Se isso não fornecer os resultados esperados, examine o KQL e teste-o novamente.
Quando estiver satisfeito, você poderá considerar a regra migrada. Crie um guia estratégico para sua ação de regra, conforme necessário. Para saber mais, confira Automatizar a resposta a ameaças com guias estratégicos no Microsoft Sentinel.
Saiba mais sobre as regras de análise:
- Regras de análise agendadas no Microsoft Sentinel. Use o agrupamento de alertas para reduzir a fadiga agrupando os alertas que ocorrem em um determinado período de tempo.
- Mapeie campos de dados para entidades no Microsoft Sentinel a fim de permitir que os engenheiros de SOC definam entidades como parte da evidência a ser rastreada durante uma investigação. O mapeamento de entidades também permite que os analistas de SOC aproveitem um gráfico de investigação intuitivo que pode ajudar a reduzir o tempo e o esforço.
- Investigue incidentes com dados do UEBA, como um exemplo de como usar evidências para ver eventos, alertas e quaisquer indicadores associados a um incidente específico no painel de visualização de incidentes.
- O KQL (Linguagem de Consulta Kusto), que você pode usar para enviar solicitações somente leitura ao banco de dados do Log Analytics para processar dados e retornar resultados. O KQL também é usado em outros serviços da Microsoft, como o Microsoft Defender para Ponto de Extremidade e o Application Insights.
Comparar a terminologia de regra
Esta tabela ajuda você a esclarecer o conceito de uma regra no Microsoft Sentinel em comparação com o ArcSight.
ArcSight | Microsoft Sentinel | |
---|---|---|
Tipo de regra | • Regra do filtro • Regra de junção • Regra de lista ativa • E muito mais |
• Consulta agendada • Fusão • Segurança da Microsoft • Análise Comportamental de ML (Machine Learning) |
Critérios | Definir nas condições de regra | Definir no KQL |
Condição do gatilho | • Definir em ação • Definir na agregação (para agregação de eventos) |
Limite: número de resultados da consulta |
Ação | • Definir campo de evento • Enviar notificação • Criar novo caso • Adicionar à lista ativa • E muito mais |
• Criar alerta ou incidente • Integra-se aos Aplicativos Lógicos |
Mapear e comparar exemplos de regra
Use esses exemplos para comparar e mapear regras do ArcSight para o Microsoft Sentinel em vários cenários.
Regra | Descrição | Regra de detecção de exemplo (ArcSight) | Consulta KQL de exemplo | Recursos |
---|---|---|---|---|
Filtro (AND ) |
Uma regra de exemplo com condições AND . O evento deve corresponder a todas as condições. |
Exemplo de filtro (AND) | Exemplo de filtro (AND) | Filtro da cadeia de caracteres: • Operadores da cadeia de caracteres Filtro numérico: • Operadores numéricos Filtro de datetime: • ago • Datetime • between • now Análise: • parse • extract • parse_json • parse_csv • parse_path • parse_url |
Filtro (OR ) |
Uma regra de exemplo com condições OR . O evento pode corresponder a qualquer uma das condições. |
Exemplo de filtro (OR) | Exemplo de filtro (OR) | • Operadores da cadeia de caracteres • in |
Filtro aninhado | Uma regra de exemplo com condições de filtragem aninhada. A regra inclui a instrução MatchesFilter , que também inclui condições de filtragem. |
Exemplo de filtro aninhado | Exemplo de filtro aninhado | • Função KQL de exemplo • Função de parâmetro de exemplo • join • where |
Lista ativa (pesquisa) | Uma regra de pesquisa de exemplo que usa a instrução InActiveList . |
Exemplo de lista ativa (pesquisa) | Exemplo de lista ativa (pesquisa) | • Uma watchlist é o equivalente ao recurso de lista ativa. Saiba mais sobre watchlists. • Outras maneiras de implementar pesquisas |
Correlação (correspondência) | Uma regra de exemplo que define uma condição em relação a um conjunto de eventos base, usando a instrução Matching Event . |
Exemplo de correlação (correspondência) | Exemplo de correlação (correspondência) | operador de junção: • join • join com janela de tempo • shuffle • Broadcast • Union instrução de definição: • let Agregação: • make_set • make_list • make_bag • bag_pack |
Correlação (janela de tempo) | Uma regra de exemplo que define uma condição em relação a um conjunto de eventos base, usando a instrução Matching Event e usa a condição de filtro Wait time . |
Exemplo de correlação (janela de tempo) | Exemplo de correlação (janela de tempo) | • join • Instrução de junção e regras do Microsoft Sentinel |
Exemplo de filtro (AND): ArcSight
Aqui está uma regra de filtro de exemplo com condições AND
no ArcSight.
Exemplo de filtro (AND): KQL
Aqui está a regra de filtro com condições AND
no KQL.
SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)
Essa regra pressupõe que o AMA (agente do Azure Monitor) coleta eventos de Segurança do Windows. Portanto, a regra usa a tabela SecurityEvent do Microsoft Sentinel.
Considere estas práticas recomendadas:
- Para otimizar suas consultas, evite operadores que não diferenciam maiúsculas de minúsculas quando possível:
=~
. - Use
==
se o valor não diferencia maiúsculas de minúsculas. - Solicite os filtros começando com a instrução
where
, que filtra a maioria dos dados.
Exemplo de filtro (OR): ArcSight
Aqui está uma regra de filtro de exemplo com condições OR
no ArcSight.
Exemplo de filtro (OR): KQL
Aqui estão algumas maneiras de escrever a regra de filtro com condições OR
no KQL.
Como primeira opção, use a instrução in
:
SecurityEvent
| where SubjectUserName in
("Adm1","ServiceAccount1","AutomationServices")
Como segunda opção, use a instrução or
:
SecurityEvent
| where SubjectUserName == "Adm1" or
SubjectUserName == "ServiceAccount1" or
SubjectUserName == "AutomationServices"
Embora ambas as opções sejam idênticas no desempenho, recomendamos a primeira opção, que é mais fácil de ler.
Exemplo de filtro aninhado: ArcSight
Aqui está uma regra de filtro aninhado de exemplo no ArcSight.
Aqui está uma regra para o filtro /All Filters/Soc Filters/Exclude Valid Users
.
Exemplo de filtro aninhado: KQL
Aqui estão algumas maneiras de escrever a regra de filtro com condições OR
no KQL.
Como primeira opção, use um filtro direto com uma instrução where
:
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName) or
isnotempty(TargetDomainName)
| where SubjectUserName !~ "AutoMatedService"
Como segunda opção, use uma função KQL:
Salve a consulta a seguir como uma função KQL com o alias
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) | where SubjectUserName =~ "AutoMatedService" | project SubjectUserName
Use a consulta a seguir para filtrar o alias
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) or isnotempty(TargetDomainName) | where SubjectUserName !in (ExcludeValidUsers)
Como terceira opção, use uma função de parâmetro:
Crie uma função de parâmetro com
ExcludeValidUsers
como o nome e o alias.Defina os parâmetros da função. Por exemplo:
Tbl: (TimeGenerated:datetime, Computer:string, EventID:string, SubjectDomainName:string, TargetDomainName:string, SubjectUserName:string)
A função
parameter
tem a seguinte consulta:Tbl | where SubjectUserName !~ "AutoMatedService"
Execute a seguinte consulta para invocar a função de parâmetro:
let Events = ( SecurityEvent | where EventID == 4728 ); ExcludeValidUsers(Events)
Como quarta opção, use a função join
:
let events = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
or isnotempty(TargetDomainName)
);
let ExcludeValidUsers = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
| where SubjectUserName =~ "AutoMatedService"
);
events
| join kind=leftanti ExcludeValidUsers on
$left.SubjectUserName == $right.SubjectUserName
Considerações:
- Recomendamos que você use um filtro direto com uma instrução
where
(primeira opção) devido à sua simplicidade. Para um desempenho otimizado, evite usarjoin
(quarta opção). - Para otimizar suas consultas, evite os operadores
=~
e!~
que não diferenciam maiúsculas de minúsculas quando possível. Use os operadores==
e!=
se o valor não diferencia maiúsculas de minúsculas.
Exemplo de lista ativa (pesquisa): ArcSight
Aqui está uma regra de lista ativa (pesquisa) no ArcSight.
Exemplo de lista ativa (pesquisa): KQL
Essa regra pressupõe que a watchlist de Contas de Exceção do Cyber-Ark exista no Microsoft Sentinel com um campo Conta.
let Activelist=(
_GetWatchlist('Cyber-Ark Exception Accounts')
| project Account );
CommonSecurityLog
| where DestinationUserName in (Activelist)
| where DeviceVendor == "Cyber-Ark"
| where DeviceAction == "Get File Request"
| where DeviceCustomNumber1 != ""
| project DeviceAction, DestinationUserName,
TimeGenerated,SourceHostName,
SourceUserName, DeviceEventClassID
Solicite os filtros começando com a instrução where
, que filtra a maioria dos dados.
Exemplo de correlação (correspondência): ArcSight
Aqui está uma regra de exemplo do ArcSight que define uma condição em relação a um conjunto de eventos base, usando a instrução Matching Event
.
Exemplo de correlação (correspondência): KQL
let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2
on $left.TargetUserName==$right.TargetUserName
Melhores práticas:
- Para otimizar sua consulta, verifique se a tabela menor está no lado esquerdo da função
join
. - Se o lado esquerdo da tabela for relativamente pequeno (até 100 mil registros), adicione
hint.strategy=broadcast
para obter melhor desempenho.
Exemplo de correlação (janela de tempo): ArcSight
Aqui está uma regra de exemplo do ArcSight que define uma condição em relação a um conjunto de eventos base, usando a instrução, Matching Event
e usa a condição de filtro Wait time
.
Exemplo de correlação (janela de tempo): KQL
let waittime = 10m;
let lookback = 1d;
let event1 = (
SecurityEvent
| where TimeGenerated > ago(waittime+lookback)
| where EventID == 4728
| project event1_time = TimeGenerated,
event1_ID = EventID, event1_Activity= Activity,
event1_Host = Computer, TargetUserName,
event1_UPN=UserPrincipalName,
AccountUsedToAdd = SubjectUserName
);
let event2 = (
SecurityEvent
| where TimeGenerated > ago(waittime)
| where EventID == 4729
| project event2_time = TimeGenerated,
event2_ID = EventID, event2_Activity= Activity,
event2_Host= Computer, TargetUserName,
event2_UPN=UserPrincipalName,
AccountUsedToRemove = SubjectUserName
);
event1
| join kind=inner event2 on TargetUserName
| where event2_time - event1_time < lookback
| where tolong(event2_time - event1_time ) >=0
| project delta_time = event2_time - event1_time,
event1_time, event2_time,
event1_ID,event2_ID,event1_Activity,
event2_Activity, TargetUserName, AccountUsedToAdd,
AccountUsedToRemove,event1_Host,event2_Host,
event1_UPN,event2_UPN
Exemplo de agregação: ArcSight
Aqui está uma regra de exemplo do ArcSight com configurações de agregação: três correspondências dentro de 10 minutos.
Exemplo de agregação: KQL
SecurityEvent
| summarize Count = count() by SubjectUserName,
SubjectDomainName
| where Count >3
Próximas etapas
Neste artigo, você aprendeu a mapear suas regras de migração do ArcSight para o Microsoft Sentinel.