Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
msticpyの実践活用: 高度な脅威ハンティングを実現すべくSIEMとの虹の懸け橋となる
Search
hackeT
October 10, 2023
Programming
100
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
msticpyの実践活用: 高度な脅威ハンティングを実現すべくSIEMとの虹の懸け橋となる
Japanese version
hackeT
October 10, 2023
More Decks by hackeT
See All by hackeT
ポートスキャナー入門: 正しく判断するために知っておきたいこと
hacket
0
33
OPSEC (Operations Security) について 知っておきたいこと
hacket
0
230
スレットハンティングについて知っておきたいこと
hacket
0
710
ランサムウェア攻撃について知っておきたいこと
hacket
0
270
APIセキュリティについて 知っておきたいこと
hacket
2
230
日曜フォレンジック ~デジタルカメラの写真と動画を復旧せよ~
hacket
0
83
Practical msticpy use ~ rainbow bridge to SIEM for advanced threat hunting ~
hacket
0
180
フィッシング詐欺について知っておきたいこと
hacket
1
150
知られざるLOADERマルウェアの世界
hacket
0
130
Other Decks in Programming
See All in Programming
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
650
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
510
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
270
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.5k
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.4k
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
320
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.7k
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
Speed Design
sergeychernyshev
33
1.9k
Designing for Timeless Needs
cassininazir
1
370
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Agile that works and the tools we love
rasmusluckow
331
22k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Transcript
1
$WHOAMI • スレットハンター/アプリ開発/脅威研究 • OSS貢献者 • msticpy,unprotect,atomic-red-team,cuckoo,capev2.. • 保有資格 •
7 GIACs • CISSP、CISA • SNS • HN: hackeT • X: @T_8ase 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
アジェンダ • SIEMの変わらない運⽤ • msticpy 101 Overview and Basics •
msticpy 201 Jupyter Notebook and ( pros | cons ) • msticpy 301 Practical use case • まとめ 4
5 SIEMの変わらない運⽤
背景と課題 6 分析︓rawログの⼈海戦術 監視︓メールアラート 分析︓フォーマット化ログの多軸検索 監視︓可視化ダッシュボード・アラー ト転送 近年 無くならない開発・運⽤タスク l
新たな脅威に追随すべく分析ロ ジックの改修・追加 l 世の中の脅威状況のみならず社 内の状況に合わせた閾値運⽤ 閾値 バグ パネル 追加 ドキュ メント 修正 更新 SIEM機能や既存ダッシュボードの バイアスで時に不⾃由な分析に陥る ⼀昔前
⽬的 脅威ハンティングとは • 能動的に悪意のある活動や脅威の予兆を発⾒し対処すること • 脅威インテリジェンスや未適⽤のIOC、異常検出などを⽤いて能動的に調査 • 仮説〜検証の繰り返し 7 ⾼度な脅威ハンティングを実現
⾼度な脅威ハンティングとは 「⾒逃しを限りなく減らす」思想 • rawデータから未検出の脅威を洗い出す • 未加⼯のデータも合わせて確認し、セキュリティ機器の処理・検出漏れも探す • 本来の⾃由なデータ分析 (アドホック) • 独⾃に考えられた切り⼝の分析ロジック • 制約のない外部連携 • 奇抜なビジュアライゼーション • 読み⼿にとって分かりやすい強調など • 継続的な更新運⽤ • 機械学習 (ML/DL) • ⾃動化
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年マジック・クアドラントより
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
12 ⾼度な脅威ハンティングへ SIEM 時 系 列 分 析 ⾃ 動
化 ⼀ 貫 し た ⼊ 出 ⼒ デ ー タ 検 証 機 械 学 習 無 限 の 可 視 化 msticpy
13 msticpy 101 Overview and Basics
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 データ取り込み データ加⼯ 機械学習も含めて分析 グラフによる可視化
msticpyドキュメンテーション&リソース • MSTICpy ☞ msticpy に本発表では統⼀ • 公式ドキュメント • https://msticpy.readthedocs.io
• ワードカウント 10万以上 • RSTファイル 80以上 • Jupyter Notebook サンプル数 40以上 • 過去のトレーニング資料も公開 • msticpy-lab、msticpy-trainingレポジトリ • 公式ブログ • https://msticpy.medium.com 15 リソースが豊富すぎて逆に習得には時間がかかることも
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
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
msticpy:データ取り込み Acquisition (1) • Query Providerインスタンスを作成 • 左のデータソースから選択できる 18 LocalData:
./dataフォルダ内の.pklローカルファイルに接続の⼀例 Splunk: msticpyconfig.yaml を参照し、SplunkのREST APIに接続 通信は独⾃に暗号化されない => HTTPS (SSL) が必須
• 戻り値は、Pandas DataFrame • アドホック関数 • exec_query(): 任意のクエリ実⾏ • 組み込みクエリ関数
• 選択式 (データソース毎に異なる) 19 msticpy:データ取り込み Acquisition (2)
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
25 msticpy 201 Jupyter Notebook and ( pros | cons
)
Jupyter Notebookで分析する恩恵 • 途中結果のアプトプットを出⼒できるデータの再現性 • 外部ソースとの結合・統合の容易性 • 機械学習フレームワークの利⽤しやすさ • 豊富な可視化ライブラリを⾃由に活⽤
• データサイエンティストとして応⽤⼒が⾝に付く 26
Jupyter NotebookとSIEMの理想的な関係 27 msticpy SIEM ⾼度な脅威ハンティング インテリジェンス ナレッジ ノイズ除去されたデータに対する 深堀分析
⼤雑把なノイズ除去
msticpyʼs pros: Seasonal-Trend decomposition using LOESS 28 著書: 「セキュリティエンジニアのための機械学習 6章
異常検出」でも取り上げられている機能
msticpyʼs pros: ⼀貫した⼊出⼒ • Data Uploader機能による出⼒(転送) • 2023年8⽉時点で Azure SentinelとSplunkのみ対応
• DataFrame、ファイル、フォルダをアップロード可能 29 OSINT (Internet) SIEM ms6cpy SIEMをエンリッチメント︕ 可視化したチャートは転送できないが 分析結果の表を転送できると、 類似のチャートはSIEMでも描ける
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: 無限の可視化 32 Splunk MS Sentinel Jupyter 10,000 10,000
♾ (Infinity) データプロット上限数(デフォルト) Splunkのデータ切り捨て部分
[参考] ダッシュボードオプションで上限を変更 • Splunkではダッシュボードオプション「charting.data.count」で上限を変更できるが・・ 33
• Pythonライブラリ • ノートブックファイルを(パラメーターを変えて)バッチ実⾏ • msticpyのFIRECONのトレーニング資料の最後でも”Put it into Operation”で紹介されている⼿法 34
outputノートブックではパラメータが上書きされている CUI Python Jupyterʼs pros: papermillで⾃動化
• SIEM内の機微なデータも外部のJupyterに転送できる可能性 • SIEM側のACLで対応せざるをえない • 外部のJupyterへのデータ転送中の盗聴、MITM攻撃の可能性 • SIEM側のSSLセキュリティ依存 • セキュリティ設計がより煩雑に
• SIEMへ脅威インテリジェンス の転送は⽐較的クリア 35 SIEM msticpy (Jupyter) ʂ Jupyterʼs cons: データ転送の懸念
36 msticpy 301 Practical use case
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」 に保存して、そこから読み込む
$more Splunk App for DSDL • single-instance | side-by-side •
実装されているデータセキュリティ機能 • 独⾃のSSL証明書の利⽤ • Jupyterのカスタムパスワード設定 • Splunkアクセストークンによる細かいACL設計 • Splunk MLTKのコマンドでコンテナとやりとりできる • | fit (学習⽤データに対して訓練して、モデルを作る) • | apply (識別⽤データに対して、訓練したモデルを適⽤する) 38 ʂ ʂ
利⽤例: 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 ファイル が作成される
利⽤例: Powershellのプロセスコマンドライン(2) 40 ※例: Splunk botsv2データ fit msticpyの結果 apply
まとめ • 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/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
43 Thank you !