Guia de Análise de Ameaças Sysmon, Parte 1





Este artigo é o primeiro de uma série sobre análise de ameaças Sysmon. Todas as outras partes da série:



Parte 1. Introdução à análise de log do Sysmon (estamos aqui)

Parte 2. Usando dados dos eventos do Sysmon para identificar ameaças

Parte 3. Análise aprofundada das ameaças do Sysmon usando gráficos



Se você está envolvido em segurança da informação, provavelmente precisará descobrir isso com frequência em ataques contínuos. Se você já tem um olho treinado, pode procurar atividades não padrão em logs brutos brutos - por exemplo, um script do PowerShell executando o comando DownloadStringou um script VBS que finge ser um arquivo do Word - apenas folheando a atividade mais recente no log de eventos do Windows. Mas isso é realmente uma grande dor de cabeça. Felizmente, a Microsoft criou o Sysmon, o que torna a análise de ataques muito mais simples.



Deseja entender as idéias básicas por trás das ameaças exibidas no log do Sysmon? Faça o download do nosso guia dos Eventos WMI como uma ferramenta Spy e você descobrirá como os especialistas podem espionar secretamente outros funcionários. O principal problema ao trabalhar com o log de eventos do Windows é a falta de informações sobre os processos pai, ou seja, é impossível entender a hierarquia dos processos a partir dele. Por outro lado, as entradas de log do Sysmon contêm o ID do processo pai, o nome e a linha de comando a ser executada. Obrigado Microsoft.



Na primeira parte de nossa série, veremos o que você pode fazer com as informações básicas da Sysmon. Na segunda parte, aproveitaremos ao máximo as informações sobre os processos-pai para criar estruturas de conformidade mais complexas, conhecidas como gráficos de ameaças. Na terceira parte, consideraremos um algoritmo simples que varre o gráfico de ameaças para procurar atividades fora do padrão por meio da análise do “peso” do gráfico. E, no final, você receberá um método probabilístico puro (e compreensível) de detectar ameaças como recompensa.





Parte 1: Introdução à Análise de Log Sysmon



O que ajudará a entender as complexidades do log de eventos? Em última análise - SIEM. Normaliza eventos e simplifica sua análise subsequente. Mas não precisamos ir tão longe, pelo menos a princípio. No começo, para entender os princípios do SIEM, será suficiente experimentar o maravilhoso utilitário gratuito Sysmon. E é surpreendentemente fácil de trabalhar. Continue assim, Microsoft!



Quais são os recursos do Sysmon?



Em resumo - informações úteis e legíveis sobre os processos (veja as fotos abaixo). Você encontrará vários detalhes úteis que não estão no log de eventos do Windows, mas o mais importante, nos seguintes campos:

  • ID do processo (decimal, não hexadecimal!)
  • ID do processo pai
  • Linha de comando do processo
  • A linha de comando do processo pai
  • Hash de imagem de arquivo
  • Nomes de imagem de arquivo


O Sysmon é instalado como um driver de dispositivo e como um serviço - mais informações aqui. Sua principal vantagem é a capacidade de analisar logs de várias fontes, correlacionar informações e gerar os valores resultantes para uma única pasta de log de eventos localizada no caminho Microsoft -> Windows -> Sysmon -> Operational . Nas minhas próprias investigações sobre os crescentes logs do Windows, eu constantemente precisava alternar entre, digamos, a pasta de logs do PowerShell e a pasta Security, folheando os logs de eventos em uma tentativa heróica de, de alguma forma, corresponder os valores entre eles. Isso nunca é uma tarefa fácil e, como percebi mais tarde, era melhor estocar imediatamente aspirina.



A Sysmon está dando um salto quântico adiante, fornecendo informações úteis (ou, como os fornecedores gostam de dizer, acionáveis) para ajudá-lo a entender os processos subjacentes. Por exemplo, iniciei uma sessão secreta do wmiexec simulando o movimento de um insider inteligente dentro de uma rede. Aqui está o que você vê no log de eventos do Windows:



O log do Windows mostra algumas informações sobre o processo, mas é pouco útil.  Mais identificadores de processo em hexadecimal ???



Algumas informações sobre o processo são visíveis no log do Windows, mas são de pouca utilidade. Mais identificadores de processo em hexadecimal ???



Um profissional de TI com conhecimento básico de hackers deve suspeitar da linha de comando. Usar o cmd.exe para executar outro comando posteriormente, redirecionando a saída para um arquivo com um nome estranho - é claramente semelhante ao software de controle e gerenciamento de comando e controle (C2) : dessa maneira, um pseudo-shell é criado usando os serviços WMI.

Agora, vamos dar uma olhada no equivalente da entrada Sysmon, observando quanta informação adicional ela nos fornece:



Recursos do Sysmon em uma captura de tela: informações detalhadas sobre o processo de forma legível



Recursos do Sysmon em uma captura de tela: informações detalhadas sobre o processo de forma legível





Você não apenas vê a linha de comando, mas também o nome do arquivo, o caminho para o aplicativo executável que o Windows conhece (“Windows Command Processor”), o identificador do processo pai , a linha de comando do pai que lançou o cmd-shell, bem como o nome real do arquivo do processo pai. Tudo em um só lugar, finalmente!

A partir do log do Sysmon, podemos concluir que, com um alto grau de probabilidade, essa linha de comando suspeita, que vimos nos logs "brutos", não é o resultado do trabalho normal do funcionário. Pelo contrário, foi gerado por um processo semelhante ao C2 - wmiexec, como mencionei anteriormente - e foi gerado diretamente pelo processo de serviço WMI (WmiPrvSe). Agora temos um indicador de que um invasor remoto ou alguém interno está testando a infraestrutura corporativa.



Apresentando Get-Sysmonlogs



Claro, é ótimo quando Sysmon tem os logs em um só lugar. Mas, provavelmente, seria ainda melhor se pudéssemos acessar campos de log individuais programaticamente - por exemplo, por meio de comandos do PowerShell. Nesse caso, você pode escrever um pequeno script do PowerShell que automatize a pesquisa de possíveis ameaças!

Eu não fui o primeiro a ter essa ideia. É bom que algumas postagens no fórum e projetos GitHub já tenham explicado como usar o PowerShell para analisar o log do Sysmon. No meu caso, eu queria evitar ter que escrever linhas separadas de script de análise para cada campo Sysmon. Então, eu usei o princípio da pessoa preguiçosa e acho que criei algo interessante como resultado.

O primeiro ponto importante é a capacidade da equipeO Get-WinEvent lê os logs do Sysmon, filtra os eventos necessários e exibe o resultado em uma variável PS, como aqui:



$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}




Se você deseja testar o comando, exibindo o conteúdo no primeiro elemento da matriz $ events, $ events [0] .Mensagem, você pode obter uma série de cadeias de texto com um formato muito simples: o nome do campo Sysmon, dois pontos e o valor em si.



Viva!  Saída de log Sysmon no formato pronto para JSON



Viva! Pronto para a saída do log Sysmon para o formato JSON





Você pensa a mesma coisa sobre mim? Com um pouco mais de esforço, você pode converter a saída em uma cadeia de caracteres no formato JSON e carregá-la diretamente em um objeto PS usando o poderoso comando ConvertFrom-Json .

Vou mostrar o código do PowerShell para a conversão - é muito simples - na próxima parte. Enquanto isso, vamos dar uma olhada no que meu novo comando chamado get-sysmonlogs pode fazer, que eu instalei como um módulo PS.

Em vez de mergulhar na análise de log do Sysmon por meio da interface inconveniente de log de eventos, podemos procurar facilmente atividades incrementais diretamente da sessão do PowerShell e usar o comando PS where (alias "?") Para reduzir a saída:



Lista de shells cmd lançados via WMI.  Analise ameaças de forma barata com nossa própria equipe Get-Sysmonlogs



Lista de shells cmd lançados via WMI. Análise de ameaças é barato com nossa própria equipe Get-Sysmonlogs





Amazing! Criei uma ferramenta de pesquisa de log Sysmon como se fosse um banco de dados. Em nosso artigo sobre EQL, observou-se que essa função será executada pelo utilitário legal descrito nela, embora formalmente seja realizada por meio de uma interface real semelhante a SQL. Sim, o EQL é bacana, mas abordaremos isso na Parte 3.



Sysmon e análise gráfica



Vamos abstrair e pensar no que acabamos de criar. Agora, basicamente, temos um banco de dados de eventos do Windows acessível através do PowerShell. Como observei anteriormente, existem conexões ou relacionamentos entre registros - via ParentProcessId - para que você possa obter uma hierarquia completa de processos.



Se você leu a série Adventures of Elusive Malware, sabe que os hackers adoram criar ataques complexos de vários estágios, nos quais cada processo desempenha seu pequeno papel e prepara um trampolim para a próxima etapa. Essas coisas são extremamente difíceis de capturar apenas do log "bruto".

Mas com minha equipe Get-Sysmonlogs e uma estrutura de dados adicional, que discutiremos mais adiante no texto (é claro, este é um gráfico), teremos uma maneira prática de detectar ameaças - para as quais você só precisa realizar uma pesquisa correta nos vértices.

Como sempre em nossos projetos de blog DYI, quanto mais você trabalha na análise de detalhes de ameaças em pequena escala, mais percebe o quão difícil é detectar ameaças no nível organizacional. E essa consciência é extremamente importante .



Encontraremos as primeiras dificuldades interessantes na segunda parte do artigo, onde começaremos a conectar os eventos Sysmon a estruturas muito mais complexas.



All Articles