Slide 1

Slide 1 text

1

Slide 2

Slide 2 text

$WHOAMI • スレットハンター/アプリ開発/脅威研究 • OSS貢献者 • msticpy,unprotect,atomic-red-team,cuckoo,capev2.. • 保有資格 • 7 GIACs • CISSP、CISA • SNS • HN: hackeT • X: @T_8ase 2

Slide 3

Slide 3 text

$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

Slide 4

Slide 4 text

アジェンダ • SIEMの変わらない運⽤ • msticpy 101 Overview and Basics • msticpy 201 Jupyter Notebook and ( pros | cons ) • msticpy 301 Practical use case • まとめ 4

Slide 5

Slide 5 text

5 SIEMの変わらない運⽤

Slide 6

Slide 6 text

背景と課題 6 分析︓rawログの⼈海戦術 監視︓メールアラート 分析︓フォーマット化ログの多軸検索 監視︓可視化ダッシュボード・アラー ト転送 近年 無くならない開発・運⽤タスク l 新たな脅威に追随すべく分析ロ ジックの改修・追加 l 世の中の脅威状況のみならず社 内の状況に合わせた閾値運⽤ 閾値 バグ パネル 追加 ドキュ メント 修正 更新 SIEM機能や既存ダッシュボードの バイアスで時に不⾃由な分析に陥る ⼀昔前

Slide 7

Slide 7 text

⽬的 脅威ハンティングとは • 能動的に悪意のある活動や脅威の予兆を発⾒し対処すること • 脅威インテリジェンスや未適⽤のIOC、異常検出などを⽤いて能動的に調査 • 仮説〜検証の繰り返し 7 ⾼度な脅威ハンティングを実現 ⾼度な脅威ハンティングとは 「⾒逃しを限りなく減らす」思想 • rawデータから未検出の脅威を洗い出す • 未加⼯のデータも合わせて確認し、セキュリティ機器の処理・検出漏れも探す • 本来の⾃由なデータ分析 (アドホック) • 独⾃に考えられた切り⼝の分析ロジック • 制約のない外部連携 • 奇抜なビジュアライゼーション • 読み⼿にとって分かりやすい強調など • 継続的な更新運⽤ • 機械学習 (ML/DL) • ⾃動化

Slide 8

Slide 8 text

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年マジック・クアドラントより

Slide 9

Slide 9 text

SIEMの利点 • インデックスによる⾼速検索とフィールド正規化(CIM、ASIM) • その検索⾔語の恩恵で、統計計算が容易 • 脅威インテリジェンスを格納できる • 複数⼈が同じデータ・分析結果を参照できる • SIEMベンダーが検出ロジックも多数提供 9

Slide 10

Slide 10 text

SIEMの綻び • インデックスによる⾼速検索とフィールド正規化(CIM、ASIM) • 抽出に失敗していると冒頭の検索や途中の分析から⽋落する • その検索⾔語の恩恵で、統計計算が容易 • 苦⼿な処理系が存在し、 また個別の学習コストもかかる • 脅威インテリジェンスを格納できる • 多くのインテリジェンスは⾃前で⽤意し、運⽤する • 複数⼈が同じデータ・分析結果を参照できる • 共有リソースのため、様々な制限がある • SIEMベンダーが検出ロジックも多数提供 • 必要⼗分か︖否︕ 10

Slide 11

Slide 11 text

SIEMの分析に頼りすぎない • 障害が起きると、復旧まで全員が分析できない • SIEMの検索⾔語での分析のみに頼りすぎて、rawデータの分析⽅法を忘却 • データの完全性や検索結果の完全性は誰が担保してくれる? • SIEMには制限がある • サブサーチやマルチバリューのデフォルト上限 (切り捨て) • グラフへのプロット数のデフォルト上限 (切り捨て) • 設定ミスによる検索漏れに気づけるか • 提供されたロジックのみに頼らない • Enterprise SIEMs Miss 76 Percent of MITRE ATT&CK Techniques • CardinalOps社、「2023 Report on State of SIEM Detection Risk」より 11

Slide 12

Slide 12 text

12 ⾼度な脅威ハンティングへ SIEM 時 系 列 分 析 ⾃ 動 化 ⼀ 貫 し た ⼊ 出 ⼒ デ ー タ 検 証 機 械 学 習 無 限 の 可 視 化 msticpy

Slide 13

Slide 13 text

13 msticpy 101 Overview and Basics

Slide 14

Slide 14 text

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 データ取り込み データ加⼯ 機械学習も含めて分析 グラフによる可視化

Slide 15

Slide 15 text

msticpyドキュメンテーション&リソース • MSTICpy ☞ msticpy に本発表では統⼀ • 公式ドキュメント • https://msticpy.readthedocs.io • ワードカウント 10万以上 • RSTファイル 80以上 • Jupyter Notebook サンプル数 40以上 • 過去のトレーニング資料も公開 • msticpy-lab、msticpy-trainingレポジトリ • 公式ブログ • https://msticpy.medium.com 15 リソースが豊富すぎて逆に習得には時間がかかることも

Slide 16

Slide 16 text

msticpy 機能の概要 16 Querying Logs Data Visualization Utility Pivot Data Enrichment Security Analysis ms

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

msticpy:データ取り込み Acquisition (1) • Query Providerインスタンスを作成 • 左のデータソースから選択できる 18 LocalData: ./dataフォルダ内の.pklローカルファイルに接続の⼀例 Splunk: msticpyconfig.yaml を参照し、SplunkのREST APIに接続 通信は独⾃に暗号化されない => HTTPS (SSL) が必須

Slide 19

Slide 19 text

• 戻り値は、Pandas DataFrame • アドホック関数 • exec_query(): 任意のクエリ実⾏ • 組み込みクエリ関数 • 選択式 (データソース毎に異なる) 19 msticpy:データ取り込み Acquisition (2)

Slide 20

Slide 20 text

msticpy: 価値の付与 Enrichment • 戻り値は、Pandas DataFrame • Threat Intel Lookup • Pivot TI 関数 (Jupyter Notebook上のみ可) • TILookupクラス (Pythonコード⽚でも可) • GeoIP (MaxMind GeoLite2, IPStack) • IPWhois (Cymru, RADB, RDAP) 20

Slide 21

Slide 21 text

msticpy: 分析 Analysis (Utility) • Base64 Decode • IoC Extract 21

Slide 22

Slide 22 text

msticpy: 分析 Analysis (Pivot) • Pivot Functions 基本的には”init_notebook()”によるロードが必須 • msticpyの関数やクラスをラップし、発⾒しやすく、使いやすくする • 関数のパラメータ、構⽂、出⼒形式を標準化する • .mp_pivotを多段にパイプ接続できる 22

Slide 23

Slide 23 text

msticpy: 分析 Analysis (Security) • Event Clustering • ホストマシン上のプロセスイベントやログオンイベントの分類 • Time Series Analysis • 季節変動を考慮した時系列データの異常検出 • Outlier Identification • 決定⽊を利⽤した外れ値検出 • Anomalous Session • 尤度の低い稀なイベントシーケンスの検出 • イベントのコマンド列、パラメータ名、パラメータ値の3つまでを特 徴量として利⽤ 23

Slide 24

Slide 24 text

msticpy: 可視化 Visualization • BokehJSで実装 • msticpyで実装している可視化グラフ • Timeline,ProcessTree,Folium Map,Matrix Plot, Entity/Network Graph など • MorphChartsで組み込みチャートを作成できる 24

Slide 25

Slide 25 text

25 msticpy 201 Jupyter Notebook and ( pros | cons )

Slide 26

Slide 26 text

Jupyter Notebookで分析する恩恵 • 途中結果のアプトプットを出⼒できるデータの再現性 • 外部ソースとの結合・統合の容易性 • 機械学習フレームワークの利⽤しやすさ • 豊富な可視化ライブラリを⾃由に活⽤ • データサイエンティストとして応⽤⼒が⾝に付く 26

Slide 27

Slide 27 text

Jupyter NotebookとSIEMの理想的な関係 27 msticpy SIEM ⾼度な脅威ハンティング インテリジェンス ナレッジ ノイズ除去されたデータに対する 深堀分析 ⼤雑把なノイズ除去

Slide 28

Slide 28 text

msticpyʼs pros: Seasonal-Trend decomposition using LOESS 28 著書: 「セキュリティエンジニアのための機械学習 6章 異常検出」でも取り上げられている機能

Slide 29

Slide 29 text

msticpyʼs pros: ⼀貫した⼊出⼒ • Data Uploader機能による出⼒(転送) • 2023年8⽉時点で Azure SentinelとSplunkのみ対応 • DataFrame、ファイル、フォルダをアップロード可能 29 OSINT (Internet) SIEM ms6cpy SIEMをエンリッチメント︕ 可視化したチャートは転送できないが 分析結果の表を転送できると、 類似のチャートはSIEMでも描ける

Slide 30

Slide 30 text

Jupyter & msticpyʼs pros: データ検証 • Pandas DataFrameを逐次確認できる • copy()により退避しておけば誤った上書きに安⼼ • 値の型変換やNULL値への対応も容易 • ⽂字コードの確認や変換も楽々 • タイムレンジをGUIで操作 ☞ • QueryProviderの組み込みクエリ関数もprintオプションで事前確認 30 検索予定のクエリ

Slide 31

Slide 31 text

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 ⾃然⾔語処理系 機械学習系 深層学習系

Slide 32

Slide 32 text

Jupyterʼs pros: 無限の可視化 32 Splunk MS Sentinel Jupyter 10,000 10,000 ♾ (Infinity) データプロット上限数(デフォルト) Splunkのデータ切り捨て部分

Slide 33

Slide 33 text

[参考] ダッシュボードオプションで上限を変更 • Splunkではダッシュボードオプション「charting.data.count」で上限を変更できるが・・ 33

Slide 34

Slide 34 text

• Pythonライブラリ • ノートブックファイルを(パラメーターを変えて)バッチ実⾏ • msticpyのFIRECONのトレーニング資料の最後でも”Put it into Operation”で紹介されている⼿法 34 outputノートブックではパラメータが上書きされている CUI Python Jupyterʼs pros: papermillで⾃動化

Slide 35

Slide 35 text

• SIEM内の機微なデータも外部のJupyterに転送できる可能性 • SIEM側のACLで対応せざるをえない • 外部のJupyterへのデータ転送中の盗聴、MITM攻撃の可能性 • SIEM側のSSLセキュリティ依存 • セキュリティ設計がより煩雑に • SIEMへ脅威インテリジェンス の転送は⽐較的クリア 35 SIEM msticpy (Jupyter) ʂ Jupyterʼs cons: データ転送の懸念

Slide 36

Slide 36 text

36 msticpy 301 Practical use case

Slide 37

Slide 37 text

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」 に保存して、そこから読み込む

Slide 38

Slide 38 text

$more Splunk App for DSDL • single-instance | side-by-side • 実装されているデータセキュリティ機能 • 独⾃のSSL証明書の利⽤ • Jupyterのカスタムパスワード設定 • Splunkアクセストークンによる細かいACL設計 • Splunk MLTKのコマンドでコンテナとやりとりできる • | fit (学習⽤データに対して訓練して、モデルを作る) • | apply (識別⽤データに対して、訓練したモデルを適⽤する) 38 ʂ ʂ

Slide 39

Slide 39 text

利⽤例: Powershellのプロセスコマンドライン(1) 39 Search in Splunk powershell -enc Decode base64 Delete null byte (¥x00) Extract IoC Enrichment IoC Return to Splunk | fit | apply モデル作成に初回必須 元々は機械学習アルゴリズム⽤の仕組みだが、ms

Slide 40

Slide 40 text

利⽤例: Powershellのプロセスコマンドライン(2) 40 ※例: Splunk botsv2データ fit msticpyの結果 apply

Slide 41

Slide 41 text

まとめ • SIEMの分析に頼りすぎないように脅威ハンティング︕ • msticpyの布教活動: APACのユーザーが増えると嬉しい • Jupyter Notebookで分析し、コーディングしながら腕を磨こう • データセキュリティの懸念は、既存の仕組みにうまく乗っかろう • 気に⼊ったOSSコントリビューターになろう。Happy msticpying! 41

Slide 42

Slide 42 text

引⽤・参考 • 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

Slide 43

Slide 43 text

43 Thank you !