
A repository of sysmon configuration modules
Este es un repositorio de configuración de Microsoft Sysinternals Sysmon descárgalo aquí, organizado de forma modular para facilitar el mantenimiento y la generación de configuraciones específicas.
Ten en cuenta que cualquiera de estas configuraciones debe considerarse un punto de partida; se recomienda encarecidamente ajustarlas según el entorno.
Nota: para aprovechar aún más el evento FileExecutable, considera combinar la versión más actualizada de la configuración de LOLdrivers en la configuración. Puedes hacerlo fácilmente descargando el archivo y añadiéndolo a la carpeta 29_file_execute_detected y generando una nueva configuración.
El sysmonconfig.xml del repositorio se genera automáticamente después de una fusión exitosa mediante el script de PowerShell y una carga exitosa por Sysmon en una ejecución de Azure Pipeline. Más información sobre cómo generar una configuración personalizada con tus propios módulos aquí
Además de la documentación siguiente, también hay un vídeo sobre cómo usar este proyecto.
Las versiones anteriores siguen disponibles en las ramas, pero no están tan completas como la rama actual
Para comprender las funciones añadidas en las versiones, echa un vistazo a mi pequeña entrada de blog y a artículos más recientes, o mira mi charla DerbyCon
Nota: Recomiendo usar un número mínimo de configuraciones en tu entorno por múltiples razones obvias, como el mantenimiento, la igualdad de salida, la gestionabilidad, etc. Pero sí crea configuraciones a medida para controladores de dominio, servidores y estaciones de trabajo.
Recomiendo encarecidamente revisar las configuraciones antes de implementarlas en tu entorno de producción. Esto te permite tener un registro lo más accionable posible y con el menor ruido posible.
Deberás instalar y observar los resultados de la configuración en tu propio entorno antes de implementarla ampliamente. Por ejemplo, necesitarás excluir las acciones de tu antivirus; de lo contrario, probablemente llenará tus registros con información inútil.
$> git clone https://github.com/olafhartong/sysmon-modular.git
$> cd sysmon modular
$> . .\Merge-SysmonXml.ps1
$> Merge-AllSysmonXml -Path ( Get-ChildItem '[0-9]*\*.xml') -AsString | Out-File sysmonconfig.xml
Las siguientes funciones son gracias a mbmy
Nueva función:
Find-RulesInBasePath: toma una ruta base (p. ej., C:\folder\sysmon-modular) y busca todos los archivos de reglas xml candidatos basados en un patrón regex
Ejemplo:
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
Nuevos parámetros de Merge-AllSysmonXml:
-BasePath: busca todos los archivos de reglas xml candidatos desde una ruta proporcionada basándose en un patrón regex y los fusiona
Ejemplo:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList: combinado con -BasePath, toma una lista de reglas y las excluye de las reglas encontradas antes de la fusión
Ejemplo:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -ExcludeList C:\users\sysmon\sysmon-modular\exclude_rules.txt
-IncludeList: combinado con -BasePath, encuentra todas las reglas disponibles desde la ruta base, pero solo fusiona las definidas en una lista
Ejemplo:
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -IncludeList C:\users\sysmon\sysmon-modular\include_rules.txt
NOTA BasePath debe ser la ruta completa a los archivos sysmon-modular (por ejemplo, c:\tools\sysmon-modular); de lo contrario, PowerShell no podrá localizarlos, lo que dará como resultado una configuración predeterminada.
Ejemplo de formato de lista de inclusión/exclusión:
3_network_connection_initiated\include_native_windows_tools.xml
12_13_14_registry_event\exclude_internet_explorer_settings.xml
12_13_14_registry_event\exclude_webroot.xml
17_18_pipe_event\include_winreg.xml
19_20_21_wmi_event\include_wmi_create.xml
2_file_create_time\exclude_chrome.xml
3_network_connection_initiated\include_native_windows_tools.xml
3_network_connection_initiated\include_ports_proxies.xml
8_create_remote_thread\include_general_commment.xml
8_create_remote_thread\include_psinject.xml
9_raw_access_read\include_general_commment.xml
Creación de una configuración con todas las reglas sysmon-modular para ciertos ID de evento (incluye el directorio completo) y posterior desactivación de todos los ID de evento sin reglas importadas
Ejemplo:
# generate the config
$sysmonconfig = Merge-AllSysmonXml -BasePath . -IncludeList $workingFolder\include.txt -VerboseLogging -PreserveComments
# flip off any rule groups where rules were not imported
foreach($rg in $sysmonconfig.SelectNodes("/Sysmon/EventFiltering/RuleGroup [*/@onmatch]"))
{
$ruleNodes = $rg.SelectNodes("./* [@onmatch]")
if( $ruleNodes -eq $null `
-or $ruleNodes.ChildNodes.count -gt 0)
{
# no rule nodes found (unlikely) or more than one rule found
continue
}
# RuleGroup with only one rule node
$ruleNode = $ruleNodes[0]
if($ruleNode.onmatch -eq "exclude" -and $ruleNode.ChildNodes.count -eq 0 )
{
$message = "{0} {1} has no matching conditions. Toggled to 'include' to limit output" -f $ruleNode.Name,$rg.Name
Write-Warning $message
$ruleNode.onmatch = "include"
$comment = $sysmonconfig.CreateComment($message)
$rg.AppendChild($comment) | Out-Null
}
}
Ejemplo de formato de lista de inclusión/exclusión (para familias completas de reglas/eventos):
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
Ejecutar con derechos de administrador
sysmon.exe -accepteula -i sysmonconfig.xml
Ejecutar con derechos de administrador
sysmon.exe -c sysmonconfig.xml
Esta es una nueva función, creada por cnnrshd
Las configuraciones generadas con este script conservan los comentarios y se aplica una indentación XML adecuada, lo que aumenta la legibilidad y permite una referencia cruzada más fácil de los archivos de reglas.
ejemplo de comando
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** Esta forma de generar contenido es aún nueva y experimental. Todavía no hay soporte para las versiones personalizadas, como las versiones MDE augment y de solo exclusiones.
Hay tres configuraciones principales de Sysmon:
@SwiftOnSecurity: gran recorrido introductorio por muchos de los ajustes. Empieza con 1 comando https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops: Un fork de SwiftOnSecurity, a la vanguardia y proactivo. **https://github.com/Neo23x0/sysmon-config
@olafhartong: Este repositorio, que se centra en ser muy mantenible con notas detalladas de reglas para respuesta guiada y SIEM.
Una excelente guía de la comunidad por @Carlos_Perez: https://github.com/trustedsec/SysmonCommunityGuide
¡Se agradecerán enormemente las pull requests, los tickets de issue y las nuevas incorporaciones!
He iniciado una serie de entradas de blog sobre este repositorio;
Detección de endpoints con superpoderes a bajo costo — parte 2 — Implementación y mantenimiento
Detección de endpoints con superpoderes a bajo costo — parte 3 — Manipulación de Sysmon
Una comparación entre Sysmon y Microsoft Defender para Endpoint
Me esfuerzo por mapear todas las configuraciones al marco ATT&CK siempre que Sysmon pueda detectarlo. Ten en cuenta que esta es una posible entrada de registro que podría conducir a una detección; no en todos los casos es esta la única telemetría para esa técnica. Además, puede haber más técnicas relacionadas con esa regla; la mapeada es la que consideré más probable.
| Tipo | Configuración | Descripción |
|---|
| default | sysmonconfig.xml | Esta es la configuración equilibrada, la más utilizada; más información aquí |
| default+ | sysmonconfig-with-filedelete.xml | Esta es la configuración equilibrada, la más utilizada; más información, incluyendo la retención de archivos de FileDelete |
| verbose | sysmonconfig-excludes-only.xml | Esta es la configuración muy verbosa; se incluyen todos los eventos y solo se aplican los módulos de exclusión. No debería usarse en producción sin validación; generará una cantidad significativa de datos y podría afectar al rendimiento. Más información aquí |
| super verbose | sysmonconfig-research.xml | Una configuración con verbosidad extrema. El volumen de registros esperado de este archivo es significativamente alto; realmente NO LO USES EN PRODUCCIÓN. Esta configuración es solo para investigación; usará mucho más CPU/memoria. Actívala solo antes de ejecutar la técnica a investigar; cuando termines, carga una configuración más ligera. |
| MDE augment | sysmonconfig-mde-augmentation.xml | Una configuración para complementar Defender for Endpoint, pensada para ampliar la información y tener la menor superposición posible. Se basa en la configuración predeterminada/equilibrada y no generará todos los eventos para Sysmon; hay comentarios en la configuración. En beneficio de la IR (respuesta a incidentes), considera usar la configuración de solo exclusiones e ingerir únicamente los eventos enriquecedores. (Pronto habrá una entrada de blog con más justificación) |