JP6894220B2 - 情報処理装置及びその制御方法、プログラムおよびシステム - Google Patents

情報処理装置及びその制御方法、プログラムおよびシステム Download PDF

Info

Publication number
JP6894220B2
JP6894220B2 JP2016233611A JP2016233611A JP6894220B2 JP 6894220 B2 JP6894220 B2 JP 6894220B2 JP 2016233611 A JP2016233611 A JP 2016233611A JP 2016233611 A JP2016233611 A JP 2016233611A JP 6894220 B2 JP6894220 B2 JP 6894220B2
Authority
JP
Japan
Prior art keywords
file
hash value
information
request
write
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.)
Active
Application number
JP2016233611A
Other languages
English (en)
Other versions
JP2018092281A (ja
JP2018092281A5 (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.)
Canon Electronics Inc
Original Assignee
Canon Electronics Inc
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 Canon Electronics Inc filed Critical Canon Electronics Inc
Priority to JP2016233611A priority Critical patent/JP6894220B2/ja
Publication of JP2018092281A publication Critical patent/JP2018092281A/ja
Publication of JP2018092281A5 publication Critical patent/JP2018092281A5/ja
Application granted granted Critical
Publication of JP6894220B2 publication Critical patent/JP6894220B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報処理装置及びその制御方法、プログラム、およびシステムに関し、特にファイルのハッシュ値を取得する技術に関する。
近年、コンピュータやコンピュータ利用者に害を成す不正な動作を行うコンピュータプログラム(以下、マルウェアという)が蔓延している。このような背景によって、マルウェアを検知し駆除する技術が開発されている。
マルウェアを検出する方法には、ファイルのメタ情報(タイムスタンプなど)を比較して行う方法や、ファイルの内容(バイナリーデータ、抽出したテキストデータなど)を比較して行う方法が知られている。また、元のデータを直接比較すると時間がかかるため、MD5(Message Digest Algorithm 5)やSHA(Secure Hash Algorithm)などのアルゴリズムを使用して元のデータからハッシュ値を算出し、ハッシュ値を比較することでマルウェアか否かの識別を行っている。
例えば特許文献1では、画像ファイルの一致性を判断する際、まず、ファイルサイズが一致する画像ファイルを特定し、サイズの一致する画像ファイルが存在すれば、当該画像ファイルの先頭部分を要約した部分ハッシュ値を算出し、これを比較する。そして、部分ハッシュ値が一致すれば、さらに、画像ファイル全体を要約した全ハッシュ値を算出し、これを比較する技術が開示されている。
特開2007−201861号公報
ファイルのメタ情報を比較してマルウェアの判断を行う方法は、実際にはマルウェアでないファイルをマルウェアと誤検出する可能性が高い。それに比べてファイルの内容を比較してマルウェアの判断を行う方法は、精度が高い。しかし、ハッシュ値を使用して比較を行うにしても、ファイル全体からハッシュ値を計算すると、ファイル全体を読み込む必要があるためパソコン(以下、PCという)に高負荷がかかり、ユーザのPC操作に影響を与えてしまう、という課題がある。
そこで、本発明は、上記の課題または他の課題のうち少なくとも1つを解決することを目的とする。たとえば、本発明は、ユーザのPC操作に影響を与えることなく、ファイルのハッシュ値を、取得することを目的とする。
本発明は、たとえば、
任意のプログラムからファイルに対するクセス要求をインターセプトするインターセプト手段と、
前記インターセプト手段によりインターセプトされたクセス要求に含まれる当該ファイルに関するファイル情報からハッシュ値を算出し、前記算出されたハッシュ値に基づいて当該ファイルのハッシュ値を取得する取得手段と
を有することを特徴とする情報処理装置を提供する。
本発明によれば、ユーザのPC操作に影響を与えることなく、ファイルのハッシュ値を取得することが可能である。
情報処理システムのブロック図 クライアント端末装置のハードウェア構成図 サーバ装置のハードウェア構成図 ファイルシステムドライバへのアクセス要求を検出するためのプログラム構造を示す図 書き込み要求発生時の処理を示すフローチャート 閉じる要求発生時の処理を示すフローチャート 読み込み要求発生時の処理を示すフローチャート 閉じる要求発生時の処理を示すフローチャート リストの一例を示す図 リストの一例を示す図 ホワイトリストを設定するための画面例を示す図 ハッシュ値の検索を行うための画面例を示す図 リストの一例を示す図 位置情報の一例を示す図
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
[第一の実施形態]
<システム構成図>
先ず、本実施形態に係る情報処理システム構成について、図1のシステム構成図を用いて説明する。図1に示す如く、本実施形態に係る情報処理システムは、コンピュータすなわち情報処理装置110、120を有しており、それぞれの情報処理装置はLANやインターネットなどのネットワーク130に接続されている。以下、情報処理装置110をクライアント端末装置、情報処理装置120をサーバ装置と呼称する。なお、クライアント端末装置110は複数でもよい。また、クライアント端末装置110、サーバ装置120は、PC、携帯端末装置等の、情報処理装置が行うものとして後述する各処理を実行可能な装置であれば、如何なる装置であっても構わない。また、クライアント端末装置110はネットワーク130を介して接続されているが、ネットワーク130を介さないスタンドアローンでもよい。
<クライアント端末装置110>
本実施形態に係るクライアント端末装置110のハードウェア構成について図2を用いて説明する。クライアント端末装置110、サーバ装置120は何れも同じハードウェア構成を有するもとして説明する。然るに、ハードウェア構成についてはクライアント端末装置110を例にとり説明する。CPU(Central Processing Unit)11は、RAM12やROM13に格納されているコンピュータプログラムやデータを用いて各種の処理を実行することで、本装置全体の動作制御を行うと共に、本装置が行うものとして後述する各処理を実行する。
RAM(Random Access Memory)12は、記憶装置16からロードされたコンピュータプログラム(セキュリティソフトウェア111)やデータを一時的に記憶するためのエリアや、I/F(インターフェース)17を介して外部機器から受信した各種のデータを一時的に記憶するためのエリアを有する。更にRAM12は、CPU11が各種の処理を実行する際に用いるワークエリアも有する。このようにRAM12は、各種のエリアを適宜提供することができる。ROM(Read Only Memory)13には、本装置の設定データやブートプログラムなどが格納されている。
操作部14は、マウスやキーボードなどにより構成されており、本装置の操作者が操作することで、各種の指示をCPU11に対して入力することができる。表示部15は、CRTや液晶画面などにより構成されており、CPU11による処理結果を画像や文字などでもって表示することができる。記憶装置16は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。この記憶装置16には、OS(オペレーティングシステム)や、本装置が行うものとして後述する各処理をCPU11に実行させるためのコンピュータプログラムやデータが保存されている。このコンピュータプログラムには、セキュリティソフトウェア111が含まれている。セキュリティソフトウェア111は、クライアント端末110のデータやプログラム等の安全を確保するセキュリティ管理のためのプログラムであり、たとえば機器の接続の可否の設定に応じてその機器の接続を制限したり、通信の可否の設定に応じて通信を制限したりする機能を有する。記憶装置16に保存されているコンピュータプログラムやデータは、CPU11による制御に従って適宜RAM12にロードされ、CPU11による処理対象となる。I/F17は、本装置を上記のネットワーク120に接続するためのもので、本装置はこのI/F17を介してネットワーク120に接続されている外部機器とのデータ通信を行うことができる。上記の各部は何れも、バス18に接続されている。
上記構成において、クライアント端末装置110の電源がONになると、CPU11はROM13のブートプログラムにしたがって動作を開始し、記憶装置16にアクセスし、OSをRAM12上にロードする。さらに、操作部14および表示部15によるユーザインタフェースが機能し始め、クライアント端末装置110が各種の手段として機能することとなる。
なお、このとき、記憶装置16にインストールされたセキュリティソフト111は、ファイルに対するアクセス要求(たとえば、書き込み要求、読み込み要求、閉じる要求) を捕捉するフィルタドライバ402、および、アクセス要求を検出してログを作成するログ生成プログラム404を起動する。なお、フィルタドライバ402、ログ生成プログラム404については、後述する。
この結果、クライアント端末装置110が備えるファイルシステムへのアクセスの監視とアクセスログの取得、ならびに、予め設定されたネットワーク上のサーバ装置120に対し、アクセスログ(操作ログ)の転送が可能となる。 また、以下説明では、後述するファイルシステムドライバ403に対して発行される要求をアクセス要求としているが、アクセス要求に対するファイルシステムドライバからの返答(リターン)もアクセス要求に含まれる。
<サーバ装置120>
サーバ装置120のハードウェア構成は、図3に示す如く、上記で説明したクライアント端末装置110のハードウェア構成と同様であるとする。即ち、サーバ装置120のCPU11は、サーバ装置120の記憶装置16に保存されているコンピュータプログラムやデータを用いて、サーバ装置120のI/F17を介して外部機器とのデータ通信を行うと共に、サーバ装置120が行うものとして後述する各処理を実行する。このコンピュータプログラムには、ログ処理部121が含まれている。ログ処理部121は、クライアント端末装置110から送信されるアクセスログ含む操作ログを処理、記憶するためのプログラムである。なお、クライアント端末装置110から送信されたPCの操作ログをサーバ装置120の記憶装置16が一括して処理、記憶する代わりに、それぞれのクライアント端末装置110が自身の操作ログを記憶装置16に記憶し処理しても構わない。然るにこのような場合には、サーバ装置120は必須ではない。
<セキュリティソフトウェア111の処理>
次に、クライアント端末装置110の記憶装置16に保存されている、セキュリティソフトウェア111について説明する。
図4は、ファイルシステムドライバへのアクセス要求を検出するためのプログラム構造を示す図である。ファイルシステムは、一般に、論理ドライブごとに存在する。また、アプリケーションプログラム401は、ファイルシステムドライバ403を介してファイルシステムにアクセスする。ファイルシステムドライバ403は、たとえば、「NTFS」や「FAT」「FAT32」といったファイルシステムを操作するためのドライバである。
本実施形態では、アプリケーションプログラム401とファイルシステムドライバ403との間にフィルタドライバ402が配置されている。フィルタドライバ402は、ファイルシステムドライバ403に対して発行されるアクセス要求をすべて監視し、捕捉することができるため、捕捉したアクセス要求に含まれている情報の抽出アクセス要求の改変、アクセス要求の破棄等を行うことができる。通常、フィルタドライバ402は、アクセス要求をファイルシステムドライバ403に転送する。
フィルタドライバ402は、アクセス要求に含まれている情報を抽出し、ログ生成プログラム404に転送する。これにより、ログ生成プログラム404は、アプリケーションプログラム401が、何時、どのようなファイルへアクセスしたか、アクセスしたファイルのハッシュ値等を含むアクセスログを作成することができる。また、ログ生成プログラム404は、アクセスログを含む操作ログをサーバ装置120に送信する。
図4において、アプリケーションプログラム401は、たとえば、文書編集アプリケーション、表計算アプリケーションなどのアプリケーションプログラムであるが、ウイルスプログラムであってもよい。フィルタドライバ402は、アプリケーションプログラム401からファイルシステムドライバ403へのアクセス要求を捕捉(以下、インターセプトという)して、アクセス要求から抽出した情報を処理し、ログ生成プログラム404に転送する。ここで、ログ生成プログラム404に転送される情報としては、どのアプリケーション(例:プロセス名)から、どのファイルシステムのどのファイル(例:パス名を含むファイル名)にアクセス要求があったかを特定可能な情報である。また、フィルタドライバ402は、アクセス要求だけではなく、すべてのファイルシステムの処理を監視し、補足することも可能である。その場合、ログ生成プログラム404は、クライアント端末装置110における操作のログ(操作ログ)を作成することができる。 ここで、フィルタドライバ402がインターセプトするアクセス要求について説明する。たとえば、アプリケーション401がファイルAをコピーしてファイルBを作成する場合、フィルタドライバ402は、ファイルAを開く/ファイルBを作成するためのアクセス要求(例:IRP_MJ_CREATE)、ファイルAの内容を読み込むためのアクセス要求(例:IRP_MJ_READ)ファイルAの内容をファイルBに書き込むためのアクセス要求(例:IRP_MJ_WRITE)、ファイルAまたはファイルBを閉じるためのアクセス要求(例:IRP_MJ_CLEANUP)等のアクセス要求をインターセプトすることができる。
また、ファイルAをコピーしてファイルBを作成する(ファイルのコピー)以外に、ファイルの新規作成、ファイルを開く、ファイルの移動、ファイルの上書き保存等の場合に発生するアクセス要求を、フィルタドライバ402はインターセプトすることができる。
たとえば、アプリケーション401がファイルを新規作成した場合、フィルタドライバ402は、IRP_MJ_CREAT → IRP_MJ_WRITE → IRP_MJ_WRITE → IRP_MJ_CLEANUP の順にアクセス要求をインターセプトし、ファイルを閉じるためのアクセス要求(IRP_MJ_CLEANUP)までに発生した、ファイルに書き込むためのアクセス要求(IRP_MJ_WRITE)からハッシュ値を算出する。
また、たとえば、アプリケーション401がファイルを開いた場合、フィルタドライバ402は、IRP_MJ_CREAT → IRP_MJ_READ → IRP_MJ_READ → IRP_MJ_CLEANUP の順にアクセス要求をインターセプトし、ファイルを閉じるためのアクセス要求(IRP_MJ_CLEANUP)までに発生した、ファイルを読み込むためのアクセス要求(IRP_MJ_READ)からハッシュ値を算出する。
また、たとえば、ファイルのコピー、ファイルの移動、ファイルの上書き保存の場合、フィルタドライバ402は、IRP_MJ_CREAT → IRP_MJ_READ → IRP_MJ_WRITE → IRP_MJ_READ → IRP_MJ_CLEANUP の順にアクセス要求をインターセプトし、ハッシュ値を算出するために、ファイルを閉じるためのアクセス要求(IRP_MJ_CLEANUP)までに発生した、ファイルに書き込むためのアクセス要求(IRP_MJ_WRITE)、ファイルを読み込むためのアクセス要求(IRP_MJ_READ)からハッシュ値を算出する。
なお、上述したアクセス要求は一例であり、読み込むためのアクセス要求(IRP_MJ_READ)や書き込むためのアクセス要求(IRP_MJ_WRITE)は、複数回発生する場合もあるし、1回だけの場合もある。
<ハッシュ値の取得処理>
ハッシュ値を取得するために、フィルタドライバ402が行う処理について、図5〜図8を用いてより詳しく説明する。
フィルタドライバ402は、ファイルのハッシュ値を取得するために、ファイルに書き込むためのアクセス要求(書き込み要求)/ファイルを読み込むためのアクセス要求(読み込み要求)から、ファイルを閉じるためのアクセス要求(閉じる要求)までの間に取得したアクセス要求から一時ハッシュ値を求め、求められた一時ハッシュ値をマージすることで、ファイルのハッシュ値を取得することができる。一時ハッシュ値とは、ファイルの一時的なハッシュ値であり、複数の一時ハッシュ値をマージすることで、ファイルのハッシュ値を求めることができる。すなわち、複数のアクセス要求(書き込み/読み込み要求、閉じる要求)に基づいてファイルのハッシュ値を取得することができる。
また、アクセス要求からファイルのハッシュ値を取得することで、従来のようにファイル全体を読み込んでハッシュ値を取得することに比べて、ユーザのPC操作に影響を与えることがない。また、アクセス要求からファイルのハッシュ値を取得することで、従来のようにファイル全体を読み込んでハッシュ値を取得することに比べて、より早く最新のファイルのハッシュ値を取得することができる。
また、アクセス要求(書き込み要求、読み込み要求、閉じる要求等)は、複数のファイルに対してたえず発行される。そこで、ファイルを識別する情報(ファイル名、ファイルパス等)と対応付けて後述するリスト(900、1000、1300)を参照することで、各ファイルのハッシュ値を取得することができる。
図13は、書込み要求と読み込み要求から一時ハッシュ値等を保存するリストの一例を示す図である。リスト1300は、同一ファイルに対し書き込み/読み込み要求が発生する毎に、算出したハッシュ値を一時保存しておくリストである。リスト1300は、ファイルを識別する情報、たとえば、ファイル名、ファイルパス、ファイルハンドルなどをキーとして一時ハッシュ値と紐づけて記憶されている。また、書き込み/読み込まれたデータ情報、たとえば、書き込み/読み込みを示す情報(アクセス要求)、書き込み/読み込んだデータのサイズ(現在までに書き込み/読み込み要求毎のサイズを足した値)、書き込み/読み込みファイル全体のサイズ、書き込まれた/読み込まれたファイルの行数、書き込み/読み込み位置情報を記憶する。なお、サイズは一例であって、どこまで書き込んだ/読み込んだかがわかる値ならば、バイト数やポインターなどでも構わない。
以下では、一例として、ファイルのハッシュ値を取得するために、
・ファイルを新規作成した場合の処理(書き込み要求から閉じる要求までの処理)
・ファイルを開いた場合の処理(読み込み要求から閉じる要求までの処理)
・ファイルをコピーした場合の処理(書き込み要求と読み込み要求から閉じる要求までの処理)
について説明する。
●ファイルを新規作成した場合の処理(書き込み要求から閉じる要求までの処理)
図5は、フィルタドライバ402における書き込み要求発生時の処理を示すフローチャート、図6は、フィルタドライバ402における閉じる要求発生時の処理を示すである。
フィルタドライバ402は書き込み要求をインターセプトする(S501)。S502で、CPU11は、インターセプトした書き込み要求から、書き込むファイルのファイル情報を取得する。ファイル情報とは、たとえば、書き込み/読み込みを示す情報、書き込み/読み込み位置情報(ファイルの先頭か否かを示す情報)、ファイルを識別する情報(ファイル名、ファイルパス等)、ファイル全体のサイズ、書き込み/読み込みデータ、書き込み/読み込みデータのサイズ等の情報である。
S503で、CPU11は、S502で取得したファイル情報からファイルを識別する情報(ファイルパス)を取得し、後述するリスト(図9)に、同一ファイルに関するレコードが存在するか否かを判定する。同一ファイルに関するレコードが存在しない場合は、その書き込み要求は対象ファイルへの1回目の書き込みである。同一ファイルに関するレコードが存在する場合は、その書き込み要求は対象ファイルへの2回目以降の書き込みである。
図9は、一時ハッシュ値を保存するリストの一例を示す図である。リスト900は、同一ファイルに対し書き込み要求が発生する毎に、算出したハッシュ値を一時保存しておくリストである。
リスト900は、ファイルを識別する情報、たとえば、ファイル名、ファイルパス、ファイルハンドルなどをキーとして一時ハッシュ値と紐づけて記憶されている。また、書き込まれたデータ情報、たとえば、書き込んだデータのサイズ(現在までに書き込み要求毎のサイズを足した値)、書き込みファイル全体のサイズ、書き込まれたファイルの行数、位置情報を記憶する。なお、サイズは一例であって、どこまで書き込んだかがわかる値ならば、バイト数やポインターなどでも構わない。S503にて、リスト900に存在する場合は、S505へ進み、存在しない場合はS504へ進む。
S505で、CPU11は、S502で取得したファイル情報からファイルを識別する情報(ファイルパス)をもとに、リスト900から対象のレコードを取得し、S506に進む。
S506で、CPU11は、S502で取得したファイル情報から、ファイルへの書き込み位置情報を取得する。書き込み位置情報とは、これからファイルに書き込む際に、何行目から書き込む、何ビット目から書き込む、ファイルのサイズなどの書き込む位置情報(たとえば、オフセット)である。
ここで、位置情報(書き込み位置情報/読み込み位置情報)の一例を図14を用いて説明する。たとえば、ファイルに「あいうえおかきくけこさしすせそ…」というような文章が書き込まれているとする。このとき、文章の先頭から、次の行の黒丸の位置まで、AとBを足し合わせた情報が、位置情報の中に含まれている。
S507で、CPU11は、取得した書き込み位置情報がレコードに格納された位置情報と一致するか否かを判断する。一致する場合は、S508へ進み、一致しない場合は、前回の続きではない、または、先頭からの書き込みではない処理(たとえば、ランダムアクセス)ため、フローを終了し、書き込み要求をファイルシステムドライバ403へ転送する。
S504で、CPU11は、取得したデータを格納するためのリスト900中のレコードを初期化し、S502で取得したファイル情報から、ファイルへの書き込み位置情報を取得し、S508に進む。
S508で、CPU11は、S502で取得したファイル情報から書き込みデータのサイズを取得する。S509で、CPU11は、書き込みデータのサイズが「0」か否かを判定し、「0」である場合は、取得した情報や作成したレコードを破棄し、S510以降へは進まず処理を終了し、書き込み要求をファイルシステムドライバ403へ転送する。なお、「たとえば、対象ファイルへの書き込みが最終の場合の書き込み要求は、書き込み要求は発生するがデータサイズが「0」となることがあるため「0」である場合は、S510以降の処理(一時ハッシュ値の算出)等は行わない。S510以降の処理を行わないことで、無用なハッシュ値の算出を防ぐことができる。
S509で「0」ではない場合、S510へ進む。S510で、CPU11は、S502で取得したファイル情報から書き込みデータを取得し、書き込みデータから一時ハッシュ値を算出する。
S511で、CPU11は、レコードへの追加/レコードの更新を行い、リスト900へ追加/リスト900の更新を行う。具体的には、S504の処理をした場合は、S502で取得したファイル情報からファイルパスや書き込みサイズ、S504で取得した書き込み位置情報、S510で取得した一時ハッシュ値を対応付けてレコードに格納し、リスト900へ追加する。
また、S505の処理をした場合は、取得したレコードに格納されていた書き込み位置情報に取得した書き込み位置情報を加算、レコードに格納されていた書き込みサイズに取得した書き込みサイズを加算、前回取得した一時ハッシュ値と今回取得した一時ハッシュ値とをマージして算出された一時ハッシュ値をレコードに格納し、リスト900を更新する。なお、ハッシュ値をマージする演算方法は、従来用いられている演算方法を用いて実施することができる。全ての処理が終了したら、書き込み要求をファイルシステムドライバ403へ転送する。
図6は、フィルタドライバ402における、閉じる要求発生時の処理を示すフローチャートである。フィルタドライバ402は、閉じる要求をインターセプトする(S601)。S602で、CPU11は、閉じる要求からファイル情報を取得する。
S603で、CPU11は、S602で取得したファイル情報からファイルを識別する情報(ファイルパス)を取得し、リスト900に同一ファイルに関するレコードが存在するか否かを判定する。リスト900に存在する場合は、S604へ進み、存在しない場合は処理を終了し、閉じる要求をファイルシステムドライバ403へ転送する。
S604で、S602で取得したファイル情報から取得したファイルのファイル全体のサイズを取得し、S605で、レコードに格納されている書き込みサイズ(現在までのサイズ)と比較する。サイズが一致しない場合は、S607まで進む。一致する場合はS606へ進む。
S606で、CPU11は、リスト900に格納されている一時ハッシュ値を従来用いられている演算方法を用いてハッシュ値に形成する。S607で、CPU11は、ハッシュ値をログ生成プログラム404に転送する。ログ生成プログラム404は、PCの操作履歴(操作ログ)として出力する。この時、ハッシュ値だけではなく、ファイルの操作時刻を示す時刻情報、ファイル名(ファイルパス)、セッションID、プロセスID、スレッドIDなどが含まれてもよい。
S608で、CPU11は、S602で取得したファイル情報から得たファイルを識別する情報(ファイルパス)と一致するレコードを破棄する。
全ての処理が終了したら、閉じる要求をファイルシステムドライバ403へ転送する。
●ファイルを開いた場合の処理(読み込み要求から閉じる要求までの処理)
図7は、フィルタドライバ402における読み込み要求発生時の処理を示すフローチャート、図8は、フィルタドライバ402における閉じる要求発生時の処理を示す図である。
フィルタドライバ402は、読み込み要求をインターセプトする(S701)。S702で、CPU11は、読み込み要求から、読み込みファイルのファイル情報を取得する。ファイル情報とは、たとえば、書き込み/読み込みを示す情報、書き込み/読み込み位置情報(ファイルの先頭か否かを示す情報)、ファイルを識別する情報(ファイル名、ファイルパス)、ファイル全体のサイズ、書き込み/読み込みデータ、書き込み/読み込みデータのサイズ等の情報である。
S703で、CPU11は、S702で取得したファイル情報からファイルファイルを識別する情報(ファイルパス)を取得し、後述するリスト1000に同一ファイルに関するレコードが存在するか否かを判定する。
図10は、一時ハッシュ値を保存するリストの一例を示す図である。リスト1000は、同一ファイルに対し読み込み要求が発生する毎に、算出したハッシュ値を一時保存しておくリストである。リスト1000は、ファイルを識別する情報、たとえば、ファイル名、ファイルパス、ファイルハンドルなどをキーとして一時ハッシュ値と紐づけて記憶されている。また、読み込まれたデータ情報、たとえば、読み込んだデータのサイズ(現在までに読み込み要求毎のサイズを足した値)、読み込みファイル全体のサイズ、読み込まれたファイルの行数、位置情報を記憶する。なお、サイズは一例であって、どこまで読み込んだかがわかる値ならば、バイト数やポインターなどでも構わない。
S703にてレコードが存在する場合は、S705へ進み、存在しない場合はS704へ進む。S704で、CPU11は、取得したデータを格納するためのレコードを初期化する。S706で、CPU11は、S702で取得したファイル情報から読み込みファイル全体のサイズと、ファイルの読み込み位置(読み込み位置情報)を取得する。
S705で、CPU11は、S702で取得したファイル情報からファイルを識別する情報(ファイルパス)をもとに、リスト1000からレコードを取得する。取得後、S707に進む。
S707で、CPU11は、S702で取得したファイル情報をもとに、ファイルの読み込み位置(読み込み位置情報)を取得する。読み込み位置とは、これからファイルを読み込む際に、何行目から読んだか、何ビット目から読んだか、ファイルのサイズなどの読み込んだ位置の情報(たとえば、オフセット)である。
S708で、CPU11は、読み込み位置情報がレコードに格納された位置情報と一致するか否かを判定する。一致する場合は、S709へ進み、一致しない場合は、前回の続きではない、または、先頭からの書き込みではない処理(たとえば、ランダムアクセス)のため、フローを終了し、読み込み要求をファイルシステムドライバ403へ転送する。
S709で、CPU11は、S702で取得したファイル情報から読み込みデータのサイズを取得する。S710で、CPU11は、読み込みデータのサイズが「0」か否かを判定し、「0」である場合は取得した情報や作成したレコードを破棄し、S711以降へは進まず処理を終了し、読み込み要求をファイルシステムドライバ403へ転送する。「0」ではない場合、S711へ進む。
S711で、CPU11は、S702で取得したファイル情報から読み込みデータを取得し、読み込みデータを用いて一時ハッシュ値を算出する。S712で、CPU11は、レコードへの追加/レコードの更新を行い、リスト1000の追加/リストの更新を行う。具体的には、S704の処理をした場合は、S702で取得したファイル情報から取得したファイルを識別する情報(ファイルパス)と、S706で取得した読み込みファイル全体のサイズと、読み込み位置、S711で取得した一時ハッシュ値、をレコードに格納しリストへ追加する。
S705の処理をした場合は、リスト1000に格納されていた読み込み位置情報に取得した読み込み位置情報を加算、リスト1000に格納されていた読み込みデータのサイズに取得した読み込みデータのサイズを加算、前回取得した一時ハッシュ値と今回取得した一時ハッシュ値とをマージし算出された一時ハッシュ値をレコードに格納しリストを更新する。全ての処理が終了したら、読み込み要求をファイルシステムドライバ403へ転送する。
図8は、フィルタドライバ402における、閉じる要求発生時の処理を示すフローチャートである。フィルタドライバ402は閉じる要求をインターセプトする(S801)。
S802で、CPU11は、閉じる要求からファイル情報を取得する。S803で、CPU11は、S802で取得したファイル情報からファイルを識別する情報(ファイルパス)を取得し、リスト1000に同一ファイルに関するレコードが存在するか否かを判定する。リスト1000に存在する場合は、S804へ進み、存在しない場合は処理を終了し、閉じる要求をファイルシステムドライバ403へ転送する。
S804で、レコードに格納されているファイル全体のサイズと、レコードに格納されている読み込んだサイズ(現在までのサイズ)が一致するか否かを判定する。サイズが一致しない場合は、S806に進む。一致する場合はS805へ進む。
S805で、CPU11は、リストに格納されている一時ハッシュ値を従来用いられている演算方法を用いてハッシュ値に形成する。S806で、CPU11は、ハッシュ値をログ生成プログラム404に転送する。ログ生成プログラム404は、PCの操作履歴(操作ログ)として出力する。この時、ハッシュ値だけではなく、ファイルの操作時刻を示す時刻情報、ファイルを識別する情報(ファイルパス)、セッションID、プロセスID、スレッドIDなどが含まれてもよい。
S807で、CPU11は、S802で取得したファイル情報から得たファイルを識別する情報(ファイルパス)と一致するレコードを破棄する。全ての処理が終了したら、閉じる要求をファイルシステムドライバ403へ転送する。
●ファイルをコピーした場合の処理(書き込み要求と読み込み要求から閉じる要求までの処理)
書込み要求と読み込み要求発生時の構成/処理の大部分は、図5、図7と共通のため説明を省略し、異なる構成/処理のみ説明する。
図13は、書込み要求と読み込み要求から一時ハッシュ値等を保存するリストの一例を示す図である。リスト1300は、同一ファイルに対し書き込み/読み込み要求が発生する毎に、算出したハッシュ値を一時保存しておくリストである。リスト1300は、ファイルを識別する情報、たとえば、ファイル名、ファイルパス、ファイルハンドルなどをキーとして一時ハッシュ値と紐づけて記憶されている。また、書き込み/読み込まれたデータ情報、たとえば、書き込み/読み込みを示す情報(アクセス要求)、書き込み/読み込んだデータのサイズ(現在までの書き込み/読み込み要求毎のサイズを足した値)、書き込み/読み込みファイル全体のサイズ、書き込まれた/読み込まれたファイルの行数、書き込み/読み込み位置情報を記憶する。なお、サイズは一例であって、どこまで書き込んだ/読み込んだかがわかる値ならば、バイト数やポインターなどでも構わない。
同一ファイルに対して、書き込み要求と読み込み要求が発生した場合、リスト1300には、同一ファイル名(ファイルパス)の書き込み要求の情報と読み込み要求の情報とが記憶されている。
フィルタドライバ402が、閉じる要求をインターセプトすると、リスト1300にファイルを識別する情報(ファイルパス)が同一の書き込み要求の情報に対するレコードと読み込み要求の情報に対するレコードと、が記憶されていた場合、書き込み要求に対する処理(図6のS601からS607の処理)を行う。その場合、読み込み要求の情報に対するレコードは破棄される。
なお、上述した説明では、書き込み要求の情報を優先してハッシュ値を取得しているが、読み込み要求の情報を優先してハッシュ値を取得してもよい。
また、上述した構成では、書き込み/読み込み要求が、ランダムアクセスであると判断された場合(サイズが「0」の場合)は、処理を終了するようにしたが、ランダムアクセスであると判断された場合は、従来技術のように、対象ファイル全体を読み込んで、対象ファイルのハッシュ値を算出するように構成してもよい。
また、本発明の実施形態では、Windows(登録商標)を一例として説明した。しかし、本発明は、ファイル操作が実行されるときに特定の複数のアクセス要求が発行されるOSであれば、同様に適用できる。また、本発明の実施形態では、複数ログイン環境でも、同様に適用できる。
また、本発明の実施形態では、フィルタドライバ402でアクセス要求をインターセプトする手法を一例として説明した。しかし、本発明は、ファイルのアクセス要求が検知可能な技術、例えばAPI(Application Programming Interface)フックなどの技術であれば、同様に適用できる。たとえば、WriteFile、ReadFileなどのAPIを利用する。その際、WriteFileの場合は引数を、ReadFile場合は戻り値を利用する。
<ハッシュ値の活用例>
取得されたハッシュ値は、たとえば、ホワイトリストの設定(図11)や、同じハッシュ値を持つファイルがあるか否かの検索(図12)に活用することができる。
図11は、ホワイトリストを設定するための画面例を示す図である。取得されたハッシュ値に基づいて、サーバ装置120は、クライアント端末110にて稼働してもよいプロセスの一覧(ホワイトリスト)を作成し、クライアント端末110にてプロセスの一覧に基づく制御を実行させることができる。プロセスの一覧により、サーバ装置120で許可されたプロセスのみクライアント端末110で動かし、それ以外のプロセスはクライアント端末内で動かせないようにすることができる。このように、本願発明で取得されたハッシュ値を用いてクライアント端末110のセキュリティ対策に用いることが可能となる。
図12は、ハッシュ値の検索を行うための画面例を示す図である。取得されたハッシュ値をサーバ装置120にて、ハッシュ値検索を行うことで、たとえば、会社全体で同じファイルがどのPCに存在するのかを確認することが可能となる。
また、ウェブでマルウェアのハッシュ値が公開されているので、ハッシュ値検索を行えば、ウィルスソフトにて検知されなかったマルウェアも検索可能となる。また、ファイルをトレースする際にファイルを特定する条件として、ハッシュ値を使用することも可能である。
また、上述した説明は、サーバ装置120にて各種処理を行っているが、サーバ装置120に限らずクライアント装置100でも、ホワイトリストの作成、ハッシュ値の検索、トレースを行うことは可能である。
[第二の実施形態]
第一の実施形態では、ファイルを閉じるためのアクセス要求(IRP_MJ_CREANUP)発生のタイミングで、一時ハッシュ値をハッシュ値に形成しているが、本実施形態では、ファイルに書き込むためのアクセス要求(IRP_MJ_WRITE)、ファイルを読み込むためのアクセス要求(IRP_MJ_READ)から取得した書き込み/読み込みデータのサイズの合計値と、ファイル全体のサイズが一致することで、一時ハッシュ値をハッシュ値に形成する場合について説明する。なお、第2実施形態の動作の大部分は第1実施形態の動作と共通するため、第1実施形態と異なる構成、動作についてのみ説明し、共通の動作については説明を省略する。
具体的には、図5のS511、図7のS712で、レコードへの追加/レコードの更新(リスト900へ追加/リスト900の更新)を行った後に、CPU11は、現在までの書き込み/読み込みサイズと、書き込み/読み込みファイル全体のサイズとが一致するか否かを判定する。一致しない場合は、処理を終了する。一致する場合は、リスト900に格納されている一時ハッシュ値を従来用いられている演算方法を用いてハッシュ値に形成する。CPU11は、ハッシュ値をログ生成プログラム404に転送し、リスト900から対象のレコードを破棄する。全ての処理が終了したら、書き込み/読み込み要求をファイルシステムドライバ403へ転送する。
以上のようにして、ファイルに書き込む/ファイルを読み込むためのアクセス要求から取得した書き込み/読み込みデータのサイズの合計値と、ファイル全体のサイズが一致するタイミングにて、ハッシュ値を形成することで、より早くファイルのハッシュ値を取得することができる。
以上説明した2つの実施形態に記載したように、いずれの実施形態に係る発明によっても、ファイルに対するアクセス要求からファイルのハッシュ値を算出することができるので、ユーザのPC操作に影響を与えることなく、ファイルのハッシュ値を算出することができる。
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (11)

  1. 任意のプログラムからファイルに対するクセス要求をインターセプトするインターセプト手段と、
    前記インターセプト手段によりインターセプトされたクセス要求に含まれる当該ファイルに関するファイル情報からハッシュ値を算出し、前記算出されたハッシュ値に基づいて当該ファイルのハッシュ値を取得する取得手段と
    を有することを特徴とする情報処理装置。
  2. 更に、
    前記取得手段にて算出されたッシュ値をリストに記憶する記憶手段有し、
    前記取得手段は、前記インターセプト手段にてインターセプトされた他のアクセス要求からッシュ値を算出し、前記リストに記憶されているッシュ値とマージして、前記ファイルのハッシュ値を算出すること
    を特徴とする請求項1に記載の情報処理装置。
  3. 前記取得手段は、前記算出されたッシュ値とリストに記憶されているッシュ値とをマージして、前記ファイルのハッシュ値を算出すること
    を特徴とする請求項1に記載の情報処理装置。
  4. 前記取得手段は、前記ファイルに対する書き込み要求または前記ファイルに対する読み込み要求から前記ファイルに対する閉じる要求までの間に取得したアクセス要求から、ハッシュ値を算出すること
    を特徴とする請求項2または3に記載の情報処理装置。
  5. 前記取得手段は、前記ファイル情報から、書き込みデータのサイズまたは読み込みデータのサイズを抽出し、抽出されたサイズに基づいて、書き込みデータまたは読み込みデータから、ハッシュ値を算出すること
    を特徴とする請求項1ないしのいずれか一項に記載の情報処理装置。
  6. 前記取得手段は、前記ファイル情報からファイルを識別する情報を抽出し、前記ファイルを識別する情報とハッシュ値とを対応付けて、リストに記憶すること
    を特徴とする請求項1ないしのいずれか一項に記載の情報処理装置。
  7. 前記インターセプト手段は、
    ファイルシステムフィルタドライバ、またはAPIフックであること
    を特徴とする請求項1ないし6のいずれか一項に記載の情報処理装置。
  8. 更に、
    前記ファイル情報から、前記ファイルに対する書き込みまたは読み込み位置情報を取得し、取得された前記位置情報がリストに記憶されている、前記ファイルに対する書き込みまたは読み込み位置情報と一致するか否かを判定する判定手段を有するこ
    を特徴とする請求項1ないし7のいずれか一項に記載の情報処理装置。
  9. 任意のプログラムからファイルに対するクセス要求をインターセプトするインターセプト工程と、
    前記インターセプト工程によりインターセプトされたクセス要求に含まれる当該ファイルに関するファイル情報からハッシュ値を算出し、前記算出されたハッシュ値に基づいて当該ファイルのハッシュ値を取得する取得工程と
    を有することを特徴とする情報処理方法。
  10. コンピュータを、
    任意のプログラムからファイルに対するクセス要求をインターセプトするインターセプト手段と、
    前記インターセプト手段によりインターセプトされたクセス要求に含まれる当該ファイルに関するファイル情報からハッシュ値を算出し、前記算出されたハッシュ値に基づいて当該ファイルのハッシュ値を取得する取得手段として機能させることを特徴とするコンピュータプログラム。
  11. 複数の情報処理装置と、当該複数の情報処理装置から収集されるファイルのハッシュ値を管理するサーバ装置とを備えたシステムであって、
    前記複数の情報処理装置のそれぞれは、
    任意のプログラムから前記ファイルに対するクセス要求をインターセプトするインターセプト手段と、前記インターセプト手段によりインターセプトされたクセス要求に含まれる当該ファイルに関するファイル情報からハッシュ値を算出し、前記算出されたハッシュ値に基づいて当該ファイルのハッシュ値を取得する取得手段と、前記取得されたファイルのハッシュ値を前記サーバ装置に送信する送信手段と
    を有し、
    前記サーバ装置は、前記複数の情報処理装置から送信された前記ファイルのハッシュ値を受信する受信手段を有すること
    を特徴とするシステム。
JP2016233611A 2016-11-30 2016-11-30 情報処理装置及びその制御方法、プログラムおよびシステム Active JP6894220B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016233611A JP6894220B2 (ja) 2016-11-30 2016-11-30 情報処理装置及びその制御方法、プログラムおよびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016233611A JP6894220B2 (ja) 2016-11-30 2016-11-30 情報処理装置及びその制御方法、プログラムおよびシステム

Publications (3)

Publication Number Publication Date
JP2018092281A JP2018092281A (ja) 2018-06-14
JP2018092281A5 JP2018092281A5 (ja) 2019-10-10
JP6894220B2 true JP6894220B2 (ja) 2021-06-30

Family

ID=62566101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016233611A Active JP6894220B2 (ja) 2016-11-30 2016-11-30 情報処理装置及びその制御方法、プログラムおよびシステム

Country Status (1)

Country Link
JP (1) JP6894220B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475826A (en) * 1993-11-19 1995-12-12 Fischer; Addison M. Method for protecting a volatile file using a single hash
JP2008257279A (ja) * 2007-03-30 2008-10-23 Nec Corp ファイルシステムの完全性強化方法
JP6284317B2 (ja) * 2013-08-30 2018-02-28 キヤノン電子株式会社 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
JP2018092281A (ja) 2018-06-14

Similar Documents

Publication Publication Date Title
US10460107B2 (en) Systems and methods for automatic snapshotting of backups based on malicious modification detection
Baek et al. SSD-insider: Internal defense of solid-state drive against ransomware with perfect data recovery
US9935973B2 (en) Systems and methods for automatic detection of malicious activity via common files
Min et al. Amoeba: An autonomous backup and recovery SSD for ransomware attack defense
US20170206353A1 (en) Method and system for preventing malicious alteration of data in computer system
KR101074624B1 (ko) 브라우저 기반 어뷰징 방지 방법 및 시스템
RU2408060C2 (ru) Способ и система для поддержания согласованности пространства имен с файловой системой
US10713361B2 (en) Anti-malware protection using volume filters
US10366252B2 (en) Method and system for storage-based intrusion detection and recovery
US9424058B1 (en) File deduplication and scan reduction in a virtualization environment
US10983867B1 (en) Fingerprint change during data operations
Baek et al. SSD-assisted ransomware detection and data recovery techniques
US11409766B2 (en) Container reclamation using probabilistic data structures
EP3798883A1 (en) System and method for generating and storing forensics-specific metadata
JP2011191862A (ja) ファイル管理装置、ファイル管理システム、およびファイル管理プログラム
US8381300B2 (en) Offline extraction of configuration data
US9122402B2 (en) Increasing efficiency of block-level processes using data relocation awareness
US9501251B1 (en) Techniques for print monitoring
JP2019114076A (ja) 情報処理システム、情報処理方法、情報処理装置、及びプログラム
JP6894220B2 (ja) 情報処理装置及びその制御方法、プログラムおよびシステム
RU2622630C2 (ru) Система и способ восстановления модифицированных данных
JP2989487B2 (ja) ウィルスチェックシステム
US10389743B1 (en) Tracking of software executables that come from untrusted locations
US11698795B2 (en) Unified way to track user configuration on a live system
KR101772129B1 (ko) 콘텐츠 무결성을 검증하는 지능형 스토리지 시스템

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190830

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201214

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210125

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: 20210507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210603

R150 Certificate of patent or registration of utility model

Ref document number: 6894220

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150