
Outils de sécurité de renseignement sur les menaces de Microsoft
# Outils de sécurité Python et Jupyter MSTIC  [](https://dev.azure.com/mstic-detections/mstic-jupyter/_build/latest?definitionId=14&branchName=main) [](https://pepy.tech/project/msticpy) 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. <img src="https://assets.kitploit.com/production/public/readmes/4869/97c3e7b33ee7d0b34e5cb314f29bc107b50e55772d00da4422ad32e48b1d0b91.png" alt="Timeline" title="Msticpy Timeline Control" height="300" /> Le package **msticpy** a été initialement développé pour soutenir la création de [notebooks Jupyter](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/) pour [Microsoft Sentinel](https://www.microsoft.com/en-us/security/business/siem-and-xdr/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](https://msticpy.readthedocs.io/en/latest/) Des notebooks d'exemples pour de nombreux modules se trouvent dans le dossier [docs/notebooks](https://github.com/microsoft/msticpy/blob/master/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. [](https://mybinder.org/v2/gh/Azure/Azure-Sentinel-Notebooks/master?filepath=A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) --- ## 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](https://github.com/OTRF/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. [Notebook Data Queries](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Data_Queries.ipynb) ## 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](https://msticpy.readthedocs.io/en/latest/data_acquisition/TIProviders.html) et [Notebook d'utilisation de TILookup](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/TIProviders.ipynb) ### 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>) <img src="https://assets.kitploit.com/production/public/readmes/4869/cfda22181d7483aad3a5f9b26a66c0cdbac4b83d6d5b17ccc5ed230225785fe2.png" alt="Folium map" title="Plotting Geo IP Location" height="200" /> [GeoIP Lookup](https://msticpy.readthedocs.io/en/latest/data_acquisition/GeoIPLookups.html) et [Notebook GeoIP](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/GeoIPLookups.ipynb) ### 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](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureData.html), [API Azure Sentinel](https://msticpy.readthedocs.io/en/latest/data_acquisition/Sentinel.html), [Stockage Azure](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureBlobStorage.html) ## 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](https://msticpy.readthedocs.io/en/latest/data_analysis/AnomalousSequence.html) et [Notebook de séquences anormales](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/AnomalousSequence.ipynb) ### 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. <img src="https://assets.kitploit.com/production/public/readmes/4869/4fd2983bca85a193be350f49bdaeb72fc1d926a40242c044bda8701f0759b886.png" alt="Time Series anomalies" title="Time Series anomalies" height="300" /> [Séries temporelles](https://msticpy.readthedocs.io/en/latest/visualization/TimeSeriesAnomalies.html) ## Visualisation ### Chronologies d'événements Affichez tout événement de log sur une chronologie interactive. Utilisant la [bibliothèque de visualisation Bokeh](https://bokeh.org/), 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. <img src="https://assets.kitploit.com/production/public/readmes/4869/c045bd779bafa8ae992a1d2b3741f4a71c5adaf4466d37c870c51f1cb00ade10.png" alt="Timeline" title="Msticpy Timeline Control" height="300" /> [Chronologie](https://msticpy.readthedocs.io/en/latest/visualization/EventTimeline.html) et [Notebook Chronologie](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventTimeline.ipynb) ### 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é. <img src="https://assets.kitploit.com/production/public/readmes/4869/30c4a7e6484a64a4f9434396b7b26a442e0ab697e26e2bd6d00f0abe754df60b.png" alt="Process Tree" title="Interactive Process Tree" height="400" /> [Arbre de processus](https://msticpy.readthedocs.io/en/latest/visualization/ProcessTree.html) et [Notebook Arbre de processus](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/ProcessTree.ipynb) ## 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](https://msticpy.readthedocs.io/en/latest/data_analysis/PivotFunctions.html) et [Notebook Fonctions Pivot](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/PivotFunctions.ipynb) ### 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](https://msticpy.readthedocs.io/en/latest/data_analysis/Base64Unpack.html) et [Notebook Base64Unpack](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Base64Unpack.ipynb) ### 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](https://msticpy.readthedocs.io/en/latest/data_analysis/IoCExtract.html) et [Notebook IoCExtract](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/IoCExtract.ipynb) ### 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. <img src="https://assets.kitploit.com/production/public/readmes/4869/ce85802e87219053d8ac425fd3fb3d07ba8f638bcbd0078756a9f4f0bcbb1d06.png" alt="Clustering" title="Clustering based on command-line variability" height="400" /> Il s'agit d'un module d'apprentissage non supervisé implémenté à l'aide de SciKit Learn DBScan. [Regroupement d'événements](https://msticpy.readthedocs.io/en/latest/data_analysis/EventClustering.html) et [Notebook Regroupement d'événements](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventClustering.ipynb) ### 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](https://ipywidgets.readthedocs.io/) 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. <img src="https://assets.kitploit.com/production/public/readmes/4869/26d223a31e1750c7407e4e562689fbfb4c92243981b794d649f35d9dafd06836.png" alt="Time span Widget" title="Query time setter" height="100" /> <img src="https://assets.kitploit.com/production/public/readmes/4869/5491bab202c5644d32270ea256b0e6f9173346595cd7245120d35330dcfe2e8b.png" alt="Alert browser" title="Alert browser" height="300" /> --- ## Exemples de notebooks MSTICPy [MSTICPy Notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/) ## Plus de notebooks sur Azure Sentinel Notebooks GitHub [Azure Sentinel Notebooks](https://github.com/Azure/Azure-Sentinel-Notebooks) Exemples de notebooks : - [Visite des fonctionnalités de MSTICPy](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) - [Explorateur de comptes](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Account.ipynb) - [Explorateur de domaines et d'URL](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Domain%20and%20URL.ipynb) - [Explorateur d'adresses IP](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20IP%20Address.ipynb) - [Explorateur d'hôtes Linux](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Linux%20Host.ipynb) - [Explorateur d'hôtes Windows](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Windows%20Host.ipynb) - [Guide de démarrage dans les notebooks Azure Sentinel](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Getting%20Started%20Guide%20For%20Azure%20Sentinel%20ML%20Notebooks.ipynb) Visualisez directement sur GitHub ou copiez et collez le lien dans [nbviewer.org](https://nbviewer.jupyter.org/) ## Exemples de notebooks avec données sauvegardées Consultez les notebooks suivants pour plus d'exemples d'utilisation de ce package en pratique : - [Apprentissage automatique simple](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Machine%20Learning%20in%20Notebooks%20Examples.ipynb) ## Plateformes et packages pris en charge - msticpy est indépendant du système d'exploitation - Nécessite [Python 3.10 ou ultérieur](https://www.python.org/dev/peps/pep-0494/) - Voir [requirements.txt](https://github.com/microsoft/msticpy/blob/main/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](https://github.com/microsoft/msticpy/wiki/Contributor-guidelines) 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](https://opensource.microsoft.com/codeofconduct/). Pour plus d'informations, consultez la [FAQ du code de conduite](https://opensource.microsoft.com/codeofconduct/faq/) ou contactez [[email protected]](mailto:[email protected]) pour toute question ou commentaire supplémentaire.