
Инструменты безопасности Microsoft Threat Intelligence
Инструменты безопасности Python Microsoft Threat Intelligence.
msticpy — это библиотека для исследования и охоты в сфере InfoSec в Jupyter Notebooks. Она включает функциональность для:
Он также включает некоторые инструменты для экономии времени в блокнотах, такие как виджеты для установки временных границ запросов, выбора и отображения элементов из списков и настройки среды блокнота.

Пакет msticpy изначально был разработан для поддержки создания Jupyter Notebooks для Microsoft Sentinel. Хотя Azure Sentinel по-прежнему остается важной частью нашей работы, мы расширяем компоненты запроса/получения данных для извлечения данных журналов из других источников (в настоящее время поддерживаются Splunk, Microsoft Defender for Endpoint и Microsoft Graph, но мы активно работаем над поддержкой данных с других платформ SIEM). Большинство компонентов также можно использовать с данными из любого источника. Pandas DataFrames используются как универсальный формат ввода и вывода почти всех компонентов. Также есть провайдер данных, упрощающий обработку данных из локальных CSV-файлов и сериализованных DataFrame.
Пакет решает три основные потребности исследователей безопасности и охотников:
Мы приветствуем отзывы, сообщения об ошибках, предложения по новым функциям и вклад.
Для базовой установки:
pip install msticpy
или для последней версии разработки
pip install git+https://github.com/microsoft/msticpy
Чтобы обновить msticpy до последней публичной не-бета версии, выполните:
pip install --upgrade msticpy
Обратите внимание, что рекомендуется скопировать ваш msticpyconfig.yaml и хранить его на диске, но вне папки msticpy, ссылаясь на него через переменную окружения. Это предотвратит потерю ваших конфигураций при каждом обновлении установки msticpy.
Полная документация находится на ReadTheDocs
Примеры блокнотов для многих модулей находятся в папке docs/notebooks и сопутствующих блокнотах.
Вы также можете просмотреть примеры блокнотов, ссылки на которые приведены в конце этого документа, чтобы увидеть некоторые функции в контексте. Вы можете поиграть с некоторыми функциями пакета в этом интерактивном демо на mybinder.org.
QueryProvider — это расширяемая библиотека запросов, ориентированная на Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData и другие источники данных журналов. Она также имеет специальную поддержку наборов данных Mordor и использования локальных данных.
Встроенные параметризованные запросы позволяют выполнять сложные запросы одним вызовом функции. Добавляйте свои собственные запросы с помощью простой схемы YAML.
Класс TILookup может выполнять поиск IoC по нескольким TI-провайдерам. Встроенные провайдеры включают AlienVault OTX, IBM XForce, VirusTotal и Azure Sentinel.
Входными данными может быть один наблюдаемый IoC или pandas DataFrame, содержащий несколько наблюдаемых. В зависимости от провайдера может потребоваться учетная запись и API-ключ. Некоторые провайдеры также применяют ограничение трафика (особенно для бесплатных уровней), что может повлиять на массовые поиски.
TIProviders и TILookup Usage Notebook
Классы поиска GeoIP позволяют сопоставлять геолокации IP-адресов, используя либо:

Модуль AzureData содержит функциональность для обогащения данных об узлах Azure дополнительными сведениями об узлах, доступными через API Azure. Модуль AzureSentinel позволяет запрашивать инциденты, получать запросы детекторов и охоты. AzureBlogStorage позволяет читать и записывать данные из блоб-хранилища.
Azure Resource APIs, Azure Sentinel APIs, Azure Storage
Этот подпакет содержит несколько модулей, полезных для работы над расследованиями и охотой в области безопасности:
Обнаруживайте необычные последовательности событий в ваших данных Office, Active Directory или других журналах. Вы можете извлекать сессии (например, активность, инициированную одной учетной записью) и идентифицировать и визуализировать необычные последовательности активности. Например, обнаружение того, что злоумышленник устанавливает правило пересылки почты в чьем-то почтовом ящике.
Anomalous Sessions и Anomalous Sequence Notebook
Анализ временных рядов позволяет выявлять необычные закономерности в ваших данных журналов с учетом нормальных сезонных колебаний (например, регулярный прилив и отлив событий в течение часов дня, дней недели и т.д.). Использование как анализа, так и визуализации выделяет необычные потоки трафика или активность событий для любого набора данных.

Отображайте любые события журналов на интерактивной временной шкале. Используя Bokeh Visualization Library, элемент управления временной шкалой позволяет визуализировать один или несколько потоков событий, интерактивно приближать определенные временные слоты и просматривать детали событий для отображаемых событий.

Функциональность дерева процессов имеет два основных компонента:
Существует набор служебных функций для извлечения отдельных и частичных деревьев из обработанного набора данных.

Process Tree и Process Tree Notebook
Позволяет использовать функциональность MSTICPy «ориентированным на сущности» способом. Все функции, запросы и поиски, относящиеся к определенному типу сущности (например, Host, IpAddress, Url), собраны вместе как методы этого класса сущностей. Итак, если вы хотите что-то сделать с IP-адресом, просто загрузите сущность IpAddress и просмотрите ее методы.
Pivot Functions и Pivot Functions Notebook
Экстрактор Base64 и архивов (gz, zip, tar). Он попытается найти любые строки, закодированные в base64, и попытается их декодировать. Если результат выглядит как один из поддерживаемых типов архивов, он распакует содержимое. Результаты каждого декодирования/распаковки повторно проверяются на наличие дальнейшего содержимого base64 вплоть до указанной глубины.
Base64 Decoding и Base64Unpack Notebook
Использует регулярные выражения для поиска шаблонов индикаторов компрометации (IoC) - IP-адреса, URL-адреса, DNS-домены, хэши, пути к файлам. Входными данными может быть одна строка или pandas DataFrame.
IoC Extraction и IoCExtract Notebook
Этот модуль предназначен для обобщения большого количества событий в кластеры различных шаблонов. Высокообъемные повторяющиеся события часто могут затруднить просмотр уникальных и интересных элементов.

Это модуль обучения без учителя, реализованный с использованием SciKit Learn DBScan.
Event Clustering и Event Clustering Notebook
Модуль для загрузки и декодирования журналов аудита Linux. Он объединяет сообщения с одинаковым идентификатором сообщения в отдельные события, декодирует поля данных, закодированные в шестнадцатеричном формате, и выполняет некоторое форматирование и нормализацию, специфичные для события (например, для событий запуска процесса он собирает аргументы командной строки процесса в одну строку).
Модуль для поддержки расследования на хосте Linux с включенным только протоколированием syslog. Включает функции для сбора данных хоста, кластеризации событий входа в систему и обнаружения пользовательских сессий, содержащих подозрительную активность.
Модуль для поддержки обнаружения известной вредоносной активности командной строки или подозрительных шаблонов активности командной строки.
Модуль для поддержки исследования доменных имен и URL с функциями для проверки доменного имени и создания снимка экрана URL.
Они построены на основе коллекции Jupyter ipywidgets и группируют общую функциональность, полезную в задачах InfoSec, такую как средства выбора списков, настройки временных границ запроса и отображения событий, в простой в использовании формат.


Примеры блокнотов:
Просматривайте напрямую на GitHub или скопируйте и вставьте ссылку в nbviewer.org
Смотрите следующие блокноты для дополнительных примеров использования этого пакета на практике:
Краткие рекомендации для разработчиков см. в этой статье вики Рекомендации для участников
Этот проект приветствует вклад и предложения. Большинство вкладов требует от вас согласия с Лицензионным соглашением с участником (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробнее см. на https://cla.microsoft.com.
Когда вы отправляете запрос на включение изменений (pull request), CLA-бот автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, метка, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наше CLA.
Этот проект принял Правила поведения в открытом исходном коде Microsoft. Для получения дополнительной информации см. Часто задаваемые вопросы о правилах поведения или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.