
Outils de sécurité de renseignement sur les menaces de Microsoft
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 :
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é :
Nous accueillons favorablement les retours, les rapports de bogues, les suggestions de nouvelles fonctionnalités et les contributions.
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
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.
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.
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.
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
Les classes de recherche GeoIP vous permettent de faire correspondre les géolocalisations des adresses IP en utilisant soit :

GeoIP Lookup et Notebook GeoIP
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
Ce sous-package contient plusieurs modules utiles pour travailler sur les enquêtes de sécurité et la chasse :
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
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.

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
La fonctionnalité d'arbre de processus a deux composants principaux :
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
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
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
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
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
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).
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.
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.
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.
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 :
Visualisez directement sur GitHub ou copiez et collez le lien dans nbviewer.org
Consultez les notebooks suivants pour plus d'exemples d'utilisation de ce package en pratique :
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.