
msticpy v3.0.2
Ferramentas de Segurança de Inteligência de Ameaças da Microsoft
Ferramentas de Segurança MSTIC para Jupyter e Python
Ferramentas de Segurança Python da Microsoft Threat Intelligence.
msticpy é uma biblioteca para investigação e busca (hunting) de InfoSec em Jupyter Notebooks. Inclui funcionalidades para:
- consultar dados de log de múltiplas fontes
- enriquecer os dados com Inteligência de Ameaças, geolocalizações e dados de recursos do Azure
- extrair Indicadores de Atividade (IoA) de logs e descompactar dados codificados
- realizar análises sofisticadas como detecção de sessões anômalas e decomposição de séries temporais
- visualizar dados usando linhas do tempo interativas, árvores de processos e Gráficos Morph multi-dimensionais
Também inclui algumas ferramentas de notebook que economizam tempo, como widgets para definir limites temporais de consulta, selecionar e exibir itens de listas, e configurar o ambiente do notebook.

O pacote msticpy foi inicialmente desenvolvido para apoiar a criação de Jupyter Notebooks para Microsoft Sentinel. Embora o Azure Sentinel ainda seja um grande foco do nosso trabalho, estamos estendendo os componentes de consulta/aquisição de dados para obter dados de log de outras fontes (atualmente Splunk, Microsoft Defender for Endpoint e Microsoft Graph são suportados, mas estamos trabalhando ativamente no suporte a dados de outras plataformas SIEM). A maioria dos componentes também pode ser usada com dados de qualquer fonte. Pandas DataFrames são usados como o formato de entrada e saída ubíquo de quase todos os componentes. Há também um provedor de dados para facilitar o processamento de dados de arquivos CSV locais e DataFrames serializados (pickled).
O pacote atende a três necessidades centrais para investigadores e caçadores de segurança:
- Adquirir e enriquecer dados
- Analisar dados
- Visualizar dados
Aceitamos feedback, relatórios de bugs, sugestões de novas funcionalidades e contribuições.
Instalação
Para instalação principal:
pip install msticpy
ou para a última versão de desenvolvimento
pip install git+https://github.com/microsoft/msticpy
Atualização
Para atualizar o msticpy para a versão pública não-beta mais recente, execute:
pip install --upgrade msticpy
Nota: é uma boa prática copiar seu msticpyconfig.yaml e armazená-lo em seu disco, mas fora da sua pasta msticpy, referenciando-o em uma variável de ambiente. Isso evita que você perca suas configurações toda vez que atualizar sua instalação do msticpy.
Documentação
A documentação completa está em ReadTheDocs
Notebooks de exemplo para muitos dos módulos estão na pasta docs/notebooks e notebooks acompanhantes.
Você também pode navegar pelos notebooks de exemplo referenciados no final deste documento para ver algumas das funcionalidades usadas em contexto. Você pode experimentar algumas das funções do pacote nesta demonstração interativa no mybinder.org.
Aquisição de Dados de Log
QueryProvider é uma biblioteca de consulta extensível voltada para Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData e outras fontes de dados de log. Também possui suporte especial para conjuntos de dados Mordor e uso de dados locais.
Consultas parametrizadas integradas permitem executar consultas complexas a partir de uma única chamada de função. Adicione suas próprias consultas usando um esquema YAML simples.
Enriquecimento de Dados
Provedores de Inteligência de Ameaças
A classe TILookup pode consultar IoCs em vários provedores de TI. Os provedores integrados incluem AlienVault OTX, IBM XForce, VirusTotal e Azure Sentinel.
A entrada pode ser um único observável IoC ou um pandas DataFrame contendo múltiplos observáveis. Dependendo do provedor, pode ser necessário uma conta e uma chave de API. Alguns provedores também impõem limitação de taxa (especialmente em camadas gratuitas), o que pode afetar a realização de consultas em lote.
TIProviders e TILookup Usage Notebook
Dados de Geolocalização
As classes de consulta GeoIP permitem que você corresponda as geolocalizações de endereços IP usando:
- GeoLiteLookup - Maxmind Geolite (veja https://www.maxmind.com)
- IPStackLookup - IPStack (veja https://ipstack.com)

Dados de Recursos do Azure, Armazenamento e API do Azure Sentinel
O módulo AzureData contém funcionalidades para enriquecer dados sobre detalhes de hosts do Azure com detalhes adicionais expostos pela API do Azure. O módulo AzureSentinel permite consultar incidentes, recuperar consultas de detecção e hunting. O AzureBlogStorage permite ler e escrever dados do armazenamento de blobs.
Azure Resource APIs, Azure Sentinel APIs, Azure Storage
Análise de Segurança
Este subpacote contém vários módulos úteis para trabalhar em investigações de segurança e hunting:
Detecção de Sequência Anômala
Detecte sequências incomuns de eventos em seus dados de Office, Active Directory ou outros logs. Você pode extrair sessões (por exemplo, atividade iniciada pela mesma conta) e identificar e visualizar sequências incomuns de atividade. Por exemplo, detectar um invasor configurando uma regra de encaminhamento de e-mail na caixa de correio de alguém.
Anomalous Sessions e Anomalous Sequence Notebook
Análise de Séries Temporais
A análise de séries temporais permite identificar padrões incomuns em seus dados de log levando em consideração variações sazonais normais (por exemplo, o fluxo e refluxo regular de eventos ao longo das horas do dia, dias da semana, etc.). Usar tanto análise quanto visualização destaca fluxos de tráfego incomuns ou atividade de eventos para qualquer conjunto de dados.

Visualização
Linhas do Tempo de Eventos
Exiba quaisquer eventos de log em uma linha do tempo interativa. Usando a Bokeh Visualization Library, o controle de linha do tempo permite visualizar um ou mais fluxos de eventos, ampliar interativamente intervalos de tempo específicos e visualizar detalhes dos eventos plotados.

Árvores de Processos
A funcionalidade de árvore de processos tem dois componentes principais:
- Criação de Árvore de Processos - pegar um log de criação de processos de um host e construir as relações pai-filho entre os processos no conjunto de dados.
- Visualização de Árvore de Processos - isso pega a saída processada e exibe uma árvore de processos interativa usando gráficos Bokeh.
Há um conjunto de funções utilitárias para extrair árvores individuais e parciais do conjunto de dados processado.

Process Tree e Process Tree Notebook
Manipulação de Dados e Funções Utilitárias
Funções Pivot
Permite usar a funcionalidade do MSTICPy de forma "centrada na entidade". Todas as funções, consultas e pesquisas relacionadas a um tipo de entidade específico (ex: Host, IpAddress, Url) são agrupadas como métodos dessa classe de entidade. Então, se você quiser fazer algo com um endereço IP, basta carregar a entidade IpAddress e navegar pelos seus métodos.
Pivot Functions e Pivot Functions Notebook
base64unpack
Extrator de Base64 e arquivos (gz, zip, tar). Ele tentará identificar quaisquer strings codificadas em base64 e tentará decodificá-las. Se o resultado parecer com um dos tipos de arquivo suportados, ele descompactará o conteúdo. Os resultados de cada decodificação/descompactação são verificados novamente em busca de mais conteúdo base64 até uma profundidade especificada.
Base64 Decoding e Base64Unpack Notebook
iocextract
Usa expressões regulares para procurar padrões de Indicador de Comprometimento (IoC) - Endereços IP, URLs, domínios DNS, Hashes, caminhos de arquivos. A entrada pode ser uma única string ou um pandas dataframe.
IoC Extraction e IoCExtract Notebook
eventcluster (experimental)
Este módulo destina-se a ser usado para resumir grandes números de eventos em clusters de diferentes padrões. Eventos repetitivos de alto volume podem muitas vezes dificultar a visualização de itens únicos e interessantes.

Este é um módulo de aprendizado não supervisionado implementado usando SciKit Learn DBScan.
Event Clustering e Event Clustering Notebook
auditdextract
Módulo para carregar e decodificar logs de auditoria do Linux. Ele agrupa mensagens que compartilham o mesmo ID de mensagem em eventos únicos, decodifica campos de dados codificados em hexadecimal e realiza alguma formatação e normalização específica do evento (por exemplo, para eventos de início de processo, ele remontará os argumentos da linha de comando do processo em uma única string).
syslog_utils
Módulo para apoiar uma investigação de um host Linux com apenas o log syslog habilitado. Isso inclui funções para coletar dados do host, agrupar eventos de login e detectar sessões de usuário contendo atividade suspeita.
cmd_line
Um módulo para apoiar a detecção de atividade de linha de comando maliciosa conhecida ou padrões suspeitos de atividade de linha de comando.
domain_utils
Um módulo para apoiar a investigação de nomes de domínio e URLs com funções para validar um nome de domínio e tirar um screenshot de uma URL.
Widgets de Notebook
Eles são construídos a partir da coleção Jupyter ipywidgets e agrupam funcionalidades comuns úteis em tarefas de InfoSec, como seletores de lista, configurações de limite de tempo de consulta e exibição de eventos em um formato fácil de usar.


Exemplos de notebooks MSTICPy
Mais Notebooks no GitHub de Notebooks do Azure Sentinel
Exemplos de 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
Visualize diretamente no GitHub ou copie e cole o link em nbviewer.org
Exemplos de notebooks com dados salvos
Veja os notebooks a seguir para mais exemplos do uso deste pacote na prática:
Plataformas e Pacotes Suportados
- msticpy é independente de SO
- Requer Python 3.10 ou posterior
- Veja requirements.txt para mais detalhes e requisitos de versão.
Contribuição
Para diretrizes de desenvolvimento (breves), veja este artigo da wiki Contributor Guidelines
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Contribuidor (CLA) declarando que você tem o direito e, de fato, nos concede os direitos de usar sua contribuição. Para detalhes, visite https://cla.microsoft.com.
Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para mais informações, veja as Perguntas Frequentes sobre o Código de Conduta ou entre em contato com [email protected] para quaisquer perguntas ou comentários adicionais.