Ler em inglês

Partilhar via


Sysmon v15.15

Por Mark Russinovich e Thomas Garnier

Publicado em: 23 de julho de 2024

DownloadBaixar Sysmon (4.6 MB)

Baixar Sysmon para Linux (GitHub)

Introdução

O Monitor do Sistema (Sysmon) é um serviço do sistema Windows e driver de dispositivo que, uma vez instalado em um sistema, permanece residente nas reinicializações do sistema para monitorar e registrar a atividade do sistema no log de eventos do Windows. Ele fornece informações detalhadas sobre criações de processos, conexões de rede e alterações no tempo de criação de arquivos. Ao coletar os eventos gerados usando a Coleta de Eventos do Windows ou agentes SIEM e, posteriormente, analisá-los, você pode identificar atividades maliciosas ou anômalas e entender como intrusos e malware operam em sua rede. O serviço é executado como um processo protegido, não permitindo assim uma ampla gama de interações de modo de usuário.

Note que o Sysmon não fornece análise dos eventos que gera, nem tenta esconder-se dos atacantes.

Visão geral dos recursos do Sysmon

O Sysmon inclui os seguintes recursos:

  • Registra a criação de processos com linha de comando completa para processos atuais e pai.
  • Registra o hash de arquivos de imagem de processo usando SHA1 (o padrão), MD5, SHA256 ou IMPHASH.
  • Vários hashes podem ser usados ao mesmo tempo.
  • Inclui um GUID de processo em eventos de criação de processo para permitir a correlação de eventos, mesmo quando o Windows reutiliza IDs de processo.
  • Inclui um GUID de sessão em cada evento para permitir a correlação de eventos na mesma sessão de logon.
  • Registra o carregamento de drivers ou DLLs com suas assinaturas e hashes.
  • Os logs são abertos para acesso bruto de leitura de discos e volumes.
  • Opcionalmente, registra conexões de rede, incluindo o processo de origem de cada conexão, endereços IP, números de porta, nomes de host e nomes de porta.
  • Deteta alterações no tempo de criação de arquivos para entender quando um arquivo foi realmente criado. A modificação de carimbos de data/hora de criação de arquivos é uma técnica comumente usada por malware para cobrir seus rastros.
  • Recarregue automaticamente a configuração se alterada no registro.
  • Filtragem de regras para incluir ou excluir determinados eventos dinamicamente.
  • Gera eventos desde o início do processo de inicialização para capturar a atividade feita até mesmo por malware sofisticado de modo kernel.

Capturas de ecrã

EventViewer

Utilização

Uso comum com opções de linha de comando simples para instalar e desinstalar o Sysmon, bem como para verificar e modificar sua configuração:

Instalar: sysmon64 -i [<configfile>]
Configuração da atualização: sysmon64 -c [<configfile>]
Manifesto do evento de instalação: sysmon64 -m
Esquema de impressão: sysmon64 -s
Desinstalar: sysmon64 -u [force]

Parâmetro Description
-i Instale o serviço e o driver. Opcionalmente, pegue um arquivo de configuração.
-c Atualize a configuração de um driver Sysmon instalado ou despeje a configuração atual se nenhum outro argumento for fornecido. Opcionalmente, leva um arquivo de configuração.
-m Instale o manifesto do evento (implicitamente feito na instalação do serviço também).
-s Definição do esquema de configuração de impressão.
-u Desinstale o serviço e o driver. O uso -u force faz com que a desinstalação prossiga mesmo quando alguns componentes não estão instalados.

O serviço registra eventos imediatamente e o driver é instalado como um driver de inicialização para capturar a atividade desde o início da inicialização que o serviço gravará no log de eventos quando ele for iniciado.

No Vista e superior, os eventos são armazenados em Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. Em sistemas mais antigos, os eventos são gravados no log de System eventos.

Se precisar de mais informações sobre arquivos de configuração, use o -? config comando.

Especifique -accepteula para aceitar automaticamente o EULA na instalação, caso contrário, você será solicitado interativamente a aceitá-lo.

Nem instalar nem desinstalar requer uma reinicialização.

Exemplos

Instalar com configurações padrão (processar imagens em hash com SHA1 e sem monitoramento de rede)

sysmon -accepteula -i

Instale o Sysmon com um arquivo de configuração (conforme descrito abaixo)

sysmon -accepteula -i c:\windows\config.xml

Desinstale o .

sysmon -u

Despejar a configuração atual

sysmon -c

Reconfigurar um Sysmon ativo com um arquivo de configuração (conforme descrito abaixo)

sysmon -c c:\windows\config.xml

Alterar a configuração para as configurações padrão

sysmon -c --

Mostrar o esquema de configuração

sysmon -s

evento

No Vista e superior, os eventos são armazenados no , e em sistemas mais antigos os eventos são gravados no Applications and Services Logs/Microsoft/Windows/Sysmon/Operationallog de System eventos. Os carimbos de data/hora do evento estão na hora padrão UTC.

A seguir estão exemplos de cada tipo de evento que o Sysmon gera.

ID do Evento 1: Criação do processo

O evento de criação de processo fornece informações estendidas sobre um processo recém-criado. A linha de comando completa fornece contexto sobre a execução do processo. O ProcessGUID campo é um valor exclusivo para esse processo em um domínio para facilitar a correlação de eventos. O hash é um hash completo do arquivo com os algoritmos no HashType campo.

ID do Evento 2: Um processo alterou um tempo de criação de arquivo

O evento change file creation time é registrado quando um tempo de criação de arquivo é explicitamente modificado por um processo. Esse evento ajuda a controlar o tempo real de criação de um arquivo. Os invasores podem alterar o tempo de criação de um arquivo de backdoor para fazer parecer que foi instalado com o sistema operacional. Observe que muitos processos alteram legitimamente o tempo de criação de um arquivo; não indica necessariamente atividade maliciosa.

ID do Evento 3: Conexão de rede

O evento de conexão de rede registra conexões TCP/UDP na máquina. Está desativado por predefinição. Cada conexão está ligada a um processo através dos ProcessId campos e ProcessGuid . O evento também contém os nomes de host de origem e destino, endereços IP, números de porta e status IPv6.

ID do Evento 4: Estado do serviço Sysmon alterado

O evento de alteração de estado do serviço relata o estado do serviço Sysmon (iniciado ou interrompido).

ID do Evento 5: Processo encerrado

O processo encerra relatórios de eventos quando um processo é encerrado. Fornece o UtcTime, ProcessGuid e ProcessId do processo.

ID do Evento 6: Driver carregado

Os eventos carregados pelo driver fornecem informações sobre um driver que está sendo carregado no sistema. Os hashes configurados são fornecidos, bem como informações de assinatura. A assinatura é criada de forma assíncrona por motivos de desempenho e indica se o arquivo foi removido após o carregamento.

ID do Evento 7: Imagem carregada

A imagem carregada registra eventos quando um módulo é carregado em um processo específico. Esse evento está desabilitado por padrão e precisa ser configurado com a opção "–l". Ele indica o processo em que o módulo é carregado, hashes e informações de assinatura. A assinatura é criada de forma assíncrona por motivos de desempenho e indica se o arquivo foi removido após o carregamento. Esse evento deve ser configurado com cuidado, pois o monitoramento de todos os eventos de carregamento de imagem gerará uma quantidade significativa de registro.

ID do Evento 8: CreateRemoteThread

O CreateRemoteThread evento deteta quando um processo cria um thread em outro processo. Esta técnica é usada por malware para injetar código e se esconder em outros processos. O evento indica o processo de origem e destino. Ele fornece informações sobre o código que será executado no novo thread: StartAddress, StartModule e StartFunction. Observe que StartModule e StartFunction os campos são inferidos, eles podem estar vazios se o endereço inicial estiver fora dos módulos carregados ou funções conhecidas exportadas.

ID do Evento 9: RawAccessRead

O RawAccessRead evento deteta quando um processo conduz operações de leitura da unidade usando a \\.\ denotação. Esta técnica é frequentemente usada por malware para exfiltração de dados de ficheiros que estão bloqueados para leitura, bem como para evitar ferramentas de auditoria de acesso a ficheiros. O evento indica o processo de origem e o dispositivo de destino.

ID do Evento 10: ProcessAccess

O processo acessou relatórios de eventos quando um processo abre outro processo, uma operação que geralmente é seguida por consultas de informações ou leitura e gravação do espaço de endereço do processo de destino. Isso permite a deteção de ferramentas de hacking que leem o conteúdo da memória de processos como a Autoridade de Segurança Local (Lsass.exe) para roubar credenciais para uso em ataques Pass-the-Hash. Habilitá-lo pode gerar quantidades significativas de registro se houver utilitários de diagnóstico ativos que abrem repetidamente processos para consultar seu estado, portanto, geralmente, isso só deve ser feito com filtros que removem os acessos esperados.

ID do Evento 11: FileCreate

As operações de criação de arquivo são registradas quando um arquivo é criado ou substituído. Este evento é útil para monitorar locais de início automático, como a pasta de inicialização, bem como diretórios temporários e de download, que são lugares comuns em que o malware cai durante a infeção inicial.

ID do Evento 12: RegistryEvent (Criação e exclusão de objetos)

As operações de criação e exclusão de chave e valor do Registro são mapeadas para esse tipo de evento, o que pode ser útil para monitorar alterações nos locais de inicialização automática do Registro ou modificações específicas do registro de malware.

O Sysmon usa versões abreviadas de nomes de chaves raiz do Registro, com os seguintes mapeamentos:

Nome da chave Abreviatura
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_LOCAL_MACHINE\System\ControlSet00x HKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\Classes HKCR

ID do Evento 13: RegistryEvent (conjunto de valores)

Esse tipo de evento do Registro identifica as modificações do valor do Registro. O evento registra o valor gravado para valores do Registro do tipo DWORD e QWORD.

ID do Evento 14: RegistryEvent (Renomeação de Chave e Valor)

As operações de renomeação de chave e valor do Registro são mapeadas para esse tipo de evento, registrando o novo nome da chave ou do valor que foi renomeado.

ID do Evento 15: FileCreateStreamHash

Esse evento registra quando um fluxo de arquivo nomeado é criado e gera eventos que registram o hash do conteúdo do arquivo ao qual o fluxo é atribuído (o fluxo sem nome), bem como o conteúdo do fluxo nomeado. Existem variantes de malware que descartam seus executáveis ou definições de configuração por meio de downloads do navegador, e esse evento tem como objetivo capturar isso com base no navegador anexando um Zone.Identifier fluxo de "marca da web".

ID do Evento 16: ServiceConfigurationChange

Esse evento registra alterações na configuração do Sysmon - por exemplo, quando as regras de filtragem são atualizadas.

ID do Evento 17: PipeEvent (Pipe Created)

Esse evento é gerado quando um pipe nomeado é criado. O malware geralmente usa pipes nomeados para comunicação entre processos.

ID do Evento 18: PipeEvent (Pipe Connected)

Esse evento registra quando uma conexão de pipe nomeado é feita entre um cliente e um servidor.

ID do Evento 19: WmiEvent (atividade WmiEventFilter detetada)

Quando um filtro de eventos WMI é registrado, que é um método usado por malware para executar, esse evento registra o namespace WMI, o nome do filtro e a expressão de filtro.

ID do Evento 20: WmiEvent (atividade WmiEventConsumer detetada)

Esse evento registra o registro de consumidores WMI, registrando o nome, o log e o destino do consumidor.

ID do Evento 21: WmiEvent (atividade WmiEventConsumerToFilter detetada)

Quando um consumidor se liga a um filtro, esse evento registra o nome do consumidor e o caminho do filtro.

ID do Evento 22: DNSEvent (consulta DNS)

Esse evento é gerado quando um processo executa uma consulta DNS, quer o resultado seja bem-sucedido ou falhe, armazenado em cache ou não. A telemetria para este evento foi adicionada para o Windows 8.1 e, portanto, não está disponível no Windows 7 e versões anteriores.

ID do Evento 23: FileDelete (File Delete arquivado)

Um arquivo foi excluído. Além de registrar o evento, o arquivo excluído também é salvo no ArchiveDirectory (que é C:\Sysmon por padrão). Em condições normais de operação, esse diretório pode crescer para um tamanho não razoável - consulte o ID do evento 26: para um comportamento semelhante, FileDeleteDetected mas sem salvar os arquivos excluídos.

ID do Evento 24: ClipboardChange (Novo conteúdo na área de transferência)

Esse evento é gerado quando o conteúdo da área de transferência do sistema é alterado.

ID do Evento 25: ProcessTampering (alteração da imagem do processo)

Este evento é gerado quando técnicas de ocultação de processos como "oco" ou "herpaderp" estão sendo detetadas.

ID do Evento 26: FileDeleteDetected (Exclusão de arquivo registrada)

Um arquivo foi excluído.

ID do Evento 27: FileBlockExecutable

Este evento é gerado quando Sysmon deteta e bloqueia a criação de arquivos executáveis (formato PE).

ID do Evento 28: FileBlockShredding

Esse evento é gerado quando o Sysmon deteta e bloqueia a destruição de arquivos de ferramentas como SDelete.

ID do Evento 29: FileExecutableDetected

Esse evento é gerado quando o Sysmon deteta a criação de um novo arquivo executável (formato PE).

ID do Evento 255: Erro

Este evento é gerado quando ocorreu um erro no Sysmon. Eles podem acontecer se o sistema estiver sob carga pesada e certas tarefas não puderem ser executadas ou se existir um bug no serviço Sysmon, ou mesmo se certas condições de segurança e integridade não forem atendidas. Você pode relatar quaisquer bugs no fórum Sysinternals ou pelo Twitter (@markrussinovich).

Arquivos de configuração

Os arquivos de configuração podem ser especificados após as opções de configuração -i (instalação) ou -c (instalação). Eles facilitam a implantação de uma configuração predefinida e o filtro de eventos capturados.

Um arquivo xml de configuração simples tem esta aparência:

<Sysmon schemaversion="4.82">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <DriverLoad onmatch="exclude">
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature>
    </DriverLoad>
    <!-- Do not log process termination -->
    <ProcessTerminate onmatch="include" />
    <!-- Log network connection if the destination port equal 443 -->
    <!-- or 80, and process isn't InternetExplorer -->
    <NetworkConnect onmatch="include">
      <DestinationPort>443</DestinationPort>
      <DestinationPort>80</DestinationPort>
    </NetworkConnect>
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">iexplore.exe</Image>
    </NetworkConnect>
  </EventFiltering>
</Sysmon>

O arquivo de configuração contém um atributo schemaversion na marca Sysmon. Esta versão é independente da versão binária do Sysmon e permite a análise de arquivos de configuração mais antigos. Você pode obter a versão atual do esquema usando a linha de comando "-? config". As entradas de configuração estão diretamente sob a tag e os Sysmon filtros estão sob a EventFiltering tag .

Entradas de configuração

As entradas de configuração são semelhantes às opções de linha de comando e incluem o seguinte

As entradas de configuração incluem o seguinte:

Entrada valor Description
ArquivoDiretório String Nome dos diretórios nas raízes do volume para os quais os arquivos copy-on-delete são movidos. O diretório é protegido com uma ACL do sistema (você pode usar PsExec de Sysinternals para acessar o diretório usando psexec -sid cmd). Predefinição: Sysmon
Revogação de verificação Boolean Controla as verificações de revogação de assinatura. Predefinição: True
CopyOnDeletePE Boolean Preserva arquivos de imagem executáveis excluídos. Predefinição: False
CopyOnDeleteSIDs Cadeias Lista separada por vírgulas de SIDs de conta para os quais as exclusões de arquivos serão preservadas.
CopyOnDeleteExtensions Cadeias Extensões para arquivos que são preservados na exclusão.
CopyOnDeleteProcesses Cadeias O(s) nome(s) do processo para o(s) qual(is) as exclusões de arquivo serão preservadas.
DnsLookup Boolean Controla a pesquisa reversa de DNS. Predefinição: True
Nome do driver String Usa o nome especificado para imagens de driver e serviço.
HashAlgorithms Cadeias Algoritmo(s) de hash para aplicar hashing. Os algoritmos suportados incluem MD5, SHA1, SHA256, IMPHASH e * (todos). Predefinição: None

As opções de linha de comando têm sua entrada de configuração descrita na saída de uso do Sysmon. Os parâmetros são opcionais com base na tag . Se uma opção de linha de comando também habilitar um evento, ela precisará ser configurada por meio de sua marca de filtro. Você pode especificar o -s switch para que o Sysmon imprima o esquema de configuração completo, incluindo marcas de evento, bem como os nomes e tipos de campo para cada evento. Por exemplo, aqui está o esquema para o RawAccessRead tipo de evento:

<event name="SYSMON_RAWACCESS_READ" value="9" level="Informational "template="RawAccessRead detected" rulename="RawAccessRead" version="2">  
  <data name="UtcTime" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="ProcessGuid" inType="win:GUID"/>  
  <data name="ProcessId" inType="win:UInt32" outType="win:PID"/>  
  <data name="Image" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="Device" inType="win:UnicodeString" outType="xs:string"/>  
</event>  

Entradas de filtragem de eventos

A filtragem de eventos permite filtrar os eventos gerados. Em muitos casos, os eventos podem ser barulhentos e reunir tudo não é possível. Por exemplo, você pode estar interessado em conexões de rede apenas para um determinado processo, mas não para todas. Você pode filtrar a saída no host reduzindo os dados a serem coletados.

Cada evento tem sua própria marca de filtro no nó EventFiltering em um arquivo de configuração:

ID Etiqueta Evento
1 ProcessoCriar Criação de processos
2 FileCreateTime Tempo de criação do ficheiro
3 Conexão de rede Conexão de rede detetada
4 n/d Alteração do estado do serviço Sysmon (não pode ser filtrado)
5 ProcessTerminate Processo encerrado
6 DriverLoad Driver carregado
7 ImageLoad Imagem carregada
8 CreateRemoteThread CreateRemoteThread detetado
9 RawAccessRead RawAccessRead detetado
10 Acesso ao processo Processo acessado
11 ArquivoCriar Arquivo criado
12 RegistroEvento Objeto do Registro adicionado ou excluído
13 RegistroEvento Conjunto de valores do Registro
14 RegistroEvento Objeto do Registro renomeado
15 FileCreateStreamHash Fluxo de arquivos criado
16 n/d Alteração de configuração do Sysmon (não pode ser filtrada)
17 PipeEvent Pipe nomeado criado
18 PipeEvent Pipe nomeado conectado
19 WmiEvent Filtro WMI
20 WmiEvent Consumidor WMI
21 WmiEvent Filtro de consumidor WMI
22 DNSQuery Consulta DNS
23 FileDelete Arquivo Excluir arquivado
24 Área de transferênciaAlterar Novo conteúdo na área de transferência
25 Adulteração de processos Alterar a imagem do processo
26 FileDeleteDetected Arquivo Excluir registrado
27 FileBlockExecutável Executável de bloco de arquivo
28 FileBlockShredding Destruição de blocos de arquivos
29 FileExecutableDetected Arquivo executável detetado

Você também pode encontrar essas tags no visualizador de eventos no nome da tarefa.

O onmatch filtro é aplicado se os eventos forem correspondidos. Ele pode ser alterado com o onmatch atributo para a tag de filtro. Se o valor for "include", significa que apenas os eventos correspondentes são incluídos. Se estiver definido como "exclude", o evento será incluído, exceto se uma regra corresponder. Você pode especificar um conjunto de filtros de inclusão e um conjunto de filtros de exclusão para cada ID de evento, onde as correspondências de exclusão têm precedência.

Cada filtro pode incluir zero ou mais regras. Cada tag sob a tag de filtro é um nome de campo do evento. As regras que especificam uma condição para o mesmo nome de campo se comportam como condições OU e as que especificam nomes de campo diferentes se comportam como condições AND. As regras de campo também podem usar condições para corresponder a um valor. As condições são as seguintes (todas não diferenciam maiúsculas de minúsculas):

Condition Descrição
é Padrão, os valores são iguais
é qualquer O campo é um dos ; valores delimitados
Não é Os valores são diferentes
contém: O campo contém este valor
contém qualquer seringa O campo contém qualquer um dos ; valores delimitados
contém todas as O campo contém todos os ; valores delimitados
exclui O campo não contém este valor
exclui qualquer O campo não contém um ou mais dos ; valores delimitados
exclui todos os O campo não contém nenhum dos ; valores delimitados
começar com O campo começa com este valor
terminar com O campo termina com este valor
não começar com O campo não começa com este valor
não termina com O campo não termina com este valor
menos de A comparação lexicográfica é inferior a zero
mais do que A comparação lexicográfica é mais do que zero
imagem Corresponder a um caminho de imagem (caminho completo ou apenas nome da imagem). Por exemplo: lsass.exe corresponderá c:\windows\system32\lsass.exe

Você pode usar uma condição diferente especificando-a como um atributo. Isso exclui a atividade de rede de processos com iexplore.exe em seu caminho:

<NetworkConnect onmatch="exclude">
  <Image condition="contains">iexplore.exe</Image>
</NetworkConnect>

Para que o Sysmon relate qual correspondência de regra resultou em um evento sendo registrado, adicione nomes às regras:

<NetworkConnect onmatch="exclude">
  <Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>

Você pode usar regras de inclusão e exclusão para a mesma tag, onde regras de exclusão substituem regras de inclusão. Dentro de uma regra, as condições do filtro têm comportamento OR.

Na configuração de exemplo mostrada anteriormente, o filtro de rede usa uma regra de inclusão e exclusão para capturar a atividade para as portas 80 e 443 por todos os processos, exceto aqueles que têm iexplore.exe em seu nome.

Também é possível substituir a maneira como as regras são combinadas usando um grupo de regras que permite que o tipo de combinação de regras para um ou mais eventos seja definido explicitamente como AND ou OR.

O exemplo a seguir demonstra esse uso. No primeiro grupo de regras, um evento process create será gerado quando timeout.exe for executado somente com um argumento de linha de comando de 100, mas um evento process terminate será gerado para o encerramento de ping.exe e timeout.exe.

  <EventFiltering>
    <RuleGroup name="group 1" groupRelation="and">
      <ProcessCreate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <CommandLine condition="contains">100</CommandLine>
      </ProcessCreate>
    </RuleGroup>
    <RuleGroup groupRelation="or">
      <ProcessTerminate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <Image condition="contains">ping.exe</Image>
      </ProcessTerminate>        
    </RuleGroup>
    <ImageLoad onmatch="include"/>
  </EventFiltering>

DownloadBaixar Sysmon (4.6 MB)

Funciona em:

  • Cliente: Windows 10 e superior.
  • Servidor: Windows Server 2016 e superior.