
msticpy v3.0.2
Outils de sécurité de renseignement sur les menaces de Microsoft
Outils de sécurité Python et Jupyter MSTIC
Outils de sécurité Python Microsoft Threat Intelligence.
msticpy est une bibliothèque pour l'investigation et la chasse en sécurité informatique dans les notebooks Jupyter. Elle comprend des fonctionnalités pour :
- interroger des données de logs provenant de multiples sources
- enrichir les données avec des menaces, des géolocalisations et des données de ressources Azure
- extraire des indicateurs d'activité (IoA) des logs et décompresser les données encodées
- effectuer des analyses sophistiquées telles que la détection de sessions anormales et la décomposition de séries temporelles
- visualiser les données à l'aide de chronologies interactives, d'arbres de processus et de diagrammes morphologiques multidimensionnels
Il comprend également des outils de notebook qui font gagner du temps, comme des widgets pour définir les limites temporelles des requêtes, sélectionner et afficher des éléments de listes, et configurer l'environnement du notebook.

Le package msticpy a été initialement développé pour soutenir la création de notebooks Jupyter pour Microsoft Sentinel. Bien qu'Azure Sentinel reste un axe majeur de notre travail, nous étendons les composants d'interrogation et d'acquisition de données pour récupérer des données de logs depuis d'autres sources (actuellement Splunk, Microsoft Defender for Endpoint et Microsoft Graph sont pris en charge, mais nous travaillons activement à la prise en charge des données d'autres plateformes SIEM). La plupart des composants peuvent également être utilisés avec des données provenant de n'importe quelle source. Les DataFrames Pandas sont utilisés comme format d'entrée et de sortie omniprésent de presque tous les composants. Il existe également un fournisseur de données pour faciliter le traitement des données à partir de fichiers CSV locaux et de DataFrames sérialisés (pickle).
Le package répond à trois besoins centraux des enquêteurs et chasseurs en sécurité :
- Acquérir et enrichir les données
- Analyser les données
- Visualiser les données
Nous accueillons favorablement les retours, les rapports de bogues, les suggestions de nouvelles fonctionnalités et les contributions.
Installation
Pour une installation de base :
pip install msticpy
ou pour la dernière version de développement
pip install git+https://github.com/microsoft/msticpy
Mise à jour
Pour mettre à jour msticpy vers la dernière version publique non bêta, exécutez :
pip install --upgrade msticpy
Notez qu'il est recommandé de copier votre fichier msticpyconfig.yaml et de le stocker sur votre disque mais en dehors de votre dossier msticpy, en le référençant dans une variable d'environnement. Cela vous évite de perdre vos configurations à chaque mise à jour de votre installation msticpy.
Documentation
La documentation complète se trouve sur ReadTheDocs
Des notebooks d'exemples pour de nombreux modules se trouvent dans le dossier docs/notebooks et les notebooks associés.
Vous pouvez également parcourir les notebooks d'exemples référencés à la fin de ce document pour voir certaines fonctionnalités utilisées en contexte. Vous pouvez expérimenter certaines fonctions du package dans cette démo interactive sur mybinder.org.
Acquisition de données de logs
QueryProvider est une bibliothèque de requêtes extensible ciblant Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData et d'autres sources de données de logs. Elle offre également un support spécial pour les ensembles de données Mordor et l'utilisation de données locales.
Des requêtes paramétrées intégrées permettent d'exécuter des requêtes complexes à partir d'un seul appel de fonction. Ajoutez vos propres requêtes à l'aide d'un schéma YAML simple.
Enrichissement des données
Fournisseurs de Threat Intelligence
La classe TILookup peut rechercher des IoC auprès de plusieurs fournisseurs de Threat Intelligence. Les fournisseurs intégrés incluent AlienVault OTX, IBM XForce, VirusTotal et Azure Sentinel.
L'entrée peut être un observable IoC unique ou un DataFrame pandas contenant plusieurs observables. Selon le fournisseur, vous pouvez avoir besoin d'un compte et d'une clé API. Certains fournisseurs imposent également une limitation de débit (surtout pour les niveaux gratuits), ce qui peut affecter les recherches en masse.
TIProviders et Notebook d'utilisation de TILookup
Données de géolocalisation
Les classes de recherche GeoIP vous permettent de faire correspondre les géolocalisations des adresses IP en utilisant soit :
- GeoLiteLookup - Maxmind Geolite (voir https://www.maxmind.com)
- IPStackLookup - IPStack (voir https://ipstack.com)

GeoIP Lookup et Notebook GeoIP
Données de ressources Azure, stockage et API Azure Sentinel
Le module AzureData contient des fonctionnalités pour enrichir les données concernant les détails des hôtes Azure avec des détails supplémentaires exposés via l'API Azure. Le module AzureSentinel vous permet d'interroger les incidents, de récupérer les requêtes de détection et de chasse. AzureBlogStorage vous permet de lire et d'écrire des données depuis le stockage blob.
API des ressources Azure, API Azure Sentinel, Stockage Azure
Analyse de sécurité
Ce sous-package contient plusieurs modules utiles pour travailler sur les enquêtes de sécurité et la chasse :
Détection de séquences anormales
Détectez des séquences d'événements inhabituelles dans vos données de logs Office, Active Directory ou autres. Vous pouvez extraire des sessions (par exemple, une activité initiée par le même compte) et identifier et visualiser des séquences d'activité inhabituelles. Par exemple, détecter un attaquant configurant une règle de transfert de courrier sur la boîte aux lettres de quelqu'un.
Sessions anormales et Notebook de séquences anormales
Analyse de séries temporelles
L'analyse de séries temporelles vous permet d'identifier des motifs inhabituels dans vos données de logs en tenant compte des variations saisonnières normales (par exemple, les fluctuations régulières des événements au fil des heures de la journée, des jours de la semaine, etc.). L'utilisation conjointe de l'analyse et de la visualisation met en évidence les flux de trafic ou les activités d'événements inhabituels pour tout ensemble de données.

Visualisation
Chronologies d'événements
Affichez tout événement de log sur une chronologie interactive. Utilisant la bibliothèque de visualisation Bokeh, le contrôle de chronologie vous permet de visualiser un ou plusieurs flux d'événements, de zoomer de manière interactive sur des créneaux horaires spécifiques et de voir les détails des événements tracés.

Chronologie et Notebook Chronologie
Arbres de processus
La fonctionnalité d'arbre de processus a deux composants principaux :
- Création d'arbre de processus - en prenant un log de création de processus d'un hôte et en construisant les relations parent-enfant entre les processus dans l'ensemble de données.
- Visualisation d'arbre de processus - cela prend la sortie traitée et affiche un arbre de processus interactif à l'aide de graphiques Bokeh.
Il existe un ensemble de fonctions utilitaires pour extraire des arbres individuels et partiels de l'ensemble de données traité.

Arbre de processus et Notebook Arbre de processus
Manipulation de données et fonctions utilitaires
Fonctions Pivot
Vous permet d'utiliser les fonctionnalités de MSTICPy de manière « centrée sur l'entité ». Toutes les fonctions, requêtes et recherches qui se rapportent à un type d'entité particulier (par exemple, Hôte, Adresse IP, URL) sont regroupées en tant que méthodes de cette classe d'entité. Ainsi, si vous voulez faire quelque chose avec une adresse IP, chargez simplement l'entité IpAddress et parcourez ses méthodes.
Fonctions Pivot et Notebook Fonctions Pivot
base64unpack
Extracteur de contenu Base64 et d'archives (gz, zip, tar). Il essaiera d'identifier toute chaîne encodée en base64 et de la décoder. Si le résultat ressemble à l'un des types d'archives pris en charge, il décompressera le contenu. Les résultats de chaque décodage/décompression sont revérifiés pour détecter d'autres contenus base64 et ce jusqu'à une profondeur spécifiée.
Décodage Base64 et Notebook Base64Unpack
iocextract
Utilise des expressions régulières pour rechercher des motifs d'indicateurs de compromission (IoC) - adresses IP, URL, domaines DNS, hachages, chemins de fichiers. L'entrée peut être une chaîne unique ou un DataFrame pandas.
Extraction IoC et Notebook IoCExtract
eventcluster (expérimental)
Ce module est destiné à résumer un grand nombre d'événements en clusters de différents motifs. Les événements répétitifs à volume élevé peuvent souvent rendre difficile la visualisation d'éléments uniques et intéressants.

Il s'agit d'un module d'apprentissage non supervisé implémenté à l'aide de SciKit Learn DBScan.
Regroupement d'événements et Notebook Regroupement d'événements
auditdextract
Module pour charger et décoder les logs d'audit Linux. Il regroupe les messages partageant le même ID de message en un seul événement, décode les champs de données encodés en hexadécimal et effectue un formatage et une normalisation spécifiques à l'événement (par exemple, pour les événements de démarrage de processus, il réassemble les arguments de ligne de commande du processus en une seule chaîne).
syslog_utils
Module pour soutenir l'investigation d'un hôte Linux avec uniquement la journalisation syslog activée. Cela comprend des fonctions pour collecter les données de l'hôte, regrouper les événements de connexion et détecter les sessions utilisateur contenant une activité suspecte.
cmd_line
Un module pour soutenir la détection d'activité de ligne de commande malveillante connue ou de motifs suspects d'activité de ligne de commande.
domain_utils
Un module pour soutenir l'investigation des noms de domaine et des URL avec des fonctions pour valider un nom de domaine et prendre une capture d'écran d'une URL.
Widgets de notebook
Ceux-ci sont construits à partir de la collection Jupyter ipywidgets et regroupent des fonctionnalités courantes utiles dans les tâches de sécurité informatique, telles que les sélecteurs de listes, les paramètres de limite de temps de requête et l'affichage d'événements, dans un format facile à utiliser.


Exemples de notebooks MSTICPy
Plus de notebooks sur Azure Sentinel Notebooks GitHub
Exemples de notebooks :
- Visite des fonctionnalités de MSTICPy
- Explorateur de comptes
- Explorateur de domaines et d'URL
- Explorateur d'adresses IP
- Explorateur d'hôtes Linux
- Explorateur d'hôtes Windows
- Guide de démarrage dans les notebooks Azure Sentinel
Visualisez directement sur GitHub ou copiez et collez le lien dans nbviewer.org
Exemples de notebooks avec données sauvegardées
Consultez les notebooks suivants pour plus d'exemples d'utilisation de ce package en pratique :
Plateformes et packages pris en charge
- msticpy est indépendant du système d'exploitation
- Nécessite Python 3.10 ou ultérieur
- Voir requirements.txt pour plus de détails et les exigences de version.
Contribuer
Pour des directives (brèves) pour les développeurs, consultez cet article wiki Directives pour les contributeurs
Ce projet accueille favorablement les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un Contrat de Licence de Contributeur (CLA) déclarant que vous avez le droit, et que vous le faites effectivement, de nous accorder les droits d'utiliser votre contribution. Pour plus de détails, visitez https://cla.microsoft.com.
Lorsque vous soumettez une pull request, un bot CLA déterminera automatiquement si vous devez fournir un CLA et décorera la PR en conséquence (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez à le faire qu'une seule fois sur tous les dépôts utilisant notre CLA.
Ce projet a adopté le Code de conduite open source de Microsoft. Pour plus d'informations, consultez la FAQ du code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.