Sysmon v15.15
Por Mark Russinovich e Thomas Garnier
Publicado em: 23 de julho de 2024
Baixar Sysmon (4.6 MB)
Baixar Sysmon para Linux (GitHub)
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.
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.
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.
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
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/Operational
log 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.
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.
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.
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.
O evento de alteração de estado do serviço relata o estado do serviço Sysmon (iniciado ou interrompido).
O processo encerra relatórios de eventos quando um processo é encerrado. Fornece o UtcTime
, ProcessGuid
e ProcessId
do processo.
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.
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.
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.
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.
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.
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.
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 |
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
.
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.
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".
Esse evento registra alterações na configuração do Sysmon - por exemplo, quando as regras de filtragem são atualizadas.
Esse evento é gerado quando um pipe nomeado é criado. O malware geralmente usa pipes nomeados para comunicação entre processos.
Esse evento registra quando uma conexão de pipe nomeado é feita entre um cliente e um servidor.
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.
Esse evento registra o registro de consumidores WMI, registrando o nome, o log e o destino do consumidor.
Quando um consumidor se liga a um filtro, esse evento registra o nome do consumidor e o caminho do filtro.
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.
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.
Esse evento é gerado quando o conteúdo da área de transferência do sistema é alterado.
Este evento é gerado quando técnicas de ocultação de processos como "oco" ou "herpaderp" estão sendo detetadas.
Um arquivo foi excluído.
Este evento é gerado quando Sysmon deteta e bloqueia a criação de arquivos executáveis (formato PE).
Esse evento é gerado quando o Sysmon deteta e bloqueia a destruição de arquivos de ferramentas como SDelete.
Esse evento é gerado quando o Sysmon deteta a criação de um novo arquivo executável (formato PE).
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).
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 .
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>
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>
Baixar Sysmon (4.6 MB)
Funciona em:
- Cliente: Windows 10 e superior.
- Servidor: Windows Server 2016 e superior.