6.6K Views
September 08, 23
スライド概要
[JP]長谷川_DFIR_APAC_SUMMIT_2023
https://www.sans.org/cyber-security-training-events/apac-dfir-summit-2023/
Security Engineer & Researcher https://www.hacket-engine.com
1
$WHOAMI • スレットハンター/アプリ開発/脅威研究 • OSS貢献者 • msticpy,unprotect,atomic-red-team,cuckoo,capev2.. • 保有資格 • 7 GIACs • CISSP、CISA • SNS • HN: hackeT • X: @T_8ase 2
$more 株式会社ゴーアヘッド 代表取締役 中村光宏 Splunk.conf 2017@USA Splunk Champion受賞 Splunkの App/Add-onを無償提供 https://splunkbase.splunk.com/apps?keyword=goahead 2017年設⽴ セキュリティ課題に対し Splunkを強みとする データ分析企業 KOBANZAME (IP Whois判定) Heuristic Logic (振る舞い解析) Data Visualization (可視化) 最⼩のリソースで最⼤の効果を⽬指します。 3
アジェンダ • SIEMの変わらない運⽤ • msticpy 101 Overview and Basics • msticpy 201 Jupyter Notebook and ( pros | cons ) • msticpy 301 Practical use case • まとめ 4
SIEMの変わらない運⽤ 5
⼀昔前 背景と課題 近年 無くならない開発・運⽤タスク l 新たな脅威に追随すべく分析ロ ジックの改修・追加 l 世の中の脅威状況のみならず社 内の状況に合わせた閾値運⽤ ドキュ メント バグ 分析︓rawログの⼈海戦術 監視︓メールアラート 分析︓フォーマット化ログの多軸検索 監視︓可視化ダッシュボード・アラー ト転送 修正 更新 閾値 パネル 追加 SIEM機能や既存ダッシュボードの バイアスで時に不⾃由な分析に陥る 6
⽬的 ⾼度な脅威ハンティングを実現 脅威ハンティングとは • 能動的に悪意のある活動や脅威の予兆を発⾒し対処すること • 脅威インテリジェンスや未適⽤のIOC、異常検出などを⽤いて能動的に調査 • 仮説〜検証の繰り返し ⾼度な脅威ハンティングとは 「⾒逃しを限りなく減らす」思想 • rawデータから未検出の脅威を洗い出す • 未加⼯のデータも合わせて確認し、セキュリティ機器の処理・検出漏れも探す • 本来の⾃由なデータ分析 (アドホック) • • • • 独⾃に考えられた切り⼝の分析ロジック 制約のない外部連携 奇抜なビジュアライゼーション 読み⼿にとって分かりやすい強調など • 継続的な更新運⽤ • 機械学習 (ML/DL) • ⾃動化 7
Security Information and Event Management 第⼀世代 Gartner 2005 ログとイベントの管理統合 第⼆世代 第三世代 CTIとの相関分析 ビッグデータ処理 Gartner 2017 UEBA、SOAR追加 • 主要SIEM製品 • Splunk/MS Sentinel/IBM Qradar/ Exabeam/Sumo Logic/Elasticなど • セキュリティベンダーの囲い込みSIEM • 収集/抽出/検索/分析/可視化/検出/対応 • 独⾃の脅威ハンティング機能 • ML/DLの拡張機能 Gartner社 2022年マジック・クアドラントより 8
SIEMの利点 • インデックスによる⾼速検索とフィールド正規化(CIM、ASIM) • その検索⾔語の恩恵で、統計計算が容易 • 脅威インテリジェンスを格納できる • 複数⼈が同じデータ・分析結果を参照できる • SIEMベンダーが検出ロジックも多数提供 9
SIEMの綻び • インデックスによる⾼速検索とフィールド正規化(CIM、ASIM) • 抽出に失敗していると冒頭の検索や途中の分析から⽋落する • その検索⾔語の恩恵で、統計計算が容易 • 苦⼿な処理系が存在し、 また個別の学習コストもかかる • 脅威インテリジェンスを格納できる • 多くのインテリジェンスは⾃前で⽤意し、運⽤する • 複数⼈が同じデータ・分析結果を参照できる • 共有リソースのため、様々な制限がある • SIEMベンダーが検出ロジックも多数提供 • 必要⼗分か︖否︕ 10
SIEMの分析に頼りすぎない • 障害が起きると、復旧まで全員が分析できない • SIEMの検索⾔語での分析のみに頼りすぎて、rawデータの分析⽅法を忘却 • データの完全性や検索結果の完全性は誰が担保してくれる? • SIEMには制限がある • サブサーチやマルチバリューのデフォルト上限 (切り捨て) • グラフへのプロット数のデフォルト上限 (切り捨て) • 設定ミスによる検索漏れに気づけるか • 提供されたロジックのみに頼らない • Enterprise SIEMs Miss 76 Percent of MITRE ATT&CK Techniques • CardinalOps社、「2023 Report on State of SIEM Detection Risk」より 11
⾼度な脅威ハンティングへ msticpy 時 系 列 分 析 ⼀ 貫 し た ⼊ 出 ⼒ デ ー タ 検 証 機 械 学 習 無 限 の 可 視 化 ⾃ 動 化 SIEM 12
msticpy 101 Overview and Basics 13
Microsoft Threat Intelligence Center (MSTIC) on Python and Jupyter notebooks • MSTICpy: Microso/社のMSTICが開発したOSSライブラリ • Pythonで書かれ、主にJupyter notebook上で利⽤できる msticpy • 侵害調査・脅威ハンティングを⾏うための機能が豊富 • 2019年3⽉~ 200k+ ダウンロード数 h:ps://github.com/microso//msBcpy • BlackHat USA 2020で発表あり • 最近も頻繁に更新されており進化し続けている • アジア・⽇本での活⽤や、紹介ブログがいまだ少ない • ⼤きく分割すると以下の4つのジャンルに分類される • ライブラリ化されているため欲しい機能だけ断⽚的に利⽤可 データ取り込み データ加⼯ 機械学習も含めて分析 グラフによる可視化 14
msticpyドキュメンテーション&リソース • MSTICpy ☞ msticpy に本発表では統⼀ • 公式ドキュメント • • • • • https://msticpy.readthedocs.io ワードカウント 10万以上 RSTファイル 80以上 Jupyter Notebook サンプル数 40以上 過去のトレーニング資料も公開 • msticpy-lab、msticpy-trainingレポジトリ • 公式ブログ • https://msticpy.medium.com リソースが豊富すぎて逆に習得には時間がかかることも 15
msticpy 機能の概要 Acquisition Querying Logs Visualization Data Visualization Analysis Utility Analysis Pivot Data Enrichment Security Analysis Enrichment Analysis ms<cpyconfig.yaml h"ps://twi"er.com/fr0gger_/status/1623209441146593281?s=61&t=v8tLnMcFFdnsiT38CeGBcg 16
msticpyデータフロー図 Internet Enrichment SIEM raw p Threat Intel Lookup p Whois, GeoIP Acquisi6on upload Local Analysis DataLake (SIEM) rich Local p Decode p Extract p ML Visualization Jupyter Notebook 17
msticpy:データ取り込み Acquisition (1) • Query Providerインスタンスを作成 • 左のデータソースから選択できる LocalData: ./dataフォルダ内の.pklローカルファイルに接続の⼀例 Splunk: msticpyconfig.yaml を参照し、SplunkのREST APIに接続 通信は独⾃に暗号化されない => HTTPS (SSL) が必須 18
msticpy:データ取り込み Acquisition (2) • 戻り値は、Pandas DataFrame • アドホック関数 • exec_query(): 任意のクエリ実⾏ • 組み込みクエリ関数 • 選択式 (データソース毎に異なる) 19
msticpy: 価値の付与 Enrichment • 戻り値は、Pandas DataFrame • Threat Intel Lookup • Pivot TI 関数 (Jupyter Notebook上のみ可) • TILookupクラス (Pythonコード⽚でも可) • GeoIP (MaxMind GeoLite2, IPStack) • IPWhois (Cymru, RADB, RDAP) 20
msticpy: 分析 Analysis (Utility) • Base64 Decode • IoC Extract 21
msticpy: 分析 Analysis (Pivot) • Pivot Functions 基本的には”init_notebook()”によるロードが必須 • msticpyの関数やクラスをラップし、発⾒しやすく、使いやすくする • 関数のパラメータ、構⽂、出⼒形式を標準化する • .mp_pivotを多段にパイプ接続できる 22
msticpy: 分析 Analysis (Security) • Event Clustering • ホストマシン上のプロセスイベントやログオンイベントの分類 • Time Series Analysis • 季節変動を考慮した時系列データの異常検出 • Outlier Identification • 決定⽊を利⽤した外れ値検出 • Anomalous Session • 尤度の低い稀なイベントシーケンスの検出 • イベントのコマンド列、パラメータ名、パラメータ値の3つまでを特 徴量として利⽤ 23
msticpy: 可視化 Visualization • BokehJSで実装 • msticpyで実装している可視化グラフ • Timeline,ProcessTree,Folium Map,Matrix Plot, Entity/Network Graph など • MorphChartsで組み込みチャートを作成できる 24
msticpy 201 Jupyter Notebook and ( pros | cons ) 25
Jupyter Notebookで分析する恩恵 • 途中結果のアプトプットを出⼒できるデータの再現性 • 外部ソースとの結合・統合の容易性 • 機械学習フレームワークの利⽤しやすさ • 豊富な可視化ライブラリを⾃由に活⽤ • データサイエンティストとして応⽤⼒が⾝に付く 26
Jupyter NotebookとSIEMの理想的な関係 ⾼度な脅威ハンティング msticpy インテリジェンス ナレッジ ノイズ除去されたデータに対する 深堀分析 SIEM ⼤雑把なノイズ除去 27
msticpyʼs pros: Seasonal-Trend decomposition using LOESS 著書: 「セキュリティエンジニアのための機械学習 6章 異常検出」でも取り上げられている機能 28
msticpyʼs pros: ⼀貫した⼊出⼒ • Data Uploader機能による出⼒(転送) • 2023年8⽉時点で Azure SentinelとSplunkのみ対応 • DataFrame、ファイル、フォルダをアップロード可能 ms6cpy OSINT (Internet) SIEMをエンリッチメント︕ 可視化したチャートは転送できないが 分析結果の表を転送できると、 類似のチャートはSIEMでも描ける SIEM 29
Jupyter & msticpyʼs pros: データ検証 • Pandas DataFrameを逐次確認できる • copy()により退避しておけば誤った上書きに安⼼ • 値の型変換やNULL値への対応も容易 • ⽂字コードの確認や変換も楽々 • タイムレンジをGUIで操作 ☞ • QueryProviderの組み込みクエリ関数もprintオプションで事前確認 検索予定のクエリ 30
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
Jupyterʼs pros: 無限の可視化 Splunkのデータ切り捨て部分 データプロット上限数(デフォルト) Splunk MS Sentinel Jupyter 10,000 10,000 ♾ (Infinity) 32
[参考] ダッシュボードオプションで上限を変更 • Splunkではダッシュボードオプション「charting.data.count」で上限を変更できるが・・ 33
Jupyterʼs pros: papermillで⾃動化 • Pythonライブラリ • ノートブックファイルを(パラメーターを変えて)バッチ実⾏ • msticpyのFIRECONのトレーニング資料の最後でも”Put it into Operation”で紹介されている⼿法 CUI outputノートブックではパラメータが上書きされている Python 34
Jupyterʼs cons: データ転送の懸念 • SIEM内の機微なデータも外部のJupyterに転送できる可能性 • SIEM側のACLで対応せざるをえない • 外部のJupyterへのデータ転送中の盗聴、MITM攻撃の可能性 • SIEM側のSSLセキュリティ依存 • セキュリティ設計がより煩雑に msticpy (Jupyter) ! SIEM • SIEMへ脅威インテリジェンス の転送は⽐較的クリア 35
msticpy 301 Practical use case 36
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をコンテナ側にインストール + 資格情報は、「Azure Key Vault」 に保存して、そこから読み込む msticpy Splunk DSDL 37
$more Splunk App for DSDL ! ! • single-instance | side-by-side • 実装されているデータセキュリティ機能 • 独⾃のSSL証明書の利⽤ • Jupyterのカスタムパスワード設定 • Splunkアクセストークンによる細かいACL設計 • Splunk MLTKのコマンドでコンテナとやりとりできる • | fit (学習⽤データに対して訓練して、モデルを作る) • | apply (識別⽤データに対して、訓練したモデルを適⽤する) 38
利⽤例: Powershellのプロセスコマンドライン(1) | fit Search in Splunk モデル作成に初回必須 powershell -enc Decode base64 Delete null byte (¥x00) Extract IoC Enrichment IoC Return to Splunk | apply 元々は機械学習アルゴリズム⽤の仕組みだが、ms<cpyを組み込んだカスタムモデルを開発してみた fitコマンドを実⾏することで、app/modelディレクトリに .ipynbからのエクスポート関数で構成された .py ファイル が作成される hOps://github.com/Tatsuya-hasegawa/MSTICPy_u6ls/blob/main/splunk_dsdl/ms6cpy_powershell_ioc.ipynb 39
利⽤例: Powershellのプロセスコマンドライン(2) fit ※例: Splunk botsv2データ apply msticpyの結果 40
まとめ • • • • • SIEMの分析に頼りすぎないように脅威ハンティング︕ msticpyの布教活動: APACのユーザーが増えると嬉しい Jupyter Notebookで分析し、コーディングしながら腕を磨こう データセキュリティの懸念は、既存の仕組みにうまく乗っかろう 気に⼊ったOSSコントリビューターになろう。Happy msticpying! 41
引⽤・参考 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/enus/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-detectionrisk/ 42
Thank you ! 43