MSTICpyの実践活用の一例の紹介  SANS APAC DFIR Summit 2023

# 伝えたいこと

2023年9月にSANS APAC DFIR Summit 2023にて
`「msticpyの実践活用: 高度な脅威ハンティングを実現すべくSIEMとの虹の懸け橋となる」`
と題して、Microsoftの脅威ハンティングツール msticpyの実践活用の方法の一例の紹介とmsticpyをAPACで布教させていただきました。
スライド資料の共有と、35分の発表時間に伝え切れなかったことをこちらで書きます。

# APAC DFIR Summitの発表スライド

持ち時間は35分で、Live Onlineの当日は700名ほどが参加されていたそうで、私は予定通り日本語で話し、同時通訳の方が英語に翻訳されました。Evaluationシートで コンテンツは5段階評価で平均4.31をいただき、プレゼンは平均4.21をいただくことができ一安心です。

日本語版の発表スライドはこちらです↓。
https://www.docswell.com/s/hackeT/Z98NXM-practical-msticpy-use-JP

英語版「Practical msticpy use: rainbow bridge to SIEM for advanced threat hunting」の発表スライドはこちら↓です。
https://www.docswell.com/s/hackeT/5LL3M3-practical-msticpy-use-EN

実践活用としてSplunk DSDLの上でmsticpyを使えるようにした時の、サンプルモデルスクリプトはこちらです。
https://github.com/Tatsuya-hasegawa/MSTICPy_utils/tree/main/splunk_dsdl
Powershellのプロセスコマンドラインからbase64文字列を判定し、それをbase64デコードし、さらにNull(\x00)文字を削除した上で、IoCを抽出し、そのIoCのIPアドレスに対してIP Whoisを付与し、Splunkに結果を返す Notebookファイルです。
Splnk単体では難しいバイナリデータの加工もmsticpyであれば容易にできます！
DSDLにも実装されている`fit`と`apply`のMLTKコマンドを使い、DSDLの仕組みにmsticpyをあいのりさせることでデータ転送懸念のためのセキュリティ設計を楽にすることがオチでした。

## 時間の関係で削除したスライド

35分では発表時間が足りず、カットしたスライドが実は２つありましたのでご紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646242/8ba08551-2750-63bd-c8a8-61bfa9354927.png)
まず一つ目は、msticpyの懸念のセクションで、OSSならではのソフトウェアのバグが散財していることを説明しているスライドです。バグの全くないソフトウェアはありえませんし、msticpyはバグ修正やバージョンアップが早いプロジェクトです。またアップデートのためのタスク管理もされていますので、バグが顕在化が常駐していることは多くありません。Githubのissueもバグレポート、機能リクエスト、セキュリティ脆弱性報告と３つの窓口のフォーマットが準備されています。
**しかしSplunkなどMicrosoft外の他社製品とのデータコネクターについては、Microsoftのコア開発者もあまり詳しくないそうです。**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646242/189b56fd-6e82-b56e-6c0e-741701b4ab43.png)
２枚目は、 そこでSplunkのデータドライバーのクリティカルなバグを治して、msticpyに貢献してみた話です。
このバグと修正方法について、詳しくは[こちら](https://qiita.com/hackeT/items/3191b480edcb5ffd1548)の投稿で説明しているため割愛します。
これはコア開発者のIanらも気づいていなかったようで、その理由がSplunkなど他社製品とのテストはなかなか実機での結合テストを用意できないものもあるそうです。
その上、msticpyはMicrosoftのOSSプロジェクトにも関わらず、まだコントリビューターが50人もいないんです。
ユーザーを増やしていけば、こういうバグは見つかりやすくなりますし、OSSで無償で使える以上、みんなで助け合っていきたいですね！ 
このスライドで言いたかったのは、細かい[Contributor GuideLines](https://github.com/microsoft/msticpy/wiki/Contributor-guidelines)があるものの、もしこれを読まずに先にPullRequestを投げてしまってもちゃんと確認してくれるし、担当をアサインしてコードの中身も見てくれてCIの結果に基づいて場合によってはさらにコードをよくする方法を教えてくれたりするアットホームなOSSプロジェクトだということです。よってみなさんも使ってみた時に、あれここおかしいぞ、このドキュメントはちょっと古いぞってところがあればぜひPull Requestをしてmsticpyを発展させていきましょう！

## msticpyのOverviewポスターについて

msticpyの習得難易度を上げてしまっている要素がそのツール機能の多さとドキュメントの分厚さなのですが、
fr0gger_が作成してくれたVisual Posterに大まかな機能がチートシートとしてリストアップされています！

https://twitter.com/fr0gger_/status/1623209441146593281?s=61&t=v8tLnMcFFdnsiT38CeG
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646242/e4c44719-279f-5f87-8e6c-3312110db1ad.png)
これ多言語化も検討されており、日本語化の要件があったら私の方で対応しようと思っています。
また彼の近著[Visual Threat Intelligence](https://store.securitybreak.io/threatintel)にはこの他にもたくさんの脅威インテリジェンスについてのポスターが含まれており、直感的に技術が可視化されていておすすめです。


# 今後について

友人でもあるMicrosoftのリサーチャーのfr0gger_(Thomas Roccia)のおかげでmsticpyを２年ほど前に知ることができ、業務でも使うようになってから msticpyのgithubへのPull Requestも増えてきました。
またコア開発者のIanには、最初はPull Requestしたコードの msticpyの[Good coding guidelines](https://github.com/microsoft/msticpy/wiki/Good-coding-guidelines-tips#coding-best-practices)に適合できていない箇所を微修正してもらったりと助けてもらっています。
現在もmsticpyへのPull Requestを続けており、今月は、オプションの記述修正のような細かいものや、Splunk DriverでBearer Token認証を適用させるような新機能の追加など3つ出しています。
またDFIR Summitの評判からか、10月にはmsticpyの開発者ミーティングにも呼ばれるようで、より使いやすく高機能な脅威ハンティングツールになれるよう微力ながら貢献する予定です。

Jupyterを使ったこれからの脅威ハンティングとDFIRについてはどこかでまた自分の考えをまとめたいと思っていますが、まずはmsticpyがもっと日本でもユーザーが増えて機能が拡張されて、Python製の脅威ハンティングツールのデファクトスタンダードになれるといいなと考えています！

ご一読ありがとうございました。
Happy msticpying!