IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アラクサラネットワークス株式会社の特許一覧

特許7079721ネットワーク異常検知装置、ネットワーク異常検知システム及びネットワーク異常検知方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-25
(45)【発行日】2022-06-02
(54)【発明の名称】ネットワーク異常検知装置、ネットワーク異常検知システム及びネットワーク異常検知方法
(51)【国際特許分類】
   H04L 43/026 20220101AFI20220526BHJP
   G06F 21/55 20130101ALI20220526BHJP
   H04L 12/22 20060101ALI20220526BHJP
   H04L 12/66 20060101ALI20220526BHJP
【FI】
H04L43/026
G06F21/55 320
H04L12/22
H04L12/66
【請求項の数】 7
(21)【出願番号】P 2018228475
(22)【出願日】2018-12-05
(65)【公開番号】P2020092332
(43)【公開日】2020-06-11
【審査請求日】2021-04-22
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成29年度 国立研究開発法人新エネルギー・産業技術総合開発機構、「IoT推進のための横断技術開発プロジェクト/次世代産業用ネットワークを守るIoTセキュリティ基盤技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504411166
【氏名又は名称】アラクサラネットワークス株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】特許業務法人藤央特許事務所
(72)【発明者】
【氏名】石川 有一
(72)【発明者】
【氏名】松山 信仁
【審査官】鈴木 香苗
(56)【参考文献】
【文献】特開2018-133688(JP,A)
【文献】特開2005-136526(JP,A)
【文献】特開2016-144153(JP,A)
【文献】特開2020-014089(JP,A)
【文献】国際公開第2016/147944(WO,A1)
【文献】特開2010-233042(JP,A)
【文献】特表2015-502060(JP,A)
【文献】特開2005-198031(JP,A)
【文献】中国特許出願公開第107408181(CN,A)
【文献】米国特許出願公開第2017/0054738(US,A1)
【文献】次世代トラフィック解析の決定版 Flowmon Driving Network Visibility,日経 xTECH EXPO 2018 ,日本,2018年10月17日
【文献】田辺 光昭 ほか,ネットワーク型侵入検知システムにおけるアラートベースシグネチャの実現方式 A Realization Method of Alert Base Signatures in Network Intrusion Detection System,情報処理学会研究報告 Vol.2004 No.129 IPSJ SIG Technical Reports,日本,社団法人情報処理学会,2004年12月20日,第2004巻,pp.63-68
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/026
G06F 21/55
H04L 12/22
H04L 12/66
(57)【特許請求の範囲】
【請求項1】
プロセッサとメモリを有し、受信したフロー統計情報に基づいて観測対象ネットワークの異常を検知するネットワーク異常検知装置であって、
前記観測対象ネットワークのパケットのヘッダ情報から集計された前記フロー統計情報を受信して、フロー統計情報蓄積部に収集する統計情報収集部と、
複数のフローに関する事象の時系列的な順序関係が予め設定されたシナリオを含むシナリオ情報と、
前記フロー統計情報蓄積部から所定の期間のフロー統計情報を取得して、前記シナリオ情報のうち前記シナリオの事象と一致するフロー統計情報の有無に基づいて、前記観測対象ネットワークの異常の有無を判定する異常検知部と、
を有し、
前記異常検知部は、
前記シナリオ情報を設定するユーザインタフェースを提供することを特徴とするネットワーク異常検知装置。
【請求項2】
請求項1に記載のネットワーク異常検知装置であって、
前記シナリオは、複数の事象に関するフロー条件と、複数の前記事象のそれぞれについて予め設定された閾値条件と、複数の事象の前記時系列的な順序関係を含み、
前記フロー条件は、送信元または宛先の情報を含み、
前記閾値条件は、前記フロー条件が発生した数量に関する閾値を含み、
前記順序関係は、複数の事象の時系列的な前後関係を含むことを特徴とするネットワーク異常検知装置。
【請求項3】
請求項1に記載のネットワーク異常検知装置であって、
前記異常検知部は、
前記シナリオの事象と一致するフロー統計情報があった場合には、当該フロー統計情報に関する情報を異常が発生したログ情報として出力することを特徴とするネットワーク異常検知装置。
【請求項4】
請求項1に記載のネットワーク異常検知装置であって、
前記フロー統計情報は、
NetFlowを用いてパケットのヘッダ情報から生成された情報であることを特徴とするネットワーク異常検知装置。
【請求項5】
プロセッサとメモリを有するネットワーク異常検知装置が、観測対象ネットワークの中継装置から受信したフロー統計情報に基づいて観測対象ネットワークの異常を検知するネットワーク異常検知システムであって、
前記中継装置は、
前記観測対象ネットワークのパケットのヘッダ情報から前記フロー統計情報を生成して前記ネットワーク異常検知装置へ送信し、
前記ネットワーク異常検知装置は、
観測対象ネットワークのパケットのヘッダ情報から集計されたフロー統計情報を受信して、フロー統計情報蓄積部に収集する統計情報収集部と、
複数のフローに関する事象の時系列的な順序関係が予め設定されたシナリオを含むシナリオ情報と、
前記フロー統計情報蓄積部から所定の期間のフロー統計情報を取得して、前記シナリオ情報のうち前記シナリオの事象と一致するフロー統計情報の有無に基づいて、前記観測対象ネットワークの異常の有無を判定する異常検知部と、
を有し、
前記異常検知部は、
前記シナリオ情報を設定するユーザインタフェースを提供することを特徴とするネットワーク異常検知システム。
【請求項6】
請求項5に記載のネットワーク異常検知システムであって、
前記中継装置は、
前記観測対象ネットワークのパケットからミラーパケットを出力するミラー装置と、
前記ミラー装置から出力されたミラーパケットを受信してヘッダ情報に基づいてフロー統計情報を生成する情報収集装置と、
を含むことを特徴とするネットワーク異常検知システム。
【請求項7】
プロセッサとメモリを有する計算機が、受信したフロー統計情報に基づいて観測対象ネットワークの異常を検知するネットワーク異常検知方法であって、
前記計算機が、観測対象ネットワークのパケットのヘッダ情報から集計された前記フロー統計情報を受信して、フロー統計情報蓄積部に収集する第1のステップと、
前記計算機が、前記フロー統計情報蓄積部から所定の期間のフロー統計情報を取得する第2のステップと、
前記計算機が、複数のフローに関する事象の時系列的な順序関係が予め設定されたシナリオを含むシナリオ情報のうち、前記シナリオの事象と一致するフロー統計情報の有無に基づいて、前記観測対象ネットワークの異常の有無を判定する第3のステップと、
を含み、
前記第3のステップでは、
前記シナリオ情報を設定するユーザインタフェースを提供することを特徴とするネットワーク異常検知方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークの異常検知機能を有する装置に関する。
【背景技術】
【0002】
DDoS(Distributed Denial of Service)攻撃や、標的型攻撃等のサイバー攻撃によるセキュリティリスクが高まっている。
【0003】
標的型攻撃における攻撃は手順化されており、攻撃者による一連の攻撃手順はサイバーキルチェーンと呼ばれている。サイバーキルチェーンの一例として、非特許文献1、5、6が知られている。
【0004】
サイバーキルチェーンは、下記の攻撃手順から構成される。「偵察」(攻撃対象の情報収集)、「武器化」(攻撃コード、マルウェア作成)、「デリバリ」(作成した攻撃コード、マルウェアをメール、Webサイト等を経由して攻撃対象へ送付)、「エクスプロイト」(攻撃対象(標的)にエクスプロイト、マルウェアを実行させる)、「インストール」(標的がマルウェア感染)、「C&C(Command and Control)」(C&Cサーバがマルウェアに感染した端末と通信して遠隔操作、感染拡大、内部情報探索)、「目的実行」(マルウェアに感染した端末がサーバから情報を漏洩)。
【0005】
これらの攻撃手順の全部または一部を検知することによって、標的型の攻撃を検知することができる。単独の攻撃手順を検知する方法の一つに、通信の振る舞いを分析して、サイバーキルチェーンの攻撃手順に特徴的な通信を検知する方法が考えられる。
【0006】
通信の振る舞いを分析するための従来技術として、通信を構成するパケットヘッダの情報で定まるフロー毎にカウントするNetFlow(例えば、非特許文献2)、sFlow(例えば、非特許文献3)等のフロー統計技術が知られている。また、通信を構成するパケットそのものを収集するミラーリング技術(例えば、非特許文献4)が知られている。
【先行技術文献】
【非特許文献】
【0007】
【文献】Tarun Yadav、Rao Arvind Mallari著、“Technical Aspects of Cyber Kill Chain”、International Symposium on Security in Computing and Communication、SSCC 2015、 Security in Computing and Communications pp 438-452
【文献】RFC3954 “Cisco Systems NetFlow Services Export Version 9”、Cisco Systems、2015年10月14日
【文献】RFC3176 “InMon Corporation’s sFlow: A Method for Monitoring Traffic in Switched and Routed Networks”、InMon Corp、2001年9月発行
【文献】“ポリシーベースミラーリング機能”、アラクサラネットワークス株式会社
【文献】秋本 智、笠原 義晃、堀 良彰、櫻井 幸一 著、“同一ドメインの問い合わせに着目したボットネット検出のためのDNSトラヒック解析”、平成24年度電気関係学会九州支部連合大会(第65回連合大会)講演論文集、2012年9月24日
【文献】張 宗華、門林 雄基 著、“ボットネットの把握と停止に向けての総合的検討:問題点と対策”、情報通信研究機構季報Vol.54、2008年
【発明の概要】
【発明が解決しようとする課題】
【0008】
サイバーキルチェーンを検知するためには、例えば、サイバーキルチェーンにおける攻撃手順「C&C」に相当するC&Cサーバとマルウェアに感染した端末の通信と、感染後に発生するサイバーキルチェーンの攻撃手順の「目的実行」に相当するマルウェアに感染した端末とサーバの通信を検知する必要がある。
【0009】
上記を一般化すると、複数のフローに関する事象を各々検知して、検知した各フローに関する事象がシーケンシャル(所定の順序)に発生する条件で検知することがサイバーキルチェーンの検知には必要である。
【0010】
しかし、上記従来のフロー統計技術や、ミラーリング技術を用いた通信の振る舞いの分析では、上述のようなサイバーキルチェーンの検知機能は開示されていない。このため、上記従来例では、複数のフローに関する事象を各々検知しても、検知した各フローに関する事象がシーケンシャルに発生する条件で検知することができないという課題があった。
【課題を解決するための手段】
【0011】
本発明は、プロセッサとメモリを有し、受信したフロー統計情報に基づいて観測対象ネットワークの異常を検知するネットワーク異常検知装置であって、前記観測対象ネットワークのパケットのヘッダ情報から集計された前記フロー統計情報を受信して、フロー統計情報蓄積部に収集する統計情報収集部と、複数のフローに関する事象の時系列的な順序関係が予め設定されたシナリオを含むシナリオ情報と、前記フロー統計情報蓄積部から所定の期間のフロー統計情報を取得して、前記シナリオ情報のうち前記シナリオの事象と一致するフロー統計情報の有無に基づいて、前記観測対象ネットワークの異常の有無を判定する異常検知部と、を有し、前記異常検知部は、前記シナリオ情報を設定するユーザインタフェースを提供する。
【発明の効果】
【0012】
本発明によれば、複数のフローに関する事象を各々検知して、検知した各フローに関する事象がシーケンシャルに発生する条件で観測対象ネットワークの異常(例えば、サイバーキルチェーン)を検知することが可能となる。
【0013】
本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
【図面の簡単な説明】
【0014】
図1】本発明の実施例1を示し、ネットワーク異常検知装置を用いたネットワーク異常検知システムのブロック図である。
図2】本発明の実施例1を示し、ネットワーク異常検知装置の構成の一例を示すブロック図である。
図3】本発明の実施例1を示し、パケットの構成の一例を示す図である。
図4】本発明の実施例1を示し、フロー統計データベースの構成の一例を示す図である。
図5】本発明の実施例1を示し、シナリオテーブルの構成の一例を示す図である。
図6】本発明の実施例1を示し、SYSLOGデータベースの構成の一例を示す図である。
図7A】本発明の実施例1を示し、ネットワーク異常検知装置で行われる処理の一例を示すフローチャートの前半部である。
図7B】本発明の実施例1を示し、ネットワーク異常検知装置で行われる処理の一例を示すフローチャートの後半部である。
図8A】本発明の実施例1の変形例を示し、ネットワーク異常検知装置で行われる処理の一例を示すフローチャートの前半部である。
図8B】本発明の実施例1の変形例を示し、ネットワーク異常検知装置で行われる処理の一例を示すフローチャートの後半部である。
図9】本発明の実施例1の変形例を示し、ネットワーク異常検知装置を用いたネットワーク異常検知システムのブロック図である。
図10】本発明の実施例2を示し、ネットワーク異常検知システムの一例を示すブロック図である。
図11】本発明の実施例2を示し、ネットワーク異常検知システムで情報漏洩が発生した場合に時系列で発生するフローの一例を示すシーケンス図である。
図12A】本発明の実施例2を示し、情報漏洩が発生した場合のフロー1の帯域変動のグラフである。
図12B】本発明の実施例2を示し、情報漏洩が発生した場合のフロー2の帯域変動のグラフである。
図13】本発明の実施例2を示し、シナリオテーブルの一例を示す図である。
図14A】本発明の実施例2を示し、ネットワーク異常検知装置で行われる情報漏洩検知処理の一例を示すフローチャートの第1部である。
図14B】本発明の実施例2を示し、ネットワーク異常検知装置で行われる情報漏洩検知処理の一例を示すフローチャートの第2部である。
図14C】本発明の実施例2を示し、ネットワーク異常検知装置で行われる情報漏洩検知処理の一例を示すフローチャートの第3部である。
図14D】本発明の実施例2を示し、ネットワーク異常検知装置で行われる情報漏洩検知処理の一例を示すフローチャートの第4部である。
図15】本発明の実施例3を示し、ネットワーク異常検知システムの一例を示すブロック図である。
図16】本発明の実施例3を示し、ネットワーク異常検知システムでボットネットによる活動が発生した場合で時系列に発生するフローの一例を示すシーケンス図である。
図17A】本発明の実施例3を示し、攻撃活動が発生した場合のフローの帯域変動のグラフである。
図17B】本発明の実施例3を示し、攻撃活動が発生した場合のフローの帯域変動のグラフである。
図18】本発明の実施例3を示し、シナリオテーブルの一例を示す図である。
図19A】本発明の実施例3を示し、ネットワーク異常検知装置で行われるボットネット検知処理の一例を示すフローチャートの第1部である。
図19B】本発明の実施例3を示し、ネットワーク異常検知装置で行われるボットネット検知処理の一例を示すフローチャートの第2部である。
図19C】本発明の実施例3を示し、ネットワーク異常検知装置で行われるボットネット検知処理の一例を示すフローチャートの第3部である。
図19D】本発明の実施例3を示し、ネットワーク異常検知装置で行われるボットネット検知処理の一例を示すフローチャートの第4部である。
図20】本発明の実施例1を示し、シナリオテーブルを編集するユーザインタフェースの一例を示す図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例1】
【0016】
本発明の実施例1として、本発明のネットワーク異常検知装置100を用いたネットワーク異常検知システムの構成例と、本発明のネットワーク異常検知装置100の装置構成を説明する。
【0017】
図1は、本発明のネットワーク異常検知装置100を用いたネットワーク異常検知システムのブロック図を示す。
【0018】
観測対象ネットワーク200におけるパケット中継装置160のミラー機能(またはネットワークタップ(ミラー装置)のミラー機能)を用いて生成した観測対象パケットのミラーパケットが、観測対象ネットワーク200から情報収集装置110へ送信される。
【0019】
情報収集装置110では、ミラーパケットのヘッダ情報で定義されるフロー毎にパケット数や、Byte数等の統計情報を採取して、これらの情報をフロー統計情報としてネットワーク異常検知装置100へ送信する。
【0020】
フロー統計情報の取得には、RFC3954で定義されたNetFlowを用いてもよい。ネットワーク異常検知装置100は、情報収集装置110から受信したフロー統計情報をフロー統計情報データベース50へ蓄積し、当該蓄積されたフロー統計情報に基づいて観測対象ネットワーク200の異常の有無を分析する。
【0021】
ネットワーク異常検知装置100は、観測対象ネットワーク200の異常を検知すると、検知したネットワークの異常に関する情報をネットワーク異常検知装置100の表示端末130で表示する。
【0022】
また、ネットワーク異常検知装置100は、検知したネットワークの異常に関する情報をSYSLOGとして可視化サーバ120に送信する。可視化サーバ120は、他のセキュリティ装置とも接続することができるため、他の装置(図示省略)で取得した通信に関する情報や、インシデント情報と連携させてネットワーク異常検知装置100で検知されたネットワークの異常に関する情報を表示端末140に表示することができる。
【0023】
これにより例えば、ネットワーク異常検知装置100で検知した観測対象ネットワーク200の異常の発生箇所や、当該ネットワークの異常の発生前後の通信に関する情報やインシデント情報を可視化サーバ120等で分析することができ、より多角的なネットワークの異常の情報表示が可能となる。
【0024】
なお、図1において、情報収集装置110と、ネットワーク異常検知装置100と、可視化サーバ120は図示しないネットワークで相互に接続されている。
【0025】
図2は、本発明のネットワーク異常検知装置100のブロック図を示す。ネットワーク異常検知装置100は、情報収集装置110や可視化サーバ120とパケットの入出力を行うパケット転送処理部101と、情報収集装置110から収集したフロー統計情報を分析して観測対象ネットワーク200の異常を検知するネットワーク異常検知部102と、パケット転送処理部101及びネットワーク異常検知部102を接続する接続インタフェース103を有する。
【0026】
パケット転送処理部101は、CPU1010とメモリ1011と、パケット送受信部1012を含む。メモリ1011にはパケットバッファ1030が設定される。また、メモリ1011にはパケット処理プログラム(図示省略)がロードされて、CPU1010によって実行される。
【0027】
ネットワーク異常検知部102は、CPU1020とメモリ1021と、ハードディスク1022とを含む。また、ネットワーク異常検知部102には、入力端末150や表示端末130が接続される。
【0028】
メモリ1011にはシナリオテーブル20と、イベント収集バッファ30と、異常検知プログラム40が格納される。異常検知プログラム40はCPU1020によって実行される。ハードディスク1022には、フロー統計情報データベース50と、SYSLOGデータベース70が格納される。
【0029】
図3は、パケット300の構成図を示す。パケット300は、L1(Layer1)情報301と、L2(Layer2)情報302と、L3(Layer3)情報303と、L4(Layer4)情報304と、L7(Layer7)情報305と、ペイロード306と、FCS(Frame Check Sequence)307から構成される。
【0030】
イーサネット(イーサネットは登録商標、以下同じ)の場合、L1情報301にはIFG(Inter Frame Gap)とPreambleが含まれる。
【0031】
L2情報302にはイーサネットヘッダ情報と、VLAN Tag情報等が含まれる。L3情報303にはIPヘッダ情報が含まれる。L4情報304にはTCPヘッダ情報またはUDPヘッダ情報等が含まれる。L7情報305にはhttpヘッダ情報またはmailヘッダ情報等が含まれる。
【0032】
パケット300が、上述したNetFlowのフロー統計パケットである場合には、パケット300は通常UDPパケットであり、NetFlowのフロー統計情報はL7情報305に格納される。
【0033】
上記図2において、パケット転送処理部101のパケット送受信部1012にパケット300が入力されて、パケット受信処理が開始される。
【0034】
パケット送受信部1012にパケット300が入力されると、パケット300の受信をパケット送受信部1012がCPU1010に通知し、パケット300の内容をパケットバッファ1030に書き込む。
【0035】
CPU1010はパケット300の受信の通知を受けると、パケットバッファ1030からパケット300を読み出し、パケット300がNetFlowのフロー統計情報であった場合は、パケット転送処理部101とネットワーク異常検知部102を接続する接続インタフェース103を経由して、パケット300のNetFlowのフロー統計情報をネットワーク異常検知部102へ送信する。
【0036】
ネットワーク異常検知部102は、パケット300のNetFlowのフロー統計情報を受信すると、CPU1020がパケット300のNetFlowのフロー統計情報をメモリ1021へ一時的に格納する。
【0037】
CPU1020は、所定のタイミングでメモリ1021からパケット300のNetFlowのフロー統計情報を読み出し、ハードディスク1022のフロー統計DB10220に格納する。
【0038】
CPU1020は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、CPU1020は、異常検知プログラム40に従って処理を実行することで異常検知部として機能する。他のプログラムについても同様である。さらに、CPU1020は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【0039】
上記処理によって、ネットワーク異常検知装置100のフロー統計情報データベース50には、情報収集装置110が収集したパケットに基づくフロー統計情報が蓄積される。
【0040】
図4は、フロー統計データベース(以下、DBとする)50の構成図を示す。フロー統計DB50は、フロー統計レコード1(51-1)と、フロー統計レコード2(51-2)と、・・・、フロー統計レコードN(51-N)のN個のフロー統計情報から構成される。なお、以下の説明では、フロー統計レコードを特定しない場合には「-」以降を省略した符号「51」を用いる。また、他の構成要素の符号についても同様である。
【0041】
フロー統計レコード51は、L2情報、L3情報、L4情報、L7情報のうちの任意の情報で構成してよいが、本実施例ではL3情報、L4情報の情報で構成する例を示す。
【0042】
フロー統計レコード51は、フロー統計の規格のバージョンを示すフロー統計バージョン52と、観測対象パケットのIPバージョン53と、観測対象パケットの送信元IPアドレス54と、観測対象パケットの宛先IPアドレス55と、観測対象パケットのL4情報のプロトコル56と、観測対象パケットのL4情報の送信元ポート番号57と、観測対象パケットのL4情報の宛先ポート番号58と、観測対象パケットのフローとしてのパケット数59と、観測対象パケットのフローとしてのByte数60と、フロー開始時刻61の情報で構成される。
【0043】
ネットワーク異常検知部102のCPU1020は、所定の時間間隔またはネットワーク異常検知装置100の運用管理者が設定した時間間隔で、フロー統計DB50のフロー開始時刻61が上述の時間間隔の間に該当する複数のフロー統計レコード51-1~51-Nをフロー統計DB501から読み出し、メモリ1021内のイベント収集バッファ30に格納する。
【0044】
換言すれば、CPU1020は、所定の時間間隔毎に直前の時間間隔のフロー統計レコード51をフロー統計情報DB50から抽出して、イベント収集バッファ30へ格納する。
【0045】
イベント収集バッファ30に格納された複数のフロー統計レコード51の情報と、シナリオテーブル20に基づいて、異常検知プログラム40は、観測対象ネットワーク200の異常を検知する。
【0046】
図5は、シナリオテーブル20の構成図を示す。シナリオテーブル20は、複数のシナリオエントリ21-1~21-Nから構成される。シナリオテーブル20は、観測対象ネットワーク200の異常を検知するために、フロー統計レコード51で第1の事象(フロー1とする)が発生した後に、第2の事象(フロー2とする)が発生したことを判定するための条件が予め設定されたテーブルである。
【0047】
本実施例1のネットワーク異常検知装置100は、第1の事象(フロー1のフロー条件)が発生(フロー1の閾値条件を満足)し、第2の事象(フロー2のフロー条件)が発生(フロー2の閾値条件を満足)したことを検出した場合に、異常の判定を行う例を示すが、これに限定されるものではなく、第3の事象や、第4の事象など多数の事象をシナリオテーブル20に設定してもよい。
【0048】
また、ネットワーク異常検知装置100は、第1の事象と第2の事象が発生し、かつ前記第1及び第2の事象の発生が所定の順序関係(時系列的な関係)を満足する場合に、シナリオエントリ21に設定された異常が観測対象ネットワーク200に発生したと判定する。
【0049】
シナリオエントリ21-1~21-Nは、フロー1のフロー条件22と、フロー1の閾値条件23と、フロー2のフロー条件24と、フロー2の閾値条件25と、フロー1とフロー2間のフロー関係条件26と、フロー1とフロー2間の時間関係条件27から構成される。
【0050】
シナリオエントリ21は、サイバーキルチェーンの手順等に対応して設定することができ、例えば、シナリオエントリ21-1には情報漏洩を検出するためのシナリオが設定され、シナリオエントリ21-2には、ボットネットを検出するためのシナリオが設定される。
【0051】
情報漏洩を検出するシナリオエントリ21-1としては、例えば、フロー1のフロー条件22として特定のサーバを送信元として、宛先が観測対象ネットワーク200内のPCへのフローで、フロー2のフロー条件24として観測対象ネットワーク200内のPCを送信元とし、宛先が外部の計算機へのフローで、フロー1の閾値条件23とフロー2の閾値条件25がバイト数で設定される。そして、フロー1とフロー2間のフロー関係条件26には、フロー1の宛先アドレスとフロー2の送信元アドレスが同一という条件が設定される。また、フロー1とフロー2間の時間関係条件27には、フロー1の後にフロー2が所定時間内に実行されるという時系列的な条件が設定される。
【0052】
シナリオエントリ21-1~21-Nは、フロー条件22~時間関係条件27の全ての条件で構成してもよいし、一部の条件で構成してもよい。シナリオエントリ21は、ネットワーク異常検知装置100の運用管理者が入力端末150経由でネットワーク異常検知装置100に設定する。
【0053】
異常検知プログラム40を実行するCPU1020は、メモリ1021内のシナリオテーブル20から全てのシナリオエントリ21を読み出して、各シナリオエントリ21に設定された条件に合致するフロー統計レコード51の組み合わせを、イベント収集バッファ30に格納されたフロー統計レコード51から抽出する。
【0054】
そして、CPU1020は、各シナリオエントリ21に設定された条件に合致すると判定したフロー統計レコード51を構成するフローを、観測対象ネットワーク200の異常発生として判定する。
【0055】
この際、CPU1020は、フロー統計情報DB50のフロー統計レコードについて、シナリオテーブル20のフロー1とフロー2間のフロー関係条件26と、フロー1とフロー2間の時間関係条件27に基づいて、時間的に先に発生したフロー1のフロー条件22と、フロー1の閾値条件23を満たすフローの判定を行う。
【0056】
すなわち、CPU1020は、フロー統計情報DB50のフロー統計レコードについて、フロー1のフロー条件22とフロー1の閾値条件23を満たすフローをフロー1としてイベント収集バッファ30に格納する。
【0057】
また、CPU1020は、フロー統計情報DB50のフロー統計レコードについて、フロー2のフロー条件24と、フロー2の閾値条件25と、フロー1とフロー2間のフロー関係条件26を満たすフロー2の判定を行う。
【0058】
そして、CPU1020は、次にフロー1と2間のフロー関係条件26を満たすフローをフロー2とする場合、更にフロー1と2間の時間関係条件27を満たすフロー2の判定を行い、いずれも満たしたフローをイベント収集バッファ30に登録する。
【0059】
上述の処理(ネットワーク異常検知アルゴリズム1)により、イベント収集バッファ30に登録されたフロー1とフロー2の組み合わせでネットワークの異常を検知する。CPU1020は、ネットワーク異常検知としたフロー1とフロー2を表示端末130で表示することで、ネットワーク異常検知装置100の運用管理者は観測対象ネットワーク200で異常を検知したフローを把握することができる。
【0060】
また、CPU1020は、観測対象ネットワーク200で異常を検知したフロー1とフロー2からSYSLOGを生成して可視化サーバ120に送信することで、ネットワーク異常検知システムの運用管理者はネットワークで異常を検知したフローを可視化サーバ120の表示端末140で把握することができる。
【0061】
図6は、SYSLOG DB70の一例を示す。本実施例1では、セキュリティ情報を送信するために用いられているCEF(Common Event Format)をSYSLOGに格納してネットワーク異常検知装置100が可視化サーバ120に送信する例である。
【0062】
SYSLOG DB70は、SYSLOGレコード1(70-1)と、SYSLOGレコード2(70-2)と、SYSLOGレコードN(70-N)から構成される。
【0063】
各SYSLOGレコード(70-1~70-N)は、SYSLOG71を含む。SYSLOG71において、「datetime」はSYSLOG71が生成された時刻を示す。「host」はSYSLOG71が生成されたホストのIPアドレスまたはホスト名を示す。「CEF:0」はCEFのバージョンを示す。「ALAXALA Networks」はネットワーク異常検知装置100のベンダ名を示す。「AX-XX」はネットワーク異常検知装置100の装置名を示す。「1.0」はネットワーク異常検知装置100のバージョンを示す。
【0064】
続いて、SYSLOG71の「0」はイベント種別IDを示す。「Abnormal flow」は検知されたネットワーク異常の種別名を示す。続く「3」はSeverityを示す。「rt」はネットワーク異常の発生時刻を示す。「dvc」はネットワーク異常が発生した検知装置のIPアドレスを示す。続いて「request」は検知されたネットワーク異常の詳細情報を格納したURLを示す。「deviceInboundInterface」はネットワーク異常の発生したVLAN情報または回線情報を示す。「smac」は検知されたネットワーク異常の送信元MACアドレスを示す。
【0065】
SYSLOG71は、その他、検知したネットワーク異常の宛先MACアドレスや、送信元IPアドレス、宛先IPアドレス、プロトコル、宛先ポート番号、送信元ポート番号、異常検知した閾値、閾値の種別、パケットレート、Byteレート、宛先IPアドレス異なり数、送信元IPアドレス異なり数、宛先MACアドレス異なり数、送信元MACアドレス異なり数等をSYSLOGにて表示してもよい。
【0066】
なお、宛先IPアドレス異なり数は、ネットワーク異常検知装置100が収集したフロー統計レコードに含まれる宛先IPアドレスの種類の数を示す。送信元IPアドレス異なり数等についても同様である。
【0067】
ネットワーク異常検知装置100が、図6のフォーマットで送信したSYSLOG71は、ネットワーク異常検知装置100に接続された表示端末1(130)で表示することができる。
【0068】
また、ネットワーク異常検知装置100が図6のフォーマットで送信したSYSLOG71を受信した可視化サーバ120は、SYSLOG71に格納されたネットワーク異常の情報をグラフィカルに可視化して、可視化サーバ120に接続された表示端末2(10)で表示することができる。
【0069】
次に、CPU1020が実行する異常検知プログラム40の処理の一例を図7A図7Bの示すフローチャートに示す。以下の説明では、CPU1020を処理の主体とするが、異常検知プログラム(異常検知部)40やネットワーク異常検知装置100が処理の主体であってもよい。
【0070】
ステップ1900では、所定の時間間隔毎Δt毎にCPU1020が処理を開始する。
【0071】
次のステップ1901では、CPU1020がフロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を検索してイベント収集バッファ30に格納する。
【0072】
次のステップ1902では、CPU1020がシナリオテーブル20を読み出す。次のステップ1903では、CPU1020がシナリオエントリ番号i=1とする。次のステップ1904では、CPU1020がシナリオテーブル20からシナリオエントリ番号i(i=1~I)に対応するシナリオエントリ21-1~21-Nを読み出す。なお、番号Iは、シナリオエントリ21の総数を示し、I=Nとなる。
【0073】
次のステップ1905では、CPU1020がイベント収集バッファ30に格納したフロー統計レコード51のうち、フロー1のフロー条件22と、フロー1の閾値条件23の2つの検索条件を満たすフロー統計レコード51を検索する。
【0074】
次のステップ1906では、CPU1020が上記検索条件(1905)を満たしたフロー統計レコード51の全てに番号j(j=1~J)を付与してフロー1としてイベント収集バッファ30に格納する。なお、番号Jは、フロー1が閾値を超えて発生したフロー統計レコード51の数の最大値である。
【0075】
次のステップ1907では、CPU1020がイベント収集バッファ30に格納したフロー統計レコード51のうち、フロー2のフロー条件24と、フロー2の閾値条件25の2つの検索条件を満たすフロー統計レコード51を検索する。
【0076】
次のステップ1908では、CPU1020が上記検索条件(1907)を満たしたフロー統計レコード51の全てに番号k(k=1~K)を付与してフロー2としてイベント収集バッファ30に格納する。なお、番号Kは、フロー2が閾値を超えて発生したフロー統計レコード51の数の最大値である。
【0077】
上記処理によって、イベント収集バッファ30には、シナリオエントリ21-iのフロー1(事象1)とフロー2(事象2)がそれぞれの閾値条件を超えたフロー統計レコード51に番号kが付与されて格納される。
【0078】
次のステップ1909では、CPU1020がフロー統計レコード51の番号j=1とする。
【0079】
次に図7Bのステップ1910では、CPU1020がフロー統計レコード51の番号jをフロー1の番号として、フロー1とフロー2間のフロー関係条件26と、フロー1とフロー2間の時間関係条件27を満たすフロー統計レコード51をフロー2から検索する。
【0080】
すなわち、CPU1020は、イベント収集バッファ30に格納されたフロー統計レコード51のうち、フロー1の番号jについてフロー関係条件26と時間関係条件27を満足するフロー2のレコードを検索する。
【0081】
次のステップ1911では、CPU1020が上記検索条件(1910)を満たしたフロー統計レコード51の全てについて、番号l(l=1~L)を付与し、フロー1のフロー統計レコード51の番号jに対応するフロー2のフロー統計レコード51の番号kとしてイベント収集バッファ30に格納する。なお、番号Lは、番号jのフロー統計レコード51とフロー1、2間のフロー関係条件26と時間関係条件27を満足するレコードの数の最大値である。
【0082】
次のステップ1912では、CPU1020がフロー1のフロー統計レコード51の番号jとフロー2のフロー統計レコード51の番号lの組み合わせでネットワーク異常検知する。
【0083】
すなわち、CPU1020は、イベント収集バッファ30のフロー統計レコード51のうち、フロー1(事象1)が閾値を超えた番号jのフロー統計レコード51と、フロー2(事象2)が閾値を超え、かつ、フロー1、2間の相関関係が上記ステップ1910の検索条件を満たす番号lのフロー統計レコード51の組み合わせが、番号iのシナリオエントリ21の異常に該当するか否かを判定する。
【0084】
CPU1020は、異常を判定した場合、番号iのシナリオエントリ21の異常を表示端末130に出力し、SYSLOG71を生成する。あるいは、CPU1020は、異常を判定した番号iのシナリオエントリ21と番号j、lのフロー統計レコード51をメモリ1021に保持し、図7A図7Bの処理が完了した後に、異常の報知を表示端末130へ出力するようにしてもよい。
【0085】
次に、ステップ1913の判定では、CPU1020が、番号jが最大値Jより小さいか否かを判定する。ステップ1913の判定結果がYESの場合には、次のステップ1914で、CPU1020が番号jに1を加算して、ステップ1910に戻って上記処理を繰り返す。
【0086】
一方、ステップ1913の判定結果がNOの場合は、次のステップ1915で、CPU1020は、シナリオエントリ21の番号iがIより小さいか否かを判定する。ステップ1915の判定結果がYESの場合は、次のステップ1916に進んで、番号iに1を加算して、上記ステップ1904に戻って上記処理を繰り返す。一方、ステップ1915の判定結果がNOの場合は、全てのシナリオエントリ21について処理が完了したので、異常検知プログラム40を終了する。
【0087】
上記処理によって、ネットワーク異常検知装置100は、フロー統計情報DB50に蓄積されたフロー統計レコード51について、シナリオテーブル20のシナリオエントリ21毎に定義された複数の事象が順次発生したか否かを判定することが可能となる。
【0088】
これにより、ネットワーク異常検知装置100は、複数のフローに関する事象を時系列の順で各々検知して、検知した各フローに関する事象が所定の順序で発生する異常を確実に検知することが可能となる。
【0089】
ネットワーク異常検知装置100は、サイバーキルチェーンの、偵察、武器化、デリバリエクスプロイト、インストール、C&C(Command and Control)、目的実行の各手順をシナリオエントリ21で定義しておくことで、観測対象ネットワーク200の異常または異常の予兆を検知することが可能となる。
【0090】
本実施例1では、ネットワーク異常検知装置100が、シナリオエントリ21毎にフロー条件22と閾値条件23を満たすフロー統計レコード51をフロー1として番号jを付与してイベント収集バッファ30に格納する。さらに、ネットワーク異常検知装置100は、フロー条件24と閾値条件25を満たすフロー統計レコード51をフロー2として番号kを付与してイベント収集バッファ30に格納する。
【0091】
そして、ネットワーク異常検知装置100は、フロー1のフロー統計レコード51の番号jについて、フロー関係条件26と時間関係条件27を満たすフロー2について異常の検知を行う。
【0092】
これにより、フロー条件22を満たして閾値条件23を超えるフロー統計レコード51がフロー1として検知されると、ネットワーク異常検知装置100は、フロー条件24を満たして閾値条件25を超えるフロー統計レコード51をフロー2として検知する。そして、フロー関係条件26と時間関係条件27を満たすフロー1とフロー2のペアを異常が検知されたフローとして特定することができる。
【0093】
本実施例1では、フロー1とフロー2の2つの事象をシナリオテーブル20に設定する例を示したが、3つ以上の事象(フロー)についてもシナリオテーブル20へ定義しておくことで、複雑な手順の異常についても検出することが可能となる。
【0094】
なお、時間順序を逆に辿って観測対象ネットワーク200の異常を判定する別のアルゴリズムとして、CPU1020が、フロー2のフロー条件24とフロー2の閾値条件25を満たすフローの判定を行い、次にフロー2のフロー条件24とフロー2の閾値条件25を満たすフローをフロー2としてイベント収集バッファ30に格納する。
【0095】
そして、CPU1020は、フロー1のフロー条件22とフロー1の閾値条件23とフロー1とフロー2間のフロー関係条件26を満たすフロー1の判定を行い、次にフロー1と2間のフロー関係条件26を満たすフローをフロー1とする場合は、更にフロー1とフロー2間の時間関係条件27を満たすフロー1の判定を行い、いずれの条件も満たしたフローをフロー1としてイベント収集バッファ30に登録する。
【0096】
フロー1とフロー2の時間順序を逆に辿って判定する上述のネットワーク異常検知アルゴリズムにより、イベント収集バッファ30に登録されたフロー1とフロー2の組み合わせで観測対象ネットワーク200の異常を検知することもできる。
【0097】
ネットワーク異常検知としたフロー1とフロー2を表示端末130で表示することで、ネットワーク異常検知装置100の運用管理者は、ネットワーク異常検知したフローを把握することができる。
【0098】
または、ネットワーク異常検知としたフロー1とフロー2をsyslogに格納して可視化サーバ120に送信することで、ネットワーク異常検知システムの運用管理者はネットワーク異常検知したフローを把握することができる。
【0099】
CPU1020が実行する異常検知プログラム40の処理の変形例を図8A図8Bのフローチャートに示す。図8A図8Bのフローチャートは、上述のように、フロー1とフロー2の時間順序を逆に辿って判定する処理を示し、その他については上記図7A図7Bと同様である。
【0100】
ステップ2000では、所定の時間間隔毎Δt毎にCPU1020が処理を開始する。次のステップ2001では、CPU1020がフロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を検索してイベント収集バッファ30に格納する。
【0101】
次のステップ2002~2004では、CPU1020がシナリオテーブル20を読み出し、シナリオエントリ番号i=1とし、シナリオテーブル20からシナリオエントリ番号i(i=1~I)に対応するシナリオエントリ21-iを読み出す。
【0102】
次のステップ2005では、イベント収集バッファ30に格納したフロー統計レコード51のうちフロー2のフロー条件22と、フロー2の閾値条件25を満たすフロー統計レコード51を検索する。
【0103】
次のステップ2006では、CPU1020が上記検索条件(2005)を満たしたフロー統計レコード51の全てに番号j(j=1~J)を付与してフロー2としてイベント収集バッファ30に格納する。なお、番号Jは、フロー2が閾値を超えて発生したフロー統計レコード51の数(最大値)である。
【0104】
次のステップ2007では、CPU1020がイベント収集バッファ30に格納したフロー統計レコード51のうち、フロー1のフロー条件22と、フロー1の閾値条件23の2つの検索条件を満たすフロー統計レコード51を検索する。
【0105】
次のステップ2008では、CPU1020が上記検索条件(2007)を満たしたフロー統計レコード51の全てに番号k(k=1~K)を付与してフロー1としてイベント収集バッファ30に格納する。なお、番号Kは、フロー1が閾値を超えて発生したフロー統計レコード51の数の最大値である。
【0106】
次のステップ2009では、CPU1020がフロー統計レコード51の番号j=1とする。
【0107】
次に図8Bのステップ2010では、CPU1020がフロー統計レコード51の番号jをフロー2の番号として、フロー1とフロー2間のフロー関係条件26と、フロー1とフロー2間の時間関係条件27を満たすフロー統計レコード51をフロー1から検索する。
【0108】
次のステップ2011では、CPU1020が上記検索条件(2010)を満たしたフロー統計レコード51の全てについて、番号l(l=1~L)を付与し、フロー2のフロー統計レコード51の番号jに対応するフロー1のフロー統計レコード51の番号kとしてイベント収集バッファ30に格納する。なお、番号Lは、番号jのフロー統計レコード51とフロー1、2間のフロー関係条件26と時間関係条件27を満足するレコードの数の最大値である。
【0109】
次のステップ2012では、CPU1020がフロー2のフロー統計レコード51の番号jとフロー1のフロー統計レコード51の番号lの組み合わせでネットワーク異常検知する。この処理は、図7Bのステップ1912と同様である。
【0110】
次に、ステップ2013の判定では、CPU1020が、番号jが最大値Jより小さいか否かを判定する。ステップ2013の判定結果がYESの場合には、次のステップ2014で、CPU1020が番号jに1を加算して、ステップ2010に戻って上記処理を繰り返す。
【0111】
一方、ステップ2013の判定結果がNOの場合は、次のステップ2015で、CPU1020は、シナリオエントリ21の番号iがIより小さいか否かを判定する。ステップ2015の判定結果がYESの場合は、次のステップ2016に進んで、番号iに1を加算して、上記ステップ2004に戻って上記処理を繰り返す。一方、ステップ2015の判定結果がNOの場合は、全てのシナリオエントリ21について処理が完了したので、異常検知プログラム40を終了する。
【0112】
なお、CPU1020がイベント収集バッファ30に格納するフロー統計レコード51の情報は、シナリオエントリ21の判定に必要な情報に限定することで、フロー統計DB50から読み出すフロー統計レコード51の情報量と、イベント収集バッファ30の容量を削減することが可能となり、異常検知の高速化と負荷軽減を実現できる。
【0113】
図9は、実施例1の変形例を示し、ネットワーク異常検知装置100を用いたネットワーク異常検知システムのブロック図を示す。本変形例の観測対象ネットワーク200では、パケット中継装置160がフロー統計機能を有する。パケット中継装置160は、観測対象ネットワーク200のトラフィックを収集してフロー統計情報を生成して、ネットワーク異常検知装置100へ送信する。
【0114】
パケット中継装置160で行われるフロー統計情報の取得には、前記非特許文献2に示したRFC3954のNetFlowを用いてもよい。ネットワーク異常検知装置100は、図1と同様の処理を行なう。
【0115】
つまり、ネットワーク異常検知装置100は、パケット中継装置160から受信したフロー統計情報に基づいて、観測対象ネットワーク200の異常の有無を分析し、ネットワークの異常を検知すると、検知したネットワークの異常に関する情報をネットワーク異常検知装置100に接続された表示端末130で表示する。
【0116】
また、ネットワーク異常検知装置100は、検知したネットワーク異常に関する情報をSYSLOGとして可視化サーバ120に送信する。可視化サーバ120は、他のセキュリティ装置とも接続することができるため、他の装置で取得した通信の情報や、インシデント情報と連携させてネットワーク異常検知装置100で取得したネットワークの異常に関する情報を表示することができる。
【0117】
これにより、例えば、ネットワーク異常検知装置100は検知したネットワークの異常の発生箇所や、当該ネットワークの異常の発生前後の通信情報やインシデント情報を表示端末130に表示することができ、より多角的なネットワーク異常の情報表示が可能となる。
【0118】
図20は、シナリオテーブル20のシナリオエントリ21を編集(追加や削除)するユーザインタフェースの一例を示す。
【0119】
ネットワーク異常検知装置100の運用管理者が入力端末150経由でシナリオエントリ21の追加や削除のコマンドを入力すると、CPU1020がコマンドを受け付けて、表示端末130に追加コマンド13011~13013と、追加コマンドの結果1302と、削除コマンド1303と、削除コマンド結果1304を表示する。なお、表示端末130の画面の「#」は、コマンドプロンプトである。
【0120】
追加コマンドは、シナリオテーブル20にleakage(情報漏洩)というシナリオエントリ21を追加することを示すコマンド(13011)と、leakageの1stイベント(seq 1)のフロー条件は送信元IPアドレスが192.168.1.101で、宛先IPアドレスが任意(any)、閾値種別(thr-type)をByte数(bytes)として10000Byteを超過であることを示すコマンド(13012)と、leakageの2ndイベント(seq 2)のフロー条件は、送信元IPアドレスがseq1で検知した任意のIPアドレス(any(sip(seq1)))で、宛先IPアドレスが192.0.2.1で、閾値種別をByte数(bytes)として10000Bytesを超過し、1stイベントから2ndイベント発生までの期間(duration)が3分(3m)以内であることを示すコマンド(13013)から構成される。
【0121】
コマンドには、フロー1のフロー条件22、フロー2のフロー条件24の例として、IPバージョン53を特定の値とする条件や、送信元IPアドレス54と宛先IPアドレス55の両方または一方を特定の値または特定の範囲の値とする条件や、プロトコル56を特定の値とする条件や、送信元ポート番号57と宛先ポート番号58の両方または片方を特定の値とする条件等が含まれる。
【0122】
フロー1の閾値条件23または、フロー2の閾値条件25の例としては、パケット数59が特定の値以上または以下とする条件や、Byte数60特定の値以上または以下とする条件や、単位時間当たりのパケット数(パケットレート)が特定の値以上または以下とする条件や、単位時間当たりのByte数(Byteレート)が特定の値以上または以下とする条件や、特定の送信元IPアドレス54を含む複数のフロー統計レコード51において異なる宛先IPアドレス55の数(以降、宛先IPアドレス異なり数と呼ぶ)を特定の値以上または以下とする条件や、特定の宛先IPアドレス55を含む複数のフロー統計レコード51において異なる送信元IPアドレス54の数(以降、送信元IPアドレス異なり数と呼ぶ)が特定の値以上または以下とする条件等が含まれる。
【0123】
フロー1とフロー2間のフロー関係条件26の例としては、フロー1とフロー2の送信元IPアドレス54が一致する条件や、フロー1とフロー2の宛先IPアドレス55が一致する条件や、フロー1の宛先IPアドレス55とフロー2の送信元IPアドレス54が一致する条件や、フロー1の送信元IPアドレス54とフロー2の宛先IPアドレス553が一致する条件等が含まれる。
【0124】
フロー1とフロー2間の時間関係条件27の例としては、フロー1のフロー開始時刻61よりフロー2のフロー開始時刻61が遅い条件や、フロー1のフロー開始時刻61よりフロー2のフロー開始時刻61が早い条件や、フロー1のフロー開始時刻61よりフロー2のフロー開始時刻61が一定時間の範囲で遅い条件や、フロー1のフロー開始時刻61よりフロー2のフロー開始時刻61が一定時間の範囲で早い条件等が含まれる。
【0125】
CPU1020が観測対象ネットワーク200の異常を検知すると、CPU1020は異常を検知したフローの情報を格納したSYSLOG71を生成し、生成したSYSLOG71をSYSLOG DB70に格納する。
【0126】
CPU1020は、所定の時間間隔ΔTまたはネットワーク異常検知装置100の運用管理者が設定した時間間隔でSYSLOG DB70を読み出して、装置外へ未送信のSYSLOG71があれば、未送信のSYSLOG71を接続インタフェース103経由でパケット転送処理部101へ送信する。
【0127】
接続インタフェース103はSYSLOG71の受信をCPU1010へ通知し、CPU1010はSYSLOG71をIPパケット化してメモリ1011のパケットバッファ1030に格納し、パケット送受信部1012にてイーサフレーム化してから送信する。
【0128】
以上のように、実施例1では、ネットワーク異常検知装置100が、複数のフローに関する事象を時系列の順で各々検知して、検知した各フローに関する事象が所定の順序で発生する観測対象ネットワーク200の異常または異常の兆候を確実に検知することが可能となる。
【0129】
なお、上記実施例1では、ネットワーク異常検知装置100の内部で、パケット転送処理部101とネットワーク異常検知部102が分離した構成を示したが、一体で構成されてもよい。この場合、パケット送受信部1012と、パケットバッファ1030を、ネットワーク異常検知部102に統合すればよい。
【0130】
また、上記実施例1では、異常検知プログラム40が、所定の時間間隔毎に直前の時間間隔のフロー統計レコード51をフロー統計情報DB50から抽出して、観測対象ネットワーク200の異常を検知する例を示したが、ネットワーク異常検知装置100の利用者が指定した期間のフロー統計レコード51について、異常の検知を行ってもよい。
【0131】
また、上記実施例1では、異常検知プログラム40が、検知した観測対象ネットワーク200で異常が発生した情報をSYSLOGとして可視化サーバ120に出力する例を示したが、SYSLOGに代わってログメッセージを外部へ出力してもよい。
【実施例2】
【0132】
本発明の実施例2として、本発明のネットワーク異常検知装置100で情報漏洩の検知を行う例について説明する。
【0133】
図10は、本発明のネットワーク異常検知装置100を用いた情報漏洩検知を実現するネットワーク異常検知システムの構成の一例を示すブロック図である。
【0134】
観測対象ネットワーク200は、マルウェアに感染した感染端末210と、ファイルサーバ220と、感染端末210とファイルサーバ220を接続するスイッチ230と、スイッチ230が中継する通信をミラーするミラーポート231と、スイッチ230に接続されたルータ240から構成される。また、情報漏洩を実行する攻撃者が管理するC&Cサーバ400は観測対象ネットワーク200の外部から接続され、感染端末210に対する命令を発行して感染端末210を操作することができる。
【0135】
感染端末210が、ファイルサーバ220から機密情報等のファイルを奪取して攻撃者のC&Cサーバ400へ情報漏洩する場合の通信を説明する。なお前提として、感染端末210はマルウェアに感染しており、攻撃者はC&Cサーバ400から感染端末210を操作することが可能であり、攻撃者は感染端末210を操作することによって観測対象ネットワーク200のネットワーク構成や、サーバ構成を把握しているものとする。
【0136】
感染端末210は、ファイルサーバ220から機密情報ファイルをダウンロードする。感染端末210は、ダウンロードした機密情報ファイルをC&Cサーバ400へ送信することで、機密情報ファイルが攻撃者に漏洩される。
【0137】
図11は、上述の情報漏洩が発生した場合の観測対象ネットワーク200において時系列で発生するフローの一例を示すシーケンス図である。
【0138】
上述の情報漏洩が発生する場合、まず、感染端末210がファイルサーバ220の機密情報ファイルを受信する通信が開始する(F1)。次に、感染端末210が外部のC&Cサーバ400に対し機密情報ファイルを送信する通信が開始される(F2)。
【0139】
情報漏洩に関する上述のフローの時間関係に関する条件は、ファイルサーバ220を送信元IPアドレス、感染端末210を宛先IPアドレスとするフロー1(図中F1)が発生し、フロー1の発生後に、感染端末210を送信元IPアドレスとし、C&Cサーバ400を宛先IPアドレスとするフロー2(図中F2)が発生する、という事象が含まれる。
【0140】
また情報漏洩に関する上述のフローの関係に関する条件として、フロー1の宛先IPアドレスと、フロー2の送信元IPアドレスは一致する、という事象が含まれる。
【0141】
フロー1のフロー条件22としては、送信元IPアドレス=ファイルサーバ220(一般化すると、情報漏洩元として監視対象とするIPアドレス)、宛先IPアドレスとなる感染端末のIPアドレスは未知であるから、宛先IPアドレス=任意となる。情報漏洩元として想定するIPアドレスを特定しない場合は、送信元IPアドレス=任意としてもよい。
【0142】
フロー2のフロー条件24としては、送信元IPアドレスとなる感染端末のIPアドレスは未知であるから、送信元IPアドレス=任意、宛先IPアドレスとなるC&CサーバのIPアドレスは未知であるから、宛先IPアドレス=任意となる。
【0143】
なお、C&Cサーバ400のIPアドレスには、既知のC&Cサーバ400のアドレスリストに登録されたIPアドレスを適用してもよい。既存のC&Cサーバ400のアドレスリストがある場合は、既存のC&Cサーバ400に関するフロー2のアドレスを特定できる。
【0144】
本実施例2では、情報漏洩を検知するアルゴリズムとして実施例1で説明した時間順序を逆に辿って判定する変形例で判定する方が、実施例1の図7A図7Bより判定対象となるフロー統計レコード51を削減することができる。したがって、情報漏洩検知の負荷を低減して効率化することができ、情報漏洩検知を高速化することができる。
【0145】
本実施例2では、前記実施例1のアルゴリズム1(図7A図7B)とアルゴリズム2(図8A図8B)を組み合わせたアルゴリズムを情報漏洩検知アルゴリズムとして、ネットワーク異常検知装置100の異常検知プログラム40で実行する例を示す。
【0146】
既存のC&Cサーバ400のアドレスリストに記載されるアドレスに関しては、ネットワーク異常検知装置100が、上述のアルゴリズム2で判定し、未知のC&Cサーバを想定した情報漏洩検知は上述のアルゴリズム1で判定することで、未知のC&Cサーバと既知のC&Cサーバに対して効率よく対応することができる。情報漏洩検知アルゴリズムについては、情報漏洩検知のシナリオテーブルにおけるシナリオエントリ21について説明した後に詳述する。
【0147】
フロー1の閾値条件としては、フロー1のByte数>機密情報ファイルのByte数という条件と、フロー2のByte数>機密情報ファイルのByte数という条件となる。なお、必要に応じて閾値はパケット数、Byteレート、パケットレートとしてもよい。
【0148】
閾値に対して比較対象とする検知パラメタであるByte数の測定対象となる時間範囲は、ネットワーク異常検知装置100の運用管理者の設定により、検知パラメタの対象とすべきフロー開始時刻61の時間範囲を調整することで変更可能とする。
【0149】
また、閾値が低すぎて情報漏洩していないフローを誤検知してしまう場合には、閾値を上げて調整することにより誤検知を低減することができる。逆に閾値が高すぎて情報漏洩検知できない場合には、閾値を下げて調整することができる。情報漏洩検知に適切な閾値を設定するためには、ネットワーク異常検知装置100の運用開始時に、ネットワーク異常の発生していない正常状態における検知パラメタであるByte数またはパケット数またはByteレートまたはパケットレートを監視して、ネットワーク異常検知装置100の運用管理者が適切な閾値を検討して設定する必要がある。
【0150】
これらの条件を後述するシナリオテーブル20に設定することで、CPU1020がシナリオテーブル20を参照し、フロー統計DB50からフロー統計レコード51を読み出してイベント収集バッファ30に格納したフロー統計レコード51のうち、シナリオテーブル20の設定条件に一致するフロー統計レコード51を判定することで、情報漏洩を検知することができる。
【0151】
図12A図12Bは、情報漏洩が発生した場合のフロー1、フロー2のネットワークの帯域変動の例を示すグラフである。フロー1とフロー2におけるピークは各々機密情報ファイルのByte数に相当するピークであり、フロー1(図12A)のピークの方がフロー2(図12B)のピークより時間的に先に発生する。
【0152】
図13は、情報漏洩検知におけるシナリオテーブル20におけるシナリオエントリ21の例を示す。
【0153】
シナリオエントリ21は、フロー1のフロー条件22として送信元IPアドレス(Source IP、以下SIP)=ファイルサーバのIPアドレスと、宛先IPアドレス(Destination IP、以下DIP)=d.c.(任意)の値が設定される。
【0154】
フロー1の閾値条件23としては、Byte数>1GByte、という条件が設定される。フロー2のフロー条件24としては、SIP=任意、DIP=観測対象ネットワーク外のIPアドレス、という条件が設定される。
【0155】
フロー2の閾値条件25としては、Byte数>1GByte、という条件が設定される。フロー1とフロー2間のフロー関係条件26としては、フロー1のDIP=フロー2のSIP、という条件が設定される。
【0156】
フロー1とフロー2間の時間関係条件27としては、フロー1のフロー開始時刻<フロー2のフロー開始時刻<フロー1のフロー開始時刻+1時間、という条件が設定される。
【0157】
これにより、ファイルサーバ220から感染端末の疑いのある任意のIPアドレス宛に1GByteを超えるフロー1が発生し、フロー1が発生してから1時間以内にフロー1の宛先IPアドレスを送信元IPアドレスとして観測対象ネットワーク200の外部のIPアドレス宛に発生したフロー2を検知することが可能となり、情報漏洩の疑いのある通信を検知することができる。
【0158】
なお、フロー2のDIPとなる観測対象ネットワーク200の外部のIPアドレスには、既存のC&Cサーバ400のアドレスリストに登録されたIPアドレスを適用してもよい。
【0159】
CPU1020が実行する異常検知プログラム40の情報漏洩検知アルゴリズムを図14A図14Dに示す。
【0160】
ステップ2100では、所定の時間間隔毎Δt毎にCPU1020が処理を開始する。次のステップ2140では、CPU1020が、フロー統計情報DB50と既知のアドレスリストを参照して、フロー統計レコード51にIPアドレスが既知のC&Cサーバがあるか否かを判定する。なお、既知のC&Cサーバ400のアドレスリストは、図示はしないが、予めハードディスク1022等に格納されているものとする。
【0161】
ステップ2140の判定結果がNOの場合はステップ2101へ進み、YESの場合は図14Cのステップ2141へ進む。
【0162】
既知のC&Cサーバ400のIPアドレスが存在しないステップ2101では、CPU1020が、フロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を読み出して、イベント収集バッファ30に格納する。
【0163】
次のステップ2102~2104では、CPU1020がシナリオテーブル20を読み出し、シナリオエントリ番号i=1とし、シナリオテーブル20からシナリオエントリ番号i(i=1~I)に対応するシナリオエントリ21-iを読み出す。
【0164】
次のステップ2105では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうちフロー1のフロー条件22が、SIP=ファイルサーバ220のIPアドレスと、フロー1の閾値条件23がフロー1のByte数>機密情報ファイルのByte数を満たすフロー統計レコード51を検索する。
【0165】
次のステップ2106では、CPU1020が上記検索条件(2105)を満たしたフロー統計レコード51の全てに番号j(j=1~J)を付与してフロー1としてイベント収集バッファ30に格納する。なお、番号Jは、フロー1が閾値を超えて発生したフロー統計レコード51の数(最大値)である。
【0166】
次のステップ2107では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうちフロー2のフロー条件24の、DIP=観測対象ネットワーク外のIPアドレスと、フロー2の閾値条件25のフロー2のByte数>機密情報ファイルのByte数を満たすフロー統計レコード51を検索する。
【0167】
次のステップ2108では、CPU1020が、上記検索条件(2105)を満たしたフロー統計レコード51の全てに番号k(k=1~K)を付与してフロー2としてイベント収集バッファ30に格納する。
【0168】
次に図14Bのステップのステップ2109では、CPU1020が、フロー統計レコード51の番号j=1とする。
【0169】
次にステップ2110では、CPU1020が、フロー統計レコード51の番号jをフロー1とし、フロー1と2間のフロー関係条件26が、フロー1のDIP=フロー2のSIPで、フロー1とフロー2間の時間関係条件27が、フロー1のフロー開始時刻<フロー2の開始時刻<フロー1の開始時刻+1時間、を満たすフロー統計レコード51をフロー2から検索する。
【0170】
次のステップ2111では、CPU1020が、上記検索条件(2110)を満たしたフロー統計レコード51の全てに番号l(l=1~L)を付与して、フロー1のフロー統計レコード51の番号jに対応するフロー2のフロー統計レコード51の番号lとしてイベント収集バッファ30に格納する。
【0171】
次のステップ2112では、CPU1020が、フロー1のフロー統計レコード51の番号jと、フロー2のフロー統計レコード51の番号lの組み合わせでネットワークの異常を検知する。この処理は、前記実施例1の図7Bに示したステップ1912と同様である。
【0172】
次に、ステップ2113の判定では、CPU1020が、番号jが最大値Jより小さいか否かを判定する。ステップ2113の判定結果がYESの場合には、次のステップ2114で、CPU1020が番号jに1を加算して、ステップ2110に戻って上記処理を繰り返す。
【0173】
一方、ステップ2113の判定結果がNOの場合は、次のステップ2115で、CPU1020は、シナリオエントリ21の番号iが最大値Iより小さいか否かを判定する。ステップ2115の判定結果がYESの場合は、次のステップ2116に進んで、番号iに1を加算して、上記図14Aのステップ2104に戻って上記処理を繰り返す。一方、ステップ2115の判定結果がNOの場合は、全てのシナリオエントリ21について処理が完了したので、異常検知プログラム40を終了する。
【0174】
一方、図14Aのステップ2140の判定結果がYESの場合、CPU1020は、図14Cのステップ2141へ進み、C&Cサーバ400の番号m=1とする。
【0175】
次にステップ2142では、CPU1020が、C&Cサーバの番号m(m=1~M)宛の通信をフロー2として情報漏洩検知の判定を開始する。なお、Mはステップ2140で取得したC&Cサーバ400の総数(最大値)を示す。
【0176】
次のステップ2121では、CPU1020が、フロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を取得してイベント収集バッファ30に格納する。
【0177】
次のステップ2122~2124では、CPU1020が、シナリオテーブル20を読み出し、シナリオエントリ番号i=1とし、シナリオエントリi(i=1~I)に対応するシナリオエントリ21をシナリオテーブル20から読み出す。
【0178】
次のステップ2125では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうちフロー2のフロー条件24が、DIP=C&CサーバmのIPアドレスと、フロー2の閾値条件25がフロー2のByte数>機密情報ファイルのByte数を満たすフロー統計レコード51を検索する。
【0179】
次のステップ2126では、CPU1020が、上記検索条件(2125)を満たすフロー統計レコード51の全てについて番号k(k=1~K)を付与し、フロー2としてイベント収集バッファ30に格納する。
【0180】
次のステップ2127では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうちフロー1のフロー条件22が、SIP=ファイルサーバのIPアドレスで、フロー1の閾値条件23が、フロー1のByte数>機密情報ファイルのByte数を満たすフロー統計レコード51を検索する。
【0181】
次のステップ2128では、CPU1020が、上記検索条件(2127)を満足するフロー統計レコード51の全てに番号j(j=1~J)を付与し、フロー1としてイベント収集バッファ30に格納する。
【0182】
次に図14Dのステップ2129では、CPU1020が、フロー統計レコード51の番号k=1とする。
【0183】
次のステップ2130では、CPU1020が、フロー統計レコード51の番号kをフロー2とし、フロー1とフロー2間のフロー関係条件26が、フロー1のDIP=フロー2のSIPで、フロー1とフロー2間の時間関係条件27が、フロー1のフロー開始時刻<フロー2の開始時刻<フロー1の開始時刻+1時間、を満たすフロー統計レコード51をフロー1から検索する。
【0184】
次のステップ2131では、CPU1020が、上記検索条件(2130)を満たすフロー統計レコード51の全てについて、番号l(l=1~L)を付与し、フロー2のフロー統計レコード51の番号kに対応するフロー1のフロー統計レコード51の番号lとしてイベント収集バッファ30に格納する。
【0185】
次のステップ2132では、CPU1020が、フロー1のフロー統計レコード51の番号jと、フロー2のフロー統計レコード51の番号lの組み合わせでネットワークの異常を検知する。この処理は、前記実施例1の図7Bに示したステップ1912と同様である。
【0186】
次に、ステップ2133の判定では、CPU1020が、番号kが最大値Kより小さいか否かを判定する。ステップ2133の判定結果がYESの場合には、次のステップ2134で、CPU1020が番号kに1を加算して、ステップ2130に戻って上記処理を繰り返す。
【0187】
一方、ステップ2133の判定結果がNOの場合は、次のステップ2135で、CPU1020は、シナリオエントリ21の番号iが最大値Iより小さいか否かを判定する。ステップ2135の判定結果がYESの場合は、次のステップ2136に進んで、番号iに1を加算して、上記図14Cのステップ2124に戻って上記処理を繰り返す。一方、ステップ2135の判定結果がNOの場合は、次のステップ2137で、CPU1020は、C&Cサーバ400の番号mが最大値Mより小さいか否かを判定する。
【0188】
ステップ2137の判定結果がYESの場合は、CPU1020が、次のステップ2138に進んで、番号mに1を加算して、上記図14Cのステップ2142へ戻って上記処理を繰り返す。一方、ステップ2137の判定結果がNOの場合は、CPU1020が、図14Aのステップ2101へ進んで、上記処理を実行する。
【0189】
以上のように、実施例2のネットワーク異常検知装置100は、既知のC&Cサーバ400のIPアドレスがフロー統計レコード51に含まれていない場合には、前記実施例1と同様に、フロー1からフロー2の順序で異常の検知を行うアルゴリズム1(図7A図7B)を実行する。一方、既知のC&Cサーバ400のIPアドレスがフロー統計レコード51に含まれている場合、ネットワーク異常検知装置100は、フロー2からフロー1の順序で異常の検知を行うアルゴリズム2(図8A図8B)を実行した後にアルゴリズム1(図7A図7B)を実行してからを実施する。
【0190】
これにより、ネットワーク異常検知装置100は、判定対象となるフロー統計レコード51を削減して、複数のフローに関する事象を時系列の順で各々検知して、検知した各フローに関する事象が所定の順序で発生する情報漏洩を確実に検知することが可能となる。
【実施例3】
【0191】
本発明の実施例3として、本発明のネットワーク異常検知装置100を用いてボットネットを検知する例を説明する。ボットネットの活動形態に関しては、前記非特許文献5や非特許文献6等に記載されるとおりである。
【0192】
図15は、本発明のネットワーク異常検知装置100を用いたボットネットの検知を実現するネットワーク異常検知システムの構成の一例を示すブロック図である。
【0193】
観測対象ネットワーク200は、感染端末1(210-1)と感染端末2(210-2)、及び感染端末N(210-N)から構成されるボットネットと、DNSサーバ221と、ボットネットとDNSサーバ221を接続するスイッチ230と、ルータ240から構成される。スイッチ230は、スイッチ230が中継する通信をミラーするミラーポート231を有する。
【0194】
また、ボットネットを操作する攻撃者が管理するC&Cサーバ400は、観測対象ネットワーク200の外部から接続され、感染端末210に対する命令を発行して感染端末210を操作することができる。
【0195】
ボットネットが攻撃活動を開始する場合、攻撃命令を発行するC&Cサーバ400との通信を確立するため、まずボットネットに属する感染端末1(210-1)~感染端末N(210-N)がほぼ同時にDNSサーバ221にアクセスしてC&Cサーバ400のIPアドレスの取得を試みる。
【0196】
次に、DNSサーバ221へのアクセスの結果、C&Cサーバ400のIPアドレスを取得したボットネットに属する感染端末1(210-1)~感染端末N(210-N)は、コールバック通信と呼ばれるC&Cサーバ400に攻撃命令を要求する通信を行なう。
【0197】
コールバック通信では、ボットネットに属する感染端末1(210-1)~感染端末N(210-N)がほぼ同時にC&Cサーバ400にアクセスする。従って、ボットネットからDNSサーバ221に対する同時アクセスと、この後に発生するボットネットからC&Cサーバ400に対する同時アクセスをネットワーク異常検知装置100で検知することが可能になると、ボットネットの存在が疑われる通信を検知することができる。
【0198】
図16は、上述のボットネットによる攻撃活動が発生した場合の観測対象ネットワーク200において時系列に発生するフローの一例を示すシーケンス図である。
【0199】
上述のボットネットによる攻撃活動が発生する場合、まず、感染端末1(210-1)~感染端末N(210-N)からDNSサーバ221に対しC&Cサーバ400のドメインネームからIPアドレスの取得を要求する通信が、一斉に開始される(フロー1~N)。
【0200】
感染端末1(210-1)~感染端末N(210-N)がDNSサーバ221へのアクセスの結果、C&Cサーバ400のIPアドレスを取得する。次に、感染端末1(210-1)~感染端末N(210-N)は、C&Cサーバ400に対するコールバック通信を一斉に開始する(フローN+1~2N)。
【0201】
ボットネットによる攻撃活動に関する上述のフローの時間関係に関する条件(27)として、感染端末1(210-1)~感染端末N(210-N)のN個の異なる送信元IPアドレス54と、DNSサーバ221を宛先IPアドレス55とするフロー1~Nが発生する。そして、フロー1~Nの発生後に、感染端末1(210-1)~感染端末N(210-N)を送信元IPアドレス54とし、C&Cサーバ400を宛先IPアドレス55とするフローN+1~2Nが発生する、という事象が含まれる。
【0202】
またボットネットによる攻撃活動に関する上述のフローの関係に関する条件(26)として、フロー1~Nの送信元IPアドレス54と、フローN+1~2Nの送信元IPアドレス54のうちN個以上の送信元IPアドレス54が一致する、という事象が含まれる。ただし、異常検知の判定に本条件を含めると、CPU1020の処理負荷が高くなる場合には、本条件を異常検知の判定から除外して、後述する送信元IPアドレス54の異なり数の条件で代用することもできる。
【0203】
フロー1~Nのフロー条件(22)としては、送信元IPアドレス54となる感染端末1(210-1)~感染端末N(210-N)のIPアドレスは未知であるから、任意の異なるN個のIPアドレスとなる。宛先IPアドレス55=DNSサーバ221のIPアドレスとなる。
【0204】
フローN+1~2Nのフロー条件(24)としては、送信元IPアドレス54となる感染端末1(210-1)~感染端末N(210-N)のIPアドレスは未知であるから、任意の異なるN個のIPアドレスとなる。宛先IPアドレス55となるC&CサーバのIPアドレスは未知であるから、宛先IPアドレス55=任意となる。
【0205】
なお、C&Cサーバ400のIPアドレスには既存のC&Cサーバ400のアドレスリストに登録されたIPアドレスを適用してもよい。既知のC&Cサーバ400のアドレスリストが存在する場合は、既知のC&Cサーバ400に関するフロー2のアドレスを特定することが可能となる。
【0206】
従って、ボットネット検知のアルゴリズムとして実施例1で説明した時間順序を逆に辿って判定するアルゴリズム2(図8A図8B)で判定する方が、アルゴリズム1(図7A図7B)より判定対象となるフロー統計レコード501を削減ことができる。
【0207】
これにより、ボットネット検知の負荷を低減して効率化することができ、ボットネットの検知を高速化することができる。
【0208】
本実施例3では、アルゴリズム1とアルゴリズム2を組み合わせたボットネット検知アルゴリズムとして、既存のC&Cサーバ400のアドレスリストに存在するアドレスに関してはアルゴリズム2で判定し、未知のC&Cサーバを想定したボットネット検知はアルゴリズム1で判定する。
【0209】
これにより、ネットワーク異常検知装置100は、未知のC&Cサーバ400と既知のC&Cサーバ400に対して効率よく対応することができる。ボットネット検知アルゴリズムについては、ボットネット検知のシナリオテーブル20におけるシナリオエントリ21について説明した後に詳述する。
【0210】
フロー1~Nの閾値条件(23)としては、フロー1~Nの感染端末1(210-1)~感染端末N(210-N)の送信元IPアドレス54の個数を用いる。観測対象ネットワーク200での感染端末210の個数は未知であるから、ボットネットによる攻撃活動として検知するための送信元IPアドレス54の個数をN設定し、送信元IPアドレス54の異なり数>Nとする。なお、必要に応じて送信元IPアドレス54ではなく送信元MACアドレスの数を用いて、送信元MACアドレス数>Nとしてもよい。
【0211】
閾値条件(23)に対して比較対象とする検知パラメタである送信元IPアドレス54の異なり数の測定対象となる時間範囲は、ネットワーク異常検知装置100の運用管理者の設定により、検知パラメタの対象とすべきフロー開始時刻61の時間範囲を調整することで変更可能とする。
【0212】
また、閾値が低すぎて正常なフローをボットネットによる攻撃活動として誤検知してしまう場合には、閾値を上げて調整することにより誤検知を低減することができる。逆に閾値が高すぎてボットネット検知できない場合には、閾値を下げて調整することができる。ボットネット検知に適切な閾値を設定するためには、ネットワーク異常検知装置100の運用開始時に、観測対象ネットワーク200で異常の発生していない正常状態における検知パラメタである送信元IPアドレス54の異なり数を監視して、ネットワーク異常検知装置100の運用管理者が適切な閾値を検討して設定する必要がある。
【0213】
これらの条件を後述するシナリオテーブル20に設定することで、CPU1020がシナリオテーブル20を参照し、フロー統計DB50から読み出してイベント収集バッファ30に格納するフロー統計レコード51のうち、シナリオテーブル20の設定条件に一致するフロー統計レコード51について異常の有無を判定することで、ボットネットによる攻撃活動を検知することができる。
【0214】
図17Aは、ボットネットからDNSサーバ221への帯域(送信元IPアドレス54の異なり数)と時間の関係を示すグラフである。図17Bは、ボットネットからC&Cサーバ400への帯域(送信元IPアドレス54の異なり数)と時間の関係を示すグラフである。
【0215】
図示の例では、フロー1~N、フローN+1~2Nの送信元IPアドレスの異なり数の時間変動、即ちDNSサーバ221宛フローの送信元IPアドレスの異なり数とC&Cサーバ400宛フローの送信元IPアドレスの異なり数の例を示す。
【0216】
DNSサーバ221宛フローとC&Cサーバ400宛フローにおけるピークは、いずれも感染端末1(210-1)~感染端末N(210-N)の端末数に相当するピークであり、DNSサーバ221宛フローのピークの方がC&Cサーバ400宛フローのピークより時間的に先に発生する。
【0217】
図18は、ボットネット検知におけるシナリオテーブル20におけるシナリオエントリ21の例を示す。シナリオエントリ21は、フロー1~Nのフロー条件22としてSIP=d.c.(任意)、DIP=DNSサーバ221のIPアドレスの値が設定される。フロー1~Nの閾値条件23として、送信元IPアドレスの異なり数>100、が設定される。
【0218】
フローN+1~2Nのフロー条件24としてSIP=任意と、DIP=観測対象ネットワーク200外のIPアドレスが設定される。フローN+1~2Nの閾値条件25として、送信元IPアドレスの異なり数>100が設定される。
【0219】
フロー1~NとN+1~2N間のフロー関係条件26として、フロー1~Nの送信元IPアドレスとフローN+1~2Nの送信元IPアドレスのうちN個以上の送信元IPアドレスが一致することが設定される。
【0220】
フロー1~NとフローN+1~2N間の時間関係条件27として、フロー1~Nのうち最初のフロー開始時刻<フローN~2Nのうち、最初のフロー開始時刻<フロー1~Nのうち最初のフロー開始時刻+1時間と設定される。
【0221】
これにより、ネットワーク異常検知装置100では、感染端末1(210-1)~感染端末N(210-N)からDNSサーバ221宛に送信元IPアドレスの異なり数>100のフロー1~Nが発生し、フロー1~Nの発生後1時間以内に感染端末1(210-1)~感染端末N(210-N)を送信元IPアドレスとして観測対象ネットワーク200外のIPアドレス宛に発生したフローN+1~2Nを検知することが可能となり、ボットネットによる攻撃活動の被疑となる通信を検知することができる。
【0222】
ただし、異常検知の判定にフロー1~NとN+1~2N間のフロー関係条件26を含めるとCPU1020の処理負荷が高くなる場合には、フロー1~NとN+1~2N間のフロー関係条件26を異常検知の判定から除外して、フロー1~Nの閾値条件23とフローN+1~2Nの閾値条件25で代用することもできる。
【0223】
なお、フローN+1~2NのDIPとなる観測対象ネットワーク200外のIPアドレスには、既存のC&Cサーバ400のアドレスリストに登録されたIPアドレスを適用してもよい。
【0224】
CPU1020が実行する異常検知プログラム40のボットネット検知アルゴリズムを図19A図19Dに示す。
【0225】
ステップ2200では、CPU1020が、所定の時間間隔毎Δt毎に判定開始する。
【0226】
次のステップ2240では、CPU1020が、フロー統計情報DB50と既知のアドレスリストを参照して、フロー統計レコード51にIPアドレスが既知のC&Cサーバがあるか否か判定する。なお、既知のC&Cサーバ400のアドレスリストは、図示はしないが、予めハードディスク1022に格納されているものとする。
【0227】
ステップ2240の判定結果がNOの場合は、ステップ2201へ進み、YESの場合は図19Cのステップ2241へ進む。
【0228】
既知のC&Cサーバ400のIPアドレスが存在しないステップ2201では、CPU1020が、フロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を読み出してイベント収集バッファ30に格納する。
【0229】
次のステップ2202~2204では、シナリオテーブル20を読み出し、シナリオエントリ番号i=1とし、シナリオエントリ番号iに対応するエントリをシナリオテーブル20から読み出す。
【0230】
次のステップ2205では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうち、フロー1~Nのフロー条件22が、DIP=DNSサーバのIPアドレスと、フロー1~Nの閾値条件23が、フロー1~Nの送信元IPアドレス異なり数>100、を満たすフロー統計レコード51を検索する。
【0231】
次のステップ2206では、CPU1020が、上記検索条件(2205)を満たすフロー統計レコード51の全てに番号j(j=1~J)を付与し、フロー1~Nとしてイベント収集バッファ30に格納する。
【0232】
次のステップ2207では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうち、フローN+1~2Nのフロー条件24が、DIP=観測対象ネットワーク200外のIPアドレスと、フローN+1~2Nの閾値条件25がフローN+1~2Nの送信元IPアドレス異なり数>100、を満たすフロー統計レコード51を検索する。
【0233】
次のステップ2208では、CPU1020が、上記検索条件(2207)を満たすフロー統計レコード51の全てについて番号k(k=1~K)を付与し、フローN+1~2Nとしてイベント収集バッファ30に格納する。
【0234】
次に図19Bのステップ2209では、CPU1020が、フロー統計レコード51の番号j=1とする。
【0235】
次のステップ2210では、CPU1020が、フロー統計レコード51の番号jを、フロー1~Nとし、フロー1~NとフローN+1~2N間のフロー関係条件26が、フロー1~NのSIP=フローN+1~2NのSIPと、フロー1~NとフローN+1~2N間の時間関係条件27が、フロー1~Nのフロー開始時刻<フローN+1~2Nの開始時刻<フロー1~Nの開始時刻+1時間を満たすフロー統計レコード51をフローN+1~2Nから検索する。
【0236】
次のステップ2211では、CPU1020が、上記検索条件(2210)を満たすフロー統計レコード51の全てについて、番号l(l=1~L)を付与し、フロー1~Nのフロー統計レコード51の番号jに対応するフローN+1~2Nのフロー統計レコード51の番号lとしてイベント収集バッファ30に格納する。
【0237】
次のステップ2212では、CPU1020が、フロー1~Nのフロー統計レコード51の番号jと、フローN+1~2Nのフロー統計レコード51の番号lの組み合わせでネットワークの異常を検知する。この処理は、前記実施例1の図7Bに示したステップ1912と同様である。
【0238】
次に、ステップ2213の判定では、CPU1020が、番号jが最大値Jより小さいか否かを判定する。ステップ2213の判定結果がYESの場合には、次のステップ2214で、CPU1020が番号jに1を加算して、ステップ2210に戻って上記処理を繰り返す。
【0239】
一方、ステップ2213の判定結果がNOの場合は、次のステップ2215で、CPU1020は、シナリオエントリ21の番号iがIより小さいか否かを判定する。ステップ2215の判定結果がYESの場合は、次のステップ2216に進んで、番号iに1を加算して、上記図19Aのステップ2204に戻って上記処理を繰り返す。一方、ステップ2215の判定結果がNOの場合は、全てのシナリオエントリ21について処理が完了したので、異常検知プログラム40を終了する。
【0240】
一方、図19Aのステップ2240の判定結果がYESの場合、CPU1020は、図19Cのステップ2241へ進み、C&Cサーバ400の番号m=1とする。
【0241】
次のYES2242では、CPU1020が、C&Cサーバ400(番号m(m=1~M))宛の通信をフロー2としてボットネット検知の判定を開始する。
【0242】
次のステップ2221では、CPU1020が、フロー統計DB50のフロー統計レコード51のうち、現在時刻NOW-Δt≦フロー開始時刻61<現在時刻NOW、を満たすフロー統計レコード51を読み出してイベント収集バッファ30に格納する。
【0243】
次のステップ2222~2224では、CPU1020が、シナリオテーブル20を読み出して、シナリオエントリ番号i=1とし、シナリオエントリの番号i(i=1~I)に対応するシナリオエントリ21を読み出す。
【0244】
次のステップ2225では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうち、フローN+1~2Nのフロー条件24がDIP=C&CサーバmのIPアドレスと、フローN+1~2Nの閾値条件25が、フローN+1~2Nの送信元IPアドレス異なり数>100、を満たすフロー統計レコード51を検索する。
【0245】
次のステップ2226では、CPU1020が、上記検索条件(2225)を満足するフロー統計レコード51の全てについて番号k(k=1~K)を付与し、フローN+1~2Nとしてイベント収集バッファ30に格納する。
【0246】
次のステップ2227では、CPU1020が、イベント収集バッファ30に格納したフロー統計レコード51のうち、フロー1~Nのフロー条件22がDIP=DNSサーバのIPアドレスと、フロー1~Nの閾値条件23がフロー1~Nの送信元IPアドレス異なり数>100、を満たすフロー統計レコード51を検索する。
【0247】
次のステップ2228では、CPU1020が、上記検索条件(2227)を満たすフロー統計レコード51の全てについて番号j(j=1~J)を付与し、フロー1~Nとしてイベント収集バッファ30に格納する。
【0248】
次に図19Dのステップ2229では、CPU1020が、フロー統計レコード51の番号k=1とする。
【0249】
次のステップ2230では、CPU1020が、フロー統計レコード51の番号kをフローN+1~2Nとし、フロー1~NとN+1~2N間のフロー関係条件26が、フロー1~NのSIP=フローN+1~2NのSIPと、フロー1~NとフローN+1~2N間の時間関係条件27が、フロー1~Nのフロー開始時刻<フローN+1~2Nの開始時刻<フロー1~Nの開始時刻+1時間、を満たすフロー統計レコード51をフロー1~Nから検索する。
【0250】
次のステップ2231では、CPU1020が、上記検索条件(2230)を満たすフロー統計レコード51の全てについて番号l(l=1~L)を付与し、フローN+1~2Nのフロー統計レコード51の番号kに対応するフロー1~Nのフロー統計レコード51の番号lとしてイベント収集バッファ30に格納する。
【0251】
次のステップ2232では、CPU1020が、フロー1~Nのフロー統計レコード51の番号jと、フローN+1~2Nのフロー統計レコード51の番号lの組み合わせでネットワークの異常を検知する。この処理は、前記実施例1の図7Bに示したステップ1912と同様である。
【0252】
次のステップ2233では、CPU1020が、番号kが最大値Kより小さいか否かを判定する。ステップ2233の判定結果がYESの場合は、次のステップ2234で、CPU1020が、番号kに1を加算して、上記ステップ2230に戻って上記処理を繰り返す。
【0253】
一方、ステップ2233の結果がNOの場合は、ステップ2235で、CPU1020は、シナリオエントリ21の番号iが最大値Iより小さいか否かを判定する。ステップ2235の結果がYESの場合は、ステップ2236で、CPU1020が、番号iに1を加算して、図19Cのステップ2224に戻って上記処理を繰り返す。
【0254】
一方、ステップ2235の結果がNOの場合は、ステップ2237で、CPU1020が、C&Cサーバ400の番号mがMより小さいか否かを判定する。ステップ2237の判定結果がYESの場合は、ステップ2238では、CPU1020が、番号mに1を加算して、図19Cのステップ2242に戻って上記処理を繰り返す。
【0255】
一方、ステップ2237の判定結果がNOの場合は、上記図19Aのステップ処理2201に進み、CPU1020は上記処理を実行する。
【0256】
以上のように、実施例3のネットワーク異常検知装置100は、既知のC&Cサーバ400のIPアドレスがフロー統計レコード51に含まれていない場合には、前記実施例1と同様に、フロー1からフロー2の順序で異常の検知を行うアルゴリズム1(図7A図7B)を実行する。一方、既知のC&Cサーバ400のIPアドレスがフロー統計レコード51に含まれている場合、ネットワーク異常検知装置100は、フロー2からフロー1の順序で異常の検知を行うアルゴリズム2(図8A図8B)を実行した後にアルゴリズム1(図7A図7B)を実行してからを実施する。
【0257】
これにより、ネットワーク異常検知装置100は、判定対象となるフロー統計レコード51を削減して、複数のフローに関する事象を時系列の順で各々検知して、検知した各フローに関する事象が所定の順序で発生するボットネットの活動報を確実に検知することが可能となる。
【0258】
<まとめ>
【0259】
以上のように、上記実施例1~3のネットワーク異常検知装置(100)は、プロセッサ(1020)とメモリ(1021)を有し、受信したフロー統計情報に基づいて観測対象ネットワーク(200)の異常を検知するネットワーク異常検知装置(100)であって、前記観測対象ネットワークのパケットのヘッダ情報から集計されたフロー統計情報を受信して、フロー統計情報蓄積部(50)に収集する統計情報収集部(101)と、複数のフローに関する事象の時系列的な順序関係が予め設定されたシナリオ(21)を含むシナリオ情報(20)と、フロー統計情報蓄積部(50)から所定の期間のフロー統計情報(51)を取得して、前記シナリオ情報(20)のうち前記シナリオ(21)の事象と一致するフロー統計情報(51)の有無に基づいて、前記観測対象ネットワーク(200)の異常の有無を判定する異常検知部(102)と、を有する。
【0260】
これにより、ネットワーク異常検知装置100が、複数のフローに関する事象を時系列の順で各々検知して、検知した各フローに関する事象が所定の順序で発生する観測対象ネットワーク200の異常(サイバーキルチェーン)または異常の兆候を確実に検知することが可能となる。
【0261】
また、ネットワーク異常検知装置(100)のであって、前記シナリオ(21)は、複数の事象に関するフロー条件(22、24)と、複数の前記事象のそれぞれについて予め設定された閾値条件(23、25)と、複数の前記事象の順序関係(26、27)を含み、前記フロー条件(22、24)は、送信元(54)または宛先(55)の情報を含み、前記閾値条件(23、25)は、前記フロー条件が発生した数量に関する閾値を含み、前記順序関係(26、27)は、複数の事象の時系列的な前後関係を含む。
【0262】
これにより、ネットワーク異常検知装置100は、サイバーキルチェーンの、偵察、武器化、デリバリエクスプロイト、インストール、C&C、目的実行の各手順をシナリオエントリ21で定義しておくことで、観測対象ネットワーク200の異常または異常の予兆を検知することが可能となる。
【0263】
また、前記異常検知部(102)は、前記シナリオ情報(20)を設定するユーザインタフェースを提供する。これにより、ネットワーク異常検知装置100の利用者は、新たなサイバーキルチェーンの手順や特徴を随時、追加または修正することが可能となる。
【0264】
また、前記異常検知部(102)は、前記シナリオ(21)の事象と一致するフロー統計情報(51)があった場合には、当該フロー統計情報(51)に関する情報を異常が発生したログ情報(71)として出力する。これにより、ネットワーク異常検知装置100は、観測対象ネットワーク200の異常に関する情報をSYSLOG71として出力することにより、可視化サーバ120等で異常の内容を表示することが可能となる。
【0265】
また、前記フロー統計情報は、NetFlowを用いてパケットのヘッダ情報から生成された情報である。これにより、ネットワーク異常検知装置100は、既存のネットワーク装置から収集した情報に基づいて、観測対象ネットワーク200の異常または異常の兆候を検知することが可能となる。
【0266】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【0267】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0268】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0269】
20 シナリオテーブル
21 シナリオエントリ
30 イベント収集バッファ
40 異常検知プログラム
50 フロー統計情報データベース
70 SYSLOGデータベース
100 ネットワーク異常検知装置
101 パケット転送処理部
102 ネットワーク異常検知部
130 表示端末
150 入力端末
200 観測対象ネットワーク
1010 CPU
1011 メモリ
1012 パケット送受信部
1020 CPU
1021 メモリ
1022 ハードディスク
図1
図2
図3
図4
図5
図6
図7A
図7B
図8A
図8B
図9
図10
図11
図12A
図12B
図13
図14A
図14B
図14C
図14D
図15
図16
図17A
図17B
図18
図19A
図19B
図19C
図19D
図20