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

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

▶ 三菱電機株式会社の特許一覧

特許7654176攻撃可視化装置、攻撃可視化方法、及び攻撃可視化プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-03-21
(45)【発行日】2025-03-31
(54)【発明の名称】攻撃可視化装置、攻撃可視化方法、及び攻撃可視化プログラム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20250324BHJP
【FI】
G06F21/57 370
【請求項の数】 10
(21)【出願番号】P 2024565191
(86)(22)【出願日】2024-08-01
(86)【国際出願番号】 JP2024027576
【審査請求日】2024-11-05
(31)【優先権主張番号】P 2024075367
(32)【優先日】2024-05-07
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】森 郁海
(72)【発明者】
【氏名】板垣 弦矢
(72)【発明者】
【氏名】森 拓海
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2021-179777(JP,A)
【文献】国際公開第2021/255859(WO,A1)
【文献】特開2022-191694(JP,A)
【文献】特許第7334794(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素を対象要素とし、前記対象要素について、1つ以上の攻撃手法の各々を対象攻撃手法とし、各論理式と、各論理式に紐づく各単一条件とに基づいて前記対象攻撃手法の攻撃成立条件を示すグラフであって、前記対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、前記攻撃成立判定グラフを用いて前記対象攻撃手法の成立可否を判定することによって前記対象要素において利用可能である各攻撃手法を特定し、前記対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、前記環境情報と、前記対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである要素グラフを生成する攻撃特定部と、
生成された各要素グラフと、前記分析対象の構成と、前記複数の要素のいずれかの要素である始点要素と、前記複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、前記分析対象における攻撃シナリオを生成する攻撃シナリオ生成部と
を備える攻撃可視化装置。
【請求項2】
前記攻撃可視化装置は、さらに、
生成された各要素グラフと、前記攻撃シナリオに対応する攻撃シナリオグラフとの一部を可視化するための可視化用グラフを可視化条件に応じて生成する可視化部
を備える請求項1に記載の攻撃可視化装置。
【請求項3】
前記可視化部は、前記可視化用グラフとして、前記攻撃手法と、前記攻撃手法に関連する前記分析対象の要素とを表示するグラフを生成する請求項2に記載の攻撃可視化装置。
【請求項4】
前記攻撃特定部は、攻撃データベースが示す各要素に基づいて前記攻撃成立判定グラフを生成し、
前記可視化部は、前記可視化用グラフの要素であるグラフ要素を、前記グラフ要素に対応する情報であって、前記攻撃データベースが示す要素に対応する情報である外部攻撃情報に結びつける請求項2又は3に記載の攻撃可視化装置。
【請求項5】
前記攻撃可視化装置は、さらに、
前記対象攻撃手法の成立可否に関する判定結果を示すデータを保管する第1結果キャッシュ部
を備え、
前記攻撃特定部は、前記対象攻撃手法の成立可否を判定する際に、保管されているデータを活用する請求項1からのいずれか1項に記載の攻撃可視化装置。
【請求項6】
前記攻撃シナリオ生成部は、各要素について攻撃手法間の遷移可否を分析し、各要素について攻撃手法間の遷移可否を分析した結果に基づいて要素間の遷移可否を分析し、
前記攻撃可視化装置は、さらに、
各要素について攻撃手法間の遷移可否に関する分析結果を示すデータを保管する第2結果キャッシュ部
を備え、
前記攻撃シナリオ生成部は、攻撃手法間の遷移可否を分析する際に、保管されているデータを活用する請求項1からのいずれか1項に記載の攻撃可視化装置。
【請求項7】
前記攻撃可視化装置は、さらに、
要素間の遷移可否を分析する際に特定された遷移可能な一連の要素を示すデータを保管する第3結果キャッシュ部
を備え、
前記攻撃シナリオ生成部は、要素間の遷移可否を分析する際に、保管されているデータを活用する請求項1からのいずれか1項に記載の攻撃可視化装置。
【請求項8】
前記環境情報と、前記攻撃手法と、前記攻撃成立条件との少なくとも1つに基づいて前記複数の要素が重複なく複数のグループに分割されており、各グループが1つのクラスに対応するとき、
前記攻撃シナリオ生成部は、要素間の遷移可否を分析する際に、クラス間の遷移可否を分析し、
前記攻撃可視化装置は、さらに、
クラス間の遷移可否に関する分析結果を示すデータを保管する遷移可否判定部
を備え、
前記攻撃シナリオ生成部は、クラス間の遷移可否を分析する際に、保管されているデータを活用する請求項1からのいずれか1項に記載の攻撃可視化装置。
【請求項9】
コンピュータが、サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素を対象要素とし、前記対象要素について、1つ以上の攻撃手法の各々を対象攻撃手法とし、各論理式と、各論理式に紐づく各単一条件とに基づいて前記対象攻撃手法の攻撃成立条件を示すグラフであって、前記対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、前記攻撃成立判定グラフを用いて前記対象攻撃手法の成立可否を判定することによって前記対象要素において利用可能である各攻撃手法を特定し、前記対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、前記環境情報と、前記対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである要素グラフを生成し、
前記コンピュータが、生成された各要素グラフと、前記分析対象の構成と、前記複数の要素のいずれかの要素である始点要素と、前記複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、前記分析対象における攻撃シナリオを生成する攻撃可視化方法。
【請求項10】
サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素を対象要素とし、前記対象要素について、1つ以上の攻撃手法の各々を対象攻撃手法とし、各論理式と、各論理式に紐づく各単一条件とに基づいて前記対象攻撃手法の攻撃成立条件を示すグラフであって、前記対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、前記攻撃成立判定グラフを用いて前記対象攻撃手法の成立可否を判定することによって前記対象要素において利用可能である各攻撃手法を特定し、前記対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、前記環境情報と、前記対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである要素グラフを生成する攻撃特定処理と、
生成された各要素グラフと、前記分析対象の構成と、前記複数の要素のいずれかの要素である始点要素と、前記複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、前記分析対象における攻撃シナリオを生成する攻撃シナリオ生成処理と
をコンピュータである攻撃可視化装置に実行させる攻撃可視化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、攻撃可視化装置、攻撃可視化方法、及び攻撃可視化プログラムに関する。
【背景技術】
【0002】
サイバーセキュリティに関するシナリオベースの脅威分析において、攻撃を可視化する需要がある。特許文献1は、攻撃を可視化する技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【文献】国際公開第2020-195228号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0004】
サイバーセキュリティに関するシナリオベースの脅威分析において、攻撃者の能力と、各機器が持つ脆弱性情報などに基づいて攻撃可否を判定する。そのため、攻撃の成立条件が複雑である。そこで、グラフ表現を活用して攻撃を可視化する手法が考えられる。ここで、特許文献1はグラフ表現を活用して攻撃を可視化する手法を開示していない。
グラフ表現を活用して攻撃を可視化する手法を採用する場合、攻撃の成立判定が矢印の数だけ発生するために攻撃の成立判定の回数が多いという課題がある。また、矢印の終点が重なる部分を重複して判定するために攻撃の成立判定が冗長に存在するという課題がある。
【0005】
本開示は、サイバーセキュリティに関するシナリオベースの脅威分析において、グラフ表現を活用して攻撃を可視化する手法を採用する場合に、攻撃の成立判定の回数を比較的少なくすること、かつ、攻撃の成立判定が冗長に存在しないようにすることを目的とする。
【課題を解決するための手段】
【0006】
本開示に係る攻撃可視化装置は、
サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素を対象要素とし、前記対象要素について、1つ以上の攻撃手法の各々を対象攻撃手法とし、各論理式と、各論理式に紐づく各単一条件とに基づいて前記対象攻撃手法の攻撃成立条件を示すグラフであって、前記対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、前記攻撃成立判定グラフを用いて前記対象攻撃手法の成立可否を判定することによって前記対象要素において利用可能である各攻撃手法を特定し、前記対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、前記環境情報と、前記対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである要素グラフを生成する攻撃特定部と、
生成された各要素グラフと、前記分析対象の構成と、前記複数の要素のいずれかの要素である始点要素と、前記複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、前記分析対象における攻撃シナリオを生成する攻撃シナリオ生成部と
を備える。
【発明の効果】
【0007】
本開示によれば、攻撃特定部が、分析対象を構成する各要素について、攻撃成立判定グラフを用いて攻撃手法の成立可否を判定することにより要素グラフを生成する。また、攻撃シナリオ生成部が、生成された各要素グラフに基づいて要素間の遷移可否を分析することにより攻撃シナリオを生成する。ここで、攻撃成立判定グラフは、各論理式と、各論理式に紐づく各単一条件とに基づいて対象攻撃手法の攻撃成立条件を示すグラフであって、対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである。そのため、攻撃成立判定グラフを用いることにより、攻撃の成立判定の回数を比較的少なくすることができ、かつ、攻撃の成立判定が冗長に存在しないようにすることができる。
従って、本開示によれば、サイバーセキュリティに関するシナリオベースの脅威分析において、グラフ表現を活用して攻撃を可視化する手法を採用する場合に、攻撃の成立判定の回数を比較的少なくすること、かつ、攻撃の成立判定が冗長に存在しないようにすることができる。
【図面の簡単な説明】
【0008】
図1】攻撃シナリオを説明する図。
図2】実施の形態1に係る攻撃可視化システム99の構成例を示す図。
図3】実施の形態1に係る攻撃特定部20の処理を説明する図。
図4】実施の形態1に係る攻撃特定部20の処理を説明する図。
図5】実施の形態1に係る攻撃特定部20の処理を説明する図。
図6】実施の形態1に係る要素グラフ41を説明する図。
図7】実施の形態1に係る攻撃シナリオ生成部50の処理を説明する図。
図8】実施の形態1に係る可視化部70の処理を説明する図。
図9】実施の形態1に係る可視化部70の処理を説明する図。
図10】実施の形態1に係る可視化部70の処理を説明する図。
図11】実施の形態1に係る可視化部70の処理を説明する図。
図12】実施の形態1に係る攻撃可視化装置1のハードウェア構成例を示す図。
図13】実施の形態1に係る攻撃可視化システム99の動作を示すフローチャート。
図14】実施の形態1に係る攻撃可視化システム99の動作を示すフローチャート。
図15】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図16】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図17】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図18】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図19】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図20】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図21】実施の形態1に係る攻撃特定部20の動作を示すフローチャート。
図22】実施の形態1に係る攻撃シナリオ生成部50の動作を示すフローチャート。
図23】実施の形態1に係る攻撃シナリオ生成部50の動作を示すフローチャート。
図24】実施の形態1に係る可視化部70の動作を示すフローチャート。
図25】実施の形態1の変形例に係る攻撃可視化装置1のハードウェア構成例を示す図。
図26】実施の形態2に係る攻撃可視化システム99の構成例を示す図。
図27】実施の形態2に係る結果キャッシュ部100の処理を説明する図。
図28】実施の形態2に係る結果キャッシュ部100の動作を示すフローチャート。
図29】実施の形態2に係る攻撃特定部20の動作を示すフローチャート。
図30】実施の形態2に係る攻撃特定部20の動作を示すフローチャート。
図31】実施の形態2に係る攻撃特定部20の動作を示すフローチャート。
図32】実施の形態2に係る攻撃特定部20の動作を示すフローチャート。
図33】実施の形態2に係る攻撃特定部20の動作を示すフローチャート。
図34】実施の形態3に係る攻撃可視化システム99の構成例を示す図。
図35】実施の形態3に係る攻撃シナリオ生成部50の処理を説明する図。
図36】実施の形態3に係る結果キャッシュ部110の動作を示すフローチャート。
図37】実施の形態3に係る攻撃シナリオ生成部50の動作を示すフローチャート。
図38】実施の形態3に係る効果を説明する図。
図39】実施の形態4に係る攻撃可視化システム99の構成例を示す図。
図40】実施の形態4に係る攻撃シナリオ生成部50及び結果キャッシュ部120の処理を説明する図。
図41】実施の形態4に係る結果キャッシュ部120の動作を示すフローチャート。
図42】実施の形態4に係る攻撃シナリオ生成部50の動作を示すフローチャート。
図43】実施の形態5に係る攻撃可視化システム99の構成例を示す図。
図44】実施の形態5に係る遷移可否判定部130の処理を説明する図。
図45】実施の形態5に係る遷移可否判定部130の動作を示すフローチャート。
図46】実施の形態5に係る攻撃シナリオ生成部50の動作を示すフローチャート。
【発明を実施するための形態】
【0009】
実施の形態の説明及び図面において、同じ要素及び対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略又は簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。また、「部」を、「回路」、「工程」、「手順」、「処理」又は「サーキットリー」に適宜読み替えてもよい。
【0010】
実施の形態1.
以下、本実施の形態について、図面を参照しながら詳細に説明する。
【0011】
***構成の説明***
図1は、本実施の形態における可視化対象である攻撃シナリオの概要を説明する図である。
攻撃シナリオは、システムにおいて成立し得る攻撃を網羅的に示すものである。攻撃はサイバー攻撃とも呼ばれる。攻撃シナリオにおいて、要素単位で攻撃が示されていてもよい。
要素は、攻撃対象であるコンポーネントであり、シナリオベースの脅威分析における分析の最小単位に当たる。要素は、具体例として、PC(Personal Computer)、仮想PC、又はソフトウェアの機能である。要素はシステム構成要素とも呼ばれる。
図1において、攻撃者が、ファイアウォールを突破してシステムに侵入し、内部活動などによってPC及びサーバなどを順に攻撃することにより、目標とするデータベースに到達する様子が示されている。
【0012】
図2は、本実施の形態に係る攻撃可視化システム99の構成例を示している。攻撃可視化システム99は、攻撃可視化装置1と、攻撃データベース30と、外部Webサイト80とから成る。
攻撃可視化装置1は、図2に示すように、攻撃特定部20と、要素グラフ記憶部40と、攻撃シナリオ生成部50と、攻撃シナリオ記憶部60と、可視化部70と、画面90とを備える。攻撃可視化装置1は、攻撃シナリオ可視化装置、又は攻撃シナリオ可視化システムとも呼ばれる。
【0013】
攻撃特定部20は、対象要素について、攻撃成立判定グラフを生成し、攻撃成立判定グラフを用いて対象攻撃手法の成立可否を判定することによって対象要素において利用可能である各攻撃手法を特定し、特定した各攻撃手法に基づいて要素グラフ41を生成する。対象要素は、サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素である。攻撃成立判定グラフは、各論理式と、各論理式に紐づく各単一条件とに基づいて対象攻撃手法の攻撃成立条件を示すグラフであって、対象要素の構成を示す環境情報11と、各単一条件との関係性を示すグラフである。対象攻撃手法は、1つ以上の攻撃手法の各々である。攻撃特定部20は、攻撃データベース30が示す各要素に基づいて攻撃成立判定グラフを生成してもよい。要素グラフ41は、対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、環境情報11と、対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである。攻撃成立条件を「成立条件」と表現することもある。
具体例として、攻撃特定部20は、作業者10から環境情報11を取得し、攻撃データベース30から攻撃情報31を取得し、環境情報11と攻撃情報31とを用いて各要素グラフ41を生成する。
【0014】
作業者10は、攻撃可視化装置1のユーザであり、シナリオベースの脅威分析を実行する主体である。
【0015】
攻撃データベース30は、攻撃情報31を示すデータベースであり、具体例としてMITRE ATT&CK(登録商標)である。
攻撃情報31は、サイバー攻撃に関する情報である。攻撃情報31は、具体例として、サイバー攻撃の手法及び戦術と、キャンペーンと、攻撃者グループと、ソフトウェアと、緩和策と、検知策とを示すデータである。
【0016】
要素グラフ41は、要素ごとに、攻撃データベース30と要素とに基づいて定義されるグラフであり、攻撃成立条件の判定に用いられるグラフである。要素グラフ41は、要素におけるサイバー攻撃と対策とを示すグラフである。
【0017】
図3は、要素グラフ41の概要を説明する図である。図3が示す例において、要素グラフ41は、攻撃クラスと、攻撃成立条件と、環境情報とを適宜接続するものである。本例において、攻撃データベース30はMITRE ATT&CK(登録商標)である。攻撃データベース30が示す戦術と技術とに基づいて攻撃クラスが定義される。また、攻撃データベース30が示す緩和策と攻撃者グループとキャンペーンとソフトウェアと検知策との各々に関するクラスが定義される。
攻撃成立条件は、AND条件と、OR条件と、NOT条件との集合である。攻撃成立条件には、AND条件と、OR条件と、NOT条件とのいずれか1つ又は2つが含まれないこともある。攻撃成立条件は、これらの条件をまとめた複合条件により示されることもある。AND条件と、OR条件との各々は、単一条件クラスの集合から成る。複合条件は、AND条件と同様であるもの単一条件クラス以外のクラスを含む。NOT条件に関する攻撃成立条件は、環境情報内にNOT条件に対応するインスタンスが存在しないことである。
環境情報11は、要素に関する攻撃者の能力と、要素に対して適用されている対策とを示すインスタンスである。攻撃者の能力は、要素において想定される攻撃に当たり、具体例として、キャンペーンと、攻撃者グループと、ソフトウェアとに応じて定まる。対策は、具体例として、緩和策と、検知策とから成る。
【0018】
図4は、攻撃特定部20による要素グラフ41を用いた推論処理を説明する図であり、攻撃成立条件の単一条件が環境情報11内に存在するか否かにより、攻撃手法が利用可能であるか否かを特定する処理を説明する図である。図4は、1つの単一条件が成立するか否かを判定する処理の一例を示している。以下、当該処理を説明する。
まず、図4中の(1)に示すように、攻撃特定部20は攻撃成立条件の成立可否を特定する。本例において、APT19を持つことが攻撃成立の条件として特定される。なお、対策の有無などにより、TrueとFalseとのどちらとも攻撃成立の条件となり得る。Falseが攻撃成立の条件に紐づいている場合において、環境情報11内に対応するインスタンスが存在しないことが攻撃成立条件である。
次に、図4中の(2)に示すように、攻撃特定部20は、環境情報11が単一条件を持つか持たないかを判定する。本例において、グラフの矢印を辿ることにより、APT19クラスを介して、環境情報11に含まれているAPT19インスタンスに到達可能である。そのため、APT19は成立すると判定される。
攻撃特定部20は、複合条件に紐づく全ての条件について、必要に応じて上記のような判定処理を実行する。
【0019】
図5は、攻撃の成立判定の回数が少なくなるように、攻撃特定部20が攻撃の成立判定を実行する処理を説明する図である。
攻撃特定部20は、OR条件について、OR条件の配下の単一条件に関してTrueが出た時点においてTrueと判断する。
攻撃特定部20は、AND条件について、AND条件の配下の単一条件に関してFalseが出た時点においてFalseと判断する。
【0020】
要素グラフ記憶部40は、攻撃特定部20によって生成された各要素グラフ41を記憶する。
【0021】
攻撃シナリオ生成部50は、生成された各要素グラフ41と、分析対象の構成と、複数の要素のいずれかの要素である始点要素と、複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、分析対象における攻撃シナリオを生成する。
具体例として、攻撃シナリオ生成部50は、分析対象情報12と、各要素グラフ41とに基づいて攻撃シナリオグラフ61を生成する。
分析対象情報12は、シナリオベースの脅威分析における分析対象を示す情報である。分析対象情報12は、具体例として、システムの構成と、攻撃の始点と、攻撃の終点とを示す情報である。
攻撃シナリオグラフ61は、シナリオベースの脅威分析における攻撃シナリオを示すグラフである。
【0022】
図6は、要素グラフ41の一例を説明する図である。本例において、戦術順に攻撃手法が示されており、また、各攻撃手法に対応する成立条件と、各成立条件と環境情報11との関係性とが示されている。以下、図6を説明する。
攻撃手法Aは、成立条件1が成立する場合に成立する。攻撃手法Aが成立する場合、攻撃手法Bと、攻撃手法Cとの各々への遷移が発生する。
攻撃手法Bは、成立条件2が成立する場合に成立する。攻撃手法Bが成立する場合、作業者10は、要素1が通信可能な要素へ遷移可能である。
攻撃手法Cは、成立条件3が成立する場合に成立する。攻撃手法Cが成立しない場合、要素1に対する攻撃は終了する。
攻撃手法は、具体例として、MITRE ATT&CK(登録商標)が示す戦術と手法との組み合わせにより定義される。なお、戦術はループしないため、攻撃手法間の遷移の分析においてループ検出は不要である。
【0023】
図7は、攻撃シナリオ生成部50による要素間における攻撃の遷移を分析する処理を説明する図である。攻撃シナリオ生成部50は、攻撃の始点から終点までの経路を分析する際、逆順に経路を探索すること、即ち終点から始点に向かって遷移可否を判断して遷移を辿ることにより、効率的に経路を探索する。攻撃シナリオ生成部50は、逆順に経路を探索することにより、始点から終点までの経路が存在しない場合に、探索の途中で探索を打ち切ることができる。攻撃シナリオ生成部50は、逆順に探索する際、各要素への遷移可否を、遷移先の要素において、遷移元への遷移を可能とする攻撃手法を利用可能であるか否かにより判定する。攻撃シナリオ生成部50は、始点から終点までの全ての経路を抽出する。抽出される各経路は、ループを含まない経路である。
図7に示す例において、全ての経路として、「1→2→3→5」と、「1→2→4→5」と、「1→6→2→3→5」と、「1→6→2→4→5」とがある。ここで、各数字は各要素を示す。
「1→2→3→5」を逆順に評価すると、「5(可)→3(可)→2(可)→1」となる。ここで、ある数字の直後の「可」は、当該ある数字の次の数字に対応する要素において、当該ある数字に対応する要素への遷移を可能とする攻撃手法が成立することを意味する。
「1→2→4→5」を逆順に評価すると、「5(可)→4(不可)→なし」となる。ここで、ある数字の直後の「不可」は、当該ある数字の次の数字に対応する要素において、当該ある数字に対応する要素への遷移を可能とする攻撃手法が成立しないことを意味する。
「1→6→2→3→5」を逆順に評価すると、「5(可)→3(可)→2(可)→6(不可)→なし」となる。
「1→6→2→4→5」を逆順に評価すると、「5(可)→4(不可)→×」となる。
【0024】
攻撃シナリオ記憶部60は、攻撃シナリオ生成部50によって生成された攻撃シナリオグラフ61を記憶する。
【0025】
可視化部70は、生成された各要素グラフ41と、攻撃シナリオに対応する攻撃シナリオグラフ61との一部を可視化するための可視化用グラフ71を可視化条件に応じて生成する。可視化部70は、可視化用グラフ71として、攻撃手法と、攻撃手法に関連する分析対象の要素とを表示するグラフを生成してもよい。可視化部70は、可視化用グラフ71の要素であるグラフ要素を外部攻撃情報に結びつけてもよい。外部攻撃情報は、グラフ要素に対応する情報であって、攻撃データベース30が示す要素に対応する情報である。
具体例として、可視化部70は、攻撃シナリオグラフ61と、可視化条件13とに基づいて可視化用グラフ71を生成する。
【0026】
画面90は、可視化条件13の入力を受け付け、受け付けた可視化条件13に従って可視化用グラフ71を生成するよう可視化部70に指示し、可視化部70によって生成された可視化用グラフ71を表示する。
可視化条件13は、攻撃シナリオの可視化に関する条件である。可視化条件13は、具体例として、攻撃手法若しくは要素に関するフィルタ条件、又は検索ワードである。
【0027】
図8は、可視化用グラフ71の一例を示している。本例において、可視化ツールと、MITRE ATT&CK(登録商標)の説明ページ(外部Webサイト80)とが連携されている。具体的には、可視化用グラフ71が示す各攻撃手法にハイパーリンクが適宜設定されている。画面90に表示されている可視化用グラフ71が示す各攻撃手法が選択されると、画面90において各攻撃手法に対応する説明ページが表示される。また、可視化用グラフ71において、攻撃者の侵入経路と、攻撃者が侵入時に利用する攻撃手法とが示されている。
なお、可視化用グラフ71は、実際には膨大な数のノードから成ることが多い。しかしながら、説明の便宜上、可視化用グラフ71の各例において大幅に簡略化された可視化用グラフ71が示されている。
【0028】
図9は、可視化用グラフ71の一例を示している。本例において、画面90において可視化用グラフ71が示す各要素を選択すると、選択された要素の詳細が画面90に表示される。
要素の詳細の表示において、要素において利用可能な攻撃手法の階層関係が表示される、即ち要素において利用可能な攻撃手法が戦術順に表示される。また、各攻撃手法に対して、各攻撃手法に対応するCVE(Common Vulnerabilities and Exposures)情報が適宜紐づけられている。画面90において各CVE情報が選択されると、画面90において選択されたCVE情報のページ(外部Webサイト80)が表示される。
【0029】
図10は、可視化用グラフ71の一例を示している。本例において、攻撃の種類ごとに表示と非表示とを切り替えることができる。本例の機能は、侵入起点のみ、要素間の遷移のみ、又は脅威の発生に必要な攻撃手法のみを表示したい場合などにおいて活用される。
具体例として、画面90に表示されている5角形のアイコンを選択することにより、攻撃手法AとBとCとDとEとを非表示にし、かつ攻撃手法1と2と3と4と5のみを表示するように表示を切り替えることができる。
【0030】
図11は、可視化用グラフ71の一例を示している。本例において、攻撃手法名を検索ワードとして指定することによって攻撃手法を絞り込んだ場合に、絞り込んだ攻撃手法と、絞り込んだ攻撃手法に関係するシステム構成要素とが表示される。具体的には、検索ワードとして「AAA」を指定することにより、画面90において、攻撃手法名に「AAA」を含む攻撃手法と、「AAA」を含む攻撃手法において使用される各要素とが表示される。
【0031】
図12は、本実施の形態に係る攻撃可視化装置1のハードウェア構成例を示している。攻撃可視化装置1はコンピュータから成る。攻撃可視化装置1は複数のコンピュータから成ってもよい。
【0032】
攻撃可視化装置1は、本図に示すように、プロセッサ201と、メモリ202と、補助記憶装置203と、入出力IF(Interface)204と、通信装置205などのハードウェアを備えるコンピュータである。これらのハードウェアは、信号線209を介して適宜接続されている。
【0033】
プロセッサ201は、演算処理を行うIC(Integrated Circuit)であり、かつ、コンピュータが備えるハードウェアを制御する。プロセッサ201は、具体例として、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、又はGPU(Graphics Processing Unit)である。
攻撃可視化装置1は、プロセッサ201を代替する複数のプロセッサを備えてもよい。複数のプロセッサはプロセッサ201の役割を分担する。
【0034】
メモリ202は、典型的には揮発性の記憶装置であり、具体例としてRAM(Random Access Memory)である。メモリ202は、主記憶装置又はメインメモリとも呼ばれる。メモリ202に記憶されたデータは、必要に応じて補助記憶装置203に保存される。
【0035】
補助記憶装置203は、典型的には不揮発性の記憶装置であり、具体例として、ROM(Read Only Memory)、HDD(Hard Disk Drive)、又はフラッシュメモリである。補助記憶装置203に記憶されたデータは、必要に応じてメモリ202にロードされる。
メモリ202及び補助記憶装置203は一体的に構成されていてもよい。
【0036】
入出力IF204は、入力装置及び出力装置が接続されるポートである。入出力IF204は、具体例として、USB(Universal Serial Bus)端子である。入力装置は、具体例として、キーボード及びマウスである。出力装置は、具体例として、ディスプレイである。
【0037】
通信装置205は、レシーバ及びトランスミッタである。通信装置205は、具体例として、通信チップ又はNIC(Network Interface Card)である。
【0038】
攻撃可視化装置1の各部は、他の装置などと通信する際に、入出力IF204及び通信装置205を適宜用いてもよい。
【0039】
補助記憶装置203は攻撃可視化プログラムを記憶している。攻撃可視化プログラムは、攻撃可視化装置1が備える各部の機能をコンピュータに実現させるプログラムである。攻撃可視化プログラムは、メモリ202にロードされて、プロセッサ201によって実行される。攻撃可視化装置1が備える各部の機能は、ソフトウェアにより実現される。
【0040】
攻撃可視化プログラムを実行する際に用いられるデータと、攻撃可視化プログラムを実行することによって得られるデータなどは、記憶装置に適宜記憶される。攻撃可視化装置1の各部は記憶装置を適宜利用する。記憶装置は、具体例として、メモリ202と、補助記憶装置203と、プロセッサ201内のレジスタと、プロセッサ201内のキャッシュメモリとの少なくとも1つから成る。なお、データという用語と情報という用語とは同等の意味を有することもある。記憶装置は、コンピュータと独立したものであってもよい。
メモリ202及び補助記憶装置203の機能は、他の記憶装置によって実現されてもよい。
【0041】
攻撃可視化プログラムは、コンピュータが読み取り可能な不揮発性の記録媒体に記録されていてもよい。不揮発性の記録媒体は、具体例として、光ディスク又はフラッシュメモリである。攻撃可視化プログラムは、プログラムプロダクトとして提供されてもよい。
【0042】
***動作の説明***
攻撃可視化装置1の動作手順は攻撃可視化方法に相当する。また、攻撃可視化装置1の動作を実現するプログラムは攻撃可視化プログラムに相当する。
【0043】
図13及び図14は、攻撃可視化システム99の動作の一例を示すフローチャートである。図を用いて当該動作を説明する。
【0044】
(ステップS101)
以下、攻撃可視化装置1は、ステップS101からステップS105から成る反復処理においてまだ選択されていない要素を選択要素として選択したものとする。
攻撃特定部20は、選択要素が想定する攻撃者の能力(キャンペーンと、攻撃者グループと、ソフトウェアなど)と、選択要素に対して適用済である緩和策及び検知策と、選択要素のOS(Operating System)などの実行プラットフォームなどを表す環境情報11の入力を作業者10から受け付ける。
【0045】
(ステップS102)
攻撃特定部20は、攻撃データベース30から、選択要素に関する攻撃情報31を取得する。
【0046】
(ステップS103)
まず、攻撃特定部20は、環境情報11に基づき、戦術と攻撃手法とを絞り込む。
次に、攻撃特定部20は、絞り込んだ戦術順に攻撃手法を接続する。さらに、攻撃特定部20は、攻撃手法ごとに攻撃成立条件として、キャンペーンと、攻撃者グループと、ソフトウェアと、緩和策と、検知策とを紐づけるようにグラフを生成する。
その後、攻撃特定部20は、攻撃成立条件と環境情報11とに基づいて、戦術順に攻撃手法が成立するか否かを判定し、利用可能な攻撃手法のみを抽出する。攻撃特定部20は、抽出した攻撃手法に基づき、戦術順に利用可能な攻撃手法を接続した要素グラフ41を生成する。
【0047】
(ステップS104)
攻撃特定部20は、生成した要素グラフ41を要素グラフ記憶部40に保管する。
【0048】
(ステップS105)
全ての要素についてステップS101以降の処理を実行した場合に、攻撃可視化装置1はステップS106に遷移する。それ以外の場合、攻撃可視化装置1はステップS101以降の処理を再度実行する。
【0049】
(ステップS106)
攻撃シナリオ生成部50は、分析対象情報12として、要素グラフ41を特定するための要素クラスと、要素間の接続関係を示したシステム構成と、攻撃の始点と、攻撃の終点との入力を作業者10から受け付ける。
【0050】
(ステップS107)
攻撃シナリオ生成部50は、分析対象情報12が示す要素クラスに基づき、要素グラフ記憶部40から要素グラフ41を取得する。
【0051】
(ステップS108)
攻撃シナリオ生成部50は、攻撃の始点から終点に至るループのない経路を全て抽出し、抽出した各経路について、要素グラフ41を使用して経路の逆順(終点から始点方向)で分析することにより遷移可否を判定する。この際、攻撃シナリオ生成部50は、ある経路上に遷移不可能な要素が含まれる場合に、当該ある経路を除外する。
攻撃シナリオ生成部50は、除外されていない各経路上の各要素に対して利用可能な攻撃手法を接続することにより、攻撃シナリオグラフ61を生成する。
【0052】
(ステップS109)
攻撃シナリオ生成部50は、生成した攻撃シナリオグラフ61を攻撃シナリオ記憶部60に保管する。
【0053】
(ステップS110)
可視化部70は、攻撃シナリオ記憶部60から攻撃シナリオグラフ61を取得する。
【0054】
(ステップS111)
可視化部70は、攻撃シナリオグラフ61が示す攻撃手法に関するWebサイトのURL81を外部Webサイト80から取得する。
【0055】
(ステップS112)
可視化部70は、取得したURL81を用いてWebサイトに対するハイパーリンク91を生成する。
【0056】
(ステップS113)
可視化部70は、攻撃シナリオグラフ61が示す攻撃手法が使用するCVEがある場合、CVEに関するWebサイトのURL81を取得する。
【0057】
(ステップS114)
可視化部70は、取得したURL81を用いてWebサイトに対するハイパーリンク91を生成する。
【0058】
(ステップS115)
可視化部70は、生成したハイパーリンク91を攻撃シナリオグラフ61に対して付加することにより可視化用グラフ71を生成する。
【0059】
(ステップS116)
可視化部70は、可視化用グラフ71を画面90に出力する。これにより、作業者10は、画面90上において可視化用グラフ71を確認することができる。また、作業者10は、ハイパーリンク91をクリックすることにより、攻撃手法又はCVEの詳細が記載されている外部Webサイト80にアクセスすることができる。
【0060】
(ステップS117)
作業者10がハイパーリンク91をクリックした場合、攻撃可視化装置1はステップS118に遷移する。それ以外の場合、攻撃可視化装置1はステップS119に遷移する。
【0061】
(ステップS118)
画面90は、新規タブにおいて、クリックされたハイパーリンク91に対応する外部Webサイト80のWebページをロードする。
【0062】
(ステップS119)
作業者10は、必要に応じて可視化条件13を入力する。
作業者10が可視化条件13を入力した場合、攻撃可視化装置1はステップS120に遷移する。それ以外の場合、攻撃可視化装置1はステップS122に遷移する。
【0063】
(ステップS120)
可視化部70は、可視化条件13を基に、可視化用グラフ71の攻撃手法を戦術単位でフィルタリングする、あるいは、可視化用グラフ71の要素又は攻撃手法名などを対象として検索ワードでフィルタリングする。なお、本ステップにおいてフィルタリング処理が実行された可視化用グラフ71もまた可視化用グラフ71である。
【0064】
(ステップS121)
可視化部70は、フィルタリング処理が実行された可視化用グラフ71を画面90に出力する。
【0065】
(ステップS122)
作業者10が画面90を閉じた場合、攻撃可視化装置1は本フローチャートの処理を終了する。それ以外の場合、攻撃可視化装置1はステップS117に遷移する。
【0066】
図15から図21は、ステップS103における攻撃特定部20の動作の一例を示すフローチャートである。図15から図21を用いて当該動作を説明する。
【0067】
(ステップS201)
攻撃特定部20は、環境情報11に基づいて戦術と攻撃手法とを絞り込む。
【0068】
(ステップS202)
攻撃特定部20は、戦術順に攻撃手法を接続することにより、攻撃手法グラフを生成する。
【0069】
(ステップS203)
全ての攻撃手法に対する処理を実行した場合、攻撃特定部20はステップS232に遷移する。それ以外の場合、攻撃特定部20はステップS204に遷移する。
【0070】
(ステップS204)
攻撃特定部20は、複合条件インスタンスを生成する。複合条件インスタンスは、複合条件クラスのインスタンスである。
【0071】
(ステップS205)
攻撃特定部20は、キャンペーンOR条件インスタンスを生成する。キャンペーンOR条件インスタンスは、キャンペーンOR条件クラスのインスタンスである。
【0072】
(ステップS206)
攻撃特定部20は、攻撃手法を実行可能なキャンペーンを特定し、特定したキャンペーンに関するクラス及びインスタンスを生成する。キャンペーンは攻撃の実例に当たる。
【0073】
(ステップS207)
攻撃特定部20は、キャンペーンクラスの「は成立する?」に対してTrueを接続する。
【0074】
(ステップS208)
攻撃特定部20は、キャンペーンOR条件インスタンスに対してキャンペーンインスタンスを接続する。
【0075】
(ステップS209)
攻撃手法に紐づく未処理のキャンペーンがある場合、攻撃特定部20はステップS206に遷移する。それ以外の場合、攻撃特定部20はステップS230に遷移する。
【0076】
(ステップS210)
攻撃特定部20は、攻撃者グループOR条件インスタンスを生成する。攻撃者グループOR条件インスタンスは、攻撃者グループOR条件クラスのインスタンスである。
【0077】
(ステップS211)
攻撃特定部20は、攻撃手法を実行可能な攻撃者グループを特定し、特定した攻撃者グループに関するクラス及びインスタンスを生成する。
【0078】
(ステップS212)
攻撃特定部20は、攻撃者グループクラスの「は成立する?」に対してTrueを接続する。
【0079】
(ステップS213)
攻撃特定部20は、攻撃者グループOR条件インスタンスに対して攻撃者グループインスタンスを接続する。
【0080】
(ステップS214)
攻撃手法に紐づく未処理の攻撃者グループがある場合、攻撃特定部20はステップS211に遷移する。それ以外の場合、攻撃特定部20はステップS230に遷移する。
【0081】
(ステップS215)
攻撃特定部20は、ソフトウェアOR条件インスタンスを生成する。ソフトウェアOR条件インスタンスは、ソフトウェアOR条件クラスのインスタンスである。
【0082】
(ステップS216)
攻撃特定部20は、攻撃手法を実行可能なソフトウェアを特定し、特定したソフトウェアに関するクラス及びインスタンスを生成する。
【0083】
(ステップS217)
攻撃特定部20は、ソフトウェアクラスの「は成立する?」に対してTrueを接続する。
【0084】
(ステップS218)
攻撃特定部20は、ソフトウェアOR条件インスタンスに対してソフトウェアインスタンスを接続する。
【0085】
(ステップS219)
攻撃手法に紐づく未処理のソフトウェアがある場合、攻撃特定部20はステップS216に遷移する。それ以外の場合、攻撃特定部20はステップS230に遷移する。
【0086】
(ステップS220)
攻撃特定部20は、緩和策AND条件インスタンスを生成する。緩和策AND条件インスタンスは、緩和策AND条件クラスのインスタンスである。
【0087】
(ステップS221)
攻撃特定部20は、攻撃手法を実行可能な緩和策を特定し、特定した緩和策に関するクラス及びインスタンスを生成する。
【0088】
(ステップS222)
攻撃特定部20は、緩和策クラスの「は成立する?」に対してFalseを接続する。
【0089】
(ステップS223)
攻撃特定部20は、緩和策AND条件インスタンスに対して緩和策インスタンスを接続する。
【0090】
(ステップS224)
攻撃手法に紐づく未処理の緩和策がある場合、攻撃特定部20はステップS221に遷移する。それ以外の場合、攻撃特定部20はステップS230に遷移する。
【0091】
(ステップS225)
攻撃特定部20は、検知策AND条件インスタンスを生成する。検知策AND条件インスタンスは、検知策AND条件クラスのインスタンスである。
【0092】
(ステップS226)
攻撃特定部20は、攻撃手法を実行可能な検知策を特定し、特定した検知策に関するクラス及びインスタンスを生成する。
【0093】
(ステップS227)
攻撃特定部20は、検知策クラスの「は成立する?」に対してFalseを接続する。
【0094】
(ステップS228)
攻撃特定部20は、検知策AND条件インスタンスに対して検知策インスタンスを接続する。
【0095】
(ステップS229)
攻撃手法に紐づく未処理の検知策がある場合、攻撃特定部20はステップS226に遷移する。それ以外の場合、攻撃特定部20はステップS230に遷移する。
【0096】
(ステップS230)
攻撃特定部20は、複合条件インスタンスに対して、キャンペーンOR条件インスタンスと、攻撃者グループOR条件インスタンスと、ソフトウェアOR条件インスタンスと、緩和策AND条件インスタンスと、検知策AND条件インスタンスとの各々を接続する。
【0097】
(ステップS231)
攻撃特定部20は、攻撃手法の攻撃成立条件に対して複合条件インスタンスを接続する。
【0098】
(ステップS232)
攻撃特定部20は、要素グラフ41として空のグラフを設定する。
【0099】
(ステップS233)
攻撃特定部20は、攻撃成立条件グラフが示す接続関係を含む攻撃手法のうち、まだ選択されていない攻撃手法を1つ選択し、選択した攻撃手法を変数「攻撃手法」に代入する。
【0100】
(ステップS234)
攻撃特定部20は、「攻撃手法」に紐づく複合条件インスタンスを、変数「複合条件インスタンス」に代入する。
【0101】
(ステップS235)
攻撃特定部20は、変数「キャンペーンRESULT」にFalseを代入する。
【0102】
(ステップS236)
攻撃特定部20は、キャンペーンOR条件インスタンスからキャンペーンインスタンスを1つ選択する。
【0103】
(ステップS237)
攻撃特定部20は、変数「BOOL」に対してキャンペーンクラスの「は成立する?」の値を代入する。
【0104】
(ステップS238)
選択したキャンペーンインスタンスが環境情報11に存在する場合、攻撃特定部20はステップS239に遷移する。それ以外の場合、攻撃特定部20はステップS240に遷移する。
【0105】
(ステップS239)
攻撃特定部20は、変数「キャンペーンRESULT」にTrueを代入する。
【0106】
(ステップS240)
キャンペーンOR条件インスタンスに未処理のキャンペーンインスタンスがある場合、攻撃特定部20はステップS236に遷移する。それ以外の場合、攻撃特定部20はステップS265に遷移する。
【0107】
(ステップS241)
攻撃特定部20は、変数「攻撃者グループRESULT」にFalseを代入する。
【0108】
(ステップS242)
攻撃特定部20は、攻撃者グループOR条件インスタンスから攻撃者グループインスタンスを1つ選択する。
【0109】
(ステップS243)
攻撃特定部20は、変数「BOOL」に対して攻撃者グループクラスの「は成立する?」の値を代入する。
【0110】
(ステップS244)
選択した攻撃者グループインスタンスが環境情報11に存在する場合、攻撃特定部20はステップS245に遷移する。それ以外の場合、攻撃特定部20はステップS246に遷移する。
【0111】
(ステップS245)
攻撃特定部20は、変数「攻撃者グループRESULT」にTrueを代入する。
【0112】
(ステップS246)
攻撃者グループOR条件インスタンスに未処理の攻撃者グループインスタンスがある場合、攻撃特定部20はステップS242に遷移する。それ以外の場合、攻撃特定部20はステップS265に遷移する。
【0113】
(ステップS247)
攻撃特定部20は、変数「ソフトウェアRESULT」にFalseを代入する。
【0114】
(ステップS248)
攻撃特定部20は、ソフトウェアOR条件インスタンスからソフトウェアインスタンスを1つ選択する。
【0115】
(ステップS249)
攻撃特定部20は、変数「BOOL」に対してソフトウェアクラスの「は成立する?」の値を代入する。
【0116】
(ステップS250)
選択したソフトウェアインスタンスが環境情報11に存在する場合、攻撃特定部20はステップS251に遷移する。それ以外の場合、攻撃特定部20はステップS252に遷移する。
【0117】
(ステップS251)
攻撃特定部20は、変数「ソフトウェアRESULT」にTrueを代入する。
【0118】
(ステップS252)
ソフトウェアOR条件インスタンスに未処理のソフトウェアインスタンスがある場合、攻撃特定部20はステップS248に遷移する。それ以外の場合、攻撃特定部20はステップS265に遷移する。
【0119】
(ステップS253)
攻撃特定部20は、変数「緩和策RESULT」にTrueを代入する。
【0120】
(ステップS254)
攻撃特定部20は、緩和策AND条件インスタンスから緩和策インスタンスを1つ選択する。
【0121】
(ステップS255)
攻撃特定部20は、変数「BOOL」に対して緩和策クラスの「は成立する?」の値を代入する。
【0122】
(ステップS256)
選択した緩和策インスタンスが環境情報11に存在する場合、攻撃特定部20はステップS258に遷移する。それ以外の場合、攻撃特定部20はステップS257に遷移する。
【0123】
(ステップS257)
攻撃特定部20は、変数「緩和策RESULT」にFalseを代入する。
【0124】
(ステップS258)
緩和策AND条件インスタンスに未処理の緩和策インスタンスがある場合、攻撃特定部20はステップS254に遷移する。それ以外の場合、攻撃特定部20はステップS265に遷移する。
【0125】
(ステップS259)
攻撃特定部20は、変数「検知策RESULT」にTrueを代入する。
【0126】
(ステップS260)
攻撃特定部20は、検知策AND条件インスタンスから検知策インスタンスを1つ選択する。
【0127】
(ステップS261)
攻撃特定部20は、変数「BOOL」に対して検知策クラスの「は成立する?」の値を代入する。
【0128】
(ステップS262)
選択した検知策インスタンスが環境情報11に存在する場合、攻撃特定部20はステップS264に遷移する。それ以外の場合、攻撃特定部20はステップS263に遷移する。
【0129】
(ステップS263)
攻撃特定部20は、変数「検知策RESULT」にFalseを代入する。
【0130】
(ステップS264)
検知策AND条件インスタンスに未処理の検知策インスタンスがある場合、攻撃特定部20はステップS260に遷移する。それ以外の場合、攻撃特定部20はステップS265に遷移する。
【0131】
(ステップS265)
攻撃特定部20は、変数「複合条件RESULT」に対して、変数「キャンペーンRESULT」と、変数「攻撃者グループRESULT」と、変数「ソフトウェアRESULT」と、変数「緩和策RESULT」と、変数「検知策RESULT」との論理積を代入する。
【0132】
(ステップS266)
変数「複合条件RESULT」の値がTrueである場合、攻撃特定部20はステップS267に遷移する。それ以外の場合、攻撃特定部20はステップS268に遷移する。
【0133】
(ステップS267)
攻撃特定部20は、要素グラフ41に対して「攻撃手法」を追加する。
【0134】
(ステップS268)
攻撃成立条件グラフが示す全ての複合条件インスタンスに対して処理を実行した場合、攻撃特定部20はステップS269に遷移する。それ以外の場合、攻撃特定部20はステップS233に遷移する。
【0135】
(ステップS269)
攻撃特定部20は、要素グラフ41を出力する。
【0136】
図22及び図23は、ステップS108における攻撃シナリオ生成部50の動作の一例を示している。図22及び図23を用いて当該動作を説明する。
【0137】
(ステップS501)
攻撃シナリオ生成部50は、始点要素から終点要素に至る経路を全て抽出し、抽出した各経路を経路群に含める。なお、攻撃シナリオ生成部50はループのある経路を抽出しない。
【0138】
(ステップS502)
攻撃シナリオ生成部50は、攻撃シナリオグラフ61として空のグラフを設定する。
【0139】
(ステップS503)
攻撃シナリオ生成部50は、変数「遷移可否」にTrueを代入する。
【0140】
(ステップS504)
攻撃シナリオ生成部50は、経路群からまだ選択されていない経路を1つ選択し、選択した経路を変数「経路」に代入する。
【0141】
(ステップS505)
攻撃シナリオ生成部50は、「経路」の要素を逆順にソートする。
【0142】
(ステップS506)
攻撃シナリオ生成部50は、「経路」の先頭の要素を選択し、選択した要素を変数「要素」に代入する。
【0143】
(ステップS507)
攻撃シナリオ生成部50は、「要素」のクラスと同じクラスの要素グラフ41を選択する。
【0144】
(ステップS508)
選択した要素グラフ41において遷移に必要な攻撃手法への経路が存在しない場合、攻撃シナリオ生成部50はステップS509に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS510に遷移する。
【0145】
(ステップS509)
攻撃シナリオ生成部50は、変数「遷移可否」にFalseを代入する。
【0146】
(ステップS510)
攻撃シナリオ生成部50は、「経路」から「要素」を取り除く。
【0147】
(ステップS511)
「経路」が空である場合、攻撃シナリオ生成部50はステップS512に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS506に遷移する。
【0148】
(ステップS512)
変数「遷移可否」の値がTrueである場合、攻撃シナリオ生成部50はステップS513に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS514に遷移する。
【0149】
(ステップS513)
攻撃シナリオ生成部50は、攻撃シナリオグラフ61に「経路」を追加する。
【0150】
(ステップS514)
経路群に未処理の経路がある場合、攻撃シナリオ生成部50はステップS503に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS515に遷移する。
【0151】
(ステップS515)
攻撃シナリオ生成部50は、攻撃シナリオグラフ61から要素を1つ選択し、選択した要素を変数「要素」に代入する。
【0152】
(ステップS516)
攻撃シナリオ生成部50は、「要素」のクラスと同じクラスの要素グラフ41を選択する。
【0153】
(ステップS517)
攻撃シナリオ生成部50は、選択した要素グラフ41が示す攻撃手法を全て抽出する。
【0154】
(ステップS518)
攻撃シナリオ生成部50は、攻撃シナリオグラフ61の「要素」に抽出した各攻撃手法を接続する。
【0155】
(ステップS519)
攻撃シナリオグラフ61に未処理の要素がある場合、攻撃シナリオ生成部50はステップS515に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS520に遷移する。
【0156】
(ステップS520)
攻撃シナリオ生成部50は、攻撃シナリオグラフ61を出力する。
【0157】
図24は、ステップS120における可視化部70の動作の一例を示している。図24を用いて当該動作を説明する。
【0158】
(ステップS701)
可視化部70は、可視化用グラフ71に対して攻撃シナリオグラフ61を設定する。
【0159】
(ステップS702)
可視化部70は、可視化用グラフ71が示す「攻撃手法」に対してハイパーリンク91を接続する。
【0160】
(ステップS703)
可視化条件13を通じて可視化する攻撃手法が指定された場合、可視化部70はステップS704に遷移する。それ以外の場合、可視化部70はステップS705に遷移する。
【0161】
(ステップS704)
可視化部70は、可視化用グラフ71のうち、可視化条件13により指定された攻撃手法を可視化する。
【0162】
(ステップS705)
可視化条件13を通じて不可視化する攻撃手法が指定された場合、可視化部70はステップS706に遷移する。それ以外の場合、可視化部70はステップS707に遷移する。
【0163】
(ステップS706)
可視化部70は、可視化用グラフ71のうち、可視化条件13により指定された攻撃手法を不可視化する。
【0164】
(ステップS707)
可視化条件13を通じて攻撃手法の検索ワードが指定された場合、可視化部70はステップS708に遷移する。それ以外の場合、可視化部70はステップS709に遷移する。
【0165】
(ステップS708)
可視化部70は、可視化用グラフ71が示す攻撃手法のうち可視化条件13により指定された検索ワードを含むものを可視化し、それ以外の攻撃手法を不可視化する。
【0166】
(ステップS709)
可視化部70は、可視化用グラフ71を出力する。
【0167】
***実施の形態1の効果の説明***
以上のように、本実施の形態では、複雑な攻撃成立条件を、AND条件とOR条件とNOT条件との少なくともいずれかを示すグラフにより、矛盾がなく、かつ冗長性がなく表現する。そのため、本実施の形態によれば、従来の述語論理又は決定表を用いる手法と比較して、攻撃シナリオを導出するための攻撃成立判定をより高速化することができる。
また、本実施の形態によれば、AND条件とOR条件との各々に関する成立条件の特性を利用し、条件判定を省略することができる。
【0168】
また、様々な条件を設定することなどにより攻撃シナリオを様々な表現形式で可視化する需要があるものの、従来技術において、攻撃シナリオが増えると視認性が低下するという課題がある。一方、本実施の形態では、攻撃シナリオをドリルダウン表示することができ、攻撃の種類に応じて各要素の可視化及び不可視化を切り替えることができ、また、攻撃名を指定して攻撃手法を検索することができる。そのため、本実施の形態によれば、攻撃シナリオが複雑になったり、攻撃シナリオの数が増えたりしても視認性が低下しにくい。
【0169】
***他の構成***
<変形例1>
図25は、本変形例に係る攻撃可視化装置1のハードウェア構成例を示している。
攻撃可視化装置1は、プロセッサ201、プロセッサ201とメモリ202、プロセッサ201と補助記憶装置203、あるいはプロセッサ201とメモリ202と補助記憶装置203とに代えて、処理回路208を備える。
処理回路208は、攻撃可視化装置1が備える各部の少なくとも一部を実現するハードウェアである。
処理回路208は、専用のハードウェアであってもよく、また、メモリ202に格納されるプログラムを実行するプロセッサであってもよい。
【0170】
処理回路208が専用のハードウェアである場合、処理回路208は、具体例として、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)又はこれらの組み合わせである。
攻撃可視化装置1は、処理回路208を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路208の役割を分担する。
【0171】
攻撃可視化装置1において、一部の機能が専用のハードウェアによって実現されて、残りの機能がソフトウェア又はファームウェアによって実現されてもよい。
【0172】
処理回路208は、具体例として、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせにより実現される。
プロセッサ201とメモリ202と補助記憶装置203と処理回路208とを、総称して「プロセッシングサーキットリー」という。つまり、攻撃可視化装置1の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
他の実施の形態に係る攻撃可視化装置1についても、本変形例と同様の構成であってもよい。
【0173】
実施の形態2.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
【0174】
***構成の説明***
図26は、本実施の形態に係る攻撃可視化システム99の構成例を示している。
本実施の形態に係る攻撃可視化装置1は、実施の形態1と比較して、結果キャッシュ部100をさらに備える。
【0175】
結果キャッシュ部100は、攻撃成立条件21を受け付け、受け付けた攻撃成立条件21に対応する結果22を出力する。結果キャッシュ部100は第1結果キャッシュ部とも呼ばれる。第1結果キャッシュ部は、対象攻撃手法の成立可否に関する判定結果を示すデータを保管する。
攻撃成立条件21は、攻撃成立条件21に対応する判定結果を結果キャッシュ部100に対して問い合わせることに用いられる。
攻撃成立条件21が過去に判定済である場合、結果22は攻撃成立条件21に対応する判定結果を示す情報である。それ以外の場合、結果22は、攻撃成立条件21が過去に判定済ではないことを示す情報である。
【0176】
図27は、結果キャッシュ部100の処理を説明する図である。ここで、同一要素内において環境情報11は変化しない。そのため、同一の単一条件に関する判定結果は変化しない。そこで、結果キャッシュ部100は、攻撃成立条件が示す単一条件のうち、過去に判定済である単一条件に関する判定結果を直ちに返却する。
図27が示す例において、「execution_Python_OR条件」と「initial-access_Drive-by-Compromise_OR条件」との判定において、共に「APT19を持つか?」という単一条件の判定が実行される。そのため、結果キャッシュ部100は、「execution_Python_OR条件」に関して当該単一条件がTrueと判定済である場合に、「initial-access_Drive-by-Compromise_OR条件」を即時にTrueと判定する。
【0177】
本実施の形態に係る攻撃特定部20は、対象攻撃手法の成立可否を判定する際に、結果キャッシュ部100に保管されているデータを活用する。つまり、攻撃特定部20は、単一条件の判定において結果キャッシュ部100を活用する。
【0178】
***動作の説明***
攻撃可視化システム99の動作に関して、実施の形態1との差分を主に説明する。
【0179】
(ステップS103)
攻撃特定部20は、実施の形態1に係るステップS103の処理と同じ処理を実行する。ただし、攻撃特定部20は、攻撃手法の成立判定結果を結果キャッシュ部100に保管する。また、攻撃特定部20は、各攻撃手法の成立判定前に、攻撃成立条件21が過去に判定済であるか否かを結果キャッシュ部100に対して問い合わせる。攻撃特定部20は、ある攻撃手法が過去に判定済である場合、結果キャッシュ部100からある当該ある攻撃手法に対応する結果22を受け取る。
【0180】
図28は、結果キャッシュ部100の動作の一例を示すフローチャートである。図28を用いて当該動作を説明する。
【0181】
(ステップS291)
攻撃成立条件21であるcと、cに関する判定結果rとを受信した場合、結果キャッシュ部100はステップS292に遷移する。それ以外の場合、結果キャッシュ部100はステップS293に遷移する。cは各インスタンスに対応する。
【0182】
(ステップS292)
結果キャッシュ部100は、H(c)=rとして保存する。
【0183】
(ステップS293)
攻撃成立条件21であるcを受信した場合、結果キャッシュ部100はステップS294に遷移する。それ以外の場合、結果キャッシュ部100はステップS297に遷移する。
【0184】
(ステップS294)
H(c)の値が結果キャッシュ部100に存在する場合、結果キャッシュ部100はステップS295に遷移する。それ以外の場合、結果キャッシュ部100はステップS296に遷移する。
【0185】
(ステップS295)
結果キャッシュ部100は、結果22にH(c)を代入する。
【0186】
(ステップS296)
結果キャッシュ部100は、結果22を空にする。
【0187】
(ステップS297)
結果キャッシュ部100は、結果22を出力する。
【0188】
図29から図33は、本実施の形態に係る攻撃特定部20の動作の一例を示す。攻撃特定部20の動作に関して、図29から図33を用いて実施の形態1との差分を主に説明する。
【0189】
(ステップS271)
攻撃特定部20は、結果キャッシュ部100に対してキャンペーンインスタンスの判定結果があるか否かを問い合わせることにより結果22を取得する。
【0190】
(ステップS272)
結果22が空である場合、攻撃特定部20はステップS237に遷移する。それ以外の場合、攻撃特定部20はステップS273に遷移する。
【0191】
(ステップS273)
攻撃特定部20は、変数「キャンペーンRESULT」に結果22を代入する。
【0192】
(ステップS274)
攻撃特定部20は、キャンペーンインスタンスの判定結果、即ちキャンペーンRESULTの値を結果キャッシュ部100に保管する。
【0193】
(ステップS275)
キャンペーンRESULTの値がTrueである場合、攻撃特定部20はステップS265に遷移する。それ以外の場合、攻撃特定部20はステップS240に遷移する。
【0194】
(ステップS276)
攻撃特定部20は、結果キャッシュ部100に対して攻撃者グループインスタンスの判定結果があるか否かを問い合わせることにより結果22を取得する。
【0195】
(ステップS277)
結果22が空である場合、攻撃特定部20はステップS243に遷移する。それ以外の場合、攻撃特定部20はステップS278に遷移する。
【0196】
(ステップS278)
攻撃特定部20は、変数「攻撃者グループRESULT」に結果22を代入する。
【0197】
(ステップS279)
攻撃特定部20は、攻撃者グループインスタンスの判定結果、即ち攻撃者グループRESULTの値を結果キャッシュ部100に保管する。
【0198】
(ステップS280)
攻撃者グループRESULTの値がTrueである場合、攻撃特定部20はステップS265に遷移する。それ以外の場合、攻撃特定部20はステップS246に遷移する。
【0199】
(ステップS281)
攻撃特定部20は、結果キャッシュ部100に対してソフトウェアインスタンスの判定結果があるか否かを問い合わせることにより結果22を取得する。
【0200】
(ステップS282)
結果22が空である場合、攻撃特定部20はステップS249に遷移する。それ以外の場合、攻撃特定部20はステップS283に遷移する。
【0201】
(ステップS283)
攻撃特定部20は、変数「ソフトウェアRESULT」に結果22を代入する。
【0202】
(ステップS284)
攻撃特定部20は、ソフトウェアインスタンスの判定結果、即ちソフトウェアRESULTの値を結果キャッシュ部100に保管する。
【0203】
(ステップS285)
ソフトウェアRESULTの値がTrueである場合、攻撃特定部20はステップS265に遷移する。それ以外の場合、攻撃特定部20はステップS252に遷移する。
【0204】
(ステップS286)
攻撃特定部20は、結果キャッシュ部100に対して緩和策インスタンスの判定結果があるか否かを問い合わせることにより結果22を取得する。
【0205】
(ステップS287)
結果22が空である場合、攻撃特定部20はステップS255に遷移する。それ以外の場合、攻撃特定部20はステップS288に遷移する。
【0206】
(ステップS288)
攻撃特定部20は、変数「緩和策RESULT」に結果22を代入する。
【0207】
(ステップS289)
攻撃特定部20は、緩和策インスタンスの判定結果、即ち緩和策RESULTの値を結果キャッシュ部100に保管する。
【0208】
(ステップS290)
緩和策RESULTの値がFalseである場合、攻撃特定部20はステップS265に遷移する。それ以外の場合、攻撃特定部20はステップS258に遷移する。
【0209】
(ステップS291)
攻撃特定部20は、結果キャッシュ部100に対して検知策インスタンスの判定結果があるか否かを問い合わせることにより結果22を取得する。
【0210】
(ステップS292)
結果22が空である場合、攻撃特定部20はステップS261に遷移する。それ以外の場合、攻撃特定部20はステップS293に遷移する。
【0211】
(ステップS293)
攻撃特定部20は、変数「検知策RESULT」に結果22を代入する。
【0212】
(ステップS294)
攻撃特定部20は、検知策インスタンスの判定結果、即ち検知策RESULTの値を結果キャッシュ部100に保管する。
【0213】
(ステップS295)
検知策RESULTの値がFalseである場合、攻撃特定部20はステップS265に遷移する。それ以外の場合、攻撃特定部20はステップS264に遷移する。
【0214】
***実施の形態2の効果の説明***
以上のように、本実施の形態によれば、過去に判定済である単一条件に関する判定結果を活用することにより、攻撃成立条件の判定がより高速化する。
【0215】
実施の形態3.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
【0216】
***構成の説明***
図34は、本実施の形態に係る攻撃可視化システム99の構成例を示している。
本実施の形態に係る攻撃可視化装置1は、実施の形態1と比較して、結果キャッシュ部110をさらに備える。
【0217】
結果キャッシュ部110は、過去に攻撃の成立条件を判定した一連の攻撃手法に関する判定結果を保管する。結果キャッシュ部110は第2結果キャッシュ部とも呼ばれる。第2結果キャッシュ部は、各要素について攻撃手法間の遷移可否に関する分析結果を示すデータを保管する。
【0218】
本実施の形態に係る攻撃シナリオ生成部50は、到達可能な攻撃手法の特定時に、結果キャッシュ部110を活用することにより、過去に攻撃の成立条件を判定した一連の攻撃手法に関する判定を省略する。
具体的には、攻撃シナリオ生成部50は、各要素について攻撃手法間の遷移可否を分析し、各要素について攻撃手法間の遷移可否を分析した結果に基づいて要素間の遷移可否を分析する。また、攻撃シナリオ生成部50は、攻撃手法間の遷移可否を分析する際に、結果キャッシュ部110に保管されているデータを活用する。
【0219】
図35は、攻撃シナリオ生成部50の処理の一例を説明する図である。本例において、攻撃シナリオ生成部50は、「起点1」「起点2」の順で、各起点から到達可能な攻撃手法を特定するものとする。起点1から到達可能な攻撃手法として、「A,B,C,D,E,F」が順に特定されるものとする。起点2から到達可能な攻撃手法として、「G,H,C,D,E,F」が順に特定されるものとする。各アルファベットは各攻撃手法を示している。
ここで、「C,D,E,F」については起点1から到達可能と判定される。そのため、結果キャッシュ部110は、到達可能な一連の攻撃手法として「C,D,E,F」を示すデータを保管する。そこで、攻撃シナリオ生成部50は、起点2から到達可能な攻撃手法の特定時において、HからCに到達可能であると判定した場合に、結果キャッシュ部110を活用することにより「C,D,E,F」については到達可能と判定する。
【0220】
***動作の説明***
攻撃可視化システム99の動作に関して、実施の形態1との差分を主に説明する。
【0221】
(ステップS108)
攻撃シナリオ生成部50は、実施の形態1に係るステップS108の処理と同じ処理を実行する。ただし、攻撃シナリオ生成部50は、遷移可否の判定において、過去に攻撃の成立条件を判定した一連の攻撃手法に対して判定を省略するために、要素グラフ41を入力として結果キャッシュ部110に問い合わせる。攻撃シナリオ生成部50は、問い合わせた結果である結果52を一連の攻撃手法に関する遷移可否の判定結果とする。
【0222】
図36は、結果キャッシュ部110の動作の一例を示している。図36を用いて当該動作を説明する。
【0223】
(ステップS301)
結果キャッシュ部110は、要素グラフ41の入力を受け付ける。
【0224】
(ステップS302)
結果キャッシュ部110は、要素間の遷移に必要な攻撃手法の集合をT(={at1,…,atn})とする。
【0225】
(ステップS303)
結果キャッシュ部110は、要素グラフ41から起点となる要素を選択し、選択した要素を変数aに代入する。
【0226】
(ステップS304)
結果キャッシュ部110は、探索履歴を示す変数Aを空集合とする。
【0227】
(ステップS305)
結果キャッシュ部110は、結果52にFalseを代入する。
【0228】
(ステップS306)
結果キャッシュ部110は、AをAとaの和集合とする。
【0229】
(ステップS307)
H(a)の値が存在する場合、結果キャッシュ部110はステップS308に遷移する。それ以外の場合、結果キャッシュ部110はステップS309に遷移する。
【0230】
(ステップS308)
結果キャッシュ部110は、結果52にH(a)を代入し、結果52を出力する。
【0231】
(ステップS309)
aがTの要素である場合、結果キャッシュ部110はステップS310に遷移する。それ以外の場合、結果キャッシュ部110はステップS311に遷移する。
【0232】
(ステップS310)
結果キャッシュ部110は、結果52にTrueを代入する。
【0233】
(ステップS311)
結果キャッシュ部110は、要素グラフ41からaの次の戦術となる要素を選択し、選択した要素を変数aに代入する。ここで、複数の要素が選択されてもよい。
【0234】
(ステップS312)
aが存在する場合、結果キャッシュ部110はステップS306に遷移する。それ以外の場合、結果キャッシュ部110はステップS313に遷移する。
【0235】
(ステップS313)
結果キャッシュ部110は、Aに含まれている任意のa関して、H(a)に結果52を代入する。
【0236】
(ステップS314)
結果キャッシュ部110は、結果52を出力する。
【0237】
図37は、本実施の形態に係る攻撃シナリオ生成部50の動作の一例を示すフローチャートである。攻撃シナリオ生成部50の動作に関して、実施の形態1との差分を主に説明する。
【0238】
(ステップS531)
攻撃シナリオ生成部50は、要素グラフ41を入力として結果キャッシュ部110に対して問い合わせることにより結果52を取得する。
【0239】
(ステップS532)
結果52の値がTrueである場合、攻撃シナリオ生成部50はステップS510に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS509に遷移する。
【0240】
***実施の形態3の効果の説明***
以上のように、本実施の形態によれば、到達可能な攻撃手法に関する過去の判定結果を活用することにより、利用可能な攻撃手法の特定がより高速になる。
また、本実施の形態によれば、図38に示すようなボトルネック構造がある場合、さらに判定の省略による高速化効果が高くなる。
【0241】
実施の形態4.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
【0242】
***構成の説明***
図39は、本実施の形態に係る攻撃可視化システム99の構成例を示している。
本実施の形態に係る攻撃可視化装置1は、実施の形態1と比較して、結果キャッシュ部120をさらに備える。
【0243】
本実施の形態に係る攻撃シナリオ生成部50は、結果キャッシュ部120を活用することにより、要素間の遷移可否に関する判定を適宜省略する。具体的には、攻撃シナリオ生成部50は、要素間の遷移可否を分析する際に、結果キャッシュ部120に保管されているデータを活用する。
【0244】
結果キャッシュ部120は、攻撃シナリオ生成処理において過去に遷移可否が判定された各要素間に関する判定結果をキャッシュする。また、結果キャッシュ部120は、各要素間の遷移可否に関する判定結果をキャッシュしている場合に、各要素間の遷移可否に関する判定結果を即時返却する。結果キャッシュ部120は第3結果キャッシュ部とも呼ばれる。第3結果キャッシュ部は、要素間の遷移可否を分析する際に特定された遷移可能な一連の要素を示すデータを保管する。
【0245】
図40は、攻撃シナリオ生成部50及び結果キャッシュ部120の処理の一例を説明する図である。本例において、要素1が始点であり、要素5が終点である。また、要素間を結ぶ線は要素間に接続関係があることを示している。そのため、全経路として、「1→2→3→5」の順に辿る経路1と、「1→2→4→5」の順に辿る経路2と、「1→6→2→3→5」の順に辿る経路3と、「1→6→2→4→5」の順に辿る経路4とがある。ここで、各数字は各要素を示す。以下、各経路に関する遷移可否を順に判定する処理を説明する。
まず、結果キャッシュ部120は、経路nの未判定要素集合をY(⊂/D)とし、判定済要素集合をD(Dの初期値はφ)とする。ここで、「⊂/」は、包含関係がないことを意味する。攻撃シナリオ生成部50は、Yの各要素について遷移可否を判定する。
次に、攻撃シナリオ生成部50は経路1の各要素について遷移可否を判定する。ここで、Y={1,2,3,5}である。Dは空集合であるため、Yのいずれの要素についてもキャッシュヒットはない。結果キャッシュ部120は、DをD∪Y(={1,2,3,5})とする。
次に、攻撃シナリオ生成部50は経路2の各要素について遷移可否を判定する。ここで、{1,2,5}がキャッシュヒットするため、Y={4}(⊂/{1,2,3,5}(=D))である。結果キャッシュ部120は、DをD∪Y(={1,2,3,4,5})とする。
次に、攻撃シナリオ生成部50は経路3の各要素について遷移可否を判定する。ここで、{1,2,3,5}がキャッシュヒットするため、Y={6}(⊂/{1,2,3,4,5})である。結果キャッシュ部120は、DをD∪Y(={1,2,3,4,5,6})とする。
次に、攻撃シナリオ生成部50は経路4の各要素について遷移可否を判定する。ここで、{1,2,4,5,6}がキャッシュヒットするため、Y=φである。
【0246】
***動作の説明***
攻撃可視化システム99の動作に関して、実施の形態1との差分を主に説明する。
【0247】
(ステップS108)
攻撃シナリオ生成部50は、実施の形態1に係るステップS108の処理と同じ処理を実行する。ただし、攻撃シナリオ生成部50は、遷移可否の判断において、過去に遷移可否を判定した要素間の遷移に関する判定を省略するために、経路53と要素グラフ41とを入力として結果キャッシュ部120に問い合わせる。攻撃シナリオ生成部50は、問い合わせた結果である結果54を遷移可否の判定結果とする。
【0248】
図41は、結果キャッシュ部120の動作の一例を示している。図41を用いて当該動作を説明する。
【0249】
(ステップS401)
結果キャッシュ部120は、経路53の入力を受け付ける。
【0250】
(ステップS402)
結果キャッシュ部120は、要素グラフ41の入力を受け付ける。
【0251】
(ステップS403)
結果キャッシュ部120は、遷移可否判定済要素集合を変数Dに代入する。ここで、当該集合の初期値は空集合である。
【0252】
(ステップS404)
結果キャッシュ部120は、経路53の遷移可否未判定の要素集合を変数Yに代入する。ここで、YはDの部分集合ではない。
【0253】
(ステップS405)
結果キャッシュ部120は、経路53の遷移可否判定済の要素集合をY-に代入する。ここで、Y-はDの部分集合である。なお、表記可能な文字の制約により、図面と明細書の本文との間で異なる表記を用いることがある。「Y-」はYの上に「-」を付した文字と同じである。
【0254】
(ステップS406)
結果キャッシュ部120は、要素eに関する遷移可否(True/False)のキャッシュをH(e)とする。
【0255】
(ステップS407)
結果キャッシュ部120は、結果54にTrueを代入する。
【0256】
(ステップS408)
Y-の任意の要素y-に関してH(y-)がFalseである場合、結果キャッシュ部120はステップS409に遷移する。それ以外の場合、結果キャッシュ部120はステップS410に遷移する。
【0257】
(ステップS409)
結果キャッシュ部120は、結果54にFalseを代入する。
【0258】
(ステップS410)
結果キャッシュ部120は、Yの任意の要素yを選択する。
【0259】
(ステップS411)
結果キャッシュ部120は、要素yに対応する要素グラフ41を選択し、選択した要素グラフ41を変数「要素グラフ」に代入する。
【0260】
(ステップS412)
結果キャッシュ部120は、DをDとyとの和集合とする。
【0261】
(ステップS413)
「要素グラフ」に遷移に必要な攻撃手法への経路が存在しない場合、結果キャッシュ部120はステップS414に遷移する。それ以外の場合、結果キャッシュ部120はステップS416に遷移する。
【0262】
(ステップS414)
結果キャッシュ部120は、結果54にFalseを代入する。
【0263】
(ステップS415)
結果キャッシュ部120は、H(y)にFalseを代入する。
【0264】
(ステップS416)
結果キャッシュ部120は、H(y)にTrueを代入する。
【0265】
(ステップS417)
Yの要素を全て処理した場合、結果キャッシュ部120はステップS418に遷移する。それ以外の場合、結果キャッシュ部120はステップS410に遷移する。
【0266】
(ステップS418)
結果キャッシュ部120は、結果54を出力する。
【0267】
図42は、本実施の形態に係る攻撃シナリオ生成部50の動作の一例を示すフローチャートである。攻撃シナリオ生成部50の動作に関して、実施の形態1との差分を主に説明する。
【0268】
(ステップS541)
攻撃シナリオ生成部50は、経路53と要素グラフ41とを入力として結果キャッシュ部120に対して問い合わせることにより結果54を取得する。
【0269】
(ステップS542)
結果54がTrueである場合、攻撃シナリオ生成部50はステップS513に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS514に遷移する。
【0270】
***実施の形態4の効果の説明***
以上のように、本実施の形態によれば、過去に遷移可否を判定した各要素間を記録するため、より高速に攻撃シナリオを生成することができる。また、本実施の形態によれば、複数の経路間において重複要素が多いほど、キャッシュヒットする可能性が高まるためにより高速に攻撃シナリオを生成することができる
【0271】
実施の形態5.
以下、主に前述した実施の形態と異なる点について、図面を参照しながら説明する。
【0272】
***構成の説明***
図43は、本実施の形態に係る攻撃可視化システム99の構成例を示している。
本実施の形態に係る攻撃可視化装置1は、実施の形態1と比較して、遷移可否判定部130をさらに備える。
【0273】
遷移可否判定部130は、システム構成要素のうち、条件が同じである各要素を同一のクラスの要素として扱う。即ち、本実施の形態では、実質的に複数の要素のクラスが適宜集約される。つまり、環境情報11と、攻撃手法と、攻撃成立条件との少なくとも1つに基づいて複数の要素が重複なく複数のグループに分割されており、また、各グループが1つのクラスに対応する。
また、遷移可否判定部130は、クラス間の遷移可否に関する分析結果を示すデータを保管する。
図44は、遷移可否判定部130の処理の一例を説明する図である。本例において、遷移可否判定部130は、各要素のクラスを、FW(Firewall)クラスと、サーバクラスと、PCクラスとの3種類のクラスのいずれかとする。
遷移可否判定部130は、要素間の遷移可否の判定において、クラス間の遷移可否に関する判定結果を使用する。
【0274】
本実施の形態に係る攻撃シナリオ生成部50は、要素間の遷移可否の判定において遷移可否判定部130の判定結果を活用する。具体的には、攻撃シナリオ生成部50は、要素間の遷移可否を分析する際に、クラス間の遷移可否を分析する。また、攻撃シナリオ生成部50は、クラス間の遷移可否を分析する際に、遷移可否判定部130に保管されているデータを活用する。
【0275】
***動作の説明***
攻撃可視化システム99の動作に関して、実施の形態1との差分を主に説明する。
【0276】
(ステップS108)
攻撃シナリオ生成部50は、実施の形態1に係るステップS108の処理と同じ処理を実行する。ただし、攻撃シナリオ生成部50は、経路53と要素グラフ41とを入力として要素間の遷移可否を遷移可否判定部130に問い合わせる。攻撃シナリオ生成部50は、問い合わせた結果である結果55を遷移可否の判定結果とする。ここで、遷移可否判定部130による遷移可否の判定において、経路内の要素のうち同じクラスの要素として扱うことができる複数の要素について、同一の要素グラフ41を使用して遷移可否を判定する。このとき、遷移可否判定部130は、ある要素グラフ41に関する遷移可否を判定済である場合、当該ある要素グラフ41に関する遷移可否の判定において、キャッシュ済の遷移可否判定結果を使用する。
【0277】
図45は、遷移可否判定部130の動作の一例を示すフローチャートである。図45を用いて当該動作を説明する。
【0278】
(ステップS551)
遷移可否判定部130は、経路53を入力として受け付ける。
【0279】
(ステップS552)
遷移可否判定部130は、要素グラフ41を入力として受け付ける。
【0280】
(ステップS553)
遷移可否判定部130は、要素eのクラスをClass(e)とする。
【0281】
(ステップS554)
遷移可否判定部130は、Class(e)に関する遷移可否(True/False)のキャッシュをH(Class(e))とする。
【0282】
(ステップS555)
遷移可否判定部130は、遷移可否判定済要素クラス集合をCとする。ここで、当該集合の初期値は空集合であり、あるH(Class(e))について、Class(e)はCの要素である。
【0283】
(ステップS556)
遷移可否判定部130は、経路53の要素から成る集合をEとする。ここで、eはEの要素である。
【0284】
(ステップS557)
遷移可否判定部130は、結果55にTrueを代入する。
【0285】
(ステップS558)
遷移可否判定部130は、Eの要素のうちまだ選択されていない要素eを選択する。
【0286】
(ステップS559)
Cの任意の要素Class(e)に関する遷移可否が判定済である場合、遷移可否判定部130はステップS560に遷移する。それ以外の場合、遷移可否判定部130はステップS562に遷移する。
【0287】
(ステップS560)
H(Class(e))がFalseである場合、遷移可否判定部130はステップS561に遷移する。それ以外の場合、遷移可否判定部130はステップS567に遷移する。
【0288】
(ステップS561)
遷移可否判定部130は、結果55にFalseを代入する。
【0289】
(ステップS562)
遷移可否判定部130は、Class(e)に対応する要素グラフ41を選択し、選択した要素グラフ41を変数「要素グラフ」に代入する。
【0290】
(ステップS563)
「要素グラフ」に遷移に必要な攻撃手法への経路が存在する場合、遷移可否判定部130はステップS565に遷移する。それ以外の場合、遷移可否判定部130はステップS564に遷移する。
【0291】
(ステップS564)
遷移可否判定部130は、結果55にFalseを代入する。
【0292】
(ステップS565)
遷移可否判定部130は、H(Class(e))に結果55を代入する。
【0293】
(ステップS566)
結果55がFalseである場合、遷移可否判定部130はステップS568に遷移する。それ以外の場合、遷移可否判定部130はステップS567に遷移する。
【0294】
(ステップS567)
Eの全ての要素に対して処理を実行した場合、遷移可否判定部130はステップS568に遷移する。それ以外の場合、遷移可否判定部130はステップS558に遷移する。
【0295】
(ステップS568)
遷移可否判定部130は、結果55を出力する。
【0296】
図46は、攻撃シナリオ生成部50の動作の一例を示すフローチャートである。攻撃シナリオ生成部50の動作に関して、実施の形態1との差分を主に説明する。
【0297】
(ステップS571)
攻撃シナリオ生成部50は、経路53と要素グラフ41とを入力として遷移可否判定部130に対して問い合わせることにより結果55を取得する。
【0298】
(ステップS572)
結果55がTrueである場合、攻撃シナリオ生成部50はステップS513に遷移する。それ以外の場合、攻撃シナリオ生成部50はステップS514に遷移する。
【0299】
***実施の形態5の効果の説明***
以上のように、本実施の形態によれば、要素間の遷移可否に関する判定においてクラス間の遷移可否に関する判定結果を活用するため、攻撃シナリオの生成がより高速化する。また、本実施の形態によれば、同一のクラスとして扱うことができる要素が多いほど、条件判定処理を省略することができる。
【0300】
***他の実施の形態***
前述した各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
また、実施の形態は、実施の形態1から5で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。フローチャートなどを用いて説明した手順は適宜変更されてもよい。
【0301】
以下、本開示の諸態様を付記としてまとめて記載する。
【0302】
(付記1)
サイバーセキュリティに関するシナリオベースの脅威分析における分析対象を構成する複数の要素の各要素を対象要素とし、前記対象要素について、1つ以上の攻撃手法の各々を対象攻撃手法とし、各論理式と、各論理式に紐づく各単一条件とに基づいて前記対象攻撃手法の攻撃成立条件を示すグラフであって、前記対象要素の構成を示す環境情報と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、前記攻撃成立判定グラフを用いて前記対象攻撃手法の成立可否を判定することによって前記対象要素において利用可能である各攻撃手法を特定し、前記対象要素において利用可能である各攻撃手法を戦術順に示すグラフであって、前記環境情報と、前記対象要素において利用可能である各攻撃手法に対応する攻撃成立条件とを示すグラフである要素グラフを生成する攻撃特定部と、
生成された各要素グラフと、前記分析対象の構成と、前記複数の要素のいずれかの要素である始点要素と、前記複数の要素のいずれかの要素である終点要素とに基づいて要素間の遷移可否を分析することにより、前記分析対象における攻撃シナリオを生成する攻撃シナリオ生成部と
を備える攻撃可視化装置。
【0303】
(付記2)
前記攻撃可視化装置は、さらに、
生成された各要素グラフと、前記攻撃シナリオに対応する攻撃シナリオグラフとの一部を可視化するための可視化用グラフを可視化条件に応じて生成する可視化部
を備える付記1に記載の攻撃可視化装置。
【0304】
(付記3)
前記可視化部は、前記可視化用グラフとして、前記攻撃手法と、前記攻撃手法に関連する前記分析対象の要素とを表示するグラフを生成する付記2に記載の攻撃可視化装置。
【0305】
(付記4)
前記攻撃特定部は、攻撃データベースが示す各要素に基づいて前記攻撃成立判定グラフを生成し、
前記可視化部は、前記可視化用グラフの要素であるグラフ要素を、前記グラフ要素に対応する情報であって、前記攻撃データベースが示す要素に対応する情報である外部攻撃情報に結びつける付記2又は3に記載の攻撃可視化装置。
【0306】
(付記5)
前記攻撃可視化装置は、さらに、
前記対象攻撃手法の成立可否に関する判定結果を示すデータを保管する第1結果キャッシュ部
を備え、
前記攻撃特定部は、前記対象攻撃手法の成立可否を判定する際に、保管されているデータを活用する付記1から4のいずれか1つに記載の攻撃可視化装置。
【0307】
(付記6)
前記攻撃シナリオ生成部は、各要素について攻撃手法間の遷移可否を分析し、各要素について攻撃手法間の遷移可否を分析した結果に基づいて要素間の遷移可否を分析し、
前記攻撃可視化装置は、さらに、
各要素について攻撃手法間の遷移可否に関する分析結果を示すデータを保管する第2結果キャッシュ部
を備え、
前記攻撃シナリオ生成部は、攻撃手法間の遷移可否を分析する際に、保管されているデータを活用する付記1から5のいずれか1つに記載の攻撃可視化装置。
【0308】
(付記7)
前記攻撃可視化装置は、さらに、
要素間の遷移可否を分析する際に特定された遷移可能な一連の要素を示すデータを保管する第3結果キャッシュ部
を備え、
前記攻撃シナリオ生成部は、要素間の遷移可否を分析する際に、保管されているデータを活用する付記1から6のいずれか1つに記載の攻撃可視化装置。
【0309】
(付記8)
前記環境情報と、前記攻撃手法と、前記攻撃成立条件との少なくとも1つに基づいて前記複数の要素が重複なく複数のグループに分割されており、各グループが1つのクラスに対応するとき、
前記攻撃シナリオ生成部は、要素間の遷移可否を分析する際に、クラス間の遷移可否を分析し、
前記攻撃可視化装置は、さらに、
クラス間の遷移可否に関する分析結果を示すデータを保管する遷移可否判定部
を備え、
前記攻撃シナリオ生成部は、クラス間の遷移可否を分析する際に、保管されているデータを活用する付記1から7のいずれか1つに記載の攻撃可視化装置。
【符号の説明】
【0310】
1 攻撃可視化装置、10 作業者、11 環境情報、12 分析対象情報、13 可視化条件、20 攻撃特定部、21 攻撃成立条件、22 結果、30 攻撃データベース、31 攻撃情報、40 要素グラフ記憶部、41 要素グラフ、50 攻撃シナリオ生成部、52 結果、53 経路、54,55 結果、60 攻撃シナリオ記憶部、61
攻撃シナリオグラフ、70 可視化部、71 可視化用グラフ、80 外部Webサイト、81 URL、90 画面、91 ハイパーリンク、99 攻撃可視化システム、100,110,120 結果キャッシュ部、130 遷移可否判定部、201 プロセッサ、202 メモリ、203 補助記憶装置、204 入出力IF、205 通信装置、208 処理回路、209 信号線。
【要約】
攻撃可視化装置(1)は、攻撃特定部(20)と攻撃シナリオ生成部(50)とを備える。攻撃特定部(20)は、分析対象の各要素について、各論理式に基づいて攻撃成立条件を示すグラフであって、環境情報(11)と、各単一条件との関係性を示すグラフである攻撃成立判定グラフを生成し、攻撃成立判定グラフを用いて利用可能である各攻撃手法を特定し、利用可能である各攻撃手法を戦術順に示す要素グラフ(41)を生成する。攻撃シナリオ生成部(50)は、生成された各要素グラフ(41)に基づいて要素間の遷移可否を分析することにより、分析対象における攻撃シナリオを生成する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46