JP2004145413A - セキュリティホール診断システム - Google Patents
セキュリティホール診断システム Download PDFInfo
- Publication number
- JP2004145413A JP2004145413A JP2002306536A JP2002306536A JP2004145413A JP 2004145413 A JP2004145413 A JP 2004145413A JP 2002306536 A JP2002306536 A JP 2002306536A JP 2002306536 A JP2002306536 A JP 2002306536A JP 2004145413 A JP2004145413 A JP 2004145413A
- Authority
- JP
- Japan
- Prior art keywords
- script
- plug
- execution
- inspection
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000013515 script Methods 0.000 claims abstract description 144
- 238000007689 inspection Methods 0.000 claims abstract description 79
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000003745 diagnosis Methods 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 abstract description 45
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】従来のセキュリティホール診断システムは,検査を実行するためには,使用者にセキュリティ上の知識が必要とされた。
【解決手段】通常攻撃者が行う手順をプログラミング言語で記述されたスクリプトが予め蓄積され、その蓄積されたスクリプトから利用者が選択したスクリプトを実行することにより、個々のセキュリティホール攻撃のためのロジックが実装されたプラグインを呼び出し、このプラグインを検査対象コンピュータに対して実行することで、使用者は検査実行手段間の入出力の関係等、セキュリティ上の知識を知っている必要が無くせる。
【選択図】 図2
【解決手段】通常攻撃者が行う手順をプログラミング言語で記述されたスクリプトが予め蓄積され、その蓄積されたスクリプトから利用者が選択したスクリプトを実行することにより、個々のセキュリティホール攻撃のためのロジックが実装されたプラグインを呼び出し、このプラグインを検査対象コンピュータに対して実行することで、使用者は検査実行手段間の入出力の関係等、セキュリティ上の知識を知っている必要が無くせる。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータのセキュリティホールの有無を診断するシステムに関するものである。
【0002】
【従来の技術】
図9は特開2001−337919に代表される、従来のセキュリティホール診断システムを示す構成図である。従来のシステムは操作装置900と検査実行装置907で構成され、操作装置900はディスプレイ902、画面生成部903、操作制御部905、表示名定義ファイル904及び手順定義ファイル906で構成されている。
また、検査実行装置907は、実行制御部908、対象ホスト情報格納部909、複数の検査実行手段911、及び検査実行手段格納部910で構成されている。
【0003】
図10は同システムにおける手順定義ファイル906の例を示すものである。手順定義ファイル906には、検査実行手段911の分類キー名と、分類キーとして指定された検査実行手段911のプロパティの値毎に表示名、実行タイプ、説明文が記載されている。
【0004】
図11は同システムにおける検査実行手段911の情報(検査実行情報)を表すものである。検査実行情報には、各検査実行手段911を特徴付ける値(プロパティ)がキー名(プロパティ名)に関連付けられて格納されている。
【0005】
次に従来のシステムの動作について説明する。操作装置900が検査実行装置907に接続されると、操作装置900は表示名定義ファイル904及び手順定義ファイル906をロードする。 次に、検査実行装置907中の検査実行手段格納部910に蓄積されている検査実行手段911一つ一つから検査実行情報を取り出し、手順定義ファイル906に指定されたキー名に対応するプロパティをもとに、各検査実行手段911を手順定義ファイル906記載のカテゴリに分類する。最後に分類された検査実行手段911の一覧をカテゴリ毎にディスプレイ902に表示する。
【0006】
使用者101はディスプレイ902に表示されたカテゴリを選択し、実行に必要なパラメータを入力し、検査実行を要求する。パラメータの説明は表示名定義ファイル904に記載されている情報が利用される。検査実行を要求された操作装置900は、そのカテゴリに分類された検査実行手段911を実行するように、操作制御部905を通じて検査実行装置907に要求する。
検査実行装置907は指定された検査実行手段911を呼び出し、その結果、検査のためのパケットが検査対象ホストコンピュータ107に送信される。
【0007】
なお、各検査実行手段911は、対象ホスト情報格納部909に情報を格納することができ、格納された情報は、他の検査実行手段911によって参照することができる。また、使用者101が操作装置900を通じて直接対象ホスト情報格納部909に情報を格納することも可能である。
【0008】
以上が従来のシステムにおける検査の流れである。ここで、カテゴリの表示順序は、手順定義ファイル906に記載されている順序であり、これを一般的な攻撃の手順に沿うようにすることで、使用者101はディスプレイ902に表示された順に検査を行うことによって攻撃者を模擬した検査を行うことができる。
【0009】
【特許文献1】
特開2001−337919号公報(第4−8頁、図3、図4、図14)
【0010】
【発明が解決しようとする課題】
以上のように、従来のセキュリティホール診断システムは、複数の検査実行手段を有し、それらを手順定義ファイルで与えられた方法で分類・表示し、カテゴリ毎に使用者が選択することでそのカテゴリに属する検査実行手段を実行するというものであり、また検査実行手段は直接検査対象ホストコンピュータに対し検査を実行するというものであった。そのため、以下のような問題があった。
【0011】
各カテゴリ毎に入力しなければならない実行パラメータは、使用者が前の検査の結果から入力しなければならず、あるカテゴリの検査の結果と次のカテゴリへの入力との関係を使用者は理解している必要がある。そのために、使用者はセキュリティ上の知識を必要とされた。
【0012】
定義ファイルは順次実行のシナリオしか表現できないが、実際の攻撃者は、前に行った攻撃の結果に応じて次に実施すべき攻撃の種類を変化させる場合も多い。従来のシステムでは、次にどのカテゴリの検査を実行するかの判断は使用者が行わなければならず、ここでも使用者にセキュリティ上の知識を必要とした。
攻撃者は、ある目的を持って複雑なステップで構成される攻撃を行う。その一連の攻撃は、さらに大きな目的を達成するための攻撃シナリオの一ステップに過ぎない場合も想定される。従来のシステムでは、このような階層化された攻撃シナリオを表現することはできない。
【0013】
対象ホスト情報格納部に蓄積される情報から、別の情報を推論するための推論手段がない。これは、例えば対象ホストのOSがUNIX(登録商標)であることから管理者のアカウント名がrootであるという知識を導出するための手段である。従って、各検査実行手段には、必要とする情報を、蓄積されている情報から推論するためのロジックを埋め込まなければならない。
攻撃者はあるホストへの侵入に成功すると、そこを踏み台としてさらに内部への侵入を試みる場合が多い。しかし従来の検査システムでは検査実行手段から直接検査を行うため、踏み台の使用を用いた検査シナリオを実施できない。
【0014】
本発明は上記の問題を解決するためになされたものであり、以下の事柄を目的とする。
検査シナリオを、プログラミング言語で記述されたスクリプトとして表現し、スクリプトから自動的にプラグイン(検査実行手段に該当)を呼び出すことで、複雑な試験の実施を可能とする。
【0015】
各検査実行手段間のパラメータの授受はスクリプトが媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くす。
【0016】
セキュリティホール診断を行う際に、より現実に近い高度な攻撃シナリオに基づいた検査を実施することが可能とし、使用者に必要とされるセキュリティの知識の程度を軽減することができ、検査ロジックの作成者の負担を軽減する。
【0017】
【課題を解決するための手段】
本発明に係るセキュリティホール診断システムは、不正アクセスのために通常攻撃者が行う手順がプログラミング言語で記述されたスクリプトが複数蓄積されたスクリプト蓄積手段と、
利用者からの入力により上記スクリプトの一覧を要求する操作手段と、
上記操作手段の要求に応じ、上記スクリプト蓄積手段から各スクリプトを取り出し、入出力パラメータ記述、スクリプト実行必要条件、検査手順を表示したリストを作成して利用者に提示し、利用者が選択したスクリプトを実行するスクリプト制御手段と、
個々のセキュリティホール攻撃のためのロジックが実装されたプラグインが蓄積されたプラグイン蓄積手段と、
スクリプト制御手段がスクリプトを実行することにより呼び出され、上記プラグイン蓄積手段から上記実行スクリプトに対応するプラグインを取り出して、そのプラグインを検査対象コンピュータに対して実行するプラグイン制御手段
とを備えた。
【0018】
【発明の実施の形態】
実施の形態1
はじめに図1を参照しながら、本システムの概要について述べる。本システムはローカルで動作する脆弱性検査プログラム100とリモートもしくはローカルのホストで動作する1つ以上の踏み台模擬プログラム、本実施の形態においては105、106の二つのプログラムで構成され、これらはネットワークで接続されている。
【0019】
脆弱性検査プログラム100は、使用者101からの要求に応じて、対象となるホストコンピュータ又は、ネットワークに対してセキュリティ上の脆弱性があるかどうかを検査するプログラムである。検査は脆弱性検査プログラム100が踏み台模擬プログラム105を操作することで実施される。
【0020】
踏み台模擬プログラム105はネットワークを通じて脆弱性検査プログラム100から命令を受け取り、パケット送受信、プロセスの起動・終了、ファイル転送、メッセージ中継を行うプログラムである。
踏み台模擬プログラム105は他の踏み台模擬プログラム106に命令を転送する機能も有しており、踏み台模擬プログラム105、106を適切に配置することで内部ネットワークに位置する検査対象ホストコンピュータ107に対しても検査が行えるようになる。
踏み台模擬プログラム105、106は、検査前に検査対象のネットワーク上のホスト内で、動作させておくことも、また、脆弱性検査の一環として、セキュリティホールを利用して埋め込むことも可能である。
【0021】
踏み台模擬プログラム105の操作は、実際には脆弱性検査プログラム100内でプラグイン104により制御される。プラグイン104とは、個々のセキュリティホールを攻撃するための動的ロード可能な共有ライブラリである。プラグイン104は踏み台模擬プログラム105を操作することで検査対象上に存在するセキュリティホールへの攻撃を行う。
様々なプラグイン104を用意することで、多様なセキュリティホールに対する脆弱性検査が可能となる。
【0022】
プラグイン104はスクリプト102によって制御される。スクリプト102とは、不正アクセスのために通常攻撃者が行う手順をインタプリタ言語で記述したテキストデータである。スクリプト102に従って様々なプラグイン104を呼び出すことで、脆弱性検査プログラム100は、攻撃者を模擬した複雑な脆弱性検査を行うことが可能となっている。
【0023】
スクリプト102もプラグイン104同様、その目的に応じて複数用意することができる。また、スクリプト102から他のスクリプト102を呼び出すことも可能であり、これにより他のスクリプト102を攻撃の一ステップとするような、より高度なスクリプト102を記述することができる。
本実施の形態では、スクリプト102の記述言語としてPerlを使用している。
【0024】
スクリプト102は、検査を実行した結果得られた検査対象に関する知識、例えばユーザアカウントの一覧や動作しているサーバ一覧等の情報を、知識共有手段103に蓄えることが可能である。知識共有手段103に蓄積された知識は、他のスクリプト102から参照することができる。
また、知識共有手段103に推論ルールに基づいて知識を吟味する推論手段108を備えることで、スクリプト102から得られた知識(事実情報)から新しい知識(推論)を導出することも可能である。例えばあるスクリプト102によって検査対象ホストコンピュータ107のOSがUNIX(登録商標)系であることが判れば、推論ルールにより、そのホストの管理者アカウント名がrootである、という知識を導出することができる。
【0025】
以上の概要を踏まえた上で、次に、図2を参照しながら脆弱性検査プログラム100の内部構成について説明する。脆弱性検査プログラム100は、操作手段201、検査実行手段202で構成されており、検査実行手段202はスクリプト制御手段203、プラグイン制御手段204、知識共有手段103、及び踏み台模擬プログラム制御手段205で構成されている。
【0026】
スクリプト制御手段203は、スクリプト102を蓄積・閲覧・実行するための手段を提供する。一つ以上のスクリプト102がスクリプト制御手段203内にあるスクリプト蓄積手段206に蓄積されている。スクリプト蓄積手段206内でスクリプト102は、ファイル名によって一意に名前付けされ管理されている。
【0027】
スクリプト102は、図4に示すとおり、クラス名記述部401、実行条件記述部402、入出力パラメータ記述部403、説明記述部404、及び検査手順記述部405で構成されている。
【0028】
クラス名記述部401には、そのスクリプト102がどのようなカテゴリの検査に属しているかを表すデータが記述されている。実行条件記述部402には、スクリプト実行時に満たされていなければならない条件が記述されている。条件は述語論理を用いて記述される。入出力パラメータ記述部403には、スクリプト102がどのような入力を受け取り、どのような出力を行うかが記述されている。説明記述部404には、スクリプト102の説明文が記述されている。検査手順記述部405には検査手順が記述されている。
【0029】
スクリプト102の記述例を図8に示した。図中、”Class:”がクラス名記述部401を表し、”Precondition:”が実行条件記述部402を表し、”Input:”及び”Output:”が入出力パラメータ記述部403を表している。”Description:”が説明記述部404であり、”#−−−−−END_SCRIPT_PROPERTY−−−−−” より下の部分に検査手順記述部405となるPerlコードが記載される。
【0030】
プラグイン制御手段204内にはプラグイン蓄積手段207があり、1つ以上のプラグイン104が蓄積されている。プラグイン104は、プラグイン蓄積手段207内で一意に名前付けされて管理されている。
【0031】
知識共有手段103は、スクリプト102が脆弱性検査の過程で収集した知識を他のスクリプト102と共有することを可能とするための手段である。
知識共有手段103内には、知識蓄積手段208があり、脆弱性検査の過程で収集された知識が蓄積されている。また、同手段内には推論手段108があり、知識蓄積手段103内の知識を元に推論処理を行うことが可能となっている。推論処理の一環としてスクリプト制御手段203を通じてスクリプト102を実行することも可能である。
【0032】
踏み台模擬プログラム制御手段205は、プラグイン104に対し踏み台模擬プログラム105を制御するためのインタフェースを提供するとともに、稼動中の踏み台模擬プログラム105の状態管理も行う。
【0033】
次に、図3を参照しながら図1中の踏み台模擬プログラム105の内部構成について説明する。踏み台模擬プログラム105は、全体制御手段301、通信中継手段302、検査パケット送受信手段303、プロセス実行手段304及びファイル転送手段305で構成されている。通信中継手段302は、ネットワークを通じて、他の踏み台模擬プログラム106や図2に示す踏み台模擬プログラム制御手段205と通信を行う。
【0034】
全体制御手段301は、通信中継手段302を通じて送られてきた制御メッセージを受け取り、その指示に従って検査パケット送信手段303、プロセス実行手段304、ファイル転送手段305を操作する。また、制御メッセージが自分宛で無い場合には通信中継手段302を利用して、制御メッセージを本当の宛先に転送する。
【0035】
通信中継手段302は制御メッセージを転送する。通信中継手段302は、一つの親と複数の子と接続可能である。そのため、踏み台模擬プログラム105は、脆弱性検査プログラム100を頂点としたツリー状に相互接続される。
接続は、TCPによって行われ、TCP接続要求は子から親、親から子どちらからも可能である。
【0036】
次に図2を用いて本システムの動作について説明する。
はじめに利用者101は操作手段201を通じて、検査実行手段202に対し、実行可能なスクリプト102の一覧を要求する。検査実行手段202はその内部手段であるスクリプト制御手段203を呼び出す。
スクリプト制御手段203は、スクリプト蓄積手段206からスクリプト102を一つずつ取り出し、そのファイル名、入出力パラメータ部403、説明記述部404、及びクラス名記述部401の内容をリストに蓄積する。全てのスクリプト102に対してこの処理を繰り返したら、リストを操作手段201を通じて利用者101に返す。
【0037】
次に、利用者101は検査の一覧(リスト)から自分の行いたいスクリプト102を選択し、操作手段201を通じて検査実行手段202に対し、検査の実行を要求する。要求には、(1) スクリプト名もしくはクラス名、(2) 検査パラメータの情報、(3)検査終了条件(但し(1)がクラス名の場合のみ)が含まれている。検査実行手段202は、スクリプト制御手段203に対し、検査の実行を要求する。実行結果は操作手段201に返される。
【0038】
次に図2、図4、図5を参照しながらスクリプト制御手段203の動作について説明する。はじめに検査名を指定して検査を実行する場合について説明する。
検査実行要求を受けたスクリプト制御手段203は、ステップ501でスクリプト蓄積手段206内に指定されたファイル名で管理されたスクリプト102を取り出す。
【0039】
次にステップ502で、スクリプト制御手段203はスクリプト102に記載されている実行条件記述部402の内容を取り出す。スクリプト102の実行条件記述部402には、そのスクリプト102を実行するために必要な条件、例えば検査対照ホストコンピュータ107のOSがWindows(登録商標)であること等が述語論理で記述されている。スクリプト制御手段203は、この条件を知識共有手段103に渡し、実行条件が満たされているかどうかを確認する。
【0040】
次に知識共有手段103からの応答を元に、実行条件が満たされたかどうかの判断をステップ503で行い、もし実行条件が満たされていなければスクリプト制御手段203は、ステップ508に進みスクリプト102の実行失敗として処理を終了する。
【0041】
もし実行条件が満たされていたならば、処理はステップ504に進む。ここでスクリプト制御手段203は、スクリプト102の検査手順記述部405の内容と、検査実行要求に含まれる検査パラメータに従い、検査を実行する。
【0042】
ステップ505でスクリプトの実行結果が判断され、失敗した場合はステップ508に進み、処理を終了する。
【0043】
実行に成功した場合、新たな知識が獲得される場合がある。例えば、発見されたセキュリティホールの一覧等である。そのような知識は他の検査を行うときに再利用できるようステップ506で、知識共有手段103中の共有知識蓄積手段208中に格納しておく。
最後に、実行結果を呼び出し元に返して処理は終了する(ステップ507)
【0044】
次に、図6を参照しながらクラス名を指定して検査を実行する場合について説明する。
検査実行要求を受けたスクリプト制御手段203は、ステップ601〜ステップ607で構成されるループを実行することで、スクリプト蓄積手段206中に格納されているスクリプト102を順に取り出し、以下の動作を行う。
【0045】
まず、ステップ604で現在対象としているスクリプト102のクラス名記述部401を参照し、そのスクリプト102が検査実行要求で指定されたクラスに所属しているかどうかを検査する。
もしスクリプト102が検査実行要求で指定されたクラス102に所属していなければ、ステップ609に進み、次のスクリプト102に対して、処理を行う。
【0046】
スクリプト102が検査実行要求で指定されたクラスに所属していたならば、ステップ605で、スクリプト102の実行を試みる。具体的には、図5のステップ502からの処理を行うことになる。
【0047】
ステップ606で実行の成功・失敗を判断し、もし失敗したならば、ステップ609に進み、他のスクリプト102の実行を試みる。
【0048】
実行が成功した場合、さらに他の同一クラスのスクリプト102を実行するかどうかをステップ607で判断する。判断は、検査実行要求として渡される情報に含まれる、検査終了条件をもとに行われる。
【0049】
もし、検査終了条件が、「クラスが一致する全てのスクリプトを実行」であったならば、ステップ609に進み、他のスクリプト102についても実行を試みる。そうでなければステップ608に進み、実行結果を呼び出し元に返して処理は終了する。
【0050】
ステップ602で、全てのスクリプト102に対して実行を試みたかどうかが判定され、もし全てのスクリプト102に対して実行を試みたことが判明した場合には、処理はステップ610に進む。
【0051】
ステップ610に到達するまでに、一つでもスクリプト102の実行に成功していた場合には、ステップ608に進み、実行結果を呼び出し元に返して処理は終了する。もし一つも成功していなかった場合には、ステップ611に進み、検査実行処理失敗として処理を終了する。
【0052】
以上、使用者101によってスクリプト実行を要求された場合の処理について述べたが、前述したとおり、スクリプト102から他のスクリプト102を呼び出すことも可能である。この場合、呼び出し元が異なるだけで、スクリプト制御手段203に渡すデータ及びその後の処理は同一である。
【0053】
次に、図2を参照しながらプラグイン制御手段204の動作について説明する。プラグイン制御手段204は、スクリプト102の検査手順記述部405に記述されたプラグイン実行命令をスクリプト制御手段203が実行した時にスクリプト制御手段203によって呼び出される。呼び出し時に渡されるデータは実行するプラグイン104の名前及びそのプラグイン104が必要とする実行パラメータである。
【0054】
プラグイン制御手段204はプラグイン蓄積手段207から、パラメータとして渡されたプラグイン名に対応するプラグイン104を取り出して実行する。実行結果は呼び出し元であるスクリプト制御手段203に返され、最終的にはプラグイン実行命令に対する結果としてスクリプト102に戻される。
【0055】
プラグイン104はその実行中に、踏み台模擬プログラム制御手段205を通じて、踏み台模擬プログラム105を操作する。操作される踏み台模擬プログラム105は、プログラムの動作しているホストコンピュータのアドレスと、ホストコンピュータ内部でユニークな踏み台模擬プログラム識別子で指定される。踏み台模擬プログラム105に要求できる命令は以下の通り。
TCP/UDP/RAWソケット生成・破棄
ソケット(TCP/UDP)のローカルポートへのBind
ソケット(TCP/UDP)のリモートポートへのConnect
Connectされたソケットを通じたSend、 Recv
Connectされていないソケットを通じたSendTo、 RecvFrom
Processの起動・終了
起動したProcessの標準入出力を通じたデータのやり取り
脆弱性検査プログラムホストから踏み台模擬プログラム動作ホストへのファイル転送及びその逆踏み台模擬プログラム状態取得
踏み台模擬プログラム停止
【0056】
次に図2を参照しながら知識共有手段103の動作について説明する。知識共有手段103は知識蓄積手段208に、検査によって得られた知識を蓄積し、他の検査でそれを再利用することを可能にするために使用される。
【0057】
推論手段108は、与えられたゴールを満たす解が存在するかどうか、知識蓄積手段208中の知識に基づいて推論を行う。本手段は、スクリプト102の実行条件の確認のためにスクリプト制御手段203によって呼び出される。また、スクリプト102に共有知識獲得命令を記述しておくことで、スクリプト実行中に呼び出される場合もある。
【0058】
知識は述語論理で表現されており、推論はProlog等の、述語論理に基づいた推論システムによって行われる。知識蓄積手段208には、検査で得られた事実に関する知識だけでなく、変数を利用した推論ルールも蓄積しておくことが可能である。
また、スクリプト102を実行する作用を持った特別な述語が定義されており、この述語を利用した推論ルールを記述しておくことで、共有知識が不足の場合に知識を獲得するためにスクリプト102を実行することができる。これにより、あるスクリプト102の実行条件を満たすために、自動的に他のスクリプト102を呼び出すことが可能となる。
【0059】
推論ルールは通常システム初期化時に初期設定ファイル(知識ファイル)から読み取られ、共有知識蓄積手段208に設定されるが、検査の過程で追加することも可能である。また、蓄積された知識を初期設定ファイル(知識ファイル)に保存することも可能である。
知識ファイルの例を図7に示した。本実施の形態では、記法はPrologの文法を利用している。
【0060】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0061】
第一に検査シナリオを、プログラミング言語で記述されたスクリプト102として表現し、スクリプト102から自動的にプラグイン(検査実行手段に該当)104を呼び出すことで、複雑な試験の実施を実施できる。
【0062】
さらに、各検査実行手段間のパラメータの授受はスクリプト102が媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くせる。
【0063】
さらに、スクリプト102が他のスクリプト102を呼び出せるようにすることで、階層化されたシナリオの実施を実施できる。
【0064】
さらに、推論ルールに従って、共有された知識から新たな知識を導出できるようにすることで各スクリプト102・プラグイン104毎に推論ロジックを作りこむ必要が無くなる。
【0065】
さらに、プラグイン104が、踏み台模擬プログラム105を経由して検査を実行することで、現実の攻撃者と同様な踏み台を経由した検査シナリオを実現できる。
【0066】
さらに、スクリプトにクラスの概念を採り入れることにより、クラス名によるグループ分けが可能に成り、スクリプトから他のスクリプトを呼び出すときに、スクリプトのファイル名でなく、クラス名からも呼び出すことができる。
【0067】
実施の形態2
実施の形態1では、操作手段201と検査実行手段202は同一装置内に存在するが、これらをネットワーク上に分散配置することも可能である。
【0068】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0069】
実施の形態1における特徴に加え、検査実行手段をファイアウォールの外側に配置し、操作手段をファイアウォールの内側に配置することが可能となり、これにより、本システムをネットワーク上に配置することのセキュリティ上のリスクを低減することが可能である。
【0070】
実施の形態3
実施の形態1では、プラグイン104として動的ロード可能な共有ライブラリを用いているが、踏み台模擬プログラム制御手段205とのインタフェースを提供可能なインタプリタ言語によっても実現可能である。
【0071】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0072】
実施の形態1における特徴に加え、プラグイン104をより実装しやすくなる上、システム運用中でも簡単にプラグイン104を編集可能となる。
【0073】
実施の形態4
本実施の形態では踏み台模擬プログラム105同士、及び踏み台模擬プログラム105と脆弱性検査プログラム100との間の通信はTCP/IP上の独自プロトコルを用いたが、ファイアウォールを考慮してこれをHTTP、 SMTP等のファイアウォール通過可能な一般的通信プロトコル上に構築することも可能である。
【0074】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0075】
実施の形態1における特徴に加え、踏み台模擬プログラムとの通信がファイアウォールによって遮断されることを防ぐことができ、より実際の攻撃者と同等の攻撃シナリオで検査を行えるようになる。
【0076】
【発明の効果】
以上述べたように本発明によれば、検査シナリオを、プログラミング言語で記述されたスクリプトとして表現し、スクリプトから自動的にプラグイン(検査実行手段に該当)を呼び出すことで、複雑な試験を実施できる。
さらに、各検査実行手段間のパラメータの授受はスクリプトが媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くせる。
【0077】
【図面の簡単な説明】
【図1】本発明のセキュリティホール診断システムの概略構成図。
【図2】図1に示す脆弱性検査プログラムの内部構成図。
【図3】図1に示す踏み台模擬プログラムの内部内部構成図。
【図4】スクリプトの構成説明図。
【図5】スクリプト制御手段の動作流れ図。
【図6】クラス名を指定して検査を実行する場合の動作流れ図。
【図7】知識ファイルの例を示す説明図。
【図8】スクリプトの記述例を示す説明図。
【図9】従来のセキュリティホール診断システムを示す構成図。
【図10】従来のシステムにおける手順定義ファイルの説明図。
【図11】従来のシステムにおける検査実行手段の情報(検査実行情報)の説明図。
【符号の説明】
100:脆弱性検査プログラム、101:利用者、102:スクリプト、103知識共有手段、104:プラグイン、105、106:踏み台模擬プログラム、107:検査対象ホスト、108:推論手段、201:操作手段、202:検査実行手段、203スクリプト制御手段、204:プラグイン制御手段、205:踏み台模擬プログラム制御手段、206:スクリプト蓄積手段、207:プラグイン蓄積手段、208:知識蓄積手段、301:全体制御手段、302:通信中継手段、303:検査パケット送受信手段、304:プロセス実行手段、305:ファイル転送手段、401:クラス名記述部、402:実行条件記述部、403:入出力パラメータ記述部、404:説明記述部、405:検査手順記述部。
【発明の属する技術分野】
本発明は、コンピュータのセキュリティホールの有無を診断するシステムに関するものである。
【0002】
【従来の技術】
図9は特開2001−337919に代表される、従来のセキュリティホール診断システムを示す構成図である。従来のシステムは操作装置900と検査実行装置907で構成され、操作装置900はディスプレイ902、画面生成部903、操作制御部905、表示名定義ファイル904及び手順定義ファイル906で構成されている。
また、検査実行装置907は、実行制御部908、対象ホスト情報格納部909、複数の検査実行手段911、及び検査実行手段格納部910で構成されている。
【0003】
図10は同システムにおける手順定義ファイル906の例を示すものである。手順定義ファイル906には、検査実行手段911の分類キー名と、分類キーとして指定された検査実行手段911のプロパティの値毎に表示名、実行タイプ、説明文が記載されている。
【0004】
図11は同システムにおける検査実行手段911の情報(検査実行情報)を表すものである。検査実行情報には、各検査実行手段911を特徴付ける値(プロパティ)がキー名(プロパティ名)に関連付けられて格納されている。
【0005】
次に従来のシステムの動作について説明する。操作装置900が検査実行装置907に接続されると、操作装置900は表示名定義ファイル904及び手順定義ファイル906をロードする。 次に、検査実行装置907中の検査実行手段格納部910に蓄積されている検査実行手段911一つ一つから検査実行情報を取り出し、手順定義ファイル906に指定されたキー名に対応するプロパティをもとに、各検査実行手段911を手順定義ファイル906記載のカテゴリに分類する。最後に分類された検査実行手段911の一覧をカテゴリ毎にディスプレイ902に表示する。
【0006】
使用者101はディスプレイ902に表示されたカテゴリを選択し、実行に必要なパラメータを入力し、検査実行を要求する。パラメータの説明は表示名定義ファイル904に記載されている情報が利用される。検査実行を要求された操作装置900は、そのカテゴリに分類された検査実行手段911を実行するように、操作制御部905を通じて検査実行装置907に要求する。
検査実行装置907は指定された検査実行手段911を呼び出し、その結果、検査のためのパケットが検査対象ホストコンピュータ107に送信される。
【0007】
なお、各検査実行手段911は、対象ホスト情報格納部909に情報を格納することができ、格納された情報は、他の検査実行手段911によって参照することができる。また、使用者101が操作装置900を通じて直接対象ホスト情報格納部909に情報を格納することも可能である。
【0008】
以上が従来のシステムにおける検査の流れである。ここで、カテゴリの表示順序は、手順定義ファイル906に記載されている順序であり、これを一般的な攻撃の手順に沿うようにすることで、使用者101はディスプレイ902に表示された順に検査を行うことによって攻撃者を模擬した検査を行うことができる。
【0009】
【特許文献1】
特開2001−337919号公報(第4−8頁、図3、図4、図14)
【0010】
【発明が解決しようとする課題】
以上のように、従来のセキュリティホール診断システムは、複数の検査実行手段を有し、それらを手順定義ファイルで与えられた方法で分類・表示し、カテゴリ毎に使用者が選択することでそのカテゴリに属する検査実行手段を実行するというものであり、また検査実行手段は直接検査対象ホストコンピュータに対し検査を実行するというものであった。そのため、以下のような問題があった。
【0011】
各カテゴリ毎に入力しなければならない実行パラメータは、使用者が前の検査の結果から入力しなければならず、あるカテゴリの検査の結果と次のカテゴリへの入力との関係を使用者は理解している必要がある。そのために、使用者はセキュリティ上の知識を必要とされた。
【0012】
定義ファイルは順次実行のシナリオしか表現できないが、実際の攻撃者は、前に行った攻撃の結果に応じて次に実施すべき攻撃の種類を変化させる場合も多い。従来のシステムでは、次にどのカテゴリの検査を実行するかの判断は使用者が行わなければならず、ここでも使用者にセキュリティ上の知識を必要とした。
攻撃者は、ある目的を持って複雑なステップで構成される攻撃を行う。その一連の攻撃は、さらに大きな目的を達成するための攻撃シナリオの一ステップに過ぎない場合も想定される。従来のシステムでは、このような階層化された攻撃シナリオを表現することはできない。
【0013】
対象ホスト情報格納部に蓄積される情報から、別の情報を推論するための推論手段がない。これは、例えば対象ホストのOSがUNIX(登録商標)であることから管理者のアカウント名がrootであるという知識を導出するための手段である。従って、各検査実行手段には、必要とする情報を、蓄積されている情報から推論するためのロジックを埋め込まなければならない。
攻撃者はあるホストへの侵入に成功すると、そこを踏み台としてさらに内部への侵入を試みる場合が多い。しかし従来の検査システムでは検査実行手段から直接検査を行うため、踏み台の使用を用いた検査シナリオを実施できない。
【0014】
本発明は上記の問題を解決するためになされたものであり、以下の事柄を目的とする。
検査シナリオを、プログラミング言語で記述されたスクリプトとして表現し、スクリプトから自動的にプラグイン(検査実行手段に該当)を呼び出すことで、複雑な試験の実施を可能とする。
【0015】
各検査実行手段間のパラメータの授受はスクリプトが媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くす。
【0016】
セキュリティホール診断を行う際に、より現実に近い高度な攻撃シナリオに基づいた検査を実施することが可能とし、使用者に必要とされるセキュリティの知識の程度を軽減することができ、検査ロジックの作成者の負担を軽減する。
【0017】
【課題を解決するための手段】
本発明に係るセキュリティホール診断システムは、不正アクセスのために通常攻撃者が行う手順がプログラミング言語で記述されたスクリプトが複数蓄積されたスクリプト蓄積手段と、
利用者からの入力により上記スクリプトの一覧を要求する操作手段と、
上記操作手段の要求に応じ、上記スクリプト蓄積手段から各スクリプトを取り出し、入出力パラメータ記述、スクリプト実行必要条件、検査手順を表示したリストを作成して利用者に提示し、利用者が選択したスクリプトを実行するスクリプト制御手段と、
個々のセキュリティホール攻撃のためのロジックが実装されたプラグインが蓄積されたプラグイン蓄積手段と、
スクリプト制御手段がスクリプトを実行することにより呼び出され、上記プラグイン蓄積手段から上記実行スクリプトに対応するプラグインを取り出して、そのプラグインを検査対象コンピュータに対して実行するプラグイン制御手段
とを備えた。
【0018】
【発明の実施の形態】
実施の形態1
はじめに図1を参照しながら、本システムの概要について述べる。本システムはローカルで動作する脆弱性検査プログラム100とリモートもしくはローカルのホストで動作する1つ以上の踏み台模擬プログラム、本実施の形態においては105、106の二つのプログラムで構成され、これらはネットワークで接続されている。
【0019】
脆弱性検査プログラム100は、使用者101からの要求に応じて、対象となるホストコンピュータ又は、ネットワークに対してセキュリティ上の脆弱性があるかどうかを検査するプログラムである。検査は脆弱性検査プログラム100が踏み台模擬プログラム105を操作することで実施される。
【0020】
踏み台模擬プログラム105はネットワークを通じて脆弱性検査プログラム100から命令を受け取り、パケット送受信、プロセスの起動・終了、ファイル転送、メッセージ中継を行うプログラムである。
踏み台模擬プログラム105は他の踏み台模擬プログラム106に命令を転送する機能も有しており、踏み台模擬プログラム105、106を適切に配置することで内部ネットワークに位置する検査対象ホストコンピュータ107に対しても検査が行えるようになる。
踏み台模擬プログラム105、106は、検査前に検査対象のネットワーク上のホスト内で、動作させておくことも、また、脆弱性検査の一環として、セキュリティホールを利用して埋め込むことも可能である。
【0021】
踏み台模擬プログラム105の操作は、実際には脆弱性検査プログラム100内でプラグイン104により制御される。プラグイン104とは、個々のセキュリティホールを攻撃するための動的ロード可能な共有ライブラリである。プラグイン104は踏み台模擬プログラム105を操作することで検査対象上に存在するセキュリティホールへの攻撃を行う。
様々なプラグイン104を用意することで、多様なセキュリティホールに対する脆弱性検査が可能となる。
【0022】
プラグイン104はスクリプト102によって制御される。スクリプト102とは、不正アクセスのために通常攻撃者が行う手順をインタプリタ言語で記述したテキストデータである。スクリプト102に従って様々なプラグイン104を呼び出すことで、脆弱性検査プログラム100は、攻撃者を模擬した複雑な脆弱性検査を行うことが可能となっている。
【0023】
スクリプト102もプラグイン104同様、その目的に応じて複数用意することができる。また、スクリプト102から他のスクリプト102を呼び出すことも可能であり、これにより他のスクリプト102を攻撃の一ステップとするような、より高度なスクリプト102を記述することができる。
本実施の形態では、スクリプト102の記述言語としてPerlを使用している。
【0024】
スクリプト102は、検査を実行した結果得られた検査対象に関する知識、例えばユーザアカウントの一覧や動作しているサーバ一覧等の情報を、知識共有手段103に蓄えることが可能である。知識共有手段103に蓄積された知識は、他のスクリプト102から参照することができる。
また、知識共有手段103に推論ルールに基づいて知識を吟味する推論手段108を備えることで、スクリプト102から得られた知識(事実情報)から新しい知識(推論)を導出することも可能である。例えばあるスクリプト102によって検査対象ホストコンピュータ107のOSがUNIX(登録商標)系であることが判れば、推論ルールにより、そのホストの管理者アカウント名がrootである、という知識を導出することができる。
【0025】
以上の概要を踏まえた上で、次に、図2を参照しながら脆弱性検査プログラム100の内部構成について説明する。脆弱性検査プログラム100は、操作手段201、検査実行手段202で構成されており、検査実行手段202はスクリプト制御手段203、プラグイン制御手段204、知識共有手段103、及び踏み台模擬プログラム制御手段205で構成されている。
【0026】
スクリプト制御手段203は、スクリプト102を蓄積・閲覧・実行するための手段を提供する。一つ以上のスクリプト102がスクリプト制御手段203内にあるスクリプト蓄積手段206に蓄積されている。スクリプト蓄積手段206内でスクリプト102は、ファイル名によって一意に名前付けされ管理されている。
【0027】
スクリプト102は、図4に示すとおり、クラス名記述部401、実行条件記述部402、入出力パラメータ記述部403、説明記述部404、及び検査手順記述部405で構成されている。
【0028】
クラス名記述部401には、そのスクリプト102がどのようなカテゴリの検査に属しているかを表すデータが記述されている。実行条件記述部402には、スクリプト実行時に満たされていなければならない条件が記述されている。条件は述語論理を用いて記述される。入出力パラメータ記述部403には、スクリプト102がどのような入力を受け取り、どのような出力を行うかが記述されている。説明記述部404には、スクリプト102の説明文が記述されている。検査手順記述部405には検査手順が記述されている。
【0029】
スクリプト102の記述例を図8に示した。図中、”Class:”がクラス名記述部401を表し、”Precondition:”が実行条件記述部402を表し、”Input:”及び”Output:”が入出力パラメータ記述部403を表している。”Description:”が説明記述部404であり、”#−−−−−END_SCRIPT_PROPERTY−−−−−” より下の部分に検査手順記述部405となるPerlコードが記載される。
【0030】
プラグイン制御手段204内にはプラグイン蓄積手段207があり、1つ以上のプラグイン104が蓄積されている。プラグイン104は、プラグイン蓄積手段207内で一意に名前付けされて管理されている。
【0031】
知識共有手段103は、スクリプト102が脆弱性検査の過程で収集した知識を他のスクリプト102と共有することを可能とするための手段である。
知識共有手段103内には、知識蓄積手段208があり、脆弱性検査の過程で収集された知識が蓄積されている。また、同手段内には推論手段108があり、知識蓄積手段103内の知識を元に推論処理を行うことが可能となっている。推論処理の一環としてスクリプト制御手段203を通じてスクリプト102を実行することも可能である。
【0032】
踏み台模擬プログラム制御手段205は、プラグイン104に対し踏み台模擬プログラム105を制御するためのインタフェースを提供するとともに、稼動中の踏み台模擬プログラム105の状態管理も行う。
【0033】
次に、図3を参照しながら図1中の踏み台模擬プログラム105の内部構成について説明する。踏み台模擬プログラム105は、全体制御手段301、通信中継手段302、検査パケット送受信手段303、プロセス実行手段304及びファイル転送手段305で構成されている。通信中継手段302は、ネットワークを通じて、他の踏み台模擬プログラム106や図2に示す踏み台模擬プログラム制御手段205と通信を行う。
【0034】
全体制御手段301は、通信中継手段302を通じて送られてきた制御メッセージを受け取り、その指示に従って検査パケット送信手段303、プロセス実行手段304、ファイル転送手段305を操作する。また、制御メッセージが自分宛で無い場合には通信中継手段302を利用して、制御メッセージを本当の宛先に転送する。
【0035】
通信中継手段302は制御メッセージを転送する。通信中継手段302は、一つの親と複数の子と接続可能である。そのため、踏み台模擬プログラム105は、脆弱性検査プログラム100を頂点としたツリー状に相互接続される。
接続は、TCPによって行われ、TCP接続要求は子から親、親から子どちらからも可能である。
【0036】
次に図2を用いて本システムの動作について説明する。
はじめに利用者101は操作手段201を通じて、検査実行手段202に対し、実行可能なスクリプト102の一覧を要求する。検査実行手段202はその内部手段であるスクリプト制御手段203を呼び出す。
スクリプト制御手段203は、スクリプト蓄積手段206からスクリプト102を一つずつ取り出し、そのファイル名、入出力パラメータ部403、説明記述部404、及びクラス名記述部401の内容をリストに蓄積する。全てのスクリプト102に対してこの処理を繰り返したら、リストを操作手段201を通じて利用者101に返す。
【0037】
次に、利用者101は検査の一覧(リスト)から自分の行いたいスクリプト102を選択し、操作手段201を通じて検査実行手段202に対し、検査の実行を要求する。要求には、(1) スクリプト名もしくはクラス名、(2) 検査パラメータの情報、(3)検査終了条件(但し(1)がクラス名の場合のみ)が含まれている。検査実行手段202は、スクリプト制御手段203に対し、検査の実行を要求する。実行結果は操作手段201に返される。
【0038】
次に図2、図4、図5を参照しながらスクリプト制御手段203の動作について説明する。はじめに検査名を指定して検査を実行する場合について説明する。
検査実行要求を受けたスクリプト制御手段203は、ステップ501でスクリプト蓄積手段206内に指定されたファイル名で管理されたスクリプト102を取り出す。
【0039】
次にステップ502で、スクリプト制御手段203はスクリプト102に記載されている実行条件記述部402の内容を取り出す。スクリプト102の実行条件記述部402には、そのスクリプト102を実行するために必要な条件、例えば検査対照ホストコンピュータ107のOSがWindows(登録商標)であること等が述語論理で記述されている。スクリプト制御手段203は、この条件を知識共有手段103に渡し、実行条件が満たされているかどうかを確認する。
【0040】
次に知識共有手段103からの応答を元に、実行条件が満たされたかどうかの判断をステップ503で行い、もし実行条件が満たされていなければスクリプト制御手段203は、ステップ508に進みスクリプト102の実行失敗として処理を終了する。
【0041】
もし実行条件が満たされていたならば、処理はステップ504に進む。ここでスクリプト制御手段203は、スクリプト102の検査手順記述部405の内容と、検査実行要求に含まれる検査パラメータに従い、検査を実行する。
【0042】
ステップ505でスクリプトの実行結果が判断され、失敗した場合はステップ508に進み、処理を終了する。
【0043】
実行に成功した場合、新たな知識が獲得される場合がある。例えば、発見されたセキュリティホールの一覧等である。そのような知識は他の検査を行うときに再利用できるようステップ506で、知識共有手段103中の共有知識蓄積手段208中に格納しておく。
最後に、実行結果を呼び出し元に返して処理は終了する(ステップ507)
【0044】
次に、図6を参照しながらクラス名を指定して検査を実行する場合について説明する。
検査実行要求を受けたスクリプト制御手段203は、ステップ601〜ステップ607で構成されるループを実行することで、スクリプト蓄積手段206中に格納されているスクリプト102を順に取り出し、以下の動作を行う。
【0045】
まず、ステップ604で現在対象としているスクリプト102のクラス名記述部401を参照し、そのスクリプト102が検査実行要求で指定されたクラスに所属しているかどうかを検査する。
もしスクリプト102が検査実行要求で指定されたクラス102に所属していなければ、ステップ609に進み、次のスクリプト102に対して、処理を行う。
【0046】
スクリプト102が検査実行要求で指定されたクラスに所属していたならば、ステップ605で、スクリプト102の実行を試みる。具体的には、図5のステップ502からの処理を行うことになる。
【0047】
ステップ606で実行の成功・失敗を判断し、もし失敗したならば、ステップ609に進み、他のスクリプト102の実行を試みる。
【0048】
実行が成功した場合、さらに他の同一クラスのスクリプト102を実行するかどうかをステップ607で判断する。判断は、検査実行要求として渡される情報に含まれる、検査終了条件をもとに行われる。
【0049】
もし、検査終了条件が、「クラスが一致する全てのスクリプトを実行」であったならば、ステップ609に進み、他のスクリプト102についても実行を試みる。そうでなければステップ608に進み、実行結果を呼び出し元に返して処理は終了する。
【0050】
ステップ602で、全てのスクリプト102に対して実行を試みたかどうかが判定され、もし全てのスクリプト102に対して実行を試みたことが判明した場合には、処理はステップ610に進む。
【0051】
ステップ610に到達するまでに、一つでもスクリプト102の実行に成功していた場合には、ステップ608に進み、実行結果を呼び出し元に返して処理は終了する。もし一つも成功していなかった場合には、ステップ611に進み、検査実行処理失敗として処理を終了する。
【0052】
以上、使用者101によってスクリプト実行を要求された場合の処理について述べたが、前述したとおり、スクリプト102から他のスクリプト102を呼び出すことも可能である。この場合、呼び出し元が異なるだけで、スクリプト制御手段203に渡すデータ及びその後の処理は同一である。
【0053】
次に、図2を参照しながらプラグイン制御手段204の動作について説明する。プラグイン制御手段204は、スクリプト102の検査手順記述部405に記述されたプラグイン実行命令をスクリプト制御手段203が実行した時にスクリプト制御手段203によって呼び出される。呼び出し時に渡されるデータは実行するプラグイン104の名前及びそのプラグイン104が必要とする実行パラメータである。
【0054】
プラグイン制御手段204はプラグイン蓄積手段207から、パラメータとして渡されたプラグイン名に対応するプラグイン104を取り出して実行する。実行結果は呼び出し元であるスクリプト制御手段203に返され、最終的にはプラグイン実行命令に対する結果としてスクリプト102に戻される。
【0055】
プラグイン104はその実行中に、踏み台模擬プログラム制御手段205を通じて、踏み台模擬プログラム105を操作する。操作される踏み台模擬プログラム105は、プログラムの動作しているホストコンピュータのアドレスと、ホストコンピュータ内部でユニークな踏み台模擬プログラム識別子で指定される。踏み台模擬プログラム105に要求できる命令は以下の通り。
TCP/UDP/RAWソケット生成・破棄
ソケット(TCP/UDP)のローカルポートへのBind
ソケット(TCP/UDP)のリモートポートへのConnect
Connectされたソケットを通じたSend、 Recv
Connectされていないソケットを通じたSendTo、 RecvFrom
Processの起動・終了
起動したProcessの標準入出力を通じたデータのやり取り
脆弱性検査プログラムホストから踏み台模擬プログラム動作ホストへのファイル転送及びその逆踏み台模擬プログラム状態取得
踏み台模擬プログラム停止
【0056】
次に図2を参照しながら知識共有手段103の動作について説明する。知識共有手段103は知識蓄積手段208に、検査によって得られた知識を蓄積し、他の検査でそれを再利用することを可能にするために使用される。
【0057】
推論手段108は、与えられたゴールを満たす解が存在するかどうか、知識蓄積手段208中の知識に基づいて推論を行う。本手段は、スクリプト102の実行条件の確認のためにスクリプト制御手段203によって呼び出される。また、スクリプト102に共有知識獲得命令を記述しておくことで、スクリプト実行中に呼び出される場合もある。
【0058】
知識は述語論理で表現されており、推論はProlog等の、述語論理に基づいた推論システムによって行われる。知識蓄積手段208には、検査で得られた事実に関する知識だけでなく、変数を利用した推論ルールも蓄積しておくことが可能である。
また、スクリプト102を実行する作用を持った特別な述語が定義されており、この述語を利用した推論ルールを記述しておくことで、共有知識が不足の場合に知識を獲得するためにスクリプト102を実行することができる。これにより、あるスクリプト102の実行条件を満たすために、自動的に他のスクリプト102を呼び出すことが可能となる。
【0059】
推論ルールは通常システム初期化時に初期設定ファイル(知識ファイル)から読み取られ、共有知識蓄積手段208に設定されるが、検査の過程で追加することも可能である。また、蓄積された知識を初期設定ファイル(知識ファイル)に保存することも可能である。
知識ファイルの例を図7に示した。本実施の形態では、記法はPrologの文法を利用している。
【0060】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0061】
第一に検査シナリオを、プログラミング言語で記述されたスクリプト102として表現し、スクリプト102から自動的にプラグイン(検査実行手段に該当)104を呼び出すことで、複雑な試験の実施を実施できる。
【0062】
さらに、各検査実行手段間のパラメータの授受はスクリプト102が媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くせる。
【0063】
さらに、スクリプト102が他のスクリプト102を呼び出せるようにすることで、階層化されたシナリオの実施を実施できる。
【0064】
さらに、推論ルールに従って、共有された知識から新たな知識を導出できるようにすることで各スクリプト102・プラグイン104毎に推論ロジックを作りこむ必要が無くなる。
【0065】
さらに、プラグイン104が、踏み台模擬プログラム105を経由して検査を実行することで、現実の攻撃者と同様な踏み台を経由した検査シナリオを実現できる。
【0066】
さらに、スクリプトにクラスの概念を採り入れることにより、クラス名によるグループ分けが可能に成り、スクリプトから他のスクリプトを呼び出すときに、スクリプトのファイル名でなく、クラス名からも呼び出すことができる。
【0067】
実施の形態2
実施の形態1では、操作手段201と検査実行手段202は同一装置内に存在するが、これらをネットワーク上に分散配置することも可能である。
【0068】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0069】
実施の形態1における特徴に加え、検査実行手段をファイアウォールの外側に配置し、操作手段をファイアウォールの内側に配置することが可能となり、これにより、本システムをネットワーク上に配置することのセキュリティ上のリスクを低減することが可能である。
【0070】
実施の形態3
実施の形態1では、プラグイン104として動的ロード可能な共有ライブラリを用いているが、踏み台模擬プログラム制御手段205とのインタフェースを提供可能なインタプリタ言語によっても実現可能である。
【0071】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0072】
実施の形態1における特徴に加え、プラグイン104をより実装しやすくなる上、システム運用中でも簡単にプラグイン104を編集可能となる。
【0073】
実施の形態4
本実施の形態では踏み台模擬プログラム105同士、及び踏み台模擬プログラム105と脆弱性検査プログラム100との間の通信はTCP/IP上の独自プロトコルを用いたが、ファイアウォールを考慮してこれをHTTP、 SMTP等のファイアウォール通過可能な一般的通信プロトコル上に構築することも可能である。
【0074】
本実施の形態で示されるシステムにより、次のような特徴を持ったセキュリティホール診断システムを実現することができる。
【0075】
実施の形態1における特徴に加え、踏み台模擬プログラムとの通信がファイアウォールによって遮断されることを防ぐことができ、より実際の攻撃者と同等の攻撃シナリオで検査を行えるようになる。
【0076】
【発明の効果】
以上述べたように本発明によれば、検査シナリオを、プログラミング言語で記述されたスクリプトとして表現し、スクリプトから自動的にプラグイン(検査実行手段に該当)を呼び出すことで、複雑な試験を実施できる。
さらに、各検査実行手段間のパラメータの授受はスクリプトが媒介するようにすることで、使用者は検査実行手段間の入出力の関係について知っている必要を無くせる。
【0077】
【図面の簡単な説明】
【図1】本発明のセキュリティホール診断システムの概略構成図。
【図2】図1に示す脆弱性検査プログラムの内部構成図。
【図3】図1に示す踏み台模擬プログラムの内部内部構成図。
【図4】スクリプトの構成説明図。
【図5】スクリプト制御手段の動作流れ図。
【図6】クラス名を指定して検査を実行する場合の動作流れ図。
【図7】知識ファイルの例を示す説明図。
【図8】スクリプトの記述例を示す説明図。
【図9】従来のセキュリティホール診断システムを示す構成図。
【図10】従来のシステムにおける手順定義ファイルの説明図。
【図11】従来のシステムにおける検査実行手段の情報(検査実行情報)の説明図。
【符号の説明】
100:脆弱性検査プログラム、101:利用者、102:スクリプト、103知識共有手段、104:プラグイン、105、106:踏み台模擬プログラム、107:検査対象ホスト、108:推論手段、201:操作手段、202:検査実行手段、203スクリプト制御手段、204:プラグイン制御手段、205:踏み台模擬プログラム制御手段、206:スクリプト蓄積手段、207:プラグイン蓄積手段、208:知識蓄積手段、301:全体制御手段、302:通信中継手段、303:検査パケット送受信手段、304:プロセス実行手段、305:ファイル転送手段、401:クラス名記述部、402:実行条件記述部、403:入出力パラメータ記述部、404:説明記述部、405:検査手順記述部。
Claims (9)
- 不正アクセスのために通常攻撃者が行う手順がプログラミング言語で記述されたスクリプトが複数蓄積されたスクリプト蓄積手段と、
利用者からの入力により上記スクリプトの一覧を要求する操作手段と、
上記操作手段の要求に応じ、上記スクリプト蓄積手段から各スクリプトを取り出し、入出力パラメータ記述、スクリプト実行必要条件、検査手順を表示したリストを作成して利用者に提示し、利用者が選択したスクリプトを実行するスクリプト制御手段と、
個々のセキュリティホール攻撃のためのロジックが実装されたプラグインが蓄積されたプラグイン蓄積手段と、
スクリプト制御手段がスクリプトを実行することにより呼び出され、上記プラグイン蓄積手段から上記実行スクリプトが指定するプラグインを取り出して、そのプラグインを検査対象コンピュータに対して実行するプラグイン制御手段
とを備えたセキュリティホール診断システム。 - パケット送受信、プロセス起動・終了・プロセスとのデータ入出力、ファイル転送機能を有する踏み台模擬プログラムと、上記プラグインからの指令により検査対象コンピュータに対するプラグインの実行を上記踏み台模擬プログラムを介して実施する踏み台模擬プログラム制御手段とを備えたことを特徴とする請求項1記載のセキュリティホール診断システム。
- 上記スクリプトは他のスクリプトを呼び出せる構成されたことを特徴とする請求項1または2に記載のセキュリティホール診断システム。
- 上記スクリプトはクラスの概念が導入され、他のスクリプトを呼び出す際、クラス名を指定することにより呼び出せる機能を持つ構成とされたことを特徴とする請求項1記載のセキュリティホール診断システム。
- 上記スクリプト実行必要条件が満たされているか否かを確認する知識共有手段を備え、この知識共有手段は上記スクリプトが実行される過程で収集された情報を推論ルールに従って新しい知識に導出する推論手段を有することを特徴とする請求項1記載のセキュリティホール診断システム。
- 知識共有手段は、共有知識が不足の場合に、推論ルールに従って知識獲得のためのスクリプトを実行する機能を有するに構成されたことを特徴とする請求項5記載のセキュリティホール診断システム。
- 上記スクリプト制御手段と、上記プラグイン蓄積手段と、上記プラグイン制御手段と、上記スクリプト蓄積手段と、上記踏み台模擬プログラム制御手段とで検査実行手段を形成し、この検査実行手段と上記操作手段とはネットワーク上に分散した構成とされた請求項2記載のセキュリティホール診断システム。
- 上記プラグインはインタプリタ言語で記述されたものであることを特徴とする請求項1記載のセキュリティホール診断システム。
- 踏み台模擬プログラム制御手段はそのプロトコルを、ファイアウォールが通過可能なプロトコル上で構築したものであることを特徴とする請求項2記載のセキュリティホール診断システム。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002306536A JP2004145413A (ja) | 2002-10-22 | 2002-10-22 | セキュリティホール診断システム |
KR1020047009823A KR100676574B1 (ko) | 2002-10-22 | 2003-10-08 | 보안 홀 진단 시스템 |
CN03801334.7A CN1284093C (zh) | 2002-10-22 | 2003-10-08 | 安全漏洞诊断系统 |
US10/501,239 US20050241000A1 (en) | 2002-10-22 | 2003-10-08 | Security hole diagnostic system |
CA002473577A CA2473577A1 (en) | 2002-10-22 | 2003-10-08 | Security hole diagnosis system |
PCT/JP2003/012914 WO2004038593A1 (ja) | 2002-10-22 | 2003-10-08 | セキュリティホール診断システム |
TW092128508A TWI239445B (en) | 2002-10-22 | 2003-10-15 | Security hole diagnosis system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002306536A JP2004145413A (ja) | 2002-10-22 | 2002-10-22 | セキュリティホール診断システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004145413A true JP2004145413A (ja) | 2004-05-20 |
Family
ID=32170901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002306536A Abandoned JP2004145413A (ja) | 2002-10-22 | 2002-10-22 | セキュリティホール診断システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US20050241000A1 (ja) |
JP (1) | JP2004145413A (ja) |
KR (1) | KR100676574B1 (ja) |
CN (1) | CN1284093C (ja) |
CA (1) | CA2473577A1 (ja) |
TW (1) | TWI239445B (ja) |
WO (1) | WO2004038593A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282542B2 (en) | 2013-10-24 | 2019-05-07 | Mitsubishi Electric Corporation | Information processing apparatus, information processing method, and computer readable medium |
WO2020105156A1 (ja) * | 2018-11-21 | 2020-05-28 | 三菱電機株式会社 | シナリオ生成装置、シナリオ生成方法およびシナリオ生成プログラム |
DE112020007314T5 (de) | 2020-08-18 | 2023-04-06 | Mitsubishi Electric Corporation | Angriffsmittel-evaluierungsvorrichtung, angriffsmittel-evaluierungsverfahren und angriffsmittel-evaluierungs-programm |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100030874A1 (en) * | 2008-08-01 | 2010-02-04 | Louis Ormond | System and method for secure state notification for networked devices |
CN101661543B (zh) * | 2008-08-28 | 2015-06-17 | 西门子(中国)有限公司 | 软件源代码安全漏洞的检测方法及检测装置 |
CN102054142B (zh) * | 2011-01-28 | 2013-02-20 | 李清宝 | 硬件安全缺陷仿真与训练平台 |
US10826928B2 (en) * | 2015-07-10 | 2020-11-03 | Reliaquest Holdings, Llc | System and method for simulating network security threats and assessing network security |
GB201518910D0 (en) | 2015-10-26 | 2015-12-09 | Rieke Packaging Systems Ltd | Dispensers |
US10395040B2 (en) | 2016-07-18 | 2019-08-27 | vThreat, Inc. | System and method for identifying network security threats and assessing network security |
US10733345B1 (en) * | 2018-08-23 | 2020-08-04 | Cadence Design Systems, Inc. | Method and system for generating a validation test |
CN111611591B (zh) * | 2020-05-22 | 2024-05-07 | 中国电力科学研究院有限公司 | 一种固件漏洞的检测方法、装置、存储介质及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507948B1 (en) * | 1999-09-02 | 2003-01-14 | International Business Machines Corporation | Method, system, and program for generating batch files |
JP2002073462A (ja) * | 2000-08-31 | 2002-03-12 | Ricoh Co Ltd | 情報入出力システムおよびそれに用いる端末 |
-
2002
- 2002-10-22 JP JP2002306536A patent/JP2004145413A/ja not_active Abandoned
-
2003
- 2003-10-08 CA CA002473577A patent/CA2473577A1/en not_active Abandoned
- 2003-10-08 KR KR1020047009823A patent/KR100676574B1/ko not_active IP Right Cessation
- 2003-10-08 US US10/501,239 patent/US20050241000A1/en not_active Abandoned
- 2003-10-08 WO PCT/JP2003/012914 patent/WO2004038593A1/ja active Application Filing
- 2003-10-08 CN CN03801334.7A patent/CN1284093C/zh not_active Expired - Fee Related
- 2003-10-15 TW TW092128508A patent/TWI239445B/zh not_active IP Right Cessation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282542B2 (en) | 2013-10-24 | 2019-05-07 | Mitsubishi Electric Corporation | Information processing apparatus, information processing method, and computer readable medium |
WO2020105156A1 (ja) * | 2018-11-21 | 2020-05-28 | 三菱電機株式会社 | シナリオ生成装置、シナリオ生成方法およびシナリオ生成プログラム |
JPWO2020105156A1 (ja) * | 2018-11-21 | 2021-04-01 | 三菱電機株式会社 | シナリオ生成装置、シナリオ生成方法およびシナリオ生成プログラム |
US11956271B2 (en) | 2018-11-21 | 2024-04-09 | Mitsubishi Electric Corporation | Scenario generation device, scenario generation method, and computer readable medium |
DE112020007314T5 (de) | 2020-08-18 | 2023-04-06 | Mitsubishi Electric Corporation | Angriffsmittel-evaluierungsvorrichtung, angriffsmittel-evaluierungsverfahren und angriffsmittel-evaluierungs-programm |
DE112020007314B4 (de) | 2020-08-18 | 2024-05-23 | Mitsubishi Electric Corporation | Angriffsmittel-evaluierungsvorrichtung, angriffsmittel-evaluierungsverfahren und angriffsmittel-evaluierungs-programm |
Also Published As
Publication number | Publication date |
---|---|
CN1284093C (zh) | 2006-11-08 |
CN1571961A (zh) | 2005-01-26 |
US20050241000A1 (en) | 2005-10-27 |
CA2473577A1 (en) | 2004-05-06 |
TW200408934A (en) | 2004-06-01 |
WO2004038593A1 (ja) | 2004-05-06 |
TWI239445B (en) | 2005-09-11 |
KR100676574B1 (ko) | 2007-01-30 |
KR20040086251A (ko) | 2004-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Michel et al. | Adele: An attack description language for knowledge-based intrusion detection | |
CN110855676B (zh) | 网络攻击的处理方法、装置及存储介质 | |
US20220198025A1 (en) | Web Attack Simulator | |
US20090007270A1 (en) | System and method for simulating computer network attacks | |
CN110032426A (zh) | 一种可在线实时调试的方法、系统及存储介质 | |
CN110188543A (zh) | 白名单库、白名单程序库更新方法及工控系统 | |
Krstić et al. | Security of SoC firmware load protocols | |
CN104715195A (zh) | 基于动态插桩的恶意代码检测系统及方法 | |
JP2004145413A (ja) | セキュリティホール診断システム | |
CN105681478B (zh) | 通过对网络资源调度提高网络爬虫抓取效率的方法和装置 | |
CN116055566B (zh) | 网络靶场的通信方法、装置、设备及存储介质 | |
CN112528296A (zh) | 漏洞检测方法、装置和存储介质及电子设备 | |
WO2016048294A1 (en) | Infrastructure rule generation | |
CN115842642A (zh) | 网络访问管理方法、装置及电子设备 | |
CN110569987A (zh) | 自动化运维方法、运维设备、存储介质及装置 | |
CN117134986A (zh) | 基于ChatGPT的外网蜜点生成方法、系统及装置 | |
US20230022134A1 (en) | Framework for validating and troubleshooting network policy configurations | |
EP4278287A1 (en) | Web attack simulator | |
CN115382216A (zh) | 一种可视化游戏数据调试方法和系统 | |
CN106844073A (zh) | 一种诊断应用的方法、诊断客户端及系统 | |
CN112306850B (zh) | 一种测试用例生成方法、装置及存储介质 | |
JP4629291B2 (ja) | クライアントの要求を確認する方法およびシステム | |
Lee et al. | Collecting big data from automotive ECUs beyond the CAN bandwidth for fault visualization | |
RU2743974C1 (ru) | Система и способ сканирования защищенности элементов сетевой архитектуры | |
CN105827468A (zh) | 网络性能实时监控方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20040708 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051003 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080924 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20081119 |