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
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 incluye las siguientes capacidades:
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ón | Parámetros |
---|---|
-i | Instale el servicio y el controlador. Opcionalmente, tome un archivo de configuración. |
-c | Actualizar 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. |
-m | Instalar el manifiesto del evento (implícitamente hecho en la instalación del servicio también). |
-s | Imprime la definición del esquema de configuración. |
-u | Desinstalar 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.
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
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.
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.
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.
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.
El evento de cambio de estado del servicio informa el estado del servicio Sysmon (iniciado o detenido).
El evento de finalización del proceso informa cuando finaliza un proceso. Proporciona el UtcTime, ProcessGuid y ProcessId del proceso.
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.
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.
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.
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.
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.
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.
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 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 de registro se asignan a este tipo de evento, registrando el nuevo nombre de la clave o el valor que se cambió de nombre.
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.
Este evento registra cambios en la configuración de Sysmon, por ejemplo, cuando se actualizan las reglas de filtrado.
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.
Este evento se 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 el malware para ejecutarse, este evento registra el espacio de nombres WMI, el nombre del filtro y la expresión del filtro.
Este evento registra el registro de los consumidores de WMI, registrando el nombre, el registro y el destino del consumidor.
Cuando un consumidor se vincula a un filtro, este evento registra el nombre del consumidor y la ruta del filtro.
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.
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.
Este evento se genera cuando cambia el contenido del portapapeles del sistema.
Este evento se genera cuando se están detectando técnicas de ocultación de procesos como “hueco” o “herpaderp”.
Se eliminó un archivo.
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).
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.
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:
Entrada | Valor | Descripción |
---|---|---|
ArchiveDirectory | String | Nombre 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 |
CheckRevocation | Boolean | Controla las comprobaciones de revocación de firmas. Valor predeterminado: verdadero |
CopyOnDeletePE | Boolean | Conserva los archivos de imágenes ejecutables eliminados. Valor predeterminado: falso |
CopyOnDeleteSIDs | String | Cadenas Lista separada por comas de los SID de cuenta para los que se conservarán las eliminaciones de archivos. |
CopyOnDeleteExtensions | String | Extensiones para archivos que se conservan al eliminarlos. |
CopyOnDeleteProcesses | String | Nombre(s) de proceso para los cuales se conservarán las eliminaciones de archivos. |
DnsLookup | Boolean | Controla la búsqueda inversa de DNS. Valor predeterminado: verdadero |
DriverName | String | Utiliza el nombre especificado para las imágenes del controlador y el servicio. |
HashAlgorithms | String | Algoritmo(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>
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ón | Etiqueta | Evento |
---|---|---|
1 | ProcessCreate | Crear Proceso |
2 | FileCreateTime | Hora de creación del archivo |
3 | NetworkConnect | Conexión de red detectada |
4 | n/a | 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 accedido |
11 | FileCreate | Archivo creado |
12 | RegistryEvent | Objeto de registro agregado o eliminado |
13 | RegistryEvent | Conjunto de valores de registro |
14 | RegistryEvent | Registro de objeto renombrado |
15 | FileCreateStreamHash | Flujo de archivo creado |
16 | n/a | Cambio de configuración de Sysmon (no se puede filtrar) |
17 | PipeEvent | Tubería con nombre creada |
18 | PipeEvent | Tubería con nombre conectada |
19 | WmiEvent | Filtro WMI |
20 | WmiEvent | Consumidor WMI |
21 | WmiEvent | Filtro de consumidor WMI |
22 | DNSQuery | Consulta DNS Consulta DNS |
23 | FileDelete | Eliminar Archivo |
24 | ClipboardChange | Nuevo contenido en el portapapeles |
25 | ProcessTampering | Cambio de imagen del proceso |
26 | FileDeleteDetected | Eliminació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ón | Descripción |
---|---|
is | es Predeterminado, los valores son iguales |
is any | es cualquiera El campo es uno de los ; valores delimitados |
is not | no es Los valores son diferentes |
contains | contiene El campo contiene este valor |
contains any | contiene cualquiera El campo contiene cualquiera de los ; valores delimitados |
contains all | contiene todo El campo contiene cualquiera de los ; valores delimitados |
excludes | excluye El campo no contiene este valor |
excludes any | excluye cualquiera El campo no contiene uno o más de los ; valores delimitados |
excludes all | excluye todo El campo no contiene ninguno de los ; valores delimitados |
begin with | comenzar con El campo comienza con este valor |
end with | terminar con El campo termina con este valor |
not begin with | no comenzar con El campo no comienza con este valor |
not end with | no termina con El campo no termina con este valor |
less than | menor que La comparación lexicográfica es menor que cero |
more than | más que la comparación lexicográfica es más que cero image |
image | Coincide 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>
Si encuentras algún error o aporte a la información proporcionada por favor dirígela a soporte@ehack.mx
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.
El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…
En esta entrada te presento 24 de las listas negras más comunes que los servidores…
ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…
WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…
Whois realiza el registro de registro para el nombre de dominio o la dirección IP…
VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…