
Инструменты безопасности Microsoft Threat Intelligence
# MSTIC Jupyter и инструменты безопасности Python  [](https://dev.azure.com/mstic-detections/mstic-jupyter/_build/latest?definitionId=14&branchName=main) [](https://pepy.tech/project/msticpy) Инструменты безопасности Python Microsoft Threat Intelligence. **msticpy** — это библиотека для исследования и охоты в сфере InfoSec в Jupyter Notebooks. Она включает функциональность для: - запроса данных журналов из нескольких источников - обогащения данных данными об угрозах, геолокациями и данными ресурсов Azure - извлечения индикаторов активности (IoA) из журналов и распаковки закодированных данных - выполнения сложного анализа, такого как обнаружение аномальных сессий и декомпозиция временных рядов - визуализации данных с помощью интерактивных временных шкал, деревьев процессов и многомерных морф-диаграмм Он также включает некоторые инструменты для экономии времени в блокнотах, такие как виджеты для установки временных границ запросов, выбора и отображения элементов из списков и настройки среды блокнота. <img src="https://assets.kitploit.com/production/public/readmes/4869/97c3e7b33ee7d0b34e5cb314f29bc107b50e55772d00da4422ad32e48b1d0b91.png" alt="Временная шкала" title="Управление временной шкалой Msticpy" height="300" /> Пакет **msticpy** изначально был разработан для поддержки создания [Jupyter Notebooks](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/) для [Microsoft Sentinel](https://www.microsoft.com/en-us/security/business/siem-and-xdr/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](https://msticpy.readthedocs.io/en/latest/) Примеры блокнотов для многих модулей находятся в папке [docs/notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks) и сопутствующих блокнотах. Вы также можете просмотреть примеры блокнотов, ссылки на которые приведены в конце этого документа, чтобы увидеть некоторые функции в контексте. Вы можете поиграть с некоторыми функциями пакета в этом интерактивном демо на mybinder.org. [](https://mybinder.org/v2/gh/Azure/Azure-Sentinel-Notebooks/master?filepath=A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) --- ## Получение данных журналов QueryProvider — это расширяемая библиотека запросов, ориентированная на Microsoft Sentinel/Log Analytics, Microsoft XDR, Splunk, OData и другие источники данных журналов. Она также имеет специальную поддержку наборов данных [Mordor](https://github.com/OTRF/mordor) и использования локальных данных. Встроенные параметризованные запросы позволяют выполнять сложные запросы одним вызовом функции. Добавляйте свои собственные запросы с помощью простой схемы YAML. [Data Queries Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Data_Queries.ipynb) ## Обогащение данных ### Провайдеры Threat Intelligence Класс TILookup может выполнять поиск IoC по нескольким TI-провайдерам. Встроенные провайдеры включают AlienVault OTX, IBM XForce, VirusTotal и Azure Sentinel. Входными данными может быть один наблюдаемый IoC или pandas DataFrame, содержащий несколько наблюдаемых. В зависимости от провайдера может потребоваться учетная запись и API-ключ. Некоторые провайдеры также применяют ограничение трафика (особенно для бесплатных уровней), что может повлиять на массовые поиски. [TIProviders](https://msticpy.readthedocs.io/en/latest/data_acquisition/TIProviders.html) и [TILookup Usage Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/TIProviders.ipynb) ### Данные геолокации Классы поиска GeoIP позволяют сопоставлять геолокации IP-адресов, используя либо: - GeoLiteLookup - Maxmind Geolite (см. <https://www.maxmind.com>) - IPStackLookup - IPStack (см. <https://ipstack.com>) <img src="https://assets.kitploit.com/production/public/readmes/4869/cfda22181d7483aad3a5f9b26a66c0cdbac4b83d6d5b17ccc5ed230225785fe2.png" alt="Карта Folium" title="Отображение геолокации по IP" height="200" /> [GeoIP Lookup](https://msticpy.readthedocs.io/en/latest/data_acquisition/GeoIPLookups.html) и [GeoIP Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/GeoIPLookups.ipynb) ### Данные ресурсов Azure, хранилище и API Azure Sentinel Модуль AzureData содержит функциональность для обогащения данных об узлах Azure дополнительными сведениями об узлах, доступными через API Azure. Модуль AzureSentinel позволяет запрашивать инциденты, получать запросы детекторов и охоты. AzureBlogStorage позволяет читать и записывать данные из блоб-хранилища. [Azure Resource APIs](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureData.html), [Azure Sentinel APIs](https://msticpy.readthedocs.io/en/latest/data_acquisition/Sentinel.html), [Azure Storage](https://msticpy.readthedocs.io/en/latest/data_acquisition/AzureBlobStorage.html) ## Анализ безопасности Этот подпакет содержит несколько модулей, полезных для работы над расследованиями и охотой в области безопасности: ### Обнаружение аномальных последовательностей Обнаруживайте необычные последовательности событий в ваших данных Office, Active Directory или других журналах. Вы можете извлекать сессии (например, активность, инициированную одной учетной записью) и идентифицировать и визуализировать необычные последовательности активности. Например, обнаружение того, что злоумышленник устанавливает правило пересылки почты в чьем-то почтовом ящике. [Anomalous Sessions](https://msticpy.readthedocs.io/en/latest/data_analysis/AnomalousSequence.html) и [Anomalous Sequence Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/AnomalousSequence.ipynb) ### Анализ временных рядов Анализ временных рядов позволяет выявлять необычные закономерности в ваших данных журналов с учетом нормальных сезонных колебаний (например, регулярный прилив и отлив событий в течение часов дня, дней недели и т.д.). Использование как анализа, так и визуализации выделяет необычные потоки трафика или активность событий для любого набора данных. <img src="https://assets.kitploit.com/production/public/readmes/4869/4fd2983bca85a193be350f49bdaeb72fc1d926a40242c044bda8701f0759b886.png" alt="Аномалии временных рядов" title="Аномалии временных рядов" height="300" /> [Time Series](https://msticpy.readthedocs.io/en/latest/visualization/TimeSeriesAnomalies.html) ## Визуализация ### Временные шкалы событий Отображайте любые события журналов на интерактивной временной шкале. Используя [Bokeh Visualization Library](https://bokeh.org/), элемент управления временной шкалой позволяет визуализировать один или несколько потоков событий, интерактивно приближать определенные временные слоты и просматривать детали событий для отображаемых событий. <img src="https://assets.kitploit.com/production/public/readmes/4869/c045bd779bafa8ae992a1d2b3741f4a71c5adaf4466d37c870c51f1cb00ade10.png" alt="Временная шкала" title="Управление временной шкалой Msticpy" height="300" /> [Timeline](https://msticpy.readthedocs.io/en/latest/visualization/EventTimeline.html) и [Timeline Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventTimeline.ipynb) ### Деревья процессов Функциональность дерева процессов имеет два основных компонента: - Создание дерева процессов - берет журнал создания процессов с хоста и строит связи родитель-потомок между процессами в наборе данных. - Визуализация дерева процессов - берет обработанный вывод и отображает интерактивное дерево процессов с использованием графиков Bokeh. Существует набор служебных функций для извлечения отдельных и частичных деревьев из обработанного набора данных. <img src="https://assets.kitploit.com/production/public/readmes/4869/30c4a7e6484a64a4f9434396b7b26a442e0ab697e26e2bd6d00f0abe754df60b.png" alt="Дерево процессов" title="Интерактивное дерево процессов" height="400" /> [Process Tree](https://msticpy.readthedocs.io/en/latest/visualization/ProcessTree.html) и [Process Tree Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/ProcessTree.ipynb) ## Манипуляции с данными и служебные функции ### Сводные функции (Pivot Functions) Позволяет использовать функциональность *MSTICPy* «ориентированным на сущности» способом. Все функции, запросы и поиски, относящиеся к определенному типу сущности (например, Host, IpAddress, Url), собраны вместе как методы этого класса сущностей. Итак, если вы хотите что-то сделать с IP-адресом, просто загрузите сущность IpAddress и просмотрите ее методы. [Pivot Functions](https://msticpy.readthedocs.io/en/latest/data_analysis/PivotFunctions.html) и [Pivot Functions Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/PivotFunctions.ipynb) ### base64unpack Экстрактор Base64 и архивов (gz, zip, tar). Он попытается найти любые строки, закодированные в base64, и попытается их декодировать. Если результат выглядит как один из поддерживаемых типов архивов, он распакует содержимое. Результаты каждого декодирования/распаковки повторно проверяются на наличие дальнейшего содержимого base64 вплоть до указанной глубины. [Base64 Decoding](https://msticpy.readthedocs.io/en/latest/data_analysis/Base64Unpack.html) и [Base64Unpack Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/Base64Unpack.ipynb) ### iocextract Использует регулярные выражения для поиска шаблонов индикаторов компрометации (IoC) - IP-адреса, URL-адреса, DNS-домены, хэши, пути к файлам. Входными данными может быть одна строка или pandas DataFrame. [IoC Extraction](https://msticpy.readthedocs.io/en/latest/data_analysis/IoCExtract.html) и [IoCExtract Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/IoCExtract.ipynb) ### eventcluster (экспериментальный) Этот модуль предназначен для обобщения большого количества событий в кластеры различных шаблонов. Высокообъемные повторяющиеся события часто могут затруднить просмотр уникальных и интересных элементов. <img src="https://assets.kitploit.com/production/public/readmes/4869/ce85802e87219053d8ac425fd3fb3d07ba8f638bcbd0078756a9f4f0bcbb1d06.png" alt="Кластеризация" title="Кластеризация на основе изменчивости командной строки" height="400" /> Это модуль обучения без учителя, реализованный с использованием SciKit Learn DBScan. [Event Clustering](https://msticpy.readthedocs.io/en/latest/data_analysis/EventClustering.html) и [Event Clustering Notebook](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/EventClustering.ipynb) ### auditdextract Модуль для загрузки и декодирования журналов аудита Linux. Он объединяет сообщения с одинаковым идентификатором сообщения в отдельные события, декодирует поля данных, закодированные в шестнадцатеричном формате, и выполняет некоторое форматирование и нормализацию, специфичные для события (например, для событий запуска процесса он собирает аргументы командной строки процесса в одну строку). ### syslog_utils Модуль для поддержки расследования на хосте Linux с включенным только протоколированием syslog. Включает функции для сбора данных хоста, кластеризации событий входа в систему и обнаружения пользовательских сессий, содержащих подозрительную активность. ### cmd_line Модуль для поддержки обнаружения известной вредоносной активности командной строки или подозрительных шаблонов активности командной строки. ### domain_utils Модуль для поддержки исследования доменных имен и URL с функциями для проверки доменного имени и создания снимка экрана URL. ### Виджеты блокнотов Они построены на основе коллекции [Jupyter ipywidgets](https://ipywidgets.readthedocs.io/) и группируют общую функциональность, полезную в задачах InfoSec, такую как средства выбора списков, настройки временных границ запроса и отображения событий, в простой в использовании формат. <img src="https://assets.kitploit.com/production/public/readmes/4869/26d223a31e1750c7407e4e562689fbfb4c92243981b794d649f35d9dafd06836.png" alt="Виджет временного интервала" title="Установщик времени запроса" height="100" /> <img src="https://assets.kitploit.com/production/public/readmes/4869/5491bab202c5644d32270ea256b0e6f9173346595cd7245120d35330dcfe2e8b.png" alt="Браузер оповещений" title="Браузер оповещений" height="300" /> --- ## Примеры блокнотов MSTICPy [MSTICPy Notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/) ## Дополнительные блокноты на GitHub Azure Sentinel Notebooks [Azure Sentinel Notebooks](https://github.com/Azure/Azure-Sentinel-Notebooks) Примеры блокнотов: - [Обзор функций MSTICPy](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) - [Обозреватель учетных записей](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Account.ipynb) - [Обозреватель доменов и URL](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Domain%20and%20URL.ipynb) - [Обозреватель IP](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20IP%20Address.ipynb) - [Обозреватель хостов Linux](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Linux%20Host.ipynb) - [Обозреватель хостов Windows](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Windows%20Host.ipynb) - [Начало работы с блокнотами Azure Sentinel](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Getting%20Started%20Guide%20For%20Azure%20Sentinel%20ML%20Notebooks.ipynb) Просматривайте напрямую на GitHub или скопируйте и вставьте ссылку в [nbviewer.org](https://nbviewer.jupyter.org/) ## Примеры блокнотов с сохраненными данными Смотрите следующие блокноты для дополнительных примеров использования этого пакета на практике: - [Простое машинное обучение](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Machine%20Learning%20in%20Notebooks%20Examples.ipynb) ## Поддерживаемые платформы и пакеты - msticpy не зависит от ОС - Требуется [Python 3.10 или новее](https://www.python.org/dev/peps/pep-0494/) - Смотрите [requirements.txt](https://github.com/microsoft/msticpy/blob/main/requirements.txt) для получения дополнительных сведений и требований к версиям. --- ## Участие Краткие рекомендации для разработчиков см. в этой статье вики [Рекомендации для участников](https://github.com/microsoft/msticpy/wiki/Contributor-guidelines) Этот проект приветствует вклад и предложения. Большинство вкладов требует от вас согласия с Лицензионным соглашением с участником (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробнее см. на <https://cla.microsoft.com>. Когда вы отправляете запрос на включение изменений (pull request), CLA-бот автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, метка, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз для всех репозиториев, использующих наше CLA. Этот проект принял [Правила поведения в открытом исходном коде Microsoft](https://opensource.microsoft.com/codeofconduct/). Для получения дополнительной информации см. [Часто задаваемые вопросы о правилах поведения](https://opensource.microsoft.com/codeofconduct/faq/) или свяжитесь с [[email protected]](mailto:[email protected]) с любыми дополнительными вопросами или комментариями.