サイバー脅威情報集約システム EXIST

はじめに

世の中には,サイバーセキュリティアナリストのコミュニティやセキュリティベンダ等の組織によって提供されているサイバー脅威情報が数多く存在します. これらの情報は,例えばIDS等のセキュリティ機器で検知された通信を調査するような場面において,通信先が悪性であるかを判定するための材料として有用です. このため,セキュリティオペレーションの現場では,特定のインディケータ情報に関連する脅威を調査する作業が度々発生します.

しかし,サイバー脅威情報の粒度や提供方法は様々であり,調査作業が発生する度に手動で多数の情報源と突合するのは非効率です.

NICTER解析チームは,サイバー脅威情報を自動集約することでこのようなタスクの処理を効率化するためのツールとしてEXISTを開発し,日頃の調査解析業務に利用しています.また,同様の課題を抱える解析者や研究者にも活用してもらえるよう,オープンソースソフトウェアとして公開しています.

EXIST (GitHub)

本記事では,EXISTについて紹介します.

EXIST (EXternal Information aggregation System against cyber Threat) とは

EXISTは,サイバー脅威情報を集約し,様々な情報源を横断的に検索することができるWebアプリケーションです. 様々な情報源からサイバー脅威情報をフィードやAPI経由で取得し,EXIST上のデータベースに集約します. 利用者はWebUIもしくはWebAPIで,サイバー脅威情報を特定のキーワードで横断的に検索することが出来ます.

システムの概要

overview

図1. EXISTの概要図

EXISTは大きく分けて以下の機能があります.

  • Tracker
  • Hunter
  • Lookup
  • Web API

Tracker

Trackerは,様々なサイバー脅威情報源からフィード情報を収集し,提供する機能です. 情報源の種別により複数のTrackerに分かれています.

表1: Trackerが扱う情報
Tracker 扱う情報
Threat Tracker MISPで共有されるサイバー脅威情報
Reputation Tracker IPアドレス,ドメイン,URLのレピュテーション情報のフィード
Twitter Tracker 特定のTwitterユーザのツイート
Exploit Tracker エクスプロイトコードを提供する情報源のフィード

Threat Tracker

MISPで共有されるサイバー脅威情報を収集します. MISPCIRCLを中心に開発されたオープンソースの情報共有プラットフォームです. Threat Trackerに情報を取り込むためには,自身が参加しているMISPインスタンスのURL,およびAPI tokenが必要です.

Reputation Tracker

Reputation Trackerは以下の情報源に対応しています(2019年3月現在)

各情報源からフィードを取得する機能は,EXIST上でプラグインとして管理されています. 独自でプラグインを作成することにより,上記以外の情報源についても集約することが可能になります.

Twitter Tracker

TwitterアカウントをTwitter Trackerに登録することで,フォローしたユーザのツイートを収集します. セキュリティ情報の発信を行うアナリストのTwitterアカウントをフォローすることで,セキュリティ情報を逸早く収集することができます.

Exploit Tracker

Exploit Trackerは以下の情報源に対応しています(2019年3月現在)

各情報源からフィードを取得する機能は,EXIST上でプラグインとして管理されています. 独自でプラグインを作成することにより,上記以外の情報源についても集約することが可能になります. エクスプロイトコードを集約することにより,対処すべき脆弱性のトリアージや,脆弱性の検証に役立てることが出来ます.

Hunter

Hunterは,いくつかのサイバー脅威情報やTwitterから特定の情報を観測する機能です. 使用例として,特定の攻撃キャンペーン名やマルウェア名をクエリに設定することにより,セキュリティ情報の発信を行うアナリストからの情報を逸早く収集することが出来ます. 設定した条件に一致した情報は,必要に応じてSlackに通知することが可能です.

表2: Hunterの種類
Hunter 概要
Twitter Hunter 特定のキーワードもしくは特定のユーザのツイートを観測する
Threat Hunter Threat Trackerで収集されるデータを特定のキーワードで観測する

Lookup

Lookupは,いくつかのインターネット上のサービス(whois等)からIPアドレスやドメイン等に関連する情報を取得する機能です. また,各種Trackerで収集されたデータの他に,VirusTotalThreatMinerの検索結果も取得します. 以下のデータを対象に調査することが可能です.

  • IPアドレス
  • ドメイン
  • URL
  • ハッシュ値

Web API

EXISTのデータベースに保持しているデータをWeb API経由で取得できます.

ユースケース

EXISTを利用した調査例をいくつかご紹介します.

IDSで検知されたドメインの調査

トップページの検索フォームで調査対象のドメインを入力し,実行します.

LookupDomain

図2. ドメイン調査結果画面

調査対象ドメインの名前解決結果,過去に紐付けられていたIPアドレス,国名などがインターネット上のサービスから取得して表示されます. また,各Trackerで収集された情報の中で調査対象と一致するものや,VirusTotalThreatMinerの検索結果が表示されます.

ユーザに代わって悪性URLにアクセスし,ブラウザの表示画像とダウンロードされるコンテンツを取得する

トップページの検索フォームで調査対象のURLを入力し,実行します.

LookupURL

図3. URL調査結果画面

調査対象URLのコンテンツ情報,VirusTotalの検索結果などが表示されます. また,EXISTが代理で調査対象URLにアクセスし,Webページのイメージが表示されます. WebページのHTMLソースコードを表示することも可能です. HTTPレスポンスのコンテンツがHTMLでない場合は,EXIST経由でコンテンツをダウンロードすることも可能です.

注意事項: 調査対象URLへのアクセスはEXISTがインストールされたお手元の環境から行われます

特定条件に一致するツイートの観測

Twitter Hunterで観測対象のキーワードを登録します.

TwitterHunter

図4. TwitterHunter登録画面

世界中のツイートをTwitter API経由で観測し,調査対象キーワードに一致するツイートがあった場合はEXISTのデータベースに保存されます. この例では攻撃キャンペーン名を条件に設定しており,世界中のアナリストが発信する特定の攻撃キャンペーンに関わる情報を逸早く収集することが出来ます. 必要に応じて,条件に一致したツイートをSlackへ通知することが可能です.

おわりに

本記事では,NICTER解析チームで開発し,日頃の調査解析業務で活用しているEXISTについて紹介しました. EXISTはソースコードをMITライセンスで公開しています.是非ご活用下さい.

EXIST (GitHub)

システムの導入方法は,GitHubでソースコードと併せて公開しているREADMEを参照して下さい.