IIJ内製調査システム CHAGE のご紹介
2019年09月27日 金曜日
CONTENTS
はじめまして、CHAGE 開発メンバーのくまさかです。
今回から、いくつかの記事に分け、 IIJ 内製調査システム CHAGE(チャゲ) を支える仕組みと実現するための構造について紹介していきます。
今回の記事ではまず、CHAGE というシステムは何であり、どういった事を行えるのかを紹介します。
CHAGE とは
CHAGE (Combination of Host and Address information Getting Environment) とは、OSINT を支援するシステムです。
いくつかの情報提供元に対する繰り返し検索と、それらの情報の関連性を人間にわかりやすいよう表示することで、支援しています。
CHAGE の意味にも込められてるように、ホストやアドレス情報を組み合わせながら検索し、環境情報を取得しています。
簡単にいうと、1つの情報に関連する数10万の情報の関係性をツリー状に表示してくれるシステムです。
どこで活用されているか
これほどの調査をわずか数クリックで提供している CHAGE は、IIJセキュリティオペレーションセンター の調査ツールの1つとして活用されています。
IIJセキュリティオペレーションセンター では、お客様環境でのセキュリティインシデントの検知から通知/対処や、それらを運用する上での動向調査、脅威情報の調査を日々行っております。
攻撃と識別された情報を通知する際、攻撃元の調査や、様々な脅威情報の収集、調査 (wizSafe Security Signal 観測レポート の作成等) に活用されています。
なにを活用しているか
CHAGE は、OSINT を支援するシステムのため、公開されている情報を活用しています。例えば、whois情報や、DNSの正引き逆引き結果 です。
これらの公開情報を収集するために、購入した外部APIサービス(DomainやIPアドレスを調査するサービス等)をうまく活用しています。
これにより、調査対象へ大量のリクエストを出すことなく、通常利用の範囲で調査することも実現しています。
どんなことができるのか
例えば、domain名 iij.ad.jp
を検索した場合、以下のようなツリーが表示されます。
この画面はツリービューと呼び、表示されているツリーの丸マーク1つ1つがDNSや外部API、ルーティング情報などを検索した結果です。 この例では、約200,000件の検索結果を取得しており、その結果を人間がわかりやすいようツリー状に表示しています。
情報量が多すぎると邪魔になるものもあるので、一部はグルーピング(丸マーク右下に数値が記載されているもの) や、非表示状態(丸が青くなっているものは配下の情報が非表示になっている) を自動的に行ってくれます。
この結果画面に対して、非表示やグルーピングさらには、追加の関連情報の検索の操作を行い、調査の精度を高めていくことが可能です。
使っているサーバの調査も数クリックでできるんですよ
試しに、私個人に身近なサービスで例をお見せします。
調査対象とさせてもらうのは、スマホ向けゲームのアズールレーン。こちらのサーバがどこにあるのかCHAGE だけで導き出してみようと思います。(掲載する調査結果は、2019/09/12時点)
アズールレーンは、先日話題になったAWSの障害 (東京リージョン (AP-NORTHEAST-1) で発生した Amazon EC2 と Amazon EBS の事象概要) の際に、AWS上に存在することを公表 しています。
調査に使うデータは、簡単に入手できる公式webページのホスト名host www.azurlane.jp
を用いてみました。
以下の動画を再生いただくとわかりますが、数クリックで判明してしまうんですよね。
すばらしい。
検索開始は 00:05 。検索は結果は 00:25 に表示されます。
検索から結果の反映まで20秒程度。この間、約200,000件の検索を実施し、結果をツリーとして表示しています。
この件数の情報を20秒程度で人間が調査しやすい形に整形し、人間は数クリックで必要な情報にたどり着くこともできます。
更に CHAGE は、link図を表示する機能も有しており、表示されたツリーの情報をlink図で整理や関係性を確認することもできます。
実際にlink図を整理する操作を動画にしました。
動画で作成したlink図です。
domain azurlane.jp
が、host azurlane.jp
やhost www.azurlane.jp
をもっており、それらのホストがdomain amazonaws.com
のドメインが保有するホストと関連づいていることがわかります。
手順を示した動画の時間は合計で80秒程度でした。
どうでしょう。カップラーメンを作るのは難しいぐらいの時間で、調査を行うことが可能です。
今回の例では、イメージしてもらいやすいよう、かなり多くの情報は非表示にしました。 本来の調査では、この数十倍の情報が画面上に表示されます。そこから、怪しいと思った情報に対して検索し(ツリーの末端を増やしてき)、関連性から見える事実を導き出していきます。
CHAGEを支える仕組み
CHAGE を支えている仕組みは「繰り返し検索の驚異的な速さ」と「軽量なわかりやすい表示」です
繰り返し検索の驚異的な速さ
CHAGE の検索は、検索結果をさらに検索し、さらに検索し、、、、と再帰的に行われます。
その検索はdomain iij.ad.jp
の例でも示した通り、1度の検索で数10万件単位です。
これらを20秒程度で表示させる為に、データを集める検索は10秒程度で完了しています。
10秒で数10万件単位の検索結果を応答させる為には、ポピュラーなRDBシステムでは、圧倒的に速度が不足します。
その為 CHAGE は、内部構造を開発し、高速化を図っています。
詳細は、次回以降の記事内で、ISON という仕組みや Asks Framework の紹介します。
軽量なわかりやすい表示
インターネット上で見かける検索UIの多くは検索結果を表
で出力していると感じます。
しかし、CHAGE は検索された情報を表
で表示しません。それは CHAGE が情報の関連性を人間にわかりやすく伝える為に必要なことです。
CHAGE を利用する目的は、情報の関連性を人間がわかりやすい形で認識し、欲しい情報を楽に見つけ出す事にあります。なので、 CHAGE が提供すべきは1つ1つの情報の詳細がただ列挙される事ではなく、いかに人間がわかりやすい形で、関連性を表示できるかということが求められています。
そのため、直感的に関連性を認識できるよう、ツリー構造が採用されています。
何10万件の情報からなるツリーの描画処理はクライアントWebブラウザ上のJavaScriptで行っています。
軽量に実装する為、以下の技術topicで紹介するD3.jsを用いて実装されています。
今回は CHAGE についてとりあえず興味を持っていただく為、とても簡単に紹介させていただきました。
次回以降の記事では、CHAGE の仕組みよりの部分を技術的な観点も含めてより細かく紹介させていただく予定です。
本記事に続く次の記事では、 CHAGE の検索を高速化する仕組みの一つである ISON について紹介する予定です。
関連記事
- IIJ内製調査システム CHAGE のご紹介(本記事です)
- CHAGE の動き
- “ASKS” の働き
- “ASKS” と データソースの接続
- “CHAGE” の大切な要素