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

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

▶ 株式会社東芝の特許一覧

特許7571066攻撃制御装置、攻撃制御システム及びプログラム
<>
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図1
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図2
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図3
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図4
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図5
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図6
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図7
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図8A
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図8B
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図9
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図10
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図11
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図12
  • 特許-攻撃制御装置、攻撃制御システム及びプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-11
(45)【発行日】2024-10-22
(54)【発明の名称】攻撃制御装置、攻撃制御システム及びプログラム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20241015BHJP
【FI】
G06F21/57 370
【請求項の数】 10
(21)【出願番号】P 2022001669
(22)【出願日】2022-01-07
(65)【公開番号】P2023101201
(43)【公開日】2023-07-20
【審査請求日】2024-02-27
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】青木 慧
(72)【発明者】
【氏名】中西 福友
(72)【発明者】
【氏名】春木 洋美
(72)【発明者】
【氏名】石原 大移紀
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2017-146699(JP,A)
【文献】特開2020-107284(JP,A)
【文献】特開2016-218714(JP,A)
【文献】特開2004-341652(JP,A)
【文献】米国特許出願公開第2021/0064762(US,A1)
【文献】津田 侑,標的型攻撃再現のための攻撃シナリオ定義インタフェースの実装 Implementation of an Interface to Define Attacking Scenarios for Reproducing Targeted Attacks,CSS2014 コンピュータセキュリティシンポジウム2014 論文集 合同開催 マルウェア対策研究人材育成ワークショップ2014 情報処理学会シンポジウムシリーズ Vol.2014 No.2 [CD-ROM] ,日本,一般社団法人情報処理学会 コンピュータセキュリティ研究会,2014年10月15日,第2014巻,pp.450~457
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
攻撃シナリオに基づいて実行された多段攻撃の攻撃結果を分析し、前記多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令を検出する検出部と、
前記攻撃結果を記憶装置に記憶する攻撃結果記憶制御部と、
前記攻撃結果から、前記中断されたセッションを確立した攻撃命令を分析する攻撃結果分析部と、
前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する攻撃命令部と、
を備える攻撃制御装置。
【請求項2】
前記攻撃シナリオは、複数の攻撃命令と、前記複数の攻撃命令の依存関係とを含み、
前記攻撃シナリオを前記記憶装置に記憶する攻撃シナリオ記憶制御部を更に備え、
前記攻撃命令部は、前記依存関係に基づいて、前記中断されたセッションを確立した攻撃命令に遡り、前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する、
請求項1に記載の攻撃制御装置。
【請求項3】
前記攻撃シナリオを分析し、複数の攻撃命令と、前記複数の攻撃命令の依存関係とを取得する攻撃シナリオ分析部と、
前記複数の攻撃命令を前記記憶装置に記憶する攻撃命令記憶制御部と、
前記依存関係を記憶装置に記憶する依存関係記憶制御部と、を更に備え、
前記攻撃命令部は、前記依存関係に基づいて、前記中断されたセッションを確立した攻撃命令に遡り、前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する、
請求項1に記載の攻撃制御装置。
【請求項4】
前記攻撃結果は、前記攻撃命令の成否を含み、
前記攻撃結果分析部は、前記攻撃命令の成否から、成功する可能性がより高い攻撃命令を分析し、
前記攻撃命令部は、前記成功する可能性がより高い攻撃命令をより多く含む攻撃シナリオを優先して用いて、攻撃を命令する、
請求項1乃至3のいずれか1項に記載の攻撃制御装置。
【請求項5】
前記攻撃結果分析部は、前記失敗攻撃命令に基づいて、前記セッションが原因で失敗する可能性がより低い攻撃命令を分析し、
前記攻撃命令部は、前記セッションが原因で失敗する可能性がより低い攻撃命令をより多く含む攻撃シナリオを優先して用いて、攻撃を命令する、
請求項1乃至3のいずれか1項に記載の攻撃制御装置。
【請求項6】
前記攻撃命令部は、前記失敗攻撃命令を再実行するときに、利用可能なセッションが既に確立されている場合、前記利用可能なセッションを利用する、
請求項1乃至3のいずれか1項に記載の攻撃制御装置。
【請求項7】
前記攻撃結果分析部は、前記失敗攻撃命令が検出された回数が閾値より大きいか否かを判定し、
前記攻撃命令部は、前記失敗攻撃命令が検出された回数が閾値より大きい場合、前記失敗攻撃命令を含まない攻撃シナリオに基づいて、攻撃を命令する、
請求項1乃至3のいずれか1項に記載の攻撃制御装置。
【請求項8】
前記攻撃命令部からの攻撃の命令に基づいて、攻撃を実行する攻撃実行部、
を更に備える請求項1乃至7のいずれか1項に記載の攻撃制御装置。
【請求項9】
攻撃制御装置と、攻撃実行装置とを備え、
前記攻撃制御装置は、
攻撃シナリオに基づいて実行された多段攻撃の攻撃結果を分析し、前記多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令を検出する検出部と、
前記攻撃結果を記憶装置に記憶する攻撃結果記憶制御部と、
前記攻撃結果から、前記中断されたセッションを確立した攻撃命令を分析する攻撃結果分析部と、
前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する攻撃命令部と、を備え、
前記攻撃実行装置は、前記攻撃命令部からの攻撃の命令に基づいて、攻撃を実行する、
攻撃制御システム。
【請求項10】
コンピュータを、
攻撃シナリオに基づいて実行された多段攻撃の攻撃結果を分析し、前記多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令を検出する検出部と、
前記攻撃結果を記憶装置に記憶する攻撃結果記憶制御部と、
前記攻撃結果から、前記中断されたセッションを確立した攻撃命令を分析する攻撃結果分析部と、
前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する攻撃命令部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は攻撃制御装置、攻撃制御システム及びプログラムに関する。
【背景技術】
【0002】
システムのセキュリティを検証する方法として、攻撃者の視点からシステム内の脆弱性及びセキュリティリスクを評価する技術(例えば、ペネトレーションテスト等)が従来から知られている。実際に攻撃者によるサイバー攻撃の被害を受けるよりも前に、自らサイバー攻撃を試みることで、残存する脆弱性及びセキュリティリスクを未然に把握し、対策を施す検討材料とすることができる。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第5418135号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術では、脆弱性を検出するテストの所要時間を短縮させるとともに、検出精度を向上させることが難しかった。
【課題を解決するための手段】
【0005】
実施形態の攻撃制御装置は、検出部と攻撃結果記憶制御部と攻撃結果分析部と攻撃命令部とを備える。検出部は、攻撃シナリオに基づいて実行された多段攻撃の攻撃結果を分析し、前記多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令を検出する。攻撃結果記憶制御部は、前記攻撃結果を記憶装置に記憶する。攻撃結果分析部は、前記攻撃結果から、前記中断されたセッションを確立した攻撃命令を分析する。攻撃命令部は、前記中断されたセッションを確立した攻撃命令から、前記多段攻撃を再開する。
【図面の簡単な説明】
【0006】
図1】第1実施形態の攻撃制御システムの装置構成の例を示す図。
図2】第1実施形態の攻撃制御装置の機能構成の例を示す図。
図3】第1実施形態の攻撃シナリオの例を示す図。
図4】第1実施形態の攻撃結果群の例を示す図。
図5】第1実施形態のセッション情報の例を示す図。
図6】第1実施形態の攻撃制御方法の例を示すフローチャート。
図7】第2実施形態の攻撃制御装置の機能構成の例を示す図。
図8A】第2実施形態の第2攻撃シナリオの例を示す図。
図8B】第2実施形態の攻撃命令群の例を示す図。
図9】第2実施形態の攻撃制御方法の例を示すフローチャート。
図10】第3実施形態の装置構成の例を示す図。
図11】第3実施形態の攻撃制御装置の機能構成の例を示す図。
図12】第3実施形態の攻撃制御方法の例を示すフローチャート。
図13】第1乃至第3実施形態の攻撃制御装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、攻撃制御装置、攻撃制御システム及びプログラムの実施形態を詳細に説明する。
【0008】
例えば、ペネトレーションテストは、攻撃者視点の知識及びスキル等を有したセキュリティ専門家によって実行されている。予め定めた攻撃目標を達成するための攻撃経路及びシナリオは、攻撃者視点の知識及びスキル等を有したセキュリティ専門家により手作業で作成されている。ゆえに、ペネトレーションテストの品質は、ペネトレーションテスターの知識及びスキル等に依存している場合が多い。
【0009】
既存のペネトレーションテストは、攻撃失敗時の原因を分析し、攻撃に利用しているセッションが切れてしまったことが原因による攻撃失敗の場合には、再度切断されたセッションを張りなおして攻撃を再実施しなければならない。手動でペネトレーションテストを行う際には、攻撃失敗原因の分析及び攻撃の再実施に作業工数が割かれるという課題がある。
【0010】
(第1実施形態)
はじめに、第1実施形態の攻撃制御システムの装置構成の例について説明する。
【0011】
[装置構成の例]
図1は第1実施形態の攻撃制御システム10の装置構成の例を示す図である。第1実施形態の攻撃制御システム10は、攻撃制御装置100、攻撃モジュール記憶装置200及び攻撃実行装置300を備える。
【0012】
攻撃制御装置100は、攻撃実行装置300に攻撃命令を送信し、攻撃実行装置300から攻撃結果を受信する。
【0013】
攻撃モジュール記憶装置200は、攻撃モジュールを記憶する。第1実施形態の攻撃モジュールは、例えば攻撃モジュール記憶装置200の攻撃モジュールデータベースに記憶される。
【0014】
攻撃実行装置300は、攻撃命令で指定された攻撃モジュールを攻撃モジュール記憶装置200から読み込み、攻撃対象である被攻撃システム400に対して攻撃を実行し、攻撃結果を出力する。
【0015】
なお、攻撃実行装置300は、攻撃モジュール記憶装置200と一体の装置であってもよい。例えば、攻撃実行装置300は、Metasploit等のペネトレーションテストツールを有する装置であってもよい。また例えば、攻撃実行装置300は、Pythonスクリプト、PowerShellスクリプト及びRubyスクリプトなどペネトレーションテスト用スクリプトを実行する装置であってもよい。
【0016】
[機能構成の例]
図2は、第1実施形態の攻撃制御装置100の機能構成の例を示す図である。第1実施形態の攻撃制御装置100は、攻撃シナリオ分析部110、攻撃シナリオ記憶制御部120、攻撃命令部130、検出部140、攻撃結果記憶制御部150及び攻撃結果分析部160を備える。
【0017】
攻撃シナリオ分析部110は、少なくとも1つの攻撃シナリオを取得し、当該攻撃シナリオを分析する。攻撃シナリオ500は、例えばJSON形式及びXML形式などであっても良い。
【0018】
[攻撃シナリオの例]
図3は第1実施形態の攻撃シナリオ500の例を示す図である。第1実施形態の攻撃シナリオ500は、複数の攻撃510、520及び530を含む。攻撃510、520及び530の説明は、同様なので、主に攻撃510を例にして説明する。
【0019】
攻撃510は、攻撃順番511及び攻撃命令610を含む。攻撃命令610は、攻撃モジュール情報512、及び、パラメータ513を含む。
【0020】
攻撃順番511は、実行される攻撃命令610の順番を示す。第1実施形態では、攻撃順番511によって、攻撃命令610、620及び630の依存関係が表されている。例えば、攻撃順番511よりも後の攻撃順番521の攻撃520は、攻撃順番511の攻撃510が成功していないと、成功しないという依存関係を示す。同様に、攻撃530を実行するためには、攻撃510及び520が成功している必要がある。
【0021】
攻撃モジュール情報512は、攻撃実行装置300による攻撃に使用される攻撃モジュールを示す情報である。例えば、攻撃モジュール情報512は、攻撃モジュールのファイル名及びファイルパス等である。
【0022】
パラメータ513は、攻撃モジュール情報512で指定される攻撃モジュールのパラメータである。パラメータ513は、図3に示すように複数でもよいし、1つでもよい。パラメータ513は、例えばIPアドレス、ポート番号、ユーザー名、パスワード、ペイロードモジュール、セッションID、及び、攻撃対象の種別等を示す。
【0023】
なお、攻撃命令610に、パラメータ513が含まれていなくてもよい。攻撃命令610にパラメータ513が含まれていない場合は、例えば、攻撃シナリオ分析部110が、ユーザーからパラメータ513の入力を受け付けてもよい。また例えば、攻撃シナリオ分析部110が、攻撃命令610、620及び630毎にパラメータ513、523及び533を設定するのではなく、攻撃命令610、620及び630全体として統一的なパラメータリストを持っていてもよい。
【0024】
なお、攻撃シナリオ500に、攻撃順番511、521及び531を含めずに、攻撃510、520及び530が記載された順に攻撃するという方法であっても良い。
【0025】
また、複数の攻撃の依存関係は、攻撃順番に限られず、個々の攻撃の関係を示すツリー形式や状態遷移図等で表されていてもよいし、GOAP(Goal-Oriented Action Planning)のように攻撃毎の前提条件と効果(攻撃後の状態変化)で表されていても良い。
【0026】
図2に戻り、攻撃シナリオ記憶制御部120は、上述の攻撃シナリオ500(図3参照)を記憶装置に記憶する。攻撃シナリオ500を記憶する記憶装置は、攻撃制御装置100に内蔵されていてもよいし、攻撃制御装置100の外部にあってもよい。
【0027】
攻撃命令部130は、攻撃シナリオ500の攻撃順番511、521及び531に沿って順番に、攻撃実行装置300に攻撃命令610、620及び630を送信する。攻撃命令610、620及び630は、攻撃実行装置300に対応した攻撃命令である必要がある。具体的には、攻撃命令610、620及び630で指定される各攻撃モジュールは、攻撃実行装置300に読み込まれる攻撃モジュールデータベースから参照できる攻撃モジュールである必要がある。また、パラメータ513、523及び533は、攻撃モジュールの実行に必要な情報が指定されている必要がある。
【0028】
検出部140は、攻撃実行装置300から攻撃結果群を取得し、多段攻撃(順番に実行される複数の攻撃)の中で起きたセッション中断による攻撃失敗を検出する。
【0029】
[攻撃結果群の例]
図4は第1実施形態の攻撃結果群700の例を示す図である。攻撃結果群700は、攻撃実行装置300により実行された少なくとも1つの攻撃の攻撃結果を含む。図4の例では、攻撃結果群700は、攻撃510、520及び530毎に生成された攻撃結果710、720及び730を含む。攻撃結果710、720及び730の説明は、同様なので、主に攻撃結果710を例にして説明する。
【0030】
攻撃結果710は、攻撃順番511、攻撃命令610、攻撃成否711、及び、セッション情報712を含む。
【0031】
攻撃順番511及び攻撃命令610は、図3と同様である。
【0032】
攻撃結果710に攻撃順番511があることによって、多段の攻撃がどの段階で攻撃失敗したかを分析しやすくなり、攻撃を再実施する際には、攻撃の順番を考慮した攻撃手順を作成することが出来る。
【0033】
攻撃命令610は、攻撃命令部130から送信され、攻撃実行装置300で実行された命令である。
【0034】
攻撃成否711は、攻撃命令610による攻撃の成否を示す情報である。攻撃成否711は、補助情報として、攻撃実行ログ及び攻撃失敗原因などを含んでいても良い。補助情報があることによって、攻撃失敗の原因が更に検出しやすくなる。攻撃失敗の原因は、例えば前段の攻撃によって確立されたセッションが中断したこと等である。
【0035】
セッション情報712は、攻撃実行装置300によって、被攻撃システム400との間で確立されたセッションの情報を示す。セッション情報712は、攻撃命令610を実行する際に利用したセッションの情報、または攻撃命令610を実行した後に確立したセッションの情報である。セッション情報712は、どちらか一方のセッション情報のみであっても、両方のセッション情報であっても良い。
【0036】
[セッション情報の例]
図5は第1実施形態のセッション情報712の例を示す図である。第1実施形態のセッション情報712は、セッションID751、セッション状態752、セッションタイプ753、接続元IPアドレス754、接続元ポート番号755、接続先IPアドレス756及び接続先ポート番号757などを含む。
【0037】
セッションID751は、セッションを識別する識別情報である。例えば、セッションID751は、攻撃実行装置300でセッションを管理するために付与された識別番号であっても良い。セッションID751が識別番号である場合は、攻撃命令610に含まれるパラメータ513の一つとして設定することが可能となる。
【0038】
セッション状態752は、セッションの状態(例えば、接続または切断)を示す。
【0039】
セッションタイプ753は、セッションの種類を示す。セッションの種類は、例えば被攻撃システム400における実行権限の種類(例えば管理者権限の有無等)などである。
【0040】
接続元IPアドレス754は、セッションの接続元装置のIPアドレスを示す。接続元ポート番号755は、セッションの接続元装置のポート番号を示す。接続先IPアドレス756は、セッションの接続先装置のIPアドレスを示す。接続先ポート番号757は、セッションの接続先装置のポート番号を示す。
【0041】
図2に戻り、攻撃結果記憶制御部150は、攻撃結果710、720及び730を記憶装置に記憶する。攻撃結果710、720及び730を記憶する記憶装置は、攻撃制御装置100に内蔵されていてもよいし、攻撃制御装置100の外部にあってもよい。
【0042】
例えば、攻撃結果記憶制御部150が、複数の攻撃結果(図4の例では、攻撃結果710、720及び730)を記憶しておくことで、攻撃毎(図2の例では、攻撃510、520及び530)の攻撃成否を把握することができる。具体的には、攻撃制御システム10を利用するテスターが、テスト実行後に、攻撃結果を報告書に整理しやすくなる。
【0043】
攻撃結果分析部160は、攻撃結果に基づいて次に実行する攻撃を分析する。例えば、攻撃結果分析部160は、検出部140によって、攻撃実行装置300で攻撃実行中に確立したセッションが中断したことが原因で攻撃が失敗したと検出された場合は、中断したセッションを確立した攻撃に遡った攻撃命令を攻撃命令部130に送信する。中断したセッションを確立した攻撃に遡った攻撃命令は、例えば攻撃の依存関係に基づいて特定される。
【0044】
また例えば、攻撃結果分析部160は、記憶装置に記憶された攻撃の成否を参照し、多段攻撃に含まれる攻撃を遡り、一度成功した攻撃を分析する。これにより、攻撃命令部130が、一度成功した攻撃を優先して命令することができる。
【0045】
また例えば、攻撃結果分析部160は、攻撃命令の成否から、成功する可能性がより高い攻撃命令を分析する。そして、攻撃命令部130が、成功する可能性がより高い攻撃命令をより多く含む攻撃シナリオを優先して用いて、攻撃を命令する。
【0046】
また例えば、攻撃結果分析部160は、多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令に基づいて、セッションが原因で失敗する可能性がより低い攻撃命令を分析する。そして、攻撃命令部130が、セッションが原因で失敗する可能性がより低い攻撃命令をより多く含む攻撃シナリオを優先して用いて、攻撃を命令する。
【0047】
攻撃シナリオ500が複数ある場合に、攻撃シナリオ500に優先度をつけることによって、時間及び工数等を鑑みたペネトレーションテストを行うことができる。具体的には、攻撃シナリオ500が膨大に存在する場合に、例えば優先度が閾値より大きい攻撃シナリオのみを実施することができる。
【0048】
[攻撃制御方法の例]
図6は第1実施形態の攻撃制御方法の例を示すフローチャートである。はじめに、攻撃シナリオ分析部110が、上述の攻撃シナリオ500を取得し、当該攻撃シナリオ500を分析する(ステップS11)。
【0049】
次に、攻撃シナリオ記憶制御部120が、ステップS11で分析された攻撃シナリオ500を記憶装置に記憶する(ステップS12)。攻撃シナリオ500が複数ある場合でも、記憶装置に当該攻撃シナリオ500を記憶しておくことで、攻撃命令部130が、攻撃シナリオ500を再度実行し直すことができたり、複数の攻撃シナリオ500を連続して実行したりすることが出来る。
【0050】
次に、攻撃命令部130が、攻撃実行装置300に攻撃を命令する(ステップS13)。
【0051】
攻撃実行装置300に送信される攻撃命令610、620及び630は、攻撃シナリオ500の攻撃順番512、522及び532に沿って送信される。送信される攻撃命令610、620及び630は、1度に1つの攻撃命令610、620又は630が送信されても、1度に複数の攻撃命令610、620及び630が送信されても良い。
【0052】
1度に1つの攻撃命令610、620又は630が送信される場合は、その都度に攻撃結果710、720又は730を取得することが出来るので、攻撃が失敗した原因を調査しやすくなる。1度に複数の攻撃命令610、620及び630を送信する場合は、次の攻撃命令を待つ時間が無くなるので、攻撃シナリオ500の実行を終えるまでの時間を短くすることが出来る。
【0053】
攻撃命令部130は、ステップ18からステップS13に遷移してきた場合など、セッションの切断が原因で中断した攻撃に、利用できるセッションがすでにある場合は、そのセッションを再攻撃時に利用してもよい。具体的には、図4の例では、攻撃命令部130は、攻撃結果群700に含まれるセッション情報712、722及び732と、攻撃命令610、620及び630の対応を参照する。攻撃命令部130は、1度目の攻撃シナリオ500の実行時には攻撃命令620で確立したセッションが攻撃命令630の実行中に切断してしまい、攻撃命令630が失敗してしまったとする。このとき、攻撃命令部130は、2度目の攻撃シナリオ500の実行時には攻撃命令610からやり直すのではなく、既に1度目の攻撃シナリオ500の攻撃命令610で確立しているセッションを利用して、攻撃命令620から再実施する。
【0054】
次に、検出部140が、攻撃実行装置300から攻撃結果群700を受信する(ステップS14)。
【0055】
次に、検出部140は、ステップS14で受信された攻撃結果群700の攻撃成否711、721及び731から、全ての攻撃510、520及び530が成功したか否かを判定する(図3、ステップS15)。
【0056】
全ての攻撃510、520及び530が成功した場合(ステップS15,Yes)、攻撃結果記憶制御部150が、攻撃結果群700に含まれる攻撃結果710、720及び730を記憶装置に記憶する(ステップS16)。
【0057】
なお、攻撃結果記憶制御部150は、攻撃が成功したか失敗したかによらず、攻撃結果を記憶装置に記憶しても良い。攻撃結果記憶制御部150が、攻撃失敗時の攻撃結果を記憶装置に記憶しておくことで、攻撃失敗回数が閾値を超えた場合に、攻撃シナリオ500の実行を中断し、攻撃失敗が度重なることにより攻撃シナリオ500の実行時間が長時間になることを防ぐことが出来る。なお、閾値は、テスター等のユーザーにより任意に設定されてよい。具体的には、攻撃失敗回数は、例えば、多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令が検出された回数である。攻撃命令部130は、例えば失敗攻撃命令が検出された回数が閾値より大きい場合、失敗攻撃命令を含まない攻撃シナリオに基づいて、攻撃を命令する。
【0058】
また、攻撃結果記憶制御部150が、攻撃成否711、721及び731を記憶装置に記憶しておくことで、攻撃命令部130が、成功したことのある攻撃命令を特定可能になる。これにより、例えば攻撃命令部130が、複数の攻撃シナリオ500を実行する際に、成功したことのある攻撃命令が失敗した場合は、上述の閾値を無効にして、攻撃を再実施するなどの制御が可能になる。
【0059】
また、攻撃結果記憶制御部150は、攻撃結果710、720及び730の補足情報を記憶装置に記憶してもよい。例えば、補足情報は、セッション中断が原因で失敗したか否かを示す情報を含む。また例えば、補足情報は、攻撃失敗回数を含む。攻撃結果記憶制御部150が、中断(失敗)しやすい攻撃を特定するための補足情報を記憶装置に記憶しておくことで、攻撃命令部130が、攻撃再実施時に中断しにくい攻撃を優先的に実施することができ、また、セッションが中断されにくくする攻撃命令(確立されたセッションを別プロセスに統合する攻撃)を追加で命令することができる。
【0060】
次に、攻撃命令部130は、攻撃シナリオ500を参照し、次の攻撃が存在するか否かを判定する(ステップS19)。具体的には、攻撃命令部130は、攻撃順番が前の攻撃命令が成功していて、かつ、攻撃実行装置300に送信されていない攻撃命令があるか否かを判定する。
【0061】
次の攻撃が存在する場合(ステップS19,Yes)、処理はステップS13に進み、次の攻撃が存在しない場合(ステップS19,No)、処理を終了する。
【0062】
複数の攻撃シナリオ500がある場合には、まだ実行されていない攻撃シナリオ500を記憶装置から読み込み、ステップS13に進んでも良い。
【0063】
攻撃510、520及び530のいずれかが失敗した場合(ステップS15,No)、検出部140が、セッションが攻撃の途中で切断したことが原因で攻撃が失敗したか否かを判定する(ステップS17)。
【0064】
攻撃結果710、720及び730には、攻撃命令610、620及び630が実行された後のセッション情報712、722及び732が含まれている。例えば、検出部140は、攻撃命令620のセッション情報722と、攻撃命令620の前の攻撃命令610のセッション情報712とを比較することで、攻撃命令620を実行した際に確立したセッション及び切断したセッションを検出することができる。
【0065】
検出部140は、攻撃成否711、721及び731を参照して、攻撃が失敗した攻撃命令を探索し、その攻撃命令を実行した際に切断したセッションがある場合は、セッションの切断が原因で攻撃が中断したと判定し、攻撃結果分析部160に通知する。
【0066】
セッションの切断が原因で攻撃が中断していない場合(ステップS17,No)、処理はステップS16に進む。
【0067】
セッションの切断が原因で攻撃が中断した場合(ステップS17,Yes)、攻撃結果分析部160は、中断した攻撃実施に必要なセッションを確立した攻撃に遡って攻撃を行う攻撃シナリオ500を再構成する(ステップS18)。ステップS18で再構成された攻撃システム500は、攻撃命令部130に送信され、ステップS13の処理が再実行される。例えば、攻撃命令630を実行中に攻撃命令620で確立したセッションが切断したことが原因で攻撃命令630の攻撃が失敗したと判定された場合で、攻撃命令610で確立したセッションが確立した状態のままであれば、攻撃結果分析部160は、攻撃命令610を除いた攻撃シナリオ500を再構成する。また、攻撃結果分析部160は、攻撃命令610で確立したセッションも切断した状態であれば、全ての攻撃命令610、620及び630を含んだままの攻撃シナリオ500を再構成する。
【0068】
以上、説明したように、第1実施形態の攻撃制御装置100では、検出部140が、攻撃シナリオ500に基づいて実行された多段攻撃の攻撃結果を分析し、多段攻撃の途中で中断されたセッションが原因で失敗した失敗攻撃命令を検出する。攻撃結果記憶制御部150が、攻撃結果を記憶装置に記憶する。攻撃結果分析部160が、攻撃結果から、中断されたセッションを確立した攻撃命令を分析する。そして、攻撃命令部130が、中断されたセッションを確立した攻撃命令から、多段攻撃を再開する。
【0069】
これにより第1実施形態の攻撃制御装置100によれば、脆弱性を検出するテストの所要時間を短縮させるとともに、検出精度を向上させることができる。
【0070】
例えば、第1実施形態の攻撃制御装置100によれば、攻撃に利用されるセッションが管理されるので、例えばペネトレーションテストの一部を自動化することができる。これにより、ペネトレーションテストの時間短縮、及び、熟練テスターを必要としない均一なテストを実現できる。
【0071】
また例えば、本当は攻撃が成功するのに攻撃が失敗することで攻撃リスクがないと誤って判断してしまうセキュリティリスクの検出漏れを防ぐことができる。
【0072】
以上のように、第1実施形態の攻撃制御装置100によれば、被攻撃システム400のセキュリティ向上を実現することができる。
【0073】
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
【0074】
[機能構成の例]
図7は、第1実施形態の攻撃制御装置100-2の機能構成の例を示す図である。第1実施形態の攻撃制御装置100-2は、攻撃シナリオ分析部110、攻撃命令部130、検出部140、攻撃結果記憶制御部150、攻撃結果分析部160、依存関係記憶制御部170及び攻撃命令記憶制御部180を備える。
【0075】
攻撃シナリオ分析部110、攻撃命令部130、検出部140、攻撃結果記憶制御部150及び攻撃結果分析部160は、第1実施形態と同様なので説明を省略する。
【0076】
依存関係記憶制御部170は、攻撃シナリオ500に含まれる攻撃510、520及び530の依存関係を、第2攻撃シナリオとして記憶装置に記憶する。
【0077】
攻撃命令記憶制御部180は、攻撃シナリオ500に含まれる攻撃命令610、620及び630を、攻撃命令群として記憶装置に記憶する。
【0078】
図8Aは第2実施形態の第2攻撃シナリオ800の例を示す図である。第2実施形態の第2攻撃シナリオ800は、攻撃順番511、521及び531、並びに、攻撃命令識別子812、822及び832を含む。
【0079】
攻撃順番511は、攻撃命令識別子812により識別される攻撃命令610が実行される順番を示す。攻撃順番521は、攻撃命令識別子822により識別される攻撃命令620が実行される順番を示す。攻撃順番531は、攻撃命令識別子832により識別される攻撃命令630が実行される順番を示す。
【0080】
なお、攻撃の依存関係を示す情報は、攻撃順番511、521及び531でなくてもよく、当該攻撃を実行するために事前に実施しておくべき攻撃のリストであってもよい。
【0081】
依存関係記憶制御部170が、攻撃の依存関係を記憶装置に記憶しておくことで、攻撃命令部130が、攻撃を再実施する際に遡る必要がある攻撃を特定することが出来る。また、依存関係記憶制御部170は、複数の攻撃シナリオ500がある場合、新しい攻撃の組み合わせを含む新しい攻撃シナリオを、第2攻撃シナリオ800として生成することが出来る。
【0082】
図8Bは第2実施形態の攻撃命令群900の例を示す図である。第2実施形態の攻撃命令群900は、攻撃命令610、620及び630、並びに、攻撃命令識別子812、822及び832を含む。攻撃命令610は、攻撃命令識別子812により識別される攻撃命令である。攻撃命令620は、攻撃命令識別子822により識別される攻撃命令である。攻撃命令630は、攻撃命令識別子832により識別される攻撃命令である。攻撃命令記憶制御部180が、攻撃命令群900を記憶装置に記憶しておくことで、攻撃命令部130が、再実施する攻撃の攻撃命令を参照することができたり、パラメータの一部を変更した攻撃命令を作成したりすることができる。
【0083】
[攻撃制御方法の例]
図9は第2実施形態の攻撃制御方法の例を示すフローチャートである。図9では、第1実施形態のステップS12(図6参照)が、ステップS12-2に変更されている点が異なる。
【0084】
ステップS12では、依存関係記憶制御部170が、各攻撃の依存関係を、上述の第2攻撃シナリオ800として記憶装置に記憶し、攻撃命令記憶制御部180が、各攻撃の攻撃命令を上述の攻撃命令群900として記憶装置に記憶する。第2攻撃シナリオ800と攻撃命令群900とが別々に記憶されることで、攻撃命令部130が、攻撃シナリオ分析部110に入力された攻撃シナリオ500とは別の攻撃シナリオを、攻撃実行装置300に送信することができる。攻撃命令部130は、攻撃命令識別子812、822及び832を用いて、第2攻撃シナリオ800の攻撃順番511、521及び531、攻撃命令群900の攻撃命令610、620及び630を、必要に応じて参照できる。
【0085】
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第2実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
【0086】
[装置構成の例]
図10は第3実施形態の装置構成の例を示す図である。第3実施形態では、攻撃制御装置100-3が、第2実施形態の攻撃実行装置300の機能も兼ね備える。攻撃モジュール記憶装置200及び被攻撃システム400は、第2実施形態と同様なので説明を省略する。
【0087】
攻撃制御装置100-3は、外部装置から1以上の攻撃シナリオ500を受信し、攻撃モジュール記憶装置200の攻撃モジュールを参照する。そして、攻撃制御装置100-3は、被攻撃システム400に対してサイバー攻撃耐性評価用の通信(攻撃モジュールによる攻撃に係る通信)を行い、被攻撃システム400の攻撃耐性を評価する。
【0088】
なお、攻撃モジュール記憶装置200は、攻撃制御装置100に内蔵されていてもよい。
【0089】
[機能構成]
図11は第3実施形態の攻撃制御装置100-3の機能構成の例を示す図である。第3実施形態の攻撃制御装置100-3は、攻撃シナリオ分析部110、攻撃命令部130、検出部140、攻撃結果記憶制御部150、攻撃結果分析部160、依存関係記憶制御部170、攻撃命令記憶制御部180及び攻撃実行部190を備える。
【0090】
攻撃シナリオ分析部110、攻撃命令部130、検出部140、攻撃結果記憶制御部150、攻撃結果分析部160、依存関係記憶制御部170及び攻撃命令記憶制御部180は、第2実施形態と同様なので説明を省略する。
【0091】
攻撃実行部190は、例えば、攻撃命令部130から攻撃命令610を受信すると、攻撃命令610に含まれる攻撃モジュール情報512を用いて、攻撃モジュール記憶装置200の攻撃モジュールを参照する。そして、攻撃実行部190は、攻撃命令610に含まれる複数のパラメータ513を攻撃モジュールに設定し、被攻撃システム400に対して実行する。
【0092】
なお、攻撃命令610には必ずしもパラメータ513が含まれていなければならないわけではない。攻撃命令610にパラメータ513が含まれていない場合は、攻撃実行部190は、パラメータ513の値を設定するために情報を収集する攻撃命令を別途実行し、当該攻撃命令で取得された値をパラメータ513として攻撃モジュールに設定してもよい。具体的には、例えば、攻撃実行部190は、新たにホストスキャンの攻撃命令を実施し、取得されたIPアドレスを次の攻撃命令のパラメータとして設定してもよい。また例えば、攻撃実行部190は、新たにパスワードのブルートフォース攻撃の攻撃命令を実施し、明らかになったパスワードを次の攻撃命令のパラメータとして設定してもよい。
【0093】
[攻撃制御方法の例]
図12は第3実施形態の攻撃制御方法の例を示すフローチャートである。図12では、第2実施形態の攻撃制御方法のフローチャート(図9参照)に、ステップS13-2に追加されている点が異なる。
【0094】
ステップS13-2では、攻撃実行部190が、被攻撃システム400に対して攻撃を実行する。ステップS13-2で実行される攻撃は、例えば、既知の脆弱性を突いた攻撃である。攻撃の対応となる既知の脆弱性には、任意のコード実行を可能とする脆弱性、権限昇格を可能とする脆弱性、並びに、認証情報及び機密情報などを取得または改ざん、または削除を可能とする脆弱性などがある。
【0095】
また例えば、ステップS13-2で実行される攻撃は、ファジングのように正常な通信データの一部分を改変したデータを送信する攻撃である。また例えば、ステップS13-2で実行される攻撃は、正常な通信シーケンスを入れ替えたり、タイミングを変更したり、一部の通信データを抜かして送信するような攻撃である。また例えば、ステップS13-2で実行される攻撃は、RDPまたはSSHまたはTelnetなどのリモートアクセス通信による攻撃でもよいし、SYNフラッド攻撃のように大量のリクエストを短時間の間に送信する攻撃でもよい。
【0096】
攻撃実行部190は、ステップS13-2で送信された攻撃通信に対する前記被攻撃システム400の応答をもとに攻撃結果群700を生成し(ステップS14)、検出部140に送信する。
【0097】
第3実施形態では、攻撃結果を任意の要素で構成することが出来るので、攻撃命令ごとに生成または切断したセッション情報を記録できる。これにより、攻撃実行部190が、攻撃の再実施するとき、及び、別の攻撃シナリオを実行するときなどに、攻撃が成功したことのある攻撃命令を優先的に実行することが出来る。
【0098】
最後に、第1乃至第3実施形態の攻撃制御装置100(100-2,100-3)のハードウェア構成の例について説明する。
【0099】
[ハードウェア構成の例]
図11は、第1乃至第3実施形態の攻撃制御装置100(100-2,100-3)のハードウェア構成の例を示す図である。第1乃至第3実施形態の攻撃制御装置100(100-2,100-3)は、プロセッサ201、主記憶装置202、補助記憶装置203、表示装置204、入力装置205及び通信装置206を備える。プロセッサ201、主記憶装置202、補助記憶装置203、表示装置204、入力装置205及び通信装置206は、バス210を介して接続されている。
【0100】
なお、攻撃制御装置100(100-2,100-3)は、上記構成の一部が備えられていなくてもよい。例えば、攻撃制御装置100(100-2,100-3)が、外部の装置の入力機能及び表示機能を利用可能な場合、攻撃制御装置100(100-2,100-3)に表示装置204及び入力装置205が備えられていなくてもよい。
【0101】
プロセッサ201は、補助記憶装置203から主記憶装置202に読み出されたプログラムを実行する。主記憶装置202は、ROM及びRAM等のメモリである。補助記憶装置203は、HDD(Hard Disk Drive)及びメモリカード等である。
【0102】
表示装置204は、例えば液晶ディスプレイ等である。入力装置205は、攻撃制御装置100を操作するためのインターフェースである。なお、表示装置204及び入力装置205は、表示機能と入力機能とを有するタッチパネル等により実現されていてもよい。通信装置206は、他の装置と通信するためのインターフェースである。
【0103】
攻撃制御装置100(100-2,100-3)で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
【0104】
また攻撃制御装置100(100-2,100-3)で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また攻撃制御装置100(100-2,100-3)で実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【0105】
また攻撃制御装置100(100-2,100-3)のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0106】
攻撃制御装置100(100-2,100-3)で実行されるプログラムは、上述の図2図7図11)の機能構成のうち、プログラムによっても実現可能な機能を含むモジュール構成となっている。当該各機能は、実際のハードウェアとしては、プロセッサ201が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置202上にロードされる。すなわち上記各機能ブロックは主記憶装置202上に生成される。
【0107】
なお上述した図2図7図11)の各機能の一部又は全部をソフトウェアにより実現せずに、IC等のハードウェアにより実現してもよい。
【0108】
また複数のプロセッサ201を用いて各機能を実現してもよく、その場合、各プロセッサ201は、各機能のうち1つを実現してもよいし、各機能のうち2以上を実現してもよい。
【0109】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0110】
10 攻撃制御システム
100 攻撃制御装置
110 攻撃シナリオ分析部
120 攻撃シナリオ記憶制御部
130 攻撃命令部
140 検出部
150 攻撃結果記憶制御部
160 攻撃結果分析部
170 依存関係記憶制御部
180 攻撃命令記憶制御部
190 攻撃実行部
200 攻撃モジュール記憶装置
201 プロセッサ
202 主記憶装置
203 補助記憶装置
204 表示装置
205 入力装置
206 通信装置
210 バス
300 攻撃実行装置
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10
図11
図12
図13