Categoría: Utilidades de Procesos
Versión: v13.33
Última actualización: 16/02/2022
Resumen: Sysmon 
OS:
Cliente: Windows 8.1 y Superior
Servidor: Windows Server 2012 y Superior

Introducción

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

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

Sysmon

Descripción general de las capacidades de Sysmon

Sysmon incluye las siguientes capacidades:

  • Registra la creación de procesos con la línea de comando completa para los procesos actuales y principales.
  • Registra el hash de los archivos de imagen de proceso mediante SHA1 (predeterminado), MD5, SHA256 o IMPHASH.
  • Se pueden usar múltiples hashes al mismo tiempo.
  • Incluye un GUID de proceso en el proceso de creación de eventos para permitir la correlación de eventos incluso cuando Windows reutiliza los ID 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.
  • Los registros se abren para el acceso de lectura sin procesar de 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 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 comúnmente utilizada por el malware para cubrir sus huellas.
  • Recarga automáticamente la configuración si se cambia en el registro.
  • Filtrado de reglas para incluir o excluir ciertos eventos de forma dinámica.
  • Genera eventos desde el principio del proceso de arranque para capturar la actividad realizada incluso por malware sofisticado en modo kernel.

Uso

Uso común con opciones de línea de comandos simples para instalar y desinstalar Sysmon, así como para verificar 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]

DescripciónParámetros
-iInstale el servicio y el controlador. Opcionalmente, tome un archivo de configuración.
-cActualizar la configuración de un controlador Sysmon instalado o volcar la configuración actual si no se proporciona ningún otro argumento. Opcionalmente toma un archivo de configuración.
-mInstalar el manifiesto del evento (implícitamente hecho en la instalación del servicio también).
-sImprime la definición del esquema de configuración.
-uDesinstalar el servicio y el controlador. El uso de -u force 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 inicio 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 más antiguos, los eventos se escriben en el registro de eventos del sistema.

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

Especifique -accepteula para aceptar automáticamente el EULA en la instalación; de lo contrario, se le solicitará de forma interactiva que lo acepte.

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

Ejemplos

Instalar con la configuración predeterminada (procesar imágenes 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

Desinstalar

sysmon -u

Volcar la configuración actual

sysmon -c

Reconfigure 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 los valores predeterminados

sysmon -c --

Mostrar el esquema de configuración

sysmon -s

Eventos

En Vista y versiones posteriores, 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 del sistema. Las marcas de tiempo de los eventos están en la hora estándar UTC.

Los siguientes son 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 ampliada sobre un proceso recién creado. La línea de comando completa proporciona contexto sobre la ejecución del proceso. El campo ProcessGUID 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 en el campo HashType.

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

El evento de tiempo de creación de archivo de cambio se registra cuando un proceso modifica explícitamente el tiempo de creación de un archivo. Este evento ayuda a rastrear el 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 necesariamente indica actividad maliciosa.

Id. de evento 3: conexión de red

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

Id. de evento 4: el estado del servicio Sysmon cambió

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

Id. de evento 5: proceso terminado

El evento de finalización del proceso informa cuando finaliza un proceso. Proporciona el UtcTime, ProcessGuid y ProcessId del proceso.

ID de evento 6: Driver cargado

Los eventos de carga del controlador proporcionan información sobre la carga de un controlador en el sistema. Se proporcionan los valores hash configurados, así como la información de la firma. La firma se crea de forma asíncrona por motivos de rendimiento e indica si el archivo se eliminó después de cargarlo.

ID de evento 7: imagen cargada

El evento de imagen cargada registra 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, hash e información de firma. La firma se crea de forma asíncrona por motivos de rendimiento e indica si el archivo se eliminó después de cargarlo. Este evento debe configurarse con cuidado, ya que monitorear todos los eventos de carga de imágenes generará una gran cantidad de eventos.

Id. de evento 8: CreateRemoteThread

El evento CreateRemoteThread detecta cuando un proceso crea un hilo en otro proceso. El malware utiliza esta técnica para inyectar código y ocultarse en otros procesos. El evento indica el proceso de origen y de destino. Da información sobre el código que se ejecutará en el nuevo hilo: StartAddress, StartModule y StartFunction. Tenga en cuenta que los campos StartModule y StartFunction se deducen, pueden estar vacíos si la dirección de inicio está fuera de los módulos cargados o funciones exportadas conocidas.

Id. de evento 9: RawAccessRead

El evento RawAccessRead detecta cuándo un proceso realiza operaciones de lectura desde la unidad utilizando la denotación \\.\ El malware suele utilizar esta técnica para la filtración de datos de archivos que están bloqueados para su lectura, así como para evitar las 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 accedió a los informes de eventos cuando un proceso abre otro proceso, una operación que a menudo es seguida por consultas de información o lectura y escritura en el espacio de direcciones del proceso de destino. Esto permite la detección de herramientas de piratería que leen el contenido de la memoria de procesos como Autoridad de seguridad local (Lsass.exe) para robar credenciales para usar en ataques Pass-the-Hash. Habilitarlo puede generar una cantidad significativa de registros si hay utilidades de diagnóstico activas que abren procesos repetidamente para consultar su estado, por lo que generalmente solo debe 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 sobrescribe un archivo. Este evento es útil para monitorear las ubicaciones de inicio automático, como la carpeta de inicio, así como los directorios temporales y de descarga, que son lugares comunes donde cae el malware durante la infección inicial.

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

Las operaciones de creación y eliminación de clave y valor del registro se asignan a este tipo de evento, lo que puede ser útil para monitorear cambios en las ubicaciones de inicio automático del registro o modificaciones específicas del registro de malware.

Sysmon utiliza versiones abreviadas de los nombres de las claves raíz del Registro, con las siguientes asignaciones:

Nombre claveAbreviatura
HKEY_LOCAL_MACHINE HKLM
HKEY_USERSHKU
HKEY_LOCAL_MACHINE\System\ControlSet00xHKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\ClassesHKCR

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 (Cambiar nombre de clave y valor)

Las operaciones de cambio de nombre de clave y valor de registro se asignan a este tipo de evento, registrando el nuevo nombre de la clave o el valor que se cambió de nombre.

Id. de evento 15: FileCreateStreamHash

Este evento registra cuándo se crea un flujo de archivo con nombre y genera eventos que registran el hash del contenido del archivo al que se asigna el flujo (el flujo sin nombre), así como el contenido del flujo con nombre. Hay variantes de malware que sueltan sus ejecutables o ajustes de configuración a través de descargas del navegador, y este evento tiene como objetivo capturar eso en función del navegador que adjunta una secuencia de “marca de la web” de Zone.Identifier.

Id. de evento 16: ServiceConfigurationChange

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

Id. de evento 17: PipeEvent (tubería creada)

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

Id. de evento 18: PipeEvent (tubería conectada)

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

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

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

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

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

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

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

Id. de evento 22: DNSEvent (consulta de DNS)

Este evento se genera cuando un proceso ejecuta una consulta DNS, ya sea que el resultado sea exitoso o fallido, almacenado en caché o no. La telemetría para 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 archivos archivada)

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 normales de funcionamiento, este directorio puede crecer hasta un tamaño irrazonable; consulte el ID de evento 26: FileDeleteDetected para ver 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: alteración del proceso (cambio de imagen del proceso)

Este evento se genera cuando se están detectando técnicas de ocultación de procesos como “hueco” o “herpaderp”.

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

Se eliminó un archivo.

Id. de evento 255: error

Este evento se genera cuando ocurre un error dentro de Sysmon. Pueden ocurrir si el sistema tiene una gran carga y no se pudieron realizar ciertas tareas o si existe un error en el servicio Sysmon. Puede informar 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 conmutadores 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 se ve así:

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 más antiguos. Puede obtener la versión del esquema actual utilizando el botón “-? configuración” línea de comando. Las entradas de configuración están directamente debajo de la etiqueta Sysmon y los filtros están debajo de la etiqueta EventFiltering.

Entradas de configuración

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

Las entradas de configuración incluyen lo siguiente:

EntradaValorDescripción
ArchiveDirectoryStringNombre de los directorios en las raíces del volumen a los que se mueven los archivos de copia al eliminar. El directorio está protegido con una ACL del sistema (puede usar PsExec de Sysinternals para acceder al directorio usando psexec -sid cmd). Predeterminado: Sysmon
CheckRevocationBooleanControla las comprobaciones de revocación de firmas. Valor predeterminado: verdadero
CopyOnDeletePEBooleanConserva los archivos de imágenes ejecutables eliminados. Valor predeterminado: falso
CopyOnDeleteSIDsStringCadenas Lista separada por comas de los SID de cuenta para los que se conservarán las eliminaciones de archivos.
CopyOnDeleteExtensionsStringExtensiones para archivos que se conservan al eliminarlos.
CopyOnDeleteProcessesStringNombre(s) de proceso para los cuales se conservarán las eliminaciones de archivos.
DnsLookupBooleanControla la búsqueda inversa de DNS. Valor predeterminado: verdadero
DriverNameStringUtiliza el nombre especificado para las imágenes del controlador y el servicio.
HashAlgorithmsStringAlgoritmo(s) de hash para solicitar hash. Los algoritmos admitidos incluyen MD5, SHA1, SHA256, IMPHASH y * (todos). Predeterminado: Ninguno

Los conmutadores de línea de comandos tienen su entrada de configuración descrita en la salida de uso de Sysmon. Los parámetros son opcionales según la etiqueta. Si un interruptor de línea de comando también habilita un evento, debe configurarse a través de su etiqueta de filtro. Puede especificar el modificador -s para que Sysmon imprima el esquema de configuración completo, incluidas las etiquetas de eventos, así como los nombres y tipos de campo para cada evento. Por ejemplo, aquí está el esquema para el tipo de evento RawAccessRead:

XML

<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 le permite filtrar los eventos generados. En muchos casos, los eventos pueden ser ruidosos y no es posible reunir todo. Por ejemplo, es posible que le interesen las conexiones de red solo para un determinado proceso, pero no para todos. Puede filtrar la salida en el host reduciendo los datos a recopilar.

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

IdentificaciónEtiquetaEvento
1ProcessCreateCrear Proceso
2FileCreateTimeHora de creación del archivo
3NetworkConnectConexión de red detectada
4n/aCambio de estado del servicio Sysmon (no se puede filtrar)
5ProcessTerminateProceso terminado
6DriverLoadControlador cargado
7ImageLoadImagen cargada
8CreateRemoteThreadCreateRemoteThread detectado
9RawAccessReadRawAccessRead detectado
10ProcessAccessProceso accedido
11FileCreateArchivo creado
12RegistryEventObjeto de registro agregado o eliminado
13RegistryEventConjunto de valores de registro
14RegistryEventRegistro de objeto renombrado
15FileCreateStreamHashFlujo de archivo creado
16n/a Cambio de configuración de Sysmon (no se puede filtrar)
17PipeEventTubería con nombre creada
18PipeEventTubería con nombre conectada
19WmiEventFiltro WMI
20WmiEventConsumidor WMI
21WmiEventFiltro de consumidor WMI
22DNSQueryConsulta DNS Consulta DNS
23FileDeleteEliminar Archivo
24ClipboardChangeNuevo contenido en el portapapeles
25ProcessTamperingCambio de imagen del proceso
26FileDeleteDetectedEliminación de archivos registrada

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

El filtro onmatch se aplica si los eventos coinciden. Se puede cambiar con el atributo onmatch para la etiqueta de filtro. Si el valor es “incluir”, significa que solo se incluyen los eventos coincidentes. Si se establece en “excluir”, el evento se incluirá excepto si coincide con una regla. Puede especificar un conjunto de filtros de inclusión y 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 debajo 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 hacer coincidir un valor. Las condiciones son las siguientes (no distinguen entre mayúsculas y minúsculas):

CondiciónDescripción
ises Predeterminado, los valores son iguales
is anyes cualquiera El campo es uno de los ; valores delimitados
is notno es Los valores son diferentes
containscontiene El campo contiene este valor
contains anycontiene cualquiera El campo contiene cualquiera de los ; valores delimitados
contains allcontiene todo El campo contiene cualquiera de los ; valores delimitados
excludesexcluye El campo no contiene este valor
excludes anyexcluye cualquiera El campo no contiene uno o más de los ; valores delimitados
excludes allexcluye todo El campo no contiene ninguno de los ; valores delimitados
begin withcomenzar con El campo comienza con este valor
end withterminar con El campo termina con este valor
not begin withno comenzar con El campo no comienza con este valor
not end withno termina con El campo no termina con este valor
less thanmenor que La comparación lexicográfica es menor que cero
more thanmás que la comparación lexicográfica es más que cero
image
imageCoincide con la ruta de una imagen (ruta completa o solo el nombre de la imagen). Por ejemplo: lsass.exe coincidirá con c:\windows\system32\lsass.exe


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

XML

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

Para que Sysmon informe qué regla coincidió con el registro de un evento, agregue nombres a las reglas:

XML

<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 anulan las reglas de inclusión. Dentro de una regla, las condiciones de filtro tienen un comportamiento OR.

En la configuración de muestra que se mostró anteriormente, el filtro de red usa una regla de inclusión y exclusión para capturar la actividad en los puertos 80 y 443 de todos los procesos excepto aquellos que tienen iexplore.exe en su nombre.

También es posible anular la forma en que se combinan las reglas usando un grupo de reglas que permite que el tipo de combinación de reglas para uno o más eventos se establezca explícitamente en AND u OR.

El siguiente ejemplo demuestra este uso. En el primer grupo de reglas, se generará un evento de creación de proceso cuando se ejecute timeout.exe solo con un argumento de línea de comando de 100, pero se generará un evento de terminación de proceso para la terminación de ping.exe y timeout.exe.

XML

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

Informar de errores

Si encuentras algún error o aporte a la información proporcionada por favor dirígela a soporte@ehack.mx

Obtener el programa

Referencias


Fuente Imágenes

Sysmon: Imágenes cortesía by Nala Systems

Sysmon by Roberto C. González traducido y ampliado para Ethical Hack algunas partes se adaptan directamente del sitio SysInternals de Microsoft
©2022, Ethical Hack, Todos los derechos reservados sobre la traducción.
©2022, Ethical Hack, Todos los derechos reservados sobre el contenido propio.

Powered by – Ethical Hack

eHack Blog

Entradas recientes

dnsenum

El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…

1 año hace

Las 24 listas negras de IPv4 más comunes.

En esta entrada te presento 24 de las listas negras más comunes que los servidores…

2 años hace

ZoomIt – SysInternals

ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…

2 años hace

WinObj – SysInternals

WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…

2 años hace

WhoIs – SysInternals

Whois realiza el registro de registro para el nombre de dominio o la dirección IP…

2 años hace

VolumeID – SysInternals

VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…

2 años hace