以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いた場合、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGA(Field-Programmable Gate Array)やASIC(Application Specific Integrated Circuit))を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
本明細書中では、OSINTをインターネットから収集可能な、ニュース記事やSNS(Sorcial Network Service)といった、自然言語で記述された非構造な公開情報と定義する。
(システム概要)
図1は、本発明を実施する為のシステム構成の概要を示す図である。本システムを構成する要素として、通信ネットワークN1、通信ネットワークN2、通信ネットワークN3、通信ネットワークN4、WebページM1、OSINTメッセージM2、検索リクエストM3、検索レスポンスM4、アラートM5、フィードバックM6、セキュリティ情報関連付け装置10、Webサイト20、OSINT処理装置30、セキュリティ機器40、インシデント処理装置50、とを含む。
通信ネットワークN1は、WAN(World Area Network)、携帯電話、PHSなどの公衆回線網でもよい。Webサイト20、OSINT処理装置30の間の通信は、通信ネットワークN1を介して行われる。
通信ネットワークN2は、WANやLAN(Local Area Network)、携帯電話、PHS等の公衆回線網でもよい。セキュリティ情報関連付け装置10とOSINT処理装置30の間の通信は、通信ネットワークN2を介して行われる。
通信ネットワークN3は、WANやLAN、携帯電話、PHS等の公衆回線網でもよい。セキュリティ情報関連付け装置10とインシデント処理装置50の間の通信は、通信ネットワークN3を介して行われる。
通信ネットワークN4は、WANやLAN、携帯電話、PHS等の公衆回線網でもよい。セキュリティ機器40とインシデント処理装置50の間の通信は、通信ネットワークN4を介して行われる。
通信ネットワークN1、通信ネットワークN2、通信ネットワークN3、通信ネットワークN4は異なるネットワークであってもよいし、同一のネットワークであってもよい。ただしWebサイト20はインターネット上に存在することを想定するため、LANは通信ネットワークN1にはなり得ない。
WebページM1は、Webサイト20からOSINT処理装置30へ送信される電文であり、いわゆるWebページおよび周辺のコンテンツを含む。検索リクエストM3は、インシデント処理装置50からセキュリティ情報関連付け装置10に送信される電文であり、関連付け対象となるアラートを含む。検索レスポンスM4は、検索リクエストM3への返信としてセキュリティ情報関連付け装置10からインシデント処理装置50に送信される電文であり、アラートに関連付けられたOSINTメッセージが含まれる。アラートM5は、セキュリティ機器40からインシデント処理装置50に送信される電文であり、何らかの攻撃を検知したことを示し、その詳細が記載されている。フィードバックM6は、検索レスポンスM4に対する有用性の評価であり、インシデント処理装置50からセキュリティ情報関連付け装置10に送信される。
セキュリティ関連情報関連付け装置10は、インシデント処理装置50から受信した検索リクエストM3とOSINT処理装置30から受信したOSINTメッセージM2との関連づけを行うことを主たる処理とする装置である。セキュリティ関連情報関連付け装置10は、OSINT受付部100、攻撃記述抽出部110、サイバー語彙翻訳部120、語彙類似度算出130、リクエスト受付部140、情報保管DB(Data base)200、時刻形式DB300、場所形式DB400、事象形式DB500、時刻変換DB600、場所変換DB700、事象変換DB800を有して構成される。なお、以下では、情報セキュリティ支援システムとして、OSINT受付部100、攻撃記述抽出部110、サイバー語彙翻訳部120、語彙類似度算出130、リクエスト受付部140といった各機能部、情報保管DB200、時刻形式DB300、場所形式DB400、事象形式DB500、時刻変換DB600、場所変換DB700、事象変換DB800といった各記憶部が、ハードウェアとしては一般的なコンピュータであるセキュリティ関連情報関連付け装置10に設けられているが、これらの全部または一部が、クラウドのような1または複数のコンピュータに分散して設けられ、互いに通信することにより同様の機能を実現してもよい。
OSINT受付部100は、OSINT処理装置30から受信したOSINTメッセージM2を情報保管DB200に保管する。
攻撃記述抽出部110は、OSINTメッセージM2を分析し、サイバー攻撃に関連する可能性がある記述を抽出し、「攻撃記述」として情報保管DB200に保管する。具体的には、攻撃に関連する可能性がある場所情報・時刻・事象といった情報が対象となる。
サイバー語彙翻訳部120は、「攻撃記述」の記載内容を、サイバー空間における事象を記述する際に使用される語彙に変換し、「サイバー語彙」として、情報保管DB200に保管する。具体的には、サイバー語彙翻訳部120は、物理的な場所情報をIPアドレス空間にマッピングするなどの処理を行う。
語彙類似度算出部130は、アラートM5の内容と情報保管DB200に保存された「サイバー語彙」との間で類似度を計算し、類似性が高い「サイバー語彙」に対応するOSINTメッセージM2をインシデント処理装置50に検索レスポンスM4として返信する。
リクエスト受付部140は、インシデント処理装置50より検索リクエストM3を受信すると、内包するアラートM5を入力として、語彙類似度算出部130を実行する。
時刻形式DB300、場所形式DB400、事象形式DB500は、いずれも攻撃記述抽出部110が攻撃記述を抽出する際に参照するデータベースである。
時刻変換DB600、場所変換DB700、事象変換DB800は、いずれもサイバー語彙翻訳部120が攻撃記述をサイバー語彙へ変換する際に参照するデータベースである。
Webサイト20は、インターネット上に設置されたWebサーバでSNSやニュースサイトを扱っているものである。OSINT処理装置30は、Webサイト20にアクセスしてOSINTを収集する。収集されたOSINTは、OSINTメッセージM2としてセキュリティ情報関連付け装置10に送信される。本明細書では、OSINT処理装置30について、Webサイト20にアクセスすることとOSINTメッセージM2を送信すること以外の機能には制約を設けない。OSINT処理装置30は、セキュリティ情報関連付け装置10と同じ組織が運用してもよいし、全く別の組織であってもよい。
セキュリティ機器40は、ファイアーウォールやIDS(侵入検知システム)、アンチウイルスソフトといったセキュリティ機器全般を示す。セキュリティ機器40は、攻撃を検知するとアラートM5をインシデント処理装置50に送信する。インシデント処理装置50は、インシデント・レスポンスを実施するのに必要な、一般的な機能を擁しているものとする。セキュリティ機器40とインシデント処理装置50は、同じ組織が運用していることを想定するが、異なる組織が運用してもよい。インシデント処理装置50は、アラートM5に対応するにあたり、必要なOSINTを入手するために検索リクエストM3をセキュリティ情報関連付け装置10に送信し、その結果として検索レスポンスM4を得る。インシデント処理装置50とセキュリティ情報関連付け装置10は、同じ組織が運用してもよいし、異なる組織が運用してもよい。異なる組織が運用する場合、セキュリティ情報関連付け装置10は、OSINTとアラート情報とを関連付けするサービスを提供する装置と位置付けられる。
(メッセージ例)
図2は、OSINTメッセージM2、アラートM5及び、対応する攻撃記述、サイバー語彙の一例を示す。E1は、OSINTメッセージM2の一例である。自然言語で記述されており、明確な構造を持たない。一方、E4は、アラートM5の一例である。E4は、攻撃の発生日時として「Date:2019-06-011 01:00:00(GMT)」、攻撃の種類として「Type:DDoS Attempt」、攻撃元のIPアドレスとして「Src:a.1.1.1」、攻撃先のIPアドレスとして「Dst:c.0.0.1」という4種類の属性を持つ。
E2は、攻撃記述抽出部110により、E1から攻撃記述を抽出したものとなる。E2は、攻撃に関連する可能性がある事象として「[事象]Internetに繋がりづらい~、対立中、サイバー攻撃」、攻撃発生時刻である可能性として「[日時]令和元年六月十日、昨日から~」攻撃の発生元である可能性がある場所として「[攻撃元場所]A国から、」、攻撃を受けた可能性がある場所として「[攻撃先場所]B国インフラ企業へ」という4種類の属性を持つ。
E3は、サイバー語彙翻訳部120により、E2をサイバー語彙に変換したものになる。E3は、サイバー攻撃の種類として「Attack Vector:DDoS」、攻撃日時として「Date:[2019-0609~10]」、攻撃元IPアドレスとして「SrcIP:a.0.0.0/8」、攻撃先IPアドレスとして「Dst:b.0.0.0/8」という4種類の属性を持つ。なお、ここで述べるa.0.0.0/8は、「a.0.0.0~a.255.255.255」となるIPアドレスの範囲を示す。b.0.0.0/8に関しても同様である。
図3は、セキュリティ情報関連付け装置10のハードウェア構成を示している。尚、他の装置のハードウェア構成も同様である。
(ハードウェア構成)
ハードウェアは、CPU1、メモリ2、外部記憶装置3、インタフェイス(IF)4、入出力装置5、バス6から構成される。
CPU1は、メモリ内に保存されたプログラムを実行し、各機能の処理ルーチン(OSINT受付部100、攻撃記述抽出部110、サイバー語彙翻訳部120、語彙類似度算出部130、リクエスト受付部140)として具現化させる。
メモリ2は、各機能部を実現するのに必要な実行プログラムを含んでいる。
外部記憶装置3は、HDD(Hard Disk Drive)などから構成され、データの長期記憶を行うのに用いられる。外部記憶装置3は、セキュリティ情報関連付け装置10に含まれる各DBを格納する。
IF4は、セキュリティ情報関連付け装置10を通信ネットワークN3に接続する。
入出力装置5は、セキュリティ情報関連付け装置10をユーザ及び管理者による各種情報の入力、及び格納されている情報の出力を行う。
バス6は、CPU1、メモリ2、外部記憶装置3、IF4、入出力装置5を接続し、機能間の情報のやりとりを実現する。
(データベース構成)
図4に、情報保管DB200の構成例を示す。本DBの各レコードは、OSINTメッセージM2およびこれに対応する攻撃記述、サイバー語彙及びアラートM5の記録を示している。
ID210は、各レコードを一意に識別するための識別子である。
元メッセージ220には、OSINT受付部100が受信したOSINTメッセージM2が入力される。
攻撃記述230には、元メッセージ220から抽出された攻撃記述の内容が記載される。攻撃記述230は、事象231、攻撃元場所232、攻撃先場所233、発生日時234に分割されて記録される。
サイバー語彙240には、攻撃記述230から変換されたサイバー語彙の内容が記載される。サイバー語彙240は、AttackVector241、SrcIP242、DstIP243、Data244に分割されて記録される。SrcIP242、DstIP243はIPアドレスの形式(xxx.xxx.xxx.xxx)をとる。一方、Date244は、「YYYY―MM―DD」といった西暦・月・日からなる形式をとる。
アラート250には、サイバー語彙240との類似度が高いアラートM5が記載される。アラート250は、AttackVector251、SrcIP252,DstIP253、Date254に分割されて記録される。SrcIP252、DstIP253はIPアドレスの形式(xxx.xxx.xxx.xxx)をとる。一方、Date254は、「YYYY―MM―DD」といった西暦・月・日からなる形式をとる。
なお、アラート250に情報が記載される場合は、サイバー語彙240との類似度が高いアラートM5が存在する場合である。そのようなアラートM5がない場合は、アラート250は空白のままである。尚、元メッセージ220に対して、類似度が高いアラートが2つ存在する場合がある。その場合、アラート250と同じ形式を持つアラート250-1が作成され、そこにデータは保存される。3つ以上の場合も同様である。
攻撃確度260は、元メッセージ220に記載された内容がそもそもサイバー攻撃に関連する度合いを定量的に示したものであり、ID210=1の例では+16としている。元メッセージ220が直接サイバー攻撃に直接は言及していない場合でも、過去の事例から鑑みてサイバー攻撃との関連性が高い可能性がある社会・政治・外交に関するものであれば、攻撃確度260には高い値が記載される。攻撃確度260の計算例に関しては後述する。
類似度270は、サイバー語彙240とアラート250との類似度を定量的に示したものであり、ID270=1の例では111としている。類似度270の具体的計算方法に関しては後述する。尚、元メッセージ220に対して、類似度が高いアラートが2つ存在する場合がある。その場合、類似度270と同じ形式を持つ類似度270-1が作成され、そこにデータは保存される。3つ以上の場合も同様である。
図5(a)に、時刻形式DB300の構成例を示す。本DBは、攻撃記述抽出部110が、発生日時234に相当する文を元メッセージ220から抽出するのに使用される。各エントリは、発生日時234として抽出されるべき文の表現形式を示している。
ID301は、各レコードを一意に識別するための識別子である。
想定形式302は、発生日時234に相当する文の形式である。想定形式302には、正規表現など、一般的な文字検索アルゴリズムで使用される形式、および「明日」、「昨日」といった相対的な日時指定の形式が用いられることを想定する。
ID301=1のレコードは、“YYYY/MM/DD”の形式で発生日時234が記述されている文を抽出する形式である。具体例としては “2019/09/21”などがある。
ID301=2のレコードは、“MM/DD/YYYY”の形式で発生日時234が記述されている文を抽出する形式である。具体例としては “09/21/2019”などがある。
ID301=3のレコードは、和暦・月・日の形式で発生日時234が記述されている文を抽出する形式である。具体例としては“令和1年9月21日”などがある。
ID301=4のレコードは、「昨日から」という形式で発生日時234が記述されている文を抽出する形式であり、相対的に発生日時234を指定する。この形式はID211=1~3などで指定された絶対的な発生日時234と組み合わせて使用される。
図5(b)に、場所形式DB400の構成例を示す。本DBは、攻撃記述抽出部110が、攻撃元場所232または攻撃先場所233に相当する文を元メッセージ220から抽出するのに使用される。各エントリは、攻撃元場所232または攻撃先場所233として抽出されるべき文の表現形式を示している。
ID401は、各レコードを一意に識別するための識別子である。
想定形式402には、正規表現など、一般的な文字検索アルゴリズムで使用される形式が用いられることを想定する。
方向403は、「攻撃元」または「攻撃先」の値をとり、想定形式222に一致する文を攻撃元場所232または攻撃先場所233のどちらに分類するかを判断するのに使用される。方向403=「攻撃元」である文は攻撃元場所232に、方向「404」=「攻撃先」である文は攻撃先場所233に分類される。
ID401=1であるレコードは、想定形式402=「A国*から」、方向403=「攻撃元」である。このため、「A国から」、「A国XX地区から」といった文が「攻撃元」として分類される。
ID401=2であるレコードは、想定形式402=「B国*から」、方向403=「攻撃元」である。このため、「B国から」、「B国XX地区から」といった文が「攻撃元」として分類される。
ID401=3であるレコードは、想定形式402=「C国*から」、方向403=「攻撃元」である。このため、「C国から」、「C国XX地区から」といった文が「攻撃元」として分類される。
ID401=4であるレコードは、想定形式402=「A国*へ」、方向403=「攻撃先」である。このため、「A国へ」、「A国XX地区へ」といった文が「攻撃先」として分類される。
ID401=5であるレコードは、想定形式402=「B国*へ」、方向403=「攻撃先」である。このため、「B国へ」、「B国XX地区へ」といった文が「攻撃先」として分類される。
ID401=6であるレコードは、想定形式402=「C国*へ」、方向403=「攻撃先」である。このため、「C国へ」、「C国XX地区へ」といった文が「攻撃先」として分類される。
ID401=7であるレコードは、想定形式402=「<ipadress>から」、方向403=「攻撃元」である。<ipadress>はIPAdress全般を示す形式である。このため、「192.168.0.1から」、「10.0.0.1から」といった文が「攻撃元」として分類される。
ID401=8であるレコードは、想定形式402=「<ipadress>へ」、方向403=「攻撃先」である。「192.168.0.1へ」、「10.0.0.1へ」といった文が「攻撃先」として分類される。
ID401=9であるレコードは、想定形式402=「<攻撃グループ>から」、方向403=「攻撃元」である。<攻撃グループ>は、一般的に知られているサイバー攻撃グループの名称全般を示す形式である。このため、「APT28から」、「HiddenCobraから」といった文が「攻撃元」として分類される。サイバー攻撃グループの名称としては別途、辞書データベースを保持し、変換可能であるものとする。
ID401=10であるレコードは、想定形式402=「<企業名>へ」、方向403=「攻撃先」である。<企業名>は、一般的に知られている企業の名称全般を示す形式である。このため、「△△自動車へ」、「〇〇電機へ」といった文が「企業」として分類される。企業の名称としては別途、辞書データベースを保持し、変換可能であるものとする。
このように、攻撃記述抽出部110は、国名・地域名・攻撃グループ名・企業名が記述された場所形式DB400を参照し、攻撃場所を抽出する。攻撃記述抽出部110の処理手順については図7を用いて後述する。
図5(c)に、事象形式DB500の構成例を示す。本DBは、攻撃記述抽出部110が、事象231に相当する文を元メッセージ220から抽出するのに使用される。各エントリは、事象231として抽出されるべき文の表現形式を示している。
ID501は、各レコードを一意に識別するための識別子である。
想定形式502は、事象として想定するキーワードを指定する。ここでの事象には、直接サイバー攻撃を示唆するものに加えて、過去の経験から、間接的に、サイバー攻撃につながる確度が高いと考えられる社会・政治・外交・軍事の事象も含まれる。
直接/間接503は、事象が直接的にサイバー攻撃を示唆するものか間接的に示唆するものかを区別するのに用いられる。
ID501=1のレコードは、想定形式502=「繋がりづらい」、直接/間接503=「直接」である。
ID501=2のレコードは、想定形式502=「停止」、直接/間接503=「直接」である。
ID501=3のレコードは、想定形式502=「個人情報流出」、直接/間接503=「直接」である。
ID501=4のレコードは、想定形式502=「脅迫」、直接/間接503=「直接」である。
ID501=5のレコードは、想定形式502=「経済制裁」、直接/間接503=「間接」である。
ID501=6のレコードは、想定形式502=「武力行使」、直接/間接503=「間接」である。
ID501=7のレコードは、想定形式502=「テロ予告」、直接/間接503=「間接」である。
ID501=8のレコードは、想定形式502=「サイバー攻撃」、直接/間接503=「直接」である。
ID501=9のレコードは、想定形式502=「対立中」、直接/間接503=「間接」である。
このように、攻撃記述抽出部110は、サイバー攻撃を直接的に示す事象と、過去の経験に基づいて定められた、サイバー攻撃につながる可能性がある間接的な事象とを含む事象形式DB500を参照し、攻撃事象を抽出する。攻撃記述抽出部110の処理手順については図7を用いて後述する。
尚、元メッセージ220における記述形式は、必ずしも想定形式502に一致しない場合が考えられる。例えば、ID501=1の場合では、元メッセージ220には「つながらない」「つながりづらい」「接続ができない」など、意味は近いが異なる文体で記述されている場合が考えられる。このため、攻撃記述抽出部110は、Word2Vecといった機械学習技術を用いた処理を実行することで、想定形式502と類似度が高い文面を元メッセージ220から特定し、抽出してもよい。
図6(a)に、時刻変換DB600の構成例を示す。本DBには、サイバー語彙翻訳部120により、発生日時234をDate244に変換するのに用いられるルールが記述される。Date244が示す時刻の形式は「YYY-MM-DD」である。例えば「2019-09-10」などが該当する。
ID601は各レコードを識別するための識別子である。
個別表現602は、発生日時234のうちDate244への変換対象となる文を示す。
標準表現603は、個別表現602をどのようにDate244へ変換するべきかを指示する演算子もしくは変換の結果を示す。
ID601=1のレコードは、個別表現602として「令和YY年」、標準表現603として「YY+2018」を持つ。このため、例えば発生日時234が「令和1年」の場合、Date244は2019(=1+2018)となる。
ID601=2のレコードは、個別表現602として「上半期」、標準表現603として「04~09」を持つ。このため、例えば、発生日時234が「2019/04/09, 上半期」である場合、Date244は「2019/04~2019/09」となる。
ID601=3のレコードは、個別表現602として「一―三一日」、標準表現603として「01-31」を持つ。この例えば、発生日時245が「三十一日」である場合、Date244は「31」となる。
ID601=4のレコードは、個別表現602として「一―十二月」、標準表現603として「01-12」を持つ。この例えば、発生日時245が「3月」である場合、Date244は「03」となる。
ID601=5のレコードは、個別表現602として「一昨日から」、標準表現603として「-2~0day」を持つ。この例えば、発生日時245が「2019/09/10、一昨日から」である場合、Date244は「2019/09/08~2019/09/10」となる。
ID601=6のレコードは、個別表現602として「昨日から」、標準表現603として「-1~0day」を持つ。この例えば、発生日時245が「2019/09/10、昨日から」である場合、Date244は「2019/09/09~2019/09/10」となる。
図6(b)に、場所変換DB700の構成例を示す。本DBはサイバー語彙翻訳部120により、攻撃元場所232および攻撃先場所233をSrcIP242及びDstIP243に変換するのに用いられる。
ID701は各レコードを識別するための識別子である。
場所702は変換対象となる攻撃元場所232および攻撃先場所233を示す。
ID701=1のレコードは、場所252=「A国」、IPアドレス空間=「a.0.0.0/8」を持つ。これは、A国に割り当てられたIPアドレス空間がa.0.0.0~a.0.0.255であることを意味する。
ID701=2のレコードは、場所252=「B国」、IPアドレス空間=「b.0.0.0/8」を持つ。
ID701=3のレコードは、場所252=「C国」、IPアドレス空間=「c.0.0.0/8」を持つ。
ID701=4のレコードは、場所252=「D国」、IPアドレス空間=「d.0.0.0/8」を持つ。
ID701=5のレコードは、場所252=「<IP address>」、IPアドレス空間=「<IP address>」を持つ。これは、元々のIPアドレスがそのままの形式でSrcIP242またはDstIP243になることを意味する。
ID701=6のレコードは、場所252=「<攻撃グループ>」、IPアドレス空間=「<攻撃グループに紐づくIP>」を持つ。これは、<攻撃グループ>が使用していることが明らかになっているIPアドレスがSrcIP242またはDstIP243になることを意味する。<攻撃グループ>が使用するIPアドレスは、別途データベースで管理されていることを想定する。
ID701=7のレコードは、場所252=「<企業名>」、IPアドレス空間=「<企業に紐づくIP>」を持つ。これは、<企業名>が使用していることが明らかになっているIPアドレスがSrcIP242またはDstIP243になることを意味する。<企業名>が使用するIPアドレスは別途データベースで管理されていることを想定する。
このように、サイバー語彙翻訳部120は、攻撃場所とIPアドレス空間とを対応付ける場所変換DB700を参照し、攻撃場所をサイバー語彙上の場所に変換する。サイバー語彙翻訳部120の処理手順については図8を用いて後述する。
図6(c)に、事象変換DB800の構成例を示す。本DBはサイバー語彙翻訳部120により、事象231をAttackVector241に変換するのに用いられる。
ID801は各レコードを識別するための識別子である。
事象802は変換対象となる事象231を示す。
攻撃種類803は、事象231に対応するサイバー攻撃の種類を示し、この値がAttackVector241に入力される。具体的なサイバー攻撃の種類を特定できない場合は<Unknown>が入力される。
攻撃確度804は、事象802が攻撃につながる確度を定量的に表現した値である。値が大きいほど確度は高くなる。
ID=1は、事象802=「繋がりづらい」、攻撃種類802=「DDoS」、攻撃確度804=「+5」であるレコードを示す。
ID=2は、事象802=「停止」、攻撃種類803=「Disruptive Malware」、攻撃確度804=「+5」であるレコードを示す。
ID=3は、事象802=「個人情報流出」、攻撃種類802=「Information Leak」、攻撃確度804=「+10」であるレコードを示す。
ID=4は、事象802=「脅迫」、攻撃種類802=「Ransomware」、攻撃確度804=「+3」であるレコードを示す。
ID=5は、事象802=「経済制裁」、攻撃種類802=「<Unknown>」、攻撃確度804=「+3」であるレコードを示す。
ID=6は、事象802=「武力行使」、攻撃種類802=「<Unknown>」、攻撃確度804=「+5」であるレコードを示す。
ID=7は、事象802=「テロ予告」、攻撃種類802=「<Unknown>」、攻撃確度804=「+3」であるレコードを示す。
ID=8は、事象802=「サイバー攻撃」、攻撃種類802=「<Unknown>」、攻撃確度804=「+10」であるレコードを示す。
ID=9は、事象802=「対立中」、攻撃種類802=「<Unknown>」、攻撃確度804=「+1」であるレコードを示す。
このように、サイバー語彙翻訳部120は、攻撃事象とサイバー攻撃種類と攻撃の発生確度とを対応付ける事象変換DB800を参照し、攻撃事象をサイバー語彙上の攻撃事象に変換する。サイバー語彙翻訳部120の処理手順については図8を用いて後述する。
尚、事象231における記述形式は、必ずしも事象321に一致しない場合が考えられる。例えば、ID801=1の場合では、事象231には「つながらない」「つながりづらい」「接続ができない」など、意味は近いが異なる文体で記述されている場合が考えられる。このため、サイバー語彙翻訳部120は、Word2Vecといった機械学習技術用いた処理を実行することで、事象802と類似度が高い事象231を特定し、抽出してもよい。
(処理ステップ)
図7は、攻撃記述抽出部110の処理ステップを示すフローチャートである。以下に示すように、攻撃記述抽出部110は、受信したOSINTから、攻撃に関連する記述として、攻撃場所、攻撃時刻、攻撃事象を含む記述を抽出し、情報保管DB200に格納している。
処理ステップS1001において、攻撃記述抽出部110は、OSINT受付部110を介して、OSINT処理装置30より、OSINTメッセージM2を受信する。当該受信においては、OSINT処理装置30が任意のタイミングでOSINTメッセージM2を攻撃記述抽出部110に送信するいわゆるプッシュ型であっても、攻撃記述抽出部110が任意のタイミングでOSINT処理装置30からOISNTメッセージM2を取得するいわゆるプル型のいずれであってもよい。
処理ステップS1002において、攻撃記述抽出部110は、OSINTメッセージM2に対して分かち書きを行う。ここでいう分かち書きとは、文を、言葉の区切りに従って分割する処理を指す。英語のようにあらかじめ語句が空白により分割されている言語においては、本処理ステップは必ずしも実行しなくてもよい。E1の例では、文は以下の通りに分割される。ここではスラッシュを区切り文字とする。以降では分かち書きにより分割された語句をトークンと呼称する。
/[令和元年六月十日]/昨日から、/外交で/対立中の/A国から/B国インフラ企業へ/サイバー攻撃/が/発生、/Internetに/繋がりづらい/模様/
次に、全てのトークンに対して処理ステップS1003~処理S1005が順々に適用される。ただし、隣り合う連続した複数のトークンを1つのトークンとして処理してもよい。
処理ステップS1003においては、攻撃記述抽出部110は、トークンの中から時刻に関する情報を含んでいるものを時刻形式DB300に従って抽出する。E1、E2の例では、/[令和元年六月十日]/がID301=3のレコードに一致し、/昨日から、/が、ID301=4のレコードに一致するため、それぞれ抽出される。
処理ステップS1004においては、攻撃記述抽出部110は、トークンの中から場所に関する情報を含んでいるものを場所形式DB400に従って抽出する。E1、E2の例では、/A国から/がID401=1のレコードに一致し、/B国インフラ企業へ/がID401=5のレコードに一致するため、それぞれ抽出される。
処理ステップS1005においては、攻撃記述抽出部110は、トークンの中から事象に関する情報を含んでいるものを事象形式DB500に従って抽出する。E1、E2の例では、/対立中/がID501=9のレコードに一致し、/サイバー攻撃/がID501=8のレコードに一致し、/Internetに/繋がりづらい/がID501=1のレコードに一致するため、それぞれ抽出される。
処理ステップS1006においては、攻撃記述抽出部110は、処理S1003~処理S1005で抽出したトークンを集約する。
処理ステップS1007においては、攻撃記述抽出部110は、処理S1005において事象に関連するトークンが1つ以上、抽出されたか否かを判定する。攻撃記述抽出部110は、もし事象に関連するトークンが1つ以上されていないと判定した場合(S1007;No)、そもそも受信したOSINTメッセージM2にはサイバー攻撃に関連しうる情報が記載されていなかったと判断し、処理を終了する。
一方、攻撃記述抽出部110は、事象に関連するトークンが1つ以上抽出されていたと判定した場合(S1007;Yes)、S1008に遷移する。尚、時刻および場所にしては、トークンが抽出されていなくてもよい。
処理ステップS1008においては、攻撃記述抽出部110は、受信したOSINTメッセージM2および抽出されたトークンを情報保管DB200に保存する。まず、受信されたOSINTメッセージM2は、情報保管DB200に新規レコードとして保管される。このとき、メッセージの内容は元メッセージ220として保存される。次に、S1003で抽出されたトークンは発生日時234として保管される。次に、S1004で抽出されたトークンは、方向400の値に応じて攻撃元場所232もしくは攻撃先場所233として保管される。次に、S1005で抽出されたトークンは事象231として保管される。尚、本段階では、サイバー語彙240、アラート250、攻撃確度260、類似度270は空白のままである。
図8は、サイバー語彙翻訳部120の処理ステップを示すフローチャートである。以下に示すように、サイバー語彙翻訳部120は、あらかじめ定められた変換形式にしたがって、攻撃記述抽出部110が抽出した攻撃場所、攻撃時刻、攻撃事象を、それぞれサイバー語彙上の場所、サイバー語彙上の攻撃時刻、サイバー語彙上の攻撃事象に変換する。
処理ステップS2001において、サイバー語彙翻訳部120は、情報保管DB200から攻撃記述230を取得する。ここで取得対象となるのはサイバー語彙240が空白であるレコードである。
次いで、処理ステップS2002、S2003、S2004において、攻撃記述230の各構成要素がサイバー語彙に変換される。
処理ステップS2002において、サイバー語彙翻訳部120は、時刻変換DB600を参照に、発生日時234をDate244に変換する。E2、E3の例では、「[令和元年六月十日]」がID601=1、ID601=3、ID601=4のレコードに従って、2019―06―09に変換される。次いで、「昨日から」がID601=4に従って「-1~0day」に変換される。最終的には両者を合わせて、「2019―06-09~2019-06-10」がサイバー語彙となる。
処理ステップS2003において、サイバー語彙翻訳部120は、場所変換DB700を参照に、攻撃元場所232をSrcIP242に、攻撃先場所233をDstIP243にそれぞれ変換する。E2、E3の例では「A国から」が、ID701=1のレコードに従って「a.0.0.0/8」に変換される。次いで、「B国インフラ企業へ」が、ID701=2のレコードに従って「b.0.0.0/8」に変換される。
処理ステップS2004において、サイバー語彙翻訳部120は、事象変換DB800を参照に、事象231をAttackVector241に変換する。E2、E3の例では「Internetに繋がりづらい」は、ID801=1の処理に従って「DDoS」に変換される。一方、ID801=8の「サイバー攻撃」、ID801=9の「対立中」に対応するサイバー語彙は「Unknown」であるため、AttackVector241には変換されない。
また、処理ステップS2004においては、サイバー語彙翻訳部120は、事象802を基に攻撃確度260を求める。E2、E3の例では、ID801=1、8、9のレコードの攻撃確度804の値はそれぞれ「+5」、「+10」、「+1」である。攻撃確度260は、攻撃確度804のそれぞれの値の合計値として求めてもよいし、その他、幾何平均、調和平均、重みづけ平均など一般的な算術式を用いてもよい。攻撃確度804の値との合計値として攻撃確度260を求めると、その値は、16(=5+10+1)となる。
処理ステップS2005においては、サイバー語彙翻訳部120は、これまでの処理ステップの結果を情報保管DB200に保管する。
図9は、語彙類似度算出部130の処理ステップを示すフローチャートである。以下に示すように、語彙類似度算出部130は、サイバー語彙上の場所、サイバー語彙上の攻撃時刻、サイバー語彙上の攻撃事象と、セキュリティアラートに含まれる場所、時刻、事象とを用いて、サイバー語彙とセキュリティアラートとの類似度を算出する。
処理ステップS3001では、語彙類似度算出部130は、リクエスト受付部140を介して、インシデント処理装置50より、検索リクエストM3を受信する。検索リクエストM3の中に含まれているアラートM5を対象に、語彙類似度算出部130は対応するOSINTを検索する。
処理ステップS3002では、語彙類似度算出部130は、アラートM5から必要な情報を抽出する。ここで必要な情報とは、アラートの発生時刻、攻撃の種類、送信元IPアドレス、送信先IPアドレスであり、それぞれ、Date254、AttackVector251、SrcIP252、DstIP253が対応する。以後、アラートM5内の情報を指し示す時もDate254、AttackVector251、SrcIP252、DstIP253を用いる。
処理ステップS3003では、語彙類似度算出部130は、情報保管DB200の各レコードのサイバー語彙240を取得し、レコードごとに、アラートM3との間で類似度を計算する。レコードの算出は処理ステップS3004、S3005、S3006に従う。
尚、時間経過とともに情報保管DB200のレコード数は増加するため、類似度算出対象となるレコードは増えていく。処理を効率的に実施するため、算出対象のレコードを、アラートM3を受信した日時を起点として過去一定期間以内(たとえば一週間以内)に作成されたものに限定してもよい。
処理ステップS3004では、語彙類似度算出部130は、Date244とDate254との類似度を算出する。類似度のスケールはどのような値域を用いてもよいが、ここでは類似度は0から25までの値をとるものとする。類似度の具体的な算出方法は様々に考えられるが、1つの例としては、Date254がDate244に含まれる場合は、「25」、一日の相違がある場合は「15」、二日の相違がある場合は「5」、それ以上の相違がある場合は「0」とする、いったように、日にち間の相違と類似度の値を対応付けることである。E2、E3の例では、一日の相違があるため、ここでの類似度は「15」となる。また、Data244が空白である場合、類似度は「0」となる。
処理ステップS3005では、語彙類似度算出部130は、SrcIP242とSrcIP252、および、DstIP243とDstIP253の間の類似度を計算する。類似度のスケールはどのような値域を用いてもよいが、ここでは類似度は0から25までの値をとるものとする。類似度の具体的な算出方法は様々に考えられるが、1つの例としては、SrcIP252がSrcIP242に含まれる場合は「25」、第一オクテットに1つの相違がある場合は「15」、2つの相違がある場合は「5」、それ以上の相違がある場合は「0」とする、といったようにアドレス間の値の相違と類似度の値を対応付けることである。E2、E3の例では、SrcIP252はSrcIP242に含まれ、同様にDstIP253はDstIP243に含まれるため、送信元IPアドレス、送信先IPアドレスの類似度はいずれも「25」となる。また、SrcIP242が空白である場合、類似度は「0」となる。同様に、DstIP243が空白である場合、類似度は「0」となる。
また、一方で類似度の比較対象としては、SrcIP242とDstIP253、および、DstIP243とSrcIP252の間で行ってもよい。これは、サイバー攻撃を受けた相手が攻撃側に対して反撃を行う場合などは、送信元と送信先がOSINTとアラートとで逆転する場合があるためである。
処理ステップS3006では、語彙類似度算出部130は、AttackVector241とAttackVector251の間の類似度を計算する。類似度のスケールはどのような値域を用いてもよいが、ここでは類似度は0から25までの値をとるものとする。類似度の具体的な算出方法は様々に考えられるが、1つの例としては、AttackVector241とAttackVector251の中に、共通する単語が1つ以上含まれている場合は「25」、そのほかの場合は「0」とする方法である。E2、E3の例では、AttackVector241とAttackVector251のいずれにも「DDoS」という単語が含まれているため、類似度は「25」である。AttackVector241に記載された項目が<Unknown>にしかない場合、類似度は「0」となる。
処理ステップS3007では、語彙類似度算出部130は、S3004、S3005、S3006までに求めた類似度及び攻撃確度260を基に統合類似度を算出する。統合類似度の具体的な算出方法としては、各類似度の単純な合計値でもよいし、その他、幾何平均、調和平均、重みづけ平均など一般的な算術式を用いてもよい。重みづけ平均を用いる場合、S3004、S3005、S3006で計算された各々の類似度、および攻撃確度260に対して一定の重みの値を掛け合わせたのちに、合計値を求めることになる。ここでは、単純な合計値を統合類似度の算出方法として用いることにすると、E2、E3の例では統合類似度=「111(15+25+25+25+16)」と定まる。
このように、語彙類似度算出部130は、セキュリティアラートに含まれる事象が攻撃につながる確度を定量的に表した攻撃の発生確度を用いて、サイバー語彙とセキュリティアラートとの類似度を算出する。
処理ステップS3008では、語彙類似度算出部130は、処理ステップS3007で求めた統合類似度があらかじめ決められた閾値よりも高いか否かを判定する。語彙類似度算出部130は、閾値よりも統合類似度が高いと判定した場合(S3008;Yes)、S3003で処理対象となったサイバー語彙240はアラートM5との関連性が高いと判断し、S3009に進む。
また、別の手段として、S3004、S3005、S3006で計算された各々の類似度、および攻撃確度260に対してそれぞれ個別の閾値を設け、全てもしくは一定数以上の値が閾値を超えた場合に、S3009に進むという方法をとってもよい。
処理ステップS3009では、語彙類似度算出部130は、関連性が高いと判断されたサイバー語彙240に対応づく元メッセージ220および統合類似度の値を、検索レスポンスM4としてインシデント処理装置50に送信する。関連性が高いと判断されたサイバー語彙240が複数ある場合は、その数だけ検索レスポンスM4は送信される。
また、語彙類似度算出部130は、関連するアラートM5をアラート250として保存する。すでに、アラート250に別のアラートに関する値が保存されている場合は、アラート250と同形式をとるアラート250-1を作成し、そこに値を保存する。類似度270についても同様である。
インシデント処理装置50は、検索レスポンスM4がインシデント・レスポンスを行う際に有用であったかどうかを定量的もしくは定性的に評価して、フィードバックM6として、セキュリティ情報関連付け装置10に送信してもよい。評価値が悪かった場合(例えば、5段階評価で、1、2であった場合)、語彙類似度算出部10は、サイバー語彙とセキュリティアラートとの類似度を算出するための各種パラメータの変更を行い、類似度算出処理の改善を図ってもよい。具体的には、語彙類似度算出部10は、統合類似度に対する閾値を高くする、あるいは重みづけ平均を用いている場合は、相対的に高い重みの値を一定量下げるなどの処理が考えられる。
図10は、インシデント処理装置50において、検索対象となるアラートM5および検索レスポンスM4に含まれる元メッセージ220をアナリストに提示する方法の一例である。以下に示すように、語彙類似度算出部130は、サイバー語彙とセキュリティアラートとの類似度が一定以上であるOSINTを、関連OSINTとしてセキュリティアラートの送信元となる端末(例えば、インシデント処理装置50)に送信する。
アナリストが、インシデント処理装置50を操作して、図10に示す提示画面に表示された、検索対象とするアラートをアラート一覧U1のアラート欄から選択し、検索ボタンU2を押下する。インシデント処理装置50は、検索ボタンU2が押下されることで、検索リクエストM3をセキュリティ情報関連付け装置10に送信する。セキュリティ情報関連付け装置10は、検索リクエストM3に含まれるアラートとの関連性が高いと判断されたサイバー語彙240に対応づく元メッセージ220および統合類似度の値を、検索レスポンスM4としてインシデント処理装置50に送信する。
インシデント処理装置50は、その結果であるOSINTおよび統合類似度を含む検索レスポンスM4をセキュリティ情報関連付け装置10から受信し、当該OSINTおよび統合類似度を、上記提示画面に含まれるアラート一覧U1の関連OSINT欄、類似度欄にそれぞれ表示する。アナリストは、アラート一覧U1に提示された関連OSINTの有用性を評価し、その結果をフィードバックフォームU3に入力する。インシデント処理装置50は、フィードバックフォームU3に入力された上記有用性についての評価結果を、フィードバックM6としてセキュリティ情報関連付け装置10に送信することができる。セキュリティ情報関連付け装置10は、インシデント処理装置50から上記有用性についての評価結果を受信すると、上記OSINTおよび統合類似度あるいは図4に示した情報保管DB200に記憶されている元メッセージ220に対応づけて上記評価結果を記憶する。
そして、語彙類似度算出部130は、上記送信元となる端末において入力されたOSINTの有用性を評価したフィードバック値に基づき、サイバー語彙とセキュリティアラートとの類似度の算出に用いたパラメータまたは/および閾値を変更し、セキュリティ情報関連付け装置10に反映させる等の処理を実行する。
このように、本実施例では、攻撃記述抽出部110が、ネットワークを介して収集されたOSINTから、攻撃に関連する記述を抽出し、サイバー語彙翻訳部120が、攻撃記述抽出部110により抽出された記述をサイバー語彙に翻訳し、語彙類似度算出部130が、サイバー語彙翻訳部120により変換されたサイバー語彙と、セキュリティ機器40から発信されたセキュリティアラートとの類似度を算出し、セキュリティアラートに関連性が高いOSINTを特定する。したがって、インシデント・レスポンス発生時に、自然言語で記述され非構造的な公開情報と、固有の文体・構造で記述されたセキュリティアラートとを関連づけることにより、インシデント・レスポンスを実施するオペレータやアナリストは、アラート情報と関連性が高いOSINTを容易に検索することができ、アナリストの効果的・大局的な分析・判断を支援することができる。