
msticpy v3.0.2
Microsoft Threat Intelligence Sicherheitstools
MSTIC Jupyter und Python-Sicherheitstools
Microsoft Threat Intelligence Python-Sicherheitstools.
msticpy ist eine Bibliothek für InfoSec-Untersuchungen und -Jagd in Jupyter Notebooks. Sie bietet Funktionen zum:
- Abfragen von Protokolldaten aus mehreren Quellen
- Anreichern der Daten mit Bedrohungsinformationen, Geolokationen und Azure-Ressourcendaten
- Extrahieren von Aktivitätsindikatoren (IoA) aus Protokollen und Entpacken codierter Daten
- Durchführen anspruchsvoller Analysen wie Erkennung anomaler Sitzungen und Zeitreihenzerlegung
- Visualisieren von Daten mittels interaktiver Zeitleisten, Prozessbäume und mehrdimensionaler Morph-Diagramme
Es enthält auch einige zeitsparende Notebook-Werkzeuge wie Widgets zum Festlegen von Abfragezeitgrenzen, Auswählen und Anzeigen von Elementen aus Listen und Konfigurieren der Notebook-Umgebung.

Das msticpy-Paket wurde ursprünglich zur Unterstützung von Jupyter Notebooks für Microsoft Sentinel entwickelt. Obwohl Azure Sentinel immer noch ein großer Schwerpunkt unserer Arbeit ist, erweitern wir die Datenabfrage-/Erfassungskomponenten, um Protokolldaten aus anderen Quellen zu ziehen (derzeit werden Splunk, Microsoft Defender for Endpoint und Microsoft Graph unterstützt, aber wir arbeiten aktiv an der Unterstützung von Daten anderer SIEM-Plattformen). Die meisten Komponenten können auch mit Daten aus beliebigen Quellen verwendet werden. Pandas DataFrames werden als universelles Ein- und Ausgabeformat fast aller Komponenten verwendet. Es gibt auch einen Datenanbieter, der die Verarbeitung von Daten aus lokalen CSV-Dateien und eingelegten DataFrames erleichtert.
Das Paket adressiert drei zentrale Bedürfnisse für Sicherheitsermittler und -Jäger:
- Erfassen und Anreichern von Daten
- Analysieren von Daten
- Visualisieren von Daten
Wir freuen uns über Feedback, Fehlerberichte, Vorschläge für neue Funktionen und Beiträge.
Installation
Für die Kerninstallation:
pip install msticpy
oder für den neuesten Entwicklungsbuild
pip install git+https://github.com/microsoft/msticpy
Aktualisierung
Um msticpy auf die neueste öffentliche Nicht-Beta-Version zu aktualisieren, führen Sie Folgendes aus:
pip install --upgrade msticpy
Hinweis: Es ist empfehlenswert, Ihre msticpyconfig.yaml zu kopieren und außerhalb Ihres msticpy-Ordners auf der Festplatte zu speichern und in einer Umgebungsvariablen zu referenzieren. Dies verhindert, dass Sie Ihre Konfigurationen jedes Mal verlieren, wenn Sie Ihre msticpy-Installation aktualisieren.
Dokumentation
Die vollständige Dokumentation finden Sie auf ReadTheDocs
Beispiel-Notebooks für viele der Module befinden sich im docs/notebooks-Ordner und in begleitenden Notebooks.
Sie können auch die am Ende dieses Dokuments referenzierten Beispiel-Notebooks durchsuchen, um einige der Funktionen im Kontext zu sehen. Sie können einige der Paketfunktionen in dieser interaktiven Demo auf mybinder.org ausprobieren.
Protokolldatenerfassung
QueryProvider ist eine erweiterbare Abfragebibliothek, die auf Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData und andere Protokolldatenquellen abzielt. Es bietet auch spezielle Unterstützung für Mordor-Datensätze und die Verwendung lokaler Daten.
Integrierte parametrisierte Abfragen ermöglichen das Ausführen komplexer Abfragen mit einem einzigen Funktionsaufruf. Fügen Sie Ihre eigenen Abfragen mit einem einfachen YAML-Schema hinzu.
Datenanreicherung
Threat Intelligence-Anbieter
Die TILookup-Klasse kann IoCs über mehrere TI-Anbieter hinweg nachschlagen. Integrierte Anbieter sind AlienVault OTX, IBM XForce, VirusTotal und Azure Sentinel.
Die Eingabe kann ein einzelner IoC-Beobachtungswert oder ein pandas DataFrame sein, das mehrere Beobachtungswerte enthält. Je nach Anbieter benötigen Sie möglicherweise ein Konto und einen API-Schlüssel. Einige Anbieter erzwingen auch Drosselung (insbesondere für kostenlose Stufen), was die Durchführung von Massenabfragen beeinträchtigen könnte.
TIProviders und TILookup-Nutzungsnotebook
Geolokationsdaten
Die GeoIP-Nachschlageklassen ermöglichen Ihnen, die Geolokationen von IP-Adressen mit entweder:
- GeoLiteLookup - Maxmind Geolite (siehe https://www.maxmind.com)
- IPStackLookup - IPStack (siehe https://ipstack.com)

GeoIP-Nachschlage und GeoIP-Notebook
Azure-Ressourcendaten, -Speicher und Azure Sentinel API
Das AzureData-Modul enthält Funktionen zum Anreichern von Daten zu Azure-Host-Details mit zusätzlichen Host-Details, die über die Azure-API verfügbar gemacht werden. Das AzureSentinel-Modul ermöglicht Ihnen das Abfragen von Incidents, das Abrufen von Detektor- und Jagdabfragen. AzureBlogStorage ermöglicht Ihnen das Lesen und Schreiben von Daten aus Blob-Speicher.
Azure Resource APIs, Azure Sentinel APIs, Azure Storage
Sicherheitsanalyse
Dieses Unterpaket enthält mehrere Module, die bei Sicherheitsuntersuchungen und -jagden hilfreich sind:
Erkennung anomaler Sequenzen
Erkennen Sie ungewöhnliche Ereignissequenzen in Ihren Office-, Active Directory- oder anderen Protokolldaten. Sie können Sitzungen extrahieren (z. B. Aktivitäten, die vom selben Konto initiiert wurden) und ungewöhnliche Aktivitätssequenzen identifizieren und visualisieren. Zum Beispiel das Erkennen eines Angreifers, der eine E-Mail-Weiterleitungsregel im Postfach einer Person einrichtet.
Anomale Sitzungen und Notebook für anomale Sequenzen
Zeitreihenanalyse
Zeitreihenanalyse ermöglicht es Ihnen, ungewöhnliche Muster in Ihren Protokolldaten unter Berücksichtigung normaler saisonaler Variationen zu identifizieren (z. B. das regelmäßige Auf und Ab von Ereignissen über Tagesstunden, Wochentage usw.). Sowohl Analyse als auch Visualisierung heben ungewöhnliche Verkehrsflüsse oder Ereignisaktivitäten für jeden Datensatz hervor.

Visualisierung
Ereignis-Zeitleisten
Zeigen Sie beliebige Protokollereignisse auf einer interaktiven Zeitleiste an. Mit der Bokeh Visualization Library ermöglicht das Zeitleisten-Steuerelement die Visualisierung eines oder mehrerer Ereignisströme, das interaktive Zoomen in bestimmte Zeitslots und das Anzeigen von Ereignisdetails für geplottete Ereignisse.

Zeitleiste und Zeitleisten-Notebook
Prozessbäume
Die Prozessbaumfunktionalität hat zwei Hauptkomponenten:
- Prozessbaum-Erstellung – Aufnehmen eines Prozesserstellungsprotokolls von einem Host und Aufbau der Eltern-Kind-Beziehungen zwischen Prozessen im Datensatz.
- Prozessbaum-Visualisierung – nimmt die verarbeitete Ausgabe und zeigt einen interaktiven Prozessbaum mit Bokeh-Diagrammen an.
Es gibt eine Reihe von Dienstprogrammfunktionen zum Extrahieren einzelner und partieller Bäume aus dem verarbeiteten Datensatz.

Prozessbaum und Prozessbaum-Notebook
Datenmanipulation und Hilfsfunktionen
Pivot-Funktionen
Ermöglicht die Nutzung von MSTICPy-Funktionalität auf „entitätszentrierte" Weise. Alle Funktionen, Abfragen und Lookups, die sich auf einen bestimmten Entitätstyp beziehen (z. B. Host, IpAddress, Url), werden als Methoden dieser Entitätsklasse zusammengefasst. Wenn Sie also etwas mit einer IP-Adresse tun möchten, laden Sie einfach die IpAddress-Entität und durchsuchen Sie deren Methoden.
Pivot-Funktionen und Pivot-Funktionen-Notebook
base64unpack
Base64- und Archiv-Extraktor (gz, zip, tar). Es wird versucht, base64-codierte Zeichenfolgen zu identifizieren und zu decodieren. Wenn das Ergebnis wie einer der unterstützten Archivtypen aussieht, wird der Inhalt entpackt. Die Ergebnisse jeder Decodierung/Entpackung werden auf weitere base64-Inhalte bis zu einer angegebenen Tiefe überprüft.
Base64-Decodierung und Base64Unpack-Notebook
iocextract
Verwendet reguläre Ausdrücke, um nach IoC-Mustern (Indikatoren für Kompromittierung) zu suchen – IP-Adressen, URLs, DNS-Domänen, Hashes, Dateipfade. Die Eingabe kann eine einzelne Zeichenfolge oder ein pandas DataFrame sein.
IoC-Extraktion und IoCExtract-Notebook
eventcluster (experimentell)
Dieses Modul dient dazu, eine große Anzahl von Ereignissen in Cluster unterschiedlicher Muster zusammenzufassen. Hochvolumige sich wiederholende Ereignisse können oft die Sicht auf einzigartige und interessante Elemente erschweren.

Dies ist ein unüberwachtes Lernmodul, das mit SciKit Learn DBScan implementiert wurde.
Ereignis-Clustering und Ereignis-Clustering-Notebook
auditdextract
Modul zum Laden und Decodieren von Linux-Audit-Protokollen. Es fasst Nachrichten mit derselben Nachrichten-ID zu einzelnen Ereignissen zusammen, decodiert hexadezimal codierte Datenfelder und führt eine ereignisspezifische Formatierung und Normalisierung durch (z. B. für Prozessstartereignisse werden die Befehlszeilenargumente des Prozesses zu einer einzelnen Zeichenfolge zusammengesetzt).
syslog_utils
Modul zur Unterstützung einer Untersuchung eines Linux-Hosts, bei dem nur Syslog-Protokollierung aktiviert ist. Enthält Funktionen zum Zusammenstellen von Host-Daten, Clustern von Anmeldeereignissen und Erkennen von Benutzersitzungen mit verdächtigen Aktivitäten.
cmd_line
Ein Modul zur Unterstützung der Erkennung bekannter bösartiger Befehlszeilenaktivitäten oder verdächtiger Muster von Befehlszeilenaktivitäten.
domain_utils
Ein Modul zur Unterstützung der Untersuchung von Domainnamen und URLs mit Funktionen zum Validieren eines Domainnamens und zum Erstellen eines Screenshots einer URL.
Notebook-Widgets
Diese sind aus der Jupyter ipywidgets-Sammlung erstellt und gruppieren gemeinsame Funktionalitäten, die bei InfoSec-Aufgaben nützlich sind, wie Listenauswahl, Abfragezeitgrenzeneinstellungen und Ereignisanzeige in einem einfach zu verwendenden Format.


Beispiel-MSTICPy-Notebooks
Weitere Notebooks auf Azure Sentinel Notebooks GitHub
Beispiel-Notebooks:
- Tour of MSTICPy Features
- Account Explorer
- Domain and URL Explorer
- IP Explorer
- Linux Host Explorer
- Windows Host Explorer
- Getting started in Azure Sentinel notebooks
Zeigen Sie direkt auf GitHub an oder kopieren Sie den Link und fügen Sie ihn in nbviewer.org ein.
Notebook-Beispiele mit gespeicherten Daten
Siehe folgende Notebooks für weitere Beispiele zur Verwendung dieses Pakets in der Praxis:
Unterstützte Plattformen und Pakete
- msticpy ist plattformunabhängig
- Erfordert Python 3.10 oder höher
- Siehe requirements.txt für weitere Details und Versionsanforderungen.
Mitwirken
Für (kurze) Entwicklerrichtlinien siehe diesen Wiki-Artikel Contributor Guidelines
Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, die erklärt, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tun. Einzelheiten finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull-Request einreichen, wird ein CLA-Bot automatisch feststellen, ob Sie eine CLA bereitstellen müssen, und den PR entsprechend kennzeichnen (z. B. Label, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unser CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Code of Conduct übernommen. Weitere Informationen finden Sie im Code of Conduct FAQ oder wenden Sie sich an [email protected] mit weiteren Fragen oder Kommentaren.