
A repository of sysmon configuration modules
Ceci est un dépôt de configurations pour Microsoft Sysinternals Sysmon téléchargement ici, organisé de manière modulaire pour faciliter la maintenance et la génération de configurations spécifiques.
Veuillez garder à l'esprit que chacune de ces configurations doit être considérée comme un point de départ ; un réglage fin par environnement est fortement recommandé.
Remarque : pour tirer encore plus de valeur de l'événement FileExecutable, envisagez d'incorporer également la version la plus récente de la configuration LOLdrivers dans la configuration. Vous pouvez le faire facilement en récupérant le fichier et en l'ajoutant dans le dossier 29_file_execute_detected, puis en générant une nouvelle configuration.
Le fichier sysmonconfig.xml du dépôt est généré automatiquement après une fusion réussie par le script PowerShell et un chargement réussi par Sysmon dans un pipeline Azure. Plus d'informations sur la génération d'une configuration personnalisée, intégrant vos propres modules ici
En plus de la documentation ci-dessous, il y a aussi une vidéo sur la façon d'utiliser ce projet.
Les versions plus anciennes sont toujours disponibles dans les branches, mais ne sont pas aussi complètes que la branche actuelle
Pour comprendre les fonctionnalités ajoutées dans ces versions, jetez un œil à mon petit article de blog et aux articles plus récents, ou regardez ma présentation DerbyCon
Remarque : Je recommande d'utiliser un nombre minimal de configurations dans votre environnement pour de multiples raisons évidentes, comme : la maintenance, l'égalité des sorties, la gérabilité, etc. Mais faites des configurations adaptées pour les contrôleurs de domaine, les serveurs et les postes de travail.
Je recommande fortement d'examiner les configurations avant de les implémenter dans votre environnement de production. Cela vous permet d'avoir une journalisation aussi exploitable que possible et aussi peu de bruit que possible.
Vous devrez installer et observer les résultats de la configuration dans votre propre environnement avant de la déployer à grande échelle. Par exemple, vous devrez exclure les actions de votre antivirus, qui autrement remplira probablement vos journaux d'informations inutiles.
$> 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
Fonctions ci-dessous avec un grand merci à mbmy
Nouvelle fonction :
Find-RulesInBasePath - prend un chemin de base (c.-à-d. C:\folder\sysmon-modular) et trouve tous les fichiers de règles xml candidats selon un motif regex
Exemple :
PS C:\Users\sysmon\sysmon-modular> Find-RulesInBasePath -BasePath C:\users\sysmon\sysmon-modular\ -OutputRules | Out-File available_rules.txt
Nouveaux paramètres de Merge-AllSysmonXml :
-BasePath - trouve tous les fichiers de règles xml candidats depuis un chemin fourni selon un motif regex et les fusionne
Exemple :
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\
-ExcludeList - Combiné avec -BasePath, prend une liste de règles et les exclut des règles trouvées avant la fusion
Exemple :
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 - Combiné avec -BasePath, trouve toutes les règles disponibles depuis le chemin de base mais ne fusionne que celles définies dans une liste
Exemple :
PS C:\Users\sysmon\sysmon-modular> Merge-AllSysmonXml -AsString -BasePath C:\Users\sysmon\sysmon-modular\ -IncludeList C:\users\sysmon\sysmon-modular\include_rules.txt
REMARQUE Le BasePath doit être le chemin complet vers les fichiers sysmon-modular (par exemple c:\tools\sysmon-modular), sinon PowerShell ne pourra pas les localiser, ce qui entraînera une configuration par défaut.
Exemple de format de liste Include/Exclude :
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
Construire une configuration avec toutes les règles sysmon-modular pour certains identifiants d'événement (inclure tout le dossier) puis désactiver tous les identifiants d'événement sans règles importées
Exemple :
# générer la configuration
$sysmonconfig = Merge-AllSysmonXml -BasePath . -IncludeList $workingFolder\include.txt -VerboseLogging -PreserveComments
# désactiver tous les groupes de règles où aucune règle n'a été importée
foreach($rg in $sysmonconfig.SelectNodes("/Sysmon/EventFiltering/RuleGroup [*/@onmatch]"))
{
$ruleNodes = $rg.SelectNodes("./* [@onmatch]")
if( $ruleNodes -eq $null `
-or $ruleNodes.ChildNodes.count -gt 0)
{
# aucun nœud de règle trouvé (peu probable) ou plus d'une règle trouvée
continue
}
# RuleGroup avec un seul nœud de règle
$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
}
}
Exemple de format de liste Include/Exclude (pour des familles entières de règles/événements) :
1_process_creation
5_process_ended
11_file_create
23_file_delete
7_image_load
17_18_pipe_event
Exécutez avec les droits administrateur
sysmon.exe -accepteula -i sysmonconfig.xml
Exécutez avec les droits administrateur
sysmon.exe -c sysmonconfig.xml
Il s'agit d'une nouvelle fonctionnalité, créée par cnnrshd
Les configurations générées à l'aide de ce script conservent les commentaires et une indentation XML correcte est appliquée, ce qui améliore la lisibilité et facilite le recoupement des fichiers de règles
exemple d'invite
python merge_sysmon_configs.py config_lists/default_list/default_list.csv -f csv -b templates/sysmon_template.xml -o test.xml
** Cette façon de générer du contenu est encore nouvelle et expérimentale. Il n'y a pas encore de support pour les versions personnalisées comme les versions MDE augment et exclude-only.
Il existe trois configurations Sysmon majeures :
@SwiftOnSecurity : excellent tutoriel d'introduction sur de nombreux paramètres. Commencez avec 1 commande https://github.com/SwiftOnSecurity/sysmon-config/.
@cyb3rops : Un fork de SwiftOnSecurity, à la pointe et proactif. **https://github.com/Neo23x0/sysmon-config
@olafhartong : Ce dépôt, qui se concentre sur une très bonne maintenabilité avec des notes de règles détaillées pour une réponse guidée et une corrélation SIEM.
Un excellent guide communautaire par @Carlos_Perez : https://github.com/trustedsec/SysmonCommunityGuide
Les pull requests / tickets et nouvelles contributions seront grandement appréciés !
J'ai commencé une série d'articles de blog couvrant ce dépôt ;
Endpoint detection Superpowers on the cheap — part 2 — Deploy and Maintain
Endpoint detection Superpowers on the cheap — part 3 — Sysmon Tampering
A comparison between Sysmon and Microsoft Defender for Endpoint
Je m'efforce de mapper toutes les configurations au framework ATT&CK chaque fois que Sysmon est capable de le détecter. Veuillez noter qu'il s'agit d'une entrée de journal possible qui pourrait mener à une détection ; dans tous les cas, ce n'est pas la seule télémétrie pour cette technique. De plus, il peut y avoir d'autres techniques liées à cette règle ; celle mappée est celle que j'ai jugée la plus probable.
| Type | Configuration | Description |
|---|
| par défaut | sysmonconfig.xml | Il s'agit de la configuration équilibrée, la plus utilisée, plus d'informations ici |
| par défaut+ | sysmonconfig-with-filedelete.xml | Il s'agit de la configuration équilibrée, la plus utilisée, plus d'informations incluant les sauvegardes de fichiers FileDelete |
| verbeuse | sysmonconfig-excludes-only.xml | C'est la configuration très verbeuse, tous les événements sont inclus, seuls les modules d'exclusion sont appliqués. Elle ne doit pas être utilisée en production sans validation, car elle générera une quantité importante de données et pourrait affecter les performances. Plus d'informations ici |
| super verbeuse | sysmonconfig-research.xml | Une configuration d'une verbosité extrême. Le volume de journaux attendu de ce fichier est significativement élevé, vraiment À NE PAS UTILISER EN PRODUCTION ! Cette configuration est uniquement destinée à la recherche, elle utilisera beaucoup plus de CPU/Mémoire. Ne l'activez que juste avant d'exécuter la technique à investiguer, puis chargez une configuration plus légère une fois terminé. |
| augment MDE | sysmonconfig-mde-augmentation.xml | Une configuration pour enrichir Defender for Endpoint, destinée à compléter les informations et à avoir le moins de chevauchement possible. Elle est basée sur la configuration par défaut/équilibrée et ne générera pas tous les événements pour Sysmon ; des commentaires sont présents dans la configuration. Dans l'intérêt de la réponse aux incidents, envisagez d'utiliser la configuration excludes only et de n'ingérer que les événements d'enrichissement. (Blog avec plus de détails bientôt) |