Upgrade to Pro — share decks privately, control downloads, hide ads and more …

msticpyの実践活用: 高度な脅威ハンティングを実現すべくSIEMとの虹の懸け橋となる

hackeT
October 10, 2023

msticpyの実践活用: 高度な脅威ハンティングを実現すべくSIEMとの虹の懸け橋となる

Japanese version

hackeT

October 10, 2023
Tweet

More Decks by hackeT

Other Decks in Programming

Transcript

  1. 1

  2. $more 株式会社ゴーアヘッド KOBANZAME (IP Whois判定) Heuristic Logic (振る舞い解析) Data Visualization

    (可視化) 最⼩のリソースで最⼤の効果を⽬指します。 代表取締役 中村光宏 Splunk.conf 2017@USA Splunk Champion受賞 2017年設⽴ セキュリティ課題に対し Splunkを強みとする データ分析企業 Splunkの App/Add-onを無償提供 https://splunkbase.splunk.com/apps?keyword=goahead 3
  3. アジェンダ • SIEMの変わらない運⽤ • msticpy 101 Overview and Basics •

    msticpy 201 Jupyter Notebook and ( pros | cons ) • msticpy 301 Practical use case • まとめ 4
  4. 背景と課題 6 分析︓rawログの⼈海戦術 監視︓メールアラート 分析︓フォーマット化ログの多軸検索 監視︓可視化ダッシュボード・アラー ト転送 近年 無くならない開発・運⽤タスク l

    新たな脅威に追随すべく分析ロ ジックの改修・追加 l 世の中の脅威状況のみならず社 内の状況に合わせた閾値運⽤ 閾値 バグ パネル 追加 ドキュ メント 修正 更新 SIEM機能や既存ダッシュボードの バイアスで時に不⾃由な分析に陥る ⼀昔前
  5. ⽬的 脅威ハンティングとは • 能動的に悪意のある活動や脅威の予兆を発⾒し対処すること • 脅威インテリジェンスや未適⽤のIOC、異常検出などを⽤いて能動的に調査 • 仮説〜検証の繰り返し 7 ⾼度な脅威ハンティングを実現

    ⾼度な脅威ハンティングとは 「⾒逃しを限りなく減らす」思想 • rawデータから未検出の脅威を洗い出す • 未加⼯のデータも合わせて確認し、セキュリティ機器の処理・検出漏れも探す • 本来の⾃由なデータ分析 (アドホック) • 独⾃に考えられた切り⼝の分析ロジック • 制約のない外部連携 • 奇抜なビジュアライゼーション • 読み⼿にとって分かりやすい強調など • 継続的な更新運⽤ • 機械学習 (ML/DL) • ⾃動化
  6. Security Information and Event Management • 主要SIEM製品 • Splunk/MS Sentinel/IBM

    Qradar/ Exabeam/Sumo Logic/Elasticなど • セキュリティベンダーの囲い込みSIEM • 収集/抽出/検索/分析/可視化/検出/対応 • 独⾃の脅威ハンティング機能 • ML/DLの拡張機能 8 第⼀世代 第⼆世代 第三世代 Gartner 2005 ログとイベントの管理統合 CTIとの相関分析 ビッグデータ処理 Gartner 2017 UEBA、SOAR追加 Gartner社 2022年マジック・クアドラントより
  7. SIEMの綻び • インデックスによる⾼速検索とフィールド正規化(CIM、ASIM) • 抽出に失敗していると冒頭の検索や途中の分析から⽋落する • その検索⾔語の恩恵で、統計計算が容易 • 苦⼿な処理系が存在し、 また個別の学習コストもかかる

    • 脅威インテリジェンスを格納できる • 多くのインテリジェンスは⾃前で⽤意し、運⽤する • 複数⼈が同じデータ・分析結果を参照できる • 共有リソースのため、様々な制限がある • SIEMベンダーが検出ロジックも多数提供 • 必要⼗分か︖否︕ 10
  8. SIEMの分析に頼りすぎない • 障害が起きると、復旧まで全員が分析できない • SIEMの検索⾔語での分析のみに頼りすぎて、rawデータの分析⽅法を忘却 • データの完全性や検索結果の完全性は誰が担保してくれる? • SIEMには制限がある •

    サブサーチやマルチバリューのデフォルト上限 (切り捨て) • グラフへのプロット数のデフォルト上限 (切り捨て) • 設定ミスによる検索漏れに気づけるか • 提供されたロジックのみに頼らない • Enterprise SIEMs Miss 76 Percent of MITRE ATT&CK Techniques • CardinalOps社、「2023 Report on State of SIEM Detection Risk」より 11
  9. 12 ⾼度な脅威ハンティングへ SIEM 時 系 列 分 析 ⾃ 動

    化 ⼀ 貫 し た ⼊ 出 ⼒ デ ー タ 検 証 機 械 学 習 無 限 の 可 視 化 msticpy
  10. Microsoft Threat Intelligence Center (MSTIC) on Python and Jupyter notebooks

    • MSTICpy: Microso/社のMSTICが開発したOSSライブラリ • Pythonで書かれ、主にJupyter notebook上で利⽤できる • 侵害調査・脅威ハンティングを⾏うための機能が豊富 • 2019年3⽉~ 200k+ ダウンロード数 h:ps://github.com/microso//msBcpy • BlackHat USA 2020で発表あり • 最近も頻繁に更新されており進化し続けている • アジア・⽇本での活⽤や、紹介ブログがいまだ少ない • ⼤きく分割すると以下の4つのジャンルに分類される • ライブラリ化されているため欲しい機能だけ断⽚的に利⽤可 14 msticpy データ取り込み データ加⼯ 機械学習も含めて分析 グラフによる可視化
  11. msticpyドキュメンテーション&リソース • MSTICpy ☞ msticpy に本発表では統⼀ • 公式ドキュメント • https://msticpy.readthedocs.io

    • ワードカウント 10万以上 • RSTファイル 80以上 • Jupyter Notebook サンプル数 40以上 • 過去のトレーニング資料も公開 • msticpy-lab、msticpy-trainingレポジトリ • 公式ブログ • https://msticpy.medium.com 15 リソースが豊富すぎて逆に習得には時間がかかることも
  12. msticpy 機能の概要 16 Querying Logs Data Visualization Utility Pivot Data

    Enrichment Security Analysis ms<cpyconfig.yaml Acquisition Visualization Enrichment Analysis Analysis Analysis h"ps://twi"er.com/fr0gger_/status/1623209441146593281?s=61&t=v8tLnMcFFdnsiT38CeGBcg
  13. 17 msticpyデータフロー図 SIEM DataLake (SIEM) raw Jupyter Notebook Internet Acquisi6on

    Enrichment Analysis Visualization rich p Threat Intel Lookup p Whois, GeoIP p Decode p Extract p ML Local Local upload
  14. msticpy:データ取り込み Acquisition (1) • Query Providerインスタンスを作成 • 左のデータソースから選択できる 18 LocalData:

    ./dataフォルダ内の.pklローカルファイルに接続の⼀例 Splunk: msticpyconfig.yaml を参照し、SplunkのREST APIに接続 通信は独⾃に暗号化されない => HTTPS (SSL) が必須
  15. • 戻り値は、Pandas DataFrame • アドホック関数 • exec_query(): 任意のクエリ実⾏ • 組み込みクエリ関数

    • 選択式 (データソース毎に異なる) 19 msticpy:データ取り込み Acquisition (2)
  16. msticpy: 価値の付与 Enrichment • 戻り値は、Pandas DataFrame • Threat Intel Lookup

    • Pivot TI 関数 (Jupyter Notebook上のみ可) • TILookupクラス (Pythonコード⽚でも可) • GeoIP (MaxMind GeoLite2, IPStack) • IPWhois (Cymru, RADB, RDAP) 20
  17. msticpy: 分析 Analysis (Security) • Event Clustering • ホストマシン上のプロセスイベントやログオンイベントの分類 •

    Time Series Analysis • 季節変動を考慮した時系列データの異常検出 • Outlier Identification • 決定⽊を利⽤した外れ値検出 • Anomalous Session • 尤度の低い稀なイベントシーケンスの検出 • イベントのコマンド列、パラメータ名、パラメータ値の3つまでを特 徴量として利⽤ 23
  18. msticpy: 可視化 Visualization • BokehJSで実装 • msticpyで実装している可視化グラフ • Timeline,ProcessTree,Folium Map,Matrix

    Plot, Entity/Network Graph など • MorphChartsで組み込みチャートを作成できる 24
  19. msticpyʼs pros: ⼀貫した⼊出⼒ • Data Uploader機能による出⼒(転送) • 2023年8⽉時点で Azure SentinelとSplunkのみ対応

    • DataFrame、ファイル、フォルダをアップロード可能 29 OSINT (Internet) SIEM ms6cpy SIEMをエンリッチメント︕ 可視化したチャートは転送できないが 分析結果の表を転送できると、 類似のチャートはSIEMでも描ける
  20. Jupyter & msticpyʼs pros: データ検証 • Pandas DataFrameを逐次確認できる • copy()により退避しておけば誤った上書きに安⼼

    • 値の型変換やNULL値への対応も容易 • ⽂字コードの確認や変換も楽々 • タイムレンジをGUIで操作 ☞ • QueryProviderの組み込みクエリ関数もprintオプションで事前確認 30 検索予定のクエリ
  21. Jupyterʼs pros: ML/DLの利⽤ • msticpyにビルトイン実装されているMLモデルは少ない • Event Clustering ☞ scikit-learnのDBSCAN

    • Time Series Analysis and Anomaries ☞ statsmodelsのSTL • Outlier Identification ☞ scikit-learnのIsolationForest • ”よく使う脅威ハンティングの⽤途に特化しているため、パラメータチ ューニングの必要が少ない • Pythonの豊富なライブラリが⾃由に使える柔軟性 31 ⾃然⾔語処理系 機械学習系 深層学習系
  22. Jupyterʼs pros: 無限の可視化 32 Splunk MS Sentinel Jupyter 10,000 10,000

    ♾ (Infinity) データプロット上限数(デフォルト) Splunkのデータ切り捨て部分
  23. msticpyの実践的な活⽤に向けて • Push⽅向は気兼ねなく使いやすい • 外部から収集し、分析・加⼯したインテリジェンスをSIEMに転送 • Pull⽅向に「データ転送のセキュリティ懸念」 • msticpyだけのために新規にセキュリティ設計を1から計画するのはハードルが⾼い •

    SIEMベンダーのJupyterで⾼度に分析する仕掛け • MS Sentinel ☞「Microsoft Azure Machine Learning Workspace」 • データ転送がAzure内で完結。 • Splunk ☟ 「Splunk App for Data Science and Deep Learning (DSDL)」 • 外部にDockerコンテナなどのマシンリソースを準備 • コンテナとSplunkとの間でデータのやりとりを⾏う • msticpyをコンテナ側にインストール 37 msticpy Splunk DSDL + 資格情報は、「Azure Key Vault」 に保存して、そこから読み込む
  24. $more Splunk App for DSDL • single-instance | side-by-side •

    実装されているデータセキュリティ機能 • 独⾃のSSL証明書の利⽤ • Jupyterのカスタムパスワード設定 • Splunkアクセストークンによる細かいACL設計 • Splunk MLTKのコマンドでコンテナとやりとりできる • | fit (学習⽤データに対して訓練して、モデルを作る) • | apply (識別⽤データに対して、訓練したモデルを適⽤する) 38 ʂ ʂ
  25. 利⽤例: Powershellのプロセスコマンドライン(1) 39 Search in Splunk powershell -enc Decode base64

    Delete null byte (¥x00) Extract IoC Enrichment IoC Return to Splunk | fit | apply モデル作成に初回必須 元々は機械学習アルゴリズム⽤の仕組みだが、ms<cpyを組み込んだカスタムモデルを開発してみた hOps://github.com/Tatsuya-hasegawa/MSTICPy_u6ls/blob/main/splunk_dsdl/ms6cpy_powershell_ioc.ipynb fitコマンドを実⾏することで、app/modelディレクトリに .ipynbからのエクスポート関数で構成された .py ファイル が作成される
  26. まとめ • SIEMの分析に頼りすぎないように脅威ハンティング︕ • msticpyの布教活動: APACのユーザーが増えると嬉しい • Jupyter Notebookで分析し、コーディングしながら腕を磨こう •

    データセキュリティの懸念は、既存の仕組みにうまく乗っかろう • 気に⼊ったOSSコントリビューターになろう。Happy msticpying! 41
  27. 引⽤・参考 • msticpy docs https://msticpy.readthedocs.io/en/latest/ • msticpy-training https://github.com/microsoft/msticpy-training • msticpy-lab

    https://github.com/microsoft/msticpy-lab • Splunk DSDL docs https://docs.splunk.com/Documentation/DSDL/5.1.0/User/IntroDSDL • Splunk botsv2 dataset https://github.com/splunk/botsv2 • Microsoft Sentinel Notebook and msticpy https://learn.microsoft.com/en- us/azure/sentinel/notebook-get-started • papermill docs https://papermill.readthedocs.io/en/latest/ • macnica SIEM⼊⾨ (exabeam) https://www.macnica.co.jp/business/security/manufacturers/exabeam/feature_07.html • My Qiita about msticpy https://qiita.com/hackeT • セキュリティエンジニアのための機械学習 https://www.oreilly.co.jp/books/9784873119076/ • awesome detection engineering https://github.com/infosecB/awesome-detection-engineering • CardinalOps社 2023レポート https://cardinalops.com/whitepapers/2023-report-on-state-of-siem-detection- risk/ 42