
Microsoft 脅威インテリジェンス セキュリティツール
# MSTIC JupyterとPythonセキュリティツール  [](https://dev.azure.com/mstic-detections/mstic-jupyter/_build/latest?definitionId=14&branchName=main) [](https://pepy.tech/project/msticpy) Microsoft脅威インテリジェンスPythonセキュリティツール。 **msticpy**は、Jupyter Notebookにおける情報セキュリティ調査とハンティングのためのライブラリです。以下の機能を提供します: - 複数のソースからログデータをクエリ - 脅威インテリジェンス、地理位置情報、Azureリソースデータでデータをエンリッチ - ログから活動指標(IoA)を抽出し、エンコードされたデータを展開 - 異常なセッション検出や時系列分解などの高度な分析を実行 - インタラクティブなタイムライン、プロセッスツリー、多次元モーフチャートを使用したデータの可視化 また、クエリ時間範囲の設定、リストからのアイテム選択・表示、ノートブック環境の設定など、時間節約のためのノートブックツール(ウィジェット)も含まれています。 <img src="https://assets.kitploit.com/production/public/readmes/4869/97c3e7b33ee7d0b34e5cb314f29bc107b50e55772d00da4422ad32e48b1d0b91.png" alt="Timeline" title="Msticpy Timeline Control" height="300" /> **msticpy**パッケージは、当初[Microsoft Sentinel](https://www.microsoft.com/en-us/security/business/siem-and-xdr/microsoft-sentinel/)向けの[Jupyter Notebook](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/)作成をサポートするために開発されました。Azure Sentinelは依然として私たちの作業の大きな焦点ですが、データクエリ/取得コンポーネントを拡張して他のソース(現在はSplunk、Microsoft Defender for Endpoint、Microsoft Graphをサポートしていますが、他のSIEMプラットフォームからのデータサポートにも積極的に取り組んでいます)からログデータを取得できるようにしています。ほとんどのコンポーネントは、任意のソースからのデータでも使用できます。Pandas DataFrameは、ほぼすべてのコンポーネントの普遍的な入出力形式として使用されています。また、ローカルCSVファイルやpickle化されたDataFrameからのデータ取得と処理を容易にするデータプロバイダも用意されています。 このパッケージは、セキュリティ調査担当者とハンターの3つの中心的なニーズに対応します: - データの取得とエンリッチ - データの分析 - データの可視化 フィードバック、バグ報告、新機能の提案、コントリビューションを歓迎します。 ## インストール コアインストール: `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) ## データのエンリッチ ### 脅威インテリジェンスプロバイダー TILookupクラスは、複数のTIプロバイダー間でIoCを検索できます。組み込みプロバイダーには、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 map" title="Plotting Geo IP Location" 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リソースデータ、ストレージ、Azure Sentinel API AzureDataモジュールには、Azure APIを介して公開される追加のホスト詳細でAzureホストの詳細をエンリッチする機能が含まれています。AzureSentinelモジュールを使用すると、インシデントのクエリ、検出器やハンティングクエリの取得ができます。AzureBlogStorageを使用すると、blobストレージからのデータの読み取りと書き込みができます。 [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="Time Series anomalies" title="Time Series anomalies" height="300" /> [Time Series](https://msticpy.readthedocs.io/en/latest/visualization/TimeSeriesAnomalies.html) ## 可視化 ### イベントタイムライン 任意のログイベントをインタラクティブなタイムラインに表示します。[Bokeh Visualization Library](https://bokeh.org/)を使用して、タイムラインコントロールにより、1つ以上のイベントストリームを可視化し、特定の時間枠にインタラクティブにズームインし、プロットされたイベントの詳細を表示できます。 <img src="https://assets.kitploit.com/production/public/readmes/4869/c045bd779bafa8ae992a1d2b3741f4a71c5adaf4466d37c870c51f1cb00ade10.png" alt="Timeline" title="Msticpy Timeline Control" 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) ### プロセスツリー プロセスツリー機能には、主に2つのコンポーネントがあります: - プロセスツリーの作成 - ホストからのプロセス作成ログを取得し、データセット内のプロセス間の親子関係を構築します。 - プロセスツリーの可視化 - 処理された出力を受け取り、Bokehプロットを使用してインタラクティブなプロセスツリーを表示します。 処理済みデータセットから個別および部分的なツリーを抽出するための一連のユーティリティ関数があります。 <img src="https://assets.kitploit.com/production/public/readmes/4869/30c4a7e6484a64a4f9434396b7b26a442e0ab697e26e2bd6d00f0abe754df60b.png" alt="Process Tree" title="Interactive Process Tree" 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) ## データ操作とユーティリティ関数 ### ピボット関数 *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データフレームです。 [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="Clustering" title="Clustering based on command-line variability" 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監査ログをロードしてデコードするモジュール。同じメッセージIDを共有するメッセージを単一のイベントに統合し、16進エンコードされたデータフィールドをデコードし、イベント固有のフォーマットと正規化を実行します(例:プロセス開始イベントの場合、プロセスコマンドライン引数を単一の文字列に再構成します)。 ### syslog_utils syslogログのみが有効なLinuxホストの調査をサポートするモジュール。これには、ホストデータの照合、ログオンイベントのクラスタリング、不審なアクティビティを含むユーザーセッションの検出のための関数が含まれています。 ### cmd_line 既知の悪意のあるコマンドラインアクティビティ、または不審なパターンのコマンドラインアクティビティの検出をサポートするモジュール。 ### domain_utils ドメイン名とURLの調査をサポートするモジュールで、ドメイン名の検証やURLのスクリーンショットを取得する関数を提供します。 ### ノートブックウィジェット これらは[Jupyter ipywidgets](https://ipywidgets.readthedocs.io/)コレクションから構築されており、リストピッカー、クエリ時間範囲の設定、イベント表示など、情報セキュリティタスクで役立つ共通機能を使いやすい形式にまとめています。 <img src="https://assets.kitploit.com/production/public/readmes/4869/26d223a31e1750c7407e4e562689fbfb4c92243981b794d649f35d9dafd06836.png" alt="Time span Widget" title="Query time setter" height="100" /> <img src="https://assets.kitploit.com/production/public/readmes/4869/5491bab202c5644d32270ea256b0e6f9173346595cd7245120d35330dcfe2e8b.png" alt="Alert browser" title="Alert browser" height="300" /> --- ## MSTICPyノートブックの例 [MSTICPy Notebooks](https://github.com/microsoft/msticpy/blob/master/docs/notebooks/) ## Azure Sentinel Notebooks GitHubのその他のノートブック [Azure Sentinel Notebooks](https://github.com/Azure/Azure-Sentinel-Notebooks) ノートブックの例: - [Tour of MSTICPy Features](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/A%20Tour%20of%20Cybersec%20notebook%20features.ipynb) - [Account Explorer](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Account.ipynb) - [Domain and URL Explorer](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Domain%20and%20URL.ipynb) - [IP Explorer](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20IP%20Address.ipynb) - [Linux Host Explorer](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Linux%20Host.ipynb) - [Windows Host Explorer](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Entity%20Explorer%20-%20Windows%20Host.ipynb) - [Getting started in Azure Sentinel notebooks](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/)にコピー&ペーストしてください。 ## 保存データを使用したノートブックの例 実際のこのパッケージの使用例については、以下のノートブックを参照してください: - [Simple Machine Learning](https://github.com/Azure/Azure-Sentinel-Notebooks/blob/master/Machine%20Learning%20in%20Notebooks%20Examples.ipynb) ## サポートされているプラットフォームとパッケージ - msticpyはOSに依存しません - [Python 3.10以降](https://www.python.org/dev/peps/pep-0494/)が必要です - 詳細とバージョン要件については、[requirements.txt](https://github.com/microsoft/msticpy/blob/main/requirements.txt)を参照してください。 --- ## コントリビューション (簡潔な)開発者ガイドラインについては、このWiki記事を参照してください: [Contributor Guidelines](https://github.com/microsoft/msticpy/wiki/Contributor-guidelines) このプロジェクトはコントリビューションと提案を歓迎します。ほとんどのコントリビューションには、あなたが私たちにあなたのコントリビューションを使用する権利を与える権利があること、そして実際にそうすることを宣言するコントリビューターライセンス契約(CLA)に同意する必要があります。詳細については、<https://cla.microsoft.com>にアクセスしてください。 プルリクエストを送信すると、CLAボットが自動的にCLAの提供が必要かどうかを判断し、PRに適切にラベルやコメントを付けます。ボットから提供される指示に従ってください。私たちのCLAを使用するすべてのリポジトリで、これを一度だけ行う必要があります。 このプロジェクトは[Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)を採用しています。詳細については、[Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)を参照するか、追加の質問やコメントがある場合は[[email protected]](mailto:[email protected])までお問い合わせください。