(57)【要約】【課題】通信再現装置を用いて通信を再現して攻撃手法の解析を行う場合に、攻撃の再現性を向上させる。【解決手段】再現された再現送信メッセージに対するレスポンスを通信対象ホスト２００から受信する度に、送信メッセージ生成部１０２が、次の再現送信メッセージの生成に用いる過去の送信メッセージを選択し、選択した送信メッセージに含まれる特定のパラメータの値と、選択した送信メッセージの一つ前の送信メッセージに対する過去のレスポンスに含まれる当該特定のパラメータの値とが一致するか否かを判定し、両者が一致する場合に、選択した送信メッセージの当該特定のパラメータの値を通信対象ホスト２００から受信したレスポンスを用いて変更し、変更後の値を反映させて再現送信メッセージを生成し、両者が異なる場合は、当該特定のパラメータの値を変更することなく、選択した送信メッセージを用いて再現送信メッセージを生成する。【選択図】図１
2010020654.tif 000002
【特許請求の範囲】
【請求項１】
通信記録装置が、第１の通信装置から第２の通信装置へ送信された送信メッセージと、送信メッセージに対する応答として前記第２の通信装置から前記第１の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ及び応答メッセージ記録データとして記録した後に、前記通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、前記第１の通信装置と前記第２の通信装置との間の通信を再現する通信再現装置であって、
前記複数の送信メッセージ記録データを送信順に用いて、前記第２の通信装置への送信メッセージである再現送信メッセージを生成する送信メッセージ生成部と、
前記送信メッセージ生成部により生成された再現送信メッセージを前記第２の通信装置に対して送信するメッセージ送信部と、
前記メッセージ送信部により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして前記第２の通信装置から受信するメッセージ受信部とを有し、
前記送信メッセージ生成部は、
前記メッセージ受信部により再現応答メッセージが受信される度に、次の再現送信メッセージの生成に用いる送信メッセージ記録データを選択し、選択した選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージに先行する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定し、両者が一致する場合に、前記選択送信メッセージ記録データの前記特定のパラメータの値を再現応答メッセージを用いて変更し、変更後の値を反映させて前記選択送信メッセージ記録データを用いて再現送信メッセージを生成し、両者が異なる場合に、前記特定のパラメータの値を変更することなく前記選択送信メッセージ記録データを用いて再現送信メッセージを生成することを特徴とする通信再現装置。
【請求項２】
前記送信メッセージ生成部は、
前記選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定することを特徴とする請求項１に記載の通信再現装置。
【請求項３】
前記送信メッセージ生成部は、
前記選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データである先行応答メッセージ記録データに示される前記特定のパラメータの値とが一致するか否かを判定することを特徴とする請求項１又は２に記載の通信再現装置。
【請求項４】
前記送信メッセージ生成部は、
前記選択送信メッセージ記録データの前記特定のパラメータの値を、前記メッセージ受信部により受信された最新の再現応答メッセージに示される前記特定のパラメータの値に変更することを特徴とする請求項１〜３のいずれかに記載の通信再現装置。
【請求項５】
前記送信メッセージ生成部は、
前記第２の通信装置との間に確立するセッションごとに値が変化するパラメータ及び前記第２の通信装置との間に確立したセッションが進行するに従って値が変化するパラメータの少なくともいずれかについて、前記選択送信メッセージ記録データと前記先行応答メッセージ記録データとの間で値が一致するか否かを判定することを特徴とする請求項１〜４のいずれかに記載の通信再現装置。
【請求項６】
前記送信メッセージ生成部は、
送信メッセージ記録データごとに、送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データに示される前記特定のパラメータの値を示す通信状態情報を生成し、
いずれかの送信メッセージ記録データを前記選択送信メッセージ記録データとして選択した際に、選択した送信メッセージ記録データに示される前記特定のパラメータの値と、選択した送信メッセージ記録データの通信状態情報に示される値とが一致するか否かを判定することを特徴とする請求項１〜５のいずれかに記載の通信再現装置。
【請求項７】
前記通信再現装置は、更に、
送信メッセージ記録データごとに、送信メッセージ記録データに示される前記特定のパラメータの値と、送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データに示される前記特定のパラメータの値とが一致するか否かを通知する通知情報を前記通信記録装置から受信する情報受信部を有し、
前記送信メッセージ送信部は、
いずれかの送信メッセージ記録データを前記選択送信メッセージ記録データとして選択した際に、選択した送信メッセージ記録データの通知情報に基づき、前記特定のパラメータの値についての一致判定を行うことを特徴とする請求項１〜５のいずれかに記載の通信再現装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、過去に記録された通信記録に基づいて後日通信を再現する通信再現技術に関する。
【背景技術】
【０００２】
端末間の通信を記録し、その記録に基づいて片方の端末を模擬してもう片方の端末と通信を行う装置が知られている。
このような装置を本明細書では通信再現装置と呼ぶことにする。
図１０は、通信記録装置３００と通信再現装置８００とを用いてあるクライアント６００とサーバ７００との間で行われた通信を再現する様子を表している。
図１０の例では、通信記録装置３００がクライアント６００とサーバ７００との間で送受信されたメッセージを記録し、後日、通信再現装置８００が通信記録装置３００により記録されたメッセージを用いて、クライアント６００を模擬して、サーバ７００と通信を行い、クライアント６００とサーバ７００との間で行われた通信を再現する。
【０００３】
通信再現装置に関する技術としては、特許文献１にあるような稼働中のシステムに対して行われる通信を記録して新システムの実運用試験を行う方法や、特許文献２にあるように既に動作する機器間の通信を記録し、再現することで試験を効率化する方法が知られている。
また、非特許文献１ではＷｅｂアプリケーションに対するテストの実施方法として、あらかじめ記録あるいは作成されたメッセージを送信するが、その際にテスト対象のサーバからのレスポンスに応じてメッセージの一部を修正する技術が示されている。
【特許文献１】特開２００６−１４８３５８号公報
【特許文献２】特開２００１−２０９４１４号公報
【非特許文献１】Ｓ．Ｅｌｂａｕｍ，Ｇ．Ｒｏｔｈｅｒｍｅ，Ｓ．Ｋａｒｒｅ  ａｎｄ  Ｍ．  Ｆｉｓｈｅｒ  ＩＩ，Ｌｅｖｅｒａｇｉｎｇ  ｕｓｅｒ−ｓｅｓｓｉｏｎｄａｔａ  ｔｏ  ｓｕｐｐｏｒｔ  Ｗｅｂ  ａｐｐｌｉｃａｔｉｏｎ  ｔｅｓｔｉｎｇ，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  ＳｏｆｔｗａｒｅＥｎｇｉｎｅｅｒｉｎｇ，  ｖｏｌ．３１，ｉｓｓｕｅ  ３，  ｐｐ．  １８７−２０２，  Ｍａｒｃｈ  ２００５
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来、このような通信再現装置は特許文献１、２及び非特許文献１にもある通り、通信装置又はアプリケーションのテストが主な用途であったが、セキュリティへの応用として通信記録からサーバに対する攻撃を含んだ通信を見つけ出すための装置として利用することも可能である。
その場合、図１１に示す通り、インターネットを介したリモートホスト（図示せず）とサーバ７００との通信を通信記録装置３００において常時記録しておき、ある時点で管理者がサーバ７００上で何らかの攻撃の痕跡（ファイルの改ざん、破壊、サーバのクラッシュ等）を発見した場合に記録された通信を通信再現装置８００を用いて一つ一つ再現することでどのような攻撃を受けたのかを調査することが可能である。
このような目的に通信再現装置８００を用いる際の従来技術の課題について以下に説明する。
【０００５】
通信再現装置８００がサーバ７００との通信を行うにあたり、通信再現装置８００がサーバ７００から受け取ったメッセージから計算される情報を、送信メッセージ中に格納しなければならない場合がある。
典型的な例としてクライアント（ブラウザ）とＷｅｂアプリケーションとの間の通信を挙げることができる。
一般的なＷｅｂアプリケーションでは、各クライアントとのセッションを識別するため、セッション開始時にサーバ側でセッションＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）をランダムに割り振り、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）レスポンス中のＳｅｔ−Ｃｏｏｋｉｅヘッダを用いてクライアントに通知する。
セッションＩＤを受け取ったクライアントは以降、ＨＴＴＰリクエスト中のＣｏｏｋｉｅヘッダ中に渡されたセッションＩＤを格納してアクセスする。
【０００６】
クライアントとＷｅｂアプリケーションとの通信例を図１２に示した。
なお図中のＳ１，Ｓ２はクライアントからサーバに送信するＨＴＴＰリクエストを示し、Ｒ１，Ｒ２はそれぞれのリクエストに対しサーバから返されるＨＴＴＰレスポンスを示している。
このような通信を再現しようとする場合、特許文献１及び２では、サーバからのレスポンスに応じて次に送信するメッセージを補正する手段が無いため、うまくセッションを維持することができない。
つまり、特許文献１及び２に示される技術によれば、通信再現装置８００は、通信記録装置３００が記録したメッセージの内容を実際にサーバ７００から受信したレスポンスに示される記述に変更して送信メッセージを生成することができない（図１２の例では、Ｒ１においてサーバ７００から通知されたｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄをＳ２に反映させることができない）。
従って、ある程度セッションが進んでから行われる攻撃（例えばＳ３，Ｓ４等で発生する）を再現しようとしても途中でサーバ７００から通信を拒絶されてしまい、攻撃を再現することができないという課題がある。
【０００７】
また、非特許文献１で示される技術では通信再現時にサーバからのレスポンスに応じて送信メッセージの補正が行われるため上記の課題は解消できるが、補正対象となる箇所に攻撃を含んだ通信を再現しようとするとき、以下に述べるような課題が発生する。
【０００８】
図１３は、非特許文献１の方式で攻撃の再現が失敗するような通信記録の例を示している。
この例ではクライアントからサーバに対して送られた２番目のメッセージ（Ｓｏｌｄ２）のＣｏｏｋｉｅヘッダ中にバッファオーバフロー攻撃が含まれている。
図１４を参照しながら上記通信を非特許文献１で示される技術によって通信内容を再現しようとした場合に発生する課題について説明する。
なお、Ｓｏｌｄ１及びＳｏｌｄ２は、通信記録装置３００に記録されているクライアント６００から送信されたＨＴＴＰリクエストを示す。
一方、Ｓｎｅｗ１及びＳｎｅｗ２は、通信再現装置８００がサーバ７００からの受信したレスポンスに応じて内容を補正したＨＴＴＰリクエストを示す。なお、図１４の例では、Ｓｏｌｄ１とＳｎｅｗ１とは同じ内容であり（補正なし）、Ｓｎｅｗ２においてＲｎｅｗ１で通知されたｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄの値に補正している。
また、Ｒｎｅｗ１は、通信再現装置８００からのＨＴＴＰリスクエストＳｎｅｗ１に対するサーバ７００からのレスポンスである。
【０００９】
まず、通信再現装置８００は通信記録装置３００からＳｏｌｄ１を取り出し、サーバ７００に送信する。
その結果、通信再現装置８００はサーバ７００から応答Ｒｎｅｗ１を受信する。
次に、通信再現装置８００はＳｏｌｄ２を送信するのであるが、その際Ｒｎｅｗ１に含まれていたＳｅｔ−Ｃｏｏｋｉｅヘッダの値でＳｏｌｄ２中のＣｏｏｋｉｅヘッダの値（バッファオーバフロー攻撃）を修正してしまい、結果として攻撃を含んでいないメッセージＳｎｅｗ２を送信してしまう。
このため、結果として攻撃が再現できなくなってしまう。
【００１０】
以上のように、従来技術では特許文献１，２のように送信メッセージの補正を全く行わないか、非特許文献１のように常に補正を行ってしまうものしかなく、セッションを維持するために必要な送信メッセージの補正を行いつつ、補正されるべき箇所に含まれる攻撃を再現することはできないという課題がある。
【００１１】
本発明は以上の課題を解決することを主な目的の一つとし、通信再現時に送信メッセージを補正する際に、再現した送信メッセージに対して応答された応答メッセージだけでなく、通信記録装置中に蓄えられた過去のメッセージも参照して補正を行うことで、通信を再現して攻撃手法の解析を行う場合に、セッションがある程度進行してから発生する攻撃や、再現時の応答メッセージの内容に基づいて補正されてしまう攻撃等を再現可能とし、攻撃の再現性を向上させることを主な目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る通信再現装置は、
通信記録装置が、第１の通信装置から第２の通信装置へ送信された送信メッセージと、送信メッセージに対する応答として前記第２の通信装置から前記第１の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ及び応答メッセージ記録データとして記録した後に、前記通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、前記第１の通信装置と前記第２の通信装置との間の通信を再現する通信再現装置であって、
前記複数の送信メッセージ記録データを送信順に用いて、前記第２の通信装置への送信メッセージである再現送信メッセージを生成する送信メッセージ生成部と、
前記送信メッセージ生成部により生成された再現送信メッセージを前記第２の通信装置に対して送信するメッセージ送信部と、
前記メッセージ送信部により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして前記第２の通信装置から受信するメッセージ受信部とを有し、
前記送信メッセージ生成部は、
前記メッセージ受信部により再現応答メッセージが受信される度に、次の再現送信メッセージの生成に用いる送信メッセージ記録データを選択し、選択した選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージに先行する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定し、両者が一致する場合に、前記選択送信メッセージ記録データの前記特定のパラメータの値を再現応答メッセージを用いて変更し、変更後の値を反映させて前記選択送信メッセージ記録データを用いて再現送信メッセージを生成し、両者が異なる場合に、前記特定のパラメータの値を変更することなく前記選択送信メッセージ記録データを用いて再現送信メッセージを生成することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、再現送信メッセージに対して応答された再現応答メッセージだけでなく、通信記録装置中に蓄えられた過去のメッセージも参照してパラメータ値の補正を行うことで、通信を再現して攻撃手法の解析を行う場合に、セッションがある程度進行してから発生する攻撃や、再現時の応答メッセージの内容に基づいて補正されてしまう攻撃等の再現が可能となり、攻撃の再現性を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
本実施の形態では、通信再現時に送信メッセージを補正する際に、サーバから返されたレスポンスだけでなく、通信記録装置中に蓄えられた過去のレスポンスメッセージも参照して補正を行うことで、セッションを維持できるよう適宜送信メッセージを補正すると共に、補正箇所に攻撃が含まれていた場合には、その箇所に関する補正を行わないようにした通信再現装置について説明する。
【００１５】
以下に、実施の形態に係る通信再現装置を適宜図面を参照しながら説明する。
図１は、本実施の形態に係る通信再現装置１００の構成例を示す。
本実施の形態においても、通信再現装置１００は、不図示の通信記録装置において記録されたメッセージを用いて通信を再現する。
つまり、通信記録装置が、第１の通信装置（例えば、クライアント）から第２の通信装置（例えば、サーバ、ホスト）へ送信された送信メッセージと、送信メッセージに対する応答として第２の通信装置から第１の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ（以下、過去の送信メッセージともいう）及び応答メッセージ記録データ（以下、過去の応答メッセージ又は過去のレスポンスメッセージ、過去のレスポンスともいう）として記録した後に、通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、通信再現装置１００が第１の通信装置を模擬して第２の通信装置と通信を行って、第１の通信装置と第２の通信装置との間の通信を再現する。
【００１６】
図１にある通り、通信再現装置１００は再現対象通信記録部１０１、送信メッセージ生成部１０２、メッセージ受信部１０３、メッセージ送信部１０４に大別され、ネットワークを通じて通信対象となる通信対象ホスト２００と接続されている。
なお、通信対象ホスト２００は、第２の通信装置の例である。
【００１７】
再現対象通信記録部１０１には、通信記録装置３００によって過去に記録された通信記録データ（送信メッセージ記録データ及び応答メッセージ記録データ）が格納される。
メッセージ送信部１０４は、送信メッセージ生成部１０２により生成された再現送信メッセージを通信対象ホスト２００に対して送信する。
メッセージ受信部１０３は、メッセージ送信部１０４により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして通信対象ホスト２００から受信し、送信メッセージ生成部１０２へとフィードバックする。
【００１８】
送信メッセージ生成部１０２は再現対象通信記録部１０１に格納された過去の送受信メッセージを参照し過去の送信メッセージを送信順に用いて、送信すべきメッセージ（再現送信メッセージ）を生成する。
より具体的には、送信メッセージ生成部１０２は、メッセージ受信部１０３が通信対象ホスト２００から新たにレスポンス（再現応答メッセージ）を受信する度に、次の再現送信メッセージの生成に用いる過去の送信メッセージを選択し、選択した過去の送信メッセージ（選択送信メッセージ記録データ）に含まれる特定のパラメータ（例えば、セッションごとに値が変化するパラメータ、セッションの進行に従って値が変更するパラメータ）の値と、選択した過去の送信メッセージの一つ前の送信メッセージに対する過去のレスポンス（先行応答メッセージ記録データ）から導出される値とが一致するか否かを判定する。
当該過去のレスンポンス（先行応答メッセージ記録データ）から導出される値は、例えば、選択した過去の送信メッセージ（選択送信メッセージ記録データ）に含まれる特定のパラメータと同種のパラメータの値（過去のレスポンスに含まれるパラメータの値）である。また、過去のレスポンスに含まれるパラメータの値に対して所定の計算（例えば所定値の加算、減算等）を行うことにより得られる値であってもよい。
そして、送信メッセージ生成部１０２は、両者が一致する場合に、選択した過去の送信メッセージ（選択送信メッセージ記録データ）の当該特定のパラメータの値を通信対象ホスト２００から新たに受信したレスポンス（再現応答メッセージ）を用いて変更し、変更後の値を反映させて再現送信メッセージを生成する。
他方、両者が異なる場合は、送信メッセージ生成部１０２は、当該特定のパラメータの値を変更することなく、選択した過去の送信メッセージ（選択送信メッセージ記録データ）を用いて再現送信メッセージを生成する。
なお、送信メッセージ生成部１０２の動作の詳細は、後述する。
【００１９】
次に、送信メッセージ生成部１０２の内部構成について説明する。
送信メッセージ生成部１０２は、過去受信メッセージロード機能部１０２１、過去送信メッセージロード機能部１０２２、状態情報更新機能部１０２３、補正箇所抽出機能部１０２４、補正箇所比較機能部１０２５、送信メッセージ補正機能部１０２６で構成されている。
また、送信メッセージ生成部１０２内部では状態情報Ｍ＿ｏｌｄ１０２７とＭ＿ｎｅｗ１０２８が管理されている。
【００２０】
過去送信メッセージロード機能部１０２２は通信を再現するにあたって送信する再現送信メッセージに利用する過去の送信メッセージを選択し、再現対象通信記録部１０１から取り出す。
過去受信メッセージロード機能部１０２１は、再現送信メッセージを補正する際に、再現対象通信記録部１０１から必要な過去の応答メッセージを取り出す。
補正箇所抽出機能部１０２４は、通信状態情報（以下、単に状態情報ともいう）と、取り出された過去の送信メッセージを入力として受け取り、再現送信メッセージに必要な補正に関する情報（補正情報リスト）を出力する。
補正箇所比較機能部１０２５は、二つの補正情報リストを入力として受け取り、両者の差分のみで構成される補正情報リストを抽出する。
送信メッセージ補正機能部１０２６は、再現送信メッセージと補正情報リストを入力として受け取り、補正済みの再現送信メッセージを出力する。
【００２１】
次に、状態情報及び状態情報更新機能部１０２３について説明する。
状態情報とは、一般に通信対象ホスト２００からのレスポンスメッセージで指定され、次にメッセージを送信する際にはその値を反映させなければならない情報を指す。
例えばＷｅｂアプリケーションとのＨＴＴＰ通信においては、図２にあるように、Ｓｅｔ−Ｃｏｏｋｉｅヘッダによって与えられたＣｏｏｋｉｅの値、ｔｙｐｅ＝“ｈｉｄｄｅｎ”で指定されたｉｎｐｕｔエレメント中のｎａｍｅ及びｖａｌｕｅアトリビュートの値、ａエレメントのｈｒｅｆアトリビュート等で指定されるＵＲＬに含まれる各パラメータの値等がＭに含まれる。
これらはセッションが進行していくに従い適宜変更されていく。
本実施の形態で示したような形式以外で状態情報を表現することももちろん可能である。
本実施の形態では状態情報としてＭ＿ｏｌｄとＭ＿ｎｅｗを持つ。
Ｍ＿ｏｌｄは過去の通信記録上での状態情報を表し、Ｍ＿ｎｅｗは再現中の通信における状態情報を表す。
状態情報更新機能部１０２３はレスポンスメッセージと状態情報を入力として受け取り、状態情報の内容を更新する機能を持つ。
【００２２】
次に、本実施の形態に係る通信再現装置１００の動作について説明する。
本実施の形態の動作を説明する上で幾つかの変数を定義する。
再現対象通信記録部１０１に保存されている通信メッセージのうち、過去に送信されたメッセージ（送信メッセージ記録データ）を時系列順にＳ＿ｏｌｄ１，Ｓ＿ｏｌｄ２，…Ｓ＿ｏｌｄＮ（１≦Ｎ）とする。
各Ｓ＿ｏｌｄｎに対応し、過去にサーバから返されたレスポンスメッセージとして再現対象通信記録部１０１に蓄えられているメッセージをＲ＿ｏｌｄｎとする。
また、Ｓ＿ｏｌｄｎを補正して得られるメッセージをＳ＿ｎｅｗｎと呼び、Ｓ＿ｎｅｗｎを通信対象ホスト２００に送信した結果、通信対象ホスト２００から返されるレスポンスメッセージをＲ＿ｎｅｗｎと呼ぶことにする。
過去の通信記録において、Ｒ＿ｏｌｄｎを受信した時点での状態情報Ｍ＿ｏｌｄをＭ＿ｏｌｄｎ、同様に再現中の通信セッションにおいてＲ＿ｎｅｗｎを受信した時点での状態情報Ｍ＿ｎｅｗをＭ＿ｎｅｗｎと呼ぶことにする。なお、初期状態においてはＭ＿ｏｌｄ、Ｍ＿ｎｅｗはどちらも空である。
【００２３】
以上の定義を用いて本実施の形態に係る通信再現装置１００の大まかな動作を説明すると次のようになる。
ユーザからの通信再現の指示を受けると装置は動作を開始する。Ｓ＿ｎｅｗｎを送信するにあたり、通信再現装置１００は再現対象通信記録部１０１よりＳ＿ｏｌｄｎを取り出し送信メッセージ生成部１０２を用いてＳ＿ｎｅｗｎを生成し、Ｓ＿ｎｅｗｎをメッセージ送信部１０４により通信対象ホスト２００へと送信する。
なお、このとき、送信メッセージ生成部１０２内ではＳ＿ｏｌｄｎを状態情報Ｍ＿ｏｌｄｎ−１、Ｍ＿ｎｅｗｎ−１を用いてＳ＿ｎｅｗｎに補正している。
そして、図３に示すように、通信対象ホスト２００からレスポンスメッセージＲ＿ｎｅｗｎをメッセージ受信部１０３を用いて受信する（Ｓ１）と、送信メッセージ生成部１０２は受信したＲ＿ｎｅｗｎから対象となるパラメータ（例えば、セッションＩＤ）を抽出し（Ｓ２）、抽出したパラメータの値（最新の値）が状態情報Ｍ＿ｎｅｗに反映され（最新のパラメータ値を状態情報Ｍ＿ｎｅｗに格納する）（Ｓ３）、Ｍ＿ｎｅｗの添え字がカウントアップされ、Ｍ＿ｎｅｗｎ−１からＭ＿ｎｅｗｎに更新される。
同時に再現対象通信記録部１０１からＲ＿ｏｌｄｎが取り出され、Ｒ＿ｏｌｄｎから対象となるパラメータ（例えば、セッションＩＤ）が抽出され、抽出したパラメータの値が状態情報Ｍ＿ｏｌｄに反映され（取得したパラメータ値を状態情報Ｍ＿ｏｌｄに格納する）、Ｍ＿ｏｌｄの添え字がカウントアップされ、状態情報Ｍ＿ｏｌｄｎ−１が更新されてＭ＿ｏｌｄｎになる。
以上の処理をｎがＮに達するまで繰り返すことで通信の再現が実行される。
【００２４】
本実施の形態における送信メッセージの補正方法についてより詳細に説明する。
図４は過去の送信メッセージＳ＿ｏｌｄｎを補正してＳ＿ｎｅｗｎを得るために、送信メッセージ生成部１０２内で行われる処理のフローを表す図である。
送信しようとするメッセージをＳ＿ｏｌｄｎとしたとき、もしｎ＝１であったならば、補正は行わずＳ＿ｏｌｄｎをそのままＳ＿ｎｅｗｎとし、処理を終了する（Ｓ００１，Ｓ００６）。
ｎ≠１の場合、Ｓ＿ｏｌｄｎとＭ＿ｏｌｄｎ−１を入力として補正箇所抽出機能部１０２４を呼び出し、その結果得られる補正情報リストをＴ＿ｏｌｄｎとする（Ｓ００２）。
同様にＳ００３ではＳ＿ｏｌｄｎとＭ＿ｎｅｗｎ−１を入力として補正箇所抽出機能部１０２４を呼び出し、その結果得られる補正情報リストをＴ＿ｎｅｗｎとする。
次にＴ＿ｏｌｄｎ、Ｔ＿ｎｅｗｎを引数として補正箇所比較機能部１０２５を呼び出し、その戻り値をＴとする（Ｓ００４）。
最後にＳ００５で得られた補正情報Ｔに従ってＳ＿ｏｌｄｎに対して補正を行い、Ｓ＿ｎｅｗｎとすることで処理は完了する。
【００２５】
本実施の形態において、補正情報リストＴは、補正しなければならない箇所を特定する情報（補正箇所情報）と補正後の値をペアとして持つタプルのリスト（補正情報リスト）を返す関数である。補正箇所を曖昧さなく指定できれば補正箇所情報の表現形式は問わない。
補正箇所抽出機能部１０２４は、送信しようとしているメッセージＳと状態情報Ｍを入力とし、補正情報リストを返す関数である。
ＨＴＴＰの場合において補正箇所抽出機能部１０２４により出力される補正情報リストの例を図５〜図７に挙げた。
【００２６】
図５では、通信再現装置１００がこれから通信対象ホスト２００に対して送信しようとしている再現送信メッセージの生成に利用する過去の送信メッセージ（Ｓ＿ｏｌｄｎ）と、通信対象ホスト２００から受信した最新のレスポンスＲ＿ｎｅｗｎ−１のパラメータの値を表す通信状態情報（Ｍ＿ｎｅｗｎ−１）の例を示す。なお、Ｓ＿ｎｅｗｎ（Ｓ＿ｏｌｄｎ）に対する通信対象ホスト２００からのレスポンスが、Ｒ＿ｎｅｗｎとなり（この時点では未着）、通信対象ホスト２００からの最新のレスポンスはＲ＿ｎｅｗｎ−１である。
補正箇所抽出機能部１０２４は、特定のパラメータ値（ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄとｍｙ＿ｖａｌｕｅ）について過去の送信メッセージ（Ｓ＿ｏｌｄｎ）の内容と通信状態情報（Ｍ＿ｎｅｗｎ−１）の内容を比較し、戻り値として、補正情報リスト（Ｔ＿ｎｅｗ）を出力する。図５の例では、過去のメッセージ（Ｓ＿ｏｌｄｎ）と通信状態情報（Ｍ＿ｎｅｗｎ−１）において特定のパラメータ値（ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄとｍｙ＿ｖａｌｕｅ）が異なっているので、通信状態情報（Ｍ＿ｎｅｗｎ−１）の値が示される補正情報リスト（Ｔ＿ｎｅｗ）が生成される。
【００２７】
また、図６では、通信再現装置１００がこれから通信対象ホスト２００に対して送信しようとしている再現送信メッセージの生成に利用する過去のメッセージ（Ｓ＿ｏｌｄｎ）と、当該過去のメッセージ（Ｓ＿ｏｌｄｎ）の一つ前の送信メッセージ（Ｓ＿ｏｌｄｎ−１）に対するレスポンスであるＲ＿ｏｌｄｎ−１のパラメータの値を表す通信状態情報（Ｍ＿ｏｌｄｎ−１）の例を示す。
補正箇所抽出機能部１０２４は、特定のパラメータ値（ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄとｍｙ＿ｖａｌｕｅ）について過去の送信メッセージ（Ｓ＿ｏｌｄｎ）の内容と通信状態情報（Ｍ＿ｏｌｄｎ−１）の内容を比較し、戻り値として、補正情報リスト（Ｔ＿ｏｌｄ）を出力する。図６の例では、過去のメッセージ（Ｓ＿ｏｌｄｎ）と通信状態情報（Ｍ＿ｏｌｄｎ−１）において特定のパラメータ値（ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄとｍｙ＿ｖａｌｕｅ）が一致しているので、空欄の補正情報リスト（Ｔ＿ｎｅｗ）が生成される。
【００２８】
図７では、図６と同様に、通信再現装置１００がこれから通信対象ホスト２００に対して送信しようとしている再現送信メッセージの生成に利用する過去のメッセージ（Ｓ＿ｏｌｄｎ）と、当該過去のメッセージ（Ｓ＿ｏｌｄｎ）の一つ前の送信メッセージ（Ｓ＿ｏｌｄｎ−１）に対するレスポンスであるＲ＿ｏｌｄｎ−１のパラメータの値を表す通信状態情報（Ｍ＿ｏｌｄｎ−１）の例を示す。
図７の例では、過去のメッセージ（Ｓ＿ｏｌｄｎ）と通信状態情報（Ｍ＿ｏｌｄｎ−１）において特定のパラメータ値（ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄとｍｙ＿ｖａｌｕｅ）が異なっているので、通信状態情報（Ｍ＿ｏｌｄｎ−１）の値が示される補正情報リスト（Ｔ＿ｏｌｄ）が生成される。
【００２９】
補正箇所比較機能部１０２５は補正情報リストＴ＿ｏｌｄとＴ＿ｎｅｗを受け取り、Ｔ＿ｎｅｗに含まれておりかつＴ＿ｏｌｄには同じ箇所を修正するタプルが存在しないようなタプルのみで構成される補正情報リストを返す関数である。
【００３０】
図８は補正箇所比較機能部１０２５の擬似コードである。
ステップ２では結果を格納する補正情報リストＴを空リストに初期化する。次にＴ＿ｎｅｗの要素（タプル）を一つずつ取り出し（取り出された要素をｔとする）、ステップ４〜６を実行する。
ステップ４ではタプルｔの補正箇所情報を参照し、同じ補正箇所情報を含んだタプルがＴ＿ｏｌｄ内に存在しないか確認する。
もし存在しないのであれば、ステップ５に進みＴにｔを追加する。
以上の処理をＴ＿ｎｅｗの全ての要素に対して実行後、Ｔを結果として返す。
【００３１】
図５〜図７の補正情報リストＴ＿ｎｅｗ及びＴ＿ｏｌｄを例にして、補正箇所比較機能部１０２５の動作例を説明する。
【００３２】
先ず、図５の補正情報リストＴ＿ｎｅｗと図６の補正情報リストＴ＿ｏｌｄを比較する場合について説明する。
補正箇所比較機能部１０２５は、Ｔ＿ｎｅｗに存在するｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄが、Ｔ＿ｏｌｄに存在するか否かを判断する。図６では、Ｔ＿ｏｌｄは空欄なので、Ｔ＿ｎｅｗのｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄの値が補正情報リストＴに格納される。また、補正箇所比較機能部１０２５は、ｐｏｓｔ：ｍｙ＿ｖａｌｕｅについても同様にしてＴ＿ｎｅｗとＴ＿ｏｌｄを比較し、Ｔ＿ｏｌｄは空欄なので、Ｔ＿ｎｅｗのｐｏｓｔ：ｍｙ＿ｖａｌｕｅの値が補正情報リストＴに格納される。
この結果、通信再現装置１００から送信される再現送信メッセージは、過去の送信メッセージ（Ｓ＿ｏｌｄｎ）に対してｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄの値とｐｏｓｔ：ｍｙ＿ｖａｌｕｅの値が通信対象ホスト２００から受信したレスポンスＲ＿ｎｅｗｎ−１に含まれていた値に変更されたＳ＿ｎｅｗｎとなる。
【００３３】
次に、図５の補正情報リストＴ＿ｎｅｗと図７の補正情報リストＴ＿ｏｌｄを比較する場合について説明する。
補正箇所比較機能部１０２５は、Ｔ＿ｎｅｗに存在するｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄが、Ｔ＿ｏｌｄに存在するか否かを判断する。図７では、Ｔ＿ｏｌｄにはｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄが存在するので、Ｔ＿ｎｅｗのｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄの値は補正情報リストＴに格納されない。一方、ｐｏｓｔ：ｍｙ＿ｖａｌｕｅについては、Ｔ＿ｏｌｄは空欄なので、Ｔ＿ｎｅｗのｐｏｓｔ：ｍｙ＿ｖａｌｕｅの値が補正情報リストＴに格納される。
この結果、通信再現装置１００から送信される再現送信メッセージは、ｐｏｓｔ：ｍｙ＿ｖａｌｕｅの値は通信対象ホスト２００から受信したレスポンスＲ＿ｎｅｗｎ−１に含まれていた値に変更されるが、ｃｏｏｋｉｅ：ｍｙ＿ｓｅｓｓｉｏｎ＿ｉｄの値は過去の送信メッセージ（Ｓ＿ｏｌｄｎ）のまま変更されない。
【００３４】
このように、本実施の形態に係る通信再現装置１００は、これから通信対象ホスト２００に対して送信しようとしている送信メッセージの生成に利用する過去の送信メッセージ（Ｓ＿ｏｌｄｎ）と、当該過去の送信メッセージ（Ｓ＿ｏｌｄｎ）の一つ前の送信メッセージ（Ｓ＿ｏｌｄｎ−１）に対するレスポンスであるＲ＿ｏｌｄｎ−１との間でパラメータの値が一致しているか否かを判断し、一致していない場合、つまり、Ｔ＿ｏｌｄに当該パラメータが示されている場合（図７の場合）には、当該パラメータについては過去の送信メッセージ（Ｓ＿ｏｌｄｎ）の値をそのまま使用する（補正を行わない）。
Ｓ＿ｏｌｄｎとＲ＿ｏｌｄｎ−１との間でパラメータの値が一致していない場合は、過去の通信において、クライアントがサーバから通知されたパラメータ値を変更して別の値を設定していることを意味しているので、攻撃コマンドがリクエストに含まれている可能性がある。このため、攻撃を再現するために、通信再現装置１００は過去の送信メッセージに含まれているパラメータ値を用いて（過去の送信メッセージを補正せずに）リクエストを送信する。
【００３５】
一方、Ｓ＿ｏｌｄｎとＲ＿ｏｌｄｎ−１との間でパラメータの値一致している場合、つまり、Ｔ＿ｏｌｄに当該パラメータが示されていない場合（図６の場合）には、最新のレスポンスＲ＿ｎｅｗｎ−１の値（Ｔ＿ｎｅｗに示されている値）に補正する。
Ｓ＿ｏｌｄｎとＲ＿ｏｌｄｎ−１との間でパラメータの値が一致している場合は、過去の通信において、クライアントがサーバから通知されたパラメータ値をそのまま設定してリクエストを送信していることを意味するので、通信の再現時にも、再現時のレスポンスに示されているパラメータ値を用いて（過去の送信メッセージを補正して）通信再現装置１００からリクエストを送信する。
【００３６】
以上のように、本実施の形態によれば、通信再現時に送信メッセージを補正する際に、サーバから返されたレスポンスだけでなく、通信記録装置中に蓄えられた過去のレスポンスメッセージも参照して補正を行うことで、セッションを維持できるよう適宜送信メッセージを補正すると共に、補正箇所に攻撃が含まれていた場合には、その箇所に関する補正を行わないようにすることで、セッションがある程度進行してから発生する攻撃や、サーバからの応答によって補正されるべき箇所に含まれる攻撃の両方を再現することができるため、従来技術より攻撃の再現性が向上するという効果がある。
【００３７】
なお、本実施の形態においては、ＨＴＴＰプロトコルの通信再現を例に説明を行ったが、通信再現可能なプロトコルはＨＴＴＰに限定されるものではもちろんない。
【００３８】
本実施の形態では、送信するメッセージを補正する際に、通信記録時に受信したレスポンスから計算される状態情報も用いて補正を行うことを説明した。
また、本実施の形態では、過去の状態情報と送信するメッセージとを比較して得られる補正箇所情報リストと、現在の状態情報と送信するメッセージとを比較して得られる補正箇所情報リストを比較して補正を行う箇所を決定することを説明した。
また、本実施の形態では、補正箇所情報リストの表現として、補正箇所と補正値のタプルのリストを用いることを説明した。
【００３９】
実施の形態２．
図９は、実施の形態２に係る通信再現装置１００及び通信記録装置３００を示したものである。
本実施の形態では、通信記録装置３００は、リクエスト記録機能部３０１、レスポンス記録機能部３０２、補正箇所抽出機能部３０３、状態情報更新機能部３０４を備え、状態情報Ｍ＿ｏｌｄ１０２７を管理する。
リクエスト記録機能部３０１及びレスポンス記録機能部３０２は、第１の通信装置（例えばクライアント）と第２の通信装置（例えば、サーバ、ホスト）との間で送受信されたリクエストとレスポンスを通信順序に従って記録する。
補正箇所抽出機能部３０３、状態情報更新機能部３０４は、実施の形態１で説明した補正箇所抽出機能部１０２４、状態情報更新機能部１０２３と同様である。
また、状態情報Ｍ＿ｏｌｄ１０２７は、実施の形態１では通信再現装置１００が管理していたが、本実施の形態では、通信記録装置３００が管理している。
【００４０】
以上の通信記録装置３００の構成に伴い、通信再現装置の構成も実施の形態１とは異なるものとなっている。
具体的には、情報受信部１０５及び再現対象補正情報リスト記録部１０６が追加されている。
さらに、送信メッセージ生成部１０２内で過去受信メッセージロード機能部１０２１、状態情報Ｍ＿ｏｌｄ１０２７が失われ、代わりに過去補正情報リストロード機能部１０２９が新たに加えられている。
情報受信部１０５は、通信記録装置３００からデータを受信する。
具体的には、再現対象通信記録データ４００及び再現対象補正情報リスト記録データ５００を受信する。
再現対象通信記録データ４００は、リクエスト記録機能部３０１及びレスポンス記録機能部３０２で記録されたリクエスト及びレスポンスの記録データであり、情報受信部１０５による受信後に再現対象通信記録部１０１に格納される。
再現対象補正情報リスト記録データ５００は、実施の形態１で説明した補正情報リストＴ＿ｏｌｄｎ（１≦ｎ≦Ｎ）が示される。つまり、再現対象補正情報リスト記録データ５００は、過去の送信メッセージ（送信メッセージ記録データ）の各々に対して、その送信メッセージに示されるパラメータ値と、一つ前の送信メッセージに対するレスポンスにおけるパラメータ値とが一致するか否かを通知する通知情報である。
また、再現対象補正情報リスト記録データ５００は、情報受信部１０５による受信後に再現対象補正情報リスト記録部１０６に格納される。
【００４１】
次に、本実施の形態の動作について説明する。
本実施の形態における通信記録装置３００は、従来と同様に通信を記録し、通信再現装置１００で利用可能な再現対象通信記録データ４００として出力する。
さらに、通信記録装置３００内部では、観測したレスポンスメッセージをもとに観測中の通信セッションの状態情報Ｍ＿ｏｌｄを状態情報更新機能部３０４を用いて更新し、その状態情報と、その後に観測したリクエストメッセージ（リモートから通信対象ホストへのメッセージ）とを入力として補正箇所抽出機能部３０３を呼び出し、抽出結果を再現対象補正情報リスト記録データ５００として出力する。
ここで、再現対象補正情報リスト記録データ５００について補足すると、再現対象補正情報リスト記録データ５００は実施の形態１における補正情報リストＴ＿ｏｌｄｎ（１≦ｎ≦Ｎ）が格納されたものである。
個々の補正情報リストＴ＿ｏｌｄｎは、再現対象通信記録データ４００上に格納されている送信メッセージＳ＿ｏｌｄｎと対応がつくように格納されていなければならないが、これは例えばインデックス等を設けるなどすれば容易に実現可能である。
【００４２】
本実施の形態における通信再現装置の動作について説明する。
送信メッセージ生成部１０２は過去送信メッセージロード機能部１０２２を用いて再現対象通信記録部１０１から送信すべき再現送信メッセージに利用する過去の送信メッセージＳ＿ｏｌｄｎを取り出すとともに、過去補正情報リストロード機能部１０２９を用いて再現対象補正情報リスト記録部１０６からＳ＿ｏｌｄｎに対応する補正情報リストＴ＿ｏｌｄｎを取り出す。
その後メッセージ送信までの処理は実施の形態１と同様である。
つまり、Ｓ＿ｏｌｄｎとＭ＿ｎｅｗｎ−１を入力として補正箇所抽出機能部１０２４を呼び出してＴ＿ｎｅｗｎを得、Ｔ＿ｏｌｄｎとＴ＿ｎｅｗｎとを入力として補正箇所比較機能部１０２５を呼び出して両者の差分で構成される補正情報リストＴを得、Ｓ＿ｏｌｄｎとＴを入力して送信メッセージ補正機能部１０２６を呼び出してＳ＿ｎｅｗｎを得、メッセージ送信部１０４を用いてＳ＿ｎｅｗｎが再現送信メッセージとして送信される。
【００４３】
また、メッセージ受信部１０３によりレスポンスメッセージＲ＿ｎｅｗｎを受信すると、Ｒ＿ｎｅｗｎとＭ＿ｎｅｗｎ−１を入力として状態情報更新機能部１０２３が呼び出され、Ｍ＿ｎｅｗｎが得られる。
実施の形態１と異なり、通信再現装置１００では、過去の状態情報Ｍ＿ｏｌｄの更新に関する処理は行われない。
【００４４】
以上のように、通信記録装置上で過去の通信記録に対する補正情報リストを生成しておくことで、通信再現装置内の処理を軽減できるという効果がある。
【００４５】
以上、本実施の形態では、過去の補正箇所情報リストの算出機能を備えた通信記録装置及び、同装置を前提にした通信再現装置について説明した。
【００４６】
最後に、実施の形態１、２に示した通信再現装置１００のハードウェア構成例について説明する。
図１５は、実施の形態１、２に示す通信再現装置１００のハードウェア資源の一例を示す図である。
なお、図１５の構成は、あくまでも通信再現装置１００のハードウェア構成の一例を示すものであり、通信再現装置１００のハードウェア構成は図１５に記載の構成に限らず、他の構成であってもよい。
【００４７】
図１５において、通信再現装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００４８】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続される。
【００４９】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００５０】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００５１】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
通信再現装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００５２】
上記プログラム群９２３には、実施の形態１、２の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００５３】
ファイル群９２４には、実施の形態１、２の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の比較」、「〜の評価」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の抽出」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１、２で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５４】
また、実施の形態１、２の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、実施の形態１、２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１、２の「〜部」の手順や方法をコンピュータに実行させるものである。
【００５５】
このように、実施の形態１、２に示す通信再現装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【００５６】
【図１】実施の形態１に係る通信再現装置の構成例を示す図。
【図２】実施の形態１に係る状態情報に格納される情報の例を示す図。
【図３】実施の形態１に係る状態情報の更新フローの例を示す図。
【図４】実施の形態１に係る送信メッセージ補正フローの例を示す図。
【図５】実施の形態１に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。
【図６】実施の形態１に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。
【図７】実施の形態１に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。
【図８】実施の形態１に係る補正箇所差分抽出の擬似コードを示す図。
【図９】実施の形態２に係る通信再現装置及び通信記録装置の構成例を示す図。
【図１０】一般的な通信再現装置の例を示す図。
【図１１】通信再現装置の攻撃手法調査への応用の例を示す図。
【図１２】応答メッセージのパラメータを送信メッセージに含める例を示す図。
【図１３】攻撃を含んだ通信の記録の例を示す図。
【図１４】従来技術の課題を説明する図。
【図１５】実施の形態１、２に係る通信再現装置のハードウェア構成例を示す図。
【符号の説明】
【００５７】
１００  通信再現装置、１０１  再現対象通信記録部、１０２  送信メッセージ生成部、１０３  メッセージ受信部、１０４  メッセージ送信部、１０５  情報受信部、１０６  再現対象補正情報リスト記録部、２００  通信対象ホスト、３００  通信記録装置、３０１  リクエスト記録機能部、３０２  レスポンス記録機能部、３０３  補正箇所抽出機能部、３０４  状態情報更新機能部、４００  再現対象通信記録データ、５００  再現対象補正情報リスト記録データ、６００  クライアント、７００  サーバ、８００  通信再現装置、１０２１  過去受信メッセージロード機能部、１０２２  過去送信メッセージロード機能部、１０２３  状態情報更新機能部、１０２４  補正箇所抽出機能部、１０２５  補正箇所比較機能部、１０２６  送信メッセージ補正機能部、１０２７  状態情報Ｍ＿ｏｌｄ、１０２８  状態情報Ｍ＿ｎｅｗ、１０２９  過去補正情報リストロード機能部。
【図１】
2010020654.tif 000003
【図２】
2010020654.tif 000004
【図３】
2010020654.tif 000005
【図４】
2010020654.tif 000006
【図５】
2010020654.tif 000007
【図６】
2010020654.tif 000008
【図７】
2010020654.tif 000009
【図８】
2010020654.tif 000010
【図９】
2010020654.tif 000011
【図１０】
2010020654.tif 000012
【図１１】
2010020654.tif 000013
【図１２】
2010020654.tif 000014
【図１３】
2010020654.tif 000015
【図１４】
2010020654.tif 000016
【図１５】
2010020654.tif 000017