
msticpy v3.0.2
Strumenti di sicurezza di Microsoft Threat Intelligence
MSTIC Jupyter e Strumenti di Sicurezza Python
Strumenti di sicurezza Python di Microsoft Threat Intelligence.
msticpy è una libreria per indagini e hunting in ambito InfoSec nei Jupyter Notebook. Include funzionalità per:
- interrogare dati di log da più fonti
- arricchire i dati con Threat Intelligence, geolocalizzazioni e dati delle risorse Azure
- estrarre Indicator of Activity (IoA) dai log e decomprimere dati codificati
- eseguire analisi sofisticate come il rilevamento di sessioni anomale e la decomposizione di serie temporali
- visualizzare dati usando timeline interattive, alberi di processo e Morph Charts multidimensionali
Include anche alcuni strumenti per notebook che fanno risparmiare tempo, come widget per impostare i limiti temporali delle query, selezionare e visualizzare elementi da liste e configurare l'ambiente del notebook.

Il pacchetto msticpy è stato sviluppato inizialmente per supportare la creazione di Jupyter Notebook per Microsoft Sentinel. Sebbene Azure Sentinel sia ancora un grande focus del nostro lavoro, stiamo estendendo i componenti di interrogazione/acquisizione dati per ottenere dati di log da altre fonti (attualmente sono supportati Splunk, Microsoft Defender for Endpoint e Microsoft Graph, ma stiamo lavorando attivamente per supportare dati da altre piattaforme SIEM). La maggior parte dei componenti può anche essere utilizzata con dati provenienti da qualsiasi fonte. I Pandas DataFrame sono utilizzati come formato di input e output ubiquitario di quasi tutti i componenti. Esiste anche un data provider per facilitare l'acquisizione e l'elaborazione di dati da file CSV locali e DataFrame serializzati (pickled).
Il pacchetto soddisfa tre esigenze centrali per gli investigatori e i cacciatori di minacce (hunters) di sicurezza:
- Acquisire e arricchire dati
- Analizzare dati
- Visualizzare dati
Accogliamo con favore feedback, segnalazioni di bug, suggerimenti per nuove funzionalità e contributi.
Installazione
Per installazione base:
pip install msticpy
o per l'ultima build di sviluppo
pip install git+https://github.com/microsoft/msticpy
Aggiornamento
Per aggiornare msticpy all'ultima versione pubblica non beta, esegui:
pip install --upgrade msticpy
Nota: è buona norma copiare il file msticpyconfig.yaml e salvarlo sul disco ma al di fuori della cartella msticpy, facendovi riferimento in una variabile d'ambiente. Questo evita di perdere le configurazioni ogni volta che si aggiorna l'installazione di msticpy.
Documentazione
La documentazione completa è su ReadTheDocs
Notebook di esempio per molti dei moduli si trovano nella cartella docs/notebooks e notebook correlati.
Puoi anche sfogliare i notebook di esempio citati alla fine di questo documento per vedere alcune funzionalità in contesto. Puoi provare alcune funzioni del pacchetto in questa demo interattiva su mybinder.org.
Acquisizione Dati di Log
QueryProvider è una libreria di query estensibile rivolta a Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData e altre fonti di dati di log. Ha anche supporto speciale per i dataset Mordor e per l'uso di dati locali.
Le query parametrizzate integrate consentono di eseguire query complesse con una singola chiamata di funzione. Aggiungi le tue query usando un semplice schema YAML.
Arricchimento Dati
Provider di Threat Intelligence
La classe TILookup può cercare IoC attraverso più provider TI. I provider integrati includono AlienVault OTX, IBM XForce, VirusTotal e Azure Sentinel.
L'input può essere un singolo IoC observable o un pandas DataFrame contenente più observable. A seconda del provider, potresti aver bisogno di un account e di una chiave API. Alcuni provider applicano anche limitazioni di velocità (throttling, soprattutto per i livelli gratuiti), che potrebbero influire sull'esecuzione di ricerche in blocco.
TIProviders e TILookup Usage Notebook
Dati di Geolocalizzazione
Le classi di lookup GeoIP consentono di abbinare le geolocalizzazioni degli indirizzi IP usando:
- GeoLiteLookup - Maxmind Geolite (vedi https://www.maxmind.com)
- IPStackLookup - IPStack (vedi https://ipstack.com)

Dati delle Risorse Azure, Storage e API di Azure Sentinel
Il modulo AzureData contiene funzionalità per arricchire i dati riguardanti i dettagli degli host Azure con ulteriori dettagli esposti tramite l'API di Azure. Il modulo AzureSentinel consente di interrogare incidenti, recuperare query di rilevamento e caccia (hunting). AzureBlogStorage permette di leggere e scrivere dati dall'archivio blob.
Azure Resource APIs, Azure Sentinel APIs, Azure Storage
Analisi di Sicurezza
Questo sottopacchetto contiene diversi moduli utili per lavorare su indagini di sicurezza e caccia (hunting):
Rilevamento di Sequenze Anomale
Rileva sequenze insolite di eventi nei tuoi dati di Office, Active Directory o altri log. Puoi estrarre sessioni (ad esempio attività avviate dallo stesso account) e identificare e visualizzare sequenze anomale di attività. Ad esempio, rilevare un attaccante che imposta una regola di inoltro della posta sulla casella di posta di qualcuno.
Anomalous Sessions e Anomalous Sequence Notebook
Analisi di Serie Temporali
L'analisi di serie temporali consente di identificare pattern anomali nei dati di log tenendo conto delle normali variazioni stagionali (ad esempio il flusso e riflusso regolare degli eventi nelle ore del giorno, giorni della settimana, ecc.). Utilizzando sia analisi che visualizzazione si evidenziano flussi di traffico o attività di eventi anomali per qualsiasi set di dati.

Visualizzazione
Timeline degli Eventi
Visualizza qualsiasi evento di log su una timeline interattiva. Utilizzando la Bokeh Visualization Library il controllo timeline consente di visualizzare uno o più flussi di eventi, zoomare interattivamente su specifici intervalli di tempo e visualizzare i dettagli degli eventi rappresentati.

Alberi di Processo
La funzionalità dell'albero di processo ha due componenti principali:
- Creazione dell'albero di processo: prendere un log di creazione di processi da un host e costruire le relazioni genitore-figlio tra i processi nel set di dati.
- Visualizzazione dell'albero di processo: prende l'output elaborato e mostra un albero di processo interattivo usando i grafici Bokeh.
Ci sono un insieme di funzioni di utilità per estrarre alberi individuali e parziali dal set di dati elaborato.

Process Tree e Process Tree Notebook
Manipolazione dei Dati e Funzioni di Utilità
Funzioni Pivot
Ti permette di usare le funzionalità di MSTICPy in modo "entity-centric". Tutte le funzioni, query e ricerche che riguardano un particolare tipo di entità (ad esempio Host, IpAddress, Url) sono raccolte insieme come metodi di quella classe di entità. Quindi, se vuoi fare cose con un indirizzo IP, basta caricare l'entità IpAddress e sfogliare i suoi metodi.
Pivot Functions e Pivot Functions Notebook
base64unpack
Estrattore di Base64 e archivi (gz, zip, tar). Proverà a identificare qualsiasi stringa codificata in base64 e a decodificarle. Se il risultato assomiglia a uno dei tipi di archivio supportati, decomprimerà i contenuti. I risultati di ogni decodifica/decompressione vengono ricontrollati per ulteriore contenuto base64 fino a una profondità specificata.
Base64 Decoding e Base64Unpack Notebook
iocextract
Utilizza espressioni regolari per cercare pattern di Indicator of Compromise (IoC) - Indirizzi IP, URL, domini DNS, Hash, percorsi file. L'input può essere una singola stringa o un pandas dataframe.
IoC Extraction e IoCExtract Notebook
eventcluster (sperimentale)
Questo modulo è pensato per riassumere grandi numeri di eventi in cluster di pattern diversi. Eventi ripetitivi ad alto volume spesso rendono difficile vedere elementi unici e interessanti.

Questo è un modulo di apprendimento non supervisionato implementato usando SciKit Learn DBScan.
Event Clustering e Event Clustering Notebook
auditdextract
Modulo per caricare e decodificare i log di audit Linux. Unisce messaggi con lo stesso ID messaggio in singoli eventi, decodifica i campi dati codificati in esadecimale ed esegue una formattazione e normalizzazione specifica per evento (ad esempio, per eventi di avvio di processo riassemblerà gli argomenti della riga di comando del processo in una singola stringa).
syslog_utils
Modulo per supportare l'indagine di un host Linux con solo logging syslog abilitato. Include funzioni per raccogliere dati host, raggruppare eventi di accesso e rilevare sessioni utente contenenti attività sospette.
cmd_line
Un modulo per supportare il rilevamento di attività maligne note della riga di comando o pattern sospetti di attività della riga di comando.
domain_utils
Un modulo per supportare l'indagine di nomi di dominio e URL con funzioni per validare un nome di dominio e fare screenshot di un URL.
Widget per Notebook
Sono costruiti a partire dalla raccolta Jupyter ipywidgets e raggruppano funzionalità comuni utili in attività InfoSec come selettori di liste, impostazioni dei limiti temporali delle query e visualizzazione degli eventi in un formato facile da usare.


Notebook di esempio di MSTICPy
Altri Notebook su GitHub di Azure Sentinel Notebooks
Notebook di esempio:
- Tour of MSTICPy Features
- Account Explorer
- Domain and URL Explorer
- IP Explorer
- Linux Host Explorer
- Windows Host Explorer
- Getting started in Azure Sentinel notebooks
Visualizza direttamente su GitHub o copia e incolla il link su nbviewer.org
Esempi di notebook con dati salvati
Vedi i seguenti notebook per ulteriori esempi dell'uso di questo pacchetto in pratica:
Piattaforme e Pacchetti Supportati
- msticpy è indipendente dal sistema operativo
- Richiede Python 3.10 o successivo
- Vedi requirements.txt per maggiori dettagli e requisiti di versione.
Contribuire
Per linee guida per gli sviluppatori (brevi), vedi questo articolo wiki Contributor Guidelines
Questo progetto accoglie contributi e suggerimenti. La maggior parte dei contributi richiede di accettare un Contributor License Agreement (CLA) che dichiari di avere il diritto e di concederci effettivamente i diritti di utilizzare il tuo contributo. Per dettagli, visita https://cla.microsoft.com.
Quando invii una pull request, un CLA-bot determinerà automaticamente se devi fornire un CLA e decorerà la PR in modo appropriato (ad esempio, etichetta, commento). Segui semplicemente le istruzioni fornite dal bot. Dovrai farlo solo una volta per tutti i repository che utilizzano il nostro CLA.
Questo progetto ha adottato il Microsoft Open Source Code of Conduct. Per maggiori informazioni consulta le FAQ sul Code of Conduct o contatta [email protected] per ulteriori domande o commenti.