Sysmon v15.14

Por Mark Russinovich y Thomas Garnier

Fecha de publicación: 13 de febrero de 2024

DownloadDescargar Sysmon(4.6 KB)

Descarga de Sysmon para Linux (GitHub)

Introducción

System Monitor (Sysmon) es un servicio del sistema Windows y un controlador de dispositivo que, una vez instalado en un sistema, permanece residente a través de 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. Recopilando los eventos que genera mediante Windows Event Collection o agentes SIEM y analizándolos posteriormente, podrá identificar actividades maliciosas o anómalas y comprender cómo actúan los intrusos y el malware en su red. El servicio se ejecuta como un proceso protegido, lo que impide una amplia gama de interacciones del modo de usuario.

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

Introducción a las funcionalidades de Sysmon

Sysmon incluye las siguientes funciones:

  • Registra la creación de procesos con la línea de comandos completa para los procesos actuales y primarios.
  • Registra el hash de los archivos de imagen de proceso mediante SHA1 (el valor predeterminado), MD5, SHA256 o IMPHASH.
  • Se pueden utilizar varios hashes al mismo tiempo.
  • Incluye un GUID de proceso en los eventos de creación de proceso para permitir la correlación de eventos incluso cuando Windows reutiliza IDs 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 DLL con sus firmas y hashes.
  • Registros abiertos para el acceso de lectura sin procesar de discos y volúmenes.
  • Opcionalmente, registra las conexiones de red, incluyendo 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 cambios en la hora de creación de un archivo para saber cuándo se creó realmente. La modificación de las marcas de tiempo de creación de archivos es una técnica utilizada habitualmente por el malware para cubrir sus huellas.
  • Vuelva a cargar automáticamente la configuración si se cambia en el registro.
  • Filtrado de reglas para incluir o excluir determinados eventos de forma dinámica.
  • Genera eventos desde el principio del proceso de arranque para capturar la actividad realizada por malware sofisticado en modo kernel.

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>]
Actualizar la configuració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 Actualiza la configuración de un controlador Sysmon instalado o vuelca la configuración actual si no se proporciona ningún otro argumento. Opcionalmente, toma un archivo de configuración.
-m Instale el manifiesto de evento (también se realiza implícitamente en la instalación del servicio).
-s Imprima la definición del esquema de configuración.
-u Desinstale el servicio y el controlador. El uso de -u force hace que la desinstalación proceda 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 superiores, los eventos se almacenan en archivos Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. En sistemas anteriores, los eventos se escriben en el System registro de 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á de forma interactiva que lo acepte.

Ni la instalación ni la desinstalación requieren un reinicio.

Ejemplos

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

sysmon -accepteula -i

Instale 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

Reconfigurar 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 superiores, los eventos se almacenan en Applications and Services Logs/Microsoft/Windows/Sysmon/Operational, y en sistemas más antiguos los eventos se escriben en el registro de eventos System. Las marcas de tiempo del evento se encuentran 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 del proceso

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 campo ProcessGUID es un valor único para este proceso en todo 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 un seguimiento del tiempo de creación real 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 las conexiones TCP/UDP en la máquina. Esta opción está deshabilitada de manera predeterminada. Cada conexión está vinculada a un proceso por medio de los campos ProcessId 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 notifica el estado del servicio Sysmon (iniciado o detenido).

Id. de evento 5: Proceso finalizado

El proceso finaliza los informes de eventos cuando finaliza un proceso. Proporciona la UtcTime, ProcessGuid 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. Los hash configurados se proporcionan, así como 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 cargarse.

Id. de evento 7: Imagen cargada

La imagen cargó 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 cargarse. 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.

Id. 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 hilo: 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 evento RawAccessRead 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 evento de acceso a proceso informa de cuándo un proceso abre otro proceso, una operación que suele ir seguida de consultas de información o de la lectura y escritura del espacio de direcciones del proceso de destino. Esto permite detectar herramientas de hacking que leen el contenido de la memoria de procesos como Local Security Authority (Lsass.exe) con el fin de robar credenciales para utilizarlas en ataques Pass-the-Hash. Activarlo puede generar cantidades significativas de logging si hay utilidades de diagnóstico activas que abran procesos repetidamente para consultar su estado, por lo que generalmente sólo debería hacerse con filtros que eliminen 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 monitorizar 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.

Evento ID 12: RegistryEvent (Creación y eliminación de objetos)

Las operaciones de creación y eliminación de claves y valores del Registro se asignan a este tipo de evento, 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 aumentar 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 (formato PE).

Id. de evento 28: FileBlockShredding

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

Id. de evento 29: FileExecutableDetected

Este evento se genera cuando Sysmon detecta la creación de un nuevo archivo ejecutable (formato PE).

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 determinadas tareas o si no existe un error en el servicio Sysmon, o incluso si no se cumplen ciertas condiciones de seguridad e integridad. Puedes informar de cualquier error en el foro de Sysinternals o a través de Twitter (@markrussinovich).

Archivos de configuración

Los archivos de configuración pueden especificarse 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 sencillo 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 Valor 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 utilizar PsExec de Sysinternals para acceder al directorio utilizando 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 Crear proceso
2 FileCreateTime Hora de creación del archivo
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 Cambio de imagen de proceso
26 FileDeleteDetected Eliminación de archivos registrada
27 FileBlockExecutable Archivo ejecutable de bloque de archivos
28 FileBlockShredding Fragmentación de bloques de archivos
29 FileExecutableDetected Archivo ejecutable detectado

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

El onmatch filtro se aplica si se coinciden los eventos. Se puede cambiar con el onmatch atributo para 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 tanto un conjunto de filtros de inclusión como un conjunto de filtros de exclusión para cada ID de evento, donde las coincidencias de exclusión tienen prioridad.

Cada filtro puede incluir cero o más reglas. Cada etiqueta de 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 todo El campo contiene cualquiera de los ; valores delimitados
excluye El campo no contiene este valor
excluye cualquier El campo no contiene uno o varios de los ; valores delimitados
excluye cualquier El campo no contiene ninguno de los ; valores delimitados
Comenzar con El campo comienza con este valor
termina con El campo termina con este valor
No puede comenzar por El campo no comienza con este valor
No puede finalizar con El campo no termina con este valor
Menor que La comparación lexicográfica es menor que cero
Mayor que La comparación lexicográfica es superior a 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 Sysmon informe de qué coincidencia de regla ha provocado que se registre un evento, añada 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 comportamiento OR.

En la configuración de ejemplo mostrada anteriormente, el filtro de red utiliza tanto una regla de inclusión como de exclusión para capturar la actividad hacia los puertos 80 y 443 de todos los procesos excepto de aquellos 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>

DownloadDescargar Sysmon(4.6 KB)

Se ejecuta en:

  • Cliente: Windows 10 y versiones posteriores.
  • Servidor: Windows Server 2016 y versiones posteriores.