Sysmon v15.14

Por Mark Russinovich e Thomas Garnier

Publicado: 13 de fevereiro de 2024

DownloadBaixar Sysmon(4.6 KB)

Baixar o Sysmon para Linux (GitHub)

Introdução

O Monitor do Sistema (Sysmon) é um serviço e driver de dispositivo do sistema Windows que, uma vez instalado em um sistema, permanece residente durante as 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 na hora de criação dos arquivos. Ao coletar os eventos que ele gera usando a Coleção de Eventos do Windows ou agentes SIEM e analisá-los, você pode identificar atividades mal-intencionadas 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 no modo de usuário.

Observe que o Sysmon não fornece análise dos eventos gerados, nem tenta se ocultar de invasores.

Visão geral das funcionalidades do Sysmon

O Sysmon inclui os seguintes recursos:

  • Registra em log a criação do processo com linha de comando completa para processos atuais e pai.
  • Regista o hash dos ficheiros de imagem do processo com SHA1 (a predefinição), MD5, SHA256 ou IMPHASH.
  • É possível usar vários hashes 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 em log 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, endereços IP, números de porta, nomes de host e nomes de porta de cada conexão.
  • Detecta alterações na hora de criação do arquivo para reconhecer quando um arquivo foi realmente criado. A modificação de carimbos de data/hora de criação de arquivo é uma técnica comumente usada por malware para cobrir seus rastros.
  • Recarrega automaticamente a configuração se ela for 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 atividades feitas até mesmo por malwares sofisticados no modo kernel.

Capturas de tela

EventViewer

Uso

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>]
Atualizar configuração: sysmon64 -c [<configfile>]
Instalar o manifesto do evento: sysmon64 -m
Esquema de Impressão: sysmon64 -s
Desinstalar: sysmon64 -u [force]

Parâmetro Descrição
-i Instalar o serviço e o driver. Opcionalmente, use um arquivo de configuração.
-c Atualizar a configuração de um driver Sysmon instalado ou descartar a configuração atual se nenhum outro argumento for fornecido. Opcionalmente, use um arquivo de configuração.
-m Instalar o manifesto do evento (feito implicitamente também na instalação do serviço).
-s Definição de esquema de configuração de impressão.
-u Desinstalar o serviço e o driver. Usar -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 eventos System.

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

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 com hash com SHA1 e sem monitoramento de rede)

sysmon -accepteula -i

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

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

Desinstalar

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

Eventos

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

Veja a seguir exemplos de cada tipo de evento gerado pelo Sysmon.

ID do evento 1: criação do processo

O evento de criação do 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 campo ProcessGUID é um valor exclusivo para esse processo em um domínio para facilitar a correlação de eventos. O hash é um hash completo do ficheiro com os algoritmos no campo HashType.

ID do evento 2: um processo alterou a hora de criação de um arquivo

O evento de alteração da hora de criação do arquivo é registrado quando uma hora de criação de arquivo é modificada explicitamente por um processo. Esse evento ajuda a rastrear o tempo real de criação de um arquivo. Os invasores podem alterar a hora de criação de arquivo de um backdoor para fazer parecer que ele foi instalado com o sistema operacional. Observe que muitos processos alteram legitimamente a hora de criação de um arquivo; isso não indica necessariamente atividade mal-intencionada.

ID do evento 3: conexão de rede

O evento de conexão de rede registra conexões TCP/UDP no computador. Isso está desabilitado por padrão. Cada conexão é vinculada a um processo por meio dos campos ProcessId e ProcessGuid . O evento também contém os endereços IP de nomes de host de origem e destino, números de porta e status IPv6.

ID do evento 4: estado do serviço Sysmon alterado

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

ID do evento 5: Processo encerrado

O processo encerra os relatórios de eventos quando um processo é encerrado. Ele fornece UtcTime, ProcessGuid eProcessId do processo.

ID do evento 6: driver carregado

Os eventos de driver carregado 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

Os eventos de imagem carregada registra quando um módulo é carregado em um processo específico. Esse evento é desabilitado por padrão e precisa ser configurado com a opção "–l". Indica o processo no qual 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 em log.

ID do evento 8: CreateRemoteThread

O evento CreateRemoteThread detecta quando um processo cria um thread em outro processo. Essa técnica é usada por malware para injetar código e se ocultar 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 os campos StartModule e StartFunction são inferidos, eles podem estar vazios se o endereço inicial estiver fora dos módulos carregados ou das funções exportadas conhecidas.

ID do evento 9: RawAccessRead

O evento RawAccessRead detecta quando um processo realiza operações de leitura da unidade usando a denotação \\.\ . Essa técnica geralmente é usada por malware para exfiltração de dados de arquivos bloqueados para leitura, bem como para evitar ferramentas de auditoria de acesso a arquivos. O evento indica o processo de origem e o dispositivo de destino.

ID do evento 10: ProcessAccess

O evento de acesso a processo relata 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 detecçã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 poderá gerar quantidades significativas de registro em log se houver utilitários de diagnóstico ativos que abram repetidamente processos para consultar seu estado, portanto, geralmente 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. Esse evento é útil para monitorar locais de início automático, como a pasta Inicialização, bem como diretórios temporários e de download, que são locais comuns de adição de malware durante a infecção inicial.

ID do evento 12: RegistryEvent (criação e exclusão de objeto)

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 em locais de início automático do Registro ou modificações específicas do registro provocadas por malware.

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

Nome da chave Abreviação
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 de valor do registro. O evento registra o valor gravado para os 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 valor que foi renomeado.

ID do evento 15: FileCreateStreamHash

Este evento regista quando é criada uma transmissão em fluxo de ficheiros nomeados e gera eventos que registam o hash do conteúdo do ficheiro ao qual a transmissão em fluxo foi atribuída (a transmissão em fluxo sem nome), bem como o conteúdo da transmissão em fluxo com nome. Há variantes de malware que soltam 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 que anexa um fluxo de "marca da Web" Zone.Identifier.

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 criado)

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 conectado)

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

ID do evento 19: WmiEvent (atividade WmiEventFilter detectada)

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

ID do evento 20: WmiEvent (atividade WmiEventConsumer detectada)

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

ID do evento 21: WmiEvent (atividade WmiEventConsumerToFilter detectada)

Quando um consumidor se associa 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, sendo o resultado bem-sucedido ou falha, armazenado em cache ou não. A telemetria para esse evento foi adicionada para Windows 8.1, portanto ela não está disponível no Windows 7 e versões anteriores.

ID do evento 23: FileDelete (Exclusão de Arquivo arquivada)

Um arquivo foi excluído. Além disso, para registrar o evento em log, o arquivo excluído também é salvo no ArchiveDirectory (que é C:\Sysmon por padrão). Em condições operacionais normais, esse diretório pode aumentar para um tamanho despropositado – consulte A ID do evento 26: FileDeleteDetected por um comportamento semelhante, 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)

Esse evento é gerado quando técnicas de ocultação de processo, como "hollow" ou "herpaderp" estão sendo detectadas.

ID do evento 26: FileDeleteDetected (exclusão de arquivo registrada)

Um arquivo foi excluído.

ID do evento 27: FileBlockExecutable

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

ID do evento 28: FileBlockShredding

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

ID do evento 29: FileExecutableDetected

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

ID do evento 255: Erro

Esse evento é gerado quando ocorreu um erro no Sysmon. Eles podem acontecer se o sistema estiver sob carga pesada e determinadas tarefas não puderem ser executadas ou se houver um bug no serviço Sysmon ou mesmo se determinadas condições de segurança e integridade não forem atendidas. Você pode relatar quaisquer bugs no fórum do Sysinternals ou no 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 a filtragem 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. Essa 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 marca Sysmon e os filtros estão sob a marca EventFiltering.

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:

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

Os comutadores 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 marca. Se um comutador de linha de comando também habilitar um evento, ele precisará ser configurado por meio de sua marca de filtro. Você pode especificar a opção -s 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 tipo de evento RawAccessRead:

<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 eventos gerados. Em muitos casos, os eventos podem estar emaranhados e não é possível coletar tudo. Por exemplo, você pode estar interessado em conexões de rede apenas para um determinado processo, mas não em todos eles. 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 Marca Evento
1 ProcessCreate Criação de processo
2 FileCreateTime Hora de criação do arquivo
3 NetworkConnect Conexão de rede detectada
4 N/D Alteração do estado de serviço do Sysmon (não pode ser filtrado)
5 ProcessTerminate Processo encerrado
6 DriverLoad Driver Carregado
7 ImageLoad Imagem carregada
8 CreateRemoteThread CreateRemoteThread detectado
9 RawAccessRead RawAccessRead detectado
10 ProcessAccess Processo acessado
11 FileCreate Arquivo criado
12 RegistryEvent Objeto do registro adicionado ou excluído
13 RegistryEvent Conjunto de valores do registro
14 RegistryEvent 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 Consultas DNS
23 FileDelete Exclusão de arquivo arquivado
24 ClipboardChange Novo conteúdo na área de transferência
25 ProcessTampering Processar alteração de imagem
26 FileDeleteDetected Exclusão de arquivo registrada em log
27 FileBlockExecutable Executável de Bloco de Arquivos
28 FileBlockShredding Fragmentação de bloco de arquivo
29 FileExecutableDetected Executável de Arquivo Detectado

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

O filtro onmatch será aplicado se houver correspondência entre eventos. Ele pode ser alterado com o atributo onmatch da marca de filtro. Se o valor for "include", isso significa que apenas os eventos correspondentes serão incluídos. Se estiver definido como "exclude", o evento será incluído, exceto se houver uma regra correspondente. Você pode especificar um conjunto de filtros de inclusão e um conjunto de filtros de exclusão para cada ID de evento, em que as correspondências de exclusão têm precedência.

Cada filtro pode incluir zero ou mais regras. Cada marca sob a marca 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 OR e as que especificam nome de campo diferente 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 (Nenhuma delas diferencia maiúsculas de minúsculas):

Condição Descrição
is Padrão, os valores são iguais
é qualquer O campo é um dos valores delimitados por ;
não é Os valores são diferentes
contains O campo contém esse valor
contém qualquer O campo contém qualquer um dos valores delimitados por ;
contém tudo O campo contém qualquer um dos valores delimitados por ;
exclui O campo não contém esse valor
exclui qualquer O campo não contém um ou mais dos valores delimitados por ;
exclui todos O campo não contém nenhum dos valores delimitados por ;
começar com O campo começa com esse valor
terminar com O campo termina com esse valor
não começar com O campo não começa com esse valor
não terminar com O campo não termina com esse valor
menor que A comparação lexicográfica é menor que zero
maior que A comparação lexicográfica é superior a zero
imagem Corresponder a um caminho de imagem (caminho completo ou apenas nome de imagem). Por exemplo: lsass.exe corresponderá a 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 no registro de um evento, 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 marca, em que a substituição de regras de exclusão inclui regras. Dentro de uma regra, as condições de 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 a regra combine o tipo para que um ou mais eventos sejam definidos explicitamente como AND ou OR.

O exemplo a seguir demonstra esse uso. No primeiro grupo de regras, um evento de criação de processo será gerado quando timeout.exe for executado apenas com um argumento de linha de comando de 100, mas um evento de encerramento de processo 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 KB)

Executado em:

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