(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-24
(45)【発行日】2022-04-01
(54)【発明の名称】マルウェアのランタイム中の自動検出
(51)【国際特許分類】
G06F 21/56 20130101AFI20220325BHJP
G06F 21/55 20130101ALI20220325BHJP
【FI】
G06F21/56 360
G06F21/55 340
(21)【出願番号】P 2020048093
(22)【出願日】2020-03-18
(62)【分割の表示】P 2016542827の分割
【原出願日】2014-09-12
【審査請求日】2020-04-16
(32)【優先日】2013-09-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】516074252
【氏名又は名称】ヴァーセック・システムズ・インコーポレーテッド
【氏名又は名称原語表記】VIRSEC SYSTEMS,INC.
(74)【代理人】
【識別番号】100087941
【氏名又は名称】杉本 修司
(74)【代理人】
【識別番号】100112829
【氏名又は名称】堤 健郎
(74)【代理人】
【識別番号】100154771
【氏名又は名称】中田 健一
(74)【代理人】
【識別番号】100150566
【氏名又は名称】谷口 洋樹
(72)【発明者】
【氏名】グプタ・サチャ・ヴラ
(72)【発明者】
【氏名】デミオ・レイモンド・エフ
【審査官】打出 義尚
(56)【参考文献】
【文献】特開2008-129714(JP,A)
【文献】特開2003-330736(JP,A)
【文献】特開2010-257150(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される方法であって、
ロードタイム中にコンピュータアプリケーション701のモデルを抽出することと、
前記コンピュータアプリケーション701の前記モデルを格納することと、
ランタイムにデータを収集するように、前記コンピュータアプリケーション701に指示を挿入することと、
1つまたは複数のセキュリティイベントを検出するように、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の前記格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含み、
前記モデルはアプリケーション・マップ・データベース719に格納され、前記コンピュータアプリケーション701からの遷移マッピングデータを含み、
前記遷移マッピングデータは、標的アドレスへの遷移指示が判定され得る直接遷移マッピングに対してのものか、または、ランタイムまで前記標的アドレスへの遷移指示が判定されることが阻止されるランタイム依存性を有する間接遷移マッピングに対してのものであり、
前記抽出することは、
前記遷移マッピングデータが、前記間接遷移マッピングに対するものである場合は、標的アドレス
に対する遷移指示の逆アセンブリを前記アプリケーション・マップ・データベース719に格納することと、
前記遷移マッピングデータが、ランタイム依存性を有さない前記直接遷移マッピングに対するものである場合は、前記標的アドレスへの前記遷移指示を前記アプリケーション・マップ・データベース719に格納することと、を含む方法。
【請求項2】
コンピュータにより実行される方法であって、
ランタイムにデータを収集するように、コンピュータアプリケーション701に指示を挿入することと、
1つまたは複数のセキュリティイベントを検出するように、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含み、
前記モデルは、アプリケーション・マップ・データベース719に格納され、前記コンピュータアプリケーション701からの遷移マッピングデータを含み、
前記モデルの前記遷移マッピングデータは、(i)前記遷移マッピングデータが、標的アドレスに対する遷移指示がランタイム依存性を有する間接遷移マッピングに対するものである場合は、標的アドレス
に対する遷移指示の逆アセンブリを含み、(ii)前記遷移マッピングデータが、ランタイム依存性を有さない直接遷移マッピングに対するものである場合は、前記標的アドレスに対する前記遷移指示を含む方法。
【請求項3】
請求項
1に記載の方法において、前記コンピュータアプリケーション701の前記モデルを抽出することが、前記コンピュータアプリケーション701から前記直接遷移マッピン
グおよび前記間接遷移マッピン
グを抽出すること、前記コンピュータアプリケーション701からメモリマッピングデータを抽出すること、前記コンピュータアプリケーション701からソフトスポットデータを抽出すること、および前記コンピュータアプリケーション701によって呼び出されるOS関数およびシステムコールを抽出することを含む方法。
【請求項4】
請求項1に記載の方法において、前記コンピュータアプリケーション701の前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
【請求項5】
請求項
1に記載の方法において、前記コンピュータアプリケーション701はバイナリ形式または
バイトコードインタプリタ形式である方法。
【請求項6】
請求項
1に記載の方法において、さらに、
前記ロードタイム中に保全性のために前記コンピュータアプリケーション701をチェックすることを含む方法。
【請求項7】
請求項
6に記載の方法において、保全性のために前記コンピュータアプリケーション701をチェックすることが、チェックサムを計算することを含む方法。
【請求項8】
請求項
1に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーション701をモデル化する1つまたは複数のテーブルを含むデータベース719に前記モデルを格納することを含む方法。
【請求項9】
請求項
1に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベース719に格納することを含む方法。
【請求項10】
請求項
9に記載の方法において、さらに、
前記コンピュータアプリケーション701の前記モデルを、前記データベース719に格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
【請求項11】
請求項
1または2に記載の方法において、前記コンピュータアプリケーション701に指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
【請求項12】
請求項
1または2に記載の方法において、さらに、
前記ランタイムに収集された前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化
することを含む方法。
【請求項13】
請求項
12に記載の方法において、前記1つまたは複数のプロセスがリモートシステム上に存在する方法。
【請求項14】
請求項
10または12に記載の方法において、さらに、
前記伝送を保証するように、前記伝送
に対するデータ内にカナリア
メッセージ422を配置することを含む方法。
【請求項15】
請求項
1または2に記載の方法において、前記ランタイムに収集された前記データが、前記コンピュータアプリケーション701の1つまたは複数のスレッド用のデータを含む方法。
【請求項16】
請求項
2に記載の方法において、さらに、
前記ランタイムに収集された前記データをリモートシステム上のプロセスから受信することを含む方法および/または前記コンピュータアプリケーション701の前記格納されたモデルをリモートシステム上のプロセスから受信することを含む方法。
【請求項17】
請求項
1または2に記載の方法において、前記ランタイムに収集された前記データを前記コンピュータアプリケーション701の前記格納されたモデルと照合して解析することが、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することを含む方法。
【請求項18】
請求項
1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
【請求項19】
請求項
18に記載の方法において、前記定義済みのシーケンスが
一連の不変イベントに基づく方法。
【請求項20】
請求項
1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む、または、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルの使用を含む方法。
【請求項21】
請求項
1または2に記載の方法において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
【請求項22】
請求項
21に記載の方法において、
前記1つまたは複数の措置がシステムによって自動的にとられるか、または、ユーザ702によってとられる方法、または、
前記1つまたは複数の措置が、前記コンピュータアプリケーション701を終了すること、前記コンピュータアプリケーション701の1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーション701の1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法、または、
前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
【請求項23】
請求項
1または2に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
【請求項24】
請求項1から
23のいずれか一項に記載の方法を実行するように構成されたプロセッサ84を含む装置。
【発明の詳細な説明】
【関連出願】
【0001】
本出願は、2013年9月12日に出願された米国仮出願第61/960,209号の利益を主張する。この米国仮特許出願の全教示内容は、参照をもって本明細書に取り入れたものとする。
【背景技術】
【0002】
サイバー攻撃は日々ますます高度化している。大量の攻撃が特定のアプリケーションにおける特定の脆弱性に付け込むことを対象としている。これらの攻撃は、明らかに不正にみえるネットワーク動作を引き起こさないので、ネットワーク層では識別不可能である。これらの標的型攻撃に対処するために、ベンダの多くは製品を開発している。このような製品としては、例えば、アプリケーションの挙動の追跡を試みる次世代ファイアウォールや、サンドボックスで不審なコードの実行を試みてその不審なコードが不正動作を起こすのを待つというサンドボックス技術などがある。しかし、これらの場合、マルウェアは、単にその挙動にわずかに変更するか、あるいはその悪意ある目的を実行するために長時間待機する。このような挙動の変化によって、製品は攻撃の挙動を認識しにくくなるため、製品のマルウェア検出能力が著しく低下する。
【発明の概要】
【課題を解決するための手段】
【0003】
単一および複数アプリケーション、閉鎖および分散型アプリケーション、独立型アプリケーション、ウェブ上のアプリケーション、およびクラウド上のアプリケーションを含むコンピュータアプリケーションであるが、これらに限定はされるわけではないコンピュータアプリケーションは、マルウェア攻撃に対して脆弱である。今日、コンピュータアプリケーションに対するマルウェア攻撃の大多数は、コンピュータアプリケーションの実行プロセスに不正コンテンツを挿入してその後に実行するという悪意ある行為者の才能に帰結する。そのような不正コンテンツを挿入する工程では、不適当な入力検証を行う不十分に設計されたコードを識別しこれに付け込む。現時点のサイバーセキュリティー技術では、サンドボックスにおいて、アプリケーションにおける不正コンテンツを観察すること、アプリケーションの挙動を追跡すること、または不審なコードの挙動を選別することを試みている。これら技術には、悪質なコンテンツの挿入を示すイベントを確実に検出するために、十分に小さい粒度でリアルタイムにコンピュータアプリケーションを調べる能力は無い。また、これら技術には、マルウェアがその悪質な目的を成功裏に実行する前にマルウェア攻撃を正確に識別するために、そのようなイベントを長い時間かけて追跡し相関させる能力は無い。
【0004】
ある例示的な方法およびその装置は、ロードタイム中(読込み時)にコンピュータアプリケーションのモデルを抽出して格納する。この例示的な方法およびその装置はまた、ランタイムにデータを収集するように、ロードタイムにコンピュータアプリケーションに指示を挿入する。ランタイムに収集されたデータは、コンピュータアプリケーションの格納されたモデルと照合して解析されて、1つまたは複数のセキュリティイベントが検出される。この方法およびその装置は、状態マシンを用いて、攻撃者によって引き起こされた1つ以上のセキュリティイベントを追跡する。
【0005】
いくつかの実施形態において、上記方法およびその装置は、コンピュータアプリケーションデータのモデルの一部として、以下のうちの1つ以上を抽出してもよい:遷移マッピングデータ、メモリマッピングデータ、ソフトスポット(脆弱箇所)データ、および/またはコンピュータアプリケーションが呼び出す、アクセス許可および権限に影響するOS関数またはシステムコール。これら情報はモデルデータベースに格納されてもよい。さらに、上記方法およびその装置は、少なくとも一部においてコード逆アセンブラを用いてコンピュータアプリケーションのモデルを抽出してもよい。抽出されたコンピュータアプリケーションはバイナリ形式やインタプリタ形式を含む種々の形式であってもよい。
【0006】
例示的な実施形態において、上記方法およびその装置は、ロードタイム中に保全性のためにコンピュータアプリケーションをチェックしてもよい。上記方法およびその装置は、コードのMD5ハッシュなどのチェックサムを計算することにより、または信頼できるチェックサム検査サービスを用いて、保全性のために前記コンピュータアプリケーションをチェックしてもよい。
【0007】
いくつかの実施形態において、モデルデータベースは、コンピュータアプリケーションをモデル化する1つ以上のテーブルを含む。さらに、モデルデータベースはローカルまたはリモートシステム上にあってもよい。モデルデータベースがリモートシステム上にある場合、上記方法およびその装置は、コンピュータアプリケーションのモデルを、リモートシステムへ伝送してデータベースに格納するために、パッケージ化してもよい。データベースのパッケージ化されたモデルは、TCP/IPまたはUDPなどの標準ベースのトランスポートプロトコルを用いて送信されてもよい。
【0008】
例示的な実施形態において、上記方法およびその装置は、ダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジン(バイトコードデータ・データ記録手段装備・エンジン)を用いて、ロードタイムにおいてコンピュータアプリケーションにインストルメンテーション(データ記録手段装備)の指示を挿入する。データ記録手段が装備されたアプリケーションを実行すると、ランタイムに収集されたデータを、解析用に他のプロセスへの伝送のために、パッケージ化してもよい。この解析用の他のプロセスは、ローカルまたはリモートシステム上にあってもよい。さらに、ランタイムに収集されたデータは、コンピュータアプリケーションの1つ以上のスレッドのデータを含んでもよい。
【0009】
いくつかの実施形態において、ランタイムに収集されたデータをコンピュータアプリケーションの格納されたモデルと照合して解析する時、上記方法およびその装置は、以下のうちの1つ以上を解析してもよい:遷移データ、アクセス許可および権限に影響する重要なOS関数およびシステムコール、メモリ書込み、ヒープ割当てまたは割当て解除、および/またはソフトスポットデータ。
【0010】
例示的な実施形態において、状態マシンを用いて1つ以上のセキュリティイベントを追跡することは、定義済みのシーケンスに基づいてイベントを相関させることを含む。1つ以上のセキュリティイベントを追跡することは、そのイベントのためのフォレンジックデータを入手することも含んでよい。ある実施形態では、1つ以上のセキュリティイベントを、重大度レベルを用いて追跡してもよい。さらに、1つ以上の措置を、1つ以上のセキュリティイベントの発生に応じてとってもよい。ある例示的な実施形態では、イベントに応じた1つ以上の措置を、システムにより自動的にとってもよい。他の例示的な実施形態では、1つ以上の措置を、ユーザによる手動介入の後にとることもできる。いくつかの実施形態では、1つ以上の措置は、以下のうちの1つ以上を含んでもよい:コンピュータアプリケーションの1つ以上のスレッドを終了すること、コンピュータアプリケーションの1つ以上のスレッド上の通信ソケットを閉じること、アプリケーションを終了すること、イベントを記録すること、および/または1つ以上のセキュリティイベントに応答して警報を発すること。
【0011】
前述の内容は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図をとおして、同一の構成要素は同一の符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
【図面の簡単な説明】
【0012】
【
図1】高度な持続的マルウェア脅威の構成の一例を示す図である。
【
図2】コード実行型攻撃を示す一連の不変イベントを示す図である。
【
図3】クライアントにより実行されるロードタイム動作のフローチャートである。
【
図4】クライアントと解析エンジンとの間でデータを送信するために使用されるプロトコルデータユニット(PDU)を示す図である。
【
図5】ランタイムに収集したデータに基づくイベントを生成するために解析エンジンが用いるプロセスのフローチャートである。
【
図6】生成されたイベントを追跡するために使用されるイベントチェーン状態マシンを示す図である。
【
図7】クライアントおよび解析エンジンのブロック図である。
【
図8】本発明の各実施形態が実装されるコンピュータネットワークまたは同様のデジタルプロセス環境を示す図である。
【
図9】
図8に示すコンピュータシステムにおけるコンピュータ(例えば、クライアントプロセッサ/装置、またはサーバコンピュータ)の内部構造を示す図である。
【発明を実施するための形態】
【0013】
発明の例示的な実施形態を以下に説明する。
本願明細書で参照する、全ての特許、全ての公開された出願、および全ての引例の教示内容は、参照をもって本明細書に取り入れたものとする。
【0014】
図1に、高度な持続的マルウェア脅威の一例を示す。この場合、悪意ある行為者(すなわちハッカ)が自身のインフラストラクチャ102から、エヌマップ(nmap)104などのスキャンツールを用いて、企業のインフラストラクチャ108に向けてウェブを遠隔的にスキャンする。このスキャンにより脆弱性(既知の脆弱性またはゼロデイ脆弱性)を有するサーバを発見すると、行為者はシェルコード106をインストールして離れた企業サーバ110を乗っ取り、企業ネットワークにアクセスする。ネットワークの内部に入ると、悪意ある行為者は追加のツール104をロードする。これらツールとしては、エヌマップ、ポートスキャナー、パスワード・クラッキングツール、ftpクライアント、圧縮ツール、ハッシング、および/または暗号化・復号化ツールが挙げられる。
【0015】
行為者は、企業インフラストラクチャにアクセスし、高い権限を有するユーザがデータベースやファイルリポジトリなどの価値ある標的にログインするためのマシン114または116を探して、ユーザのアクセス認証情報(access credentials)を無効化し、追加のハッキングツールを忍ばせる所を探す。脆弱なアプリケーションを有するマシン114または116を見つけると、悪意ある行為者は認証情報を無効化し、侵入し、その後標的118にアクセスする。標的がアクセスされると、ハッキングのための追加のツール104が標的にロードされる。マルウェアはまた、権限を有するユーザが自身のマシンをコーヒーショップ、空港、ホテルなどの無防備なネットワークを介して持ち込んだ際に、ユーザのスマートフォンやラップトップなどの移動端末装置に入り込める。これとは別に、内部ユーザが標的マシンを感染させるかもしれない。
【0016】
高度なパスワード・クラッキングツールまたはスヌーピング・イントラネット・トラフィックを用いることによって、マルウェアは管理ユーザ116の認証情報を取得し得る。悪意ある行為者は、認証情報を取得した後、データベースやファイルリポジトリ118に罰せされることなく接続でき、実名、自宅住所、社会保障番号、運転免許証、生年月日、医療記録、クレジット/デビットカードなどの金融情報、電話番号、電子メールアドレス、ユーザ名およびパスワード、ならびに保険情報などの価値あるデータを抽出し得る。悪意ある行為者は、これら情報を随意に圧縮および暗号化でき、企業セキュリティ分析者の注意を引かないように小さいサイズに分割してハッカ・コマンド・コントロールセンター112にアップロードし得る。目的を達成するために、悪意ある行為者は、ハッカ・コマンド・コントロールセンター112のIPアドレスを毎日変更したり、プロキシを使用したりしているため、企業の侵入検知システムはパターン化した状況を確認できない。企業は通常毎日10GBを超えるデータを送受信しているため、短いバーストでの比較的少量のデータのアップロードは気付かれないことが多い。
【0017】
このような場合の一連のイベントを確実に検出しブロックできることが、高度な持続的脅威を妨害するための鍵となる。最近のサイバー・セキュリティツールには4つの主要な欠点がある。まず、これらツールは十分に小さい粒度でアプリケーションを検査していない。この機能なしでは、攻撃の多くの兆候を確実に見分けることができない。次に、これらツールは長い時間をかけて攻撃を追跡する機能を有しない。通常のセキュリティ情報およびイベント管理(SIEM)システムは、通常24時間イベント(大きすぎる粒度のイベント)を相関させるだけである。マルウェアは、検出を逃れるために十分長い時間休止状態に留まることがある。長時間確実に攻撃を追跡する機能なしでは、攻撃に寄与する個々の不正イベントは独立した相関のないイベントにみえる。
【0018】
また、これらサイバー・セキュリティツールは、攻撃の前兆となるイベントの閾値の設定をセキュリティ分析者に頼っている。例えば、セキュリティ分析者が、毎時ある回数のポートスキャンおよびログインの試みが日常的に行われることを当然とみなすかもしれない。この場合、問題は、警報のきっかけとなる、発信元毎の毎時のポートスキャンの試みの数が一体いくつであれば多すぎるのか、ということである。警報の発生が早すぎる場合、分析者は、悪意のないポートスキャンまたは合法的なユーザによるログインの失敗までも調査するかもしれない。警報の発生が遅すぎる場合、マルウェアによる攻撃はすでに成功しているかもしれない。さらに、これらツールは、攻撃を効果的に検出するには基本情報が不十分である。真正な警報を発生するには、良性イベントと不正イベントを確実に識別するツールが必要である。悪意ある行為者は、同じサインもしくは既知の不審なネットワークまたはアプリケーション挙動を認識するであろう。したがって、悪意ある行為者は攻撃の挙動を微調整できる。例えば、データをコード化する暗号化を用いたり、IPとポートの組み合わせを変更したり、基本情報を用いて指定した挙動に基づく検出を逃れるために攻撃速度を落としたりできる。
【0019】
図2は、コード実行攻撃(コードを実行することによる攻撃)の一連の不変(動かし難い)イベントを示す。複数のコード実行攻撃のような種々のマルウェア攻撃について、マルウェア攻撃の対応するイベントチェーンは一連の不変イベントによって表現される。これらイベントは、特定のマルウェア攻撃を追跡するコンピュータのプロセスメモリ内に格納される。以下に、コード実行攻撃の符号202から符号216までの一連の不変イベントによって表現された挙動について述べる。
【0020】
コード実行攻撃を実行するにあたり、悪意ある行為者がパッチされていないアプリケーションまたはいわゆるゼロデイ脆弱性を探し当てると、行為者は特別に練ったペイロードである不良コンテンツを作成する。このペイロードは202において、直接またはネットワークを介して、コンピュータシステムの中央処理装置(CPU)上で実行される標的プロセスに送信され、CPUがコンピュータアプリケーションの指示を呼び出すことを阻止し、このペイロードは代わりに不正ペイロードの指令による指示を呼び出す。この特別に練られたペイロードは、標的となるアプリケーションに応じて、多くのメカニズム、例えばネットワークソケットやキーボードさらにはファイルまでを介して、アプリケーションに挿入される。
【0021】
206において、攻撃中に挿入された不正ペイロードを起動するために、マルウェアは多数の攻撃ベクトルのうちの1つを強化する。コード実行攻撃の場合、204において、マルウェアはバッファのエラーまたはユーザの無知に付け込む。攻撃ベクトルの他の例としては、単純なスタック・スマッシュ(Stack Smashing)アプローチ、フォーマット指定子の使用、擬似乱数スタック・カナリアの発見、例外ハンドラ・テーブルのオーバーラン、またはリターン・オリエンテッド・プログラミング(ROP)ガジェット、ならびに多数の追加のベクトルが挙げられる。
【0022】
本格的な不正動作を開始する前に、マルウェアは検出技術が働かなくなるように十分に長い時間休止状態になる。例えば、不審な動作に対してEメール検査するサンドボックス技術は、最終的に諦めて受信者にEメールを届けるに違いない。その後のある時点で、マルウェアは212において、その意図することの実行を開始するために、既存のアプリケーションスレッドを用いるかまたは1つ以上の新規のスレッドをスピンする。場合によっては、既存のスレッドの使用はユーザの注意を引き、新しいスレッドのスピンはユーザに気付かれない。これは、ほとんどのセキュリティ対策が、新しいスレッドのスピンが不正動作であるか無害動作であるかを判断できないからである。アプリケーション内に糸口となるものを作成して、マルウェアは210において、悪意ある行為者のコマンド・コントロールセンター(C&C)との接続性を確立する。企業ファイアウォール内部からの接続性が確立すると、マルウェアは208において、上記スレッド上で、パスワード・クラッキングツール、ポート・スキャンツール、暗号化ツールなどのさらなるマルウェアを、ファイル・ブラックリスティング対策の注意を引かないように複数のビットやデータ単位に分けてダウンロードする。
【0023】
ツールがダウンロードされると、マルウェアは、感染したマシンおよび感染したマシンから到達可能なすべてのマシンからの有用なコンテンツの抽出を図る。
図2に示すコード実行攻撃では、マルウェアは、高い権限を有するユーザを見つけるまで企業を検索し続けるかもしれない。代わりに、企業においてSMB/NETBIOS/CIFSトラフィックのようなトラフィックを嗅ぎ分けて、権限を有するユーザの名前を見つけ、その認証情報にログインするかもしれない。代わりに、パスワード・クラッキングツールを使用したり、推測したパスワードの寄せ集めとパスワードファイルのコンテンツとを単純に比較したりするかもしれない。現在の処理能力であれば、8ワード長のパスワードは数時間で解読可能である。
【0024】
権限を有するユーザの認証情報の抽出後、マルウェアは十分に強化されて、感染したマシンおよび感染したマシンから到達可能なすべてのマシンから有用なコンテンツを抽出するという作業に着手する。到達可能なマシンのリストには、データベースサーバ、コードリポジトリ、または価値ある設計書類を有するCADマシンが含まれる。価値あるコンテンツが抽出されると、マルウェアは、攻撃が最高潮に達する前に、データを暗号化または216においてコマンド・コントロールセンターにアップロードするかもしれない。データが暗号化された場合、悪意ある行為者は身代金要求を用いて標的に接触するかもしれない。
【0025】
図3は、本開示の原理に従った、例示的なクライアント(ここでは解決クライアントと称す)が、ロードタイムにおいてマルウェア動作の検出に備えるために行う操作を示す。経路妥当性確認エンジンは解決クライアントの一部であり、マルウェアが起動した時点からマイクロ秒以内にマルウェア動作を確実に検出できる。解決クライアントはまず保全性(integrity)を検証し、その後アプリケーションのモデルを抽出するためにアプリケーションの各モジュールを分析する。アプリケーションのモデルはアプリケーション・マップ・データベースに格納される。アプリケーション・マップ・データベースは以下のテーブルを含んでもよい:コードテーブル、エクスポートテーブル、Vテーブル、アザーテーブル(他のテーブル)、基本ブロックテーブル、ソフトスポットテーブル、メモリ被演算子テーブル、遷移テーブル、逆アセンブリテーブル、重要OS関数テーブル。
図3に示す実施形態では、アプリケーション・マップ・データベースは、解決クライアントからのリモートシステム上に配置される。他の実施形態では、アプリケーション・マップ・データベースは、アプリケーションが実行されているハードウェア上、または解決クライアントおよび解析エンジンの外部にあるハードウェア上に格納される。解決クライアントは、ストリーミングエンジンを使用して、解析システムのアプリケーション・マップ・データベースに格納すべきデータを送付するように、抽出されたアプリケーションモデルを複数の解決プロトコル・データユニット(PDU)にパッケージ化する。PDU構造を
図4に示す。
【0026】
302において解決クライアントがロードタイムにアプリケーションの処理を開始した後、304および306において、同じ操作がコンピュータアプリケーションの各モジュールのループにおいて行われる。アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、マシンコード逆アセンブラまたはバイトコード逆アセンブラなどの逆アセンブラを用いて所定のモジュールのすべての実行ファイルおよびライブラリを検査する。アプリケーションファイルのモジュールは、実行リンク可能フォーマット(ELF)や共通オブジェクト・ファイル・フォーマット(COFF)などの標準ファイル・フォーマットである。このフォーマットのアプリケーションのモジュールは、コードセクション、エクスポートされたデータセクション、vテーブル・セクション、および他の追加的セクションなどのセクションに整理される。アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、これらデータセクションをアプリケーションモデルの一部として抽出する。モジュールのコードセクションの境界およびアクセス属性は、314において、コードテーブル内のアプリケーション・マップ・データベースに送付(ディスパッチ)され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}という形式を有する。モジュールのコードセクション内の各基本ブロックの境界および指示数(指示の数)は、330において、基本ブロックテーブル(Basic Block Table)内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス,および指示数}という形式である。モジュールのエクスポートされたデータセクションの境界およびアクセス属性は、318において、エクスポートテーブル内のアプリケーション・マップ・データベースに格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}形式である。モジュールのvテーブルセクション(もしあれば)の境界およびアクセス属性は、322において、Vテーブル(V Table)内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス}形式である。モジュールのすべての他のセクションの境界およびアクセス属性は、326において、アザーテーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{開始アドレス,終了アドレス,および保護属性}という形式である。
【0027】
各モジュールがメモリへロードされる時、解決クライアントはアプリケーションのモジュールから、他のメモリマッピングデータおよびソフトスポットデータをも抽出する。メモリマッピングデータは、メモリ割当て、メモリ割当て解除、およびメモリの重要セグメントへのメモリ書込みの指示を含む。ソフトスポットデータは、ループを実行する指示(例えば、REPスタイル演算コード付き指示)を含む、大規模メモリバッファ(ソフトスポット)を操作するための指示を含む。ソフトスポット指示のアドレスおよび各メモリ書込みのサイズは、334において、ソフトスポットテーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{アドレス,書込みサイズ}という形式である。このアドレスおよび書込みサイズは、宛先がメモリ被演算子であるメモリ書込み指示のために格納されることになる。このデータは、340において、メモリ被演算子書込みテーブル内のアプリケーション・マップ・データベースに格納される。このテーブルの各レコードは{発信元アドレス,メモリ書込みサイズ}という形式である。
【0028】
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントはモジュールから遷移マッピングデータ(分岐転送または遷移データ)をも抽出する。遷移マッピングデータは、標的アドレスへの遷移指示をその時点において判定できる直接遷移マッピング、または標的アドレスへの遷移指示がランタイム依存性を有する間接メモリマッピングのためのものである。ランタイム依存性を有するため、遷移指示は、完全に判定されることがランタイムまで阻止される。間接遷移が生じる指示の完全な逆アセンブリは、324において、逆アセンブリテーブル内のアプリケーション・マップ・データベースに送付され格納される。抽出されたすべての遷移マッピングもまた、324および332において、遷移テーブル内のアプリケーション・マップ・データベースに送付され格納される。このテーブルの各レコードは{発信元アドレス,宛先アドレス}という形式である。また、320において、ランタイム以前に、オペレータはマップ遷移テーブルに手動で遷移マッピングデータを追加できる。マップ遷移テーブルに手動でレコードを追加する際、オペレータは、マルウェアによる遷移テーブルの変更を排除するために、2要素認証プロセスを用いた認証が必要である。
【0029】
遷移マッピングは、マルウェアが起動した時点からマイクロ秒以内にマルウェア動作を確実に検出するために、経路妥当性確認エンジンの機能の中心をなす。遷移マッピングの概念は、ソースコードの検査により一層理解される。以下に示すサンプルソースコードでは、関数main()は、ライブラリで定義された関数printf()を呼び出すが、関数notCalled()は呼び出さない。コンパイラおよびリンカがこのコードを処理し、作成されたバイナリが検査された後、関数main()、printf()、およびnotCalled()の相互関係またはその欠如が保存される。関数main()は関数printf()に対して「遷移」を有すると言える。この遷移は{Address SRC -> Address DST}で表され、Address SRCは関数main()において関数printf()が呼び出された指示のアドレスを示し、Address DSTは関数printf()のアドレスを示す。発信および標的はシステムコールまたは例外ハンドラであってもよい。上記のようなレコードは、アプリケーションの遷移マップテーブルにおいて単一のレコードである。
【0030】
【0031】
上記例はコンパイル言語であるC/C++で記述されているが、ソースコードにおける遷移間の類似性は、インタープリタコードやJITコンパイルされたコードなどを含む、その他の言語で記述されたコードにおいても想定できる。Java(登録商標)のような解釈型言語で記述した同じ例を以下に示す。
【0032】
/*
Java Hello World example.
*/
public class HelloWorldExample {
public static void main(String args[]){
System.out.println("Hello World !");
}
public static void notCalled() {
System.out.println("Feeling lonely !");
}
}
【0033】
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは308において、保全性のためにアプリケーションをチェックする。一実施形態においては、このチェックは、モジュールがロードされている時にコードのMD5ハッシュなどのチェックサムを計算し、このチェックサムをチェックサム・データベースに格納された対応する既知のグッドチェックサムと比較することによって行う。代わりに、信頼できるチェックサム検査サービスを活用してもよい。これは、現在ロード中のモジュールのコードが未だマルウェアにより破損されていないことを保証する。解決クライアントは、保全性チェックが失敗した場合に、310において警報を発するよう構成されてもよい。
【0034】
ロードタイムに、312および316において、アクセス許可および権限に影響する特定のOS関数およびシステムコールが識別され、これらのアドレスが重要OS関数テーブルに送付され格納される。解決クライアントにより送付された特定のOS関数およびシステムコールは、実行ファイルの実行経路に遠大な影響を及ぼすものである。これら管理用の重要OS関数およびシステムコールは、メモリセグメントのアクセス許可を変更し、アクセス権限を増大し、非実行ポリシーを変更し、構造化された例外ハンドラ保護を変更し、アドレス・スペース・レイアウト乱数化ポリシーを遮断し、メモリの割当ておよび割当て解除を行い、新しいプロセスを作成し、新しいスレッドを作成し、またはデータの暗号化および解読に関与する。
【0035】
アプリケーションの各モジュールがメモリへロードされる時、解決クライアントは、ランタイムにデータを収集するために、アプリケーションのモジュールに挿入される指示に追加的にデータ記録手段を装備する。データ記録手段が装備されたコードは、動的バイナリ解析エンジンおよび/またはバイトコード・インストルメンテーション・エンジンを用いてアプリケーションのモジュールに挿入される。ソフトスポット指示には、338において、ループを実行する指示などのマルウェアが攻撃しそうな領域において、データ記録手段が装備されて、ランタイムにこれら領域で動作を追跡するためのデータを収集する。直接的・間接的遷移マッピング指示は、328において、モジュールにデータ記録手段が装備されて、ランタイムに遷移マッピングに関与する動作を追跡するためのデータを収集する。メモリ被演算子書込み指示には、336において、モジュールにデータ記録手段が装備されて、ランタイムにメモリ書込み動作に関するデータを収集する。自己修飾コードがある場合は、基本ブロックがランタイムにおいて変化するかもしれない。また、312および316において、アプリケーション内に指示にはデータ記録手段が装備されて、重要OS関数テーブルに格納されたOS関数およびシステムコールに関与する動作のためのデータを収集する。
【0036】
ロードタイムにおいて挿入されるデータ記録手段を装備した結果、ランタイムにおいて重要な情報が生成され分析のために収集される。遷移マッピングデータ関連のデータ記録手段の装備がアクセスされた時、解決クライアントは、スレッドID、現在の指示アドレス、宛先指示アドレス、および、随意に、各汎用レジスタに収納されたデータを収集する。指示が実行される前にソフトスポットのデータ記録手段の装備がアクセスされるため、解決クライアントは、適当なレジスタを介してスレッドIDおよびスタックの境界を入手する。ソフトスポットのデータ記録手段の装備が完了した時、解決クライアントは、スレッドID、およびこの書込み動作により更新されたメモリの領域の推定を可能とする数個の汎用レジスタを入手する。コールが実行される前に重要なAPIまたはOSコールのデータ記録手段の装備がアクセスされる場合、解決クライアントはスレッドID、API名またはシステムコール番号、および入力パラメータを入手する。コールが実行された後に重要なAPIまたはOSコールのデータ記録手段がアクセスされる場合、解決クライアントはスレッドID、API名またはシステムコール番号、および戻り値を入手する。メモリの割当てまたは割当て解除を行うOS関数またはシステムコールにおけるデータ記録手段の装備は、アプリケーションが作成したかもしれない種々のヒープに現在関与しているメモリの領域の追跡を援助する。このメモリ・エンベロープは、マルウェアがヒープにおけるコントロール構造をオーバーランさせようとしているか否かを見つけるために、ランタイムにおいて間接的メモリ書込みの標的を追跡するのに活用される。また、キャッシュを用いて基本ブロックの境界を追跡することにより、解析エンジンは基本ブロックが変化したか否かを判定できる。この判定が肯定である場合、モデルデータベース内の基本ブロックテーブルが更新される。
【0037】
この例示的な実施形態では、解決クライアントは入手した情報をストリーミングエンジンへ送付して、解析エンジンに伝送すべくPDUとしてパッケージ化する。ストリーミングエンジンは、パイプまたはローカル・プロシージャ・コールなどの極めて低いオーバーヘッドOSアーティファクトを用いて、種々のデータ記録手段装備により生成されたデータを別のプロセスに移動させる。これにより、データ記録手段が装備されたプロセスはその通常の動作を継続できる。この例示的な実施形態では、ストリーミングエンジンは、適切な標準ベースのトランスポートプロトコルを用いて、データ記録手段から収集した情報を、解析エンジンへのさらなる伝送のために解決PDUにおいてパッケージ化してもよい。一実施形態では、トランスポートプロトコルはTCP/IPでもよい。他の実施形態では、トランスポートプロトコルはUDPでもよい。さらに他の実施形態では、トランスポートプロトコルは、パイプやローカル・プロシージャ・コールなどの共有メモリ技術を用いることを含んでもよい。
【0038】
図4に解決PDUを示す。解決クライアントおよび解析エンジンは互いに効果的に作業するために、解決PDUを用いて相互通信する。解決PDUは、特に解決クライアントにより、抽出されたアプリケーションモデルおよび/または収集されたランタイムデータを解析エンジンへの伝送用にパッケージ化するために用いられる。解決PDUは、解決クライアントと解析エンジンとの間で送信される各種情報のためのフィールドを含む。解決PDUは、アプリケーション提供データセクション、HW/CAE生成セクション、およびコンテンツ解析エンジンまたは生データ(ローデータ)セクションに分割される。
【0039】
アプリケーション提供データセクションは、種々のレジスタからのデータと、このセクションの種々のフィールドに配置された発信元アドレスおよび標的アドレスとを含む。プロトコルバージョンは解決PDU402のバージョン番号を含む。解決プロトコルバージョンが経時変化する場合、発信元および宛先は互いの通信を継続できる必要がある。この8ビットフィールドは、発信元エンティティにより生成された際の解決パケットのバージョン番号を表す。現在未使用の予約されたフィールド404はプロトコルバージョンフィールドに続く。
【0040】
アプリケーション提供データセクションにおける次のフィールドはメッセージ発信元/宛先識別子406、408および410である。これらは
図7に示す解析エンジンのインフラストラクチャ内でのトラフィックの交換に用いられる。
図7に示す種々のエンティティは、時々トラフィックを交換する。これら装置のすべてがIPアドレスを有するかまたは必要とするわけではないので、2つの(ハードウェアおよびホスト)照会ルータ・エンジンは、内部でトラフィックをルーティングするためにメッセージ発信元および宛先フィールドを用いる。いくつかのメッセージは、解析エンジンのエンティティに辿り着くためにネットワークを横切る必要がある。そのために、エンティティには以下のIDが割り当てられる。所定の解析エンジン機器は2つ以上のアクセラレータ・カードを有してもよい。各カードは固有のIPアドレスを有する。したがって、種々のエンティティは固有のIDを有する。上述したインフラストラクチャは2つ以上のアプリケーションを実行してもよい。各アプリケーションサーバは固有のIPアドレスを有することになるので、対応する解決クライアント側エンティティもまた固有のIDを有する。
【0041】
<解決クライアント側エンティティ>
1.解決GUI(Resolve GUI)
2.インストルメンテーションおよび解析エンジン(Instrumentation and Analysis Engine)
3.クライアント・メッセージ・ルータ(Client Message Router)
4.ストリーミング・エンジン(Streaming Engine)
5.クライアント側デーモン(Client Side Daemon)
6.CLIエンジン(CLI Engine)
7.クライアント監視(Client Watchdog)
8.クライアント圧縮ブロック(Client Compression Block)
9.クライアント・iワープ・イーサネット(登録商標)・ドライバ(100Mb/1Gb/10Gb)(Client iWarp Ethernet Driver (100 Mb/1Gb/10Gb))
<PCI毎・カード・エンティティ(先頭アドレス=20+n×20)>
20.セキュラライザTOEブロック(Securalyzer TOE block)
21.セキュラライザPCIブリッジ(Securalyzer PCI Bridge)
22.解凍ブロック(Decompression Block)
23.メッセージ検査ブロック(Message Verification Block)
24.パケット・ハッシング・ブロック(Packet Hashing Block)
25.タイムスタンプ・ブロック(Time-Stamping Block)
26.メッセージ・タイムアウト・タイマ・ブロック(Message Timeout Timer Block)
27.統計カウンタ・ブロック(Statistics Counter Block)
28.セキュラライザ照会ルータ・エンジン(Securalyzer Query Router Engine)
29.セキュラライザ・アシスト(Securalyzer Assist)
<セキュラライザ・ホスト・エンティティ>
200.セキュラライザPCIeドライバ(Securalyzer PCIe Driver)
201.ホスト・ルーティング・エンジン(Host Routing Engine)
202.コンテンツ解析エンジン(Content Analysis Engine)
203.ログ・マネージャ(Log Manager)
204.デーモン(Daemon)
205.ウェブ・サービス・エンジン(Web Service Engine)
206.監視(Watchdog)
207.IPCメッセージング・バス(IPC Messaging Bus)
208.コンフィギュレーション・データベース(Configuration Database)
209.ログ・データベース(Log Database)
<SIEMコネクタ>
220.SIEMコネクタ1‐Virsecダッシュボード(SIEM Connector 1‐Virsec Dashboard)
221.SIEMコネクタ2‐HP ArcSight(SIEM connector 2‐HP ArcSight)
222.SIEMコネクタ3‐IBM QRadar(SIEM connector 3‐IBM QRadar)
223.SIEMコネクタ4‐Alien Vault USM(SIEM connector 4‐Alien Vault USM)
<セキュラライザ・インフラストラクチャ・エンティティ>
230.Virsecダッシュボード(Virsec dashboard)
231.SMTPサーバ(SMTP Server)
232.LDAPサーバ(LDAP Server)
233.SMSサーバ(SMS Server)
234.資格サーバ(Entitlement Server)
235.データベース・バックアップ・サーバ(Database Backup Server)
236.OTPクライアント(OTP Client)
237.OTPサーバ(OTP Server)
238.チェックサム・サーバ(Checksum Server)
239.チケッティング・サーバ(Ticketing Server)
240.Virsecルール・サーバ(Virsec Rules Server)
241.Virsec更新サーバ(Virsec Update Server)
<オール・ユーザ・アプリケーション>
255.ユーザアプリケーション‐照会を発行するアプリケーションを識別するためにアプリケーションPIDが使用される。
【0042】
アプリケーション提供データセクションの他のフィールドには、送信されているデータのタイプを示すメッセージ・タイプ・フィールド412がある。最上位レベルで、種々のローカルな解決クライアント側エンティティ間、解析エンジン機器側エンティティ間、およびクライアント側エンティティと機器側エンティティの間を流れる3つの異なるタイプのメッセージがある。さらに、ネットワークを移動する必要のあるメッセージは、OSIモデルおよび他のプロトコルに適合する必要がある。
【0043】
アプリケーション提供データセクションにおける次のフィールドは、パケットのシーケンス識別子を含むパケットシーケンス番号フィールド414である。ストリーミングエンジンは、損失パケットのエラー回復が可能である。そのために、ストリーミングエンジンは一意にパケットを識別する必要がある。インクリメントする符号付の64ビットパケットシーケンス番号は、ストリーミングエンジンにより挿入され、残りの解析エンジンのインフラストラクチャを単に通過する。シーケンス番号が64ビット境界で完了すると、0からリスタートする。ハートビート、ログメッセージ等の非アプリケーションパケットの場合は、パケットシーケンス番号は-1であってもよい。
【0044】
アプリケーション提供データセクションは、暗号化のために使用されるカナリア(canary)を含む解決カナリア・メッセージフィールド422をも含む。解決クライアントおよび解析エンジンは、アプリケーション・ラウンチタイム、PID、ライセンス・ストリング、および許可されたユーザ名などの一般的な情報(ただし、新しい性質の情報)からのカナリア計算方法を認識している。
【0045】
アプリケーション提供データセクションはさらに、すべてのメッセージにおいて使用される汎用フィールドを含む。アプリケーション発信元指示アドレス458、アプリケーション宛先指示アドレス416、メモリ開始アドレスポインタ418、メモリ終了アドレスポインタ420、アプリケーションPID424、スレッドID426、解析エンジン到着タイムスタンプ428、および解析エンジン出発タイムスタンプ430など、汎用アプリケーションデータを保持するフィールドである。
【0046】
解決PDUはHW/CAE生成セクションをも含む。解析を容易にしかつ固定の時間制約を守るために、解析エンジンは発信元・宛先アドレスフィールドをハッシュし、処理の前に解決PDUを更新する。解決PDUのHW/CAE生成セクションは、後に使用するハッシュデータが配置されるものである。このセクションは、ハッシュ・アプリケーション発信元指示アドレス432、ハッシュ・アプリケーション宛先指示アドレス434、ハッシュ・メモリ開始アドレス436、およびハッシュ・メモリ終了アドレス438のフィールドを含む。HW/CAE生成セクションはさらに、解決カナリア442に関する他のフィールドを含む。これらフィールドは、ハードコード化コンテンツ開始マジックヘッダ、API名マジックヘッダ、コール・コンテキスト・マジックヘッダ、およびコール生データ・マジックヘッダであって、すべての解決PDUパケットに存在する。
【0047】
HW/CAE生成セクションは、他のコンフィギュレーションおよびエラーのデータを識別するためのフィールド440をも含む。このフィールド440は、結果、コンフィギュレーションビット、オペレーティングモード、エラーコード、およびオペレーティングモードのデータを含む。このフィールドの結果部分は、遷移プレイバック、コードレイアウト、メモリ(スタックまたはヒープ)オーバーラン、およびディープ検査などの異なる解析エンジン照会に対してブーリアン結果を返送するためにセグメント化されている。このフィールドのコンフィギュレーションビット部分は、圧縮フラグ、デモフラグ、または共通配置フラグが設定された時を示す。このフィールドにおけるフラグの存在は、パケットを圧縮モードで返送するべきか否かを解析エンジンに対して示す。デモフラグは、システムに有効なライセンスがないためにシステムがデモモードであることを示す。このモードでは、ログおよびイベントの全体を入手できない。共通配置フラグは、アプリケーションが解析エンジンにおいて実行中であることを示し、これによりホスト照会ルータ・エンジンはアプリケーションへ返送されるべきパケットの宛先を判定できる。このフラグがセットされている場合、パケットはPCIブリッジを介して送信され、そうでない場合は、パケットはPCIカード上のイーサネット(登録商標)インターフェースを介して送信される。このフィールドのオペレーティングモード部分は、システムがパラノイド(最高セキュリティ)モード、モニタモード、学習モードのいずれにあるかを示す。これらモードについては、後に詳述する。最後に、このフィールドのエラーコード部分はシステムにおけるエラーを示す。エラーコードの最初の8ビットはメッセージ発信元に対応することになる。残りの12ビットは各サブシステムにより報告される実際のエラーに対応することになる。
【0048】
解決PDUは、また、コンテンツ解析エンジンまたは生データを含む。OSライブラリコールおよびシステムコールの、引き数や戻り値などのすべての可変データは、解決PDUのこのセクションに配置される。このセクションのデータは、アプリケーションから収集されたデータのコンテンツを含み、主にコンテンツ解析エンジンに向けられる。このセクションは、サイズ可変なAPI名またはAPI番号444、コール・コンテンツ・マジックヘッダ446、サイズ可変コール・コンテンツ450、コール・ローデータ・マジックヘッダ452、サイズ可変ローデータ・コンテンツ456、および2つのリザーブド448および454のフィールドを含む。さらに、これらフィールドは管理メッセージに対してオーバーロードされる。
【0049】
図5は、ランタイムにセキュリティイベントを検出するために解析エンジンが用いるプロセスを示す。この例示的な実施形態において、解析エンジンは、解決クライアントと同一または異なるハードウェア上で実行される別プロセスである。データ解析部分からデータ収集を分離することにより、データ記録手段を装備するプロセスにより生成された情報の解析に伴う処理のオーバーヘッドが実質的に削減される。これにより、解析エンジンは、同時に複数のアプリケーションのランタイム解析を行うことができる。
【0050】
ランタイム中、コードにデータ記録手段が装備されることで、スレッドID、スタック開始およびベースアドレス、汎用レジスタ、発信元アドレス、および宛先アドレスなどの適切なコンテキストを検査する機会が得られる。コンテンツを検査するための一連の動作に特定の順序はなく、入替え可能であり、解析エンジンの複数のスレッドにより並列に行える。
図5に示すプロセスを用いて、安全なエンジンがアプリケーションにおける各スレッドの個々のイベントを生成することになり、これらイベントは特定かつ個別のイベントチェーン状態マシン上で収集でき、これにより攻撃の進行をリアルタイムで追跡できる。解析エンジンにより生成されるイベントは、SYSLOGなどの標準ベースのイベントフォーマットに従う。これにより、標準ベースのイベント管理システムは、解決クライアントにより生成されたイベントを直接、またはSYSLOGをコモン・イベント・フォーマット(CEF)などの標準標的フォーマットに変換するコネクタを介して使用できる。解析エンジンは、以前に格納したテーブル付アプリケーションマップにアクセスできるので、実行された遷移指示がそのコンテキストを報告した時、解析エンジンは、標的アドレスが正当な宛先か否かを示すデータを含む抽出されたアプリケーションモデルにアクセスできる。
【0051】
502においてプロセスが開始した後、504において、解決クライアントからの解決PDUパケットで新たなランタイム情報が受信される。508においてこのパケットをバッファに保存する前に、解析エンジンは506において、パケットに含まれるカナリアおよびタイムスタンプを検証する。解決PDUが未だバッファされている間に、解析エンジンは510において、アドレスフィールドをハッシュし、ハッシュしたデータを解決PDUのHW/CAEセクションに入れる。512において、処理のためにパケットをパケットバッファリングから抜かれる。パケットの処理が完了すると、554においてプロセスは次のパケットを待つ。
【0052】
解析エンジニアにより使用されるプロセスは、遷移マッピングデータを調査する。520において遷移指示により報告されたランタイム情報が直接遷移からのものであり、かつ528において標的アドレスが遷移マップテーブル中に見つからない場合、解析エンジンは544においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ530において標的アドレスがコードテーブル中にあり、かつ548において標的アドレスが基本ブロックの中央部分にある場合、解析エンジンは550においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ530および548において標的アドレスがヒープメモリの領域にある場合、解析エンジンは550においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。522において遷移タイプ指示により報告されたランタイム情報が間接遷移からのものであり、かつ552において標的アドレスがメモリの非コード・非インポートテーブル領域にある場合、解析エンジンは556においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
【0053】
516において、解析エンジンにより使用されるプロセスはメモリ書込みデータを調査する。報告されたランタイム情報がメモリ書込み指示からのもので、かつ524において書込み標的アドレスがVテーブルのメモリ領域内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ524において書込み標的アドレスがエクスポートテーブルのメモリ領域内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ538において書込み標的アドレスがヒープメモリ領域の標的コントロールセクション内にある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。報告されたランタイム情報がメモリ書込み指示からのもので、かつ532において、書込み標的アドレスがスタックメモリ領域の標的コントロールセクションにある場合、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
【0054】
514において、解析エンジンにより使用されるプロセスはソフトスポットデータを調査する。指示がソフトスポット指示であって、かつ524において書込み標的アドレスがVテーブルのメモリ領域にある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ524において書込み標的アドレスがエクスポートテーブルのメモリ領域にある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ538において書込み標的アドレスがヒープメモリ領域の標的コントロールセクションにある場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。指示がソフトスポット指示であって、かつ532において書込み標的アドレスがベースポインタ下方の記憶場所におけるスタックのコントロール領域に格納された指定ポインタを上書きする場合は、解析エンジンは536においてイベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。
【0055】
518において、解析エンジンにより使用されるプロセスはOS関数およびシステムコールを調査する。542における無効なOS関数またはシステムコール動作が原因で、526において重要なOS関数またはシステムコールのエントリポイントのデータ記録手段(インストルメンテーション)が呼び出された場合、解析エンジンは544において、その重要OS関数テーブルにおける動作が発生した時に、イベントを生成する。このイベントは、それが発生したスレッドの詳細を含む。この生成されたイベントにより、メモリアクセス許可を変更する要求されたコードは無効を宣言され、権限レベルを変更するように要求されたコードは潜在的に無効であると宣言され、WANベースユーザにサービスを提供するスレッド上で発生する権限増大は高いレベルに上昇され、非実行ポリシーの変更は無効を宣言され、アドレス空間配置の乱数化(ASLR)ポリシーへ変更は無効を宣言され、安全な例外処理(SEH)ポリシーの変更は無効を宣言され、管理上の指定関数への要求は、その特定の関数要求のイベントに従って処理されず、または管理上の指定システムコールへの要求は、その特定のシステムコールのイベントに従って処理されない。さらに、534におけるメモリ動作をヒープするための526における重要システムコール動作は、540においてヒープ・メモリ・エンベロープを更新するために用いられる。メモリのうち割当てに関連する領域はメモリ・エンベロープサイズを増加させ、その一方、割当て解除の領域は標的領域を解放する。
【0056】
図6は、検出されたセキュリティイベントの追跡に使用されるイベントチェーン状態マシンを示す。経路妥当性確認エンジンはイベントを生成し、図示のイベントチェーン状態マシンに従ってイベントの状態を追跡する。イベントチェーン状態マシンは、これらイベントを追跡するために遷移プレイブックデータベースを使用する。新しいスレッドが開始すると、602においてイベントチェーン状態マシンは開始状態に初期化される。イベント管理エンジンはイベントに一連番号を振って、これにより1つのスレッド上のイベントのセットが、適切なスレッド用に状態マシン上で更新される。スレッドで遷移が発生すると、状態マシンは標的アドレスを記録するが、開始状態に留まる。経路妥当性確認エンジンが中重大度または高重大度のイベントを生成すると、604において、イベントチェーン状態マシンは次の状態であるEi状態に進む。この新しい状態は、遷移が発生すると、その遷移の標的アドレスを記録し続ける。中重大度または高重大度のイベントごとに新しい状態に更新し遷移イベントを記録するという状態マシンのプロセスは、612においてスレッドが終了状態に達するまで、606、608、および610において継続する。最高重大度レベルのイベントが起こるとセキュリティ分析者に通知され、攻撃が発生するとイベントチェーン状態マシンはフォレンジクスを捕捉する。
【0057】
システムのモードによって、様々な救済措置がイベントに応答して採用され得る。採用された救済措置はリアルタイムで行われる。ある救済措置は、アプリケーションを遮断することからなる。他の救済措置は、脅威が出現したスレッドの1つまたは複数のソケットを解放または解除し、脅威が出現したスレッドを終了し、および/またはその脅威の原因となるユーザをブラックリストに載せる。他の救済措置として、アプリケーションサーバの1つまたは複数のソケットに関連するすべてのソケットを非ブロック化してもよい。これにより、その時接続されているすべてのユーザがブロックされることとなる。さらに他の救済措置として、攻撃を無視してもよい。この場合、分析者はその攻撃を重大なものと考えていないことによる。所定のイベントに対して提案された最適な救済措置はあらかじめプログラムされているため、セキュリティ分析者が解析エンジンの自動モード操作を選択していた場合、救済措置が自動的に行われる。
【0058】
解析エンジンの経路妥当性確認エンジンは、モニタモード、パラノイドモード、学習モードの3つのモードで実行される。これらモードの違いは、アプリケーションにおける所定のスレッド上で受信された1つまたは複数のイベントに伴う救済措置を、いつどのように実施するかの違いである。モニタモードでは、ランタイム情報が到達し解析エンジンにより解析される時、指定されたセキュリティ分析者に向けられた通知が生成される。介入して最適な救済措置を選択するのはセキュリティ分析者の仕事である。セキュリティ分析者は、スレッドが終了状態に達する前であっても、予めプログラムされた「無視する」タイプの救済措置をより高度な衝撃救済措置に変更することを決定してもよい。救済措置を確定すると、解析エンジンは、その救済措置を実装する。この際、企業における適切な権威は、所定のスレッドに対しては提案された救済措置を適用しない。
【0059】
パラノイドモードでは、プログラムされた(デフォルトのまたはユーザ設定による)救済措置が、セキュリティ分析者の介入なしに自動的に実行される。いずれのモードであっても、救済措置実行の準備が整うと、解析エンジンはどの救済措置が実行されるかを解決クライアントに知らせる。解決クライアントはアプリケーション上でこの救済措置に関連した措置を行う。救済措置が完了すると、解決クライアントは解析エンジンへ確認メッセージを返信する。その確認を受信すると、解析エンジンはセキュリティ分析者の更新を含む間接的援助動作を行う。
【0060】
学習モードでは、解析エンジンは全てのイベントおよび救済措置を無視する。このモードでは、アプリケーションは無垢の環境で動作し、すべてのイベントおよびイベントチェーンを記録する。セキュリティ分析者はこの情報を使用して、いつイベントが発生すべきで、どのような救済措置がそのイベントに伴って行われるべきかについての判断基準を形成する。
【0061】
図7は、解決クライアントおよび解析エンジンインフラストラクチャの一例の上位レベルブロック図を示す。このインフラストラクチャは、スマートフォン、タブレット、ラップトップ、デスクトップからハイエンドサーバまでの、計算装置を含む種々のハードウェア上で構成されてもよい。図に示すように、アプリケーション性能を高めるために、解決クライアントにより行われるデータ収集は解析エンジンにより行われる解析から分離されてもよい。このインフラストラクチャは、ハッカによる、マルウェア攻撃に対する防御の破壊を防止する高い可用性を提供する。解決クライアントは、ロードタイムおよびランタイムデータを収集するためにアプリケーションと相互作用する。アプリケーション701のインフラストラクチャは、プロセスメモリ703、第三者ライブラリ704、カーネルサービス706、および指示パイプライン707を備える。解決クライアント702のインフラストラクチャは、インストルメンテーションおよび解析エンジン(IAE)705、グラフィカル・ユーザ・インタフェース(GUI)711、クライアントデーモン708、コンフィギュレーション・データベース709、およびストリーミングおよび圧縮エンジン710、および中央処理装置(CPU)736を備える。アプリケーション701のローカルまたはリモートのユーザ702は、キーボード、マウス、または同様の入出力装置を介して、あるいは、パイプ、共用メモリ、またはソケットを用いて設定され得る通信チャネルを介したネットワークを通じて、アプリケーションと相互作用する。これに応答して、アプリケーションプロセス703は、適切な指示のセットを実行用の指示パイプライン707に送付する。アプリケーションは、libc.so(リナックス(登録商標))またはmsvcrtxx.dll(ウィンドウズ(登録商標))などの、自身のまたは第三者のライブラリ704を活用してもよい。これらライブラリからの機能が呼び出されると、これらライブラリからの適切な指示もまた実行用の指示パイプライン707に挿入される。加えて、アプリケーションは、カーネル706からの、メモリやファイル入出力などのシステムリソースを活用してもよい。アプリケーション、ライブラリおよびカーネルからのこれら一連の指示は時間順のシーケンスにまとめられ、所与のユーザが希望するアプリケーション機能を配信する。
【0062】
アプリケーションのコードのメモリへのロードが開始すると、IAE705はいくつかの異なるロードタイム動作を行う。すべてのモジュールがロードされると、データ記録手段が装備されたアプリケーションの指示はランタイムデータを生成する。クライアントデーモン708は、コンフィギュレーション・データベース709から1つ以上のコンフィギュレーションファイルを読みだすことにより、CPU736においてインストルメンテーションおよび解析エンジン705、ストリーミングエンジン710およびGUI711のプロセスを初期化する。クライアントデーモン708は、また、IAE、ストリーミングエンジン、GUIおよび解析エンジンと、クライアントデーモン708との間の相互通信パイプを初期化する。クライアントデーモンはまた、それ自体を含む解決クライアントプロセスのいずれかが無応答または動作不能になった時、そのプロセスが再生成されることを保証する。これは、解決クライアントが高可用性の企業向け製品であることを保証する。
【0063】
インストルメンテーションおよび解析エンジンは、アプリケーションから収集されたロードおよびランタイムデータをストリーミングエンジンに送る。ストリーミングエンジンは、解決クライアントからのローデータを解決PDUとしてパッケージ化する。ストリーミングエンジンは、解決PDUを、高帯域幅で低レイテンシである通信チャネル712を介して解析エンジン711に送る。クライアントとアナライザが同じマシンに位置している場合、このチャネルはメモリバスである。これらエンティティが、異なるハードウェア上であるが同じ物理的近傍性を有するハードウェアに位置する場合、このチャネルはイーサネット(登録商標)またはファイバーベース・トランスポートである。これにより、エンティティ間にリモート接続が設定されて、インターネットを通じてロードおよびランタイムデータが転送される。
【0064】
解析エンジンのインフラストラクチャは、ネットワーク・インターフェース・カード(NIC)713、パケットプール714、タイムスタンプエンジン715、プロセッサファブリック716、ハッシングエンジン717、TCAMエンジン718、アプリケーション・マップ・データベース719、およびスレッド・コンテキスト・データベース720を備える。解析エンジンのインフラストラクチャはさらに、コンテンツ解析エンジン721、イベントおよびイベントチェーン722、イベント管理エンジン723、イベントログ724、機器デーモン725、解析エンジン・コンフィギュレーション・データベース726、ネットワークインターフェース727、ダッシュボード728、SMS/SMTPサーバ729、OTPサーバ730、拡張クライアント731、ソフトウェア拡張サーバ732、ソフトウェアイメージ733、イベント更新クライアント734、およびイベント拡張サーバ735を備える。
【0065】
プロトコルヘッダーを有する解決PDUは、ネットワーク・インターフェース・カード731によって捕捉される。ネットワーク・インターフェース・カード731から解決PDUは取り出されてパケットプール714に入れられる。解決PDUにおけるタイムスタンプフィールドはタイムスタンプエンジン715により充填される。これは、パケットが異常に長い時間パケットプールバッファにスタックされていないことを確認するのに役立つ。
【0066】
プロセッサファブリック716はパケットをパケットバッファから取り出し、アドレスフィールドがハッシュされてこのパケット内の適切な位置に配置される。この動作はハッシングエンジン717により行われる。プロセッサファブリックは、パケットバッファからパケットをそれらが到着した順序での取出しを開始する。ロードタイム段階からの情報を有するパケットは、関連データが抽出されてアプリケーション・マップ・データベース719に格納されるように処理される。ランタイム段階からの情報を有するパケットは、
図5に従って処理される。解析エンジンの効率は、プロセッサファブリックにおけるプロセッサの数に基づいて向上または低下する。
【0067】
遷移標的データは、スレッドごとのテーブルを有するスレッド・コンテキスト・データベースに格納されている。プロセッサファブリックは、また、遷移およびメモリ領域検索を行うためにTCAMエンジン718を活用する。プロセッサファブリックはハッシュを用いてルックアップを行うため、これに要する実時間は予測可能で、極めて短い。ファブリックにおけるプロセッサの数を注意深く選択することにより、パケット当たりのスループットを適宜変更できる。
【0068】
解析エンジンが検索を行うと、解析エンジンは時々、重要な/管理上の関数またはシステムコールの無効な遷移や無効な動作、または望ましくない位置におけるメモリ書込みを発見する。いずれの場合も、解析エンジンは、イベントおよびイベントチェーンのデータベース722に格納されたポリシーによって記述された、プログラムされた重大度のイベントをイベント管理エンジンに送付する。生イベントログは、イベントログデータベース724に格納される。ダッシュボードはイベントログにもアクセスでき、アプリケーションステータスを表示できる。
【0069】
救済措置は、また、イベントおよびイベントチェーンのデータベース722内の各イベントに関連付けられている。ユーザは、極端な一例であるイベントを無視するという措置から、その対極の一例であるスレッドを終了するという措置までの範囲において、救済措置を設定できる。イベント更新クライアント734およびイベント拡張サーバ735を用いて、推奨救済措置を分析者に推奨できる。上記推奨動作を変更するために、分析者はダッシュボード728を使用できる。ダッシュボードは、監視される各アプリケーションの状態を表示するGUIインターフェースを提供し、これによりセキュリティ分析者はアプリケーション上でアプリケーションの開始や停止などの制御を行うことができる。イベントが生成されると、イベントチェーンは通常の状態から後続の状態へと進行する。新しい状態に対応した救済措置が採用されてもよい。救済措置が非無視措置である場合、SMSまたはSMTPサーバ729を用いてセキュリティ分析者へ通知が送信される。セキュリティ分析者のSMS/SMTPアドレスはLDAPまたは他のディレクトリプロトコルにより判定される。ダッシュボードからアプリケーションを開始または停止させるプロセスは高い権限を必要とするため、セキュリティ分析者はOTPサーバ730を用いて認証する必要がある。
【0070】
新しいイベントが生成されて、重大度および分析者へ推奨する救済措置とともにイベントおよびイベントチェーンのデータベース722にリンクされてもよい。これにより、ある装置における新しい攻撃に対する固有のイベントおよびイベントチェーンを他の装置へ送付できる。このために、すべての新しいイベントおよびイベントチェーンはイベント拡張サーバ735にロードされる。イベント更新クライアント734は、新しいイベントおよびイベントチェーンを検索して取り出すために、定期的にイベント拡張サーバに接続し認証を行う。イベント更新クライアントは、これら新しいイベントおよびイベントチェーンをイベントおよびイベントチェーンのデータベース722にロードする。コンテンツ解析エンジン721は、新しいイベントチェーンに包含された新しい攻撃に対してアプリケーション追跡を開始できる。
【0071】
クライアントデーモンの場合と同様に、機器デーモン725は、解析エンジン上で実行される種々のプロセスの開始を担当する。このため、機器デーモン725は、解析エンジン・コンフィギュレーション・データベース726からコンフィギュレーション情報を読み出す必要がある。デーモンは、また、解析エンジンにおけるすべてのプロセスのためのハートビートポーリングを担当する。これは、解析エンジンにおけるすべての装置が常に最高の動作状態であることを保証する。3つの連続するハートビートが欠けることは、標的プロセスが応答していないことを示唆する。任意のプロセスが早まって終了すると、デーモンはそれ自体を含むそのプロセスを再開させる。
【0072】
ソフトウェアは時々、機器ホスト、解析エンジン、またはクライアントにおいて、ソフトウェア内のエラーを修復すためにアップグレード(拡張)される。そのために、拡張クライアント731は、最新のソフトウェアが入手可能なソフトウェア拡張サーバ732を常に確認する。クライアントが、解析エンジンまたはクライアントのエンティティが古い画像を実行していることを発見した場合は、クライアントは、分析者にソフトウェア拡張サーバ732を介してこの古い画像を新しい画像に更新させる。新しい画像はシステム画像733として束ねられる。これにより、機器またはホストに、検査済みの互換性のある画像を提供できる。解析エンジンまたは解決クライアントにおけるサブシステムの画像の1つが、システム画像における同じ構成要素の画像と適合しない場合、すべての画像は以前の既知の良好なシステム画像にロールされることになる。
【0073】
図8は、本発明の実施形態が実施されるコンピュータネットワークまたは同様のデジタル処理環境を示す。
【0074】
1つまたは複数のクライアントコンピュータ/装置50および1つまたは複数のサーバコンピュータ60は、アプリケーションプログラム等を実行する処理装置、格納装置、および入出力装置を提供する。1つまたは複数のクライアントコンピュータ/装置50はまた、通信ネットワーク70を介して、他のクライアント装置/プロセス50および1つまたは複数のサーバコンピュータ60を含む他の計算装置と接続できる。通信ネットワーク70は、互いに通信するために個々のプロトコル(TCP/IP、ブルートゥース(登録商標)等)を現在使用している、リモートアクセスネットワーク、グローバルネットワーク(例えばインターネット)、ワールドワイドなコンピュータの集合、ローカルエリアまたはワイドエリアネットワーク、およびゲートウェイの一部であってもよい。他の電子機器/コンピュータ・ネットワーク・アーキテクチャも適している。
【0075】
図9は、
図8に示すコンピュータシステムにおけるコンピュータ(例えば、クライアントプロッセッサ/装置50またはサーバコンピュータ60)の例示的な内部構造を示す図である。各コンピュータ50,60はシステムバス79を含み、1つのバスはコンピュータまたは処理システムの構成要素間でのデータ転送に使用されるハードウェアラインのセットである。システムバス79は、基本的に共用コンジットであって、コンピュータシステムの異なる要素(例えば、プロセッサ、ディスク記憶装置、メモリ、入出力ポート、ネットワークポート等)を接続し、これら要素間での情報の転送を可能にする。システムバス79には、種々の入力および出力装置(例えば、キーボード、マウス、ディスプレイ、プリンタ、スピーカ等)をコンピュータ50、60へ接続するための入出力装置インターフェース82が接続される。ネットワークインターフェース86により、コンピュータはネットワーク(例えば、
図8のネットワーク70)に接続された種々の他の装置に接続される。メモリ90は、本発明の実施形態(例えば、ここで述べる解決クライアントおよび解析エンジン要素)を実現するために使用されるコンピュータソフトウェア指示92およびデータ94のための揮発性記憶装置を提供する。ディスク記憶装置95は、本発明の実施形態を実現するために使用されるコンピュータソフトウェア指示92およびデータ94のための不揮発性記憶装置を提供する。中央処理装置84もまたシステムバス79に接続され、コンピュータ指示の実行に備える。
【0076】
本発明は、その好適な実施形態を参照して特に示されかつ記載されたが、その好適な実施形態においては、添付の特許請求の範囲に包含される本発明の範囲を逸脱せずに、形態および詳細において種々の変更がなされ得ることが当業者によって理解されるであろう。 なお、本発明は、実施の態様として以下の内容を含む。
〔態様1〕
コンピュータにより実行される方法であって、
ロードタイム中にコンピュータアプリケーションのモデルを抽出することと、
前記コンピュータアプリケーションの前記モデルを格納することと、
ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入することと、
1つまたは複数のセキュリティイベントを検出するように、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含む方法。
〔態様2〕
態様1に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む方法。
〔態様3〕
態様1に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
〔態様4〕
態様1に記載の方法において、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式である方法。
〔態様5〕
態様1に記載の方法において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックすることを含む方法。
〔態様6〕
態様5に記載の方法において、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含む方法。
〔態様7〕
態様1に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含む方法。
〔態様8〕
態様1に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含む方法。
〔態様9〕
態様8に記載の方法において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
〔態様10〕
態様9に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様11〕
態様1に記載の方法において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
〔態様12〕
態様1に記載の方法において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化することを含む方法。
〔態様13〕
態様12に記載の方法において、1つまたは複数のプロセスがリモートシステム上に存在する方法。
〔態様14〕
態様12に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様15〕
態様1に記載の方法において、ランタイムに収集された前記データが、前記コンピュータアプリケーションの1つまたは複数のスレッド用のデータを含む方法。
〔態様16〕
態様1に記載の方法において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む方法。
〔態様17〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
〔態様18〕
態様17に記載の方法において、前記定義済みのシーケンスが不変チェーンに基づく方法。
〔態様19〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、当該イベント用のフォレンジックデータを捕捉することを含む方法。
〔態様20〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントが、重大度レベルを用いて追跡される方法。
〔態様21〕
態様1に記載の方法において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
〔態様22〕
態様21に記載の方法において、前記1つまたは複数の措置がシステムによって自動的にとられる方法。
〔態様23〕
態様21に記載の方法において、前記1つまたは複数の措置がユーザによってとられる方法。
〔態様24〕
態様21に記載の方法において、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法。
〔態様25〕
態様21に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
〔態様26〕
コンピュータにより実行される方法であって、
ロードタイム中にコンピュータアプリケーションのモデルを抽出することと、
前記コンピュータアプリケーションの前記モデルを格納することと、
ランタイムにおいてデータを収集するように、前記コンピュータアプリケーションに指示を挿入すること、を含む方法。
〔態様27〕
態様26に記載の方法において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む方法。
〔態様28〕
態様26に記載の方法において、前記コンピュータアプリケーションのモデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される方法。
〔態様29〕
態様26に記載の方法において、前記コンピュータアプリケーションはバイナリ形式またはインタプリタ形式である方法。
〔態様30〕
態様26に記載の方法において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックすることを含む方法。
〔態様31〕
態様30に記載の方法において、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含む方法。
〔態様32〕
態様26に記載の方法において、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含む方法。
〔態様33〕
態様26に記載の方法において、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含む方法。
〔態様34〕
態様33に記載の方法において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化することを含む方法。
〔態様35〕
態様34に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様36〕
態様26に記載の方法において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される方法。
〔態様37〕
態様26に記載の方法において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへの伝送用にパッケージ化することを含む方法。
〔態様38〕
態様37に記載の方法において、1つまたは複数のプロセスがリモートシステム上に存在する方法。
〔態様39〕
態様37に記載の方法において、さらに、
前記伝送を保証するように、前記伝送内にカナリアを配置することを含む方法。
〔態様40〕
態様26に記載の方法において、ランタイムに収集された前記データが、前記コンピュータアプリケーションの各スレッド用のデータを含む方法。
〔態様41〕
コンピュータにより実行される方法であって、
1つまたは複数のセキュリティイベントを検出するように、コンピュータアプリケーションのランタイムに収集されたデータを前記コンピュータアプリケーションの格納されたモデルと照合して解析することと、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡することと、を含む方法。
〔態様42〕
態様41に記載の方法において、さらに、
ランタイムに収集された前記データをリモートシステム上のプロセスから受信することを含む方法。
〔態様43〕
態様41に記載の方法において、さらに、
前記コンピュータアプリケーションの前記格納されたモデルをリモートシステム上のプロセスから受信することを含む方法。
〔態様44〕
態様41に記載の方法において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む方法。
〔態様45〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む方法。
〔態様46〕
態様45に記載の方法において、前記定義済みのシーケンスが不変チェーンに基づく方法。
〔態様47〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む方法。
〔態様48〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルの使用を含む方法。
〔態様49〕
態様41に記載の方法において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとることを含む方法。
〔態様50〕
態様49に記載の方法において、前記1つまたは複数の措置がシステムによって自動的にとられる方法。
〔態様51〕
態様49に記載の方法において、前記1つまたは複数の措置がユーザによってとられる方法。
〔態様52〕
態様49に記載の方法において、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む方法。
〔態様53〕
態様49に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である方法。
〔態様54〕
ロードタイム中にコンピュータアプリケーションのモデルを抽出するクライアントであって、
前記コンピュータアプリケーションの前記モデルを格納し、
ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入する、クライアントと、
1つまたは複数のセキュリティイベントを検出するように、ランタイムに収集されたデータを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析する解析エンジンであって、
状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡する解析エンジンと、を備えたシステム。
〔態様55〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含むシステム。
〔態様56〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成されるシステム。
〔態様57〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式であるシステム。
〔態様58〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックするシステム。
〔態様59〕
態様58に記載のシステムにおいて、保全性のために前記コンピュータアプリケーションをチェックすることが、チェックサムを計算することを含むシステム。
〔態様60〕
態様54に記載のシステムにおいて、前記モデルを格納することが、前記コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含むデータベースに前記モデルを格納することを含むシステム。
〔態様61〕
態様60に記載のシステムにおいて、前記モデルを格納することが、前記モデルをリモートシステム上のデータベースに格納することを含むシステム。
〔態様62〕
態様61に記載のシステムにおいて、前記クライアントが、さらに、前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化するシステム。
〔態様63〕
態様62に記載のシステムにおいて、前記クライアントが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置するシステム。
〔態様64〕
態様54に記載のシステムにおいて、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成されるシステム。
〔態様65〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、ランタイムに収集した前記データを、前記解析エンジンへの伝送用にパッケージ化するシステム。
〔態様66〕
態様65に記載のシステムにおいて、前記クライアントが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置するシステム。
〔態様67〕
態様65に記載のシステムにおいて、前記解析エンジンへの伝送が、前記クライアントと前記解析エンジンとの間のトランスポートチャネル上で収集された前記データを送信することを含むシステム。
〔態様68〕
態様54に記載のシステムにおいて、ランタイムに収集された前記データが、前記コンピュータアプリケーションの1つまたは複数のスレッド用のデータを含むシステム。
〔態様69〕
態様54に記載のシステムにおいて、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含むシステム。
〔態様70〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含むシステム。
〔態様71〕
態様70に記載のシステムにおいて、前記定義済みのシーケンスが不変チェーンに基づくシステム。
〔態様72〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することが、当該イベント用のフォレンジックデータを捕捉することを含むシステム。〔態様73〕
態様54に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントが、重大度レベルを用いて追跡されるシステム。
〔態様74〕
態様54に記載のシステムにおいて、前記クライアントが、1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとるシステム。
〔態様75〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置がシステムによって自動的にとられるシステム。
〔態様76〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置がユーザによってとられるシステム。
〔態様77〕
態様74に記載のシステムにおいて、前記1つまたは複数の措置が、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含むシステム。
〔態様78〕
態様74に記載のシステムにおいて、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能であるシステム。〔態様79〕
態様54に記載のシステムにおいて、前記クライアントおよび前記解析エンジンの少なくとも一方が、スマートフォン、タブレット、ラップトップ、デスクトップ、およびハイエンドサーバのうちのいずれかにおいて動作するシステム。
〔態様80〕
態様54に記載のシステムにおいて、前記解析エンジンが、1つまたは複数のプロセッサからなるプロセッサファブリックを含むシステム。
〔態様81〕
態様54に記載のシステムにおいて、前記クライアントが、前記クライアントの1つまたは複数のプロセッサが停止または無応答状態の場合に、前記1つまたは複数のプロセッサを再始動させるクライアントデーモンを含むシステム。
〔態様82〕
態様54に記載のシステムにおいて、前記解析エンジンが、前記解析エンジンの1つまたは複数のプロセッサが停止または無応答状態の場合に、前記1つまたは複数のプロセッサを再始動させるアプリケーションデーモンを含むシステム。
〔態様83〕
態様54に記載のシステムにおいて、前記解析エンジンが、前記コンピュータアプリケーションの状態を表示するダッシュボードを含むシステム。
〔態様84〕
第1のプロセスおよび第2のプロセスを実行するプロセッサを備えた装置であって、
前記第1のプロセスが、ロードタイム中にコンピュータアプリケーションのモデルを抽出し、
前記第1のプロセスがさらに、前記コンピュータアプリケーションの前記モデルを格納し、
前記第2のプロセスが、ランタイムにデータを収集するように、前記コンピュータアプリケーションに指示を挿入する、装置。
〔態様85〕
態様84に記載の装置において、前記コンピュータアプリケーションの前記モデルを抽出することが、前記コンピュータアプリケーションから遷移マッピングデータを抽出すること、前記コンピュータアプリケーションからメモリマッピングデータを抽出すること、前記コンピュータアプリケーションからソフトスポットデータを抽出すること、および前記コンピュータアプリケーションによって呼び出されるOS関数およびシステムコールを抽出すること、のうち1つまたは複数を含む装置。
〔態様86〕
態様84に記載の装置において、前記コンピュータアプリケーションの前記モデルを抽出することが、少なくとも一部においてコード逆アセンブラを用いて達成される装置。
〔態様87〕
態様84に記載の装置において、前記コンピュータアプリケーションがバイナリ形式またはインタプリタ形式である装置。
〔態様88〕
態様84に記載の装置において、さらに、
ロードタイム中に保全性のために前記コンピュータアプリケーションをチェックする第3のプロセスを備えた装置。
〔態様89〕
態様88に記載の装置において、保全性のために前記コンピュータアプリケーションをチェックすることは、チェックサムを計算することを含む装置。
〔態様90〕
態様84に記載の装置において、データベースが、コンピュータアプリケーションをモデル化する1つまたは複数のテーブルを含む装置。
〔態様91〕
態様84に記載の装置において、前記データベースがリモートシステム上に存在する装置。
〔態様92〕
態様91に記載の装置において、さらに、
前記コンピュータアプリケーションの前記モデルを、前記データベースに格納する前記リモートシステムへの伝送用にパッケージ化する前記第1のプロセスを備えた装置。
〔態様93〕
態様92に記載の装置において、前記第1のプロセスが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置する装置。
〔態様94〕
態様91に記載の装置において、前記コンピュータアプリケーションに指示を挿入することが、少なくとも一部においてダイナミックバイナリ解析エンジンまたはバイトコード・インストルメンテーション・エンジンを用いて達成される装置。
〔態様95〕
態様91に記載の装置において、さらに、
ランタイムに収集した前記データを、1つまたは複数のプロセスへ伝送用にパッケージ化する第3のプロセスを備えた装置。
〔態様96〕
態様95に記載の装置において、前記1つまたは複数のプロセスがリモートシステム上に存在する装置。
〔態様97〕
態様95に記載の装置において、前記第3のプロセスが、さらに、前記伝送を保証するように、前記伝送内にカナリアを配置する装置。
〔態様98〕
態様91に記載の装置において、ランタイムに収集されたデータが、前記コンピュータアプリケーションの各スレッド用のデータを含む装置。
〔態様99〕
第1のプロセスおよび第2のプロセスを実行するプロセッサを備えた装置であって、
前記第1のプロセスが、1つまたは複数のセキュリティイベントを検出するように、コンピュータアプリケーションのランタイムに収集されたデータを前記コンピュータアプリケーションの格納されたモデルと照合して解析し、
前記第2のプロセスが、状態マシンを用いて、前記1つまたは複数のセキュリティイベントを追跡する装置。
〔態様100〕
態様99に記載の装置において、ランタイムに収集された前記データがリモートシステム上のプロセスから受信される装置。
〔態様101〕
態様99に記載の装置において、前記コンピュータアプリケーションの前記格納されたモデルが、リモートシステム上のプロセスから受信される装置。
〔態様102〕
態様99に記載の装置において、ランタイムに収集された前記データを前記コンピュータアプリケーションの前記格納されたモデルと照合して解析することが、遷移データを解析すること、OS関数を解析すること、システムコールを解析すること、メモリ書込みを解析すること、およびソフトスポットデータを解析することのうちの1つまたは複数を含む装置。
〔態様103〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、定義済みのシーケンスに基づいて前記1つまたは複数のセキュリティイベントを相関させることを含む装置。
〔態様104〕
態様103に記載の装置において、前記定義済みのシーケンスが不変チェーンに基づく装置。
〔態様105〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、フォレンジックデータを捕捉することを含む装置。
〔態様106〕
態様99に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することが、重大度レベルを用いることを含む装置。
〔態様107〕
態様99に記載の装置において、さらに、
前記1つまたは複数のセキュリティイベントを追跡することに応答して、1つまたは複数の措置をとる第3のプロセスを備えた装置。
〔態様108〕
態様107に記載の装置において、前記1つまたは複数の措置が自動的にとられる装置。
〔態様109〕
態様107に記載の装置において、前記1つまたは複数の措置はユーザによってとられる装置。
〔態様110〕
態様107に記載の装置において、前記1つまたは複数の措置は、前記コンピュータアプリケーションを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッドを終了すること、前記コンピュータアプリケーションの1つまたは複数のスレッド上のソケットを閉じること、および前記1つまたは複数のセキュリティイベントに応答して警報を発することのうちのいずれかを含む装置。
〔態様111〕
態様107に記載の装置において、前記1つまたは複数のセキュリティイベントを追跡することに応答してとられる前記1つまたは複数の措置が、調整可能である装置。
〔態様112〕
態様1に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
〔態様113〕
態様41に記載の方法において、前記1つまたは複数のセキュリティイベントを追跡することが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む方法。
〔態様114〕
態様54に記載のシステムにおいて、前記クライアントが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加すること含むシステム。
〔態様115〕
態様99に記載の装置において、前記第2のプロセスが、さらに、重大度および前記状態マシンを用いた追跡用の措置を伴う1つまたは複数の新しいセキュリティイベントを追加することを含む装置。