(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022104878
(43)【公開日】2022-07-12
(54)【発明の名称】ソフトウェアへの悪意あるプロセスの注入を防止するためのシステムおよび方法
(51)【国際特許分類】
G06F 21/56 20130101AFI20220705BHJP
【FI】
G06F21/56
【審査請求】未請求
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021202529
(22)【出願日】2021-12-14
(31)【優先権主張番号】63/132,043
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/542,556
(32)【優先日】2021-12-06
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】313015247
【氏名又は名称】アクロニス・インターナショナル・ゲーエムベーハー
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】ウラジミール ストロゴフ
(72)【発明者】
【氏名】セルゲイ ベロウソフ
(72)【発明者】
【氏名】スタニスラフ プロタソフ
(57)【要約】 (修正有)
【課題】悪意ある注入を防止するためのシステム及び方法を提供する。
【解決手段】方法は、休止モードで動作している実行中のプロセスを監視することと、監視されている各実行中のプロセスに対して、実行中のプロセスの休止及び再開のコマンドを追跡するためにダイナミックリンクライブラリDLLを実行中のプロセスに注入して、実行中のプロセスに対応するアプリケーションのAPIをフックすることと、実行中のプロセスが休止モードの間に異常を検出するためにアプリケーションのファイルの入出力を監視することと、DLLを用いて実行中のプロセスを再開するコマンドが検出されたときに、監視に基づいて実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断することと、実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可することと、を含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
悪意あるプロセスの挿入を防止する方法であって、
オペレーティングシステムのカーネルモードのフィルタドライバによって、休止モードで動作している実行中のプロセスを監視することと、
監視されている各実行中のプロセスに対して、前記カーネルモードのフィルタドライバによって、
ダイナミックリンクライブラリ(Dynamic Link Library:DLL)を前記実行中のプロセスに注入して、前記実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(Application Programming Interface:API)をフックすることであって、前記DLLは前記実行中のプロセスの休止および再開のコマンドを追跡するために注入される、フックすることと、
前記実行中のプロセスが前記休止モードの間に異常を検出するために前記アプリケーションのファイルの入出力を監視することと、
前記DLLを用いて前記実行中のプロセスを再開するコマンドが検出されたときに、前記監視に基づいて前記実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断することと、
前記実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可することと、
を含む、方法。
【請求項2】
前記ファイルの入出力を監視することは、メモリへの書き込み操作が実施されたと判断することを少なくとも含む、請求項1に記載の方法。
【請求項3】
前記ファイルの入出力を監視することは、ファイルのアドレス空間が変更されたと判断することを少なくとも含む、請求項1に記載の方法。
【請求項4】
メモリまたはアドレス空間に加えられた変更を専用のリポジトリに記録することと、
前記実行中のプロセスを再開する前記コマンドが検出されるときに、前記記録された変更を解析器に転送することと、
前記変更が前記悪意あるプロセスに関連しているかどうかを示す解析の結果を前記解析器から受信することと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記受信した解析の結果に基づいて、前記実行中のプロセスに前記悪意あるプロセスが挿入されたかどうかを判断するために使用される規則を更新することをさらに含む、請求項4に記載の方法。
【請求項6】
前記実行中のプロセスを再開する前記コマンドは、前記オペレーティングシステムの内部コマンドとして使用されるカーネル関数を含む、請求項1に記載の方法。
【請求項7】
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの受信までの間にメモリへの書き込みが発生した場合に前記実行中のプロセスの前記再開をブロックすること、または、
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの前記受信までの間にファイルのアドレス空間が置き換えられた場合に前記実行中のプロセスの前記再開をブロックすること
をさらに含む、請求項1に記載の方法。
【請求項8】
悪意あるプロセスの挿入を防止するためのデバイスのシステムであって、前記デバイスは、
メモリと、
前記メモリと通信可能に結合され、かつユーザモードおよびカーネルモードで動作可能なオペレーティングシステム(Operating System:OS)を実行するように構成されたハードウェアプロセッサと、
前記ハードウェアプロセッサによって実行される前記カーネルモードのフィルタドライバと
を備え、前記フィルタドライバは、
休止モードで動作している実行中のプロセスを監視し、
監視されている各実行中のプロセスに対して、
ダイナミックリンクライブラリ(DLL)を前記実行中のプロセスに注入して、前記実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(API)をフックし、前記DLLは前記実行中のプロセスの休止および再開のコマンドを追跡するために注入され、
前記実行中のプロセスが前記休止モードの間に異常を検出するために前記アプリケーションのファイルの入出力を監視し、
前記DLLを用いて前記実行中のプロセスを再開するコマンドが検出されたときに、前記監視に基づいて前記実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断し、
前記実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可する
ように構成される、システム。
【請求項9】
前記ファイルの入出力を監視することは、前記メモリへの書き込み操作が実施されたと判断することを少なくとも含む、請求項8に記載のシステム。
【請求項10】
前記ファイルの入出力を監視することは、ファイルのアドレス空間が変更されたと判断することを少なくとも含む、請求項8に記載のシステム。
【請求項11】
前記フィルタドライバは、
前記メモリまたはアドレス空間に加えられた変更を専用のリポジトリに記録し、
前記実行中のプロセスを再開する前記コマンドが検出されるときに、前記記録された変更を解析器に転送し、
前記変更が前記悪意あるプロセスに関連しているかどうかを示す解析の結果を前記解析器から受信する
ようにさらに構成される、請求項8に記載のシステム。
【請求項12】
前記フィルタドライバは、前記受信した解析の結果に基づいて、前記実行中のプロセスに前記悪意あるプロセスが挿入されたかどうかを判断するために使用される規則を更新するようにさらに構成される、請求項11に記載のシステム。
【請求項13】
前記実行中のプロセスを再開する前記コマンドは、前記オペレーティングシステムの内部コマンドとして使用されるカーネル関数を含む、請求項8に記載のシステム。
【請求項14】
前記フィルタドライバは、
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの受信までの間に前記メモリへの書き込みが発生した場合に前記実行中のプロセスの前記再開をブロックするか、または、
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの前記受信までの間にファイルのアドレス空間が置き換えられた場合に前記実行中のプロセスの前記再開をブロックする
ようにさらに構成される、請求項8に記載のシステム。
【請求項15】
悪意あるプロセスの挿入を防止するためのコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
オペレーティングシステムのカーネルモードのフィルタドライバによって、休止モードで動作している実行中のプロセスを監視することと、
監視されている各実行中のプロセスに対して、前記カーネルモードのフィルタドライバによって、
ダイナミックリンクライブラリ(DLL)を前記実行中のプロセスに注入して、前記実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(API)をフックすることであって、前記DLLは前記実行中のプロセスの休止および再開のコマンドを追跡するために注入される、フックすることと、
前記実行中のプロセスが前記休止モードの間に異常を検出するために前記アプリケーションのファイルの入出力を監視することと、
前記DLLを用いて前記実行中のプロセスを再開するコマンドが検出されたときに、前記監視に基づいて前記実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断することと、
前記実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可することと、
の命令を含む、非一時的コンピュータ可読媒体。
【請求項16】
前記ファイルの入出力を監視することは、メモリへの書き込み操作が実施されたと判断することを少なくとも含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記ファイルの入出力を監視することは、ファイルのアドレス空間が変更されたと判断することを少なくとも含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記命令は、
メモリまたはアドレス空間に加えられた変更を専用のリポジトリに記録することと、
前記実行中のプロセスを再開する前記コマンドが検出されるときに、前記記録された変更を解析器に転送することと、
前記変更が前記悪意あるプロセスに関連しているかどうかを示す解析の結果を前記解析器から受信することと、
の命令をさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記命令は、前記受信した解析の結果に基づいて、前記実行中のプロセスに前記悪意あるプロセスが挿入されたかどうかを判断するために使用される規則を更新すること、の命令をさらに含む、請求項18に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記実行中のプロセスの再開の前記コマンドは、前記オペレーティングシステムの内部コマンドとして使用されるカーネル関数を含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項21】
前記命令は、
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの受信までの間にメモリへの書き込みが発生した場合に前記実行中のプロセスの前記再開をブロックすること、または、
前記実行中のプロセスの前記休止から前記実行中のプロセスの再開の前記コマンドの前記受信までの間にファイルのアドレス空間が置き換えられた場合に前記実行中のプロセスの前記再開をブロックすること、
の命令をさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、(例えば、一般的なマルウェアまたはランサムウェアの挿入による)悪意ある攻撃者からソフトウェアを保護する分野に関する。
【背景技術】
【0002】
現在、ユーザは、様々なタイプのサービスにアクセスするために通信ネットワークを頼りにしている。例えば、電話、コンピュータなどのユーザエンドポイントデバイスは、音声およびデータサービスにアクセスするために広く使用されている。これらのサービスをサポートするために、通信サービスプロバイダは、サービスにアクセスするために使用されるアプリケーションソフトウェアが信頼できるソースからのものであり、悪意あるプロセスが含まれていないことを保証するように努めている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
一部のシナリオでは、通常は安全だと思われるソフトウェアに悪意あるプロセスが挿入されることがある。例えば、ユーザエンドポイントデバイスのオペレーティングシステム(Operating System:OS)(例えば、Microsoft Windowsなど)が、動作モードまたは休止モードのいずれかでプロセスを開始/アクティベートする場合があると仮定する。休止モードは、アプリケーションを実行状態や終了状態ではなく準備状態にすることによるコンピュータのランダムアクセスメモリ(Random Access Memory:RAM)の節約のためにOSによって使用される。例えば、ユーザの入力を待つ間、プロセスを休止モードにすることによってRAMの効率を向上させることができる。攻撃者は、アプリケーションのプロセスが休止モードで開始される場合に、これまで信頼できると見なされていたプロセスに悪意あるプロセスを挿入する(したがって検知されない)可能性がある。
【課題を解決するための手段】
【0004】
本開示の態様は、ネットワークセキュリティの分野に関し、より具体的には、ソフトウェアへの悪意あるプロセスの挿入を防止するため、すなわち、信頼できるプロセスへの悪意あるプロセスの挿入を防止するためのシステムおよび方法に関する。
【0005】
一部の態様では、本明細書に記載されている技法は、悪意あるプロセスの挿入を防止するための方法に関し、該方法は、オペレーティングシステムのカーネルモードのフィルタドライバによって、休止モードで動作している実行中のプロセスを監視することと、監視されている各実行中のプロセスに対して、カーネルモードのフィルタドライバによって、ダイナミックリンクライブラリ(Dynamic Link Library:DLL)を実行中のプロセスに注入して、実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(Application Programming Interface:API)をフックすることであって、該DLLは実行中のプロセスの休止および再開のコマンドを追跡するために注入される、フックすることと、実行中のプロセスが休止モードの間に異常を検出するためにアプリケーションのファイルの入出力を監視することと、DLLを用いて実行中のプロセスを再開するコマンドが検出されたときに、監視に基づいて実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断することと、実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可することと、を含む。
【0006】
一部の態様では、本明細書に記載されている技法は、ファイルの入出力を監視することがメモリへの書き込み操作が実施されたと判断することを少なくとも含む方法に関する。
【0007】
一部の態様では、本明細書に記載されている技法は、ファイルの入出力を監視することがファイルのアドレス空間が変更されたと判断することを少なくとも含む方法に関する。
【0008】
一部の態様では、本明細書に記載されている技法は、メモリまたはアドレス空間に加えられた変更を専用のリポジトリに記録することと、実行中のプロセスを再開するコマンドが検出されるときに、記録された変更を解析器に転送することと、変更が悪意あるプロセスに関連しているかどうかを示す解析の結果を解析器から受信することと、をさらに含む方法に関する。
【0009】
一部の態様では、本明細書に記載されている技法は、受信した解析の結果に基づいて、実行中のプロセスに悪意あるプロセスが挿入されたかどうかを判断するために使用される規則を更新することをさらに含む方法に関する。
【0010】
一部の態様では、本明細書に記載されている技法は、実行中のプロセスを再開するコマンドがオペレーティングシステムの内部コマンドとして使用されるカーネル関数を含む方法に関する。
【0011】
一部の態様では、本明細書に記載されている技法は、実行中のプロセスの休止から実行中のプロセスの再開のコマンドの受信までの間にメモリへの書き込みが発生した場合に実行中のプロセスの再開をブロックすること、または、実行中のプロセスの休止から実行中のプロセスの再開のコマンドの受信までの間にファイルのアドレス空間が置き換えられた場合に実行中のプロセスの再開をブロックすることをさらに含む方法に関する。
【0012】
上記の方法は、ハードウェアプロセッサを含むシステムに実装される場合があるという点に留意すべきである。あるいは、方法は、非一時的コンピュータ可読媒体のコンピュータ実行可能命令を使用して実行されてもよい。
【0013】
一部の態様では、本明細書に記載されている技法は、悪意あるプロセスの挿入を防止するためのデバイスのシステムに関し、該デバイスは、メモリと通信可能に結合され、かつフィルタドライバならびにユーザモードおよびカーネルモードで動作可能なオペレーティングシステム(OS)を実行するように構成されたハードウェアプロセッサを備え、該カーネルモードのフィルタドライバは、休止モードで動作している実行中のプロセスを監視し、監視されている各実行中のプロセスに対して、ダイナミックリンクライブラリ(DLL)を実行中のプロセスに注入して、実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(API)をフックし、該DLLは実行中のプロセスの休止および再開のコマンドを追跡するために注入され、実行中のプロセスが休止モードの間に異常を検出するためにアプリケーションのファイルの入出力を監視し、DLLを用いて実行中のプロセスを再開するコマンドが検出されたときに、監視に基づいて実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断し、実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可するように構成される。
【0014】
一部の態様では、本明細書に記載されている技法は、悪意あるプロセスの挿入を防止するためのコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体に関し、該コンピュータ実行可能命令は、オペレーティングシステムのカーネルモードのフィルタドライバによって、休止モードで動作している実行中のプロセスを監視することと、監視されている各実行中のプロセスに対して、カーネルモードのフィルタドライバによって、ダイナミックリンクライブラリ(DLL)を実行中のプロセスに注入して、実行中のプロセスに対応するアプリケーションのアプリケーションプログラミングインターフェース(API)をフックすることであって、該DLLは実行中のプロセスの休止および再開のコマンドを追跡するために注入される、フックすることと、実行中のプロセスが休止モードの間に異常を検出するためにアプリケーションのファイルの入出力を監視することと、DLLを用いて実行中のプロセスを再開するコマンドが検出されたときに、監視に基づいて実行中のプロセスに悪意あるプロセスが挿入されているかどうかを判断することと、実行中のプロセスに悪意あるプロセスが挿入されていないとの判断に応じて、休止プロセスの実行の再開を許可することと、の命令を含む。
【0015】
例示的態様の簡略化された上記概要は、本開示の基本的な理解をもたらすために提供される。本概要は、全ての企図された態様の広範な概要ではなく、全ての態様の主要なまたは重要な要素を特定することも、本開示のいずれかまたは全ての態様の範囲を描写することも意図していない。その唯一の目的は、1つまたは複数の態様を、以下の本開示のより詳細な説明の序文として、簡略化した形で示すことである。上記の目的を達成するために、本開示の1つまたは複数の態様は、特許請求の範囲で説明され、かつ例示的に示される特徴を含む。
【図面の簡単な説明】
【0016】
本明細書に組み込まれ、本明細書の一部を構成する添付図面は、本開示の1つまたは複数の例示的な態様を示し、詳細な説明とともに、その原理と実装態様を説明するために提供される。
【
図1】本開示の態様に従って、悪意あるプロセスの挿入を防止するための例示的なシステムを示すブロック図である。
【
図2】本開示の態様に従って、悪意あるプロセスの挿入を防止するために使用される例示的なユーザエンドポイントデバイスを示すブロック図である。
【
図3】本開示の態様に従って、悪意あるプロセスの挿入を防止するための方法の例示的な方法を示すフロー図である。
【
図4】本開示の態様が実装される場合がある汎用コンピュータシステムの例を示す図である。
【発明を実施するための形態】
【0017】
例示的な態様が、悪意あるプロセスの挿入を防止するためのシステム、方法、およびコンピュータプログラムの文脈で本明細書に記載される。以下の説明は単なる例示であり、決して限定的なものではないことを当業者であれば理解されるであろう。本開示の効果を用いることで、その他の態様は当業者であれば容易に連想されるであろう。次に、添付図面に示される例示的な態様の実装形態を詳細に参照する。図面および以下の説明を通して可能な範囲で同じ参照番号が使用され、同じ参照番号は、同一または類似の項目であることを意味する。
【0018】
休止プロセスへの悪意あるプロセスの挿入は、検出されない可能性があるため、リスクの高いセキュリティ上の脅威である。一例として、悪意あるプロセスの挿入は、安全なコンテンツを悪意あるコンテンツに置き換えるために、書き込みメモリ法を使用して実施されることがある。別の例としては、悪意あるプロセスの挿入は、ファイルのアドレス空間を置き換えることによって実施されることがある。悪意あるプロセスを挿入するのに使用される方法にかかわらず、プロセスの実行が再開された時点で攻撃が起こる。プロセスが信頼できるかどうかの検証は、プロセスが休止モードになる前に行われる。そのため、実行が再開されるときにそのプロセスは引き続き信頼できるプロセスと見なされ、それにより、攻撃がリアルタイムで検知されずに行われる。このタイプの攻撃は、デジタルフォレンジック法を使用して事後的に初めて検出されることが多い。
【0019】
そのため、悪意あるプロセスをリアルタイムで検出する、より効率的な方法とシステムが求められている。リアルタイムに検知することで、システムがマルウェアのサンプルを収集して解析することが可能となり、ソフトウェアの信頼性の検証を強化することができる。
【0020】
一態様では、本開示の教示に従って悪意あるプロセスの挿入を防止するためのシステムは、統合マイクロ回路(特定用途向け集積回路、Application Specific Integrated Circuit:ASIC)、またはフィールドプログラマブルゲートアレイ(Field-Programmable Gate Array:FPGA)などのハードウェアを用いて、または、例えば、マイクロプロセッサシステムおよびプログラム命令のセットなどのソフトウェアおよびハードウェアの組み合わせの形態で、またニューロンシナプスチップ上で実現される、実世界デバイス、システム、コンポーネントおよびコンポーネントのグループを含む。このようなシステムモジュールの機能は、ハードウェアによって単独で、またソフトウェアによって実現されるシステムの機能の一部とハードウェアによるものの一部との組み合わせの形態によっても、実現することが可能である。特定の態様では、一部のモジュールまたは全てのモジュールは、汎用コンピュータ(
図4に示すような)のプロセッサで実行されてよい。さらに、システムのコンポーネントは、単一のコンピューティングデバイス内部で、またはいくつかの相互接続しているコンピューティングデバイスの間で分散して実現することができる。
【0021】
図1は、本開示の態様に従って、悪意あるプロセスの挿入を防止するための例示的システム100を示すブロック図である。システム100は、ネットワーク140を介してサービスにアクセスするユーザエンドポイントデバイス101と、攻撃を仕掛けるために使用されるデバイス109を含む。
【0022】
デバイス109は、ユーザエンドポイントデバイスまたはネットワーク140内のサーバに悪意ある活動を仕掛ける目的で、いずれかのエンティティ(個人や企業)によって使用されることがある代表的なデバイスである。ネットワーク140は、任意の数の無線または有線型の通信ネットワーク、インターネットなどを含んでもよい。
【0023】
一態様では、悪意あるプロセスの挿入を防止するための本開示の方法は、ユーザエンドポイントデバイス(例えば、ユーザエンドポイントデバイス101)に実装される。
【0024】
図2は、本開示の態様に従って、悪意あるプロセスの挿入を防止するために使用される例示的なユーザエンドポイントデバイス200を示すブロック図である。
【0025】
ユーザエンドポイントデバイスのオペレーティングシステム(OS)は、一般的にユーザモードおよびカーネルモードの2つのモードをサポートしている。デバイスの電源を入れると、OSはカーネルモードで起動する。OSがロードされた後、ユーザアプリケーションはユーザモードで実行される。特権命令は、カーネルモードでのみ実行することができる。例えば、割り込み命令、I/O管理、メモリ管理、CPUスケジューリングなどは、カーネルモードで実行される。OSがユーザアプリケーションを動作しているときは、システムはユーザモードである。
【0026】
カーネルモードへの移行は、アプリケーションが特権アクセスを必要とする実行要求を送るときに行われる。完了すると、OSはユーザモードに戻る。例えば、ユーザアプリケーション201に対して、システムコールが発生したと仮定する。このとき、実行には特権アクセスが必要なため、OSのカーネルモードへの移行が行われる。システムコールの実行が終了すると、再びユーザモードに移行する。
【0027】
ユーザアプリケーション201は、アプリケーションを起動するためにエンドポイントデバイスのユーザによって呼び出される場合がある。ユーザアプリケーション201は、ユーザモードでの実行中に、カーネルモードでのみ実行可能な操作を要求することがある。その場合、OSはユーザモードからカーネルモードに移行する。例えば、プロセッサ221にアクセスする操作(例えば、スケジューリング)、メモリ222にアクセスする操作(例えば、マッピング)、I/Oモジュール223にアクセスする操作(例えば、ポート/インターフェースへのアクセス)、ファイル規則211にアクセスする操作、レジストリキー212にアクセスする操作(例えば、レジストリキーの改変)、プロセス規則213にアクセスする操作(例えば、プロセスの変更またはプロセスの追加)などは、OSがカーネルモードのときに実施される。
【0028】
カーネルモードドライバ219は、プロセス通知のコールバック(例えば、プロセス作成のコールバック)に関して登録された操作を検出する。アプリケーション(例えば、ユーザアプリケーション201)のプロセスが休止モードに入るときに、カーネルモードドライバ219は、アプリケーションのプロセスを監視するために、本開示の方法を呼び出す。フィルタドライバ220は、休止モードで動作している全ての実行中のプロセスを監視し、例えば、プロセスが休止モードで動作していた時間の間に悪意あるプロセスが挿入されたかどうかに基づいてプロセスの再開を許可するかどうかを制御するために使用される。例えば、ユーザアプリケーション201は、不誠実なアプリケーション(すなわち、マルウェアが挿入されたアプリケーション)である可能性がある。ユーザアプリケーションのプロセスが、別のプロセスの追加またはプロセスの置き換えのいずれかによって改変された場合、影響を受けたアプリケーションは、「不誠実なアプリケーション」と呼ばれる場合がある。その場合、不誠実なアプリケーションは、ランサムウェア、一般的なマルウェアなどを含んでいる可能性がある。本開示の方法は、ユーザエンドポイントデバイスのカーネルモードドライバの機能を使用して、不誠実なアプリケーションを特定する。
【0029】
休止プロセスに悪意あるプロセスが挿入されるのを防止するために、本開示の方法は、プロセスが休止モードであった時間の間に、プロセスがその信頼を維持できたかどうかを判断した後にのみ、休止プロセスが動作モードに移行することを可能にする。このようにして、一態様では、本開示の方法は、カーネルモードのフィルタドライバ220を使用して悪意あるプロセスの挿入を防止する。フィルタドライバ220は、休止モードで動作している実行中のプロセス(例えば、休止プロセス202)を監視する。監視されている各実行中のプロセスに対して、フィルタドライバ220は、ダイナミックリンクライブラリ(DLL)を実行中のプロセス(例えば、休止プロセス202)に注入して、実行中のプロセスに対応するアプリケーション201のAPIをフックする。DLLは、休止プロセス202の休止および再開のコマンドを追跡するために注入される。フィルタドライバ220は、実行中のプロセスが休止モードを継続している間に異常(例えば、アプリケーション201の変更)を検出するためにアプリケーション201のファイルの入出力を監視する。DLL注入を介した休止プロセス202を再開するコマンドの検出に応じて、フィルタドライバ220は、監視されたファイルの入出力を解析し、休止が継続されている間に疑わしいプロセス202に悪意あるプロセスが挿入されたかどうかを判断する。フィルタドライバ220は、コマンドの実行を可能にし、したがって、休止プロセス202に悪意あるプロセスが挿入されなかったとの判断に応じて、プロセスを再開することを可能にする。
【0030】
図3は、本開示の態様に従って、悪意あるプロセスの挿入を防止するためのシステムの例示的な方法300を示すフロー図である。
【0031】
ステップ310で、方法300は、カーネルモードのフィルタドライバによって、アプリケーションのプロセスが休止モードで動作を開始されたと判断する。例えば、OSは、アプリケーション201が少なくとも閾値の期間(例えば、5秒)入力を待っていると判断する。OSは、アプリケーション201に関連するプロセスを休止モード(例えば、休止プロセス202)にすることで、RAMを再配置する。フィルタドライバ220は、メモリの再配置を検出し、実行中のプロセスが現在休止モードで動作中であると判断する。ステップ315で、方法300は、カーネルモードのフィルタドライバによって、休止モードで動作している実行中のプロセスを監視する。休止モードの各プロセスは、他のプロセスとは別個に監視される。
【0032】
ステップ320で、監視されている各プロセスに対して、カーネルモードのフィルタドライバ220が、ダイナミックリンクライブラリ(DLL)をプロセスに注入して、対応するアプリケーションのAPIをフックする。例えば、フィルタドライバ220は、プロセス202の休止および再開のコマンドを追跡するために、休止プロセス202にDLL注入を実施してもよい。このようにして、APIコールに関する情報を取得することができるように、APIコールのフローの動作が改変される。
【0033】
ステップ325で、監視されている各プロセスに対して、フィルタドライバ220は、異常を特定するためにアプリケーション201のファイルの入出力を監視する。例えば、フィルタドライバ220は、メモリへのI/O操作があるかどうかを判断するために、アプリケーション201の相互作用を監視してもよい。例えば、監視により、休止プロセス202のアドレス空間を変更するための入出力が特定される場合がある。休止プロセス202が休止を継続している間、アプリケーション201への変更は発生しないはずである。アプリケーション201に関連するI/O操作は、改ざんの兆候である可能性が高い。このようにして、一態様では、ファイルの入出力の監視は、メモリ222への書き込み操作が実施されたと判断することを少なくとも含む。より具体的には、書き込み操作によって、アプリケーション201の属性が変更される。例えば、アプリケーション201に関連するディレクトリ内のファイルが削除または改変される可能性がある。別の例では、アプリケーション201に関連するディレクトリに新しいファイルが書き込まれる可能性がある。
【0034】
一態様では、ファイルの入出力の監視は、アプリケーション201のファイルのアドレス空間が変更されたと判断することを少なくとも含む。例えば、マルウェアは、プロセスの一部を置き換えるコードを挿入するか、またはプロセスのアドレス空間を改変する可能性がある。
【0035】
ステップ330で、監視されている各プロセスに対して、方法300は、プロセスを再開するコマンドが受信されたかどうかを判断する。例えば、カーネルモードのフィルタドライバが、休止モードで動作している各プロセスに対して、実行を再開するコマンドが受信されたと判断する場合がある。プロセスを再開するコマンドが受信されると、本方法はステップ335に進む。そうでない場合、本方法はステップ315に進む。一態様では、プロセスの再開のコマンドは、オペレーティングシステムの内部コマンドとして使用されるカーネル関数(例えば、NtResumeProcess())を含む。
【0036】
ステップ335で、カーネルモードのフィルタドライバによって、方法300は、監視されたファイルの入出力を解析し、プロセスに悪意あるプロセスが挿入されているかどうかを判断する。悪意あるプロセスが挿入されていない場合、本方法はステップ340に進む。そうでない場合、本方法はステップ350に進む。
【0037】
ステップ340で、方法300は、休止プロセスの実行の再開を許可する。つまり、プロセスは休止モードを終了し、動作モードまたは実行状態に入る。言い換えると、プロセスに悪意あるプロセスが挿入されていない場合にのみ、そのプロセスが許可される。次に、本方法はステップ315に進む。ステップ350で、方法300は、プロセスの再開をブロックする。次に、本方法はステップ315に進む。
【0038】
一態様では、フィルタドライバ220は、プロセスの休止からプロセスの再開のコマンドの受信までの間にメモリへの書き込みが発生した場合にプロセスの再開をブロックする場合がある。別の態様では、フィルタドライバ220は、プロセスの休止からプロセスの再開のコマンドの受信までの間にファイルのアドレス空間が置き換えられた場合にプロセスの再開をブロックする場合がある。
【0039】
アプリケーション201が、入力画像内のテキストを識別し、識別されたテキスト内の単語を含むテキストファイルを出力するように構成されていると仮定する。アプリケーション201に関連するプロセスは、入力画像が閾値の期間に提供されない場合、休止モードに入る場合がある。プロセスが休止モードを継続している間、悪意あるエンティティが、出力テキストファイルをエンドポイントデバイス109に送信させるコードをアプリケーション201に注入しようとし、それにより、プライバシーの問題が発生する可能性がある。悪意あるエンティティが成功した場合(例えば、出力テキストファイルの送信先を処理するアプリケーション201のスクリプトが上述のように改変された場合)、プロセスが実行状態に再び入ると、提供される次の画像はその出力テキストを含みエンドポイントデバイス109に送信されることになる。フィルタドライバ220は、休止プロセス202が休止モードである間にアプリケーション201に関連するファイルの改変を検出し、休止プロセスが再開する(すなわち、実行状態に入る)ことをブロックする。
【0040】
一部の態様では、フィルタドライバ220は、悪意あるプロセスが休止プロセス202に注入された可能性があることを示す警告をユーザエンドポイントデバイス101に対してさらに生成してもよい。警告により、悪意あるプロセスが実際に悪意あるものである可能性があるかどうかを確認するために、ユーザエンドポイントデバイス101の管理ユーザに確認を要求することができる。先に示した例を参照すると、警告により、アプリケーション201に改変が加えられ、出力テキストファイルを未確認のIPアドレス(すなわち、エンドポイント109のIPアドレス)に送信するプロセスが誘導されたことを示すことができる。
【0041】
一態様では、フィルタドライバ220は、アプリケーション201に関連するメモリまたはアドレス空間に行われた変更を、専用のリポジトリに(例えば、ネットワーク140から切り離されたサービスに)さらに記録してもよい。プロセスの再開のコマンドが検出されると、フィルタドライバ220は、記録された変更を解析器に転送してもよい。例えば、解析器は、フィルタドライバ220の記載した機能を実施するシッククライアントアプリケーションであってもよい。ユーザエンドポイントデバイス101上のフィルタドライバ220は、シンクライアントアプリケーションであってもよい。このようにして、プロセス状態の変更のローカルな検出はシンクライアントアプリケーションによって実施され、かつ異常に関する改変の解析はシッククライアントアプリケーションによって実施されてもよい。その場合、フィルタドライバ220のシンクライアントは、変更が悪意あるプロセスに関連しているかどうかを示す解析の結果を解析器から受信してもよい。
【0042】
一態様では、解析器は、同じユーザエンドポイントデバイスに実装される。別の態様では、解析器は、クラウドベースのネットワーク上に実装され、かつユーザエンドポイントデバイスによって必要に応じてアクセスされる。例えば、ネットワークサービスプロバイダは、疑わしいプロセスの情報を様々なユーザエンドポイントデバイスから収集し、その疑わしいプロセスの影響を解析して有害性の度合いを評価し、かつユーザエンドポイントデバイスに評決を提供するサービスを提供することができる。その後、ユーザエンドポイントデバイスは、挿入されたプロセスが悪意のないものであることを確認した上で、プロセスが休止モードを終了することを許可してもよい。
【0043】
一態様では、フィルタドライバ220は、受信した解析の結果に基づいて、プロセスに悪意あるプロセスが挿入されているかどうかを判断するために使用される規則を更新してもよい。テキストファイル生成に関する例を参照すると、フィルタドライバ220は、未確認のIPアドレスを有するエンティティによって行われたファイル、レジストリ、および/またはプロセスへの変更を、プロセスの状態にかかわらずそれぞれブロックすべきであることを明示するファイル規則、レジストリ規則、および/またはプロセス規則を開始してもよい。言い換えると、そのIPアドレスは、ブラックリストに載っている可能性がある。
【0044】
前述したように、本開示は、悪意あるソフトウェアによるプロセスの挿入を防止するためのシステムおよび方法について記載する。本開示の方法の1つの利点は、ユーザエンドポイントデバイスが、マルウェアによるプロセスの不誠実性から保護されることである。
【0045】
図4は、悪意あるプロセスの挿入を防止するためのシステムおよび方法の態様が実装されることがあるコンピュータシステム20を示すブロック図である。コンピュータシステム20は、複数のコンピューティングデバイスの形態または単一のコンピューティングデバイスの形態、例えば、デスクトップコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、サーバ、メインフレーム、埋め込み型デバイスなど、およびコンピューティングデバイスの他の形態である場合がある。
【0046】
示すように、コンピュータシステム20は、中央演算処理装置(Central Processing Unit:CPU)21、システムメモリ22、および、中央演算処理装置21に関連するメモリを含む種々のシステムコンポーネントを接続しているシステムバス23を含む。システムバス23は、バスメモリまたはバスメモリコントローラ、周辺バス、および任意の他のバスアーキテクチャと相互作用することが可能なローカルバスを含んでもよい。バスの例としては、PCI、ISA、PCI-Express、HyperTransport(商標)、InfiniBand(商標)、シリアルATA、I2C、およびその他の好適なインターコネクトなどを挙げてよい。中央演算処理装置21(プロセッサとも称される)は、単一または複数のコアを有する単一または複数のプロセッサのセットを含む場合がある。プロセッサ21は、本開示の技法を実装している1つまたは複数のコンピュータ実行可能コードを実行してもよい。システムメモリ22は、本明細書で用いられるデータおよび/またはプロセッサ21によって実行可能なコンピュータプログラムを記憶する任意のメモリであってよい。システムメモリ22としては、ランダムアクセスメモリ(RAM)25などの揮発性メモリ、および読み取り専用メモリ(Read Only Memory:ROM)24、フラッシュメモリなどの不揮発性メモリ、またはこれらの任意の組み合わせを挙げてもよい。基本入出力システム(Basic Input/Output System:BIOS)26は、例えば、ROM24を使用してオペレーティングシステムをロードするときなど、コンピュータシステム20の各要素間の情報の伝送のための基本手順を記憶していてもよい。
【0047】
コンピュータシステム20は、1つまたは複数の取り外し可能記憶デバイス27、1つまたは複数の非取り外し可能記憶デバイス28、またはこれらの組み合わせなどの1つまたは複数の記憶デバイスを含んでもよい。1つまたは複数の取り外し可能記憶デバイス27および非取り外し可能記憶デバイス28は、記憶インターフェース32を介してシステムバス23に接続される。一態様では、記憶デバイスおよび対応するコンピュータ可読記憶媒体は、コンピュータシステム20のコンピュータ命令、データ構造、プログラムモジュール、および他のデータの記憶装置向けの電力独立型モジュールである。システムメモリ22、取り外し可能記憶デバイス27および非取り外し可能記憶デバイス28は、種々のコンピュータ可読記憶媒体を使用してもよい。コンピュータ可読記憶媒体の例としては、例えば、キャッシュ、SRAM、DRAM、ゼロ・コンデンサRAM、ツイントランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM、SONOS、PRAMなどのマシンメモリ、ソリッドステートドライブ(Solid State Drive:SSD)またはフラッシュドライブのようなフラッシュメモリまたはその他のメモリ技術、ハードディスクドライブまたはフロッピーディスクのような磁気カセット、磁気テープおよび磁気ディスク記憶装置、コンパクトディスク(Compact Disk Read Only Memory:CD-ROM)またはデジタル多用途ディスク(Digital Versatile Disk:DVD)のような光記憶装置、および所望のデータを記憶するために使用することができ、かつコンピュータシステム20によってアクセス可能な任意の他の媒体などが挙げられる。
【0048】
コンピュータシステム20のシステムメモリ22、取り外し可能記憶デバイス27、および非取り外し可能記憶デバイス28は、オペレーティングシステム35、追加のプログラムアプリケーション37、他のプログラムモジュール38およびプログラムデータ39を記憶するために使用されてよい。コンピュータシステム20は、例えば、キーボード、マウス、スタイラス、ゲームコントローラ、音声入力デバイス、タッチ入力デバイスなどの、入力デバイス40からのデータを通信するための周辺インターフェース46、または、例えばシリアルポート、パラレルポート、ユニバーサルシリアルバス(Universal Serial Bus:USB)または他の周辺インターフェースなどの1つまたは複数のI/Oポートを介した、プリンタまたはスキャナなどの他の周辺デバイスを含んでもよい。例えば1つまたは複数のモニタ、プロジェクタまたは統合ディスプレイなどのディスプレイデバイス47は、例えばビデオアダプタなどの出力インターフェース48を通してシステムバス23に接続されてもよい。ディスプレイデバイス47に加えて、コンピュータシステム20は、例えばスピーカおよび他の音響映像デバイスなどの他の周辺出力デバイス(図示せず)を搭載してもよい。
【0049】
コンピュータシステム20は、1つまたは複数のリモートコンピュータ49へのネットワーク接続を使用して、ネットワーク環境で動作してよい。リモートコンピュータ(1つまたは複数)49は、コンピュータシステム20の性質について記載されている上述の各要素のほとんどまたは全てを含む、ローカルコンピュータ・ワークステーションまたはサーバであってもよい。例えば、ルータ、ネットワーク局、ピアデバイスまたは他のネットワークノードなどのその他のデバイスが、コンピュータネットワーク内に存在する場合があるが、これらに限定されない。コンピュータシステム20は、ローカルエリアコンピュータネットワーク(Local-Area computer Network:LAN)50、広域コンピュータネットワーク(Wide-Area computer Network:WAN)、イントラネットおよびインターネットなどの1つまたは複数のネットワークを介して、リモートコンピュータ49と通信するための1つまたは複数のネットワークインターフェース51またはネットワークアダプタを含んでもよい。ネットワークインターフェース51の例としては、イーサネットインターフェース、フレームリレーインターフェース、SONETインターフェースおよび無線インターフェースを挙げてもよい。
【0050】
本開示の態様は、システム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体(またはメディア)を含んでもよい。
【0051】
コンピュータ可読記憶媒体は、命令またはデータ構造の形態でプログラムコードを保持し、記憶することができる有形デバイスであってもよく、コンピューティングシステム20などのコンピューティングデバイスのプロセッサによってアクセス可能なものである。コンピュータ可読記憶媒体は、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の好適な組み合わせであってもよい。例として、このようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、EEPROM、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、ハードディスク、ポータブルコンピュータ・ディスケット、メモリースティック、フロッピーディスク、あるいは、例えば命令がそこに記録されたパンチカードまたは溝状に隆起した構造などの機械的にコード化されたデバイスを含む場合がある。本明細書で使用する場合、コンピュータ可読記憶媒体は、例えば、電波またはその他の自ら伝搬する電磁波、導波管または伝送媒体を通して伝搬する電磁波、あるいは有線によって伝送される電気信号などの本質的に一時的な信号であると解釈されるものではない。
【0052】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から対応するコンピューティングデバイスに、あるいは、例えば、インターネット、ローカルエリアネットワーク、広域ネットワークおよび/または無線ネットワークなどのネットワークを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅製の伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを含んでもよい。各コンピューティングデバイスのネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、対応するコンピューティングデバイス内部のコンピュータ可読記憶媒体の記憶領域に、コンピュータ可読プログラム命令を転送する。
【0053】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、組み立て命令、命令セットアーキテクチャ(Instruction-Set-Architecture:ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、ステート設定データ、あるいはソースコードまたはオブジェクトコードであってもよく、これらの命令は、オブジェクト指向プログラミング言語、および従来の手続き型プログラミング言語などの、1つまたは複数のプログラミング言語の任意の組み合わせで記述される。コンピュータ可読プログラム命令は、全面的にユーザのコンピュータで、部分的にユーザのコンピュータで、スタンドアロンソフトウェアパッケージとして、部分的にユーザコンピュータと部分的にリモートコンピュータとで、あるいは全面的にリモートコンピュータまたはサーバで、実行されてよい。後者のシナリオでは、リモートコンピュータは、LANまたはWANなどの任意のタイプのネットワークを通してユーザのコンピュータに接続されているか、または、接続は、外部コンピュータに対して(例えば、インターネットを通して)構築されてもよい。一部の態様では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array:FPGA)またはプログラマブル・ロジックアレイ(Programmable Logic Array:PLA)などの電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して、コンピュータ可読プログラム命令を実行し、電子回路をパーソナライズしてもよい。
【0054】
種々の態様では、本開示に記載されるシステムおよび方法は、モジュールとして扱われる場合がある。本発明で使用する場合、用語「モジュール」は、ハードウェアを使用して、例えば特定用途向け集積回路(ASIC)またはFPGAによって、あるいは、ハードウェアとソフトウェアとの組み合わせとして、例えば、(実行中に)マイクロプロセッサシステムを特殊目的デバイスに変換するマイクロプロセッサシステムおよびモジュールの機能を実装するための命令のセットによって、実装される実世界デバイス、コンポーネント、またはコンポーネントの機構を意味する。モジュールはまた、単独でハードウェアによって促進される特定の機能と、ハードウェアとソフトウェアとの組み合わせによって促進される他の機能との、2つの組み合わせとして実装されてもよい。特定の実装形態では、少なくとも一部、および場合によっては、全てのモジュールは、コンピュータシステムのプロセッサ(例えば、上記
図4でより詳細に記載したもの)で実行されてよい。したがって、各モジュールは、様々な好適な構成で実現される可能性があり、本明細書に例示されるいずれの特定の実装形態にも限定されるべきではない。
【0055】
説明の明瞭さのために、態様の決まりきった特徴の全てを本明細書で開示しているわけではない。本開示のいずれかの実際の実装形態を開発する際に、開発者の特定の目的の達成のために、非常に多くの実装形態固有の決定が行われる必要があり、これらの特定の目的は、異なる実装形態および異なる開発者によって変化することを理解されるであろう。このような開発作業は、複雑であり、かつ時間がかかる可能性があるが、それでも本開示の効果を用いる当業者にとって、そのような作業は、日常的な技術的業務であるものと理解される。
【0056】
さらに、本明細書で用いる表現や用語は説明上のものであって、限定されることを意図しておらず、本明細書の用語や表現は、当業者の知見と組み合わされて、本明細書で提示する教示および指導に照らして当業者によって解釈されるものと理解すべきである。加えて、明示的な記載がない限り、本明細書または特許請求の範囲におけるいかなる用語も、一般的でない、あるいは特別な意味を持つものと見なされることを意図していない。
【0057】
本明細書に開示される様々な態様は、例として本明細書で言及される公知のモジュールの、現在および将来における均等物を包括する。さらに、態様および応用例を示し、かつ説明したが、本明細書に開示された発明の概念から逸脱することなく、上記よりも多くの変更が可能であることは、本開示の利益を用いる当業者には明らかであろう。
【符号の説明】
【0058】
20 コンピュータシステム
21 プロセッサ
22 システムメモリ
23 システムバス
27 取り外し可能記憶装置
28 非取り外し可能記憶装置
32 記憶装置インターフェース
35 オペレーティングシステム
37 アプリケーション
38 他のプログラムモジュール
39 プログラムデータ
40 入力デバイス
46 周辺インターフェース
47 ディスプレイデバイス
48 出力インターフェース
49 リモートコンピュータ
50 ローカルエリアネットワーク
51 ネットワークインターフェース
101 ユーザエンドポイントデバイス
109 エンドポイントデバイス
140 ネットワーク
201 アプリケーション
202 休止プロセス
211 ファイル規則
212 レジストリ規則
213 プロセス規則
219 カーネルドライバ、ファイルシステムおよびレジストリフィルタ、コールバック登録ドライバ
220 フィルタドライバ
221 プロセッサ
222 メモリ
【外国語明細書】