伝えたいこと
3,4年ほど前より、セキュリティログ分析の分野でもJupyterが広く利用され始め
Microsoftの調査分析ツール「MSTICpy」もJupyter上で分析すべきと説明しています。
なぜJupyterがいいのか?という理解をせずになんとなく使っているので
きちんとインプットしようとMicrosoftのMSTICpyドキュメントの内容を翻訳しながら読み解き、布教したいと考えました。
私はSplunkとかElasticや時にはお手製のスクラッチpythonツールで分析していたのですが
いつの間にやら時代の流れに乗っかりJupyterで分析することも多くなりました。
Splunk,Elastic,SentinelなどのSIEMが世の中にはあるのになぜJupyterも組み合わせるのか!?
Why Use Jupyter for Security Investigations?
こちらの内容を和訳してみます。DeepL翻訳とGoogle翻訳で和訳しました。
[原文] https://msticpy.readthedocs.io/en/latest/getting_started/JupyterAndSecurity.html
なぜセキュリティ調査にJupyterを使うのか?
Jupyterって何?
Jupyterは対話型の開発・データ操作環境です
ブラウザでホストされます。セルに入力されたコードを受け取り、実行する。
を実行し、その出力をあなたに返します。以下はその例である:...
単純なforループを実行するJupyterコードセルより詳細な紹介とサンプルノートブックについては、以下をご覧ください。
jupyter.org <https://jupyter.org>
. と、jupyter introductory(ジュピター イントロダクション)です。 ドキュメント <https://jupyter.readthedocs.io/en/latest/tryjupyter.html>
なぜJupyterなのか?
「組み込みのクエリおよび調査ツールではなく、Jupyter ノートブックを使用して Azure Sentinel データを操作する理由は何ですか?」 最初の質問かもしれません。 そして最初の答えは、通常はそうしないだろうということです。 ほとんどの場合、調査しているシナリオとデータは、Log Analytics クエリとブックマークなどのクールなケース機能を備えた、今後のグラフィカルな調査ツールで完全にうまく処理できます。
Jupyter に到達したい理由の 1 つは、探しているものが複雑になりすぎた場合です。 「どのくらい複雑ですか?」 答えるのが難しい質問ですが、いくつかのガイドラインは次のとおりです。
調査チェーン内のクエリの数が約 7 (平均的な人が短期記憶で処理できることの数) を超えた場合。
調査グラフの詳細をすべて見るために、非常に強力な老眼鏡が必要になったとき。
ブラウザがクラッシュしたばかりで、作業中のクエリや結果が保存されていないことに気付いたとき。
Jupyter で作業することのその他の利点のいくつかについて、以下のセクションで概説します。
データの永続性、再現性、バックトラックについて
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^より複雑なセキュリティ調査に取り組んでいるときに苦労することの 1 つは、自分が行ったことを追跡することです。 何十ものクエリと結果セットを簡単に見つけることができます。その多くは行き止まりであることが判明しました。
あなたはどちらを保っていますか?
異なる値または日付範囲でクエリをバックトラックして再実行するのはどれくらい簡単ですか?
有用な結果を単一のレポートにどのように蓄積しますか?
今後の調査で同じパターンを再実行したい場合はどうすればよいでしょうか?ほとんどのデータ クエリ環境では、その答えは多くの手作業と優れた短期記憶への過度の依存です。
一方、Jupyter では、調査を直線的に進めることができ、クエリとデータを保存しながら進めることができます。
クエリの進行を通じて変数を使用することで (時間範囲、アカウント名、IP アドレスなど、後戻りして再実行し、将来の調査でワークフロー全体を再利用することがはるかに容易になります。スクリプト・プログラミング環境
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Jupyter では、クエリを実行して結果を表示するだけでなく、プログラミング言語のすべての機能を利用できます。 Kql (または SQL など) のような柔軟な宣言型言語で多くのことを実行できますが、ロジックを手続き型のチャンクに分割できることは、多くの場合に役立ち、場合によっては不可欠です。
宣言型言語とは、ロジックを 1 つの (場合によっては複雑な) ステートメントにエンコードする必要があることを意味しますが、手続き型言語では一連のステップでロジックを実行できます。手続き型コードを使用できると、次のことが可能になります。
- 中間結果を確認してデバッグします。
- クエリ言語では利用できない機能 (フィールドのデコード、データの解析など) を追加します。
- 後の処理ステップで部分的な結果を再利用します。
外部データへの結合
^^^^^^^^^^^^^^^^^^^^^^^^ほとんどのテレメトリ/イベント データは Azure Sentinel ワークスペース テーブルにありますが、多くの場合例外があります。
- 所有していない外部サービスのデータ - 例: IP の whois および位置情報データ、脅威インテリジェンス ソース、
- 組織内にのみ保存できる機密データ - 人事データベース、幹部、管理者、または高価値資産のリスト
- または、まだクラウドに移行していないデータです。
ネットワーク経由またはファイルからアクセスできるデータはすべて、Python と Jupyter を介して Azure Sentinel データにリンクできます。
高度なデータ処理、機械学習、可視化へのアクセス
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Azure Sentinel とその基盤となる Kusto/Log Analytics データ ストアには、視覚化と高度なデータ処理 (クラスタリング、ウィンドウ統計、機械学習関数など) のための多くのオプションがあり、より多くの機能が常に追加されています。 ただし、特殊な視覚化、機械学習ライブラリ、または Azure Sentinel プラットフォームでは利用できないデータ処理および変換機能など、別のものが必要になる場合があります。 これらの例は、いくつかの Azure Sentinel サンプル ノートブックで確認できます (ドキュメントの最後にある参考資料を参照してください)。
Python 言語でのこれらのよく知られた例は次のとおりです。
- データ処理、クリーンアップ、エンジニアリングのためのpandas。
- 可視化のためのmatplotlib、holoviews、plotly、その他多数
- 高度な数値処理と科学処理を実現するnumpyとscipy。
- 機械学習のためのscikit-learn。
- ディープラーニングのためのtensorflow、pytorch、keras。
なぜPythonなのか?
Jupyterは様々な言語で使用することができますが、Pythonはどのような特徴があるのでしょうか。
good choice?人気
^^^^^^^^^^組織内にすでに Python コーダーがいる可能性は非常に高いです。
現在、コンピュータ サイエンスのコースで最も広く教えられている言語であり、多くの科学分野で広く使用されています。 また、スクリプトやシステム管理の主要言語として perl に大きく取って代わりました。
IT プロフェッショナルや、Web 開発者 (DropBox や Instagram などの多くの人気サービスはほぼすべて Python で記述されています) によっても頻繁に使用されます。エコシステム
^^^^^^^^^この人気に後押しされ、膨大な数のpythonのリポジトリが存在します。
ライブラリはPyPi https://pypi.orgで利用可能であり、約100万個のGithub https://github.com/search?q=python にある python レポジトリです。
セキュリティ調査員として必要な多くのツール、データ操作、データ分析、可視化、機械学習と統計解析がすでにあり、 他の言語エコシステムには同等のツールはありません。ここで注目すべき点は、ほとんどすべての主要なPythonパッケージが
とコア言語自体は有志によるオープンソースで書かれており、メンテナンスされています。Pythonの代わりとなるもの
^^^^^^^^^^^^^^^^^^^^^^Juypter で他の言語カーネルを使用できます。また、別の言語を使用して個々のセルを実行できるようにする「マジック」を使用して、同じノートブック内で言語を (ある程度) 混在させることができます。
たとえば、PowerShell スクリプト セルを使用してデータを取得し、Python でデータを処理し、JavaScript を使用して視覚化をレンダリングできます。 際には、これは思ったよりも少し難しいかもしれませんが、少し手でコーディングすれば確実に可能です。参考文献
jupyter.org <https://jupyter.org>
__python <https://python.org>
__PyPi <https://pypi.org>
__Github <https://github.com/search?q=python>
__Kusto・クエリー言語 <https://docs.microsoft.com/azure/kusto/query/>
__pandas <https://pandas.pydata.org/>
__matplotlib <https://matplotlib.org>
__holoviews <https://holoviews.org>
__plotly <https://plot.ly>
__ です。numpy <https://www.numpy.org>
__scipy <https://www.scipy.org>
__scikit-learn <https://scikit-learn.org/stable/index.html>
__tensorflow <https://www.tensorflow.org/>
__pytorch <https://pytorch.org>
__keras <https://keras.io/>
__
ChatGPTに同じ質問「Why Use Jupyter for Security Investigations?」をしてみる
和訳:
Jupyter Notebookは、ライブコード、方程式、ビジュアライゼーション、および物語テキストを含むドキュメントを作成し、共有することができる人気のオープンソースWebベースツールです。多くのデータアナリスト、科学者、研究者に採用されている汎用性の高いツールです。
Jupyter Notebookは、いくつかの理由でセキュリティ調査に役立ちます:
-
インタラクティブなデータ分析: Jupyter Notebookは、セキュリティ調査員が大量のデータを分析するための対話的な環境を提供します。これにより、調査員はデータを迅速に探索・視覚化し、コードを修正して分析を再実行することで仮説を検証することができます。
-
再現性: 調査には、再現が困難な複雑なツールやテクニックを使用する必要がある場合があります。Jupyter Notebookでは、すべてのコード、データ、ビジュアライゼーションを含む、再現可能な調査記録を作成することができます。つまり、他の研究者が簡単に調査を再現し、結果を検証することができるのです。
-
コラボレーション: Jupyter Notebookでは、複数の研究者が同じ調査に同時に取り組むことができます。これは、分散したチームや、複数の専門家から情報を得る必要がある調査に有効です。
-
可視化: セキュリティ調査では、多くの場合、大量のデータを分析する必要があります。Jupyter Notebookは強力な可視化ツールを提供し、調査員が複雑なデータセットを探索し理解することを可能にします。
-
統合: Jupyter Notebookは、クラウドサービスや機械学習フレームワークなど、他のツールやプラットフォームと容易に統合することが可能です。これにより、捜査官はこれらのツールのパワーを捜査に活用することができます。
全体として、Jupyter Notebookは汎用性の高い強力なツールであり、セキュリティ調査において貴重な資産となり得ます。
まとめ
MSTICpyとChatGPTの記述で共通していたのは、以下4点でした。
- 途中結果のアプトプットを出力できるデータの再現性
- 外部ソースとの結合・統合
- 機械学習フレームワークの利用しやすさ
- 豊富なビジュアライゼーションの可視化ツール
なんとなく思ってたことが明確になった気がします。
MSTICpyでの分析と可視化を磨こう!
Happy msticpying!