Cet article est le premier d'une série sur l'analyse des menaces Sysmon. Toutes les autres parties de la série:
Partie 1. Présentation de l'analyse des journaux Sysmon (nous sommes ici)
Partie 2. Utilisation des données des événements Sysmon pour identifier les menaces
Partie 3. Analyse approfondie des menaces Sysmon à l'aide de graphiques
Si vous êtes engagé dans la sécurité de l'information, vous devrez probablement le découvrir souvent dans les attaques en cours. Si vous avez déjà un œil exercé, vous pouvez rechercher une activité non standard dans les journaux bruts bruts - par exemple, un script PowerShell exécutant la commande DownloadStringou un script VBS prétendant être un fichier Word - il suffit de parcourir la dernière activité dans le journal des événements Windows. Mais c'est vraiment un gros casse-tête. Heureusement, Microsoft a créé Sysmon pour faciliter l'analyse des attaques.
Vous voulez comprendre les idées de base derrière les menaces affichées dans le journal Sysmon? Téléchargez notre guide des événements WMI en tant qu'outil d'espionnage et vous découvrirez comment les initiés peuvent secrètement espionner d'autres employés. Le principal problème lié à l'utilisation du journal des événements Windows est le manque d'informations sur les processus parents, c'est-à-dire il est impossible d'en comprendre la hiérarchie des processus. Les entrées du journal Sysmon, au contraire, contiennent l'identifiant du processus parent, son nom et la ligne de commande qui est lancée. Merci Microsoft.
Dans la première partie de notre série, nous verrons ce qui peut être fait avec les informations de base de Sysmon. Dans la partie 2, nous tirerons pleinement parti des informations parentales pour créer des structures de conformité plus complexes appelées graphiques de menaces. Dans la troisième partie, nous considérerons un algorithme simple qui scanne le graphe de menace pour rechercher une activité non standard à travers l'analyse du «poids» du graphe. Et à la fin, en guise de récompense, vous trouverez une méthode probabiliste précise (et compréhensible) de détection des menaces.
Partie 1: Présentation de l'analyse des journaux Sysmon
Qu'est-ce qui peut vous aider à comprendre la complexité du journal des événements? En fin de compte, SIEM. Il normalise les événements et simplifie leur analyse ultérieure. Mais nous n'avons pas besoin d'aller aussi loin, du moins au début. Au début, pour comprendre les principes du SIEM, il suffira d'essayer le merveilleux utilitaire gratuit Sysmon. Et il est étonnamment facile de travailler avec. Continuez comme ça, Microsoft!
Quelles sont les fonctionnalités de Sysmon?
En bref, des informations utiles et lisibles sur les processus (voir les images ci-dessous). Vous trouverez un tas de détails utiles qui ne sont pas dans le journal des événements Windows, mais surtout, les champs suivants:
- ID de processus (en décimal, pas en hexadécimal!)
- ID de processus parent
- Ligne de commande de processus
- La ligne de commande du processus parent
- Hachage d'image de fichier
- Noms des images de fichiers
Sysmon est installé à la fois en tant que pilote de périphérique et en tant que service - plus de détails ici. Son principal avantage est la capacité d'analyser les journaux de plusieurs sources, de corréler les informations et d'afficher les valeurs résultantes dans un dossier du journal des événements situé sur le chemin Microsoft -> Windows -> Sysmon -> Operational . Dans mes propres enquêtes sur les journaux Windows qui poussent les cheveux, je devais constamment basculer entre, par exemple, le dossier des journaux PowerShell et le dossier Sécurité, feuilletant les journaux d'événements dans une tentative héroïque de faire correspondre les valeurs entre eux. Ce n'est jamais une tâche facile, et comme je l'ai réalisé plus tard, il valait mieux s'approvisionner immédiatement en aspirine.
Sysmon fait également un bond en avant en fournissant des informations utiles (ou, comme les fournisseurs aiment à le dire, efficaces) pour aider à comprendre les processus sous-jacents. Par exemple, j'ai lancé une session secrète wmiexec simulant le mouvement d'un initié intelligent au sein d'un réseau. Voici ce que vous voyez dans le journal des événements Windows:
Le journal Windows affiche des informations sur le processus, mais elles sont peu utiles. Plus les identifiants de processus en hexadécimal ???
Un professionnel de l'informatique avec une compréhension des bases du piratage doit se méfier de la ligne de commande. Utiliser cmd.exe pour exécuter ensuite une autre commande avec la sortie de redirection vers un fichier avec un nom étrange est clairement similaire aux actions du logiciel de commande et de contrôle (C2) : de cette manière, un pseudo-shell est créé à l'aide des services WMI.
Jetons maintenant un coup d'œil à l'équivalent de l'entrée Sysmon, en notant la quantité d'informations supplémentaires qu'elle nous donne:
Opportunités Sysmon une capture d'écran: des informations détaillées sur le processus sous une forme lisible,
vous verrez non seulement la ligne de commande, mais le nom du fichier, le chemin vers l'application exécutable que Windows connaît à son sujet ("Windows Command Processor"), l'ID du processus parent , la ligne de commande est un parent qui a lancé le shell cmd, ainsi que le nom de fichier réel du processus parent. Tout au même endroit, enfin!
À partir du journal Sysmon, nous pouvons conclure qu'avec un degré de probabilité élevé, cette ligne de commande suspecte, que nous avons vue dans les journaux «bruts», n'est pas le résultat du travail normal de l'employé. Au contraire, il a été généré par un processus de type C2 - wmiexec, comme je l'ai mentionné précédemment - et a été directement engendré par le processus de service WMI (WmiPrvSe). Nous avons maintenant un indicateur qu'un attaquant distant ou un initié essaie une infrastructure d'entreprise.
Présentation de Get-Sysmonlogs
Bien sûr, c’est formidable lorsque Sysmon a les journaux au même endroit. Mais ce serait probablement encore mieux si nous pouvions accéder aux champs de journal individuels par programme - par exemple, via les commandes PowerShell. Dans ce cas, vous pouvez écrire un petit script PowerShell qui automatiserait la recherche de menaces potentielles!
Je n'étais pas le premier à avoir cette idée. Il est bon que certains messages de forum et projets GitHub aient déjà expliqué comment utiliser PowerShell pour analyser le journal Sysmon. Dans mon cas, je voulais éviter d'avoir à écrire des lignes distinctes de script d'analyse pour chaque champ Sysmon. J'ai donc utilisé le principe de la personne paresseuse et je pense avoir trouvé quelque chose d'intéressant en conséquence.
Le premier point important est la capacité de l'équipeGet-WinEvent lit les journaux Sysmon, filtre les événements nécessaires et affiche le résultat dans une variable PS, comme ici:
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
Si vous voulez vérifier vous-même le fonctionnement de la commande, alors en affichant le contenu dans le premier élément du tableau $ events, $ events [0] .Message, vous pouvez obtenir une série de chaînes de texte avec un format très simple: nom du champ Sysmon, deux points, puis la valeur elle-même.
Hourra! Sortie du journal Sysmon au format compatible JSON
Vous pensez la même chose que moi? Avec un peu plus d'efforts, vous pouvez convertir la sortie en une chaîne au format JSON, puis la charger directement dans l'objet PS à l'aide de la puissante commande ConvertFrom-Json .
Je vais vous montrer le code PowerShell pour la conversion - c'est très simple - dans la partie suivante. Pour l'instant, voyons ce que ma nouvelle commande appelée get-sysmonlogs, que j'ai installée en tant que module PS, peut faire.
Au lieu de plonger dans l'analyse des journaux Sysmon via l'interface du journal des événements peu pratique, nous pouvons facilement rechercher une activité incrémentielle directement à partir de la session PowerShell et utiliser la commande where PS (alias - «?») Pour réduire la sortie:
Liste des shells cmd lancés via WMI. L'analyse des menaces est bon marché avec notre propre équipe Get-Sysmonlogs
Incroyable! J'ai créé un outil d'interrogation de journaux Sysmon comme s'il s'agissait d'une base de données. Dans notre article sur EQL, il a été noté que cette fonction sera exécutée par l'utilitaire sympa qui y est décrit, bien que formellement cela se fasse via une véritable interface de type SQL. Oui, EQL est chouette, mais nous en parlerons dans la partie 3.
Analyse Sysmon et graphique
Abstrayons-nous et réfléchissons à ce que nous venons de créer. Essentiellement, nous avons maintenant une base de données d'événements Windows accessible via PowerShell. Comme je l'ai noté précédemment, il existe des connexions ou des relations entre les enregistrements - via ParentProcessId - afin que vous puissiez obtenir une hiérarchie complète des processus.
Si vous avez lu la série Adventures of Elusive Malware, vous savez que les pirates adorent créer des attaques sophistiquées en plusieurs étapes, dans lesquelles chaque processus joue son propre petit rôle et prépare un tremplin pour l'étape suivante. De telles choses sont extrêmement difficiles à attraper simplement à partir du journal "brut".
Mais avec ma commande Get-Sysmonlogs et une structure de données supplémentaire que nous examinerons plus loin dans le texte (bien sûr, il s'agit d'un graphique), nous aurons un moyen pratique de détecter les menaces - ce qui nécessite uniquement d'effectuer une recherche de vertex correcte.
Comme toujours dans nos projets de blog DYI, plus vous travaillez à analyser les détails des menaces à petite échelle, plus vous réalisez à quel point il est difficile de détecter les menaces au niveau organisationnel. Et cette prise de conscience est extrêmement importante .
Nous rencontrerons les premières complications intéressantes dans la deuxième partie de l'article, où nous commencerons à lier les événements Sysmon les uns aux autres dans des structures beaucoup plus complexes.