Sysmon v15.15
Por Mark Russinovich y Thomas Garnier
Publicado: 23 de julio de 2024
Descargar Sysmon (4,6 MB)
Descarga de Sysmon para Linux (GitHub)
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.
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.
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.
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
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.
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 .
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.
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.
El evento de cambio de estado del servicio notifica el estado del servicio Sysmon (iniciado o detenido).
El proceso finaliza los informes de eventos cuando finaliza un proceso. Proporciona la UtcTime
, ProcessGuid
y ProcessId
del proceso.
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.
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.
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.
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.
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.
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.
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 |
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
.
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.
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".
Este evento registra los cambios en la configuración de Sysmon, por ejemplo, cuando se actualizan las reglas de filtrado.
Este evento genera cuando se crea una canalización con nombre. El malware suele usar canalizaciones con nombre para la comunicación entre procesos.
Este evento registra cuando se realiza una conexión de canalización con nombre entre un cliente y un servidor.
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.
Este evento registra el registro de los consumidores de WMI, registrando el nombre del consumidor, el registro y el destino.
Cuando un consumidor se enlaza a un filtro, este evento registra el nombre del consumidor y la ruta de acceso de filtro.
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.
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.
Este evento se genera cuando cambia el contenido del Portapapeles del sistema.
Este evento se genera cuando se detectan técnicas de ocultación de procesos como "hueco" o "herpaderp".
Se eliminó un archivo.
Este evento se genera cuando Sysmon detecta y bloquea la creación de archivos ejecutables (formato PE).
Este evento se genera cuando Sysmon detecta y bloquea la destrucción de archivos desde herramientas como SDelete.
Este evento se genera cuando Sysmon detecta la creación de un nuevo archivo ejecutable (formato PE).
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).
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 .
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>
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>
Descargar Sysmon (4,6 MB)
Se ejecuta en:
- Cliente: Windows 10 y versiones posteriores.
- Servidor: Windows Server 2016 y versiones posteriores.