ブロックチェーン技術を用いた脅威インテリジェンスの共創

この記事は、[NTTコミュニケーションズ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/nttcom)の13日目の記事です。
昨日は @kirikei さんの記事でした。


## TL;DR

- よりActionableなインテリジェンスを生産するには、想定と実際のアクションのズレを観測できる必要がある
- それを実現するため、組織横断でインテリジェンス流通の影響を観測ができるMetemcyberというフレームワークを開発した
- Actionableなインテリジェンスの生産だけでなく、サプライチェーンのセキュリティ健全性評価や費用対効果測定が可能に

## 世は大インテリジェンス時代

**「探せ！　この世の全てをそこにおいてきた！」**

ウィーアー！　世はまさに大インテリジェンス時代。[業界リーダーのFireEye社でさえ脅威インテリジェンス提供サービスを開始した](https://www.fireeye.com/blog/jp-products-and-services/2020/10/introducing-mandiant-advantage-threat-intelligence.html)のに、まだ雰囲気でセキュリティ対策やってるの？

End-to-Endの通信が当たり前になった昨今、EDR[^1]を個人端末に入れることも当たり前となってきました。EDRを全部のマシンに入れる……コンテナ とかVMとか、え？　クラウド上の（ここで筆が途切れる



データに基づいたセキュリティ対策、本当にできていますか？



*※この物語はフィクションです*


## 脅威インテリジェンスってなんだよ（1年ぶり）

こんにちは、@nitkyです。この記事は[2019年投稿記事](https://qiita.com/nitky/items/ccefd0353b74aa21e357)のアンサーソング（記事）となります。

弊チームでは[Recorded Futureの定義](https://www.recordedfuture.com/threat-intelligence/)を参考に、「サイバー攻撃の防止や軽減に役立つ知識」を脅威インテリジェンス（Cyber Threat Intelligence = CTI ）と呼んでいます。しかし、「脅威インテリジェンスが本当にセキュリティ対策として意味あるものなのか」という点で、多くの疑問を体感する1年となりました。一つのサービスがお客様の手元に届くまで、様々な会社がサプライチェーンに関わります。結局、１つの組織や会社だけでインテリジェンスが閉じていても、お客様を守れなければ何の意味もありません。サードパーティも含めた統一的なセキュリティ貢献、もしくはサービス全体の横断的なトラストチェーンを構築する必要性が改めて明らか[^2]になりました。

一方、企業の中でも、独立した複数の部署で統一的なセキュリティ基準を達成することの難しさが浮き彫りになっています。セキュリティ体制の弱い部分を狙って、攻撃を横展開していく手法は弊社のインシデント[^3]でも観測されました。

一部の守りをいくら強固にしても、他の場所に穴が空いていればセキュリティ対策としては意味がありません。数多くの社員や関係者が入り混じる中、「本当に脅威インテリジェンスがセキュリティ対策としてお客様に役立つのか」を効果測定することは大きな課題となりました。


## 脅威インテリジェンスが消費者に起こすアクション

脅威インテリジェンスが持つべき性質の中でも、特に実現し辛い重要なものとして「Actionable」と呼ばれる性質があります。日本語に訳すと「次の行動が決定しやすい」「意思決定が容易」という意味になるでしょう。端的に言えば、良いインテリジェンスには実行しやすい対策が書いてあるということです。

しかし、多くのインテリジェンス配布サービスでは、「インテリジェンスが消費された結果、どのような効果があったのか？」「ステークホルダーの間にどのような影響を及ぼしたのか？」をプラットフォーム的に扱うことができません。インテリジェンスの配布に関して、「効果は不明だけど、役に立つと信じてやっている」と活動しているチームも少なくはありません。これが一概に悪い状態であるとはいえませんが、「Actionable」という性質を考える上では、自分たちが想定している行動と実際のアウトプットにどのようなズレがあったのかを観測できる必要があります。

しかし、これを実現するためのサービスでは、「このインテリジェンスが消費された結果、サービス全体のセキュリティ体制にどのような影響を及ぼしたのか」ということが、各組織や各会社の立場を超えた状態から監視・検証ができる必要があるため、非常に複雑な分散システムになることが想定されました。

どこから誰がみても「内部の状態が一意に定まっている」ことの確からしさを技術的に与えるため、我々はブロックチェーン技術の採用を決定しました。その結果、参加者感で「間違いなく同じもの（同一のステートマシン）をみている」ことが技術的に期待できるようになり、消費されたインテリジェンスがサービス全体に与えた影響を参加者同士で検証できるようになりました。

特にインシデントによっては参加者の間で突発的な利害関係が発生する恐れがあり、その状況を動作として許容する合意メカニズムがあった点も非常に助かりました。

## Metemcyber

それでは、分散型脅威インテリジェンス改善フレームワークMetemcyberについて簡単に説明を行います。

以下のような特徴を組織横断で実現するため、Metemcyberは脅威インテリジェンスを共有（売買）する機能を持ちます。

 - インテリジェンスに基づく活動の影響を一か所に集約
 - セキュリティ対応に関する気づきを共有
 - よりActionableな脅威インテリジェンスの生産

これらはEthereum環境で動くスマートコントラクトによって構成されていて、ConsenSys Quorum (旧Pegasys Plus)上に実装されました。旧Pegasys Plusの利用例として日本初事例でしたが、ConsenSys社のブランド統合によってその辺りの説明がめちゃくちゃし辛くなりましたorz。

![metemcyber.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217024/70908150-03ea-b640-89f8-647b3915607b.png)
[図1: Metemcyber]

Metemcyberでは、図１に示す3つのコアコンポーネントを利用することで、「インテリジェンスに基づく活動の痕跡だけ」をうまくブロックチェーン上に載せて共有することが可能になりました。

- CTI Token：インテリジェンスを使うためのトークン
- CTI Operator: トークンを利用して使うことが可能なスマートコントラクト
- Solver: スマートコントラクトによって状態管理される現実のプログラム

つまり、センシティブなデータの中身自体をチェーン上に載せることなく、トークンを変わりとする仕組み（利用券のようなもの）を使うことで、トークンに基づいた実データの受け渡しなどのメカニズムを実現しています。

現状Metemcyber上では、MISP[^4]上で扱うことができる「MISPオブジェクト」の形式をインテリジェンスのフォーマットとしてサポートしています。

## Metemcyberの利用シーン

インテリジェンスの収集と配布のサイクルをモニタリングすることで、「データに基づいたセキュリティ対策をどれくらい行っているのか」を組織横断でそれぞれのステークホルダーが確認することができます。

イメージとしては、「セキュリティオペレーションの万歩計」を想像していただければ分かりやすいと思います。インテリジェンスの消費を日頃から積極的に行っている人は万歩計の数字がより多くカウントされることになります。これによって、サイバーレジリエンス能力のモニタリングや、サードパーティのセキュリティ体制を評価することが可能になると考えています。（図2）


![metemcyber_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217024/a6a839ee-e983-bc69-7fbd-6c397d846b5d.png)
[図２:Metemcyberのインテリジェンス活動モニタリングから分かること]

また、インテリジェンスをうまく活用できていないチームを発見して、トレーニングを促すということも可能になるのではないか、と考えています。「鎖の強度は最も弱いつなぎ目で決まる」という言い方をすることもありますが、その場所を特定することで、サイバー攻撃の水平展開を予防し、漏れや例外がないセキュリティ水準の達成を効率的に行うことができます。

フィードバック情報に対して暗号通貨的な値付けを行うことで、現場のセキュリティ対策のたいへんさをセキュリティ担当者に意識付けるといような使い方も想定しています。

## 「データに基づいたセキュリティ対策」を行うための人間の評価

「The Sliding Scale of Cyber Security」 によれば、セキュリティチームは成熟度によって5つの段階（実質的に4つの段階）に分かれると言われています。（図3）

![The_Sliding_Scale_of_Cyber_Security.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217024/62035f39-8c9f-8ae3-b206-8e3b380128fb.png)
[図3: The Sliding Scale of Cyber Security]

インテリジェンスに基づいた効果的な活動を行うには、一般的にサービスのモニタリング環境とアナリスト（分析官）の存在が不可欠であると言われています。つまり、ACTIVE DEFENSE以上の成熟度のとき、いわゆるIoC[^5]と呼ばれるようなインテリジェンスがチームにとって役立つ状態となります。（図4）

![The_Sliding_Scale_of_Cyber_Security_with_Intelligence.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217024/87e13a72-3de6-c413-c41f-150176b51a24.png)
[図4: インテリジェンスに基づいた効果的な活動を行える成熟度]

このあたりは文献や提供するセキュリティサービスによって大きく意見が分かれるところですが、やはりTacticalやOperationalなインテリジェンス[^6]を活用するには、特別な知識を持ったセキュリティ専門家の手助けが必要だと個人的には思います。

社内のセキュリティ担当者が本当にセキュリティに詳しいかどうかは誰が判断すべきでしょうか？　掲げているセキュリティ対策が費用対効果の極めて怪しいものであったり、有識者からみれば「セキュリティ対策と名ばかりの無駄な手間」になっている可能性もあります。

サイバー攻撃は突然やってきますが、アナリストは社内から突然湧いてくる存在ではありません。

アナリストは組織のセキュリティオペレーションの限界を決める存在です。彼らがどのような形でインテリジェンスを消費し、彼らがどのような形でインテリジェンスを配布しているのか、そして現場の関係者からどのようなフィードバックを受けてそれに応えたか、それらが計測できない状態で「アナリストの貢献」を可視化することは極めて困難です。

EDRも、正しく使えば間違いなく有効なセキュリティ対策です。一方、製品が正しく使われることを誰かに祈ることは、およそ「データに基づいたセキュリティ対策」とはいえません。

データに基づいたセキュリティ対策は、データに基づいて評価されたアナリストによって主導されるべきだと私は考えています。

## まとめ

- とてつもなく特殊な事情で単一のステートマシンを参加者同士でつつき合うシチュエーションがあった
- インテリジェンスに基づく活動や費用対効果を、組織横断で監視・検証できる仕組みを実現
    - 分散型脅威インテリジェンス強化フレームワークMetemcyberの開発
- インテリジェンスの消費/生産のサイクルで、関係者間のサイバーセキュリティ健全性を明らかに
- 「お気持ち」セキュリティ対策への対抗には、感覚ではなくデータに基づく判断ができるアナリストが必要
- アナリスト自体の評価は困難だが、脅威インテリジェンスの消費/生産が判断力を測る指標の１つになるかも

## OSS公開

現在、MetemcyberはOSSとして公開されており、その効果測定を行うための実証実験も行っています。

https://github.com/nttcom/metemcyber

「データに基づいたセキュリティ対策」といわれて、心に引っかかるものは何かあったでしょうか？

誰でも気軽に参加できるので、ぜひ実証実験にご参加いただけると幸いです。
OSSとしてのフィードバックもどしどしお待ちしています！　皆さん是非使ってみてください！！

[^1]: Endpoint Detection and Response
[^2]: https://www.nttdocomo.co.jp/info/notice/page/200908_02_m.html
[^3]: https://www.ntt.com/about-us/press-releases/news/article/2020/0702.html
[^4]: 業界標準的な位置づけのオープンソース脅威情報プラットフォーム。https://www.misp-project.org/
[^5]: Indicator of Compromise
[^6]: https://www.recordedfuture.com/threat-intelligence/