Sysmon v14.14

Por Mark Russinovich y Thomas Garnier

Publicado: 25 de enero de 2023

DescargarDescargar Sysmon(4.6 MB)

Descarga de Sysmon para Linux (GitHub)

Introducción

El Monitor de sistema (Sysmon) es un servicio del sistema de Windows y un controlador de dispositivo que, una vez instalado en un sistema, permanece residente en los reinicios del sistema para supervisar y registrar la actividad del sistema en el registro de eventos de Windows. Proporciona información detallada sobre la creación de procesos, las conexiones de red y los cambios en la hora de creación de los archivos. Al recopilar los eventos que genera mediante la recopilación de eventos de Windows o agentes SIEM y, posteriormente, analizarlos, puede identificar actividades malintencionadas o anómalas y comprender cómo funcionan los intrusos y el malware en la red.

Tenga en cuenta que Sysmon no proporciona análisis de los eventos que genera, ni intenta protegerse ni ocultarse de los atacantes.

Información general sobre las funcionalidades de Sysmon

Sysmon incluye las siguientes funcionalidades:

  • Registra la creación de procesos con línea de comandos completa para los procesos actuales y primarios.
  • Registra el hash de los archivos de imagen de proceso mediante SHA1 (valor predeterminado), MD5, SHA256 o IMPHASH.
  • Se pueden usar varios hash al mismo tiempo.
  • Incluye un GUID de proceso en los eventos de creación de procesos para permitir la correlación de eventos incluso cuando Windows reutiliza los identificadores de proceso.
  • Incluye un GUID de sesión en cada evento para permitir la correlación de eventos en la misma sesión de inicio de sesión.
  • Registra la carga de controladores o archivos DLL con sus firmas y hashes.
  • Los registros se abren para el acceso de lectura sin formato de los discos y volúmenes.
  • Opcionalmente, registra las conexiones de red, incluido el proceso de origen de cada conexión, las direcciones IP, los números de puerto, los nombres de host y los nombres de puerto.
  • Detecta los cambios en el tiempo de creación de archivos para comprender cuándo se creó realmente un archivo. La modificación de las marcas de tiempo de creación de archivos es una técnica que suele usar el malware para cubrir sus pistas.
  • Vuelva a cargar automáticamente la configuración si se cambia en el Registro.
  • Filtrado de reglas para incluir o excluir determinados eventos dinámicamente.
  • Genera eventos desde el principio del proceso de arranque para capturar la actividad realizada por malware en modo kernel incluso sofisticado.

Capturas de pantalla

EventViewer

Uso

Uso común con opciones sencillas de línea de comandos para instalar y desinstalar Sysmon, así como para comprobar y modificar su configuración:

Instalar: sysmon64 -i [<configfile>]
Configuración de actualización: sysmon64 -c [<configfile>]
Instalar manifiesto de evento: sysmon64 -m
Esquema de impresión: sysmon64 -s
Desinstalar: sysmon64 -u [force]

Parámetro Descripción
-i Instale el servicio y el controlador. Opcionalmente, tome un archivo de configuración.
-c Actualice la configuración de un controlador Sysmon instalado o volque la configuración actual si no se proporciona ningún otro argumento. Opcionalmente, toma un archivo de configuración.
-m Instale también el manifiesto de evento (hecho implícitamente en la instalación del servicio).
-s Imprimir definición de esquema de configuración.
-u Desinstale el servicio y el controlador. El uso -u force de hace que la desinstalación continúe incluso cuando algunos componentes no están instalados.

El servicio registra los eventos inmediatamente y el controlador se instala como un controlador de arranque para capturar la actividad desde el principio del arranque que el servicio escribirá en el registro de eventos cuando se inicie.

En Vista y versiones posteriores, los eventos se almacenan en Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. En sistemas anteriores, los eventos se escriben en el registro de System eventos.

Si necesita más información sobre los archivos de configuración, use el -? config comando .

Especifique -accepteula que acepte automáticamente el CLUF en la instalación; de lo contrario, se le pedirá interactivamente que lo acepte.

Ni instalar ni desinstalar requiere un reinicio.

Ejemplos

Instalación con la configuración predeterminada (procesar imágenes con hash con SHA1 y sin supervisión de red)

sysmon -accepteula -i

Instalación de Sysmon con un archivo de configuración (como se describe a continuación)

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

Desinstalación

sysmon -u

Volcar la configuración actual

sysmon -c

Volver a configurar un sysmon activo con un archivo de configuración (como se describe a continuación)

sysmon -c c:\windows\config.xml

Cambiar la configuración a valores predeterminados

sysmon -c --

Mostrar el esquema de configuración

sysmon -s

Eventos

En Vista y versiones posteriores, los eventos se almacenan en y en los eventos de sistemas anteriores se escriben en Applications and Services Logs/Microsoft/Windows/Sysmon/Operationalel System registro de eventos. Las marcas de tiempo del evento están en hora estándar UTC.

A continuación se muestran ejemplos de cada tipo de evento que genera Sysmon.

Id. de evento 1: Creación de procesos

El evento de creación de procesos proporciona información extendida sobre un proceso recién creado. La línea de comandos completa proporciona contexto sobre la ejecución del proceso. El ProcessGUID campo es un valor único para este proceso en un dominio para facilitar la correlación de eventos. El hash es un hash completo del archivo con los algoritmos del HashType campo .

Id. de evento 2: un proceso cambió la hora de creación de un archivo

El evento de hora de creación del archivo de cambio se registra cuando un proceso modifica explícitamente una hora de creación de archivos. Este evento ayuda a realizar el seguimiento del tiempo real de creación de un archivo. Los atacantes pueden cambiar la hora de creación de archivos de una puerta trasera para que parezca que se instaló con el sistema operativo. Tenga en cuenta que muchos procesos cambian legítimamente la hora de creación de un archivo; no indica necesariamente actividad malintencionada.

Id. de evento 3: Conexión de red

El evento de conexión de red registra conexiones TCP/UDP en la máquina. Esta opción está deshabilitada de manera predeterminada. Cada conexión está vinculada a un proceso a través de los ProcessId campos y ProcessGuid . El evento también contiene las direcciones IP de los nombres de host de origen y destino, los números de puerto y el estado IPv6.

Id. de evento 4: Estado del servicio Sysmon cambiado

El evento de cambio de estado del servicio informa del estado del servicio Sysmon (iniciado o detenido).

Id. de evento 5: Proceso terminado

El proceso finaliza los informes de eventos cuando finaliza un proceso. Proporciona , UtcTimeProcessGuid y ProcessId del proceso.

Id. de evento 6: Controlador cargado

Los eventos cargados por el controlador proporcionan información sobre un controlador que se carga en el sistema. Se proporcionan los hash configurados, así como la información de firma. La firma se crea de forma asincrónica por motivos de rendimiento e indica si el archivo se quitó después de la carga.

Id. de evento 7: Imagen cargada

La imagen carga los registros de eventos cuando se carga un módulo en un proceso específico. Este evento está deshabilitado de forma predeterminada y debe configurarse con la opción "–l". Indica el proceso en el que se carga el módulo, los hashes y la información de firma. La firma se crea de forma asincrónica por motivos de rendimiento e indica si el archivo se quitó después de la carga. Este evento debe configurarse cuidadosamente, ya que la supervisión de todos los eventos de carga de imágenes generará una cantidad significativa de registro.

Identificador de evento 8: CreateRemoteThread

El CreateRemoteThread evento detecta cuándo un proceso crea un subproceso en otro proceso. Esta técnica se usa mediante malware para insertar código y ocultarse en otros procesos. El evento indica el proceso de origen y destino. Proporciona información sobre el código que se ejecutará en el nuevo subproceso: StartAddress, StartModule y StartFunction. Tenga en cuenta que StartModule los campos y StartFunction se deducen, pueden estar vacíos si la dirección inicial está fuera de los módulos cargados o las funciones exportadas conocidas.

Id. de evento 9: RawAccessRead

El RawAccessRead evento detecta cuándo un proceso realiza operaciones de lectura desde la unidad mediante la \\.\ denotación. Esta técnica se usa a menudo por malware para la filtración de datos de archivos que están bloqueados para la lectura, así como para evitar herramientas de auditoría de acceso a archivos. El evento indica el proceso de origen y el dispositivo de destino.

Id. de evento 10: ProcessAccess

El proceso al que se accede a los eventos informa cuando un proceso abre otro proceso, una operación que a menudo va seguida de consultas de información o de lectura y escritura del espacio de direcciones del proceso de destino. Esto permite la detección de herramientas de pirateo que leen el contenido de memoria de procesos como la autoridad de seguridad local (Lsass.exe) para robar credenciales para su uso en ataques pass-the-hash. Habilitarlo puede generar cantidades significativas de registro si hay utilidades de diagnóstico activas que abren repetidamente procesos para consultar su estado, por lo que generalmente solo se debe hacer con filtros que quiten los accesos esperados.

Id. de evento 11: FileCreate

Las operaciones de creación de archivos se registran cuando se crea o se sobrescribe un archivo. Este evento es útil para supervisar las ubicaciones de inicio automático, como la carpeta de inicio, así como los directorios temporales y de descarga, que son lugares comunes donde el malware cae durante la infección inicial.

Id. de evento 12: RegistryEvent (creación y eliminación de objetos)

La clave del Registro y el valor crean y eliminan operaciones se asignan a este tipo de evento, lo que puede ser útil para supervisar los cambios en las ubicaciones de inicio automático del Registro o modificaciones específicas del registro de malware.

Sysmon usa versiones abreviadas de nombres de clave raíz del Registro, con las siguientes asignaciones:

Nombre de clave Abreviatura
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_LOCAL_MACHINE\System\ControlSet00x HKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\Classes HKCR

Id. de evento 13: RegistryEvent (conjunto de valores)

Este tipo de evento del Registro identifica las modificaciones del valor del Registro. El evento registra el valor escrito para los valores del Registro de tipo DWORD y QWORD.

Id. de evento 14: RegistryEvent (nombre de clave y valor)

Las operaciones de cambio de nombre de clave y valor del Registro se asignan a este tipo de evento, registrando el nuevo nombre de la clave o valor cuyo nombre se ha cambiado.

Id. de evento 15: FileCreateStreamHash

Este evento registra cuando se crea una secuencia de archivos con nombre y genera eventos que registran el hash del contenido del archivo al que se asigna la secuencia (la secuencia sin nombre), así como el contenido de la secuencia con nombre. Hay variantes de malware que quitan sus archivos ejecutables o opciones de configuración a través de descargas del explorador, y este evento está dirigido a capturar que en función del explorador que adjunte una Zone.Identifier secuencia de "marca de la web".

Id. de evento 16: ServiceConfigurationChange

Este evento registra los cambios en la configuración de Sysmon, por ejemplo, cuando se actualizan las reglas de filtrado.

Id. de evento 17: PipeEvent (canalización creada)

Este evento genera cuando se crea una canalización con nombre. El malware suele usar canalizaciones con nombre para la comunicación entre procesos.

Id. de evento 18: PipeEvent (canalización conectada)

Este evento registra cuando se realiza una conexión de canalización con nombre entre un cliente y un servidor.

Id. de evento 19: WmiEvent (actividad WmiEventFilter detectada)

Cuando se registra un filtro de eventos WMI, que es un método utilizado por malware para ejecutarse, este evento registra el espacio de nombres WMI, el nombre de filtro y la expresión de filtro.

Id. de evento 20: WmiEvent (actividad WmiEventConsumer detectada)

Este evento registra el registro de los consumidores de WMI, registrando el nombre del consumidor, el registro y el destino.

Id. de evento 21: WmiEvent (actividad WmiEventConsumerToFilter detectada)

Cuando un consumidor se enlaza a un filtro, este evento registra el nombre del consumidor y la ruta de acceso de filtro.

Id. de evento 22: DNSEvent (consulta DNS)

Este evento se genera cuando un proceso ejecuta una consulta DNS, si el resultado es correcto o no, se almacena en caché o no. La telemetría de este evento se agregó para Windows 8.1 por lo que no está disponible en Windows 7 y versiones anteriores.

Id. de evento 23: FileDelete (eliminación de archivo archivado)

Se eliminó un archivo. Además de registrar el evento, el archivo eliminado también se guarda en ( ArchiveDirectory que es C:\Sysmon de forma predeterminada). En condiciones de funcionamiento normales, este directorio puede crecer a un tamaño irrazonable; consulte el identificador de evento 26: FileDeleteDetected para un comportamiento similar, pero sin guardar los archivos eliminados.

Id. de evento 24: ClipboardChange (nuevo contenido en el Portapapeles)

Este evento se genera cuando cambia el contenido del Portapapeles del sistema.

Id. de evento 25: ProcessTampering (procesar cambio de imagen)

Este evento se genera cuando se detectan técnicas de ocultación de procesos como "hueco" o "herpaderp".

Id. de evento 26: FileDeleteDetected (eliminación de archivos registrada)

Se eliminó un archivo.

Id. de evento 27: FileBlockExecutable

Este evento se genera cuando Sysmon detecta y bloquea la creación de archivos ejecutables.

Id. de evento 28: FileBlockShredding

Este evento se genera cuando Sysmon detecta y bloquea la fragmentación de archivos de herramientas como SDelete.

Id. de evento 255: Error

Este evento se genera cuando se produjo un error en Sysmon. Pueden ocurrir si el sistema está bajo una carga pesada y no se pudieron realizar ciertas tareas o si no existe un error en el servicio Sysmon, o incluso si no se cumplen ciertas condiciones de seguridad e integridad. Puede notificar cualquier error en el foro de Sysinternals o en Twitter (@markrussinovich).

Archivos de configuración

Los archivos de configuración se pueden especificar después de los modificadores de configuración -i (instalación) o -c (instalación). Facilitan la implementación de una configuración preestablecida y el filtrado de eventos capturados.

Un archivo XML de configuración simple tiene el siguiente aspecto:

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

El archivo de configuración contiene un atributo schemaversion en la etiqueta Sysmon. Esta versión es independiente de la versión binaria de Sysmon y permite el análisis de archivos de configuración anteriores. Puede obtener la versión del esquema actual mediante la línea de comandos "-? config". Las entradas de configuración se encuentran directamente bajo la Sysmon etiqueta y los filtros están bajo la EventFiltering etiqueta .

Entradas de configuración

Las entradas de configuración son similares a los modificadores de la línea de comandos e incluyen lo siguiente:

Las entradas de configuración incluyen lo siguiente:

Entrada Value Descripción
ArchiveDirectory String Nombre de directorios en raíces de volumen en los que se mueven los archivos de copia en eliminación. El directorio está protegido con una ACL del sistema (puede usar PsExec de Sysinternals para acceder al directorio mediante psexec -sid cmd). Valor predeterminado: Sysmon
CheckRevocation Boolean Controla las comprobaciones de revocación de firmas. Valor predeterminado: True
CopyOnDeletePE Boolean Conserva los archivos de imagen ejecutable eliminados. Valor predeterminado: False
CopyOnDeleteSIDs Cadenas Lista separada por comas de SID de cuenta para las que se conservarán las eliminaciones de archivos.
CopyOnDeleteExtensions Cadenas Extensiones de los archivos que se conservan al eliminar.
CopyOnDeleteProcesses Cadenas Nombres de proceso para los que se conservarán las eliminaciones de archivos.
DnsLookup Boolean Controla la búsqueda inversa de DNS. Valor predeterminado: True
DriverName String Usa el nombre especificado para las imágenes de controlador y servicio.
HashAlgorithms Cadenas Algoritmos hash que se van a aplicar para el hash. Los algoritmos admitidos incluyen MD5, SHA1, SHA256, IMPHASH y * (todos). Valor predeterminado: None

Los modificadores de línea de comandos tienen su entrada de configuración descrita en la salida de uso de Sysmon. Los parámetros son opcionales en función de la etiqueta . Si un modificador de línea de comandos también habilita un evento, debe configurarse a través de su etiqueta de filtro. Puede especificar el -s modificador para que Sysmon imprima el esquema de configuración completo, incluidas las etiquetas de evento, así como los nombres de campo y los tipos de cada evento. Por ejemplo, este es el esquema del tipo de RawAccessRead 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 filtrado de eventos

El filtrado de eventos permite filtrar los eventos generados. En muchos casos, los eventos pueden ser ruidosos y recopilar todo no es posible. Por ejemplo, es posible que le interesen las conexiones de red solo para un proceso determinado, pero no para todos ellos. Puede filtrar la salida en el host, lo que reduce los datos que se van a recopilar.

Cada evento tiene su propia etiqueta de filtro en el nodo EventFiltering en un archivo de configuración:

ID Etiqueta Evento
1 ProcessCreate Creación de procesos
2 FileCreateTime Hora de creación de archivos
3 NetworkConnect Conexión de red detectada
4 N/D Cambio de estado del servicio Sysmon (no se puede filtrar)
5 ProcessTerminate Proceso terminado
6 DriverLoad Controlador cargado
7 ImageLoad Imagen cargada
8 CreateRemoteThread CreateRemoteThread detectado
9 RawAccessRead RawAccessRead detectado
10 ProcessAccess Proceso al que se accede
11 FileCreate Archivo creado
12 RegistryEvent Objeto del Registro agregado o eliminado
13 RegistryEvent Conjunto de valores del Registro
14 RegistryEvent Se ha cambiado el nombre del objeto del Registro
15 FileCreateStreamHash Secuencia de archivos creada
16 N/D Cambio de configuración de Sysmon (no se puede filtrar)
17 PipeEvent Canalización con nombre creada
18 PipeEvent Canalización con nombre conectada
19 WmiEvent Filtro WMI
20 WmiEvent Consumidor WMI
21 WmiEvent Filtro de consumidor WMI
22 DNSQuery Consulta de DNS
23 FileDelete Eliminación de archivos archivados
24 ClipboardChange Nuevo contenido en el Portapapeles
25 ProcessTampering Procesar cambio de imagen
26 FileDeleteDetected Eliminación de archivos registrada
27 FileBlockExecutable Archivo ejecutable de bloque de archivos
28 FileBlockShredding Shredding de bloques de archivos

También puede encontrar estas etiquetas en el visor de eventos en el nombre de la tarea.

El onmatch filtro se aplica si los eventos coinciden. Se puede cambiar con el onmatch atributo de la etiqueta de filtro. Si el valor es "include", significa que solo se incluyen los eventos coincidentes. Si se establece "exclude"en , el evento se incluirá excepto si una regla coincide. Puede especificar un conjunto de filtros de inclusión y un conjunto de filtros de exclusión para cada identificador de evento, donde las coincidencias de exclusión tienen prioridad.

Cada filtro puede incluir cero o más reglas. Cada etiqueta bajo la etiqueta de filtro es un nombre de campo del evento. Las reglas que especifican una condición para el mismo nombre de campo se comportan como condiciones OR y las que especifican un nombre de campo diferente se comportan como condiciones AND. Las reglas de campo también pueden usar condiciones para que coincidan con un valor. Las condiciones son las siguientes (todas distinguen mayúsculas de minúsculas):

Condition Descripción
is Valor predeterminado, los valores son iguales
es cualquier El campo es uno de los ; valores delimitados.
no es Los valores son diferentes
contains El campo contiene este valor.
contiene cualquier El campo contiene cualquiera de los ; valores delimitados.
contiene todos El campo contiene todos los ; valores delimitados.
Excluye El campo no contiene este valor.
excluye cualquier El campo no contiene uno o varios de los ; valores delimitados.
excluye todos El campo no contiene ninguno de los ; valores delimitados.
begin with El campo comienza con este valor.
end with El campo termina con este valor.
no comienza con El campo no comienza con este valor.
no termina con El campo no termina con este valor.
menor que La comparación lexicográfica es menor que cero
más que La comparación lexicográfica es mayor que cero
image Coincide con una ruta de acceso de imagen (ruta de acceso completa o solo nombre de imagen). Por ejemplo: lsass.exe coincidirá. c:\windows\system32\lsass.exe

Puede usar una condición diferente si la especifica como un atributo . Esto excluye la actividad de red de los procesos con iexplore.exe en su ruta de acceso:

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

Para que el informe de Sysmon que coincida con la regla dio lugar a que se registrara un evento, agregue nombres a las reglas:

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

Puede usar reglas de inclusión y exclusión para la misma etiqueta, donde las reglas de exclusión invalidan las reglas de inclusión. Dentro de una regla, las condiciones de filtro tienen el comportamiento OR.

En la configuración de ejemplo mostrada anteriormente, el filtro de red usa una regla de inclusión y exclusión para capturar la actividad en el puerto 80 y 443 por todos los procesos excepto los que tienen iexplore.exe en su nombre.

También es posible invalidar la forma en que las reglas se combinan mediante un grupo de reglas que permite que el tipo de combinación de reglas para uno o varios eventos se establezcan explícitamente en AND o OR.

En el siguiente ejemplo se muestra este uso. En el primer grupo de reglas, se generará un evento de creación de procesos cuando timeout.exe se ejecute solo con un argumento de línea de comandos de 100, pero se generará un evento de finalización de proceso para la finalización de ping.exe y 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>

DescargarSysmon(4,6 MB)

Se ejecuta en:

  • Cliente: Windows 8.1 y versiones posteriores.
  • Servidor: Windows Server 2012 y versiones posteriores.