Sysmon v14.14
Por Mark Russinovich y Thomas Garnier
Publicado: 25 de enero de 2023
Descargar 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
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/Operational
el 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 , 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. 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>
Sysmon(4,6 MB)
Se ejecuta en:
- Cliente: Windows 8.1 y versiones posteriores.
- Servidor: Windows Server 2012 y versiones posteriores.