以下、本発明の実施形態を、図面に示す実施例を基に説明する。
(システム概要)
図1は本実施例におけるシステム構成の例を示す図である。本システムを構成する要素として、通信ネットワーク83、ホワイトリスト評価指標算出装置10、準最適ホワイトリスト探索装置40、再学習必要性判定装置50、活動ログDB60(DB:Data Base)、ホワイトリストDB70、端末群80、ネットワーク型活動ログ送信装置82、および重点警戒活動DB90、がある。
通信ネットワーク83は、WAN(World Area Network)あるいはLAN(Local Area Network)、携帯電話あるいはPHS(Personal Handy-phone System)などの公衆回線網でもよい。図1に示した各装置間の通信は、通信ネットワーク83を介して行われる。
ホワイトリスト評価指標算出装置10は、準最適ホワイトリスト探索装置40または再学習必要性判定装置50から入力に応じてホワイトリストの質(評価指標)を算出する。この評価指標(評価値)の算出は誤検知リスクおよび検知見逃しリスクの両点に基づき行われる。
これらのリスク算出は、ホワイトリスト評価指標算出装置10に含まれる誤検知リスク算出部20と検知見逃しリスク算出部30のそれぞれにおいて実施される。誤検知リスク算出部20と検知見逃しリスク算出部30は、同じホワイトリスト評価指標算出装置10に存在してもよいし、異なる装置上に分散していてもよい。
誤検知リスク算出部20は、与えられたホワイトリストが誤検知を引き起こすリスクを評価する。この評価において、指定された活動ログにホワイトリストを適用し誤検知を測定するためのログシミュレータ21、およびホワイトリストと活動ログの関係がどのような状況になった時に誤検知と見做すかを判定する誤検知スコア基準部22から構成される。
検知見逃しリスク算出部30は、与えられたホワイトリストにより検知見逃しが発生するリスクを評価する。検知見逃しリスクの算出では、最初に、ホワイトリスト内の各エントリのリスクを求め、次に、リスクを求めたエントリのリスクを統合して、ホワイトリストの誤検知リスクを算出する。
ここで、エントリの誤検知リスクには、(1)運用時に発生した攻撃が偶々エントリに一致してしまい誤検知が発生してしまう運用時攻撃見逃しリスク、および(2)学習時に発生していた攻撃が検知されず、攻撃を構成する活動がホワイトリストに混入してしまう学習時攻撃混入リスク、の2種類が存在する。
前者に対するリスク算出は運用時攻撃見逃しリスク算出部31で行い、後者に対するリスク算出は学習時攻撃混入リスク算出部32で行う。また、これらとは別に、セキュリティ専門家などから、標的型攻撃で悪用されやすい活動と認定されている活動(例えば、攻撃者が頻繁に使用するWindows(登録商標)のコマンド)に対しては、特別なリスク値が割り当てられる。
このような特別なリスク値の処理は、重点警戒活動リスク算出部33において行なわれる。また、このような特別なリスク値の処理では、セキュリティ専門家などから予め設定された重点警戒活動DB90が参照される。
準最適ホワイトリスト探索装置40は、機械学習アルゴリズムなどを用いて、活動ログDB60内のログを基に、端末群80の端末ごとに、評価指標が準最適となるホワイトリストを探索する。探索されたホワイトリストは、新たなホワイトリストとして作成され、ホワイトリストDB70に格納される。
再学習必要性判定装置50は、運用期間中に、ホワイトリストの質の経年変化を追跡し、質に劣化があると判定したときに再学習を実施させて、ホワイトリストを作り直させる。質に劣化があると判定されたとき、すなわち再学習が必要なときに、ホワイトリストの作り直しを行うことで、ホワイトリストの維持において不要な計算量を削減することができる。
活動ログDB60は、ホワイトリスト作成の対象である端末群80の活動が記録される。活動ログDB60に記録される活動は、学習期間の活動と運用期間の活動がある。ホワイトリストDB70には、準最適ホワイトリスト探索装置40で作成されたホワイトリストが保存される。
端末群80は、ホワイトリスト作成対象となる端末である。端末の活動の情報は、端末内にインストールされたプログラムを実行する図示を省略した端末のプロセッサが、端末ログ送信部81となり、この端末ログ送信部81によって観測され、活動ログDB60に送信される。
あるいは、端末群80から端末の活動の情報が活動ログDB60に送信されず、通信ネットワーク83上で端末群80の活動すなわち端末群80の通信を監視するネットワーク型活動ログ送信装置82により、活動の観測と活動ログDB60への送信が行なわれてもよい。
重点警戒活動DB90は、標的型攻撃に悪用された活動の情報およびそのリスク値が格納される。重点警戒活動DB90の情報は、セキュリティ専門家などから予め格納されてもよい。
(シーケンスの例)
図2は、学習期間におけるシステムの処理シーケンスの例を示す図である。学習期間の開始および終了は、システムのユーザにより設定される。学習期間は例えば1か月間である。ホワイトリストは、学習期間中に発生した端末群80の活動ログを基に作成される。ホワイトリストを作成するタイミングは、学習期間の終了時、すなわち学習期間開始から既定の一定時間が経った日時である。
端末群80から活動ログDB60に送信されるメッセージである活動ログ201には、端末群80の活動ログの情報が含まれる。このメッセージは、端末群80の端末ログ送信部81、または端末群80を監視しているネットワーク型活動ログ送信装置82により、送信される。また、学習期間と活動期間のいずれにおいても、このメッセージは、端末群80の端末で新しい活動が発生する度に送信されてもよい。
準最適ホワイトリスト探索装置40は、学習期間の終了時に、端末群80に含まれる各端末に対して、ホワイトリストを作成する。その際、学習期間中に蓄積された学習用活動ログ202を活動ログDB60からメッセージとして取得し、ホワイトリスト探索400の処理を実施する。
準最適ホワイトリスト探索装置40は、ホワイトリスト探索400において、作成したホワイトリストの評価指標を算出するため、評価要求203をホワイトリスト評価指標算出装置10にメッセージとして送信する。メッセージ内には評価対象のホワイトリストおよび評価に必要となる学習用活動ログ202が含まれる。
評価要求203のメッセージを受信したホワイトリスト評価指標算出装置10は、評価指標算出100の処理により評価指標を算出し、その値を評価結果204として含ませたメッセージを返信する。
準最適ホワイトリスト探索装置40は、評価結果204のメッセージを受けて、評価結果204の値が一定基準を下回る場合は、ホワイトリストの探索を再実施する。一方、評価結果204の値が一定基準を上回る場合は、作成したホワイトリストを含むホワイトリスト登録205をホワイトリストDB70にメッセージとして送信し、処理を完了する。
図3は、運用期間におけるシステムの処理シーケンスの例を示す図である。まず、再学習必要性判定装置50は、定期的に(例えば、1週間ごとに)、再学習判定500を呼び出す(実行する)。再学習判定500は、端末群80それぞれのホワイトリストを、ホワイトリスト取得302のメッセージとして、ホワイトリストDB70から取得する。
次に、再学習判定500は、ホワイトリストを含む再評価要求303のメッセージを、ホワイトリスト評価指標算出装置10に送信する。再評価要求303のメッセージを受信したホワイトリスト評価指標算出装置10は、評価指標再算出110を実行し、評価指標算出100と同様に、ホワイトリストの評価値を算出する。
その際に、評価指標再算出110は、再評価用活動ログ304のメッセージによって、評価指標算出100あるいは評価指標再算出110が前回呼ばれてから、現在(今回呼ばれる)までに発生した端末群80の活動ログを、活動ログDB60から取得する。なお、図2を用いて説明したように、端末群80は活動ログ301のメッセージを活動ログDB60に送信している。
評価指標算出100が呼ばれることなく、評価指標再算出110が呼ばれるのが運用期間になってから初めての場合は、運用期間が開始してから現在までの運用期間中に観測された活動ログが取得される。評価指標再算出110は、再評価の結果を、再評価結果305のメッセージとして、再学習必要性判定装置50に送信する。
再学習必要性判定装置50は、再評価結果305とホワイトリスト作成時点での評価値を比べて、その差が(予め設定された)一定水準を超える場合に再学習を行う。この再学習のために、再学習必要性判定装置50は、再学習処理510を読み出し、再探索要求306のメッセージを準最適ホワイトリスト探索装置40に送信する。
再探索要求306のメッセージを受信した準最適ホワイトリスト探索装置40は、ホワイトリスト再探索410を呼び出して、再学習を行う。その際、再学習用活動ログ307のメッセージとして、過去一定期間(例えば一か月間)に観測された活動ログを、活動ログDB60より取得する。ホワイトリスト再探索410における探索処理は、ホワイトリスト探索400と同様である。
再探索の結果として作成されたホワイトリストは、再探索結果308のメッセージとして、再学習必要性判定装置50に返信され、それがそのままホワイトリスト再登録309のメッセージとして、ホワイトリストDB70に登録される。
(ハードウェア構成)
図4は、ホワイトリスト評価指標算出装置10のハードウェア構成の例を示す図である。なお、図1に示した他の装置や端末のハードウェア構成も、メモリ12と外部記憶装置13に保存されるプログラムやデータを除いて、同様である。
ホワイトリスト評価指標算出装置10は、CPU11(Central Processing Unit)、メモリ12、外部記憶装置13、IF14(Interface)、入出力装置15、バス16から構成される。
CPU11は、メモリ12内に保存されたプログラムを実行し、例えば図1、2を用いて説明した評価指標算出100や評価指標再算出110などを具現化させる。メモリ12は、ホワイトリスト評価指標算出装置の各機能を実現するための実行プログラムを保存する。メモリ12には実行プログラム以外にデータが保存されてもよい。
ホワイトリスト評価指標算出装置10のメモリ12には、評価指標算出100と評価指標再算出110を実現するための評価指標算出プログラム121が保存され、誤検知リスク算出プログラム122、検知見逃しリスク算出プログラム123、および学習時攻撃混入リスク算出プログラム124が保存される。これらの実行プログラムについては、図8〜11を用いて後でさらに説明する。
外部記憶装置13は、HDD(Hard Disk Drive)などから構成され、データの長期保存を行うのに用いられる。外部記憶装置13は、ホワイトリスト評価指標算出装置10に含まれる各DBが格納される。また、外部記憶装置13にプログラムが格納されてもよい。
IF14は、ホワイトリスト評価指標算出装置10を通信ネットワーク83に接続する。入出力装置15は、ホワイトリスト評価指標算出装置10のユーザ(管理者)による各種情報の入力、および格納されている情報の出力を行う。バス16は、CPU11、メモリ12、外部記憶装置13、IF14、および入出力装置15を接続し、これらの間の情報のやりとりを実現する。
(DB構成)
図5は、活動ログDB60の構成例を示す図である。活動ログDB60の各レコードには端末群80の各端末で発生した活動が記録されている。ここで、1つのレコードは、ID、観測日時、活動端末、および活動内容の情報の組合せである。ID61は、各レコードを一意に識別するための識別子である。
観測日時62は、活動が発生した時刻を示す情報である。活動端末63は、活動を実施した端末を一意に識別するための識別子を示す情報である。活動内容64は、活動の内容を示す情報である。具体例としては、プロセス、通信、ファイルアクセス、レジストリアクセスなどがある。活動内容64に記録される活動には、正常活動と異常活動があるが、記録される時点で、どちらの活動であるかは判定できない場合もある。
例えば、図5に示した活動ログDBにおいて、ID61が「1」のレコードには、観測日時62は「2017−07−16 10:03」、活動端末63は「端末A」、活動内容64は「プロセスX起動」が記録されている。ここで、「端末A」と「プロセスX起動」は、これらの情報を表せれば、他の表現すなわち記号や値などであってもよい。
そして、ID61が「2」以降のレコードも同様の情報が記録される。図5に示した活動ログDBでは、ID61が「2」から「4」の観測日時62は「2017−07−16」を含み、ID61が「5」の観測日時62は「2017−09−07」を含む例を示している。
また、図示を省略した情報であって、活動ログDB60のレコードの個数が記録された情報があり、活動ログDB60に含まれるレコードの個数が増加あるいは減少するごとに、その情報が更新されてもよい。
図6は、ホワイトリストDB70の構成例を示す図である。ホワイトリストDB70の各エントリには、端末群80の各端末のホワイトリストに関する情報が記録されている。ID71は、各エントリを一意に識別するための識別子である。活動端末72は、ID71で識別される端末を一意に識別するための識別子である。
活動内容73には、1つの端末を1つのエントリとして、エントリごとに1つ以上の活動が記録される。活動内容73に記録された活動がホワイトリストの対象であり、1つの活動の記録が1つのレコードとなる。活動内容73に記録される活動は、活動ログDB60の活動内容64に記録される活動と対応し、同じ活動であるかが判定可能な情報である。
また、ホワイトリストの対象となる活動は、正常とみなされる活動でもあり、ホワイトリストの対象とならない活動は、実際には正常活動を含む可能性もあるが、異常とみなされる活動であってもよい。
なお、活動内容73の記録はエントリごと、すなわち活動端末72で識別される端末ごとであり、異なる端末に対して同じ活動が記録される場合もある。このため、ホワイトリストは端末の情報と活動の情報との組合せであり、この意味で、活動端末72は、ホワイトリストの対象となる端末を一意に識別するための識別子でもある。
評価値74には、ホワイトリスト評価指標算出装置10により算出された評価値が記録される。なお、図6に示した例で、評価値74は0以上1以下の値をとり、値が小さい程、ホワイトリストの質(あるいは評価)は高いものとする。
また、評価値74は、エントリごと、すなわち活動端末72の端末ごとの評価値が記録されてもよいし、レコードごと、すなわち活動内容73の活動ごとの評価値が記録されてもよい。評価値74にエントリごとの評価値が記録される場合、記録される評価値は、活動内容73の活動ごとの評価値が合計されたり、平均化されたりして算出されてもよい。
さらに、評価値74は、ホワイトリストとしての評価値すなわち複数のエントリをまとめた1つの評価値が記録されてもよい。この場合、エントリごとの評価値とレコードごとの評価値が評価値74に記録されなくてもよい。
例えば、図6に示したホワイトリストDB70において、ID71が「1」のエントリは、活動端末72が「端末A」のホワイトリストであることを示す。ホワイトリストとして活動内容73には「プロセスX起動」と「端末Dへの通信」が記録されている。また、評価値74の値は「0.83」である。
そして、ID71が「2」以降のエントリも同様の情報が記録されるが、1つのエントリの活動内容73に1つの活動が記録されている場合もある。ホワイトリストDB70はこのようなDBであるので、図示を省略した情報であって、エントリごとのレコードの個数が記録された情報があってもよいし、ホワイトリストDB70のエントリの個数が記録された情報があってもよい。
図7は、重点警戒活動DB90の構成例を示す図である。重点警戒活動DB90の各レコードには、標的型攻撃に悪用されやすい活動が記録されている。ID91は、各レコードを一意に識別するための識別子である。活動内容92は、重点警戒するべき活動内容の情報である。
重点リスク93は、活動内容92が示す活動内容に対して付与されるリスク値である。図7に示した例では、リスク値は、0以上の実数であり、値が大きい程、リスクが高いものとする。
なお、本実施例では、重点警戒するべき活動は、端末群80の各端末で共通であるとするが、変更例として、端末群80の各端末の特性に合わせて、重点警戒すべき活動の種類が異なってもよい。また、重点警戒活動DB90の情報はユーザにより予め設定されてもよい。
例えば、図7に示した重点警戒活動DB90において、ID91が「1」のレコードには、活動内容92は「プロセスX起動」、重点リスク93は「10」が設定されている。そして、ID91が「2」以降のレコードも同様の情報が設定されている。
図8は、ホワイトリスト評価指標算出装置10の評価指標算出100における処理ステップの例を示す図である。図8に示した処理ステップは、評価指標算出プログラム121のフローチャートの例でもある。このため、図8の説明において主語となるホワイトリスト評価指標算出装置10は、CPU11と読み換えられてもよい。
処理ステップS101で、ホワイトリスト評価指標算出装置10は、評価要求203のメッセージを受信する。このメッセージには評価要求となるホワイトリストおよび学習用活動ログ202が記録されている。
処理ステップS102で、ホワイトリスト評価指標算出装置10は、誤検知リスク算出部20を呼出し、誤検知リスクを算出する。図14に示されるように、ある端末hのホワイトリストをWh、端末hの学習用活動ログ202をLh、ホワイトリスト作成時刻(日時)をTとおくと、誤検知リスクはf(Wh,Lh,T)、もしくはf値と表記される。具体的な算出の手順は後述する。
次に、処理ステップS103で、ホワイトリスト評価指標算出装置10は、検知見逃しリスク算出部30を呼出し、検知見逃しリスクを算出する。図14に示されるように、検知見逃しリスクはg(Wh,Lh,T)、もしくはg値と表記される。具体的な算出方法は後述する。
次に、処理ステップS104で、ホワイトリスト評価指標算出装置10は、f値およびg値を基に、評価指標(WL_index)を算出する。本実施例では図14に示されるように、評価指標はf値とg値の重み付き調和平均となる。図14に示した重み付けパラメータθは、検知見逃しリスクに比べて、誤検知リスクをどの程度重要視するのかを調整するためのパラメータである。
θ>1であるならば、誤検知リスクは検知見逃しリスクより重要視される。反対に、θ<1であるならば、検知見逃しリスクは誤検知リスクより重要視される。θは予めユーザにより設定されてもよい。
なお、評価指標は、f値とg値から構成される数式であれば、他の実施形態をとりうる。例えば、f値とg値の算術平均(f値+g値)を評価指標としてもよい。また、演算上、f値とg値は同じ値域を持つものとする。例えば、f値とg値ともに0から1までの値を持つ。
最後に、処理ステップS105で、ホワイトリスト評価指標算出装置10は、算出した評価指標を含む評価結果204のメッセージを準最適ホワイトリスト探索装置40に送信し、評価指標算出100としての処理を終了する。
図8に示した処理ステップは、評価指標再算出110における処理ステップの例であってもよい。ホワイトリスト評価指標算出装置10は、処理ステップS101でホワイトリストを含む再評価要求303のメッセージと再評価用活動ログ304のメッセージを受信し、処理ステップS105で再評価結果305のメッセージを送信してもよい。
図9は、処理ステップS102で呼び出される誤検知リスク算出部20の、処理ステップの例を示す図である。図9に示した処理ステップは、誤検知リスク算出プログラム122のフローチャートの例でもある。このため、図9の説明において主語となる誤検知リスク算出部20は、CPU11あるいはホワイトリスト評価指標算出装置10と読み換えられてもよい。
処理ステップS201で、誤検知リスク算出部20は、リスク算出対象として、処理ステップS101において受信された活動ログと、受信されている場合は受信されたホワイトリストを、処理ステップS101の処理から受信する。
処理ステップS202で、誤検知リスク算出部20は、受信された活動ログの中から、受信されたホワイトリストに含まれていない活動ログ(活動ログのレコード)を抽出する。受信されたホワイトリストが無い場合すなわち評価指標算出100の場合などは、受信された活動ログそのものが抽出されてもよいし、予め設定された抽出用の活動ログが抽出されてもよい。
ホワイトリストに含まれていない条件は、例えばホワイトリストが図6に示した例であり活動ログが図5に示した例である場合、活動端末63と活動内容64の情報の組合せが、活動端末72と活動内容73の情報の組合せのいずれとも一致しないレコードという条件であってもよい。
処理ステップS203で、誤検知リスク算出部20は、処理ステップS202で抽出した、ホワイトリストに含まれない活動ログを基に、時刻ごとのペナルティを算出する。ペナルティは、[t-window, t]のように、基準となる時刻tから一定のwindow幅(例えば予め設定された一時間)内で観測された、活動ログの数を基に規定される。
ペナルティの具体的な算出処理は、誤検知リスク算出部20の中の誤検知スコア基準部22の処理により決まる。例えば、window内の活動ログ数をNとすると、ペナルティはN、Nの二乗、Nの対数、Nの指数などであってもよい。時刻ごとにペナルティを算出する際は、誤検知リスク算出部20の中のログシミュレータ21により、時間軸に沿って活動ログを走査する。
ここでは、[t-window, t]のペナルティを算出した次は、[t+Δt-window, t+Δt]のペナルティを算出するものとする。なお、Δtはwindowと比べて、十分小さい時間幅(例えば予め設定された1秒、10秒、1分)である。そして、t+Δtを新たな時刻tとして、Δtずつwindowをずらしながら時間軸に沿ってペナルティを算出して行く。
処理ステップS204で、誤検知リスク算出部20は、処理ステップS203で算出した複数のペナルティを基に、誤検知スコアを算出する。この算出のために、算出した各ペナルティにΔtを掛け合わせた値の合計値が求められる。
ここで求めた誤検知スコアは、0以上の実数である。しかし、評価指標を算出する際には、f値とg値は同じ値域を持つ必要があるため、誤検知リスク算出部20は誤検知スコアを正規化する。
処理ステップS205で、誤検知リスク算出部20は、誤検知スコアの正規化のために、エントリが登録されていない空のホワイトリストに対する誤検知スコアを算出する。エントリが1つ以上登録さているホワイトリストの誤検知スコアは、空のホワイトリストに対する誤検知スコア以下になる。
処理ステップS206で、誤検知リスク算出部20は、処理ステップS204で算出した誤検知スコアを、処理ステップS205で算出した空ホワイトリストの誤検知スコアで除算し、この除算により得られた値をf値とする。
図10は、処理ステップS103で呼び出される検知見逃しリスク算出部30の処理ステップの例を示す図である。図10に示した処理ステップは、検知見逃しリスク算出プログラム123のフローチャートの例でもある。このため、図10の説明において主語となる検知見逃しリスク算出部30は、CPU11あるいはホワイトリスト評価指標算出装置10と読み換えられてもよい。
処理ステップS301で、検知見逃しリスク算出部30は、リスク算出対象として、処理ステップS101において受信された活動ログと、受信されている場合は受信されたホワイトリストを、処理ステップS101の処理から受信する。
受信されたホワイトリストが無い場合すなわち評価指標算出100の場合などは、以下で説明する処理ステップS302〜S308をスキップし、予め設定された値をg値としてもよい。g値としての予め設定される値は0であってもよい。あるいは、受信されたホワイトリストが無い場合、予め設定された計算用のホワイトリストが、以下の処理ステップで、受信されたホワイトリストの代わりに処理されてもよい。
処理ステップS302で、検知見逃しリスク算出部30は、運用時攻撃見逃しリスク算出部31を用いて、受信されたホワイトリストの各エントリに対する運用時攻撃見逃しリスクを設定する。ここでは、受信されたホワイトリストの各エントリに同一の値を設定してもよいし、何らかのナレッジにもとづきエントリごとに違う値を設定してもよい。
処理ステップS303で、検知見逃しリスク算出部30は、学習時攻撃混入リスク算出部32を用いて、受信されたホワイトリストの各エントリに対する学習時の攻撃混入のリスクを算出する。このリスクの算出については図11を用いて説明する。
処理ステップS304で、検知見逃しリスク算出部30は、重点警戒活動リスク算出部33を用いて、受信されたホワイトリストの各エントリが重点警戒活動の場合は、重点警戒活動DB90で規定された重点リスク93を設定する。
処理ステップS305で、検知見逃しリスク算出部30は、処理ステップS302で設定されたリスク、処理ステップS303で算出されたリスク、および処理ステップS304で設定されたリスクを統合して、エントリごとの見逃しスコアgseを算出する。統合するために、検知見逃しリスク算出部30は、3種類のリスク(値)を合計してもよいし、最大値を取ってもよいし、一般的な算術演算を用いてもよい。
処理ステップS306で、検知見逃しリスク算出部30は、受信されたホワイトリストの各エントリに対して算出されたgseを合計し、ホワイトリストの検知見逃しスコアを算出する。
処理ステップS307で、検知見逃しリスク算出部30は、受信された活動ログそのもののレコードの情報を、ホワイトリストのエントリとして持つ仮想的なホワイトリストであるfullホワイトリストの検知見逃しスコアを算出する。処理ステップS306で算出した検知見逃しスコアは、必ず、fullホワイトリストの検知見逃しスコア以下の値を持つ。
処理ステップS308で、検知見逃しリスク算出部30は、処理ステップS306で算出した検知見逃しスコアを、fullホワイトリストの検知見逃しスコアで除算し、g値を算出する。
図11は、処理ステップS303で呼び出される学習時攻撃混入リスク算出部32の処理ステップの例を示す図である。図11に示した処理ステップは、学習時攻撃混入リスク算出プログラム124のフローチャートの例でもある。このため、図11の説明において主語となる学習時攻撃混入リスク算出部32は、CPU11あるいはホワイトリスト評価指標算出装置10と読み換えられてもよい。
一般に、標的型サイバー攻撃の発生から発見には時間がかかり、場合によっては最大で数カ月程度かかるとされている。このため、ホワイトリスト作成時刻(日時)Tから見て最近観測された活動ログの中には、標準型サイバー攻撃がホワイトリストに反映されず、標的型サイバー攻撃に起因する活動が含まれている可能性が高い。
このため、学習時攻撃混入リスク算出部32は、図14に示されるホワイトリスト作成時刻(日時)Tと、活動ログの観測日時62の日時の差を基に、各活動に対するリスクを算出する。
図5に示した活動ログDB60の例では、ホワイトリスト作成時刻(日時)Tが、ID61が「5」であるレコードの観測日時62の日時以降であるとすると、ID61が「5」であるレコードの観測日時62の日時は、ID61が「1」から「4」のレコードの観測日時62の日時と比べて、日時が2か月新しいため、相対的に大きなリスクが付与される。
処理ステップS311で、学習時攻撃混入リスク算出部32は、処理ステップS301の処理からホワイトリストと活動ログを受信する。
処理ステップS312で、学習時攻撃混入リスク算出部32は、受信されたホワイトリストに含まれるエントリの活動内容73ごとに、活動内容64が等しいレコードを、受信された活動ログの中から特定し、特定したレコードの観測日時62の日時が最も過去のレコードを選択する。
処理ステップS313で,学習時攻撃混入リスク算出部32は、受信されたホワイトリストのエントリの活動内容73ごとに処理ステップS314〜S315を繰り返し、1つのエントリの活動内容73ごとの繰り返しが終了すると、次のエントリに繰り返しの対象を移動する。
処理ステップS314で、学習時攻撃混入リスク算出部32は、繰り返しの中で対象となった(ホワイトリストの)活動内容73の内容と一致する内容を(活動ログの)活動内容64に持つレコードであって、処理ステップS312で選択したレコードの観測日時62の日時と、ホワイトリスト作成時刻(日時)Tとの日時差を算出する。
処理ステップS315で、学習時攻撃混入リスク算出部32は、算出した日時差を基に、学習時攻撃混入リスクを算出する。この場合、日時差が小さい程、リスクが高くなるように算出する。この算出のために、例えば、テーブルが予め設定されて、日時差の一定区間ごとに、日時差をリスクにマッピングしてもよい。あるいは、日時差を引数としてリスクを戻り値とする関数を利用してもよい。
そして、学習時攻撃混入リスク算出部32は、受信されたホワイトリストにおいて繰り返しの中で対象となった活動内容73の内容(その内容を含むレコード)に、算出されたリスクを設定する。
以上で説明した学習時攻撃混入リスク算出部32の処理により、受信されたホワイトリストのエントリそれぞれの活動内容73の内容それぞれにリスクを設定することができる。ここで、活動内容73の内容が同じであれば、エントリ(活動端末72の端末)が異なっていても同じリスクとなる。
このようなリスクではあるが、受信された活動ログに古くから記録されていた活動の内容は、長い時間、標準型サイバー攻撃が発見されず、ホワイトリストから削除されていないのであるからリスクが低く、受信された活動ログに新たに記録された活動の内容は、時間的な理由だけで標準型サイバー攻撃が発見されていない可能性もあるのでリスクが高いという観点でリスクを算出することが可能となる。
図12は、準最適ホワイトリスト探索装置40のホワイトリスト探索400における処理ステップの例を示す図である。図12に示した処理ステップでは、評価値が最適解に近くなるようなホワイトリストを探索する。
探索においては、有限時間内に準最適なエントリの組合せを探索するために、一般的な組合せ最適化問題への解法が用いられてもよい。組合せ最適化のために機械学習が用いられてもよい。本実施例では、「遺伝的アルゴリズム」に基づく解法を適用する。
処理ステップS401で、準最適ホワイトリスト探索装置40は、端末ごとに、ランダムなエントリを持つN個のホワイトリストを作成する。これらのホワイトリストは準最適ホワイトリストの最初の候補群となる。これらのホワイトリストの情報として学習用活動ログ202あるいは再学習用活動ログ307が利用されてもよい。
処理ステップS402で、準最適ホワイトリスト探索装置40は、iラウンド目(最初のラウンドは0ラウンド目)の候補群の評価値を算出する。評価値の算出に際しては、評価要求203のメッセージをホワイトリスト評価指標算出装置10に送信し、算出を依頼する。
処理ステップS403で、準最適ホワイトリスト探索装置40は、iラウンド目において、処理S402で算出されたN個の評価値のうち最良の候補(本実施例では、評価値が最も値が0に近い候補)が、過去i−Pラウンド目の値と比べて(過去i−Pラウンド目のいずれの値と比べても)、予め設定された一定閾値以上良いかどうかを判定する。
そして、準最適ホワイトリスト探索装置40は、判定の結果が、YESの場合は処理を終了し、判定の結果がNOの場合は処理ステップS404に進む。処理の終了において、準最適ホワイトリスト探索装置40は、最良の候補となったホワイトリストを送信してもよい。また、送信されるホワイトリストには、最良の候補と判定された評価値が、評価値74として設定されてもよい。
処理ステップS404で、準最適ホワイトリスト探索装置40は、iラウンド目の候補群を基に、i+1ラウンド目の候補群を作成する。候補群の作成には、iラウンド目の候補群のうち相対的に評価値が良かった複数の優秀解をi+1ラウンド目に引き継ぐと共に、それらを交叉させ、新しいホワイトリストを作成する。さらに、優秀解にランダムな変更を加えてもよいし、一定の割合で、ゼロから新しい候補を作ってもよい。
なお、準最適ホワイトリスト探索装置40は、ホワイトリスト再探索410において、再探索要求306を受信すると、図12に示した処理ステップをスタートし、図3では図示を省略したホワイトリスト評価指標算出装置10への再評価要求の送信とホワイトリスト評価指標算出装置10からの再評価結果の受信を実行してもよい。
図13は、再学習必要性判定装置50の再学習判定500と再学習処理510の処理ステップの例を示す図である。再学習判定500は、定期的(例えば予め設定された一週間ごと)に呼ばれて実行し、再学習判定500の判定結果に応じて再学習処理510が実行する。処理ステップS501〜S504は再学習判定500に対応し、処理ステップS505は再学習処理510に対応する。
処理ステップS501で、再学習必要性判定装置50は、ホワイトリストDB70から、ホワイトリスト取得302のメッセージにより、端末群80の端末ごとにホワイトリストを取得する。このホワイトリストには、ホワイトリストが作成された時の評価値74の値が含まれる。
処理ステップS502で、再学習必要性判定装置50は、再評価要求303のメッセージにより、ホワイトリスト評価指標算出装置10に対して、直近一定期間(例えば予め設定された一週間ごと)の活動ログを基にした評価指標の再算出を要求する。再算出された評価指標は、再評価結果305のメッセージにより取得される。
処理ステップS503で、再学習必要性判定装置50は、処理ステップS502で取得した再評価結果305の値と、処理ステップS501で取得した評価値74の値との差異を算出する。ここでの差異は、両評価値の比率や減算結果などの算術的な処理により算出される。
ここで、評価値74に複数の値が含まれる場合、評価値74に含まれる複数の値の代表値が差異の算出の対象となってもよい。例えば、評価値74に含まれる複数の値の最小値であってもよいし、最大値であってもよいし、平均値などであってもよい。
処理ステップS504で、再学習必要性判定装置50は、処理ステップS503で算出された差異が、予め設定された閾値以上であるかどうかを判定する。そして、再学習必要性判定装置50は、差異が閾値未満と判定した場合は処理を終了し、差異が閾値以上と判定した場合は処理ステップS505に進む。
処理ステップS505で、再学習必要性判定装置50は、再探索要求306のメッセージにより、ホワイトリストの再作成(再探索)を、準最適ホワイトリスト探索装置40に依頼する。その結果は再探索結果308のメッセージとして受信され、受信されたホワイトリストは、ホワイトリスト再登録309のメッセージを通じて、ホワイトリストDB70に登録される。
以上で説明したように、誤検知のリスクと検知見逃しのリスクの2つのリスクに基づいてホワイトリストの質を評価することが可能となる。また、2つのリスクは、活動ログとホワイトリストから算出できるため、個別のマルウェアや攻撃の解析を必要とせず、この点において評価のための処理負荷を軽減することが可能となる。
ホワイトリストの質を評価できるため、評価に基づきホワイトリストの登録内容を更新することも可能となる。また、ホワイトリストの質を評価できるため、評価に基づきホワイトリストを更新するタイミングを決めることも可能となる。