IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サイエンプティブ テクノロジーズ インコーポレイテッドの特許一覧

特許7460696カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護
<>
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図1
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図2
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図3
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図4
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図5
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図6
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図7
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図8
  • 特許-カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-25
(45)【発行日】2024-04-02
(54)【発明の名称】カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護
(51)【国際特許分類】
   G06F 21/56 20130101AFI20240326BHJP
【FI】
G06F21/56 360
G06F21/56 380
【請求項の数】 18
(21)【出願番号】P 2022110573
(22)【出願日】2022-07-08
(62)【分割の表示】P 2019566622の分割
【原出願日】2018-05-30
(65)【公開番号】P2022133461
(43)【公開日】2022-09-13
【審査請求日】2022-08-03
(31)【優先権主張番号】62/512,659
(32)【優先日】2017-05-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517255773
【氏名又は名称】サイエンプティブ テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】スチュワート ピー.マクロード
(72)【発明者】
【氏名】ロバート パイク
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2017-068822(JP,A)
【文献】特許第5996145(JP,B1)
【文献】安藤 類央 ほか2名,Windows OS上でのフィルタドライバを用いたセキュアアクセス制御機構の構築 An implementation,コンピュータセキュリティシンポジウム2009 論文集,日本,社団法人情報処理学会,2009年10月19日,Vol.2009, No.11,pp.123-128,特に図1
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
カーネルモードにおけるマルウェアのリアルタイム検出およびマルウェアからの保護のためのプロセッサによって実行される方法であって、
ユーザモードにおいて実行されているプロセスによって開始されたファイル操作要求を検出するステップと、
前記検出されたファイル操作要求に関連付けられた書き込みバッファにアクセスするステップと、
前記書き込みバッファが暗号化されたデータを記憶しているかを検出するステップと、
前記書き込みバッファが暗号化されたデータを記憶していることを検出することに応答して、前記検出されたファイル操作要求を開始することを担当する前記プロセスを識別するステップと、
プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、前記識別されたプロセスの検索を行って、前記識別されたプロセスが信頼されたプロセスであるかどうかを決定するステップと、
前記識別されたプロセスが信頼されたプロセスではないと決定することに応答して、
前記識別されたプロセスに対してマルウェア修正アクションを実行するステップと、
前記マルウェアを記述する情報をクライアントデバイスに送信するステップと
を含み、
前記識別されたプロセスが信頼されたプロセスではないと前記決定するステップは、
プログラムの前記ブラックリスト上において前記識別されたプロセスを特定するステップを含み、
前記識別されたプロセスが許可されたというメッセージを前記クライアントデバイスから受信することに応答して、前記識別されたプロセスをプログラムの前記ホワイトリストに追加するステップをさらに含むことを特徴とする方法。
【請求項2】
前記ファイル操作要求を検出する前記ステップは、
前記ファイル操作要求に対応するファイルハンドルから、前記ファイル操作要求が書き込み操作に対応するかどうかを決定するステップと、
前記ファイル操作要求が前記書き込み操作に対応すると決定することに応答して、前記ファイル操作要求をインターセプトするステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記ファイル操作要求を前記インターセプトする前記ステップは、
フィルタマネージャによって、ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されているかどうかを決定するステップと、
ファイル操作要求をインターセプトするために前記ミニフィルタドライバが登録されていると決定することに応答して、前記フィルタマネージャによって、前記ファイル操作要求を前記ミニフィルタドライバに送信するステップと
を含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記書き込みバッファが暗号化されたデータを記憶しているかを検出するステップは、モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数を行って、前記書き込みバッファ内のデータが暗号化されているかどうかを決定するステップを含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記マルウェア修正アクションを実行する前記ステップは、
前記検出されたファイル操作要求に関連付けられた書き込み操作を終了するステップと、
前記検出されたファイル操作要求をメモリから削除することによって、前記検出されたファイル操作要求を終了するステップと、
前記識別されたプロセスに関連付けられたディスクファイルイメージを隔離するステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
プログラムの前記ホワイトリスト上において前記識別されたプロセスを特定することに応答して、ミニフィルタドライバによって、前記検出されたファイル操作要求を無視するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記識別されたプロセスが信頼されたプロセスであるかどうかを決定する前記ステップは、プログラムの前記ブラックリストまたはプログラムの前記ホワイトリスト上において前記プロセスを特定しないことに応答して、前記クライアントデバイスに前記識別されたプロセスを許可することを求める要求を送信するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記識別されたプロセスが信頼されたプロセスではないと前記決定するステップは、前記クライアントデバイスに前記識別されたプロセスを許可することを求める前記要求を前記送信することに応答して、前記識別されたプロセスが許可されないというメッセージを前記クライアントデバイスから受信するステップをさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記識別されたプロセスをプログラムの前記ブラックリストに追加するステップをさらに含むことを特徴とする請求項8に記載の方法。
【請求項10】
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、少なくとも1つのプロセッサによって実行されたとき、前記少なくとも1つのプロセッサに、
ユーザモードにおいて実行されているプロセスによって開始されたファイル操作要求を検出することと、
前記検出されたファイル操作要求に関連付けられた書き込みバッファにアクセスすることと、
前記書き込みバッファが暗号化されたデータを記憶しているかを検出することと、
前記書き込みバッファが暗号化されたデータを記憶していることを検出することに応答して、前記検出されたファイル操作要求を開始することを担当する前記プロセスを識別することと、
プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、前記識別されたプロセスの検索を行って、前記識別されたプロセスが信頼されたプロセスであるかどうかを決定することと、
前記識別されたプロセスが信頼されたプロセスではないと決定することに応答して、
前記識別されたプロセスに対してマルウェア修正アクションを実行することと、
マルウェアを記述する情報をクライアントデバイスに送信することと
を行わせ、
前記識別されたプロセスが信頼されたプロセスではないと決定することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
プログラムの前記ブラックリスト上において前記識別されたプロセスを特定することを行わせる命令を含み、
前記少なくとも1つのプロセッサによって実行されたとき、前記少なくとも1つのプロセッサに、
前記識別されたプロセスが許可されたというメッセージを前記クライアントデバイスから受信することに応答して、前記識別されたプロセスをプログラムの前記ホワイトリストに追加することを行わせる命令をさらに記憶することを特徴とする非一時的コンピュータ可読媒体。
【請求項11】
前記ファイル操作要求を検出することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
前記ファイル操作要求に対応するファイルハンドルから、前記ファイル操作要求が書き込み操作に対応するかどうかを決定することと、
前記ファイル操作要求が前記書き込み操作に対応すると決定することに応答して、前記ファイル操作要求をインターセプトすることと
を行わせる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ可読媒体。
【請求項12】
前記ファイル操作要求をインターセプトすることを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
フィルタマネージャによって、ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されているかどうかを決定することと、
ファイル操作要求をインターセプトするために前記ミニフィルタドライバが登録されていると決定することに応答して、前記フィルタマネージャによって、前記ファイル操作要求を前記ミニフィルタドライバに対して送信することと
を行わせる命令をさらに含むことを特徴とする請求項11に記載の非一時的コンピュータ可読媒体。
【請求項13】
前記書き込みバッファが暗号化されたデータを記憶しているかを検出することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数を行って、前記書き込みバッファ内のデータが暗号化されているかどうかを決定することを行わせる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ可読媒体。
【請求項14】
前記マルウェア修正アクションを実行することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
前記検出されたファイル操作要求に関連付けられた書き込み操作を終了することと、
前記検出されたファイル操作要求をメモリから削除することによって、前記検出されたファイル操作要求を終了することと、
前記識別されたプロセスに関連付けられたディスクファイルイメージを隔離することと
を行わせる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記少なくとも1つのプロセッサによって実行されたとき、前記少なくとも1つのプロセッサに、
プログラムの前記ホワイトリスト上において前記識別されたプロセスを特定することに応答して、ミニフィルタドライバによって、前記検出されたファイル操作要求を無視することを行わせる命令をさらに記憶することを特徴とする請求項10に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記識別されたプロセスが信頼されたプロセスであるかどうかを決定することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、 プログラムの前記ブラックリストまたはプログラムの前記ホワイトリスト上において前記プロセスを特定しないことに応答して、前記クライアントデバイスに前記識別されたプロセスを許可することを求める要求を送信することを行わせる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記識別されたプロセスが信頼されたプロセスではないと決定することを前記少なくとも1つのプロセッサに行わせる前記命令は、前記少なくとも1つのプロセッサに、
前記クライアントデバイスに前記識別されたプロセスを許可することを求める前記要求を送信することに応答して、前記識別されたプロセスが許可されないというメッセージを前記クライアントデバイスから受信することを行わせる命令をさらに含むことを特徴とする請求項16に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記少なくとも1つのプロセッサによって実行されたとき、前記少なくとも1つのプロセッサに、
前記識別されたプロセスをプログラムの前記ブラックリストに追加することを行わせる命令をさらに記憶することを特徴とする請求項17に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にマルウェアの検出に関し、特に、カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護に関する。
【背景技術】
【0002】
関連出願の相互参照
本出願は、参照によりその全体が組み込まれている、2017年5月30日に出願された米国特許仮出願第62/512,659号の利益を主張するものである。
【0003】
マルウェア(malware)とは、所有者の認識または許可なしにコンピュータ、タブレット、またはデバイスに感染する可能性がある悪意のあるコンピュータソフトウェアプログラムを指す。ステガノグラフィは、デバイスおよびネットワークにマルウェアを感染させる1つのそのような方法である。
【0004】
マルウェアは、ウイルス、ワーム、トロイの木馬、ボットネット、スパイウェア、およびアドウェアを含むことがある。ウイルスは、実行可能プログラムにアタッチした後にそれら自体を複製する。ワームはネットワークにわたってそれら自体を複製して、多数のデバイスに急速に感染する。トロイの木馬はそれら自体を正当なソフトウェアとして偽装し、ユーザの識別情報、パスワード、および他の個人情報を盗もうとする。ボットネットは、リモート制御される感染されたデバイスのグループである。個々のボット(デバイス)が、スパム電子メールを送るかまたはサービス妨害攻撃に参加するように指示されることが可能である。スパイウェアは、キーストローク、クレジットカード番号、および他の個人情報を捕捉するように設計されている。アドウェアは、デバイスに感染し、必要とされない広告をダウンロードし表示する。
【0005】
従来のマルウェア防止ツールは、署名を検出して、マルウェアを隔離および修復し、または除去しようとすることがある。しかしながら、マルウェアプログラムの数は劇的に増加しており、署名は通常、知られているマルウェアのみについて作成される。したがって、従来の署名ベースの手法は通常、未知のマルウェアを識別または検出することができない。
【0006】
さらに、ルールを使用した実行時ヒューリスティックスキャンに基づく従来の手法は、多くの誤検出および検出漏れを発生することがある。仮想マシンにおいて疑わしいファイルを実行し悪意のある挙動を観察するサンドボックス化に基づく他の従来の手法では、サンドボックス(仮想マシンまたはコンテナ)内に自身があるかどうかを決定して検出を回避できるマルウェアを検出することが通常は不可能である。最後に、静的コード分析に基づく従来の手法もマルウェアを確実に検出することができない。
【図面の簡単な説明】
【0007】
開示される実施形態は、詳細な説明、添付の特許請求の範囲、および添付の図(または図面)からより容易に明らかになる利点および特徴を有している。図の簡単な紹介は以下の通りである。
【0008】
図1】実施形態に従う、カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護のためのシステムの例示的なブロック図である。
図2】実施形態に従う、プラットフォーム上のユーザモードにおいて実行されているアプリケーションに関するマルウェアのリアルタイム検出およびマルウェアからの保護の例示的なブロック図である。
図3】実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のための例示的なフィルタマネージャおよびミニフィルタドライバを示す図である。
図4】実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のためのボリュームシャドウサービス(VSS)の例示的なコンポーネントを示す図である。
図5】実施形態に従う、モンテカルロパイ近似に関する例示的なデータ点を示す図である。
図6】実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のための例示的なプロセスを示す図である。
図7】実施形態に従う、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための例示的なポータブル実行可能(PE)ファイルのコンポーネントを示す図である。
図8】実施形態に従う、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための例示的なプロセスを示す図である。
図9】マシン可読媒体から命令を読み取ってそれらをプロセッサまたはコントローラにおいて実行することができる例示的なマシンのコンポーネントを示すブロック図である。
【発明を実施するための形態】
【0009】
図面(図)および以下の説明は、単に例示のための好ましい実施形態に関する。以下の議論から、本明細書に開示される構造および方法の代替的実施形態が、特許請求の範囲の原理から逸脱することなく採用されてよい実施可能な代替形態として容易に認識されることに留意されたい。
【0010】
ここで、いくつかの実施形態が詳細に参照され、それらの例が添付の図面に示される。実現可能な限り、同様または類似の参照番号が図面において使用されてよく、同様または類似の機能性を示してよいことに留意されたい。図は、単に例示を目的として、開示されるシステム(または方法)の実施形態を示す。以下の説明から、本明細書に示される構造および方法の代替的実施形態が、本明細書に説明される原理から逸脱することなく採用されてよいことは当業者には容易に理解される。
【0011】
序論
従来のセキュリティ製品は、疑わしいアプリケーションプログラムインターフェース(API)コールおよびアクションを探すことによって未知のマルウェアからデバイスを保護するために、挙動分析および実行時ヒューリスティックスを含んでよい。マルウェアは、コンピュータおよびコンピュータシステムを損傷させまたは無効にすることが意図されたソフトウェアを指す。マルウェアは、ポリモーフィックまたはメタモーフィックなマルウェアを作成することによってセキュリティ製品による検出を回避する洗練されたプログラムが含むことがある。ポリモーフィックマルウェアは、異なる実行で新しい「署名」を生成する変異エンジンを使用して破壊的なコードを暗号化することによって変異する。メタモーフィックマルウェアは、実行可能コードを動的に再構築して悪意を分かりにくくする。検出を回避するために、マルウェアは、プッシュ、ポップ、NOP、およびジャンプ命令などの冗長なプロセッサオペコードを追加して、実行ファイルの署名を変更するが、機能性に影響しないことが可能である。
【0012】
ランサムウェアは、急成長しているマルウェアのカテゴリである。ランサムウェアは、ユーザのデバイスまたは個人データに対するアクセスを回復するために「身代金を支払う」ようにユーザに強制することを目的に、コンピュータ、タブレット、デバイス、またはスマートフォンに感染する種類のマルウェアである。いくつかの種類のランサムウェアは、ユーザデバイスまたはシステムをロックして、それらのデバイスまたはシステムにユーザがアクセスするのを防止することがある。他の種類のランサムウェアは、暗号化ソフトウェアを使用して、ワープロ文書、写真、音楽、ビデオ、電子メールなどのユーザの個人データを暗号化することがある。そのような場合、ユーザは、アクセスを回復するために身代金を支払うことを要求されることがある。ステガノグラフィは、デバイスおよびネットワークにランサムウェアを感染させる1つのそのような方法である。
【0013】
ステガノグラフィは、コンピュータファイル、メッセージ、画像、またはビデオを別のコンピュータファイル、メッセージ、画像、またはビデオ内に隠す手法を指す。デジタルステガノグラフィにおいて、電子通信は、文書ファイル、画像ファイル、プログラム、またはプロトコルなどのトランスポート層内のステガノグラフィ符号化を含むことがある。メディアファイルは、それらのサイズが大きいのでステガノグラフィ送信のために使用されることがある。たとえば、送信者は、無害な画像ファイルから開始し、各百番目のピクセルの色をアルファベットの文字に対応するように調整することがある。
【0014】
ランサムウェアを検出するための従来の方法は、マルウェアファイル署名の検出、実行時ヒューリスティックスキャン、サンドボックス化、静的コード分析などに依拠してよい。しかしながら、マルウェアファイル署名を検出することに基づく従来の方法は、以前に識別されたマルウェアのみを検出することがあり、自己変形するランサムウェアなどの新しい形態のランサムウェアから保護をできないことがある。実行時ヒューリスティックスキャンに基づく従来の方法は、ルールのセットを使用して誤検出および検出漏れを発生することがある。サンドボックス化に基づく従来の方法は、仮想マシンにおける疑わしいファイルを実行し、悪意のある挙動を観察してよい。しかしながら、ランサムウェアは、それがサンドボックス(仮想マシンまたはコンテナ)内にあるかどうかを決定し検出を回避できることがある。静的コード分析に基づく従来の方法は、実行可能コードを逆アセンブルし、解析ツリーを作成して、疑わしいAPIコールを識別しようとしてよい。しかしながら、静的コード分析に基づくそのような従来の方法は、ランサムウェアを確実に検出することができない。
【0015】
「パックされた」マルウェアおよび「隠されたマルウェア」は、従来は検出されず、ローカルデバイスのファイアウォール、ネットワークのファイアウォール、およびアンチウイルスソフトウェアを通過することがある。フィルタリングおよびディープパケット検査、侵入保護システム、アプリケーション認識などの従来のファイアウォール機能がしばしば使用される。しかしながら、従来のファイアウォールは、マルウェアを検出するためにポート割り当てに依拠する。したがって、実際のアプリケーション種類とアプリケーションについてのファイアウォールの仮定との間の関連付けが弱い。さらに、ディープパケット検査は、強力な暗号化のために終端点がファイアウォールではなく宛先であるときは価値が限られる。
【0016】
構成概要
マルウェアのリアルタイム検出およびマルウェアからの保護のためのシステム、方法、および/またはコンピュータプログラム製品(たとえば、1つまたは複数の処理ユニットによって実行可能な命令を記憶するコンピュータ可読記憶媒体)が、例示的な実施形態によって開示される。コンピュータにおけるプロセッサは一般に、少なくとも2つの異なるモード、すなわちユーザモードとカーネルモードにおいて実行してよい。典型的には、アプリケーションはユーザモードにおいて実行してよく、コアオペレーティングシステムコンポーネントはカーネルモードにおいて実行してよい。
【0017】
一実施形態において、ユーザモードにおいて実行されているプロセスによって開始されたファイル操作要求が検出される。検出されたファイル操作要求に関連付けられたファイルバッファに関してマルウェア検出分析が行われて、マルウェアの存在を示す挙動を検出する。マルウェアの存在を示す挙動を検出することに応答して、検出されたファイル操作要求を開始することを担当するプロセスが識別される。プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、識別されたプロセスの検索が行われて、識別されたプロセスが信頼されたプロセスであるかどうかを決定する。識別されたプロセスが信頼されたプロセスではないと決定することに応答して、識別されたプロセスに対してマルウェア修正アクションが実行される。マルウェアを記述する情報がクライアントデバイスに送信される。
【0018】
開示されている実施形態は、悪意のある攻撃およびデータ損失からデバイスおよびネットワークを保護するために、セキュリティ脅威の統合されたリアルタイム検出を行う。静的分析が行われて、テストの配列を使用して、マルウェアに感染された可能性のあるファイルを求めて検索し、疑わしいプログラム命令を識別して、それがマルウェアであるかどうかを決めてよい。検出されると、バイトの一意のシーケンスが、実行を必要とせずに悪意のあるソフトウェアを識別し、それを正当なプログラムから区別する。動的分析は、実行中にアプリケーションの挙動を監視して、それがマルウェアを含むかどうかを決定する。マルウェアを直接識別することに加えて、システムの状態がリアルタイムにおいて監視される。
【0019】
現在のマルウェアはポリモーフィックまたはメタモーフィックである場合があるので、マルウェアはファイル署名を使用する従来のアンチウイルスソフトウェアによる検出を回避することがある。一実施形態では、一意の状態ベースのメカニズムを使用して、許可なしにファイルが暗号化されているかどうかを検出する。担当するプロセスが識別され、他のデバイスから隔離される。これにより、マルウェアを事前に知ることを不要にする。データの状態の変化がマルウェアの識別を迅速かつ確実にする。統合されたステガノグラフィ検出が、デバイス上の実行から隠されたデータおよびマルウェアの存在を識別する。システムは、ファイアウォール上でインラインを実行して、隠されたデータを有するマルウェアおよびファイルがネットワークに入るのを防止する。それは、一緒に、静的分析、動的分析、システム状態変化の強みを活用して、より少ない誤検知およびより少ない検出漏れでマルウェアをより正確に検出する統合されたエンドツーエンドシステムとして働く。
【0020】
さらに、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のためのシステム、方法、および/またはコンピュータプログラム製品(たとえば、1つまたは複数の処理ユニットによって実行可能な命令を記憶するコンピュータ可読記憶媒体)が、例示的な実施形態によって開示される。ファイアウォール、オペレーティングシステム、または電子メールシステムを介するファイルの送信が検出される。ファイルのサイズが決定される。ファイルシステムからファイルの記憶されたファイルサイズが取り出される。ファイルの決定されたサイズは、ファイルの記憶されたファイルサイズと比較される。ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、ファイルについてステガノグラフィ検出分析が実行される。ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、ステガノグラフィ修正アクションが実行される。ステガノグラフィを記述する情報がクライアントデバイスに送信される。
【0021】
開示されている実施形態は、許可されていないデータ暗号化、データ流出、ルートキットインストール、およびステガノグラフィを識別するために分析の組み合わせを統合することによって、既知と未知の両方のマルウェアおよびセキュリティ脅威から多くの種類のデバイスを保護することができる。このシステムおよび方法は、既存の技法と比較して、より少ない計算オーバヘッドおよびストレージ使用率で、より速くかつより正確にマルウェアを検出、隔離、分析、および除去するためのエンドツーエンド解決策をもたらす。ファイルシステムの状態変化のリアルタイム分析は、ユーザのデータが暗号化または削除される前にリアルタイム保護を可能にする。動的API監視ヒューリスティックス、動的コード分析、トリップワイヤおよびハニーポットの作成は、ほぼリアルタイムで疑わしい挙動を発見する助けとなる。
【0022】
開示されている実施形態は、システム構成(MFT、MBR、レジストリ、およびWindowsタスクマネージャ)の改ざんを積極的にチェックし、悪意のある変更を修正して、ユーザがロックアウトされていないことを保証する。MFTは、マスタファイルテーブルを指す。MBRは、マスタブートレコードを指す。Windowsレジストリは、オペレーティングシステムについて、およびアプリケーション、デバイスドライバ、セキュリティアカウントマネージャ(SAM)に関する情報についての低レベル構成設定を記憶し、システムパフォーマンスカウンタにアクセスする。タスクマネージャは、プログラムの実行をスケジューリングする。集中化された詳細なロギングシステムは、システム管理者がそれらの環境におけるすべてのデバイスを管理し、様々なデータ分析の基盤を提供することを可能にする。
【0023】
開示されている実施形態の利益および利点は、ランサムウェアが存在する場所の知識なしにシステムを継続的に洗浄することを含む。このアプローチの一部として、方法は、サーバ、たとえばDNSサーバをデコミッションしてよい。結果は、ランサムウェアのエビデンスである状態変化の隔離および検出アプローチである。ポリモーフィックランサムウェアは、コンテナ内のペイロードを暗号化し、従来の方法によって検出不可能である署名を変更することができる。メタモーフィックランサムウェアは、意味のないマシン命令をコードに挿入することによってその署名を変更する。知られているマルウェアを検索する代わりに、開示されている実施形態はシステムにおける状態変化を探す。さらなる利点および利益は、マルウェアを識別するためにプログラムのブラックリストを使用する際の簡潔性を含む。したがって、開示されている実施形態は、開示されているシステムおよびその関係付けられたデータベースまたはサードパーティの脅威インテリジェンス/サービスプロバイダがプログラムのブラックリストをコンパイルおよび更新するので、必要なメンテナンスが少ない。
【0024】
したがって、開示されている実施形態は、静的状態分析(ディスクのスキャン)およびリアルタイム分析を行ってよい。マルウェア署名は使用されないが、ファイルが暗号化されたかどうかを検出するために計算が行われる。I/O要求パケット内の読み取りバッファおよび書き込みバッファの両方が使用されてよい。したがって、追加のメモリ割り当てまたは追加の読み取り/書き込み操作が必要とされない。追加のメモリおよび計算を必要とする後処理分析がない。別の実施形態において、開示されている方法およびシステムは、メモリベースの攻撃に対処するために使用されてよく、ファイルは、ディスク上ではなくメモリに記憶される。ファイル割り当てのメモリ内監視が行われ、ディスクに接触しないデータがスキャンされてよい。ファイアウォールとインラインで統合されたデバイス上での統計分析の組み合わせが、ネットワークおよびデバイスのための強力な保護を提供する。
【0025】
マルウェアおよびステガノグラフィ検出および防止のための方法およびシステム
一実施形態において、カーネルモードにおけるマルウェアのリアルタイム検出およびマルウェアからの保護のための方法は、ユーザモードにおいて実行されているプロセスによって開始されたファイル操作要求を検出するステップを含む。検出されたファイル操作要求に関連付けられたファイルバッファに関してマルウェア検出分析が行われて、マルウェアの存在を示す挙動を検出する。マルウェアの存在を示す挙動を検出することに応答して、検出されたファイル操作要求を開始することを担当するプロセスが識別される。プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、識別されたプロセスの検索が行われて、識別されたプロセスが信頼されたプロセスであるかどうかを決定する。識別されたプロセスが信頼されたプロセスではないと決定することに応答して、識別されたプロセスに対してマルウェア修正アクションが実行される。マルウェアを記述する情報がクライアントデバイスに送信される。
【0026】
一実施形態において、ファイル操作要求を検出するステップは、ファイル操作要求に対応するファイルハンドルから、ファイル操作要求が所定の動作に対応するかどうかを決定するステップを含む。ファイル操作要求が所定の動作に対応すると決定することに応答して、ファイル操作要求がインターセプトされる。
【0027】
一実施形態において、ファイル操作要求をインターセプトするステップは、フィルタマネージャによって、ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されているかどうかを決定するステップを含む。ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されていると決定することに応答して、フィルタマネージャは、ファイル操作要求をミニフィルタドライバに送信する。
【0028】
一実施形態において、マルウェア検出分析を行うステップは、モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数を行って、ファイルバッファ内のデータが暗号化されているかどうかを決定するステップを含む。
【0029】
一実施形態において、識別されたプロセスが信頼されたプロセスではないと決定するステップは、プログラムのブラックリスト上において識別されたプロセスを特定するステップをさらに含む。マルウェア修正アクションを実行するステップは、検出されたファイル操作要求に関連付けられた書き込み操作を終了するステップと、検出されたファイル操作要求をメモリから削除することによって、検出されたファイル操作要求を終了するステップと、識別されたプロセスに関連付けられたディスクファイルイメージを隔離するステップとをさらに含む。
【0030】
一実施形態において、プログラムのホワイトリスト上において識別されたプロセスを特定することに応答して、ミニフィルタドライバは、検出されたファイル操作要求を無視する。
【0031】
一実施形態において、識別されたプロセスが信頼されたプロセスであるかどうかを決定するステップは、プログラムのブラックリストまたはプログラムのホワイトリスト上においてプロセスを特定しないことに応答して、識別されたプロセスを許可することを求める要求をクライアントデバイスに送信するステップをさらに含む。
【0032】
一実施形態において、識別されたプロセスが信頼されたプロセスではないと決定するステップは、識別されたプロセスを許可することを求める要求をクライアントデバイスに送信することに応答して、識別されたプロセスが許可されないというメッセージをクライアントデバイスから受信するステップをさらに含む。
【0033】
一実施形態において、識別されたプロセスがプログラムのブラックリストに追加される。
【0034】
一実施形態において、識別されたプロセスが許可されたというメッセージをクライアントデバイスから受信することに応答して、識別されたプロセスがプログラムのホワイトリストに追加される。
【0035】
一実施形態において、非一時的コンピュータ可読媒体が命令を記憶し、命令は、少なくとも1つのプロセッサによって実行されたとき、ユーザモードにおいて実行されているプロセスによって開始されたファイル操作要求を検出することを少なくとも1つのプロセッサに行わせる。検出されたファイル操作要求に関連付けられたファイルバッファに関してマルウェア検出分析が行われて、マルウェアの存在を示す挙動を検出する。マルウェアの存在を示す挙動を検出することに応答して、検出されたファイル操作要求を開始することを担当するプロセスが識別される。プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、識別されたプロセスの検索が行われて、識別されたプロセスが信頼されたプロセスであるかどうかを決定する。識別されたプロセスが信頼されたプロセスではないと決定することに応答して、識別されたプロセスに対してマルウェア修正アクションが実行される。マルウェアを記述する情報がクライアントデバイスに送信される。
【0036】
一実施形態において、ファイル操作要求を検出することを少なくとも1つのプロセッサに行わせる命令は、ファイル操作要求に対応するファイルハンドルから、ファイル操作要求が所定の動作に対応するかどうかを決定することを少なくとも1つのプロセッサに行わせる命令をさらに含む。ファイル操作要求が所定の動作に対応すると決定することに応答して、ファイル操作要求がインターセプトされる。
【0037】
一実施形態において、ファイル操作要求をインターセプトすることを少なくとも1つのプロセッサに行わせる命令は、フィルタマネージャによって、ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されているかどうかを決定することを少なくとも1つのプロセッサに行わせる命令をさらに含む。ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されていると決定することに応答して、フィルタマネージャは、ファイル操作要求をミニフィルタドライバに送信する。
【0038】
一実施形態において、マルウェア検出分析を行うことを少なくとも1つのプロセッサに行わせる命令は、モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数を行って、ファイルバッファ内のデータが暗号化されているかどうかを決定することを少なくとも1つのプロセッサに行わせる命令をさらに含む。
【0039】
一実施形態において、識別されたプロセスが信頼されたプロセスではないと決定することを少なくとも1つのプロセッサに行わせる命令は、プログラムのブラックリスト上において識別されたプロセスを特定することを少なくとも1つのプロセッサに行わせる命令をさらに含む。マルウェア修正アクションを実行することを少なくとも1つのプロセッサに行わせる命令は、検出されたファイル操作要求に関連付けられた書き込み操作を終了することと、検出されたファイル操作要求をメモリから削除することによって、検出されたファイル操作要求を終了することと、識別されたプロセスに関連付けられたディスクファイルイメージを隔離することとを少なくとも1つのプロセッサに行わせる命令をさらに含む。
【0040】
一実施形態において、非一時的コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されたとき、プログラムのホワイトリスト上において識別されたプロセスを特定することに応答して、ミニフィルタドライバによって、検出されたファイル操作要求を無視することを少なくとも1つのプロセッサに行わせる命令をさらに記憶する。
【0041】
一実施形態において、識別されたプロセスが信頼されたプロセスであるかどうかを決定することを少なくとも1つのプロセッサに行わせる命令は、プログラムのブラックリストまたはプログラムのホワイトリスト上においてプロセスを特定しないことに応答して、識別されたプロセスを許可することを求める要求をクライアントデバイスに送信することを少なくとも1つのプロセッサに行わせる命令をさらに含む。
【0042】
一実施形態において、識別されたプロセスが信頼されたプロセスではないと決定することを少なくとも1つのプロセッサに行わせる命令は、識別されたプロセスを許可することを求める要求をクライアントデバイスに送信することに応答して、識別されたプロセスが許可されないというメッセージをクライアントデバイスから受信することを少なくとも1つのプロセッサに行わせる命令をさらに含む。
【0043】
一実施形態において、非一時的コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されたとき、識別されたプロセスをプログラムのブラックリストに追加することを少なくとも1つのプロセッサに行わせる命令をさらに記憶する。
【0044】
一実施形態において、非一時的コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されたとき、識別されたプロセスが許可されたというメッセージをクライアントデバイスから受信することに応答して、識別されたプロセスをプログラムのホワイトリストに追加することを少なくとも1つのプロセッサに行わせる命令をさらに記憶する。
【0045】
一実施形態において、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための方法が、ファイアウォール、オペレーティングシステム、または電子メールシステムを介して、ファイルの送信を検出するステップを含む。ファイルのサイズが決定される。ファイルシステムからファイルの記憶されたファイルサイズが取り出される。ファイルの決定されたサイズは、ファイルの記憶されたファイルサイズと比較される。ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、ファイルに関してステガノグラフィ検出分析が実行される。ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、ステガノグラフィ修正アクションが実行され、ステガノグラフィを記述する情報がクライアントデバイスに送信される。
【0046】
一実施形態において、ファイルのサイズを決定するステップは、ファイルのセクションヘッダに対するポインタを取得するステップを含み、セクションヘッダはファイルの複数のセクションに関連付けられている。ファイルの複数のセクションの各セクションについて、セクションのサイズが決定される。ファイルの複数のセクションの各セクションのサイズが合計されて、ファイルのサイズを決定する。
【0047】
一実施形態において、ファイルのセクションヘッダに対するポインタを取得するステップは、ファイルのファイル名またはファイルのパスを使用してファイルを開くステップを含む。ファイルのヘッダが読み取られる。ヘッダからマジックナンバーが取り出される。マジックナンバーが検証されて、ファイルのセクションヘッダに対するポインタを取得する。
【0048】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行するステップは、ファイルにおける付加されたペイロードを識別するステップを含む。付加されたペイロードは分析されて、付加されたペイロードのファイルフォーマットを決定する。付加されたペイロードのファイルフォーマットに基づいて、ステガノグラフィ検出分析が実行される。
【0049】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行するステップは、ファイルにおける付加されたペイロードを識別するステップを含む。モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数が行われて、付加されたペイロード内のデータが暗号化されているかどうかを決定する。
【0050】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行するステップは、ファイルにおける付加されたペイロードを識別するステップと、付加されたペイロード内の許可されていないデータの存在を識別するステップとを含む。
【0051】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行するステップは、ファイルにおける付加されたペイロードを識別するステップと、付加されたペイロード内のアセンブリレベル命令またはマシンレベル命令の存在を識別するステップとを含む。
【0052】
一実施形態において、ステガノグラフィ修正アクションを実行するステップは、ファイルの処理および送信を終了するステップと、ファイルを隔離するステップとを含む。
【0053】
一実施形態において、非一時的コンピュータ可読媒体が命令を含み、命令は、少なくとも1つのプロセッサによって実行されたとき、ファイアウォール、オペレーティングシステム、または電子メールシステムを介して、ファイルの送信を検出することを少なくとも1つのプロセッサに行わせる。ファイルのサイズが決定される。ファイルシステムからファイルの記憶されたファイルサイズが取り出される。ファイルの決定されたサイズは、ファイルの記憶されたファイルサイズと比較される。ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、ファイルに関してステガノグラフィ検出分析が実行される。ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、ステガノグラフィ修正アクションが実行され、ステガノグラフィを記述する情報がクライアントデバイスに送信される。
【0054】
一実施形態において、ファイルのサイズを決定することを少なくとも1つのプロセッサに行わせる命令は、ファイルのセクションヘッダに対するポインタを取得することを少なくとも1つのプロセッサに行わせる命令を含み、セクションヘッダはファイルの複数のセクションに関連付けられている。ファイルの複数のセクションの各セクションについて、セクションのサイズが決定される。ファイルの複数のセクションの各セクションのサイズが合計されて、ファイルのサイズを決定する。
【0055】
一実施形態において、ファイルのセクションヘッダに対するポインタを取得することを少なくとも1つのプロセッサに行わせる命令は、ファイルのファイル名またはファイルのパスを使用してファイルを開くことを少なくとも1つのプロセッサに行わせる命令を含む。ファイルのヘッダが読み取られる。ヘッダからマジックナンバーが取り出される。マジックナンバーは検証されて、ファイルのセクションヘッダに対するポインタを取得する。
【0056】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行することを少なくとも1つのプロセッサに行わせる命令は、ファイルにおける付加されたペイロードを識別することを少なくとも1つのプロセッサに行わせる命令を含む。付加されたペイロードは分析されて、付加されたペイロードのファイルフォーマットを決定する。付加されたペイロードのファイルフォーマットに基づいて、ステガノグラフィ検出分析が実行される。
【0057】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行することを少なくとも1つのプロセッサに行わせる命令は、ファイルにおける付加されたペイロードを識別することを少なくとも1つのプロセッサに行わせる命令を含む。モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数が行われて、付加されたペイロード内のデータが暗号化されているかどうかを決定する。
【0058】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行することを少なくとも1つのプロセッサに行わせる命令は、ファイルにおける付加されたペイロードを識別することと、付加されたペイロード内の許可されていないデータの存在を識別することとを少なくとも1つのプロセッサに行わせる命令を含む。
【0059】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行することを少なくとも1つのプロセッサに行わせる命令は、ファイルにおける付加されたペイロードを識別することと、付加されたペイロード内のアセンブリレベル命令またはマシンレベル命令の存在を識別することとを少なくとも1つのプロセッサに行わせる命令を含む。
【0060】
一実施形態において、ステガノグラフィ修正アクションを実行することを少なくとも1つのプロセッサに行わせる命令は、ファイルの処理および送信を終了することと、ファイルを隔離することとを少なくとも1つのプロセッサに行わせる命令を含む。
【0061】
一実施形態において、コンピュータシステムが少なくとも1つのコンピュータプロセッサを備える。非一時的コンピュータ可読媒体が命令を記憶し、命令は、少なくとも1つのコンピュータプロセッサによって実行されたとき、ファイアウォール、オペレーティングシステム、または電子メールシステムを介して、ファイルの送信を検出することを少なくとも1つのプロセッサに行わせる。ファイルのサイズが決定される。ファイルシステムからファイルの記憶されたファイルサイズが決定される。ファイルの決定されたサイズは、ファイルの記憶されたファイルサイズと比較される。ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、ファイルに関してステガノグラフィ検出分析が実行される。ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、ステガノグラフィ修正アクションが実行される。ステガノグラフィを記述する情報がクライアントデバイスに送信される。
【0062】
一実施形態において、ファイルのサイズを決定することを少なくとも1つのコンピュータプロセッサに行わせる命令は、ファイルのセクションヘッダに対するポインタを取得することを少なくとも1つのコンピュータプロセッサに行わせる命令を含み、セクションヘッダはファイルの複数のセクションに関連付けられている。ファイルの複数のセクションの各セクションについて、セクションのサイズが決定される。ファイルの複数のセクションの各セクションのサイズが合計されて、ファイルのサイズを決定する。
【0063】
一実施形態において、ファイルのセクションヘッダに対するポインタを取得することを少なくとも1つのコンピュータプロセッサに行わせる命令は、ファイルのファイル名またはファイルのパスを使用してファイルを開くことを少なくとも1つのコンピュータプロセッサに行わせる命令を含む。ファイルのヘッダが読み取られる。ヘッダからマジックナンバーが取り出される。マジックナンバーは検証されて、ファイルのセクションヘッダに対するポインタを取得する。
【0064】
一実施形態において、ファイルに関してステガノグラフィ検出分析を実行することを少なくとも1つのコンピュータプロセッサに行わせる命令は、ファイルにおける付加されたペイロードを識別することを少なくとも1つのコンピュータプロセッサに行わせる命令を含む。付加されたペイロードは分析されて、付加されたペイロードのファイルフォーマットを決定する。付加されたペイロードのファイルフォーマットに基づいて、ステガノグラフィ検出分析が実行される。
【0065】
カーネルモードにおけるマルウェアおよびステガノグラフのリアルタイム検出ならびにマルウェアおよびステガノグラフからの保護
図1は、実施形態に従う、カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護のためのシステムの例示的なブロック図を示す。システムは、管理ノード100、クラウドホスト105、およびセキュリティマネージャ115を含む。他の実施形態において、システムは、本明細書に説明されるものよりも、追加のまたは少ないコンポーネントを備える。同様に、機能は、ここで説明されるのと異なる方式でコンポーネントおよび/または異なるエンティティの間で分散されることが可能である。
【0066】
管理ノード100は、カーネルモードにおいてマルウェアおよびステガノグラフィから保護されるコンピュータシステムである。管理ノード100は、(たとえば、Windows、MacOS、もしくは別のオペレーティングシステムを実行している)コンピュータ、データセンタ、メインフレーム、またはストレージおよび計算能力を有する他の任意のデバイスであってよい。一実施形態において、管理ノード100は、I/Oマネージャ120、Windowsサービスマネージャ170、レジストリ175、静的分析モジュール180、ストレージデバイス155、カーネル165、およびハードウェア抽象化層160を含む。他の実施形態において、管理ノード100は、本明細書に説明されるものよりも、追加のまたは少ないコンポーネントを備える。同様に、機能は、ここで説明されるのと異なる方式でコンポーネントおよび/または異なるエンティティの間で分散されることが可能である。
【0067】
一実施形態において、管理ノード100はWindowsコンピュータである。カーネルドライバ130は、I/Oマネージャ120内のフィルタマネージャ125に動的にインストールされてよい。この実施形態は、Windowsプラットフォーム上でファイルシステムイベントをインターセプトするための高性能メカニズムを提供する。他の実施形態において、管理ノード100は、特定のデバイスの検出システム能力を利用する。たとえば、この例におけるストレージデバイス155は、NTFSファイルシステム、FAT16、またはFAT32用にフォーマットされたボリュームであってよい。
【0068】
管理ノード100は、外界との間で入力および出力(I/O)を提供する1つまたは複数のデバイスを含んでよい。そのようなデバイスは、キーボード、マウス、オーディオコントローラ、ビデオコントローラ、ディスクドライブ、およびネットワークポートなどを含んでよい。一実施形態において、デバイスドライバが、そのようなデバイスと管理ノード100上のオペレーティングシステムとの間のソフトウェア接続を提供してよい。カーネルモードI/Oマネージャ120は、アプリケーションとデバイスドライバによって提供されるインターフェースとの間の通信を管理する。デバイスはオペレーティングシステムと一致しなくてよい速度で動作することがあるため、オペレーティングシステムとデバイスドライバとの間の通信は、主にI/O要求パケットを通じて行われる。これらのパケットは、ネットワークパケットまたはWindowsメッセージパケットと同様であってよい。それらは、オペレーティングシステムから特定のドライバへ渡され、また1つのドライバから別のドライバへ渡される。
【0069】
一実施形態において、I/Oマネージャ120は、管理ノード100によって受信されたファイル操作要求(たとえば、読み取り、書き込み、ファイルオープンなど)を検出する。フィルタマネージャ125は、ファイル操作要求に対応するファイルハンドルから、ファイル操作要求が所定の動作に対応するかどうかを決定してよい。ファイルハンドルは、ファイルが開かれるときにオペレーティングシステムが一時的にファイルに割り当てる番号または識別子である。オペレーティングシステムは、ファイルをアクセスするときに内部でファイルハンドルを使用する。フィルタマネージャ125が、ファイル操作要求が所定の動作に対応すると決定した場合、フィルタマネージャ125は、マルウェア検出のためにファイル操作要求をインターセプトする。マルウェアの存在を示す挙動が見つけられた場合、I/Oマネージャ120は、検出されたファイル操作要求の開始を担当するユーザモードプロセスを識別してよい。
【0070】
一実施形態において、フィルタマネージャ125は、Windowsと共にインストールされる。それは、ミニフィルタドライバがロードされたときのみにアクティブにされる。ミニフィルタドライバは、ファイルシステム操作をフィルタリングするドライバを指す。ミニフィルタドライバは、I/Oマネージャ120とベースファイルシステムとの間に配置されてよい。フィルタマネージャ125は、ターゲットボリュームに関するファイルシステムスタックにアタッチしてよい。ミニフィルタドライバは、ミニフィルタドライバがフィルタリングすることを選択したI/O操作に関してフィルタマネージャ125に登録することによってファイルシステムスタックに間接的にアタッチしてよい。
一実施形態において、ファイル操作要求をインターセプトするために、フィルタマネージャ125は、ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されているかどうかを決定する。ファイル操作要求をインターセプトするためにミニフィルタドライバが登録されていると決定することに応答して、フィルタマネージャ125は、ファイル操作要求をミニフィルタドライバにて送信する。ファイル操作要求の生成を担当するユーザプロセッサがI/Oマネージャ120によって識別されていると、フィルタマネージャ125は、プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、識別されたプロセスの検索を行って、識別されたプロセスが信頼されたプロセスであるかどうかを決定してよい。
【0071】
カーネルドライバ130は、I/O、プラグアンドプレイメモリ、プロセスおよびスレッド、ならびにセキュリティなどを管理するカーネルモードオペレーティングシステムコンポーネントの一部としてカーネルモードにおいて実行される。オペレーティングシステムそれ自体と同様に、カーネルドライバ130は、必要とされる機能性の明確に定義されたセットを有する個別のモジュールコンポーネントとして実装されてよい。カーネルドライバ130は、システム定義された標準ドライバルーチンのセットを供給してもよい。カーネルドライバ130は、実行の前および後にI/O要求パケットをインターセプトしてよい。I/O要求パケットは、ドライバによって互いおよびオペレーティングシステムと通信するために使用されるカーネルモード構造である。(図3に関して示され以下に説明される)ミニフィルタカーネルドライバは、ファイル操作のためのルーチンをサポートする。したがって、カーネルドライバ130は、ファイルオープン、読み取り、書き込み、クローズ、および他の操作を受け取りおよび処理するための高性能メカニズムである。一実施形態において、カーネルドライバ130は、カーネルモード読み取りおよび書き込みバッファにアクセスして、プロセスが要求しているデータに対する迅速な統計分析を行う。
【0072】
Windowsサービスマネージャ170は、Windowsサービスに関係付けられた共通のタスクを単純化するために使用されてよい。Windowsサービスは、管理ノード100上でバックグラウンドにおいて動作する(デーモンに類似する)コンピュータプログラムである。Windowsサービスは、オペレーティングシステムが開始されバックグラウンドにおいて実行されるときに開始するように構成されてよく、それは、手動でまたはイベントによって開始されてよい。Windowsサービスマネージャ170は、Windowsを再起動することなくサービス(Win32とレガシドライバの両方)を作成し、既存のサービスを削除し、サービス構成を変更することができる。Windowsサービスマネージャ170は、GUIとコマンドラインモードの両方を有してよい。
【0073】
レジストリ175は、オペレーティングシステムとレジストリ175を使用するアプリケーションとに関する低レベル設定を記憶する階層データストアである。カーネル165、デバイスドライバ、サービス、およびユーザインターフェースはすべて、レジストリ175を使用することができる。したがって、レジストリ175は、プログラムおよびハードウェア抽象化層160に関する情報、設定、オプション、および他の値を含む。プログラムがインストールされたとき、プログラムの場所、そのバージョン、およびプログラムの開始の仕方などの設定を含む新しいサブキーがすべてレジストリ175に追加される。レジストリ175は、マルウェアによってリブート後にそれらの実行をスケジューリングするために使用されるキーを含む可能性がある。
【0074】
一実施形態において、静的分析モジュール180は、プログラムおよびカーネルモードドライバコードにおけるコーディングエラーを検出するコンパイル時静的検証ツールであってよい。Windowsサービスは、カーネルドライバ130の状態を監視してよく、レジストリキーおよび値を定期的に検証すること、隠されたプロセスを検索すること、およびシステム全体の静的スキャンを行うことなどのプロアクティブなマルウェア対策タスクを行ってよい。静的分析モジュール180は、すべてのファイルに関して分析を行うシステム全体のスキャンを管理してよい。これは、暗号化を検出すること、ステガノグラフィを識別すること、コンピュータ「ロックアウト」から保護すること、および改ざんのエビデンスに関するマスタファイルテーブル(NTFS MFT)およびマスタブートレコード(MBR)の状態を監視することを含むが、これらに限定されない。また、静的分析モジュール180は、Windows APIを使用して、許可されていないプロセスから(図4に関して示され以下に説明される)ボリュームシャドウコピーサービス(VSS)が無効にされているかどうかを決定してよい。実施形態において、未知のプロセスがVSSを改ざんしている場合、静的分析モジュール180は、未知のプロセスがマルウェアであると検出してよい。そして、静的分析モジュール180は、管理ツールを介して誤検出を回避するために未知のプロセスがシステムプロセスであるかどうかを決定してよい。
【0075】
ストレージデバイス155は、管理ノード100上のデータおよびアプリケーションを記憶する管理ノード100のコンポーネントである。ストレージデバイス155は、RAM、キャッシュ、およびハードディスク、ならびに場合によっては光ディスクドライブおよび外部接続されたUSBドライブを含んでよい。ストレージデバイス155は、データがどのように記憶され取り出されるかを制御するファイルシステムのためにフォーマットされる。ファイルシステムは、NTFSファイルシステム、FAT16、FAT32などのいずれも含んでよい。NTFSファイルシステムは、Windows NTファミリのファイルシステムである。ファイルアロケーションテーブル(FAT)は、コンピュータファイルシステムアーキテクチャであり、業界標準ファイルシステムのファミリである。FATのファイルシステム変形例は、FAT16およびFAT32である。
【0076】
カーネル165は、管理ノード100に対する制御を有する、管理ノード100のオペレーティングシステムのコアであるコンピュータプログラムである。カーネル165は通常、起動時に(たとえば、ブートローダの後に)ロードされる。カーネル165は、起動の残り部分およびソフトウェアからの入出力要求を処理して、それらを管理ノード100のプロセッサのためのデータ処理命令に変換する。カーネル165はまた、メモリ、ならびにキーボード、モニタ、プリンタ、およびスピーカなどの周辺機器を取り扱う。
【0077】
ハードウェア抽象化層160は、管理ノード100のオペレーティングシステムが、詳細なハードウェアレベルでなくより一般的または抽象的レベルでハードウェアデバイス(たとえば、図3を参照して以下に説明されるプロセッサ310)と対話することを可能にする、プログラミングの層である。ハードウェア抽象化は、プラットフォーム固有の詳細をエミュレートするソフトウェアルーチンであり、ハードウェアリソースに対する直接アクセスをプログラムに与える。ハードウェア抽象化層160を使用して、デバイス非依存の高性能アプリケーションが、ハードウェアに標準オペレーティングシステムコールを発行してよい。たとえば、Windows2000は、ハードウェア抽象化層を含むいくつかのオペレーティングシステムのうちの1つである。
【0078】
クラウドホスト105は、物理ウェブサーバの広範な基礎のネットワークからコンピューティングリソースを引き出す仮想サーバ上のホスティングを提供する。一実施形態において、クラウドホスト105は、クラウドベンダから仮想ハードウェア、ネットワーク、ストレージ、および複合ソリューションを使用してよい。クラウドホスティングは仮想化を通じて有効にされてよく、それにより、インフラストラクチャまたはデータセンタのコンピューティング容量全体が複数のユーザまたは管理ノードへ同時に分散され提供される。たとえば、物理サーバが仮想化および統合されて、いくつかのクラウドサーバをホストし、すべてがプロセッサ、メモリ、ストレージ、ネットワーク、および他のリソースを共有してよい。クラウドホスト105は、操作データに関して、ナイーブベイズ分類、線形回帰、ロジスティック回帰、およびビジネスインテリジェンス分析などの機械学習アルゴリズムを実行してよい。この情報は、マルウェア攻撃の範囲、感染されたデバイスを特定し、伝播を予測および防止するめに使用されることが可能である。
【0079】
セキュリティマネージャ115は、管理ノード100の企業規模のビューおよびそのポリシを提供する。それは、デバイス、仮想マシン、およびコンテナを作成、管理、配置、および監視するために使用される。セキュリティマネージャ115は、オンプレミス分析を行ってもよい。一実施形態において、特定のファイル操作要求の開始を担当する識別されたプロセスは、信頼されたプロセスではないと決定されてよい。セキュリティマネージャ115は、識別されたプロセスに対してマルウェア修復アクションを実行するために、管理ノード100にてメッセージを送信してよい。管理ノード100は、マルウェアを記述する情報をクライアントデバイスに送信してもよい。
【0080】
クライアントデバイスは、デジタルコンテンツを消費すること、ソフトウェアアプリケーションを実行すること、ネットワーク110上で管理ノード100にホストされまたは他の形式でそれと相互作用するウェブサイトを閲覧すること、およびファイルをダウンロードすることなどの機能を実行するために、ユーザによって使用される電子デバイスである。たとえば、クライアントデバイスは、スマートフォンもしくはタブレット、ノートブック、またはデスクトップコンピュータであってよい。さらに、クライアントデバイスは、家庭用電気製品のようなモノのインターネットに接続されたデバイス、またはさらに別のウェブサーバであってよい。クライアントデバイスは、表示デバイスを含んでよく、ユーザは、クライアントデバイスに記憶されまたは管理ノード100からダウンロードされたデジタルコンテンツを、表示デバイスで見てよい。さらに、クライアントデバイスは、物理的および/または画面上ボタンなどのユーザインターフェース(UI)を含んでよく、ユーザは、ユーザインターフェースを用いて対話して、デジタルコンテンツを消費すること、デジタルコンテンツを取得すること、およびデジタルコンテンツを送信することなどの機能を実行してよい。
【0081】
一実施形態において、セキュリティマネージャ115は、マルウェア修正アクションを実行するために、信号またはメッセージを管理ノード100に送信してよい。マルウェア修正アクションは、検出されたファイル操作要求に関連付けられた書き込み操作を終了することを含んでよい。マルウェア修正アクションは、検出されたファイル操作要求をメモリから削除することによって、検出されたファイル操作要求を終了することを含んでよい。マルウェア修正アクションは、識別されたプロセスに関連付けられたディスクファイルイメージを隔離することを含んでよい。ディスクファイルイメージは、ディスク全体のすべてのコンテンツおよび構造を記憶するファイルである。ディスクは、光ディスク、ハードディスクドライブなどであってよい。ディスクファイルイメージは、ディスクボリュームまたは物理ディスクドライブ全体の正確なコピーであってよい。ディスクファイルイメージは、そのソースのすべてのプロパティ、すなわち、ファイル、フォルダ、プロパティ、ディスク名などを保持してよい。
【0082】
一実施形態において、セキュリティマネージャ115は、ステガノグラフィ修正アクションを実行するために、信号またはメッセージを管理ノード100に送信してよい。ステガノグラフィ修正アクションは、ファイアウォールを通過しようとしているファイルの処理および送信を終了することを含んでよい。ステガノグラフィ修正アクションは、ファイルを隔離することを含んでよい。
【0083】
ファイアウォール135は、セキュリティルールに基づいて着信および発信のネットワークトラフィックを監視および制御するネットワークセキュリティシステムである。ファイアウォール135は、信頼された内部管理ノード100と信頼されていない外部ネットワーク110との間のバリアを確立する。ファイアウォール135は、ネットワークファイアウォールまたはホストベースのファイアウォールであってよい。ファイアウォール135がホストベースのファイアウォールである場合、それは、管理ノード100の内外へのネットワークトラックを制御するために、管理ノード100内に配置されてよく、または管理ノード100上で実行されてよい。
【0084】
マルウェア分析モジュール140は、管理ノード100に対する着信ファイルに関して、または検出されたファイル操作に関連付けられたファイルに関してマルウェア検出分析を行う。マルウェア分析モジュール140は、管理ノード100内に配置されてよく、または管理ノード100上で実行されてよい。一実施形態において、マルウェア分析モジュール140は、検出されたファイル操作要求に関連付けられたファイルバッファに関してマルウェア検出分析を行って、マルウェアの存在を示す挙動を検出してよい。同様に、マルウェア分析機能は、管理ノード100の他のエンティティの間で分散されることが可能である。
【0085】
一実施形態において、マルウェア分析モジュール140は、カーネルモードにおいてステガノグラフィのリアルタイム検出およびステガノグラフィからの保護を行ってよい。ファイアウォール、オペレーティングシステム、または電子メールシステムを介するファイルの送信が検出されると、マルウェア分析モジュール140は、ファイルのサイズを決定してよい。ファイルのサイズは、ファイルが含むデータの大きさ、あるいはそれが消費するストレージの大きさの尺度である。ファイルのサイズは通常、バイトに基づく測定の単位で表される。
【0086】
一実施形態において、マルウェア分析モジュール140は、ファイルのセクションヘッダに対するポインタを取得することによってファイルのサイズを決定してよい。セクションヘッダは、ファイルの複数のセクションに関連付けられている。ファイルの複数のセクションの各セクションiについて、マルウェア分析モジュール140は、セクションiのサイズsiを決定してよい。マルウェア分析モジュール140は、ファイルの複数のセクションの各セクションiのサイズsiを合計して、ファイルのサイズをΣiiとして決定してよい。
【0087】
一実施形態において、マルウェア分析モジュール140は、ファイルのファイル名またはファイルのパスを使用してファイルを開くことによって、ファイルのセクションヘッダに対するポインタを取得してよい。ファイルのファイル名は、ファイルを一意に識別するために使用される名前である。ファイルシステムは、ファイル名長さ、およびファイル名内の許可される文字に制限を課すことがある。ファイル名は、ホスト名、デバイス名、ディレクトリ(またはパス)、ファイルの基底名、種類(フォーマットまたは拡張子)、およびファイルのバージョンのうちの1つまたは複数を含んでよい。
【0088】
マルウェア分析モジュール140は、ファイルのヘッダを読み取る。ファイルのヘッダは、通常、ファイルの先頭に記憶されるメタデータを含んでよい。メタデータは、ファイルフォーマットまたは含まれるデータの種類に応じて、他の領域、たとえばファイルの最後などに存在してもよい。ファイルのヘッダは、文字ベース(テキスト)、バイナリヘッダなどであってよい。ファイルのヘッダは、ファイルフォーマットを識別するとともに、(画像ファイルに関して)画像フォーマット、サイズ、解像度、および色空間などに関する情報を記憶してよい。
【0089】
マルウェア分析モジュール140は、ヘッダからマジックナンバーを取り出してよい。マジックナンバーは、ファイルフォーマットまたはプロトコルを識別するために使用される数値またはテキスト値であってよい。たとえば、マジックナンバーは、ファイルのフォーマットを識別するために使用されるファイル内のバイトであってよい。通常、マジックナンバーは、ファイルの始まりに置かれた短いシーケンスのバイト(たとえば4バイト長)である。たとえば、ポータブル実行可能(PE)ファイルに関しては、16進数の署名が「4D 5A」であってよく、マジックナンバーは「MZ」であってよい。マルウェア分析モジュール140は、マジックナンバーを検証して、ファイルのセクションヘッダに対するポインタを取得してよい。
【0090】
ファイルシステムは、ファイルのファイルサイズであってよい。たとえば、ファイルシステムは、ファイルに関連付けられているストレージの大きさを示すファイルのバイト数を記憶してよい。記憶されたファイルサイズは、システム限界までの非負の整数バイトであってよい。別の例において、記憶されたファイルサイズは、物理ストレージデバイス上でファイルによって占有されたブロックまたはトラックの数であってよい。この例においては、ソフトウェアが正確なバイト数を追跡するために使用されてよい。マルウェア分析モジュール140は、管理ノード100のファイルシステムからファイルの記憶されたファイルサイズを取り出してよい。ファイルシステムがサポートする最大ファイルサイズは、ファイルシステムの容量だけでなく、ファイルサイズ情報の記憶用に予約されたビットの数にも依存してよい。FAT32ファイルシステムにおける最大ファイルサイズは、たとえば、4ギガバイトよりも1バイト少ない4,294,967,295バイトである。
【0091】
マルウェア分析モジュール140は、ファイルの決定されたサイズをファイルの記憶されたファイルサイズと比較してよい。ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、マルウェア分析モジュール140は、ファイルに関してステガノグラフィ検出分析を実行してよい。一実施形態において、マルウェア分析モジュール140は、ファイルにおける付加されたペイロードを識別することによって、ステガノグラフィ検出分析を実行してよい。付加されたペイロードは、マルウェアの実際の悪意ある目的を実行する本体またはデータである。(識別され除去されない場合に)ペイロードは、速度低下もしくはフリーズ、スパムの送信、データの暗号化、ディスク上のファイルの削除、システムのクラッシュ、またはファイルの破損などを管理ノード100に行わせることがある。マルウェア分析モジュール140は、付加されたペイロードを分析して、付加されたペイロードのファイルフォーマットを決定してよい。付加されたペイロードのファイルフォーマットは、付加されたペイロードに情報が記憶(符号化)される方法の構造である。たとえば、付加されたペイロードは、画像もしくはラスタデータ用のJPEGもしくはTIFF、ベクタデータ用のAI(Adobe Illustrator)、または文書交換用のPDFであってよい。マルウェア分析モジュール140は、付加されたペイロードのファイルフォーマットに基づいて、ステガノグラフィ検出分析を実行してよい。
【0092】
一実施形態において、マルウェア分析モジュール140は、モンテカルロ近似、エントロピ決定、系列係数分析、算術平均決定、カイ二乗決定、および標準偏差決定のうちの1つまたは複数を行って、付加されたペイロード内のデータが暗号化されているかどうかを決定してよい。モンテカルロ近似の実行が、図5に関して示され以下に説明される。
【0093】
一実施形態において、マルウェア分析モジュール140は、エントロピ決定を行って、付加されたペイロード内のデータが暗号化されているかどうかを決定してよい。エントロピは、
【0094】
【数1】
【0095】
として、値の確率分布の負の対数を取って付加されたペイロードのエントロピを計算することによって、付加されたペイロードにおける情報コンテンツの量を測定する。
【0096】
上記のエントロピ決定において、Hは、総エントロピであり、Piは、付加されたペイロードから読み取られたバイトの値である。暗号化および難読化されたファイルは通常、プレーンテキストまたは構造化データファイルよりもはるかに高いエントロピを有する。エントロピHは、エントロピ閾値と比較されてよい。閾値より上のエントロピは、付加されたペイロードが暗号化または圧縮されている可能性が高いことを示し、したがって、それはランサムウェアに影響されたおそれがある。マルウェア分析モジュール140は、セクション(バッファ)または付加されたペイロード全体に関してエントロピ計算を行って、付加されたペイロード内に隠された(「パックされた」)マルウェアの隠されたまたは暗号化されたコピーを検出してよい。
【0097】
一実施形態において、マルウェア分析モジュール140は、系列係数分析を行って、付加されたペイロード内のデータが暗号化されているかどうかを決定してよい。系列係数分析は、特定の時間の期間にわたる同じ変数の観測値間の関係、この場合は、追加されたペイロードにおける各バイトの変化する値を記述する。系列係数分析は、付加されたペイロードにおけるバイトの値が相関されているかどうかを決定する。相関がない場合、それは、追加されたペイロードにおける後のバイトの値が前の値によって予測できないことを意味する。系列相関値が低いほど、強力な暗号化の確率が高い。変数の系列相関がゼロとして測定される場合、それは、相関が存在せず、観測値の各々が互いに独立していることを意味する。逆に、変数の系列相関が1に向かって傾斜する場合、それは、観測値が系列相関され、将来の観測値が過去の値によって影響されることを意味する。
【0098】
一実施形態において、マルウェア分析モジュール140は、カイ二乗決定を行って、付加されたペイロード内のデータが暗号化されているかどうかを決定してよい。カイ二乗決定は、暗号化されたファイルから圧縮されたファイルを区別するために使用されてよい。カイ二乗決定は、観測されたデータを期待されたデータと比較するために一般的に使用される単純な統計的検定である。カイ二乗検定は、観測された分布が偶然による可能性を検定することが意図されている。それは、「適合度」統計とも呼ばれ、なぜならば、それは変数が独立である場合に観測された分布が期待された分布にいかに良く適合するかを測定するからである。圧縮されたペイロードは、高いエントロピおよび大きいカイ二乗値を有することになる。バイトの完全にランダムなペイロードの期待された値は、平均127.5(255/2)になるであろう。これは、暗号化されたファイル、圧縮されたファイル、および暗号化された圧縮されたファイルの決定を可能にする。カイ二乗値を計算するための公式は、
【0099】
【数2】
【0100】
である。
【0101】
一実施形態において、マルウェア分析モジュール140は、算術平均決定および標準偏差決定のうちの1つまたは複数を行って、付加されたペイロード内のデータが暗号化されているかどうかを決定する。付加されたペイロードが暗号化されている場合、付加されたペイロードのデータ値の算術平均は、およそ127.5(255/2)に等しいはずである。標準偏差σは、データ値の変動または分散の量を定量化するために使用される尺度である。算術平均および標準偏差は、付加されたペイロードの部分、および付加されたペイロード全体について計算される。マルウェア分析モジュール140は、オペレーティングシステムの内部I/Oバッファを直接読み取ってよいので、読み取りおよび書き込みオーバヘッドが低減される。これは、より多数の統計的決定が計算および分析されるのを可能にして、より少ないシステムリソースを使用して、より正確でより速い決定という結果となる。統計的決定は、データがアウトオブオーダで提供されても部分的および全体的値を提供することができる。そのようなアウトオブオーダ決定は、高性能、マルチスレッド、およびマルチプロセスの実施形態を可能にする。
【0102】
一実施形態において、マルウェア分析モジュール140は、付加されたペイロード内の許可されていないデータの存在を識別することによって、ステガノグラフィ検出分析を実行してよい。たとえば、マルウェア分析モジュール140は、許可されていないルートキットインストールまたはデータ暗号化を検出してよい。データに対する許可されていない変更の検出が、図4に関して以下に詳細に説明される。一実施形態において、マルウェア分析モジュール140は、許可されていないシステムが機密情報を収集しているディスク上での命令を識別してよい(アウトバウンド実施形態)。したがって、データの許可されていない送信は防止されることが可能である。一実施形態において、静的分析が、プログラムの実行なしにファイルの分析でマルウェアからの保護をするために使用される。インバウンド実施形態において、企業環境に入って来る許可されていないコード、たとえば、インターネットからダウンロードされたmp3内に隠された悪意のあるコードのシーケンスが、検出されてよい。
【0103】
一実施形態において、マルウェア分析モジュール140は、付加されたペイロード内のアセンブリレベル命令またはマシンレベル命令の存在を識別することによって、ステガノグラフィ検出分析を実行してよい。アセンブリレベル命令は、低水準プログラム言語を指し、これは、言語とアーキテクチャのマシンレベル命令との間に強い対応関係(ただし、しばしば一対一ではない)がある。マルウェア分析モジュール140は、疑わしい命令セット、たとえば、マシンまたはアセンブリレベル言語のインジケーションを識別する。実施形態において、方法は、部分的にファイルを逆アセンブルし、そのような疑わしい命令セットを探す。
【0104】
ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、マルウェア分析モジュール140は、信号を管理ノード100に送信してステガノグラフィ修正アクションを実行してよい。マルウェア分析モジュール140は、ステガノグラフィを記述する情報をクライアントデバイスに送信してよい。
【0105】
ルータ145は、管理ノード100とネットワーク110との間でデータパケットを転送するネットワーキングデバイスである。ルータ145は、トラフィック検出機能を実行してもよい。ネットワーク110からデータパケットが入って来ると、ルータ145は、パケットにおけるネットワークアドレス情報を読み取って、最終的宛先を決定する。スイッチ150は、データの受信、処理、および宛先デバイスに対する転送のために、パケット交換を使用することによってネットワーク上でデバイス同士を接続するコンピュータネットワーキングデバイスである。一実施形態において、スイッチ150は、OSIモデルのデータリンク層(レイヤ2)でデータを処理および転送するためにハードウェアアドレスを使用するマルチポートネットワークブリッジである。
【0106】
ネットワーク110は、クライアントデバイスおよび管理ノード100の間の通信を可能にする。この目的のために、ネットワーク110は、要求および対応するデータ(たとえば、ウェブページ上にポストされるべきファイルのコンテンツ)をクライアントデバイスから受信し、要求を管理ノード100に転送する。同様に、ネットワーク110は、管理ノード100から応答を受信し、応答をクライアントデバイスに転送する。
【0107】
ネットワーク110は、インターネットおよび携帯電話ネットワークを含むことができる。一実施形態において、ネットワーク110は、標準的な通信技術および/またはプロトコルを使用する。したがって、ネットワーク110は、イーサネット、802.11、ロングタームエボリューション(LTE)などの技術を使用するリンクを含むことができる。ネットワーク110上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、HTTP、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含むことができる。ネットワーク110上で交換されるデータは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)などを含む技術および/またはフォーマットを使用して表されることが可能である。また、リンクの全部または一部は、セキュアソケットレイヤ(SSL)、トランスポート層セキュリティ(TLS)、仮想プライベートネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化されることが可能である。別の実施形態において、エンティティは、上記に説明されたものに代えてまたは加えて、カスタムおよび/または専用データ通信技術を使用することができる。
【0108】
プラットフォーム上のユーザモードおよびカーネルモードにおいて実行されているアプリケーションに関するマルウェアの検出
図2は、実施形態に従う、プラットフォーム上のユーザモード235において実行されているアプリケーション225に関するマルウェアのリアルタイム検出およびマルウェアからの保護の例示的なブロック図を示す。示されているプラットフォームは、たとえば、Intel、AMD、またはARMによって製造されたプロセッサに基づいている。プラットフォーム上のオペレーティングシステムは、ユーザモード235およびカーネルモード240を含む。
【0109】
一実施形態において、カーネルモード240は、オペレーティングシステムの最も低いレベルの最も信頼された機能に予約される。カーネルモード240において実行されるコードは、単一の仮想アドレス空間を共有する。したがって、カーネルモードドライバ(たとえば200)は、他のドライバ(たとえば205)およびオペレーティングシステムそれ自体から隔離される。カーネルモード240において、実行中のコードは、基礎となるハードウェア(たとえば、図3を参照して以下に説明されるプロセッサ310)に対するアクセスを有する。それは、CPU命令および参照メモリアドレスを実行する。
【0110】
プロセッサは、プロセッサ上で実行されているコードの種類に応じて2つのモード間で切り替わってよい。たとえば、アプリケーション225はユーザモードにおいて実行されてよく、コアオペレーティングシステムコンポーネントはカーネルモード240において実行されてよい。ドライバは、カーネルモード240またはユーザモード235において実行されてよい。他の実施形態において、プラットフォームは、本明細書に説明されるものよりも追加のまたは少ないコンポーネントを備える。同様に、機能は、ここで説明されるのと異なる方式でコンポーネントおよび/または異なるエンティティの間で分散されることが可能である。
【0111】
サービス220は、バックグラウンドにおいて動作するプログラムを指す(概念がデーモンに類似する)。ユーザモード235は、多くの異なる種類のオペレーティングシステム用に書かれたアプリケーション225を実行するサブシステム230を含む。ユーザモード235におけるサブシステム230は特定のシステムリソースに限定されるが、カーネルモード240は通常、システムメモリおよび外部デバイスに対する制限されないアクセスを有する。ユーザモード235は、I/Oマネージャ120を使用することによってI/O要求を適切なカーネルモードデバイスドライバ200に渡すことができるサブシステムを含む。
【0112】
オペレーティングシステムは、ダイナミックリンクライブラリとして知られる共有ライブラリをサポートし、このライブラリは、1つのみのコピーがメモリにロードされた状態で複数のプロセスによって使用されることが可能であるコードライブラリである。たとえば、NTDLL.DLL215は、WindowsネイティブAPI(Win32または他のAPIサブシステムからのサポートなしに実行しなければならないオペレーティングシステムのユーザモードコンポーネントによって使用されるインターフェース)をエクスポートする。NTDLL.DLL215は、「NT Layer DLL」の記述を有するオペレーティングシステムによって作成されたファイルであり、NTカーネル機能を含むファイルである。一実施形態において、NTDLL.DLL215は、c:\Windows\system32またはc:\winnt\system32ディレクトリに配置されてよく、c:\i386ディレクトリに見出されることもある。
【0113】
カーネルモードAPI210は、(図1に関して上記に説明されている)I/Oマネージャ120およびフィルタマネージャ125とインターフェースする。カーネルモードデバイスドライバ200は、管理ノード100にアタッチされた特定の種類のデバイスを操作および制御するプログラムである。カーネルは、図1に関して上記に説明されている。グラフィックスドライバ205は、特定のグラフィックデバイスと通信するためにカーネルモード240においてオペレーティングシステムよって使用されるソフトウェアを指す。ハードウェア抽象化層は図1に関して上記に説明されている。
【0114】
一実施形態において、アプリケーション225は、1つまたは複数の実行スレッドを含んでよい。リング3において実行されているとき(ユーザモード235)、アプリケーション225(スレッド)は、WriteFile()などのシステムサービスを要求してよい。NTDLL.DLL215は、SysEnter x86命令を呼び出してよく、スレッドのコンテキストがユーザモード235からカーネルモード240に変わる。コンテキストスイッチは、カーネルスケジューラがプロセッサ(またはコア)を1つのスレッドから別のスレッドに切り替えるときに発生してよい。この場合、スレッドは、リング3からリング0に変更されているだけである。それは、同じプロセッサまたはコア上に留まっている。より高い優先度のスレッドが、前のスレッドのプロセッサに割り当てられてよい(コンテキストスイッチ)。一実施形態において、コンテキストスイッチは、2つのスレッドが状態を変更したときに発生する。他のアーキテクチャ上では、割り込みが生成されてよい。各スレッドは、2つのスタックを有し、1つはユーザモード235に使用されるもので、もう1つはカーネルモード240に使用されるものである。割り込みが生成され、次いで、スレッドカーネルが、NtWriteFile()またはZwWriteFile()などのカーネルモードネイティブAPI210を実行する。
【0115】
一実施形態において、アプリケーション225がユーザモード235において実行されるとき、オペレーティングシステムがアプリケーション225のためのプロセスを作成してよい。プロセスは、プライベート仮想アドレス空間およびプライベートハンドルテーブルをアプリケーション225に提供する。アプリケーションの仮想アドレス空間はプライベートであるため、1つのアプリケーションが別のアプリケーションに属するデータを変更することはできない。各アプリケーション225は隔離されて実行され、ユーザモードアプリケーションがクラッシュした場合、クラッシュはその1つのアプリケーションに限定される。他のアプリケーションおよびオペレーティングシステムは、クラッシュによって影響されない。一実施形態において、カーネルモード240における各スレッドは、単一の仮想アドレス空間を共有する。したがって、すべてのカーネルモードスレッドおよびユーザモードスレッドが可視である。
【0116】
一実施形態において、プロセッサは、複数のレベルのセキュリティを提供してよい。32ビットおよび64ビットIntelおよびAMDプロセッサの場合、カーネル165は、最も特権が与えられたリング0において実行されてよい。すべてのユーザアプリケーション225は、リング3において実行され、ダイナミックリンクライブラリ(DLL)システムを介してカーネルサービスを要求する。すべてのユーザモード235要求は、NTDLL.DLL215を使用して、特定の関数パラメータを修正し、SysEnterを使用して要求スレッドをリング3からリング0に切り替える。ディスパッチャが要求を受信し、それをエグゼクティブのサービスに渡す。スケジューラは、実行する準備ができているスレッドを再検査する。コンテキストスイッチを引き起こすユーザからの特権モード要求の間に、より低い優先度のスレッドが優先割り込みされてよい。
【0117】
例示的なフィルタマネージャおよびミニフィルタドライバ
図3は、実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のための例示的なフィルタマネージャ125ならびにミニフィルタドライバ320、325、および330を示す。他の実施形態において、構成は、本明細書に説明されるものよりも追加のまたは少ないコンポーネントを備える。同様に、機能は、ここで説明されるのと異なる方式でコンポーネントおよび/または異なるエンティティの間で分散されることが可能である。
【0118】
プロセッサ310上でユーザモード235において実行されているアプリケーション225またはプロセスは、ユーザ要求300(たとえば、ファイルオープン要求などのファイル操作要求)を生成してよい。一実施形態において、ユーザモード235におけるプロセス225は、Windows APIでファイルを作成するためにコールを行う。このコールは、ファイルI/Oを求めるユーザ要求300をトリガする(たとえば、Windows NT APIコール)。要求300は、NTDLL.DLL215を通じて進む。I/Oマネージャ120は、ユーザモード235において実行されているプロセス225によって開始されたファイル操作要求300を検出する。一実施形態において、I/Oマネージャ120は、Windowsオペレーティングシステムの一部であってよい。I/Oマネージャ120は、ターゲットファイルがどこに配置されているか(たとえば、D:\drive)を特定し、ファイルオープン要求300をインターセプトすることにドライバが関心を有するかどうかを決定するためにフィルタマネージャ125にメッセージを送信する。フィルタマネージャ125は、特定のファイルシステムおよび特定のボリュームにアタッチされる。
【0119】
一実施形態において、フィルタマネージャ125はカーネルモード240において初期化される。フィルタマネージャ125は、ファイル操作要求300に対応するファイルハンドルから、ファイル操作要求300が所定の操作たとえばファイルオープン要求に対応するかどうかを決定してよい。フィルタマネージャ125は、ファイルシステムフィルタドライバにおいて一般的に必要な機能性を提示するカーネルモードドライバである。ミニフィルタドライバ(たとえばミニフィルタドライバA320)は、この機能性を使用するように書かれてよく、それによって、より高品質でより堅牢なドライバを作成するとともに開発プロセスを短縮する。ファイルハンドル(ファイル記述子と呼ばれることもある)は、パイプまたはネットワークソケットなどのファイルまたは他の入出力リソースにアクセスするために使用される抽象的インジケータ(たとえば数)である。ファイルが開かれるとき、要求されるファイルアクセスの種類、たとえば、読み取り、書き込み、共有、および排他などが決定される。ミニフィルタドライバA320またはC330が、ハンドル追加ステップを行う。ハンドル追加ステップは、ファイルハンドルが所定のものであるかどうかを決定し、それをツリーに格納する。それが強力な暗号化を用いてバッファを書き込んでいる場合は、所定のものである。ハンドルが所定のものでない場合、それは無視されることができる。
【0120】
ファイル操作要求300が所定の操作に対応すると決定することに応答して、ファイル操作要求300がインターセプトされる。一実施形態において、フィルタマネージャ125は、ファイル操作要求をインターセプトするためにミニフィルタドライバ(たとえばミニフィルタドライバA320)が登録されているかどうかを決定することによって、ファイル操作要求300をインターセプトする。ミニフィルタドライバA320は、所定のイベント(たとえば、ファイルオープン(fopen)、読み取り、書き込み、クローズ、名前変更)についてフィルタマネージャ125に事前に登録されていてよい。ファイル操作要求をインターセプトするためにミニフィルタドライバA320が登録されていると決定することに応答して、フィルタマネージャ125は、ファイル操作要求300をミニフィルタドライバA320に送信する。
【0121】
一例において、フィルタマネージャ125は、ミニフィルタドライバ(たとえばミニフィルタドライバA320)が要求300をインターセプトすることに関心があるかどうかをチェックする。フィルタマネージャ125は、コールバックによってミニフィルタドライバA320を識別してよい。まず、ミニフィルタドライバA320は登録を行い、次いで、それは、どのイベントが関心を持たれているかを識別する。操作は、以下のように実装されてよい。
【0122】
【数3】
【0123】
マルウェア検出分析は、検出されたファイル操作要求300に関連付けられたファイルバッファに関して行われて、マルウェアの存在を示す挙動を検出する。カーネルモード240におけるミニフィルタドライバは、ファイルバッファに対するマルウェア検出分析を行って、許可されていない/疑わしい挙動を検出する。マルウェア検出分析は、モンテカルロ近似、エントロピ、および/または系列係数分析を含んでよい。分析は、ファイルバッファにおけるデータが暗号化されているかどうかを決定することを含む。たとえば、疑わしい書き込み操作が検出されることがある。ミニフィルタドライバは、オペレーティングシステムバッファからデータを直接読み取って、性能を増大し、統計分析のオーバヘッドを低減してよい。マルウェア分析は、上記で図1に関して説明された統計的技法を使用して、ファイルが暗号化されているかどうかを決定する。「カーネルバッファ分析」ステップは、ランサムウェアおよびマルウェア分析を行ってよい。ステガノグラフィ分析の一部が行われてもよい。したがって、ステガノグラフィは、複数のエンティティ、たとえば、静的(スキャン)、動的(リアルタイム)、ファイアウォール、smtpサーバなどによって行われることがある。
【0124】
マルウェアの存在を示す挙動を検出することに応答して、検出されたファイル操作要求300を開始することを担当するプロセス225が識別される。ミニフィルタドライバA320は、書き込み操作に関するマルウェア分析を行う。ミニフィルタドライバA320は、ファイルアクセス前操作(ファイル読み取り/書き込み要求)を取り扱う。フィルタマネージャ125は、ミニフィルタドライバA320にコールを送信し、ミニフィルタドライバA320は、カイ二乗、エントロピ、系列係数相関、およびモンテカルロパイ近似の組み合わせを決定して、それがファイルオープン操作300を進めるべきか否かを決める。ミニフィルタドライバA320は、それがオペレーティングシステムカーネルI/Oバッファにおける書き込みデータを既に有するので、書き込みを分析することができる。ミニフィルタドライバA320は、マルウェア状態変化に関して書き込みバッファを分析する。主要なマルウェア検出分析が行われ、データが暗号化されていないと決定されたときのみにデータが書き込まれる。マルウェア分析が強力な暗号化を示さない場合、FileWrite()操作の成功が可能にされる。
【0125】
ミニフィルタドライバC330は、読み取りに関するマルウェア分析を行う。ミニフィルタドライバC330は、ファイルアクセス後操作も取り扱う。それは、マルウェア状態変化に関して読み取りバッファを分析する。要求300がミニフィルタドライバC330に到達する前に、システムに対する状態変化(書き込み)がない。ミニフィルタドライバA320またはC330がマルウェアを示す状態変化を検出した場合、それらは、ファイル操作330を停止することができる。ミニフィルタドライバC330が「ファイル読み取り(fread)」操作を承認する場合、フィルタマネージャ215は、ファイルシステムドライバ305に要求を送信し、ファイルシステムドライバ305は、I/O要求パケットをストレージドライバスタック315に送る。ファイルシステムドライバ305は、リムーバブルメディア(たとえばCD-ROM)用のファイルシステムドライバ、新しいファイルシステムのためのモデルとして使用されるWindows inbox FastFATファイルシステムに基づくファイルシステムドライバ、ファイル内のデータを検査するトランザクション対応ファイルスキャナなどであってよい。ミニフィルタドライバC330が再び呼び出され、バッファを検査し、フィルタマネージャ125に承認を送る。
【0126】
プロセッサ310を使用してデータが読み取られると、IRPがフィルタマネージャに戻される。ミニフィルタCは、IRPにおけるデータを調べる。たとえば、書き込み操作の前に、ドライバが書き込みバッファを分析する場合、それは、エントロピ、カイ二乗、モンテカルロPi近似、系列相関係数、平均、標準偏差、および他の統計値を計算して、許可されていないデータ暗号化、データ削除、または疑わしい挙動を検出する。ミニフィルタAは、これらの統計に基づいて、暗号化されたデータをディスク155上のファイルに書き込むマルウェアからの保護をする。ミニフィルタCは、以前に暗号化されたデータを識別し、データを読み取るプロセスからホワイトリストおよびブラックリストを構築することを助ける。ミニフィルタAは、データが暗号化されないように保護をするが、ミニフィルタCは、暗号化されたデータを復号することはできないので、それは、ファイルを使用しているプロセスを識別する。ミニフィルタAは書き込み前操作検出として、ミニフィルタCは読み取り後操作検出として最も良く説明される可能性がある。システムは、前および後操作についてそのデータ構造を更新し維持するように登録をする。
【0127】
ミニフィルタドライバB325は、サードパーティドライバである。開示されている実施形態は、ミニフィルタドライバB325を使用して、ファイルの削除、ファイルの名前変更、またはディクトリの変更を試みるマルウェアを検出してもよい。
【0128】
識別されたプロセス225の検索は、プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において行われて、識別されたプロセス225が信頼されたプロセスであるかどうかを決定する。プログラムのブラックリストは、アクセスまたは実行する(実行)権限を与えられるべきではない知られている悪意のあるまたは疑わしいプログラムを含んでよい。これらのプログラムは通常、ウイルス、トロイの木馬、ワーム、スパイウェア、キーロガー、および他のマルウェア形態など、悪意のあるソフトウェアを含む。ブラックリストに載せられるプログラムは、企業または個人に脅威を与えることが知られているユーザ、ビジネスアプリケーション、プロセス、IPアドレス、および組織も含む。
【0129】
プログラムのホワイトリストは、管理ノード100に対するアクセスを可能にされる許容可能なエンティティ(ソフトウェアアプリケーション、電子メールアドレス、ユーザ、プロセス、デバイスなど)のリストを含んでよい。ホワイトリストは、アプリケーション225を、それらのファイル名、サイズ、およびディレクトリパスに基づいて識別してよい。一実施形態において、ホワイトリストは、各コンポーネントまたは各ソフトウェア225の製造者または開発者に関連付けられた暗号学的ハッシュ技法およびデジタル署名の組み合わせを使用してよい。
【0130】
一例において、管理ノード100は、プログラムのブラックリスト上において識別されたプロセス225を特定することによって、識別されたプロセス225が信頼されたプロセスではないと決定することがある。管理ノード100は、マルウェアを記述する情報をクライアントデバイスに送信する。一例において、管理ノード100は、プログラムのホワイトリスト上において識別されたプロセス225を特定することによって、識別されたプロセス225が信頼されたプロセスであると決定することがある。その場合、ミニフィルタドライバは、検出されたファイル操作要求を無視する。
【0131】
ミニフィルタドライバA320およびミニフィルタドライバB330はカーネルモード240において実行されるので、それらは、どのプロセスがファイルの状態を変更しているかを決定することができる。ファイルが暗号化されている、または大量のデータが削除されている場合、管理ノード100は、ユーザに、ファイルシステムの状態をプロセス225が変更することを可能にしたいかどうかを尋ねてよい。ユーザが操作を承認した場合、それは許容され、処理されたイメージのSHA256ハッシュが任意選択でホワイトリストに記憶される。プロセスがマルウェアである場合、SHA256ハッシュはブラックリストに追加される。プロセスが実行されたとき、ドライバはブラックリストをチェックし、ブラックリストに載せられている場合は実行を防止する。
【0132】
一実施形態において、管理ノード100は、識別されたプロセス225が信頼されたプロセスであるかどうかを以下のように決定してよい。プログラムのブラックリストまたはプログラムのホワイトリスト上においてプロセス225を特定しないことに応答して、管理ノード100は、クライアントデバイスに、識別されたプロセスを許可することを求める要求を送信してよい。管理ノード100は、プロセス300が許可されているかどうかを問い合わせるために、プロンプトがクライアントデバイスへ提示されるようにするデータを生成してよく、たとえば、プロンプトはCAPTCHAを含んでよい。
【0133】
識別されたプロセス225を許可することを求める要求をクライアントデバイスに送信することに応答して、管理ノード100は、識別されたプロセス225が許可されないというメッセージをクライアントデバイスから受信することがある。その場合、識別されたプロセス225は、マルウェア検出のためにプログラムのブラックリストに追加される。識別されたプロセス225が許可されたというメッセージをクライアントデバイスから受信することに応答して、識別されたプロセス225は、プログラムのホワイトリストに追加されてよい。
【0134】
識別されたプロセス225が信頼されたプロセスではないと決定することに応答して、識別されたプロセス225に対してマルウェア修正アクションが実行される。攻撃詳細はローカルにログ記録される。たとえば、ミニフィルタドライバA320は、ファイル操作要求300を停止、一時停止、または許可するためにメッセージをフィルタマネージャ215に送信してよい。一実施形態において、同様の技法が、ファイアウォール135とインラインでインバウンドファイルを検査するために使用される。マルウェア分析は、マルウェアがファイアウォール135を通過してネットワークのルータ145およびスイッチ150に達するのを防止するために使用される。インライン実施形態はステガノグラフィを検出してもよい。あらゆる疑わしいファイルがログ記録され隔離されるので、ユーザは、それが誤検出であった場合にファイルを復元することができる。
【0135】
ボリュームシャドウサービスの例示的なコンポーネント
図4は、実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のためのボリュームシャドウサービス(VSS)の例示的なコンポーネントを示す。VSSは、VSSコピーサービス400、VSSリクエスタ405、VSSライタ410、ならびにVSSプロバイダ415、420、および425を含む。他の実施形態において、VSSは、本明細書に説明されるものよりも追加のまたは少ないコンポーネントを備える。同様に、機能は、ここで説明されるのと異なる方式でコンポーネントおよび/または異なるエンティティの間で分散されることが可能である。
【0136】
ランサムウェアは、感染または暗号化されたファイルの回復を防止するためにVSSを無効にしようとすることがある。本明細書に開示されている実施形態は、特定のデータ回復APIを使用して、有用なバックアップが復元されてデータ損失を防止できることを確実にする。VSSは、許可されていない変更から保護をするために暗号化される構成データベースに読み取りおよび書き込みをする。VSSは、デバイスを分析し、コアおよびプロセッサ種類ならびに現在のワークロードに基づいて、そのデバイスに最適なリソース構成を自動的に作成する。プロセッサ情報およびメモリ情報が、スレッドプールのサイズを構成するために使用される。
【0137】
マルウェア検出および除去などのイベントが、ローカルログに書き込まれる。ローカルログは、管理ノード100およびファイアウォール135から、セキュリティマネージャポリシによって指定された中央ログサーバに定期的に複製される。
【0138】
モンテカルロパイ近似のための例示的なデータ点
図5は、実施形態に従う、モンテカルロパイ近似に関する例示的なデータ点を示す図である。モンテカルロパイ近似は、暗号化されたファイルから圧縮されたファイルを区別するために使用されてよい。モンテカルロシミュレーションは、ファイルにおける値のランダム性の測定を可能にする。モンテカルロシミュレーションの1つのアプリケーションは、ファイルにおけるデータに基づいてPi(π)の値を近似することである。ファイルに含まれる値がランダムであるほど、πの推定される値がより正確である。Pi(π)の値は、正方形におけるデータ点510の総数に対する内接単位円におけるデータ点500の比によって計算される。
【0139】
図5は、内接単位円におけるデータ点500、および正方形におけるデータ点510の総数を示す。計算された近似値がPiの知られている値に近いほど、それがデータ値のランダム性をより良く表す。完全な暗号化アルゴリズムは完全にランダムな値を有することになり、Piの正確な近似値を提供する。一実施形態において、システムは以下の決定を行う。
円面積(AreaCircle)=πr2
正方形面積(AreaSquare)=(2r)2=4r2
【0140】
半径505が1単位であり、円における点500が(x2+y2<=1)によって与えられると仮定する。円の面積/正方形の面積=(Pi×半径2)/(4×半径2)=Pi/4となる。したがって、点510の総数によって割られた円内部の点500の数は、Pi/4によって与えられる。
【0141】
マルウェアのリアルタイム検出およびマルウェアからの保護のための例示的なプロセス
図6は、実施形態に従う、マルウェアのリアルタイム検出およびマルウェアからの保護のための例示的なプロセスを示す。一実施形態において、図6のプロセスは管理ノード100によって行われる。他のエンティティ(たとえばマルウェア分析モジュール140)が、他の実施形態においてプロセスのステップの一部または全部を行ってよい。同様に、実施形態は、異なるおよび/もしくは追加のステップを含み、または異なる順序でステップを行ってよい。
【0142】
管理ノード100は、ユーザモード235において実行されているプロセス225によって開始されたファイル操作要求300を検出する600。管理ノード100は、ファイル操作要求300に対応するファイルハンドルから、ファイル操作要求300が所定の操作に対応するかどうかを決定することによって、ファイル操作要求300を検出してよい。
【0143】
管理ノード100は、検出されたファイル操作要求300に関連付けられたファイルバッファに関してマルウェア検出分析を行って605、マルウェアの存在を示す挙動を検出する。マルウェア検出分析は、カイ二乗、エントロピ決定、系列係数相関、およびモンテカルロパイ近似の組み合わせを含んでよい。
【0144】
マルウェアの存在を示す挙動を検出することに応答して、管理ノード100は、検出されたファイル操作要求300を開始することを担当するプロセス225を識別する610。
【0145】
管理ノード100は、プログラムのブラックリストおよびプログラムのホワイトリストのうちの1つまたは複数において、識別されたプロセス225の検索を行って615、識別されたプロセス225が信頼されたプロセスであるかどうかを決定する。プログラムのブラックリストは、アクセスまたは実行する(実行)権限を与えられるべきではない知られている悪意のあるまたは疑わしいプログラムを含んでよい。プログラムのホワイトリストは、管理ノード100に対するアクセスを可能にされる許容可能なエンティティ(ソフトウェアアプリケーション、電子メールアドレス、ユーザ、プロセス、デバイスなど)のリストを含んでよい。
【0146】
識別されたプロセス225が信頼されたプロセスではないと決定することに応答して、管理ノード100は、識別されたプロセス225に対してマルウェア修正アクションを実行し620、マルウェアを記述する情報をクライアントデバイスに送信する。マルウェア修正アクションは、検出されたファイル操作要求に関連付けられた書き込み操作を終了することを含んでよい。マルウェア修正アクションは、検出されたファイル操作要求をメモリから削除することによって、検出されたファイル操作要求を終了することを含んでよい。マルウェア修正アクションは、識別されたプロセスに関連付けられたディスクファイルイメージを隔離することを含んでよい。
【0147】
ステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のためのポータブル実行可能(PE)ファイル
図7は、実施形態に従う、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための例示的なポータブル実行可能(PE)ファイルのコンポーネントを示す。PEフォーマットは、実行ファイル、オブジェクトコード、DLL、FONフォントファイル、ならびにWindowsオペレーティングシステムの32ビットおよび64ビット版で使用される他のもののためのファイルフォーマットである。PEフォーマットは、Windows OSローダがラップされた実行可能コードを管理するために必要な情報をカプセル化するデータ構造である。
【0148】
PEヘッダ765は、複数のセグメントが任意のメモリアドレスでロードされるのを可能にする再配置情報を含むDOS実行可能ヘッダ700を含む。DOSスタブ705は、MS-DOSにおいて実行される有効なアプリケーションである。それは、EXEイメージの先頭に配置される。セクションテーブルの各行(たとえば、715、720、および725)はセクションヘッダである。セクションヘッダはNULL730ターミネータを有してよい。各セクション(たとえば、735、745、および755)がNULLターミネータを有してもよい。
【0149】
本明細書に開示されている実施形態は、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための図7に示されたPEファイルフォーマットを使用する方法に関する。ステガノグラフィは、コンテナ内部にマルウェアを隠すために使用されてよい。コンテナは、ピクチャ、映画、音声ファイル、または実行ファイルであってよい。ステガノグラフィは、ピクチャ、mp3、またはexeファイル内に情報を隠すために使用されてよい。たとえば、128バイトテキストメッセージが4MBピクチャ内に隠されてよい。exeファイルが別のexeファイル内部に隠されてよい(パック)。マルウェアファイルはpkzipファイル内に隠されてよい。ユーザがウェブサイトを訪問しているとき、ウイルスのドライブバイダウンロードが発生することがある。マルウェアがユーザに送られることもある。次いで、それは、ユーザのメーリングリストなどにおいて、たとえば、パーソナライズされたクリスマスカードで各友達へ行くことがある。マルウェアは、数ヶ月の期間にわたってファイルを暗号化し、暗号化キーを除去することがある。従来のエッジファイアウォールは、添付ファイルがファイアウォールを通じて進むことを可能にされるので、ステガノグラフィを使用して隠されている隠れピクチャ、メッセージ、またはマルウェアを含むファイルを通常は検出できない。
【0150】
ファイアウォール、オペレーティングシステム、または電子メールシステムを介するファイルの送信が検出される。一実施形態において、PEはパースされる。PEを読み取りおよびパースする間に、Windows EXE、DLL、フォント、システムドライバ、およびオブジェクトコードの構造が、疑わしいAPI使用について分析される。例は、悪意のあるプログラムがメモリセクションにコピーされ実行されることを可能にすることがある読み取り、書き込み、および実行許可を有するメモリセクションの割り当てである。一実施形態において、WindowsAPIは、GetModuleFileNameEx()およびCreateFile()を呼び出すことによって提供されるプロセスの完全修飾名(FQFN)を使用してファイルを開くために使用される。ディスク上のイメージに対するハンドルが呼び出し元に返される。
【0151】
一実施形態において、PEファイルのサイズが決定され、記憶されたファイルのファイルサイズと比較される。この実施形態は、悪意のあるzipファイルまたは添付された実行ファイルなどの許可されていないデータをイメージが含むかどうかを検出するために使用されてよい。この実施形態において、PEファイルフォーマットの最後に記憶された隠された情報(たとえば、EXE、DLL、SCR、SYS、DRV、ACM、CPL、SCRなど)が識別されてよい。PEファイルのサイズを決定するために、ファイルがパースおよび分析される。ファイルは、ファイルの完全修飾ファイル名を使用して開かれる。ファイルのDOSヘッダ700がストレージデバイス155から読み取られる。ファイルが実行可能ファイルであるかどうかを決定するために、DOSヘッダ700が「MZ」で始まるかどうかが決定される。マジックナンバーがDOSヘッダ700から取り出される。マジックナンバーが検証されて、ファイルのセクションヘッダに対するポインタを取得する。セクションヘッダで始まるファイルの各セクションについて、セクションの名前および属性が検証される。セクションのサイズが決定される。ファイルのサイズを決定し、マルウェアによってしばしば利用される非標準的なセクション名を識別するために、ファイルの各セクションの名前およびサイズが決定される。
【0152】
一実施形態において、Winnt.h SDKヘッダファイルにおけるIMAGE_DOS_HEADER構造がストレージデバイス155から読み取られる。DOSヘッダ700はファイルの第1の部分である。このステップは、DOSヘッダ700がMZ「xx xx xx」で開始するかどうかを決定する。DOSヘッダ700がMZで始まる場合、それはDOSまたはWindowsプログラムである可能性がある。DOSヘッダ700がMZで始まらない場合、それは、実行ファイルでない(たとえば、JPG、GIFなどである可能性がある)。この区別が、どの分析を適用するかを決定する。DOSヘッダ700を読み取る目的は、ファイルが適切に形成されたことを確認することである。プロセスは、不正なヘッダの作成を探している。DOSヘッダ700は、静的(不変)であり、日付およびタイムスタンプを含む。DOSヘッダ700をパースする目的は、知られている優良なヘッダの既存のリストにない不正なヘッダの作成を検出することである。不正なヘッダ(PEヘッダ)は、マルウェアコード(不正な命令)を伴うセクションに対するポインタを有する。本明細書に開示されている実施形態は、マルウェアが実行可能ファイルにおける圧縮されたペイロードとして隠される可能性があるため、実行可能ファイルと非実行可能ファイルを区別する。ファイルの種類の決定は、ファイルにおけるステガノグラフィを検出するために使用される特定の分析を決定するために使用される。
【0153】
数「MZ」(ファイルの最初の数バイト)はマジックナンバーである。マジックナンバーを検証することによって取得されたポインタは、情報が配置されているファイルにおける部分につながる。ファイルが有効なPEファイル、たとえばJPEGまたはGIFでない場合、それはマルウェアである可能性がある。一実施形態において、マジックナンバーは、IMAGE_DOS_HEADERにおけるe_magic memberから取り出される。マジックナンバーを検証するために、DOSヘッダ700における値「xx xx xx」が使用される。見つけられた値は、値0x5A4D(「MZ」)を有するMicrosoft DOS IMAGE_DOS_SIGNATUREと比較される。値がDOS署名と一致しない場合、ファイルはDOSまたはWindows実行ファイルではない。ファイルのフォーマットが何であってよいか、たとえば、DOC、DOCX、PPT、PPTX、XLS、XLSX、MP3、GIF、JPG、PNGなどを決定するために、追加の命令が実行されてよい。マジックナンバーが検証されると、セクションヘッダに対するポインタが取得される。DOSマジックナンバーが検証されたので、Windows PEヘッダに対するポインタを作成するためにe_lfanewメンバーが使用されてよい。IMAGE_NT_HEADERS32ポインタは、e_lfanew値にメモリバッファのサイズを加えることによって計算される。PEヘッダに対するポインタは「01 00h」であるはずである。この場所は、番号「50 45 00h」であるはずのPE署名を含む。この場所が「50 45 00」でない場合、ファイルは疑わしいファイルである可能性がある。
【0154】
一実施形態において、ポインタは逆参照され、IMAGE_NT_SIGNATURE(0x00004550)と比較されてよい。逆参照されたポインタの値がIMAGE_NT_SIGNATURE署名と一致しない場合、ファイルはWindows実行ファイルではない。ファイルフォーマットが何であってよいか、たとえば、DOC、DOCX、PPT、PPTX、XLS、XLSX、MP3、GIF、JPG、PNGなどを決定するために、追加の命令が実行されてよい。
【0155】
一実施形態において、IMAGE_SECTION_HEADERの位置が、IMAGE_NT_HEADERS32のサイズを使用して決定される。PEイメージにおけるセクションの数を含むIMAGE_FILE_HEADERにアクセスするために、IMAGE_NT_HEADERメンバーFileHeaderが逆参照される。各セクションが分析されることができるように、カウンタ変数がゼロに初期化される。プロセスは、セクションの数が予想されているかどうかを決定する。追加のセクションについては疑わしく、マルウェアを含む可能性がある。各セクションについて、セクションの名前および属性が検証される。ファイルのサイズが、セクションのSizeOfRawDataメンバー、およびポインタのサイズとして決定される。このプロセスは、各セクションについて繰り返されてよい。最後のセクションのサイズは、SizeOfRawDataメンバーにおけるバイトの数である。この結果は、PEイメージがストレージデバイス上で占有するはずのバイトの数である。セクション分析によるセクションは、ファイルの全体のサイズを計算するために使用される。
【0156】
ファイルシステムから、ファイルの記憶されたファイルサイズが取り出される。一実施形態において、オペレーティングシステムは、ファイルシステムから、GetFileSize() APIを使用して、ディスク上に記憶されたファイルサイズを取り出す。
【0157】
ファイルの決定されたサイズは、ファイルの記憶されたファイルサイズと比較される。一実施形態において、ファイルの決定されたサイズが記憶されたファイルサイズよりも大きい場合、データはPEファイルの最後に付加されてよい。戻りコードが、付加されるデータがないことを示す場合、PEサイズと記憶されたファイルサイズとが等しい(PEファイルに付加されるデータがない)。決定されたファイルサイズが記憶されたファイルサイズよりも大きいとき、これは追加のデータの存在を示す。
【0158】
ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、ファイルに関してステガノグラフィ検出分析が実行される。一実施形態において、付加されたデータは、そのファイルフォーマットと、それが暗号化されているかどうかとを決定するために分析される。戻りコードが、データが付加されていることを示し、したがって、付加されたデータの隔離、削除、または除去などの定義されたポリシが実行されてよい。ステガノグラフィ検出分析は、ファイルに関して統計関数(エントロピ、カイ二乗など)を実行することを含む。行われる分析は、ファイル種類に依存する。GIFファイルの場合、ZIPファイルに隠されている隠れデータが検索される。EXEファイルの場合、異なる分析が行われてよい。exeファイルの最後を超えた情報が、エントロピ計算、カイ二乗計算、メジアン、および標準偏差計算を実行して暗号化を検出するために使用される。
【0159】
一実施形態において、静的分析アルゴリズムが、ステガノグラフィを検出するために使用される。この手法の利益および利点は、署名スキャンを使用することなくステガノグラフィ検出が行われてよいことである。隠された情報の存在が、インバウンドデータまたはアウトバウンドデータのいずれかにおいて検出される。ファイルの決定されたサイズと記憶されたファイルサイズとの間の比較が、より高価な分析を行うかどうかを決定するために使用される。ファイルサイズ比較は、付加されたペイロードがあるかどうかを決定する。ファイルサイズ比較が、ファイルサイズが通常であることを示すとき、高価な分析は行われない。したがって、デバイス上でファイアウォールとインラインでステガノグラフィを検出することによって、危険なファイルが、それらの秘密のペイロードを放出できる前に、検出、隔離、および除去されることが可能である。他の実施形態において、ステガノグラフィ検出は、ファイアウォール135または電子メールと統合されてよい。
【0160】
ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、ステガノグラフィ修正アクションが実行される。ステガノグラフィを記述する情報がクライアントデバイスに送信される。
【0161】
実施形態のさらなる利益および利点は、方法がファイアウォールにおいてステガノグラフィおよびランサムウェア検出を統合して各パケットをチェックすることである。方法の電子メールシステムとの統合により、各電子メールおよび添付ファイルのコンテンツをスキャンする。本発明は、署名ではなく、疑わしい命令セット、たとえば、マシンまたはアセンブリレベル言語のインジケーションを探す。一実施形態において、方法は、部分的にファイルを逆アセンブルし、そのような疑わしい命令セットを探す。
【0162】
カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のためのプロセス
図8は、実施形態に従う、カーネルモードにおけるステガノグラフィのリアルタイム検出およびステガノグラフィからの保護のための例示的なプロセスを示す。一実施形態において、図8のプロセスは管理ノード100によって行われる。他のエンティティ(たとえばマルウェア分析モジュール140)が、他の実施形態においてプロセスのステップの一部または全部を行ってよい。同様に、実施形態は、異なるおよび/もしくは追加のステップ含み、または異なる順序でステップを行ってよい。
【0163】
管理ノード100は、ファイアウォール、オペレーティングシステム、または電子メールシステムを介するファイルの送信を検出する800。一実施形態において、PEはパースされる。PEを読み取りおよびパースする間に、Windows EXE、DLL、フォント、システムドライバ、およびオブジェクトコードの構造が、疑わしいAPI使用について分析される。
【0164】
管理ノード100は、ファイルのサイズを決定する805。ファイルサイズ決定は、付加された悪意のあるzipファイルまたは実行ファイルなどの許可されていないデータをイメージが含むかどうかを検出するために使用されてよい。たとえば、PEファイルフォーマットの最後に記憶された隠された情報(たとえば、EXE、DLL、SCR、SYS、DRV、ACM、CPL、SCRなど)が識別されてよい。
【0165】
管理ノード100は、ファイルシステムからファイルの記憶されたファイルサイズを取り出す810。一実施形態において、オペレーティングシステムは、ファイルシステムから、GetFileSize() APIを使用して、ディスク上に記憶されたファイルサイズを取り出す。
【0166】
管理ノード100は、ファイルの決定されたサイズをファイルの記憶されたファイルサイズと比較する815。一実施形態において、ファイルの決定されたサイズが記憶されたファイルサイズよりも大きい場合、データはPEファイルの最後に付加されてよい。戻りコードが、付加されるデータがないことを示す場合、PEサイズと記憶されたファイルサイズとが等しい(PEファイルに付加されるデータがない)。決定されたファイルサイズが記憶されたファイルサイズよりも大きいとき、これは追加のデータの存在を示す。
【0167】
ファイルの決定されたサイズがファイルの記憶されたファイルサイズよりも大きいことに応答して、管理ノード100は、ファイルに関してステガノグラフィ検出分析を実行する820。ステガノグラフィ検出分析は、ファイルに関して統計関数(エントロピ、カイ二乗など)を実行することを含む。行われる分析は、ファイル種類に依存する。GIFファイルの場合、ZIPファイルに隠されている隠れデータが検索される。EXEファイルの場合、異なる分析が行われてよい。exeファイルの最後を超えた情報が、エントロピ計算、カイ二乗計算、メジアン、および標準偏差計算を実行して暗号化を検出するために使用される。
【0168】
ステガノグラフィ検出分析がファイルにおけるステガノグラフィの存在を示すことに応答して、管理ノード100は、ステガノグラフィ修正アクションを実行し825、ステガノグラフィを記述する情報をクライアントデバイスに送信する。ステガノグラフィ修正アクションは、ファイアウォールを通過しようと試みているファイルの処理および送信を終了することを含んでよい。ステガノグラフィ修正アクションは、ファイルを隔離することを含んでよい。
代替的実施形態
代替的実施形態において、本明細書に開示されている方法およびシステムは、管理ノード100上にローカルにまたはクラウド(たとえばクラウドホスト105)に記憶された機密データについての保護およびプライバシを強化するために使用されてよい。これらの代替的実施形態を使用して、予め設定された地理的境界を横切る機密データの許可されていないエクスポートが検出および/または防止されてよい。たとえば、実施形態は、特定の地理的領域に機密データをタグ付けし、データをその位置にロックするように使用され、その地理的領域からのデータの許可されていないエクスポートおよび/またはアクセスが監視および防止されるようにしてよい。したがって、代替的実施形態は、データ主体の個人データ、個人を識別できる情報のエクスポートに、ユーザにより大きな制御を提供してよい。また、代替的実施形態は、規制によって指定された合法的基準で行われない限りデータ処理を防止するための方法、およびデータ漏洩の効率的な報告を、企業に提供する。
加えて、代替的実施形態は、データが記憶されるときの仮名化および/または完全なデータ匿名化を企業が提供することを可能にする。一実施形態において、記憶された個人データが暗号化されて、結果の個人暗号化データは、正しい復号キーなしに特定のデータ主体に帰せられないようにされてよい。一実施形態において、トークン化が実装されてよく、それにより、機密データを、外因的なまたは悪用可能な意味または価値を有しない非機密代用物(トークン)に置き換える。トークン化は、データの種類または長さを変更せず、すなわち、それは、データの長さおよび種類に敏感なことがあるデータベースなどのレガシシステムによって処理されることが可能である。この手法の利点および利益は、従来の暗号化されたデータよりも少ない計算リソースおよび小さい記憶スペースで済むことである。保護されたデータに対するマルウェアまたはステガノグラフィ攻撃は、検出されたファイル操作要求に関連付けられたファイルに対するマルウェアまたはステガノグラフィ検出分析を行うことを含めて、開示されている実施形態を使用して、検出および防止されることが可能である。
【0169】
例示的なマシン
図9は、マシン可読媒体から命令を読み取ってそれらをプロセッサまたはコントローラにおいて実行することができる例示的なマシンのコンポーネントを示すブロック図である。具体的には、図9は、コンピュータシステム900の例示的な形態においてマシンの概略図を示す。コンピュータシステム900は、本明細書に説明されている方法論(またはプロセス)の任意の1つまたは複数をマシンに行わせるための命令924(たとえば、プログラムコードまたはソフトウェア)を実行するために使用されることが可能である。代替的実施形態において、スタンドアロンデバイス、または他のマシンに接続する接続(たとえばネットワーク化)されたデバイスとして動作する。ネットワーク化された配置において、マシンは、サーバ/クライアントネットワーク環境におけるサーバマシンもしくはクライアントマシンとして、またはピアツーピア(または分散された)ネットワーク環境におけるピアマシンとして動作してよい。
【0170】
一実施形態において、非一時的コンピュータ可読媒体は、少なくとも1つのプロセッサによって実行されたときに本明細書に説明されている動作をプロセッサに行わせる命令を記憶する。マシンは、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、スマートフォン、モノのインターネット(IoT)機器、ネットワークルータ、スイッチもしくはブリッジ、または、そのマシンによって行われるアクションを指定する命令924(順次または他の形式)を実行することができる任意のマシンであってよい。さらに、単一のマシンのみが示されているが、用語「マシン」は、本明細書に論じられている方法論の任意の1つまたは複数を実施する命令924を個別または共同で実行するマシンの任意の集合も含むように捉えられるべきである。
【0171】
例示的なコンピュータシステム900は、1つまたは複数の処理ユニット(一般にプロセッサ902)を含む。プロセッサ902は、たとえば、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、デジタルシグナルプロセッサ(DSP)、コントローラ、状態機械、1つもしくは複数の特定用途向け集積回路(ASIC)、1つもしくは複数の無線周波数集積回路(RFIC)、またはこれらの任意の組み合わせである。コンピュータシステム900はまた、メインメモリ904を含む。コンピュータシステムは、ストレージユニット916を含んでよい。プロセッサ902、メモリ904、およびストレージユニット916は、バス908を介して通信する。
【0172】
加えて、コンピュータシステム900は、静的メモリ906、ディスプレイドライバ910(たとえば、プラズマディスプレイパネル(PDP)、液晶ディスプレイ(LCD)、またはプロジェクタを駆動する)を含むことができる。コンピュータシステム900はまた、英数字入力デバイス912(たとえばキーボード)、カーソル制御デバイス914(たとえば、マウス、トラックボール、ジョイスティック、モーションセンサ、または他のポインティング機器)、信号生成デバイス918(たとえばスピーカ)、および、やはりバス908を介して通信するように構成されたネットワークインターフェースデバイス920を含んでよい。
【0173】
ストレージユニット916は、本明細書に説明されている方法論または機能の任意の1つまたは複数を具現する命令924(たとえばソフトウェア)が記憶されるマシン可読媒体922を含む。命令924はまた、コンピュータシステム900によるその実行中にメインメモリ904内またはプロセッサ902内(たとえば、プロセッサのキャッシュメモリ内)に完全にまたは少なくとも一部に存在してよく、メインメモリ904およびプロセッサ902もマシン可読媒体を構成する。命令924は、ネットワークインターフェースデバイス920を介してネットワーク926上で送信または受信されてよい。
【0174】
マシン可読媒体922は例示的実施形態において単一の媒体として示されているが、用語「マシン可読媒体」は、命令924を記憶することができる単一の媒体または複数の媒体(たとえば、集中化もしくは分散されたデータベースまたは関連付けられたキャッシュおよびサーバ)を含むように捉えられるべきである。用語「マシン可読媒体」はまた、マシンによって実行するための命令924を記憶することができ、本明細書に開示されている方法論の任意の1つまたは複数をマシンに実施させる、任意の媒体を含むように捉えられるべきである。用語「マシン可読媒体」は、固体メモリ、光媒体、および磁気媒体の形態でデータリポジトリを含むがそれらに限定されない。
【0175】
追加の考慮事項
本明細書を通じて、複数のインスタンスが、単一のインスタンスとして説明されたコンポーネント、動作、または構造を実施してよい。1つまたは複数の方法の個々の動作が別個の動作として示され説明されているが、個々の動作の1つまたは複数が同時に行われてよく、動作が示された順序で行われる必要はない。例示的な構成において別個のコンポーネントとして提示された構造および機能性は、結合された構造またはコンポーネントとして実施されてよい。同様に、単一のコンポーネントとして提示された構造および機能性は、別個のコンポーネントとして実施されてよい。これらおよび他の変形、修正、追加、および改良は、本明細書の主題の範囲内に入る。
【0176】
本明細書では、特定の実施形態は、たとえば、図1ないし4、6ないし7、および9で示され説明されたように、論理もしくはいくつかのコンポーネント、モジュール、または機構を含むものとして説明されている。モジュールは、ソフトウェアモジュール(たとえば、マシン可読媒体に組み込まれたコード)またはハードウェアモジュールのいずれかを構成してよい。ハードウェアモジュールは、特定の動作を行うことができる有形のユニットであり、特定の方式で構成または配置されてよい。例示的な実施形態において、1つもしくは複数のコンピュータシステム(たとえば、スタンドアロン、クライアント、もしくはサーバコンピュータシステム)、またはコンピュータシステムの1つもしくは複数のハードウェアモジュール(たとえば、プロセッサもしくはプロセッサのグループ)が、本明細書に説明されているような特定の動作を行うように動作するハードウェアモジュールとして、ソフトウェア(たとえば、アプリケーションまたはアプリケーション部分)によって構成されてよい。
【0177】
種々の実施形態において、ハードウェアモジュールは機械的または電子的に実装されてよい。たとえば、ハードウェアモジュールは、特定の動作を行うために、たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)のような専用プロセッサとして、永続的に構成された専用回路または論理を含んでよい。また、ハードウェアモジュールは、特定の動作を行うために、ソフトウェアによって一時的に構成された(たとえば、汎用プロセッサまたは他のプログラマブルプロセッサ内に含まれる)プログラマブル論理または回路を含んでもよい。ハードウェアモジュールを、機械的に実装するか、専用の永続的に構成された回路で実装するか、または一時的に構成された(たとえばソフトウェアによって構成された)回路で実装するかは、コストおよび時間を考慮して決定されてよいことは理解されよう。
【0178】
本明細書に説明されている例示的な方法の様々な動作は、該当する動作を行うように一時的に(たとえばソフトウェアによって)構成されまたは永続的に構成された1つまたは複数のプロセッサ、たとえばプロセッサ902によって、少なくとも部分的に行われてよい。一時的に構成されるか永続的に構成されるかにかかわらず、そのようなプロセッサは、1つまたは複数の動作または機能を実行するように動作するプロセッサで実施されるモジュールを構成してよい。本明細書で言及されるモジュールは、いくつかの例示的な実施形態において、プロセッサで実施されるモジュールを含む。
【0179】
1つまたは複数のプロセッサは、「クラウドコンピューティング」環境において、または「サービスとしてのソフトウェア)(SaaS)として、該当する動作の実行をサポートするように動作してもよい。たとえば、少なくとも一部の動作は、(プロセッサを含むマシンの例としての)コンピュータのグループによって行われてよく、これらの動作は、ネットワーク(たとえばインターネット)を介して、および1つまたは複数の適切なインターフェース(たとえばアプリケーションプログラムインターフェース(API))を介してアクセス可能である。
【0180】
特定の動作の実行は、単一のマシン内に存在するだけでなくいくつかのマシンにわたって配置された1つまたは複数のプロセッサの間で分散されてよい。いくつかの例示的実施形態において、1つまたは複数のプロセッサまたはプロセッサで実施されるモジュールは、単一の地理的位置(たとえば、家庭環境、オフィス環境、またはサーバファーム内)に配置されてよい。他の例示的実施形態において、1つまたは複数のプロセッサまたはプロセッサで実施されるモジュールは、いくつかの地理的位置にわたって分散されてよい。
【0181】
本明細書のいくつかの部分は、マシンメモリ(たとえばコンピュータメモリ)内にビットまたはバイナリデジタル信号として記憶されたデータに対する操作のアルゴリズムまたは記号表現の観点で提示されている。これらのアルゴリズムまたは記号表現は、データ処理分野の当業者によって彼らの成果の内容を他の当業者に伝えるために使用される技法の例である。本明細書で使用される場合、「アルゴリズム」は、所望の結果に導く一貫した操作のシーケンスまたは同様の処理である。この文脈において、アルゴリズムおよび操作は物理量の物理的操作を含む。必須でないが典型的には、そのような量は、マシンによって記憶、アクセス、転送、組み合わせ、比較、または他の操作がされることが可能な電気、磁気、または光信号の形態を取ってよい。主に一般的な使用の理由から、「データ」、「コンテンツ」、「ビット」、「値」、「要素」、「シンボル」、「文字」、「用語」、「数」、または「数値」などの単語を使用して、そのような信号に言及することが便利な場合がある。しかしながら、これらの単語は便利なラベルに過ぎず、適切な物理量に関連付けられることになる。
【0182】
特に明記されない限り、「処理」、「コンピューティング」、「計算」、「決定」、「提示」、または「表示」などの言葉を使用する本明細書の説明は、1つもしくは複数のメモリ(たとえば、揮発性メモリ、不揮発性メモリ、もしくはこれらの組み合わせ)、レジスタ、または情報を受信、記憶、送信、もしくは表示する他のマシンコンポーネント内で、物理的(たとえば、電子的、磁気的、または光学的)量として表されるデータを操作または変換するマシン(たとえばコンピュータ)のアクションまたはプロセスを指してよい。
【0183】
本明細書で使用される場合、「一実施形態」または「実施形態」に対する言及は、実施形態に関連して説明される特定の要素、特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。本明細書における様々な箇所での「一実施形態において」という表現の出現は、必ずしもすべてが同じ実施形態を指すものではない。
【0184】
いくつかの実施形態は、「結合された」および「接続された」という表現をそれらの派生語と共に使用して説明されることがある。たとえば、いくつかの実施形態は、直接的な物理的または電気的接触をした2つ以上の要素を指すために「結合された」という用語を使用して説明されてよい。しかしながら、「結合された」という用語は、2つ以上の要素は互いに直接接触していないが互いに協働または相互作用することを意味してもよい。実施形態は、この文脈に限定されない。
【0185】
本明細書で使用される場合、用語「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」またはこれらの任意の他の変形は、非排他的包含を含むことが意図されている。たとえば、要素のリストを含むプロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されず、明示的に挙げられない、またはそのようなプロセス、方法、物品、もしくは装置に固有である他の要素を含んでよい。さらに、逆に明示されていない限り、「または」は包含的論理和を指し、排他的論理和を指すものではない。たとえば、条件AまたはBは、Aが真であり(または存在し)Bが偽である(または存在しない)、Aが偽であり(または存在せず)Bが真である(または存在する)、およびAとBの両方が真である(または存在する)のうちのいずれか1つによって満足される。
【0186】
また、本明細書の実施形態の要素およびコンポーネントを説明するために「a」または「an」の使用が採用される。これは、単に便宜のため、および請求される発明の一般的な意味を与えるために行われる。この説明は、1つまたは少なくとも1つを含むように読まれるべきであり、単数形は、それが別様に意味されることが明らかでない限り複数形も含む。
【0187】
当業者は、本開示を読めば、本明細書の開示された原理を通じてマルウェアを検出するためのシステムおよびプロセスに関するさらに追加の代替的構造および機能設計を理解するであろう。したがって、特定の実施形態および用途が図示および説明されているが、開示された実施形態は、本明細書に開示された正確な構成およびコンポーネントに限定されないことは理解されたい。本明細書に開示された方法および装置の配置、動作、および詳細において、当業者に明らかとなる様々な修正、変更、および変形が、添付の特許請求の範囲に規定された趣旨および範囲から逸脱することなく行われてよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9