
Este artigo é a primeira parte de uma série sobre a análise de ameaças do Sysmon. Todas as outras partes da série:
Parte 1. Introdução à análise de logs do Sysmon (nós aqui)
Parte 2. Usando dados de eventos do Sysmon para identificar ameaças
Parte 3. Análise aprofundada de ameaças do Sysmon com gráficos
Se você trabalha com segurança da informação, certamente se depara frequentemente com ataques em andamento. Se você já tem um olho treinado, pode procurar atividades anômalas em logs "brutos" não processados — como um script PowerShell executando ou um script VBS fingindo ser um arquivo do Word — apenas percorrendo a última atividade no log de eventos do Windows. Mas isso realmente dá muita dor de cabeça. Felizmente, a Microsoft criou o Sysmon, que torna a análise de ataques muito mais fácil.
Quer entender as ideias básicas por trás das ameaças exibidas no log do Sysmon? Baixe nosso guia e você perceberá como insiders podem observar discretamente outros funcionários. O principal problema ao trabalhar com o log de eventos do Windows é a falta de informações sobre processos pai, ou seja, não é possível entender a hierarquia de processos. No entanto, os registros do log Sysmon contêm o identificador do processo pai, seu nome e a linha de comando executada. Obrigado, Microsoft.
Na primeira parte de nossa série, vamos observar o que pode ser feito com as informações básicas do Sysmon. Na segunda parte, iremos aproveitar totalmente as informações sobre processos pai para criar estruturas de correspondência mais complexas, conhecidas como gráficos de ameaças. Na terceira parte, examinaremos um algoritmo simples que escaneia o gráfico de ameaças em busca de atividades incomuns através da análise do "peso" do gráfico. E, no final, como recompensa, você encontrará um método probabilístico elegante (e compreensível) para a detecção de ameaças.
Parte 1: Introdução à análise de logs do Sysmon
O que pode ajudar a entender as complexidades do log de eventos? No final das contas, é o SIEM. Ele normaliza eventos e facilita a análise subsequente. Mas não precisamos ir tão longe, pelo menos por ora. No começo, para entender os princípios do SIEM, basta experimentar a maravilhosa ferramenta gratuita Sysmon. E é surpreendentemente fácil de usar. Muito bem, Microsoft!
Quais são as funcionalidades do Sysmon?
Em resumo – informações úteis e legíveis sobre os processos (veja as imagens abaixo). Você encontrará uma série de detalhes úteis que não estão no log de eventos do Windows, mas o mais importante são os seguintes campos:
- ID do processo (em forma decimal, e não hex!)
- ID do processo pai
- Linha de comando do processo
- Linha de comando do processo pai
- Hash da imagem do arquivo
- Nomes das imagens do arquivo
Sysmon é instalado simultaneamente como um driver de dispositivo e como um serviço – mais detalhes Sua principal vantagem é a capacidade de analisar logs de várias fontes, correlacionar informações e apresentar valores resultantes em uma única pasta de log, localizada no caminho Microsoft -> Windows -> Sysmon -> Operacional. Nas minhas próprias investigações de logs do Windows, que me deixavam arrepiado, eu constantemente tinha que alternar entre, digamos, a pasta de logs do PowerShell e a pasta 'Segurança', rolando pelos logs de eventos numa tentativa heroica de, de alguma forma, correlacionar os valores entre eles. Essa definitivamente não é uma tarefa fácil e, como descobri depois, teria sido melhor me preparar com aspirina desde o início.
O Sysmon faz um salto qualitativo, proporcionando informações úteis (ou como os vendedores gostam de dizer – eficazes) para ajudar na compreensão dos processos fundamentais. Por exemplo, eu executei uma sessão clandestina , simulando o movimento de um insider inteligente pela rede. Veja o que você verá no log de eventos do Windows:

O log do Windows exibe algumas informações sobre o processo, mas elas são pouco úteis. Além disso, os identificadores dos processos estão em hexadecimal???
Um profissional de TI que compreende os fundamentos do hacking deve achar suspeita a linha de comando. Usar cmd.exe para subsequentemente iniciar outro comando com redirecionamento da saída para um arquivo com um nome estranho – isso claramente se assemelha a ações de software de controle e gestão : dessa forma cria-se um pseudo-shell usando os serviços WMI.
Agora vamos dar uma olhada no equivalente de entrada do Sysmon, prestando atenção em quanta informação adicional ele nos fornece:

As capacidades do Sysmon em uma única captura de tela: detalhes sobre o processo de forma legível
Você não só vê a linha de comando, mas também o nome do arquivo, o caminho até o executável, o que o Windows sabe sobre isso (“Processador de Comandos do Windows”), o identificador do processo pai, a linha de comando do pai , que iniciou a shell cmd, bem como o verdadeiro nome do arquivo do processo pai. Tudo em um só lugar, finalmente!A partir do log do Sysmon, podemos concluir que, com alta probabilidade, essa linha de comando suspeita que vimos nos logs 'crus' não é resultado da atividade normal de um funcionário. Pelo contrário, foi gerada por um processo semelhante a C2 — wmiexec, como mencionei anteriormente — e foi diretamente criado pelo processo do serviço WMI (WmiPrvSe). Agora temos um indicador de que um invasor remoto ou um insider está testando a infraestrutura corporativa.
Apresentando Get-Sysmonlogs
É claro que é maravilhoso quando o Sysmon tem logs em um só lugar. Mas, provavelmente, seria ainda melhor se pudéssemos acessar os campos individuais do log programaticamente – por exemplo, através de comandos PowerShell. Nesse caso, poderia ser escrito um pequeno script PowerShell que automatizasse a busca por potenciais ameaças!
Não fui o primeiro a ter essa ideia. E é bom que em alguns tópicos de fóruns e GitHub
já tenha sido explicado como usar o PowerShell para analisar o log do Sysmon. No meu caso, eu queria evitar a necessidade de escrever linhas separadas de script de parsing para cada campo do Sysmon. Portanto, usei o princípio do homem que economiza trabalho e, ao que parece, acabei criando algo interessante. O primeiro ponto importante é a capacidade do comando
Get-WinEvent $events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Se você quiser verificar o funcionamento da equipe por conta própria, pode obter uma série de linhas de texto com um formato muito simples através da exibição do conteúdo no primeiro elemento do array $events, $events[0].Message.

Uhul! Saída do log Sysmon em formato JSON pronto.
Você está pensando na mesma coisa que eu? Com um pouco mais de esforço, podemos converter a saída em uma string formatada em JSON e, em seguida, carregá-la diretamente em um objeto PS usando um poderoso comando. .
Vou mostrar o código PowerShell para conversão – é muito simples – na próxima parte. Mas, por enquanto, vamos dar uma olhada no que minha nova equipe chamada get-sysmonlogs, que instalei como módulo PS, pode fazer.
Em vez de aprofundar na análise dos logs Sysmon através da interface desconfortável do log de eventos, podemos facilmente buscar atividades incrementais diretamente da sessão PowerShell e também usar o comando PS. (alias – "?") para encurtar os resultados da consulta:

Lista de shells cmd executados via WMI. Análise de ameaças a baixo custo usando nosso próprio comando Get-Sysmonlogs.
Incrível! Eu criei uma ferramenta de pesquisa do log Sysmon como se fosse um banco de dados. No nosso artigo sobre foi mencionado que essa função seria realizada pela fantástica ferramenta descrita, embora formalmente ainda através de uma interface SQL-like real. Sim, EQL é elegante,mas vamos abordar isso na terceira parte.
Sysmon e análise de grafos
Vamos abstrair e pensar no que acabamos de criar. Essencialmente, agora temos um banco de dados de eventos do Windows acessível via PowerShell. Como mencionei anteriormente, há conexões ou relações entre os registros – através do ParentProcessId – assim, podemos obter uma hierarquia completa de processos.
Se você leu a série você sabe que os hackers adoram criar ataques complexos em várias etapas, onde cada processo desempenha seu pequeno papel e prepara o terreno para o próximo passo. Essas coisas são extremamente difíceis de detectar apenas a partir do log "cru".
Mas com meu comando Get-Sysmonlogs e a estrutura de dados adicional que abordaremos a seguir (claro, é um grafo), teremos uma maneira prática de detectar ameaças – para o que apenas requer realizar a busca correta nas vértices.
Como sempre em nossos projetos de blog DYI, quanto mais você trabalha na análise dos detalhes das ameaças em pequena escala, melhor você percebe o quão complexo é detectar ameaças em nível organizacional. E essa percepção é extremamente importante.
Enfrentaremos as primeiras complexidades interessantes na segunda parte do artigo, onde começaremos a conectar eventos do Sysmon em estruturas muito mais complexas.
Fonte: habr.com
