JP5183331B2 - 通信再現装置 - Google Patents

通信再現装置 Download PDF

Info

Publication number
JP5183331B2
JP5183331B2 JP2008182181A JP2008182181A JP5183331B2 JP 5183331 B2 JP5183331 B2 JP 5183331B2 JP 2008182181 A JP2008182181 A JP 2008182181A JP 2008182181 A JP2008182181 A JP 2008182181A JP 5183331 B2 JP5183331 B2 JP 5183331B2
Authority
JP
Japan
Prior art keywords
transmission message
communication
message
reproduction
value
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.)
Expired - Fee Related
Application number
JP2008182181A
Other languages
English (en)
Other versions
JP2010020654A (ja
Inventor
清人 河内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2008182181A priority Critical patent/JP5183331B2/ja
Publication of JP2010020654A publication Critical patent/JP2010020654A/ja
Application granted granted Critical
Publication of JP5183331B2 publication Critical patent/JP5183331B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、過去に記録された通信記録に基づいて後日通信を再現する通信再現技術に関する。
端末間の通信を記録し、その記録に基づいて片方の端末を模擬してもう片方の端末と通信を行う装置が知られている。
このような装置を本明細書では通信再現装置と呼ぶことにする。
図10は、通信記録装置300と通信再現装置800とを用いてあるクライアント600とサーバ700との間で行われた通信を再現する様子を表している。
図10の例では、通信記録装置300がクライアント600とサーバ700との間で送受信されたメッセージを記録し、後日、通信再現装置800が通信記録装置300により記録されたメッセージを用いて、クライアント600を模擬して、サーバ700と通信を行い、クライアント600とサーバ700との間で行われた通信を再現する。
通信再現装置に関する技術としては、特許文献1にあるような稼働中のシステムに対して行われる通信を記録して新システムの実運用試験を行う方法や、特許文献2にあるように既に動作する機器間の通信を記録し、再現することで試験を効率化する方法が知られている。
また、非特許文献1ではWebアプリケーションに対するテストの実施方法として、あらかじめ記録あるいは作成されたメッセージを送信するが、その際にテスト対象のサーバからのレスポンスに応じてメッセージの一部を修正する技術が示されている。
特開2006−148358号公報 特開2001−209414号公報 S.Elbaum,G.Rotherme,S.Karre and M. Fisher II,Leveraging user−sessiondata to support Web application testing,IEEE Transactions on SoftwareEngineering, vol.31,issue 3, pp. 187−202, March 2005
従来、このような通信再現装置は特許文献1、2及び非特許文献1にもある通り、通信装置又はアプリケーションのテストが主な用途であったが、セキュリティへの応用として通信記録からサーバに対する攻撃を含んだ通信を見つけ出すための装置として利用することも可能である。
その場合、図11に示す通り、インターネットを介したリモートホスト(図示せず)とサーバ700との通信を通信記録装置300において常時記録しておき、ある時点で管理者がサーバ700上で何らかの攻撃の痕跡(ファイルの改ざん、破壊、サーバのクラッシュ等)を発見した場合に記録された通信を通信再現装置800を用いて一つ一つ再現することでどのような攻撃を受けたのかを調査することが可能である。
このような目的に通信再現装置800を用いる際の従来技術の課題について以下に説明する。
通信再現装置800がサーバ700との通信を行うにあたり、通信再現装置800がサーバ700から受け取ったメッセージから計算される情報を、送信メッセージ中に格納しなければならない場合がある。
典型的な例としてクライアント(ブラウザ)とWebアプリケーションとの間の通信を挙げることができる。
一般的なWebアプリケーションでは、各クライアントとのセッションを識別するため、セッション開始時にサーバ側でセッションID(Identification)をランダムに割り振り、HTTP(Hypertext Transfer Protocol)レスポンス中のSet−Cookieヘッダを用いてクライアントに通知する。
セッションIDを受け取ったクライアントは以降、HTTPリクエスト中のCookieヘッダ中に渡されたセッションIDを格納してアクセスする。
クライアントとWebアプリケーションとの通信例を図12に示した。
なお図中のS1,S2はクライアントからサーバに送信するHTTPリクエストを示し、R1,R2はそれぞれのリクエストに対しサーバから返されるHTTPレスポンスを示している。
このような通信を再現しようとする場合、特許文献1及び2では、サーバからのレスポンスに応じて次に送信するメッセージを補正する手段が無いため、うまくセッションを維持することができない。
つまり、特許文献1及び2に示される技術によれば、通信再現装置800は、通信記録装置300が記録したメッセージの内容を実際にサーバ700から受信したレスポンスに示される記述に変更して送信メッセージを生成することができない(図12の例では、R1においてサーバ700から通知されたmy_session_idをS2に反映させることができない)。
従って、ある程度セッションが進んでから行われる攻撃(例えばS3,S4等で発生する)を再現しようとしても途中でサーバ700から通信を拒絶されてしまい、攻撃を再現することができないという課題がある。
また、非特許文献1で示される技術では通信再現時にサーバからのレスポンスに応じて送信メッセージの補正が行われるため上記の課題は解消できるが、補正対象となる箇所に攻撃を含んだ通信を再現しようとするとき、以下に述べるような課題が発生する。
図13は、非特許文献1の方式で攻撃の再現が失敗するような通信記録の例を示している。
この例ではクライアントからサーバに対して送られた2番目のメッセージ(Sold2)のCookieヘッダ中にバッファオーバフロー攻撃が含まれている。
図14を参照しながら上記通信を非特許文献1で示される技術によって通信内容を再現しようとした場合に発生する課題について説明する。
なお、Sold1及びSold2は、通信記録装置300に記録されているクライアント600から送信されたHTTPリクエストを示す。
一方、Snew1及びSnew2は、通信再現装置800がサーバ700からの受信したレスポンスに応じて内容を補正したHTTPリクエストを示す。なお、図14の例では、Sold1とSnew1とは同じ内容であり(補正なし)、Snew2においてRnew1で通知されたmy_session_idの値に補正している。
また、Rnew1は、通信再現装置800からのHTTPリスクエストSnew1に対するサーバ700からのレスポンスである。
まず、通信再現装置800は通信記録装置300からSold1を取り出し、サーバ700に送信する。
その結果、通信再現装置800はサーバ700から応答Rnew1を受信する。
次に、通信再現装置800はSold2を送信するのであるが、その際Rnew1に含まれていたSet−Cookieヘッダの値でSold2中のCookieヘッダの値(バッファオーバフロー攻撃)を修正してしまい、結果として攻撃を含んでいないメッセージSnew2を送信してしまう。
このため、結果として攻撃が再現できなくなってしまう。
以上のように、従来技術では特許文献1,2のように送信メッセージの補正を全く行わないか、非特許文献1のように常に補正を行ってしまうものしかなく、セッションを維持するために必要な送信メッセージの補正を行いつつ、補正されるべき箇所に含まれる攻撃を再現することはできないという課題がある。
本発明は以上の課題を解決することを主な目的の一つとし、通信再現時に送信メッセージを補正する際に、再現した送信メッセージに対して応答された応答メッセージだけでなく、通信記録装置中に蓄えられた過去のメッセージも参照して補正を行うことで、通信を再現して攻撃手法の解析を行う場合に、セッションがある程度進行してから発生する攻撃や、再現時の応答メッセージの内容に基づいて補正されてしまう攻撃等を再現可能とし、攻撃の再現性を向上させることを主な目的とする。
本発明に係る通信再現装置は、
通信記録装置が、第1の通信装置から第2の通信装置へ送信された送信メッセージと、送信メッセージに対する応答として前記第2の通信装置から前記第1の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ及び応答メッセージ記録データとして記録した後に、前記通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、前記第1の通信装置と前記第2の通信装置との間の通信を再現する通信再現装置であって、
前記複数の送信メッセージ記録データを送信順に用いて、前記第2の通信装置への送信メッセージである再現送信メッセージを生成する送信メッセージ生成部と、
前記送信メッセージ生成部により生成された再現送信メッセージを前記第2の通信装置に対して送信するメッセージ送信部と、
前記メッセージ送信部により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして前記第2の通信装置から受信するメッセージ受信部とを有し、
前記送信メッセージ生成部は、
前記メッセージ受信部により再現応答メッセージが受信される度に、次の再現送信メッセージの生成に用いる送信メッセージ記録データを選択し、選択した選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージに先行する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定し、両者が一致する場合に、前記選択送信メッセージ記録データの前記特定のパラメータの値を再現応答メッセージを用いて変更し、変更後の値を反映させて前記選択送信メッセージ記録データを用いて再現送信メッセージを生成し、両者が異なる場合に、前記特定のパラメータの値を変更することなく前記選択送信メッセージ記録データを用いて再現送信メッセージを生成することを特徴とする。
本発明によれば、再現送信メッセージに対して応答された再現応答メッセージだけでなく、通信記録装置中に蓄えられた過去のメッセージも参照してパラメータ値の補正を行うことで、通信を再現して攻撃手法の解析を行う場合に、セッションがある程度進行してから発生する攻撃や、再現時の応答メッセージの内容に基づいて補正されてしまう攻撃等の再現が可能となり、攻撃の再現性を向上させることができる。
実施の形態1.
本実施の形態では、通信再現時に送信メッセージを補正する際に、サーバから返されたレスポンスだけでなく、通信記録装置中に蓄えられた過去のレスポンスメッセージも参照して補正を行うことで、セッションを維持できるよう適宜送信メッセージを補正すると共に、補正箇所に攻撃が含まれていた場合には、その箇所に関する補正を行わないようにした通信再現装置について説明する。
以下に、実施の形態に係る通信再現装置を適宜図面を参照しながら説明する。
図1は、本実施の形態に係る通信再現装置100の構成例を示す。
本実施の形態においても、通信再現装置100は、不図示の通信記録装置において記録されたメッセージを用いて通信を再現する。
つまり、通信記録装置が、第1の通信装置(例えば、クライアント)から第2の通信装置(例えば、サーバ、ホスト)へ送信された送信メッセージと、送信メッセージに対する応答として第2の通信装置から第1の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ(以下、過去の送信メッセージともいう)及び応答メッセージ記録データ(以下、過去の応答メッセージ又は過去のレスポンスメッセージ、過去のレスポンスともいう)として記録した後に、通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、通信再現装置100が第1の通信装置を模擬して第2の通信装置と通信を行って、第1の通信装置と第2の通信装置との間の通信を再現する。
図1にある通り、通信再現装置100は再現対象通信記録部101、送信メッセージ生成部102、メッセージ受信部103、メッセージ送信部104に大別され、ネットワークを通じて通信対象となる通信対象ホスト200と接続されている。
なお、通信対象ホスト200は、第2の通信装置の例である。
再現対象通信記録部101には、通信記録装置300によって過去に記録された通信記録データ(送信メッセージ記録データ及び応答メッセージ記録データ)が格納される。
メッセージ送信部104は、送信メッセージ生成部102により生成された再現送信メッセージを通信対象ホスト200に対して送信する。
メッセージ受信部103は、メッセージ送信部104により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして通信対象ホスト200から受信し、送信メッセージ生成部102へとフィードバックする。
送信メッセージ生成部102は再現対象通信記録部101に格納された過去の送受信メッセージを参照し過去の送信メッセージを送信順に用いて、送信すべきメッセージ(再現送信メッセージ)を生成する。
より具体的には、送信メッセージ生成部102は、メッセージ受信部103が通信対象ホスト200から新たにレスポンス(再現応答メッセージ)を受信する度に、次の再現送信メッセージの生成に用いる過去の送信メッセージを選択し、選択した過去の送信メッセージ(選択送信メッセージ記録データ)に含まれる特定のパラメータ(例えば、セッションごとに値が変化するパラメータ、セッションの進行に従って値が変更するパラメータ)の値と、選択した過去の送信メッセージの一つ前の送信メッセージに対する過去のレスポンス(先行応答メッセージ記録データ)から導出される値とが一致するか否かを判定する。
当該過去のレスンポンス(先行応答メッセージ記録データ)から導出される値は、例えば、選択した過去の送信メッセージ(選択送信メッセージ記録データ)に含まれる特定のパラメータと同種のパラメータの値(過去のレスポンスに含まれるパラメータの値)である。また、過去のレスポンスに含まれるパラメータの値に対して所定の計算(例えば所定値の加算、減算等)を行うことにより得られる値であってもよい。
そして、送信メッセージ生成部102は、両者が一致する場合に、選択した過去の送信メッセージ(選択送信メッセージ記録データ)の当該特定のパラメータの値を通信対象ホスト200から新たに受信したレスポンス(再現応答メッセージ)を用いて変更し、変更後の値を反映させて再現送信メッセージを生成する。
他方、両者が異なる場合は、送信メッセージ生成部102は、当該特定のパラメータの値を変更することなく、選択した過去の送信メッセージ(選択送信メッセージ記録データ)を用いて再現送信メッセージを生成する。
なお、送信メッセージ生成部102の動作の詳細は、後述する。
次に、送信メッセージ生成部102の内部構成について説明する。
送信メッセージ生成部102は、過去受信メッセージロード機能部1021、過去送信メッセージロード機能部1022、状態情報更新機能部1023、補正箇所抽出機能部1024、補正箇所比較機能部1025、送信メッセージ補正機能部1026で構成されている。
また、送信メッセージ生成部102内部では状態情報M_old1027とM_new1028が管理されている。
過去送信メッセージロード機能部1022は通信を再現するにあたって送信する再現送信メッセージに利用する過去の送信メッセージを選択し、再現対象通信記録部101から取り出す。
過去受信メッセージロード機能部1021は、再現送信メッセージを補正する際に、再現対象通信記録部101から必要な過去の応答メッセージを取り出す。
補正箇所抽出機能部1024は、通信状態情報(以下、単に状態情報ともいう)と、取り出された過去の送信メッセージを入力として受け取り、再現送信メッセージに必要な補正に関する情報(補正情報リスト)を出力する。
補正箇所比較機能部1025は、二つの補正情報リストを入力として受け取り、両者の差分のみで構成される補正情報リストを抽出する。
送信メッセージ補正機能部1026は、再現送信メッセージと補正情報リストを入力として受け取り、補正済みの再現送信メッセージを出力する。
次に、状態情報及び状態情報更新機能部1023について説明する。
状態情報とは、一般に通信対象ホスト200からのレスポンスメッセージで指定され、次にメッセージを送信する際にはその値を反映させなければならない情報を指す。
例えばWebアプリケーションとのHTTP通信においては、図2にあるように、Set−Cookieヘッダによって与えられたCookieの値、type=“hidden”で指定されたinputエレメント中のname及びvalueアトリビュートの値、aエレメントのhrefアトリビュート等で指定されるURLに含まれる各パラメータの値等がMに含まれる。
これらはセッションが進行していくに従い適宜変更されていく。
本実施の形態で示したような形式以外で状態情報を表現することももちろん可能である。
本実施の形態では状態情報としてM_oldとM_newを持つ。
M_oldは過去の通信記録上での状態情報を表し、M_newは再現中の通信における状態情報を表す。
状態情報更新機能部1023はレスポンスメッセージと状態情報を入力として受け取り、状態情報の内容を更新する機能を持つ。
次に、本実施の形態に係る通信再現装置100の動作について説明する。
本実施の形態の動作を説明する上で幾つかの変数を定義する。
再現対象通信記録部101に保存されている通信メッセージのうち、過去に送信されたメッセージ(送信メッセージ記録データ)を時系列順にS_old,S_old,…S_old(1≦N)とする。
各S_oldに対応し、過去にサーバから返されたレスポンスメッセージとして再現対象通信記録部101に蓄えられているメッセージをR_oldとする。
また、S_oldを補正して得られるメッセージをS_newと呼び、S_newを通信対象ホスト200に送信した結果、通信対象ホスト200から返されるレスポンスメッセージをR_newと呼ぶことにする。
過去の通信記録において、R_oldを受信した時点での状態情報M_oldをM_old、同様に再現中の通信セッションにおいてR_newを受信した時点での状態情報M_newをM_newと呼ぶことにする。なお、初期状態においてはM_old、M_newはどちらも空である。
以上の定義を用いて本実施の形態に係る通信再現装置100の大まかな動作を説明すると次のようになる。
ユーザからの通信再現の指示を受けると装置は動作を開始する。S_newを送信するにあたり、通信再現装置100は再現対象通信記録部101よりS_oldを取り出し送信メッセージ生成部102を用いてS_newを生成し、S_newをメッセージ送信部104により通信対象ホスト200へと送信する。
なお、このとき、送信メッセージ生成部102内ではS_oldを状態情報M_oldn−1、M_newn−1を用いてS_newに補正している。
そして、図3に示すように、通信対象ホスト200からレスポンスメッセージR_newをメッセージ受信部103を用いて受信する(S1)と、送信メッセージ生成部102は受信したR_newから対象となるパラメータ(例えば、セッションID)を抽出し(S2)、抽出したパラメータの値(最新の値)が状態情報M_newに反映され(最新のパラメータ値を状態情報M_newに格納する)(S3)、M_newの添え字がカウントアップされ、M_newn−1からM_newに更新される。
同時に再現対象通信記録部101からR_oldが取り出され、R_oldから対象となるパラメータ(例えば、セッションID)が抽出され、抽出したパラメータの値が状態情報M_oldに反映され(取得したパラメータ値を状態情報M_oldに格納する)、M_oldの添え字がカウントアップされ、状態情報M_oldn−1が更新されてM_oldになる。
以上の処理をnがNに達するまで繰り返すことで通信の再現が実行される。
本実施の形態における送信メッセージの補正方法についてより詳細に説明する。
図4は過去の送信メッセージS_oldを補正してS_newを得るために、送信メッセージ生成部102内で行われる処理のフローを表す図である。
送信しようとするメッセージをS_oldとしたとき、もしn=1であったならば、補正は行わずS_oldをそのままS_newとし、処理を終了する(S001,S006)。
n≠1の場合、S_oldとM_oldn−1を入力として補正箇所抽出機能部1024を呼び出し、その結果得られる補正情報リストをT_oldとする(S002)。
同様にS003ではS_oldとM_newn−1を入力として補正箇所抽出機能部1024を呼び出し、その結果得られる補正情報リストをT_newとする。
次にT_old、T_newを引数として補正箇所比較機能部1025を呼び出し、その戻り値をTとする(S004)。
最後にS005で得られた補正情報Tに従ってS_oldに対して補正を行い、S_newとすることで処理は完了する。
本実施の形態において、補正情報リストTは、補正しなければならない箇所を特定する情報(補正箇所情報)と補正後の値をペアとして持つタプルのリスト(補正情報リスト)を返す関数である。補正箇所を曖昧さなく指定できれば補正箇所情報の表現形式は問わない。
補正箇所抽出機能部1024は、送信しようとしているメッセージSと状態情報Mを入力とし、補正情報リストを返す関数である。
HTTPの場合において補正箇所抽出機能部1024により出力される補正情報リストの例を図5〜図7に挙げた。
図5では、通信再現装置100がこれから通信対象ホスト200に対して送信しようとしている再現送信メッセージの生成に利用する過去の送信メッセージ(S_old)と、通信対象ホスト200から受信した最新のレスポンスR_newn−1のパラメータの値を表す通信状態情報(M_newn−1)の例を示す。なお、S_new(S_old)に対する通信対象ホスト200からのレスポンスが、R_newとなり(この時点では未着)、通信対象ホスト200からの最新のレスポンスはR_newn−1である。
補正箇所抽出機能部1024は、特定のパラメータ値(my_session_idとmy_value)について過去の送信メッセージ(S_old)の内容と通信状態情報(M_newn−1)の内容を比較し、戻り値として、補正情報リスト(T_new)を出力する。図5の例では、過去のメッセージ(S_old)と通信状態情報(M_newn−1)において特定のパラメータ値(my_session_idとmy_value)が異なっているので、通信状態情報(M_newn−1)の値が示される補正情報リスト(T_new)が生成される。
また、図6では、通信再現装置100がこれから通信対象ホスト200に対して送信しようとしている再現送信メッセージの生成に利用する過去のメッセージ(S_old)と、当該過去のメッセージ(S_old)の一つ前の送信メッセージ(S_oldn−1)に対するレスポンスであるR_oldn−1のパラメータの値を表す通信状態情報(M_oldn−1)の例を示す。
補正箇所抽出機能部1024は、特定のパラメータ値(my_session_idとmy_value)について過去の送信メッセージ(S_old)の内容と通信状態情報(M_oldn−1)の内容を比較し、戻り値として、補正情報リスト(T_old)を出力する。図6の例では、過去のメッセージ(S_old)と通信状態情報(M_oldn−1)において特定のパラメータ値(my_session_idとmy_value)が一致しているので、空欄の補正情報リスト(T_new)が生成される。
図7では、図6と同様に、通信再現装置100がこれから通信対象ホスト200に対して送信しようとしている再現送信メッセージの生成に利用する過去のメッセージ(S_old)と、当該過去のメッセージ(S_old)の一つ前の送信メッセージ(S_oldn−1)に対するレスポンスであるR_oldn−1のパラメータの値を表す通信状態情報(M_oldn−1)の例を示す。
図7の例では、過去のメッセージ(S_old)と通信状態情報(M_oldn−1)において特定のパラメータ値(my_session_idとmy_value)が異なっているので、通信状態情報(M_oldn−1)の値が示される補正情報リスト(T_old)が生成される。
補正箇所比較機能部1025は補正情報リストT_oldとT_newを受け取り、T_newに含まれておりかつT_oldには同じ箇所を修正するタプルが存在しないようなタプルのみで構成される補正情報リストを返す関数である。
図8は補正箇所比較機能部1025の擬似コードである。
ステップ2では結果を格納する補正情報リストTを空リストに初期化する。次にT_newの要素(タプル)を一つずつ取り出し(取り出された要素をtとする)、ステップ4〜6を実行する。
ステップ4ではタプルtの補正箇所情報を参照し、同じ補正箇所情報を含んだタプルがT_old内に存在しないか確認する。
もし存在しないのであれば、ステップ5に進みTにtを追加する。
以上の処理をT_newの全ての要素に対して実行後、Tを結果として返す。
図5〜図7の補正情報リストT_new及びT_oldを例にして、補正箇所比較機能部1025の動作例を説明する。
先ず、図5の補正情報リストT_newと図6の補正情報リストT_oldを比較する場合について説明する。
補正箇所比較機能部1025は、T_newに存在するcookie:my_session_idが、T_oldに存在するか否かを判断する。図6では、T_oldは空欄なので、T_newのcookie:my_session_idの値が補正情報リストTに格納される。また、補正箇所比較機能部1025は、post:my_valueについても同様にしてT_newとT_oldを比較し、T_oldは空欄なので、T_newのpost:my_valueの値が補正情報リストTに格納される。
この結果、通信再現装置100から送信される再現送信メッセージは、過去の送信メッセージ(S_old)に対してcookie:my_session_idの値とpost:my_valueの値が通信対象ホスト200から受信したレスポンスR_newn−1に含まれていた値に変更されたS_newとなる。
次に、図5の補正情報リストT_newと図7の補正情報リストT_oldを比較する場合について説明する。
補正箇所比較機能部1025は、T_newに存在するcookie:my_session_idが、T_oldに存在するか否かを判断する。図7では、T_oldにはcookie:my_session_idが存在するので、T_newのcookie:my_session_idの値は補正情報リストTに格納されない。一方、post:my_valueについては、T_oldは空欄なので、T_newのpost:my_valueの値が補正情報リストTに格納される。
この結果、通信再現装置100から送信される再現送信メッセージは、post:my_valueの値は通信対象ホスト200から受信したレスポンスR_newn−1に含まれていた値に変更されるが、cookie:my_session_idの値は過去の送信メッセージ(S_old)のまま変更されない。
このように、本実施の形態に係る通信再現装置100は、これから通信対象ホスト200に対して送信しようとしている送信メッセージの生成に利用する過去の送信メッセージ(S_old)と、当該過去の送信メッセージ(S_old)の一つ前の送信メッセージ(S_oldn−1)に対するレスポンスであるR_oldn−1との間でパラメータの値が一致しているか否かを判断し、一致していない場合、つまり、T_oldに当該パラメータが示されている場合(図7の場合)には、当該パラメータについては過去の送信メッセージ(S_old)の値をそのまま使用する(補正を行わない)。
S_oldとR_oldn−1との間でパラメータの値が一致していない場合は、過去の通信において、クライアントがサーバから通知されたパラメータ値を変更して別の値を設定していることを意味しているので、攻撃コマンドがリクエストに含まれている可能性がある。このため、攻撃を再現するために、通信再現装置100は過去の送信メッセージに含まれているパラメータ値を用いて(過去の送信メッセージを補正せずに)リクエストを送信する。
一方、S_oldとR_oldn−1との間でパラメータの値一致している場合、つまり、T_oldに当該パラメータが示されていない場合(図6の場合)には、最新のレスポンスR_newn−1の値(T_newに示されている値)に補正する。
S_oldとR_oldn−1との間でパラメータの値が一致している場合は、過去の通信において、クライアントがサーバから通知されたパラメータ値をそのまま設定してリクエストを送信していることを意味するので、通信の再現時にも、再現時のレスポンスに示されているパラメータ値を用いて(過去の送信メッセージを補正して)通信再現装置100からリクエストを送信する。
以上のように、本実施の形態によれば、通信再現時に送信メッセージを補正する際に、サーバから返されたレスポンスだけでなく、通信記録装置中に蓄えられた過去のレスポンスメッセージも参照して補正を行うことで、セッションを維持できるよう適宜送信メッセージを補正すると共に、補正箇所に攻撃が含まれていた場合には、その箇所に関する補正を行わないようにすることで、セッションがある程度進行してから発生する攻撃や、サーバからの応答によって補正されるべき箇所に含まれる攻撃の両方を再現することができるため、従来技術より攻撃の再現性が向上するという効果がある。
なお、本実施の形態においては、HTTPプロトコルの通信再現を例に説明を行ったが、通信再現可能なプロトコルはHTTPに限定されるものではもちろんない。
本実施の形態では、送信するメッセージを補正する際に、通信記録時に受信したレスポンスから計算される状態情報も用いて補正を行うことを説明した。
また、本実施の形態では、過去の状態情報と送信するメッセージとを比較して得られる補正箇所情報リストと、現在の状態情報と送信するメッセージとを比較して得られる補正箇所情報リストを比較して補正を行う箇所を決定することを説明した。
また、本実施の形態では、補正箇所情報リストの表現として、補正箇所と補正値のタプルのリストを用いることを説明した。
実施の形態2.
図9は、実施の形態2に係る通信再現装置100及び通信記録装置300を示したものである。
本実施の形態では、通信記録装置300は、リクエスト記録機能部301、レスポンス記録機能部302、補正箇所抽出機能部303、状態情報更新機能部304を備え、状態情報M_old1027を管理する。
リクエスト記録機能部301及びレスポンス記録機能部302は、第1の通信装置(例えばクライアント)と第2の通信装置(例えば、サーバ、ホスト)との間で送受信されたリクエストとレスポンスを通信順序に従って記録する。
補正箇所抽出機能部303、状態情報更新機能部304は、実施の形態1で説明した補正箇所抽出機能部1024、状態情報更新機能部1023と同様である。
また、状態情報M_old1027は、実施の形態1では通信再現装置100が管理していたが、本実施の形態では、通信記録装置300が管理している。
以上の通信記録装置300の構成に伴い、通信再現装置の構成も実施の形態1とは異なるものとなっている。
具体的には、情報受信部105及び再現対象補正情報リスト記録部106が追加されている。
さらに、送信メッセージ生成部102内で過去受信メッセージロード機能部1021、状態情報M_old1027が失われ、代わりに過去補正情報リストロード機能部1029が新たに加えられている。
情報受信部105は、通信記録装置300からデータを受信する。
具体的には、再現対象通信記録データ400及び再現対象補正情報リスト記録データ500を受信する。
再現対象通信記録データ400は、リクエスト記録機能部301及びレスポンス記録機能部302で記録されたリクエスト及びレスポンスの記録データであり、情報受信部105による受信後に再現対象通信記録部101に格納される。
再現対象補正情報リスト記録データ500は、実施の形態1で説明した補正情報リストT_old(1≦n≦N)が示される。つまり、再現対象補正情報リスト記録データ500は、過去の送信メッセージ(送信メッセージ記録データ)の各々に対して、その送信メッセージに示されるパラメータ値と、一つ前の送信メッセージに対するレスポンスにおけるパラメータ値とが一致するか否かを通知する通知情報である。
また、再現対象補正情報リスト記録データ500は、情報受信部105による受信後に再現対象補正情報リスト記録部106に格納される。
次に、本実施の形態の動作について説明する。
本実施の形態における通信記録装置300は、従来と同様に通信を記録し、通信再現装置100で利用可能な再現対象通信記録データ400として出力する。
さらに、通信記録装置300内部では、観測したレスポンスメッセージをもとに観測中の通信セッションの状態情報M_oldを状態情報更新機能部304を用いて更新し、その状態情報と、その後に観測したリクエストメッセージ(リモートから通信対象ホストへのメッセージ)とを入力として補正箇所抽出機能部303を呼び出し、抽出結果を再現対象補正情報リスト記録データ500として出力する。
ここで、再現対象補正情報リスト記録データ500について補足すると、再現対象補正情報リスト記録データ500は実施の形態1における補正情報リストT_old(1≦n≦N)が格納されたものである。
個々の補正情報リストT_oldは、再現対象通信記録データ400上に格納されている送信メッセージS_oldと対応がつくように格納されていなければならないが、これは例えばインデックス等を設けるなどすれば容易に実現可能である。
本実施の形態における通信再現装置の動作について説明する。
送信メッセージ生成部102は過去送信メッセージロード機能部1022を用いて再現対象通信記録部101から送信すべき再現送信メッセージに利用する過去の送信メッセージS_oldを取り出すとともに、過去補正情報リストロード機能部1029を用いて再現対象補正情報リスト記録部106からS_oldに対応する補正情報リストT_oldを取り出す。
その後メッセージ送信までの処理は実施の形態1と同様である。
つまり、S_oldとM_newn−1を入力として補正箇所抽出機能部1024を呼び出してT_newを得、T_oldとT_newとを入力として補正箇所比較機能部1025を呼び出して両者の差分で構成される補正情報リストTを得、S_oldとTを入力して送信メッセージ補正機能部1026を呼び出してS_newを得、メッセージ送信部104を用いてS_newが再現送信メッセージとして送信される。
また、メッセージ受信部103によりレスポンスメッセージR_newを受信すると、R_newとM_newn−1を入力として状態情報更新機能部1023が呼び出され、M_newが得られる。
実施の形態1と異なり、通信再現装置100では、過去の状態情報M_oldの更新に関する処理は行われない。
以上のように、通信記録装置上で過去の通信記録に対する補正情報リストを生成しておくことで、通信再現装置内の処理を軽減できるという効果がある。
以上、本実施の形態では、過去の補正箇所情報リストの算出機能を備えた通信記録装置及び、同装置を前提にした通信再現装置について説明した。
最後に、実施の形態1、2に示した通信再現装置100のハードウェア構成例について説明する。
図15は、実施の形態1、2に示す通信再現装置100のハードウェア資源の一例を示す図である。
なお、図15の構成は、あくまでも通信再現装置100のハードウェア構成の一例を示すものであり、通信再現装置100のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
図15において、通信再現装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、図1に示すように、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)などに接続される。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
通信再現装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1、2の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1、2の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の比較」、「〜の評価」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の抽出」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1、2で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1、2の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、実施の形態1、2の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1、2の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1、2に示す通信再現装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
実施の形態1に係る通信再現装置の構成例を示す図。 実施の形態1に係る状態情報に格納される情報の例を示す図。 実施の形態1に係る状態情報の更新フローの例を示す図。 実施の形態1に係る送信メッセージ補正フローの例を示す図。 実施の形態1に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。 実施の形態1に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。 実施の形態1に係る補正箇所抽出機能により出力される補正情報リストの例を示す図。 実施の形態1に係る補正箇所差分抽出の擬似コードを示す図。 実施の形態2に係る通信再現装置及び通信記録装置の構成例を示す図。 一般的な通信再現装置の例を示す図。 通信再現装置の攻撃手法調査への応用の例を示す図。 応答メッセージのパラメータを送信メッセージに含める例を示す図。 攻撃を含んだ通信の記録の例を示す図。 従来技術の課題を説明する図。 実施の形態1、2に係る通信再現装置のハードウェア構成例を示す図。
符号の説明
100 通信再現装置、101 再現対象通信記録部、102 送信メッセージ生成部、103 メッセージ受信部、104 メッセージ送信部、105 情報受信部、106 再現対象補正情報リスト記録部、200 通信対象ホスト、300 通信記録装置、301 リクエスト記録機能部、302 レスポンス記録機能部、303 補正箇所抽出機能部、304 状態情報更新機能部、400 再現対象通信記録データ、500 再現対象補正情報リスト記録データ、600 クライアント、700 サーバ、800 通信再現装置、1021 過去受信メッセージロード機能部、1022 過去送信メッセージロード機能部、1023 状態情報更新機能部、1024 補正箇所抽出機能部、1025 補正箇所比較機能部、1026 送信メッセージ補正機能部、1027 状態情報M_old、1028 状態情報M_new、1029 過去補正情報リストロード機能部。

Claims (7)

  1. 通信記録装置が、第1の通信装置から第2の通信装置へ送信された送信メッセージと、送信メッセージに対する応答として前記第2の通信装置から前記第1の通信装置へ送信された応答メッセージとを通信順序に従って送信メッセージ記録データ及び応答メッセージ記録データとして記録した後に、前記通信記録装置により記録された複数の送信メッセージ記録データと複数の応答メッセージ記録データとに基づき、前記第1の通信装置と前記第2の通信装置との間の通信を再現する通信再現装置であって、
    前記複数の送信メッセージ記録データを送信順に用いて、前記第2の通信装置への送信メッセージである再現送信メッセージを生成する送信メッセージ生成部と、
    前記送信メッセージ生成部により生成された再現送信メッセージを前記第2の通信装置に対して送信するメッセージ送信部と、
    前記メッセージ送信部により送信された再現送信メッセージに対する応答メッセージを再現応答メッセージとして前記第2の通信装置から受信するメッセージ受信部とを有し、
    前記送信メッセージ生成部は、
    前記メッセージ受信部により再現応答メッセージが受信される度に、次の再現送信メッセージの生成に用いる送信メッセージ記録データを選択し、選択した選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージに先行する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定し、両者が一致する場合に、前記選択送信メッセージ記録データの前記特定のパラメータの値を再現応答メッセージを用いて変更し、変更後の値を反映させて前記選択送信メッセージ記録データを用いて再現送信メッセージを生成し、両者が異なる場合に、前記特定のパラメータの値を変更することなく前記選択送信メッセージ記録データを用いて再現送信メッセージを生成することを特徴とする通信再現装置。
  2. 前記送信メッセージ生成部は、
    前記選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データである先行応答メッセージ記録データから導出される値とが一致するか否かを判定することを特徴とする請求項1に記載の通信再現装置。
  3. 前記送信メッセージ生成部は、
    前記選択送信メッセージ記録データに示される特定のパラメータの値と、前記選択送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データである先行応答メッセージ記録データに示される前記特定のパラメータの値とが一致するか否かを判定することを特徴とする請求項1又は2に記載の通信再現装置。
  4. 前記送信メッセージ生成部は、
    前記選択送信メッセージ記録データの前記特定のパラメータの値を、前記メッセージ受信部により受信された最新の再現応答メッセージに示される前記特定のパラメータの値に変更することを特徴とする請求項1〜3のいずれかに記載の通信再現装置。
  5. 前記送信メッセージ生成部は、
    前記第2の通信装置との間に確立するセッションごとに値が変化するパラメータ及び前記第2の通信装置との間に確立したセッションが進行するに従って値が変化するパラメータの少なくともいずれかについて、前記選択送信メッセージ記録データと前記先行応答メッセージ記録データとの間で値が一致するか否かを判定することを特徴とする請求項1〜4のいずれかに記載の通信再現装置。
  6. 前記送信メッセージ生成部は、
    送信メッセージ記録データごとに、送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データに示される前記特定のパラメータの値を示す通信状態情報を生成し、
    いずれかの送信メッセージ記録データを前記選択送信メッセージ記録データとして選択した際に、選択した送信メッセージ記録データに示される前記特定のパラメータの値と、選択した送信メッセージ記録データの通信状態情報に示される値とが一致するか否かを判定することを特徴とする請求項1〜5のいずれかに記載の通信再現装置。
  7. 前記通信再現装置は、更に、
    送信メッセージ記録データごとに、送信メッセージ記録データに示される前記特定のパラメータの値と、送信メッセージ記録データに記録されている送信メッセージの一つ前の送信メッセージに対する応答メッセージの記録データに示される前記特定のパラメータの値とが一致するか否かを通知する通知情報を前記通信記録装置から受信する情報受信部を有し、
    前記送信メッセージ送信部は、
    いずれかの送信メッセージ記録データを前記選択送信メッセージ記録データとして選択した際に、選択した送信メッセージ記録データの通知情報に基づき、前記特定のパラメータの値についての一致判定を行うことを特徴とする請求項1〜5のいずれかに記載の通信再現装置。
JP2008182181A 2008-07-14 2008-07-14 通信再現装置 Expired - Fee Related JP5183331B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008182181A JP5183331B2 (ja) 2008-07-14 2008-07-14 通信再現装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008182181A JP5183331B2 (ja) 2008-07-14 2008-07-14 通信再現装置

Publications (2)

Publication Number Publication Date
JP2010020654A JP2010020654A (ja) 2010-01-28
JP5183331B2 true JP5183331B2 (ja) 2013-04-17

Family

ID=41705458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008182181A Expired - Fee Related JP5183331B2 (ja) 2008-07-14 2008-07-14 通信再現装置

Country Status (1)

Country Link
JP (1) JP5183331B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05191476A (ja) * 1992-01-09 1993-07-30 Nec Corp プロトコルアナライザ
JP3212959B2 (ja) * 1998-12-28 2001-09-25 日本電気通信システム株式会社 メッセージ/シーケンス編集機能を有する自動通信プロトコル試験システムおよび試験方法
JP4488666B2 (ja) * 2002-02-15 2010-06-23 株式会社東芝 医用システムの再現試験サービス装置
JP4170243B2 (ja) * 2004-03-05 2008-10-22 三菱電機株式会社 ウェブアプリケーション検査装置
JPWO2007010593A1 (ja) * 2005-07-15 2009-01-29 富士通株式会社 Tcpセッションエミュレーション装置
US20070106692A1 (en) * 2005-11-10 2007-05-10 International Business Machines Corporation System and method for recording and replaying a session with a web server without recreating the actual session

Also Published As

Publication number Publication date
JP2010020654A (ja) 2010-01-28

Similar Documents

Publication Publication Date Title
US9398047B2 (en) Methods and systems for phishing detection
US9459888B2 (en) Implementing browser based hypertext transfer protocol session storage
JP5010747B2 (ja) インターネットを介した定義済みパスを再生するシステムおよび方法
US20090132713A1 (en) Single-roundtrip exchange for cross-domain data access
US10079907B2 (en) Cached data detection
US20220188402A1 (en) Real-Time Detection and Blocking of Counterfeit Websites
US8140643B2 (en) Managing user personal information across web sites
CN107168963A (zh) 客户端的页面加载和页面的缓存方法、系统和客户端
US11637863B2 (en) Detection of user interface imitation
CN107911381A (zh) 应用程序编程接口的访问方法、系统、服务端及客户端
US20150304156A1 (en) Method and apparatus for generating resource address, and system thereof
US20090172018A1 (en) Electronic document management method
JP5709448B2 (ja) アクセス解析装置及びアクセス解析方法及びアクセス解析プログラム
JP5183331B2 (ja) 通信再現装置
CN110866196A (zh) 一种打印机网络信息采集方法、装置及电子设备
JP5640752B2 (ja) 攻撃模倣テスト方法、攻撃模倣テスト装置及び攻撃模倣テストプログラム
US20210264112A1 (en) Bot dialog manager
US20050144479A1 (en) Method, medium, and apparatus for processing cookies
Algwil Click-based Captcha paradigm as a web service
US8127026B2 (en) User operation acting device, user operation acting program, and computer readable recording medium
CN110177096A (zh) 客户端认证方法、装置、介质和计算设备
US8667563B1 (en) Systems and methods for displaying personalized content
CN115632885B (zh) 蜜罐制作方法、装置、电子设备及可读存储介质
WO2023230797A1 (zh) 一种跨系统测试方法及装置
EP3684026B1 (en) Method and apparatus for sending form request

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130115

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees