JP2015212979A - バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法 - Google Patents

バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法 Download PDF

Info

Publication number
JP2015212979A
JP2015212979A JP2015143187A JP2015143187A JP2015212979A JP 2015212979 A JP2015212979 A JP 2015212979A JP 2015143187 A JP2015143187 A JP 2015143187A JP 2015143187 A JP2015143187 A JP 2015143187A JP 2015212979 A JP2015212979 A JP 2015212979A
Authority
JP
Japan
Prior art keywords
security agent
security
electronic device
agent
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015143187A
Other languages
English (en)
Other versions
JP6370747B2 (ja
Inventor
サイード サラーム,アーメッド
Said Sallam Ahmed
サイード サラーム,アーメッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
McAfee LLC
Original Assignee
McAfee LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/073,842 external-priority patent/US20120254994A1/en
Priority claimed from US13/073,864 external-priority patent/US8549644B2/en
Priority claimed from US13/073,853 external-priority patent/US20120255031A1/en
Priority claimed from US13/073,810 external-priority patent/US9317690B2/en
Priority claimed from US13/073,791 external-priority patent/US20120254993A1/en
Priority claimed from US13/075,049 external-priority patent/US8621620B2/en
Priority claimed from US13/074,741 external-priority patent/US8549648B2/en
Priority claimed from US13/075,072 external-priority patent/US8959638B2/en
Priority claimed from US13/075,101 external-priority patent/US9032525B2/en
Priority claimed from US13/074,925 external-priority patent/US8925089B2/en
Priority claimed from US13/074,947 external-priority patent/US20120255014A1/en
Priority claimed from US13/074,831 external-priority patent/US8813227B2/en
Priority claimed from US13/076,480 external-priority patent/US9038176B2/en
Priority claimed from US13/076,537 external-priority patent/US20120255003A1/en
Priority claimed from US13/077,227 external-priority patent/US9087199B2/en
Priority claimed from US13/076,493 external-priority patent/US8966624B2/en
Priority claimed from US13/077,305 external-priority patent/US8863283B2/en
Priority claimed from US13/076,512 external-priority patent/US8966629B2/en
Priority claimed from US13/076,473 external-priority patent/US8650642B2/en
Priority claimed from US13/077,270 external-priority patent/US9262246B2/en
Application filed by McAfee LLC filed Critical McAfee LLC
Publication of JP2015212979A publication Critical patent/JP2015212979A/ja
Publication of JP6370747B2 publication Critical patent/JP6370747B2/ja
Application granted granted Critical
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Abstract

【課題】マルウェアから電子デバイスをプロテクトする。【解決手段】システム200は、メモリ206、プロセッサ208、オペレーティングシステム212、オペレーティングシステム212に通信接続される電子デバイスのリソース214、オペレーティングシステム212より下位のレベルで電子デバイス204上で実行されるよう構成されるバーチャルマシーンモニタ216、及びオペレーティングシステム212より下位のレベルで電子デバイス204上で実行されるセキュリティエージェント217を有する。バーチャルマシーンモニタ216は、バーチャルマシーンモニタ216の上位のレベルから行われたリソースのリクエストをインターセプトし、リクエストをセキュリティエージェント217に通知するよう構成される。セキュリティエージェント217は、リクエストがマルウェアを示すか判断するよう構成される。【選択図】図2

Description

本出願は、その内容のすべてが参照することによりここに援用される、2011年3月28日に出願された米国出願第13/073,791号、2011年3月28日に出願された米国出願第13/073,810号、2011年3月28日に出願された米国出願第13/073,842号、2011年3月31日に出願された米国出願第13/077,227号、2011年3月28日に出願された米国出願第13/073,853号、2011年3月29日に出願された米国出願第13/075,049号、2011年3月31日に出願された米国出願第13/076,493号、2011年3月29日に出願された米国出願第13/074,741号、2011年3月31日に出願された米国出願第13/077,305号、2011年3月29日に出願された米国出願第13/074,831号、2011年3月29日に出願された米国出願第13/074,925号、2011年3月29日に出願された米国出願第13/074,947号、2011年3月31日に出願された米国出願第13/077,270号、2011年3月31日に出願された米国出願第13/076,537号、2011年3月28日に出願された米国出願第13/073,864号、2011年3月29日に出願された米国出願第13/075,072号、2011年3月29日に出願された米国出願第13/075,101号、2011年3月31日に出願された米国出願第13/076,512号、2011年3月31日に出願された米国出願第13/076,480号、及び2011年3月31日に出願された米国出願第13/076,473号の利益を請求する。
本発明は、一般にコンピュータセキュリティ及びマルウェアプロテクションに関し、より詳細には、バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法に関する。
ネイティブなオペレーティングシステムは、セキュリティソフトウェアがオペレーティングシステムのカーネル内に任意のフッキングをインストールすることを阻止することができる。セキュリティソフトウェアは、マルウェアによる悪意のある可能性のあるアクションを含む、電子装置のすべての動作をフィルタリングすることを阻止される。マルウェアは、限定することなく、スパイウェア、ルートキット、パスワードスチーラ、スパム、フィッシング攻撃のソース、DoS(Denial−of−Service)攻撃のソース、ウイルス、ロガー(logger)、Trojan、アドウェア(adware)又は悪意ある活動を生成する他の何れかのデジタルコンテンツを含むものであってもよい。
オペレーティングシステムにより提供されるフィルタリング機能は、限定的なものであってもよく、オペレーティングシステムのベンダにより決定されるタイムライン上でのみ利用可能である。マルウェアは、特にオペレーティングシステムのカーネルにおいてセキュリティソフトウェアと同じレベルで動作及び配置可能であり、セキュリティソフトウェア自体のインテグリティとオペレーティングシステムとの双方を危険にさらす。
多数の形態のアグレッシブカーネルモードマルウェアは、悪意あるコードを注入するなどの悪意あるタスクを動的に実現し、実行パスを変更して悪意あるコードにリダイレクトするようユーザモードコードセクションを修正し、セキュリティソフトウェアを無効にするためユーザモードデータ構造を修正するため、ユーザモードメモリを改ざんする。さらに、一部のマルウェアは、検出ロジックを欺くため、プロセスメモリコード及びデータセクションを改ざんすることによって、カーネルからのアンチマルウェアアプリケーション及びプロセスを攻撃してもよい。
カーネルモードルートキット及び他のマルウェアは、各種方法を利用してユーザモードアプリケーション及びカーネルモードデバイスドライバからその存在を隠す。利用される技術は、感染が行われる場所に応じて変化しうる。例えば、オペレーティングシステムのカーネルアクティブプロセスリストを攻撃したマルウェアは、ルートキット又は他のマルウェアプロセスをリスト解除又はリンク解除する。他のマルウェアは、プロセスアクセス及びエニュミュレーションファンクションのコードセクションを改善する可能性がある。
一実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある1以上のオペレーティングシステムと、前記オペレーティングシステムに通信接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルにおいて前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングより下位のレベルにおいて前記電子デバイス上で実行されるよう構成されるセキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタの上位のレベルから行われる前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
他の実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある1以上のオペレーティングシステムと、前記オペレーティングシステムに通信接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度で前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタであって、前記優先度は前記プロセッサにより規定される、前記バーチャルマシーンモニタと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングより高い優先度で前記電子デバイス上で実行されるよう構成されるセキュリティエージェントであって、前記優先度は前記プロセッサにより規定される、前記セキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタより低い優先度を有するエンティティから行われた前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
さらなる他の実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある1以上のオペレーティングシステムと、前記オペレーティングシステムに接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上の前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタと、前記電子デバイスのすべてのオペレーティングより高い特権実行リング上の前記電子デバイス上で実行されるよう構成されるセキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタより低い特権実行リングから行われた前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
さらなる他の実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムの下位のレベルで、より上位のレベルから行われた電子デバイスのリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。リソースは、オペレーティングシステムに通信接続される。
さらなる実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い優先度で、より低い優先度を有するエンティティから行われたリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。当該優先度は、電子デバイスのプロセッサにより規定される。
さらなる他の実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で、リソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。リクエストは、より低い特権実行リングから行われる。
さらなる他の実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムの下位のレベルで、より上位のレベルから行われた電子デバイスのリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。リソースは、オペレーティングシステムに通信接続される。
さらなる実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い優先度で、より低い優先度を有するエンティティから行われたリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。当該優先度は、電子デバイスのプロセッサにより規定される。
さらなる他の実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で、リソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。リクエストは、より低い特権実行リングから行われる。
本発明及びその効果のより完全な理解のため、添付した図面に関して以下に記載された説明が参照される。
図1は、マルウェアから電子デバイスをプロテクトするシステムの実施例である。 図2は、マルウェアから電子デバイスをプロテクトするためのバーチャルマシーンモニタベース及びセキュリティルールベースのコンフィギュラブルセキュリティ手段のためのシステムの実施例である。 図3は、マルウェアからの電子デバイスのバーチャルマシーンモニタベースプロテクションのための方法の実施例である。 図4は、マルウェアから電子デバイスをプロテクトするためのファームウェアベース及びセキュリティルールベースシステムの実施例である。 図5は、マルウェアから電子デバイスをプロテクトするファームウェアベース手段の実施例のより詳細な図である。 図6は、マルウェアからの電子デバイスのファームウェアベースプロテクションのための方法の実施例である。 図7は、マルウェアに対する電子デバイスのプロテクションのためのマイクロコードベースシステムの実施例である。 図8は、マルウェアからの電子デバイスのマイクロコードベースプロテクションのための方法の実施例である。 図9は、電子デバイス上のセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するためのシステムの実施例である。 図10は、プロセッサリソース制御構造の実施例である。 図11は、電子デバイスのセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制する方法の実施例である。 図12は、電子デバイス上のオペレーティングシステム下位トラッピングを利用したメモリをセキュアにするためのソフトウェアアクセスを規制するためのシステムの実施例である。 図13は、メモリマップの実施例の図である。 図14は、電子デバイスの試行されたアクセスのオペレーティングシステム下位トラッピングを利用したメモリをセキュアにするための方法の実施例である。 図15は、電子デバイスのオペレーティングシステムのカーネルをプロテクトするためのシステムの実施例である。 図16は、オペレーティングシステムへの信頼されたアクセスと信頼されたドライバコンポーネントとのアクセスマップの実施例である。 図17は、図16のアクセスマップをさらに示すバーチャルメモリの実施例である。 図18は、オペレーティングシステムへの信頼されたアクセスと信頼されたドライバコンポーネントとのアクセスマップを生成するためのシステムの実施例である。 図19は、電子デバイスのオペレーティングシステムカーネルをプロテクトするための方法の実施例である。 図20は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境を提供するためのシステムの実施例である。 図21は、セキュアなオペレーティングシステムの実行環境を提供するためのシステムにおける起動モジュールの実施例である。 図22は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境の実施例である。 図23は、セキュアなオペレーティングシステムの実行環境を提供するためのシステム又は方法において利用されるディスクマッピングビットマップの実施例である。 図24は、セキュアなオペレーティングシステムの実行環境を起動するための方法の実施例である。 図25は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境を提供する方法の実施例である。 図26は、未認証のアクセスからストレージデバイスをプロテクトするためのシステムの実施例である。 図27は、未認証のアクセスからストレージデバイスをプロテクトするためのシステム又は方法により利用されるセキュリティルールの実施例である。 図28は、未認証のアクセスからストレージデバイスをプロテクトするための方法の実施例である。 図29は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにするシステムの実施例である。 図30は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにする方法の実施例である。 図31は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにするシステムの実施例である。 図32は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにする方法の実施例である。 図33は、電子デバイス上の隠蔽されたプロセスを検出及び修復するシステムの実施例である。 図34は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法の実施例である。 図35は、電子デバイス上の隠蔽されたプロセスを検出及び修復する他のシステムの実施例である。 図36は、電子デバイス上の隠蔽されたプロセスを検出及び修復する他の方法の実施例である。 図37は、電子デバイス上の隠蔽されたプロセスを検出及び修復するさらなる他の方法の実施例である。 図38は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステムの実施例である。 図39は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステム又は方法により利用されるシステムコールテーブルの実施例である。 図40は、オペレーティングシステムのシステムコールへのアクセスをセキュアにする方法の実施例である。 図41は、電子デバイス上の悪意ある又は悪意の可能性があるコードの規制及び制御のためのシステムの実施例である。 図42は、電子デバイス上の自己変更コードの規制及び制御のための方法の実施例である。 図43は、電子デバイス上の悪意あるコードの変更のための方法の実施例である。 図44は、電子デバイス上の関連するスレッドのモニタリング及びトラッキングのための方法の実施例である。 図45は、電子デバイスのメモリ及びストレージをセキュアにするシステムの実施例である。 図46は、電子デバイスのメモリ及びストレージをセキュアにする方法の実施例である。 図47は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステムの実施例である。 図48は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステム又は方法により利用される動作状態マップの実施例である。 図49は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにする方法の実施例である。 図50は、電子デバイス上のドライバ間の通信をセキュアにするシステムの実施例である。 図51は、ドライバ間通信の一例となる図である。 図52は、オペレーティングシステムの下位のセキュリティエージェントがプロテクトしうる電子デバイスの部分のさらなる図である。 図53は、電子デバイスにおけるドライバ間通信のオペレーティングシステムの下位のトラッピング及びセキュア処理のための方法の実施例である。 図54は、電子デバイス上のドライバフィルタのアタッチメント及びデタッチメントをセキュアにするシステムの実施例である。 図55は、一例となるデバイススタックの処理のよち詳細な図である。 図56は、マルウェアがドライバフィルタをアタッチ又はデタッチするよう動作することによって危険にさらされうるデバイススタックの一例となる図である。 図57は、電子デバイスにおけるドライバフィルタアタッチメントのオペレーティングシステムの下位のトラッピングの方法の実施例である。 図58は、電子デバイス上のドライバのロード又はアンロード処理をセキュアにするシステムの実施例である。 図59Aは、電子デバイス上のドライバのロード処理又はアンロード処理をセキュアにする方法の実施例である。 図59Bは、電子デバイス上のドライバのロード処理又はアンロード処理をセキュアにする方法の実施例である。 図60は、メモリへのコードのロード処理をオペレーティングシステムの下位でトラッピング及びセキュア処理するシステムの実施例である。 図61は、注入されたコードが実行用のメモリ内に配置するためアプリケーションにより収集される方法の一例となる図である。 図62Aは、ディスクからメモリへのアプリケーションのイメージのロード処理の一例となる図である。 図62Bは、アプリケーションのイメージがメモリロード処理された後に実行される可能性のあるアクションの一例となる図である。 図63は、コードを注入するためスワップされたコンテンツに対する悪意ある攻撃のさらなる例を示す。 図64は、メモリの一部が悪意あると判断された後のメモリマップの実施例である。 図65は、メモリへのコードのロード処理及び実行のオペレーティングシステムの下位のトラッピングの方法の実施例である。
図1は、マルウェアから電子デバイスをプロテクトするシステム100の実施例である。システム100は、トリガイベントハンドラ108に通信接続されるオペレーティングシステム(O/S)下位トラッピングエージェント104を有してもよい。O/S下位トラッピングエージェント104は、電子デバイス103のリソース106の各種の試行されたアクセスをトラップするよう構成されてもよい。O/S下位トラッピングエージェント104は、トラップされた試行されたアクセスに関連するトリガイベントを生成し、トリガイベントをトリガイベントハンドラ108に送信するよう構成されてもよい。トリガイベントハンドラ108は、トリガイベントの処理方法を決定するため、1以上のセキュリティルール114又はプロテクションサーバ103に照会するよう構成されてもよい。トリガイベントハンドラ108はまた、トリガイベントの傾向が電子デバイス103のリソース又は処理を妨害するマルウェア又は悪意ある試行の徴候であると評価するよう構成されてもよい。さらに、トリガイベントハンドラ108は、トリガイベントが許可又は拒絶されるべきかの判定をO/S下位トラッピングエージェント104に提供するか、又は他の訂正アクションを生成するよう構成されてもよい。
O/S下位トラッピングエージェント104は、電子デバイス103においてオペレーティングシステムより下位の機能レベルにおいて実現されてもよい。例えば、O/S下位トラッピングエージェント104は、オペレーティングシステム112、ドライバ111又はアプリケーション110によるリソースへの試行されたアクセスをインターセプトしてもよい。O/S下位トラッピングエージェント104は、オペレーティングシステムを利用することなく、電子デバイス103のプロセッサ上で実行されてもよい。一実施例では、O/S下位トラッピングエージェント104は、ベアメタル環境又は実行レベルにおいて実行されてもよい。さらに、O/S下位トラッピングエージェント104は、電子デバイス103のすべてのオペレーティングシステムよりも、電子デバイス103のプロセッサにより規定されるように、より高い実行優先度により実行されてもよい。例えば、より小さな数がより高い優先度を表すプロテクションリングを利用した階層的プロテクションドメインモデルに関して、オペレーティングシステム112は、“Ring0”で実行し、O/S下位トラッピングエージェント104は“Ring−1”で実行されてもよい。ドライバ111及びアプリケーション110は、“Ring0”又は“Ring3”により実行されてもよい。プロセッサのいくつかの実施例では、“Ring−1”のコンセプトは、“Ring0 privileged mode”として知られ、“Ring0”のコンセプトは、“Ring0 non−privileged mode”として知られてもよい。“Ring−1”又は“Ring0 privileged mode”における処理は、“Ring0”又は“Ring0 privileged mode”より追加的なオーバヘッド及びコストを伴う可能性がある。電子デバイス103のオペレーティングシステムは、Ring0において実行されてもよい。
O/S下位トラッピングエージェント104は、Ring0又はより上位で実行するエンティティにトランスペアレントに実行されてもよい。このため、リソース106の試行されたアクセスは、O/S下位トラッピングエージェント104の有無に関わらず、同じ方法によりオペレーティングシステム112又は他のエンティティによりリクエストされてもよい。受信したアクションを実行する際、O/S下位トラッピングエージェント104は、当該リクエストが発生することを許可するか、当該リクエストを拒絶するか、又は他の訂正アクションを行ってもよい。リクエストを拒絶するため、O/S下位トラッピングエージェント104は、リソース106又はプロセッサに対するリクエストを単にわたさないか、又はアクションが行われたことをオペレーティングシステム112に確信させるため、リクエストに対するスプーフ又はダミーリプライを提供してもよい。
“Ring−1”により、電子デバイス103の関連するオペレーティングシステムより高い優先度により、又は電子デバイス103の関連するオペレーティングシステムの下位で実行することによって、O/S下位トラッピングエージェント104は、オペレーティングシステム112などのオペレーティングシステムを苦しめるマルウェアの多くを回避するようにしてもよい。しかしながら、電子デバイス103上のマルウェアは、それが悪意あるアクティビティを実行する場合、リソース106のリクエストを依然として実行する必要がある。従って、センシティブリソースにリンクされたトラッピング処理は、電子デバイス103のオペレーティングシステムのレベルより下位で実行されるトラッピングエージェントによって、より良好に実現されてもよい。
O/S下位トラッピングエージェント104は、何れか適切な方法により実現されてもよい。一実施例では、O/S下位トラッピングエージェント104は、バーチャルマシーンモニタにおいて実現されてもよい。このような実施例は、O/S下位トラッピングエージェント104について説明されるようなオペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、セキュリティバーチャルマシーンモニタ216の以降の図2の説明などにおいて行われる。他の実施例では、O/S下位トラッピングエージェント104は、ファームウェアにより実現されてもよい。このような実施例は、O/S下位トラッピングエージェント104について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、ファームウェアセキュリティエージェント440,516又はPCファームウェアセキュリティエージェント444の以降の図4及び5の説明などにおいて行われる。さらなる他の実施例では、O/S下位トラッピングエージェント104は、マイクロコードにより実現されてもよい。このような実現形態は、O/S下位トラッピングエージェント104について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、マイクロコードセキュリティエージェント708の以降の図7の説明などにおいて行われる。O/S下位トラッピングエージェント104は、これらの実施例の組み合わせにより実現されてもよい。
トリガイベントハンドラ108は、相互に通信接続された1以上のイベントハンドラ又はセキュリティエージェントにより実現されてもよい。トリガイベントハンドラ108及びO/S下位トラッピングエージェント104は、同一のセキュリティエージェントにより実現されてもよい。一実施例では、トリガイベントハンドラ108は、O/S下位トラッピングエージェントと同一の優先度リングにより実行されてもよい。他の実施例では、トリガイベントハンドラ108は、オペレーティングシステム112、ドライバ111又はアプリケーション110と同じ優先度により実行されてもよい。さらなる他の実施例では、トリガイベントハンドラ108は、少なくとも1つのトリガイベントハンドラがO/S下位トラッピングエージェントと同一の優先度リングにより実行され、少なくとも1つのトリガイベントハンドラがオペレーティングシステム112、ドライバ111又はアプリケーション110のレベルにおいて実行される2以上のトリガイベントハンドラにより実現されてもよい。O/S下位トラッピングエージェント104のレベルにより実行することによって、トリガイベントハンドラ108は、エージェント自体に感染する“Ring0”又は“Ring3”のマルウェアの問題を同様に回避してもよい。しかしながら、オペレーティングシステム112、ドライバ111又はアプリケーション110と共に“Ring0”又は“Ring3”により実行されるトリガイベントハンドラ108は、“Ring−1”エージェントの観点から利用不可なリソース106の試行されたアクセスに関するコンテクスト情報を提供することが可能であってもよい。
トリガイベントハンドラ108は、何れか適切な方法により実現されてもよい。一実施例では、トリガイベントハンドラ108は、バーチャルマシーンモニタ又はバーチャルマシーンモニタセキュリティエージェントにおいて実現されてもよい。このような実施例は、トリガイベントハンドラ108について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、セキュリティバーチャルマシーンモニタ216又はセキュリティバーチャルマシーンモニタセキュリティエージェント217の以降の図2の説明などにおいて行われる。他の実施例では、トリガイベントハンドラ108は、ファームウェアにおいて完全に又は部分的に実現されてもよい。このような実施例は、トリガイベントハンドラ108について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、ファームウェアセキュリティエージェント440、516又はPCファームウェアセキュリティエージェント444の以降の図4及び5の説明などにおいて行われる。トリガイベントハンドラ108はまた、バーチャルマシーンモニタ、ファームウェア又はマイクロコードと同様にして実現されてもよい図4のO/S下位エージェント450において実現されてもよい。さらなる他の実施例では、トリガイベントハンドラ108は、マイクロコードにより実現されてもよい。このような実現形態は、トリガイベントハンドラ108について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、マイクロコードセキュリティエージェント708の以降の図7の説明などにおいて行われる。トリガイベントハンドラ108は、バーチャルマシーンモニタ、ファームウェア又はマイクロコードと同様に実現されてもよい図7のO/S下位エージェント712において実現されてもよい。トリガイベントハンドラ108は、これらの実施例の組み合わせにより実現されてもよい。
一実施例では、O/S下位トラッピングエージェント104及び/又はトリガイベントハンドラ108は、電子デバイス103のベアメタルレイヤにおいて実行されてもよい。O/S下位トラッピングエージェント104及び/又はトリガイベントハンドラ108は、それらの間のオペレーティングシステムと、それらがプロテクトするよう構成されるリソース106とを利用することなく実行されてもよい。リソース106は、プロセッサ、プロセッサの機能、メモリ、データ構造などのメモリにあるエンティティ、又はファンクション、プロセス若しくはアプリケーションなどのプロセッサによる実行用のメモリにあるエンティティを含むものであってもよい。O/S下位トラッピングエージェント104及び/又はトリガイベントハンドラ108は、電子デバイス103のハードウェア上で直接的に実行されてもよい。O/S下位トラッピングエージェント104及び/又はトリガイベントハンドラ108は、実行するためのオペレーティングシステム112などのオペレーティングシステムの使用を要求せず、またリソース106に対するフルアクセスを取得しなくてもよい。
オペレーティングシステム112のレベルのエンティティ、O/S下位トラッピングエージェント104及びトリガイベントハンドラ108とリソース106との間の関係に参加しない他のオペレーティングシステムが、電子デバイス103に存在してもよい。例えば、プレブートオペレーティングシステムは、電子デバイスの各部分をセキュアに起動するが、リソース106から構成されるアプリケーション110、ドライバ111及びオペレーティングシステム112からのリクエストの処理に関して、電子デバイスの通常処理に参加しないようにしてもよい。他の具体例では、電子デバイス103は、マザーボードコンポーネント、プラグインカード、周辺装置、又はオペレーティングシステム112のレベルのエンティティ、O/S下位トラッピングエージェント104及びトリガイベントハンドラ108とリソース106との間の関係の外部においてファンクションを実行するため、オペレーティングシステム及びプロセッサの自らのセットを含む他のコンポーネントを含むものであってもよい。これらのオペレーティングシステムは、埋め込みオペレーティングシステムであってもよい。これらのオペレーティングシステムの何れかは、O/S下位トラッピングエージェント104及びトリガイベントハンドラ108の実行に利用されなくてもよい。さらに、これらのオペレーティングシステムの何れかは、トラッピングエージェント104及びトリガイベントハンドラ108によりプロテクトされるリソース106にアクセスしなくてもよい。
システム100は、1以上のO/S下位トラッピングエージェント104と1以上のトリガイベントハンドラ108との何れかの組み合わせを含むものであってもよい。O/S下位トラッピングエージェント104とトリガイベントハンドラ108との説明は、以降の図におけるトラッピングエージェント、イベントハンドラ及びセキュリティエージェントの説明において行われる。
リソース106は、電子デバイスの何れか適切なリソースを含むものであってもよい。例えば、リソース106は、レジスタ、メモリ、コントローラ又はI/Oデバイスを含むものであってもよい。リソース106の実施例の説明は、例えば、図2のシステムリソース214、図4に示されるようなディスプレイ430及びストレージ432などのコンポーネント、又は以降の図7のシステムリソース724などの説明で行われる。
セキュリティルール114は、O/S下位トラッピングエージェント104にトラップするためのアクションを通知し、トリガイベントハンドラ108にトラップされるアクションに基づきイベントを処理するよう通知するための何れか適切なルール、ロジック、コマンド、命令、フラグ又は他の機構を含むものであってもよい。トリガイベントハンドラ108は、セキュリティルール114の1以上のO/S下位トラッピングエージェントに提供するよう構成されてもよい。セキュリティルール114の一部又は全ての実施例の説明は、例えば、図2のセキュリティルール222、図4のセキュリティルール422、434、436、438、図5のセキュリティルール518、又は以降の図7のセキュリティルール707、723などの説明において行われる。
システム100のアプリケーション110、ドライバ111及びオペレーティングシステム112などのカーネルモード及びユーザモードエンティティは、何れか適切な方法により実現されてもよい。システム100のアプリケーション110、ドライバ111及びオペレーティングシステム112の実施例の説明は、例えば、図2のアプリケーション210、ドライバ211及びオペレーティングシステム212、図4のアプリケーション410、ドライバ411及びオペレーティングシステム412、以降の図7のアプリケーション709、ドライバ711及びオペレーティングシステム713などの説明で行われる。
電子デバイス103は、コンピュータ、PDA(Personal Data Assistant)、電話、モバイル装置、サーバ又はプログラム命令及び/又はプロセスデータをインターセプト及び/又は実行するようコンフィギュラブルな他の何れかのデバイスなどにおいて何れか適切な方法により実現されてもよい。電子デバイス103の実施例の説明は、図2の電子デバイス204、図4の電子デバイス404又は図7の電子デバイス701などの説明において行われる。
システム100は、電子デバイス103のオペレーティングシステムの下位のレベルにおいてリソースの試行されたアクセスをトラップするのに適した何れかのシステムにより実現されてもよい。システム100はまた、試行されたアクセスが悪意あるか否か判断するため、セキュリティルールに照会することによって試行されたアクセスを処理するのに適した何れかの手段により実現されてもよい。例えば、システム100は、以降の図2〜8に説明されるように、システム及び方法200、300、400、500、600、700及び800により実現されてもよい。
図2は、マルウェアから電子デバイスをプロテクトするためのバーチャルマシーンモニタベース及びセキュリティルールベースのコンフィギュラブルなセキュリティ手段のためのシステム200の実施例である。システム200は、バーチャルマシーンモニタにおけるシステム100の特定の要素を実現するシステム100の実施例であってもよい。システム200は、コンフィギュラブルセキュリティ手段によってマルウェアに対してプロテクトされるべき電子デバイス204を含むものであってもよい。システム200のコンフィギュラブルセキュリティ手段は、すべてのオペレーティングシステムの下位で実行されるセキュリティエージェント、セキュリティバーチャルマシーンモニタ、クラウドベースセキュリティエージェント及びO/S内動作セキュリティエージェントを含むものであってもよい。O/S下位セキュリティエージェント及びセキュリティバーチャルマシーンモニタは、O/S内動作セキュリティエージェントにより利用されるリソースを含む、電子デバイス204のシステムリソースへのアクセスを保護するよう構成されてもよい。O/S下位セキュリティエージェントは、セキュリティバーチャルマシーンモニタにおいて実行されてもよい。クラウドベースセキュリティエージェントは、O/S下位セキュリティエージェント及びO/S内動作セキュリティエージェントにマルウェア検出情報を提供し、セキュリティバーチャルマシーンモニタ及びO/S内動作セキュリティエージェントからマルウェアにおそらく関連する疑わしい動作に関する情報を受信するよう構成されてもよい。O/S内動作セキュリティエージェントは、電子デバイス上で実行されるマルウェアの証拠のため、電子デバイス204をスキャンするよう構成されてもよい。システム200は、電子デバイス204のリソースへのアクセスの試行される使用をトラップし、当該試行に対応するトリガイベントを生成し、トリガイベントに関してセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを行うよう構成される1以上のO/S下位セキュリティエージェントを有してもよい。
一実施例では、システム200は、1以上のO/S内セキュリティエージェント218及びセキュリティバーチャルマシーンモニタ(SVMM)セキュリティエージェント217に通信接続されるプロテクションサーバ202を有してもよい。SVMMセキュリティエージェント217は、SVMM216にあってもよい。SVMM216は、電子デバイス204上にあって実行されてもよい。O/S内セキュリティエージェント218とSVMMセキュリティエージェント217とは、通信接続されてもよい。プロテクションサーバ202、O/S内セキュリティエージェント218、SVMMセキュリティエージェント217及びSVMM216は、マルウェアの感染から電子デバイス204をプロテクトするよう構成されてもよい。
SVMMセキュリティエージェント217は、図1のトリガイベントハンドラ108の実施例であってもよい。SVMM216は、図1のO/S下位トラッピングエージェント104の実施例であってもよい。
電子デバイス204は、プロセッサ206に接続されるメモリ208を有してもよい。電子デバイス204は、何れか適切な目的のため電子デバイス上で実行される1以上のアプリケーション210又はドライバ211を有してもよい。電子デバイス204は、オペレーティングシステム212を有してもよい。オペレーティングシステム212は、電子デバイス204のシステムリソース214へのアクセスをアプリケーション210又はドライバ211に提供するよう構成されてもよい。SVMM216は、システムリソース214のオペレーティングシステム212のコールをインターセプトするよう構成されてもよい。SVMM216及びSVMMセキュリティエージェント217は、オペレーティングシステム212のレベルより下位で動作してもよい。例えば、SVMM216及びSVMMセキュリティエージェント217は、“Ring−1”などの特権モードでプロセッサ206上で直接動作してもよい。
プロセッサ206は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、ASIC(Application Specific Integrated Circuit)又はプログラム命令及び/又はプロセスデータをインターセプト及び/又は実行するよう構成される他の何れかのデジタル又はアナログ回路などから構成されてもよい。一部の実施例では、プロセッサ206は、メモリ208に格納されているプログラム命令及び/又はプロセスデータをインターセプト及び/又は実行してもよい。メモリ208は、部分的に又は全体的にアプリケーションメモリ、システムメモリ又はその双方として構成されてもよい。メモリ208は、1以上のメモリモジュールを保持及び/又は収容するよう構成される何れかのシステム、デバイス又は装置を有してもよく、例えば、メモリ208は、ROM(Read Only Memory)、RAM(Random Access Memory)、ソリッドステートメモリ又はディスクベースメモリを含むものであってもよい。各メモリモジュールは、ある期間中にプログラム命令及び/又はデータを保持するよう構成される何れかのシステム、デバイス又は装置を有してもよい(例えば、コンピュータ可読な非一時的媒体など)。
プロテクションサーバ202は、ネットワーク244上で実行されてもよい。ネットワーク244上で実行されるプロテクションサーバ202は、クラウドコンピューティングスキームを実現してもよい。プロテクションサーバ202は、マルウェア検出ルール及び情報を更新するため、電子デバイス204の要素と通信するよう構成されてもよい。プロテクションサーバ202は、電子デバイス204から発信された疑わしいアクティビティに関する情報を受信し、このような疑わしいアクティビティがマルウェアの感染の徴候であるか判断するよう構成されてもよい。オペレーティングシステム212は、1以上のO/S内セキュリティエージェント218を有してもよい。O/S内セキュリティエージェント218は、O/S内セキュリティルール220などのモニタリング及び検出ルールをプロテクションサーバ202から受信するよう構成されてもよい。O/S内セキュリティエージェント218は、プロテクションサーバ202により受信されたO/S内セキュリティルール220を利用して、電子デバイス204上の疑わしいアクティビティをモニタ及び阻止するよう構成されてもよい。O/S内セキュリティエージェント218は、検出された疑わしいアクティビティをプロテクションサーバ202に報告するよう構成されてもよい。O/S内セキュリティエージェント218は、マルウェア処理を阻止し、当該阻止をプロテクションサーバ202に報告するよう構成されてもよい。複数のO/S内セキュリティエージェント218がシステム200にある場合、各O/S内セキュリティエージェント218は、トラッピング、検証又はO/S内セキュリティエージェント218に関する他のタスクの指定された部分を実行するよう構成されてもよい。このような部分は、O/S下位セキュリティエージェントにより規定されてもよい。例えば、あるO/S内セキュリティエージェント218はMOV命令を検証又は調査し、他のO/S内セキュリティエージェント218はJMP命令を検証又は調査してもよい。O/S内セキュリティエージェント218は、メモリのあるページのライフサイクルを決定するよう構成されてもよい。例えば、O/S内セキュリティエージェント218は、メモリのページを配分するためオペレーティングシステムにより典型的に利用されるプロセス及びステップを知っていてもよい。同様に、O/S内セキュリティエージェント218は、それのローダにアプリケーションのイメージをロードするためオペレーティングシステム212により典型的に利用されるプロセス及びステップを知っていてもよい。このようなプロセスは、静的な処理パターンに従うものであってもよい。従って、O/S内セキュリティエージェント218は、所与のアクセションに対して標準的な手順に従ったか判断するため、オペレーティングシステム212の処理を追跡するよう構成されてもよい。O/S内セキュリティエージェント218は、SVMMセキュリティエージェント217によりトラップされた処理がO/S内セキュリティエージェント218により観察された対応する予想されるアクションを生成したか判断するため、SVMMセキュリティエージェント217と通信してもよい。相違は、マルウェアがオペレーティングシステム212の通常処理の外部のシステムファンクションを実行すことを試みたことを示すものであってもよい。従って、例えば、O/S内セキュリティエージェント218及びSVMMセキュリティエージェント217は、対象ページがマルウェアにより直接メモリにロードされたか、又はオペレーティングシステムのローダによりロードされたか判断してもよい。このような動作は、O/S内セキュリティエージェント218又はSVMMセキュリティエージェント217に情報をプロテクションサーバ202に報告させ、より攻撃的なトラッピング及びチェッキングを利用させ、又は他の何れかの訂正手段を行わさせてもよい。
一実施例では、O/S内セキュリティエージェント219は、オペレーティングシステム212内に自らを埋め込むことによって、コンテクスト情報を提供するよう構成されてもよい。例えば、O/S内セキュリティエージェント219は、自ら又はサブコンポーネントをドライバフィルタとして登録し、ドライバが観察するもの又は観察しないものを決定するため、自らをメインドライバにアタッチするよう構成されてもよい。フィルタとしてNDIS.SYSにアタッチされることによって、O/S内セキュリティエージェント219は、オペレーティングシステム212のドライバにより観察されるファイルI/O処理を報告するよう構成されてもよい。
他の実施例では、O/S内セキュリティエージェント219は、オペレーティングシステムの下位で観察される情報と比較するため、SVMMセキュリティエージェント216又は他のO/S下位セキュリティエージェントにオペレーティングシステム219内から観察された情報を提供するよう構成されてもよい。これら2つの情報セットの間の相違は、自らを隠蔽しようと試みるマルウェアの存在を示すものであるかもしれない。例えば、O/S内セキュリティエージェント219は、NDIS.SYSをフック又はフィルタリングし、あるファイルへのファイル書き込みをモニタしてもよい。SVMMセキュリティエージェント216は、入出力コマンドをモニタしてもよい。SVMMセキュリティエージェント216が、O/S内セキュリティエージェント219により観察されるファンクションコールのリストに基づき、あるべきものより多くの書き込みが観察されたと判断した場合、マルウェアは、オペレーティングシステム212により提供されるファンクションの外部においてディスクに秘かに書き込みをしている可能性がある。
ネットワーク244は、インターネット、イントラネット、ワイドエリアネットワーク、ローカルエリアネットワーク、バックホールネットワーク、ピア・ツー・ピアネットワーク又はこれらの何れかの組み合わせなど、通信のための何れか適切なネットワークにより実現されてもよい。プロテクションサーバ202は、普及評判解析ロジックを適用することによってマルウェアをさらに検出するため、各種電子デバイス204上で実行される各種セキュリティエージェント218から送信されるレポートを利用してもよい。例えば、電子デバイス204上で特定される疑わしい動作は、他の電子デバイス204を予防的にプロテクトするため、プロテクションサーバ202のルールに合成されてもよい。このようなルールは、例えば、疑わしいドライバが報告された回数などに基づき決定されてもよい。例えば、狭い又は遅い配信パターンの未知のドライバは、マルウェアと関連付けされてもよい。他方、広く速い配信の未知のドライバは、人気があって広範に利用可能なアプリケーションのパッチと関連付けされてもよい。他の具体例では、このような検出されたドライバは、ホストマルウェアに知られるウェブサイトにアクセスするため、他の電子デバイス上で実行されるセキュリティソフトウェアにより決定されてもよい。このようなドライバは、マルウェアと関連付けされるよう決定されてもよい。
SVMM216は、システム200のファンクションをモニタするセキュリティバーチャルマシーンの一部又はすべてを実現してもよい。SVMM216は、電子デバイス上で実行される1以上のオペレーティングシステムに対するレジスタ、メモリ又はI/Oデバイスなどのシステムリソースへのアクセスをインターセプトするよう構成されてもよい。システム200のファンクションをモニタするセキュリティバーチャルマシーンは、SVMM216を用いて実現されてもよいし、あるいは、他の何れかのバーチャルマシーンモニタは、本開示の教示により電子デバイス204をプロテクトするよう構成されてもよい。SVMM216は、オペレーティングシステム212が自らのために、又はオペレーティングシステム212を介し実行されるアプリケーション210のためにシステムリソース214にアクセスすることを試みる間に、オペレーティングシステム212により行われるアクションを制御及びフィルタリングするよう構成されてもよい。SVMM216は、電子デバイス204上でオペレーティングシステム212の下位で実行されてもよく、オペレーティングシステム212及びアプリケーション210又はドライバ211に利用可能とされている一部又はすべてのプロセッサリソースに対する制御を行ってもよい。アプリケーション210は、電子デバイス204上で実行されるのに適した何れかのアプリケーションから構成されてもよい。ドライバ211は、電子デバイス204上で実行されるのに適した何れかのドライバから構成されてもよい。SVMM216による制御のため利用可能とされるプロセッサリソースは、仮想化のため指定されたリソースを含むものであってもよい。一実施例では、SVMM216は、オペレーティングシステム212、アプリケーション210又はドライバ211によるアクセスのためのシステムリソースを仮想化するよう構成されてもよい。単なる具体例として、このようなシステムリソース214は、入出力デバイス226、システムメモリ228又はプロセッサリソース230を含むものであってもよい。単なる具体例として、プロセッサリソース230は、従来のレジスタ232、デバッグレジスタ234、メモリセグメンテーション236、メモリページング238、インタラプト240又はフラグ242を含むものであってもよい。I/Oデバイス226は、キーボード、ディスプレイ、マウス又はネットワークカードなどのこのようなデバイスへのアクセスを含むものであってもよい。
SVMM216は、システムリソース215にアクセスするため、オペレーティングシステム212から発信された処理の実行をトラップするよう構成されてもよい。SVMM216は、システムリソース214の特定の試行されたアクセスをトラップするよう構成される制御構造を有してもよい。何れか適切な制御構造が利用されてもよい。一実施例では、このような制御構造は、バーチャルマシーン制御構造(VMCS)221を有してもよい。SVMM216は、VMCS221の内部においてフラグを操作することによって、このような実行をトラップするよう構成されてもよい。SVMM216は、システムリソース214のアクセスに関するオペレーティングシステム212、アプリケーション210又はドライバ211の何れか適切な処理をトラップするよう構成されてもよい。このようなトラップされた処理は、例えば、システムメモリ228の特定のメモリページのリード、ライト及び実行、プロセッサレジスタ230との間における値をロード及び格納、又はI/Oデバイス226との間におけるリード及びライトなどを含むものであってもよい。このような何れかの処理は、SVMM216によりトラップされてもよいバーチャルマシーンイグジット(VM Exit)を生じさせるものであってもよい。SVMM216は、プロセッサ208により生成されるか、又はオペレーティングシステム21の要素により開始されるインタラプト240の生成をトラップするよう構成されてもよい。SVMM216は、IN及びOUT命令をトラップすることによって、I/Oデバイス226との間で試みられたリード及びライトをトラップするよう構成されてもよい。SVMMは、例えば、Virtualization Technology Directed I/O(VTd)などの機構へのアクセスをトラップすることによって、このような命令をトラップするよう構成されてもよい。VTdは、プロセッサ208によるI/Oデバイスの仮想化を可能にするものであるかもしれない。VTdファシリティにアクセスすることによって、SVMMセキュリティエージェント217は、VTdにより接続されるデバイスを決定し、オペレーティングシステム212からのメタ情報、I/Oデバイス上のポート又は他の適切な情報を決定するよう構成されてもよい。SVMMセキュリティエージェント217は、このような仮想化されたデバイスアクセスの処理を制御又はトラップするよう構成されてもよい。例えば、SVMMセキュリティエージェント217は、プログラマブルI/Oポートに与えられるI/O割当てを含むI/Oパーミッションマップを決定するよう構成されてもよい。SVMMセキュリティエージェント217は、マルウェアにより実行される可能性があるパーミッションマップへのアクセスをトラップするか、あるいは、オペレーティングシステム212上のエンティティの関係とI/Oデバイスのリクエストとを決定するためパーミッションマップを利用するよう構成されてもよい。
一実施例では、SVMMセキュリティエージェント217は、SVMM216において実行されてもよい。他の実施例では、SVMMセキュリティエージェント217は、SVMM216の外部において実行され、SVMM216に通信接続されてもよい。このような実施例では、SVMMセキュリティエージェント217は、オペレーティングシステム212などの電子デバイス204のオペレーティングシステムの下位で実行されてもよい。SVMMセキュリティエージェント217は、SVMM216の同一レベル及び/又は同一優先度により実行されてもよい。SVMMセキュリティエージェント217は、SVMM216によりトリガ又はトラップされたイベントを処理するよう構成されてもよい。SVMMセキュリティエージェント217は、カーネルレベルルートキットの干渉のないコンテンツを調べるため、オペレーティングシステム212の下位レベルでメモリ228又はディスクのコンテンツにアクセスするよう構成されてもよい。さらに、SVMMセキュリティエージェント217の一部の処理は、SVMM216により実現されてもよく、SVMM216の一部の処理は、SVMMセキュリティエージェント217により実現されてもよい。
SVMMセキュリティエージェント217は、何れのアクションがトラップ又はトリガを生じさせるかに関して、SVMM216の処理を設定するよう構成されてもよい。一実施例では、SVMM216は、トラップされたアクションの検出をSVMMセキュリティエージェント217に通信するよう構成されてもよい。SVMMセキュリティエージェント217は、トラップされたアクションがマルウェア又は悪意あるアクティビティを示すか判断するため、セキュリティルール222を照会し、セキュリティルール222に基づき、以降の何れのアクションがとられるべきかに関する命令をSVMM216に提供するよう構成されてもよい。このような以降のアクションは、試行されたアクションの許可若しくは不許可、又は他の訂正ステップの実行を含むものであってもよい。
SVMM216及びSVMMセキュリティエージェント217によりシステムリソース214の試行されたアクセス及び実行をトラップする処理は、O/S内セキュリティエージェント218により収集された情報を介し調整されてもよい。O/S内セキュリティエージェント218は、SVMM216及びSVMMセキュリティエージェント217のトラップ及びハンドリング処理にコンテクストを提供するよう構成されてもよい。例えば、あるオペレーティングシステムデータ構造は、通常は特定のアプリケーション又はサービスによってのみ書き込まれてもよい。O/S内セキュリティエージェント218は、何れのアプリケーション又はプロセスがオペレーティングシステム212上で現在可視的に実行されているか決定し、当該情報をSVMMセキュリティエージェント217に通信してもよい。特定のアプリケーション又はサービスが可視的に実行されているとリストされない場合、データ構造への試行されている書き込みは、未認証のアプリケーション又はプロセスからのものである可能性がある。
O/S内セキュリティエージェント218は、ハイパーコールを介しSVMM216及び/又はSVMMセキュリティエージェント217と通信するよう構成されてもよい。ハイパーコールは、利用可能なリクエストを規定する記述子テーブルと共に関連する入出力パラメータにより実現されてもよい。このような記述子テーブルは、O/S内セキュリティエージェント218がSVMM216及び/又はSVMMセキュリティエージェント217と通信するため可能な1以上のリクエストを規定してもよい。このような記述子テーブルはまた、このようなリクエストの入出力パラメータがメモリに配置されてもよい場所を規定してもよい。
O/S内セキュリティエージェント218、SVMMセキュリティエージェント217及びプロテクションサーバ202は、互いに認証するよう構成されてもよい。セキュリティエージェント212、SVMMセキュリティエージェント217及びプロテクションサーバ202のそれぞれは、各エンティティが認証されない場合、相互に通信することを継続しないよう構成されてもよい。SVMM216は、O/S内セキュリティエージェント218のイメージをメモリ206に配置し、暗号化署名アルゴリズムを利用してメモリ206のO/S内セキュリティエージェント218のイメージを検証するよう構成されてもよい。プロテクションサーバ202、O/S内セキュリティエージェント218及びSVMMセキュリティエージェント217の間の認証は、暗号化ハッシュ及び/又は署名アルゴリズムを含む何れか適切な方法を利用してもよい。一実施例では、このような認証は、プライベート秘密鍵の交換を伴うものであってもよい。O/S内セキュリティエージェント218は、SVMMセキュリティエージェント217のインスタンスを検証するため、プロテクションサーバ202から秘密鍵を受信するよう構成されてもよい。
O/S内セキュリティエージェント218は、オペレーティングシステム212の処理に関するコンテクスト情報を有してもよい。O/S内セキュリティエージェント218は、このようなコンテクスト情報を提供するため、SVMMセキュリティエージェント217と通信するよう構成されてもよい。SVMMセキュリティエージェント217は、特定のメモリページの規定方法やトラップするレジスタなどに関してSVMM216に指示してもよい。
SVMM216は、SVMMセキュリティエージェント217により規定されるシステムリソース214へのアクセスの試みをトラップするよう構成されてもよい。例えば、メモリアクセスのトラップについて、SVMM216は、リード、ライト又は実行などの処理をトラップするよう構成されてもよい。プロセッサレジスタ230へのアクセスのトラップについて、SVMM216は、レジスタ値のロード、ストア又はリードを含む処理をトラップするよう指示されてもよい。I/Oデバイス226のI/O処理のトラップについて、SVMM216は、キーボード、マウス又は他の周辺装置への入出力などの処理をトラップするよう指示されてもよい。以降の図のSVMMセキュリティエージェント217及び/又は他のO/S下位セキュリティエージェントは、O/S内セキュリティエージェントに関して、I/O処理についてターゲットI/Oデバイス226の識別情報、I/Oデバイス226に対して実行されるターゲット処理及び転送されるデータを決定するよう構成されてもよい。
SVMMセキュリティエージェント217は、オペレーティングシステム212の何れのエンティティが電子デバイス204のリソースにアクセスすることを試行したか、又はリソースがオペレーティングシステム212の何れのエンティティに属してもよいかなど、コンテクスト情報を決定するよう構成されてもよい。SVMMセキュリティエージェント217は、何れか適切な方法を介してこのような決定を行うよう構成されてもよい。一実施例では、SVMMセキュリティエージェント217は、O/S内セキュリティエージェント218からのこのような決定のためのコンテクスト情報にアクセスするよう構成されてもよい。他の実施例では、SVMMセキュリティエージェント217は、オペレーティングシステム212の異なるプロセス又はアプリケーションにより行われたコールの順序を決定するため、オペレーティングシステム212のコールスタック及び/又はプロセッサ208の実行スタックに直接的に又は間接的にアクセスするよう構成されてもよい。実行命令ポインタはトリガを生じさせる命令を示し、実行スタックポインタ及び実行ベースポインタは、スタックフレームを示すものであってもよい。スタックを介し実行ベースポインタをウォークすることによって、対象となる処理のコンテクストを提供する以前のファンクションコールが特定されてもよい。このようなスタックは、ソースメモリ位置と共に、試行された処理を示すものであってもよい。さらなる他の実施例では、SVMMセキュリティエージェント217は、セキュリティルール222に関してメモリマップを利用して、試行が悪意あるか又はマルウェアを示すか判断するよう構成されてもよい。このようなメモリマップは、例えば、試行されたアクセスのメモリ位置が与えられると、リソースの試行されたアクセスを行ったエンティティを示すものであってもよい。このようなメモリマップは、例えば、バーチャルメモリページ識別子及び/又は物理メモリアドレスなどにおいて規定されてもよい。他の例では、このようなメモリマップは、当該試行のターゲットのメモリ位置に対応するエンティティを示すものであってもよい。メモリマップを利用して、SVMMセキュリティエージェント217は、試行されたアクセスのソース及びターゲット又はそのエンティティオーナーの識別情報を決定するよう構成されてもよい。メモリマップは、SVMMセキュリティエージェント217又はシステムの実行をモニタすることを介しO/S内セキュリティエージェントに関する以降の図の他のO/S下位セキュリティエージェントによって部分的に作成されてもよい。SVMMセキュリティエージェント217及び/又は以降の図の他の他のO/S下位セキュリティエージェントは、O/S内セキュリティエージェントに関連して、所与のメモリページ又は物理アドレスについて、当該位置があるコードセクション又はデータセクションに属するか、それが何れのモード、プロセス、アプリケーション、イメージ又は他のエンティティに属するか、又はそれはユーザモード又はカーネルモードエンティティに関連付けされているか判断してもよい。SVMMセキュリティエージェント217及び/又は以降の図の他のO/S下位セキュリティエージェントは、O/S内セキュリティエージェントに関して、電子デバイス204上で実行される各種エンティティの識別情報、位置及びパーミッションを示すバーチャルメモリ及び物理メモリのマッピングのためのメタデータを決定してもよい。同様に、SVMMセキュリティエージェント217及び/又は以降の図の他のO/S下位セキュリティエージェントは、マスストレージデバイスのセクタのマッピングを利用して、マスストレージデバイスの当該エンティティのイメージの位置を決定してもよい。SVMMセキュリティエージェント217及び/又は以降の図の他のO/S下位セキュリティエージェントは、O/S内セキュリティエージェントに関して、所与のエンティティについてそれがあるセクタ、ファイル、ディレクトリ及びボリュームを決定してもよい。
SVMMセキュリティエージェント217は、O/S内セキュリティエージェント218、SVMMセキュリティエージェント217及びSVMM216の処理に必要とされるようなシステムメモリ228などのメモリを割り当てるよう構成されてもよい。SVMMセキュリティエージェント217は、SVMM216がこのような割り当てられた未認証のリード及びライト処理に対してメモリをセキュアにすることを要求するよう構成されてもよい。SVMM216は、メモリがO/S内セキュリティエージェント218により割り当てられた時とSVMM216によりプロテクションが確立された時との間に悪意あるコードをマルウェアが追加する機会を排除するため、メモリのプロテクションが確立された後、割り当てられたメモリを初期化するよう構成されてもよい。
SVMMセキュリティエージェント217は、SVMMセキュリティルール222をセキュアに受信するため、プロテクションサーバ202と通信するよう構成されてもよい。SVMMセキュリティルール222は、何れのセキュリティポリシーが利用されるべきかに関してSVMM216に指示するための命令、ロジック、ルール、共有ライブラリ、ファンクション、モジュール又は他の何れか適切な機構を有してもよい。SVMMセキュリティエージェント217は、電子デバイス204からの疑わしいアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ202に送信するよう構成されてもよい。
O/S内セキュリティエージェント218は、O/S内セキュリティルール220を受信するため、プロテクションサーバ202と通信するよう構成されてもよい。O/S内セキュリティルール220は、O/S内セキュリティエージェント218が電子デバイス204上でマルウェアを検出するための命令、ロジック、ルール、共有ライブラリ、ファンクション、モジュール又は他の何れか適切な機構を有してもよい。O/S内セキュリティエージェント218は、電子デバイス204上の疑わしいアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ202に送信するよう構成されてもよい。
O/S内セキュリティルール220及びSVMMセキュリティルール222はそれぞれ、マルウェアの感染に対して電子デバイス204をプロテクトし、マルウェアを有しうる疑わしいアクティビティを検出するためのプロテクションルールを有してもよい。O/S内セキュリティエージェントのセキュリティルールは、O/S内セキュリティエージェント218によって及び内部において実行されたルールを含むものであってもよい。SVMMセキュリティルール222は、SVMM216及び/又はSVMMセキュリティエージェント217によって及び内部において実行されたルールを含むものであってもよい。
SVMMセキュリティルール222は、電子デバイス204のマルウェア感染を観察及び検出する方法の定義と共に情報をSVMMセキュリティエージェント217に提供するよう構成されてもよい。例えば、SVMMセキュリティルール222は、マルウェアの徴候についてSVMMセキュリティエージェント217がモニタするアプリケーション210又はドライバ211などのエンティティからのファンクションコール又は動作のタイプの分類を含むものであってもよい。他の例として、SVMMセキュリティルール222は、何れのパラメータを利用するか、当該コールから値をどのように抽出するか、又は当該コールの処理をどのように無効にするかを含む、トリガされたファンクションコールをSVMMセキュリティエージェント217がどのように処理するかの定義を含むものであってもよい。さらに、SVMMセキュリティルール222は、動作検出ルールに対する例外処理(exception)と共に、アプリケーション210又はドライバ211などの電子デバイスのエンティティの動作をモニタする方法に関するSVMM内セキュリティエージェント217の情報を含むものであってもよい。さらなる他の具体例として、SVMMセキュリティルール222は、当該動作検出ルールにより検出された悪意ある動作をどのように阻止及び修復するかに関するSVMMセキュリティエージェント217の情報を含むものであってもよい。SVMMセキュリティルール222は、当該SVMMセキュリティエージェント217がモニタ、収集及びプロテクションサーバ202に送信すべきデータの詳細を含むものであってもよい。
同様に、O/S内セキュリティルール220は、電子デバイス204のマルウェア感染を観察及び検出する方法と共に、SVMMセキュリティエージェント217と当該アクティビティをどのように調整するかの定義と共に情報をO/S内セキュリティエージェント218に提供するよう構成されてもよい。
SVMMセキュリティルール222はまた、何れのアクションをSVMM216がトラップするかに関するルールを含むものであってもよい。SVMMセキュリティエージェント217は、当該ルールをSVMM216に適用するよう構成されてもよい。例えば、SVMMセキュリティエージェント217は、トラップ対象のファンクションのアドレスを識別可能なバーチャル又は物理メモリページに変換し、当該ページの実行をトラップするためSVMM216に対するリクエストを生成し、実行をトラップした後に以降にセキュリティエージェント217をコールするよう構成されてもよい。SVMMセキュリティエージェント217は、SVMM216とのそれのインタフェースを介しSVMMセキュリティルール222を受信するよう構成されてもよい。このようなインタフェースは、ハイパーコールベースインタフェースから構成されてもよい。SVMMセキュリティエージェント217は、同じハイパーコールベースインタフェースを介しSVMM216に何れかの結果としての検出又はレポートをプッシュするよう構成されてもよい。
一実施例では、SVMM216は、SVMMセキュリティエージェント217に照会することなく、トリガされたアクションを処理するよう構成されてもよい。このような実施例では、SVMM216は、SVMMセキュリティエージェント217にわたされないSVMM216内で処理される追加的なトリガをインストールするよう構成されてもよい。このような追加的なトリガは、SVMMセキュリティルール222により規定されてもよい。一実施例では、SVMMセキュリティルール222は、SVMM216についてメモリページスキャンルールを規定してもよい。このようなルールは、悪意があり、メモリに配置されることが許可されるべきでないエンティティ又は修正のリストを含むものであってもよい。このようなルールはまた、システムメモリ228内に存在することが特に許可されるページのリストを含むよう構成されるホワイトリストを含むものであってもよい。他の実施例では、SVMMセキュリティルール222は、SVMM216のメモリページに対するアクセスルールを規定してもよい。このようなルールは、何れのコードページが所与のコード又はデータページにアクセスすることが許可又は阻止されるかの規定を含むものであってもよい。この結果、SVMMセキュリティルール222は、SVMM216にメモリスキャナとして機能し、及び/又はメモリページへのアクセスを制御することを指示するよう構成されてもよい。
SVMM216は、システムリソース214の各自のコード及びデータページへの未認証のリード及びライトアクセスを阻止することによって、SVMMセキュリティエージェント217、SVMM216及びO/S内セキュリティエージェントをプロテクトするよう構成されてもよい。例えば、アプリケーション210又はドライバ211が、SVMMセキュリティエージェント217、SVMM216及びO/S内セキュリティエージェント218のインテグリティ又は処理に影響を与えるシステムメモリ228、プロセッサレジスタ230又はI/Oデバイス226の一部に対してリクエストを生成する場合、SVMM216は、当該試行されたリクエストをインターセプトし、その後、当該リクエストをリルート又は拒絶し、又は他の適切なアクションをとるよう構成されてもよい。他の具体例では、SVMM216は、SVMMセキュリティエージェント217自体又は他の対応する若しくはアフィリエイトプログラムなど、メモリセキュリティソフトウェアアプリケーションについてSVMMセキュリティエージェント217、SVMM216及びO/S内セキュリティエージェント218に影響を与えるシステムメモリ228、プロセッサレジスタ230又はI/Oデバイス226の一部についてリードアクセスを認証するよう構成されてもよい。このような認証は、システムメモリ228などのシステムリソース214へのアクセスをどのように処理するかSVMM216に対して規定するSVMMセキュリティルール222内で規定されてもよい。一実施例では、SVMMセキュリティルール222は、SVMMセキュリティエージェント217を含みうる信頼されたセキュリティプログラムのホワイトリストを含むものであってもよい。
プロテクションサーバ202と通信するため、SVMM216は、セキュアネットワークインタフェース224を有してもよい。セキュアネットワークインタフェース224は、プロテクションサーバ202などのネットワークサーバと、SVMM216又はSVMMセキュリティエージェント217などの電子デバイス204の要素との間のセキュアアクセスを提供するよう構成されてもよい。SVMM216は、セキュアネットワークインタフェース224を実現しうる論理TCP/IPドライバ又は他の通信インタフェースを有してもよい。プロテクションサーバ202は、SVMMセキュリティルール222又はO/S内セキュリティルール220などのプロテクションルールを提供すると共に、自らを更新するようSVMM216又はSVMMセキュリティエージェント217に指示するためにセキュアネットワークインタフェース224を介し通信するよう構成されてもよい。プロテクションサーバ202は、特定の電子デバイス204又は特定のSVMM216についてカスタマイズされたルールを配信するよう構成されてもよい。このようなカスタマイズは、アンチウイルスプログラム、ファイアウォール又は他のプロテクション機構などの電子デバイス204内の他のプロテクション機構と共に、電子デバイス204により報告された悪意あるアクティビティのタイプを含むものであってもよい。一実施例では、プロテクションサーバ202は、例えば、ローカルネットワーク上などの電子デバイス204のアドもニスとレータにより運営されてもよい。このような場合、アドミニストレータは、プロテクションサーバ202から受信したルールにより実現されてもよい疑わしい動作を処理するためのグローバルな又はパーソナル化されたポリシーを設定してもよい。SVMM216は、プロテクションサーバ202を介しセキュアに配信された新たなイメージを介し自らをどのように更新するかSVMM216又はSVMMセキュリティエージェント217に通知するアップデートエンジンを有してもよい。
O/S内セキュリティルール220及びSVMMセキュリティルール222はそれぞれ、電子デバイス204上の特定の観察されたアクション又は処理又はそのクラスがプロテクションサーバ202にわたされることを要求するよう構成されてもよい。そこでは、プロテクションサーバは、アクションが電子デバイス204上で進捗することが許可される前に、観察結果を調べて検証してもよい。プロテクションサーバ202は、このようなアクションが同期的に又は非同期的に調べられることを受け入れるよう構成されてもよい。一実施例では、O/S内セキュリティエージェント218は、プロテクションサーバ202による検証のため、問題のあるアクティビティ、コード若しくはデータのセグメント又はアクションをSVMM216にわたすよう構成されてもよい。例えば、O/S内セキュリティエージェント218は、メモリ内にロードされた署名なしのドライバを検出することによって、マルウェアの疑わしいインスタンスを検出してもよい。SVMM216は、O/S内セキュリティエージェント218から疑わしいソフトウェアに関する情報を受信し、それをプロテクションサーバ202に提供してもよい。
SVMMセキュリティルール222は、電子デバイスの何れか適切なシステムリソースへのアクセスを許可又は拒絶するよう構成されてもよい。モニタ対象に利用可能な当該リソースは、プロセッサ206により示されるリソースに依存してもよい。例えば、一実施例では、SVMMセキュリティルール222は、SVMM216がシステムメモリ228、I/Oデバイス226及びインタラプト140へのアクセスを制限することを可能にするよう構成されてもよい。このような制限は、キーボードディスプレイ又は着脱可能なディスクなどのI/Oデバイスへの未認証のアクセスを阻止してもよい。他の実施例では、SVMMセキュリティルール222は、SVMM216がインタラプト240などのプロセッサレジスタのエントリを含むインタラプト記述子テーブルのエントリへのアクセスを制限することを可能にするよう構成されてもよい。さらなる他の実施例では、SVMMセキュリティルール222は、物理メモリをホストするため、バーチャルメモリのマッピング(ゲストオペレーティングシステムの観点からの実際のメモリ)を処理するExtended Page Table(EPT)又は他の何れかの機構へのアクセスを制限することを可能にするよう構成されてもよい。
電子デバイス204がバーチャル化をサポートするプロセッサ208に加えて1以上のプロセッサを含む場合、SVMM216又はSVMM216の他のインスタンスは、当該他のプロセッサのバーチャル化されたリソースにアクセスするための試みをインターセプトするよう構成されてもよい。電子デバイス204が、例えば、プロセッサ208を含むクワドプロセッサを含む場合、クワドプロセッサのリソースは、SVMM216によりプロテクトされてもよい。1以上の他のプロセッサがバーチャル化をサポートしない場合、SVMM216は、それらのリソースへのアクセスをセキュアにすることが可能でないかもしれない。1以上の他のプロセッサがプロセッサ208と異なるバーチャル化技術をサポートする場合、SVMM216は、リソースがバーチャル化される方法は異なりうるため、SVMM216がプロセッサ208と異なる方法でセキュアにされる場合、自らのリソースへのアクセスをセキュアにするよう構成されてもよい。
処理について、プロテクションサーバは、ネットワーク244上で実行されてもよい。O/S内セキュリティエージェント218は、電子デバイス204についてマルウェアをスキャンし、疑わしい動作について電子デバイス204上のアプリケーション210及びドライバ211などのエンティティの動作を観察し、検出された何れかの感染を修復することによって、マルウェアの感染から電子デバイス204をプロテクトするため、電子デバイス204上で実行される。O/S内セキュリティエージェント218は、オペレーティングシステムと同じ優先度又はレベルにおいて実行されてもよく、また、オペレーティングシステム212において実行されてもよい。SVMM216は、電子デバイス204のシステムリソースの試行されたアクセスをトラップすることによって、マルウェアの感染から電子デバイス
204をプロテクトするため、電子デバイス204上で実行されてもよい。SVMMセキュリティエージェント217は、SVMM216のトラップ処理を設定し、システムリソースのトラップされた試行されたアクセスの一部又はすべてを処理するため、電子デバイス204又は他の適切な電子デバイス上で実行されてもよい。SVMM216及びSVMMセキュリティエージェント217は、“Ring−1”の優先度によってオペレーティングシステム212の下位で実行されてもよい。SVMMセキュリティエージェント217は、SVMM216上で実行されてもよい。
プロテクションサーバ202は、SVMMセキュリティルール222及びO/S内セキュリティルール220などのセキュリティルールを電子デバイス204に送信してもよい。当該ルールは、SVMMセキュリティエージェント217により受信され、それは、O/S内セキュリティルール220をSVMM216に提供してもよい。当該ルールは、O/S内セキュリティエージェント218により受信されてもよい。
プロテクションサーバ202、セキュリティエージェント218及びSVMMセキュリティエージェント217はそれぞれ相互認証してもよい。SVMMセキュリティエージェント217は、セキュリティエージェント218のイメージをメモリに配置し、暗号化署名アルゴリズムを利用して、メモリにあるセキュリティエージェント218のイメージを検証してもよい。プロテクションサーバ202及びSVMMセキュリティエージェント217は、暗号化ハッシュ署名アルゴリズムを利用して正しく相互識別することによって、相互認証してもよい。SVMMセキュリティエージェント217及びプロテクションサーバ202はまた、互いの識別情報を認証するため、プライベート秘密鍵を交換してもよい。セキュリティエージェント218は、SVMMセキュリティエージェント217のインスタンスを検証するため、プロテクションサーバ202から秘密鍵を受信してもよい。セキュリティエージェント218、SVMMセキュリティエージェント217,202の間の通信は、各エージェントが相互認証されない場合、完全には確立されなくてもよい。同様に、SVMMセキュリティエージェント217及びSVMMセキュリティエージェント217216は、別々のエンティティとして実行されている場合、相互に検証及び認証してもよい。
SVMM216及びSVMMセキュリティエージェント217は、オペレーティングシステム212及び電子デバイス204のすべてのオペレーティングシステムの下位で実行されてもよい。SVMM216は、オペレーティングシステム212、セキュリティエージェント218、アプリケーション210及びドライバ211によるI/Oデバイス226、システムメモリ228及びプロセッサレジスタ230を含むシステムリソース214へのアクセスをモニタしてもよい。SVMM216は、オペレーティングシステム212、セキュリティエージェント218、アプリケーション210、ドライバ211又は電子デバイス204の他の何れかのエンティティによりリクエストされるキーとなる処理の実行をトラップしてもよい。SVMM216は、VMCS221の内部のフラグを操作することによって、当該実行をトラップしてもよい。VMCS221がプロテクトされるリソースに対するリクエストをインターセプトすると、さらなる処理、診断及び修復のため、処理がSVMM216にわたされてもよい。一実施例では、処理は、その後にSVMMセキュリティエージェント217により扱われてもよい。他の実施例では、トラップされた処理の取り扱いは、SVMM216自体により行われてもよい。SVMM216は、マルウェアに対するプロテクションを提供するため、電子デバイス204の何れか必要な処理をトラップしてもよい。このような処理は、限定することなく、システムメモリ228の特定のコード又はデータページのリード、ライト及び実行、システムレジスタ及びプロセッサレジスタ230からの値のロード及びストア、又はI/Oデバイス226との間のリードを含むものであってもよい。SVMM216によりトラップされる具体的な処理は、SVMMセキュリティルール222により規定されてもよい。
プロテクションサーバ202は、各自にセキュリティルールを提供するため、SVMMセキュリティエージェント217又はO/S内セキュリティエージェント218と通信してもよい。一実施例では、プロテクションサーバ202は、SVMMセキュリティルール222をSVMMセキュリティエージェント217に配信してもよい。他の実施例では、プロテクションサーバ202は、O/S内セキュリティルール220をO/S内セキュリティエージェント218に配信してもよい。さらなる他の実施例では、プロテクションサーバ202は、O/S内セキュリティルール220をSVMMセキュリティエージェント217に配信し、その後、それは、当該ルールをO/S内セキュリティエージェント218に提供してもよい。
アプリケーション210、ドライバ211又は電子デバイス204を実行する他のエンティティが、O/S内セキュリティエージェント218により観察されてもよい。O/S内セキュリティエージェント218は、O/S内セキュリティルールを利用して、このような処理エンティティの動作を観察し、それらの動作がマルウェアの感染の可能性があることを示す疑わしい動作を構成するか判断してもよい。疑わしいアクティビティの検出によって、O/S内セキュリティエージェント218は、さらなる解析及び命令のため、疑わしい情報をプロテクションサーバ202に提供してもよい。O/S内セキュリティルール220は、当該動作が疑わしいものであることをO/S内セキュリティエージェント218に通知すると共に、訂正アクションを通知してもよい。例えば、アプリケーション210は、マルウェアをホストしていると知られるネットワークデスティネーションと通信するかもしれない。O/S内セキュリティエージェント218は、アプリケーション210のアクティビティを通知し、その後、当該ネットワークデスティネーションへのアプリケーション210のネットワークアクセスをブロックしてもよい。O/S内セキュリティエージェント218はまた、マルウェアについて電子デバイス204をスキャンしてもよい。例えば、O/S内セキュリティエージェント218は、マルウェアのシグネチャに対応するパターンについて、メモリ206又はシステムメモリ228のコンテンツを調べてもよい。このように調べることは、例えば、アプリケーション210が既知のマルウェアのセグメントに対応するコードブロックを含むことを明らかにするものであってもよい。その後、O/S内セキュリティエージェント218は、アプリケーション210を修復し、アプリケーション210を削除し、又は他の何れか適切なアクションをとることによって、マルウェアの感染から電子デバイス210をクリーンにしてもよい。O/S内セキュリティエージェント218は、何れか検出された疑わしい動作又は他のマルウェアの徴候に関してプロテクションサーバ202と通信し、当該マルウェアをどのように処理するかに関する命令をプロテクションサーバ202から受信してもよい。
一実施例では、SVMMセキュリティエージェント217は、試行された処理を行ったエンティティのソースに基づきトラップされた処理を評価するよう構成されてもよい。例えば、ドライバが未知のドメインからダウンロードされたか、未知のギャランタ(guarantor)からの証明書を有する場合、ドライバが以降に動作する能力が制限されてもよい。例えば、ステータスが未知であるドライバは、自らを他のドライバにアタッチする能力について拒絶されてもよい。ドライバがマルウェアをホストしていると知られるドメインからダウンロードされたか、又は不正な証明書を含む場合、ドライバはロードすることが許可されないようにしてもよい。同様に、ドライバが特定のドメインからのものであるか、又は特定のオーサにより作成されていると知られる場合、SVMMセキュリティエージェント217は、ドライバを更新することが認証されている電子デバイス204におけるサービスを認識し、当該サービスに対してドライバをライト又はアクセスするのう力を制限するよう構成されてもよい。例えば、企業Xからのカーネルドライバは、電子デバイス204にある企業Xのアップデートサービスソフトウェアからに限って書き込みされてもよい。SVMMセキュリティエージェント217は、当該アップデートサービスの処理及びインテグリティを有効にするよう構成されてもよい。他の実施例では、SVMMセキュリティエージェント217は、試行のターゲットに基づきトラップされた処理を評価するよう構成されてもよい。例えば、あるサービスからソフトウェアを更新する試みは、カーネルドライバについてトラップされ、アプリケーションソフトウェアについてトラップされないようにしてもよい。
あるエンティティが疑わしいと判断されるか、又はある試みがマルウェアを示すと判断されると、当該試行を生じさせたプロセスと当該プロセスを収容するメモリとがリンク付けされてもよい。メモリの同じ部分にアクセスする他のプロセスは、同様にマルウェアであると判断されてもよい。リソースにアクセスするトラップされた試みは格納され、プロテクトされたリソースにアクセスする以降の試みは、元のイベントに基づき評価されてもよい。例えば、悪意ある処理は、コードがデータセグメントに書き込まれ、その後に実行されることを要求するかもしれない。従って、SVMMセキュリティエージェント217は、当該データセグメントへの元のライトアクセスをトラップし、当該ライトを許可するが、ライトアクセスのソースを記録してもよい。その後、SVMMセキュリティエージェント217は、データセグメントを実行する以降の試みをトラップし、以前にトラップされた処理、それを試みたエンティティ又は他の適切なフォレンジック(forensic)情報に基づき、当該試行の悪意ステータスを評価してもよい。
SVMMセキュリティエージェント217は、SVMM216がVMCS221などの制御構造を介しトラップしようとするシステムリソース214に関してSVMM216に指示してもよい。SVMM216は、その後、オペレーティングシステム212、アプリケーション210又はドライバ211などの電子デバイス204のエンティティからのシステムリソース214へのアクセスリクエストをトラップしてもよい。例えば、システムリソース228の一部をリード、ライト又は実行するリクエストが行われる場合、SVMM216は、VMCS221のシステムメモリの指定された部分について設定されたフラグを介し当該リクエストをインターセプトしてもよい。他の具体例では、入力又は出力処理などのI/Oデバイス226からなされたアクセスリクエストが、VMCS221によりインターセプトされてもよい。さらなる他の具体例では、ロード又はストア命令などのプロセスレジスタ230のリクエストが、VMCS221によりトラップされてもよい。このような何れかのトラップは、試行されたアクセスをSVMM216に通知するものであってもよい。SVMM216がシステムリソース214に対して試みられた処理をトラップすると、SVMM216は、SVMMセキュリティエージェント217に当該トラップされた実行を通信してもよい。
O/S内セキュリティエージェント218及びSVMMセキュリティエージェント217は、オペレーティングシステム212内で行われる処理のコンテクストを決定するため通信してもよい。例えば、オペレーティングシステム212から電子デバイス204の特定のリソースへのトラップされたシステムコールは、メモリの特定部分から生じたものであってもよい。SVMMセキュリティエージェント217は、何れのアプリケーション、プロセス又は他のエンティティがメモリの当該部分内にあるか判断するため、O/S内セキュリティエージェント218と通信してもよい。
SVMMセキュリティルール222と、O/S内セキュリティエージェント218からのトラップされた処理及び/又はコンテクスト情報とに基づき、SVMMセキュリティエージェント217は、当該アクセスがマルウェアの感染を示すものなどの疑わしいアクションを構成したか判断してもよい。例えば、未認証アプリケーションによるプロテクトされたメモリスペースのシステムメモリ228の試行された変更は、疑わしいアクティビティである可能性があり、SVMM216により検出されたこのような試行された変更は、SVMMセキュリティエージェント217によってマルウェアの処理であると解釈されてもよい。このようなアクティビティは、さらなる命令のためプロテクションサーバ202に報告されてもよいし、あるいは、アクションがO/S内セキュリティルール220により指示されてもよい。このような検出の結果は、システムメモリ228における試行された変更を阻止するか、又は試行された変更を生成した電子デバイス204のエンティティに対する追加的なクリーン処理をトリガするものであってもよい。
SVMM216は、SVMM216、SVMMセキュリティエージェント217及び/又はO/S内セキュリティエージェント218のインテグリティをプロテクトするため、システムリソース214に対する追加的なコールをモニタしてもよい。SVMM216は、システムメモリ228の一部をスキャンし、当該メモリ部分がマルウェアにより変更されたか判断するため、SVMMセキュリティルール222により規定されるスキャン処理を実行してもよい。SVMM216は、所与のメモリパターンが安全でない又は安全であると知られていることを示すシグネチャ、ハッシュ又は他のルールを利用してもよい。
例えば、SVMM216は、システムメモリ228におけるO/S内セキュリティエージェント218に対応するコード及びデータページへの未認証のリード及びライトアクセスを阻止することによって、O/S内セキュリティエージェント218をプロテクトしてもよい。あるマルウェアは、システムメモリ228に関するシステムリソース214に対するメモリ修正又は他の修正を行うことによって、O/S内セキュリティエージェント218を攻撃することを試みるかもしれない。SVMM216は、認証されたアプリケーションと、コード又はデータを変更することが許可される電子デバイス204の他のエンティティと、O/S内セキュリティエージェント218に対応する他のシステムリソースとのSVMMセキュリティルール222に含まれるホワイトリストを読むようにしてもよい。修正がホワイトリスト内に含まれないエンティティから発生したものである場合、SVMM216は、当該修正がマルウェアに関連付けされていると判断してもよい。O/S内セキュリティエージェント218に対応するシステムリソース214への未認証のアクセスは、アクセスのブロック、ハニースポットプロセスの作成、プロテクションサーバ202への違反の報告又は他の何れか適切な救済を含む何れか適切な方法によって、SVMMにより処理されてもよい。
SVMM216はまた、電子デバイス204の他のエンティティに属するシステムリソース214へのアクセスをトラップしてもよい。例えば、システムメモリ228のターゲットメモリページは、オペレーティングシステム212のカーネル処理の一部に属するサンプルコード又はデータを含むものであってもよい。SVMM216及びSVMMセキュリティルール222は、許可されたコードセクションのみに当該ターゲットページへのアクセスを制限してもよい。この結果、システムメモリ228のコードページがターゲットメモリページをリード又は変更しようとし、コードページが電子デバイス204の未認証のエンティティに属する場合、当該アクセスは、SVMM216によりブロックされてもよい。従って、SVMM216は、システムメモリ228のメモリページへのアクセスを制御するよう動作してもよい。
SVMMセキュリティエージェント217は、更新されたルールについてプロテクションサーバ202に接触することによって、SVMMセキュリティルール222又はO/S内セキュリティルール220を更新可能であってもよい。プロテクションサーバ202は、観察された特定のマルウェア、アドミニストレータ設定又は電子デバイス204の他の特性に基づき、ルールがSVMMセキュリティエージェント217に配信されることを設定してもよい。SVMMセキュリティエージェント217は、ユーザによる要求により、定期的に、又はマルウェアにリンク付けされうる新たな疑わしいアクティビティの遭遇などの重大なイベントの発生によって、電子デバイス204のルールを更新してもよい。
SVMMセキュリティエージェント217は、複合的な条件に対応してVMCSのフラグを設定してもよい。このようなフラグは、トラップ対象の異なるタイプのリソースに及ぶものであってもよい。例えば、VMCSは、メモリのページへの特定の値のライトと、I/Oデバイスのバッファへの当該ページの以降の移動との組み合わせをトラップするよう構成されてもよい。
システム200は、アンチマルウェアシステム及びソフトウェアの他の実現に対して1以上の効果を有する。例えば、いくつかのアンチマルウェア手段は、アプリケーションの低レベル処理をトラップ及び評価するため、オペレーティングシステムの各種部分をフックしてもよい。しかしながら、これらの手段自体は、オペレーティングシステムの内部で、又は2つのゲストオペレーティングシステムのケースでは他のオペレーティングシステムにおいて動作するようにしてもよい。オペレーティングシステムの制限範囲内で動作することによって、カーネルレベル優先度においてさえ、アンチマルウェア手段は、同一のオペレーティングシステム上で実行され、おそらく同一の優先度で実行されるマルウェアからのマルウェア攻撃の影響を受ける可能性がある。特定のイベントに対するトラップ又はトリガが、オペレーティングシステムのレベルで実行される場合、このようなトラップ又はトリガは、オペレーティングシステムについて同じ又はより低い優先度で実行されるマルウェアによって、フィッシング、ホック、リバースエンジニアリング、危険にさらされる、又は無効にされるかもしれない。例えば、オペレーティングシステムにおいて悪意あるフックを検出及び削除するオペレーティングシステム上で実行されるアンチマルウェア手段は、同じ優先度で実行されるマルウェアにより観察される可能性がある。他の例では、特定のルーチンの処理を検出するためフィルタドライバとして登録されるアンチマルウェア手段は、当該アンチマルウェア手段よりドライバスタック上で下位の悪意フィルタドライバを登録したマルウェアによって無効にされる可能性がある。同様に、特定のトラップ又はトリガされたイベントの処理がオペレーティングシステムのレベルで実行される場合、マルウェアは、当該処理に影響を及ぼすことが可能であってもよい。例えば、マルウェアは、アンチマルウェア手段の訂正をやり直すか、又はアンチマルウェア手段の処理を無効にするかもしれない。
他の例では、ハイパーバイザが、システムメモリ228などのシステムリソースへのアクセスをバーチャル化するよう機能するが、システムリソースへのアクセスを条件付きでガードしなくてもよく、セキュリティハイパーバイザとして機能する。このようなハイパーバイザは、悪意あるアクティビティ、エンティティ又はシステムリソースの悪意ある試行されたアクセスを特定するため、セキュリティルール222の動作ルールなどのアンチマルウェアルールへのアクセスを有しなくてもよい。このようなハイパーバイザは、オペレーティングシステム内で実行されてもよく、マルウェアがオペレーティングシステムと同じ優先度レベルで実行される傾向がある。このようなハイパーバイザは、“Ring0 privileged mode”では実行されなくてもよい。当該モードは、ハイパーバイザにシステムリソースの多すぎる試行されたアクセスをインターセプトすることを求めるものであるためである。ハイパーバイザは、ゲストオペレーティングシステムのすべての特徴をバーチャル化する作業が課せられ、当該仮想化の要求は負担が多すぎて、悪意ある動作をチェックするためセキュリティルールに同時にアクセスできない。
図3は、マルウェアからの電子デバイスのバーチャルマシーンモニタベースのプロテクションのための方法300の実施例である。ステップ305において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント、プロテクションサーバ及びバーチャルマシーンモニタの識別情報とセキュリティとが認証されてもよい。当該認証は、メモリに配置される各自のイメージ、暗号化ハッシュ又は秘密鍵を特定及び検証することを含む、何れか適切な方法を介して実行されてもよい。ステップ305が終了するまで、他のステップの処理は保留されてもよい。
ステップ310において、プロテクションサーバは、セキュリティルールを決定するためアクセスされてもよい。当該セキュリティルールは、ステップ315〜380における判定を行うのに利用されてもよい。ステップ315におて、バーチャルマシーンモニタは、システムリソースへのアクセスをトラップするよう指示されてもよい。当該アクセスは、電子デバイス上で実行されるアプリケーション、ドライバ又はオペレーティングシステムから発生するものであってもよい。バーチャルマシーンモニタは、電子デバイスの何れのシステムリソースがモニタ対象であるかに関して指示されてもよい。バーチャルマシーンモニタはまた、モニタされるシステムリソースに対する何れの処理がトラップされるべきかに関して指示されてもよい。例えば、システムメモリに対するリード、ライト又は実行処理がトラップされてもよい。他の例では、レジスタに対するロード又はストア処理がトラップされてもよい。さらなる他の例では、I/Oデバイスに対する入力又は出力アクションがトラップされてもよい。
ステップ320において、トラップ対象の処理に対応するフラグが、バーチャルマシーン制御構造などの制御構造内で設定されてもよい。このようなトラップされた処理は、トリガイベントがフラグ設定されたリソースのアクセスに応答して生成されるVMイグジットを生成してもよい。ステップ325において、バーチャルマシーンモニタ、O/S内セキュリティエージェント及びO/S下位セキュリティエージェントにシステムメモリが割り当てられると、当該メモリは、未認証のリード及びライト処理に対してセキュアにされてもよい。
電子デバイスは、ステップ330〜340におけるシステムリソースのアクセスのトラップ、ステップ345〜355におけるマルウェアの存在についてのメモリのスキャン、及びステップ360〜365における試行されたメモリ修正についてのメモリのスキャンの1以上によって、実行及びプロテクトされてもよい。システムリソースのアクセスのトラップ、マルウェアの存在についてのメモリのスキャン、及び試行されたメモリ修正についてのメモリのスキャンのそれぞれは、パラレルに実行されてもよい。さらに、これらはそれぞれ、電子デバイスの処理をプロテクトするため、必要に応じて繰り返されてもよい。
ステップ330において、システムメモリ、レジスタ又はI/Oデバイスなどのシステムリソースのアクセスがトラップされてもよい。当該アクセスは、VMイグジットを生成するVMCSフラグを用いてトラップされてもよい。当該トラップは、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で実行されてもよい。ステップ335において、当該アクセスは、要求元のエンティティがリクエストされたリソースにアクセスするためのパーミッションを有しているか判断するため解析されてもよい。試行されたアクセスに関するコンテクスト情報が、当該判断を行うためアクセスされてもよい。セキュリティルールは、当該判断を行うためアクセスされてもよい。未認証のアクセスは、疑わしいものであると判断されてもよい。このような取り扱い及び判断は、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で行われてもよい。アクセスが疑わしいものである場合、ステップ340において、システムリソースの疑わしい試行されたアクセスはブロックされてもよい。当該試行は、プロテクションサーバに報告されてもよい。アクセスが疑わしくない場合、アクセスはステップ370において許可されてもよい。
ステップ345において、電子デバイスのメモリページが、マルウェアの存在についてスキャンされてもよい。電子デバイスのメモリをスキャンする間、電子デバイス上にあるエンティティを反映するメモリのパターンが安全であると知られているか判断するため、ホワイトリストが利用されてもよい。安全であると知られているメモリのパターンに遭遇した場合、ステップ370において、メモリは、電子デバイスへのアクセスを有し続けることが許可され、維持されてもよい。電子デバイスのメモリをスキャンする間、ブラックリストは、メモリのパターンがマルウェアを有するか、又は関連付けされていると知られているか判断するのに利用されてもよい。ホワイトリストとブラックリストとは、セキュリティルールにアクセスすることによってアクセスされてもよい。ステップ350において、マルウェアに関連付けされていると知られるメモリのパターンが検出された場合、ステップ375において、メモリのパターンは、修復、削除又は無力化されることによって、電子デバイスへのアクセスが拒絶されてもよい。
ステップ355において、メモリは、メモリへの修正が試みられたか、又は試みられているか判断するためスキャンされてもよい。このようなスキャンは、電子デバイスにおいてオペレーティングシステムのレベルより下位で実行されてもよい。このようなメモリは、マルウェアにより修正される可能性のある電子デバイスのカーネルメモリ、システムデータ構造又はメモリの他の何れかの部分を含むものであってもよい。例えば、電子デバイス上で実行されるアクティブなスレッドのリストは、悪意あるプロセスの存在を隠蔽するため修正されてもよい。修正が検出された場合、ステップ365において、当該修正が許容されるか判断されてもよい。このような修正が許容されるか否かは、セキュリティルールにより規定されてもよい。例えば、アンチマルウェアプロセスのコード又はデータページは、他の何れかのプロセスにより修正又はアクセスに対してプロテクトされてもよい。メモリの修正が認証されていると判断された場合、ステップ370において、当該修正は許可されてもよい。メモリの修正が未認証であり、許可されていない場合、ステップ375において、当該修正は拒絶されてもよい。
ステップ370において、アクセス又は修正が許可される場合、アクセス又は修正は以降の参照のため格納されてもよい。マルウェアの検出は、過去のアクセスと現在検出されたアクセスとが共にリソースの悪意あるアクセスを構成しているか判断するため、過去のアクセス又は修正に関する情報を利用してもよい。
ステップ375において、修正がアクセスされる場合、又は他の処理が拒絶される場合、当該イベントは、ステップ380においてプロテクションサーバに報告されてもよい。当該報告は、何れか関連するマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
方法300のステップは、継続的に、定期的に又は要求に応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図4は、マルウェアから電子デバイス404をプロテクトするためのファームウェアベース及びセキュリティルールベースシステム400の実施例である。システム400は、システム100の特定の要素がファームウェアにより実現されるシステム100の実施例であってもよい。システム400のトラップ処理は、電子デバイス404のオペレーティングシステムのレベルの下位で実行されてもよい。システム400は、電子デバイス404のリソースの利用又はアクセスのため、I/Oコマンドなどのリクエストをトラップするよう構成される1以上のO/S下位セキュリティエージェントを含むものであってもよい。当該O/S下位セキュリティエージェントは、電子デバイス404のメインプロセッサとの又はデバイス間の入出力データのやりとりを管理するよう構成されてもよい。当該O/S下位セキュリティエージェントは、電子デバイス404のデバイスコントローラなどのコンポーネントのファームウェアにおいて、又は電子デバイス404自体のファームウェアにおいて実現されてもよい。このようなファームウェアは、不揮発性メモリにあってもよい。電子デバイス404のリソースは、図1のシステムリソース、それの各種の可能な実施例又はシステム400のデバイスに接続又は実現されるリソースを含むものであってもよい。システム400は、電子デバイス404のリソースへのアクセスの試みられた利用をトラップし、当該試みに対応するトリガイベントを生成し、トリガイベントに関してセキュリティルールを照会し、当該試みに関して必要に応じて訂正アクションを実行するよう構成される1以上のO/S下位セキュリティエージェントを含むものであってもよい。
一実施例では、システム400のO/S下位セキュリティエージェントは、図5の説明と以下に説明されるように、電子デバイス404のコンポーネントのファームウェアにおいてのみ実現されてもよい。他の実施例では、システム400のO/S下位セキュリティエージェントは、メインPCファームウェア428などの電子デバイス404自体のファームウェアにより実現されてもよい。このような実施例では、メインPCファームウェア428は、電子デバイス404のマザーボード上で実現されてもよい。さらなる他の実施例では、システム400のO/S下位セキュリティエージェントがまた、O/S下位エージェント450において実現されてもよい。O/S下位エージェント450は、リソースのアクセスのトリガ又は当該トリガの処理を提供するための何れか適切な方法により、オペレーティングシステム412などの電子デバイス404のオペレーティングシステムのレベル以下で実現されてもよい。例えば、O/S下位エージェント450は、図2のSVMM216又はSVMMセキュリティエージェント217の実施例であってもよい。O/S下位エージェント450は、セキュリティルールを有してもよい。
電子デバイス404は、電子デバイス404からの入出力処理を実行する1以上のコンポーネントを有してもよい。電子デバイス404は、何れか適切な個数の当該コンポーネントと何れか適切なタイプのコンポーネントとを有してもよい。当該コンポーネントは、ファームウェアに埋め込まれる自らのプロセッサ、メモリ及びソフトウェアを備えたデバイスにより実現されてもよい。このようなコンポーネントの実施例は、図5のI/Oデバイス502であってもよい。
電子デバイス404は、例えば、ディスプレイ424とストレージ426とを有してもよい。各コンポーネント424,426は、ファームウェア430,432を有してもよい。ファームウェア430,432はそれぞれ、図5のファームウェア504を実現してもよい。上述されるように、各コンポーネント424,426は、ファームウェアセキュリティエージェント440,443などのファームウェアベースセキュリティエージェントを有してもよい。ファームウェアセキュリティエージェント440,443はそれぞれ、図5のファームウェアセキュリティエージェント516を部分的又は完全に実現してもよい。一実施例では、ファームウェアセキュリティエージェント440,442のそれぞれは、各自のファームウェア430,432により実現されてもよい。他の実施例では、ファームウェアセキュリティエージェント440、442のそれぞれは、各自のコンポーネント424,426のそれぞれにおいてファームウェア430,432の外部に実現されてもよい。デバイスファームウェアセキュリティエージェント440,442のそれぞれは、各自のセキュリティルールセット434,436に通信接続されてもよい。各セキュリティルール434,436は、図5のセキュリティルール518を実現してもよい。
電子デバイス404は、ファームウェアを有してもよい。一実施例では、電子デバイス404は、メインPCファームウェア428を有してもよい。メインPCファームウェア428は、BIOS(Basic Input/Output System)により実現されてもよい。一実施例では、メインPCファームウェア428は、コンピュータのBIOSとして構成されてもよい。この場合、メインPCファームウェア428は、コンピュータのプロセッサ406の処理を初期化するよう構成されてもよい。メインPCファームウェア428は、メインプロセッサ406がディスプレイ424及びストレージ426などのI/Oデバイスと通信することを可能にするよう構成されてもよい。当該実施例では、コンピュータはまた、ファームウェア又はBIOSによりプログラムされてもよく、ディスプレイ424及びストレージ426などのI/Oデバイスのファームウェアと通信するプログラマブルI/Oコントローラを有してもよい。
メインPCファームウェア428は、O/S下位セキュリティエージェントを有してもよい。一実施例では、メインPCファームウェア428は、PCファームウェアセキュリティエージェント444を有してもよい。PCファームウェアセキュリティエージェント444は、システムリソース414のリクエストをインターセプトするよう構成されてもよい。このような機能を実現するため、PCファームウェアセキュリティエージェント444は、図2のSVMMセキュリティエージェント217又はSVMM216、及び/又は図5のファームウェアセキュリティエージェント516の機能を完全に又は部分的に実現してもよい。PCファームウェアセキュリティエージェント444は、システムリソース414へのアクセスのO/Sより下位のトリガ及び処理、O/S内セキュリティエージェント418などのO/S内セキュリティエージェント及びO/S下位エージェントの検証及び確認、並びにセキュリティルール420,422などのセキュリティルールの配信を実現するため、図2のSVMMセキュリティエージェント217又はSVMM216の機能を実現してもよい。PCファームウェアセキュリティエージェント444は、ファームウェアにおけるO/Sより下位のトリガ及び処理、セキュリティルールの更新を実現し、電子デバイス404の各部分に送信されるIN及びOUTコマンドを評価するため、図5のファームウェアセキュリティエージェント516の機能を実現してもよい。
電子デバイス404は、セキュリティルール438を有してもよい。セキュリティルール438は、図1のセキュリティルールの実施例であってもよい。一実施例では、セキュリティルール438は、メインPCファームウェア428にあってもよい。他の実施例では、セキュリティルール438は、メインPCファームウェア428の外部にあってもよく、PCファームウェアセキュリティエージェント444は、セキュリティルール438に接続されてもよい。
システム400のセキュリティエージェントは、マルウェア及びそれの悪意ある処理を阻止するため一緒に動作するよう構成されてもよい。リソースの試行されたアクセスはトラップされ、以降のイベントは、ディスプレイ424又はストレージ426などのデバイスのファームウェアセキュリティエージェント又はメインPCファームウェア428における処理のためトリガされてもよい。当該デバイス又はファームウェアのファームウェアセキュリティエージェントは、トリガイベントを処理するか、又は処理のためトリガイベントを他のセキュリティエージェントにわたすよう構成されてもよい。限定的な実行及び更新能力のため、あるファームウェアセキュリティエージェントは、自らのトリガイベントの処理に限定され、当該トリガイベントを他のセキュリティエージェントにわたすことが効果的であるかもしれない。ファームウェアセキュリティエージェントがイベントをわたすセキュリティエージェントは、例えば、O/S内セキュリティエージェント418などのO/S内セキュリティエージェント、O/S下位セキュリティエージェント450などのO/S下位セキュリティエージェント又はPCファームウェアセキュリティエージェント444などの他のファームウェアセキュリティエージェントなどを含むものであってもよい。これら他のセキュリティエージェントは、トリガイベントを受信し、セキュリティルール、コンテクスト情報又はパーミッションを照会し、実現されるべき結果としてのアクションを送り返すよう構成されてもよい。
従って、図4は、ファームウェアベースセキュリティエージェントによるO/S下位トリガ及び処理を実行するための一例となる個数の要素を示したが、各種実施例では、より多くの又はより少ない要素が利用されてもよい。より多くの又はより少ない要素が利用されるとき、各要素及びシステム400の機能は、これに従って変更されてもよい。一実施例では、オペレーティングシステム412のレベルの下位のシステム400のセキュリティエージェントは、1以上のO/S内セキュリティエージェント418及びファームウェアセキュリティエージェント440,442に限定されてもよい。当該具体例では、ファームウェアセキュリティエージェント440,442は、セキュリティルール434,436に対するアップデートのため、プロテクションサーバ402に依拠してもよい。ファームウェアセキュリティエージェント440,442は、トリガイベントの更新又は処理のためO/S内セキュリティエージェント418に依拠するが、O/S内セキュリティエージェント418の処理は、O/S下位セキュリティエージェントがO/S内セキュリティエージェントを有効にしない場合、あまりセキュアでないかもしれない。ファームウェアセキュリティエージェント440,442は、インストール時、製造時又は設定時に決定されたファームウェアセキュリティルール434に基づきトリガを提供してもよい。この場合、ファームウェアセキュリティエージェント440,442は、ほとんど解析することなく、相対的に基本的なイベントトリガを提供するよう構成されてもよい。当該トリガは電子デバイス404のオペレーティングシステムの下位で実現され、悪意ある又は疑わしい処理をより良好に検出するため、ファームウェアセキュリティエージェント440,442は、にもかかわらず有用であるかもしれない。
他の実施例では、システム400のセキュリティエージェントは、PCファームウェアセキュリティエージェント444又はO/S下位エージェント450を含むが、その双方は含まないようにしてもよい。この場合、PCファームウェアセキュリティエージェント444の機能は、O/S下位エージェント450により実現されてもよいし、逆もまた同様であってもよい。PCファームウェアエージェント444又はO/S下位エージェント450は、プロテクションサーバ402に接続され、セキュリティルール420,422,438,434,436などの情報を取得し、当該情報をシステム400の他のセキュリティエージェントと共有するよう構成されてもよい。このようなセキュリティルールは、通信、更新又は格納のため各セキュリティエージェントに対して調整されてもよい。PCファームウェアエージェント444又はO/S下位エージェント450は、ファームウェアセキュリティエージェント440,442などの他のセキュリティエージェントからトリガイベントを受信し、セキュリティルール及び他の情報を適用し、結果としてのイベントの送信やプロテクションサーバ402への情報の送信などの訂正アクションを実行するよう構成されてもよい。PCファームウェアエージェント444又はO/S下位エージェント450は、システムリソース414の試行されたアクセスをトラップするよう構成されてもよい。PCファームウェアエージェント444又はO/S下位エージェント450は、トリガイベントのコンテクストを決定するため、O/S内セキュリティエージェント418と通信するよう構成されてもよい。複数のO/S内セキュリティエージェント418がシステム400にある場合、各O/S内セキュリティエージェント418は、O/S内セキュリティエージェント418に関連するトラップ、検証又は他のタスクの指定された部分を実行するよう構成されてもよい。このような部分は、O/S下位セキュリティエージェントにより規定されてもよい。例えば、あるO/S内セキュリティエージェント418がMOV命令を検証又は調査し、他のO/S内セキュリティエージェント418がJMP命令を検証又は調査してもよい。
さらなる他の実施例では、システム400のセキュリティエージェントは、PCファームウェアセキュリティエージェント444とO/S下位エージェント450との双方を含むものであってもよい。にもかかわらず、当該実施例では、PCファームウェアセキュリティエージェント444の機能の一部又はすべては、O/S下位エージェント450により実現されてもよく、又は逆もまた同様であってもよい。PCファームウェアセキュリティエージェント444とO/S下位エージェント450との間のタスクの説明は複数のファクタを考慮してもよい。例えば、PCファームウェアセキュリティエージェント444などのファームウェア内のセキュリティエージェントの処理は、他のO/S下位エージェント450の処理よりセキュアであってもよい。しかしながら、O/S下位エージェント450のセキュリティルール及びソフトウェアの更新は、PCファームウェアセキュリティエージェント444におけるものよりシンプルで迅速である可能性がある。
さらなる他の実施例では、1以上のファームウェアセキュリティエージェント440,442は、PCファームウェアセキュリティエージェント444又はO/S下位エージェント422から独立してシステム400にあってもよい。当該具体例では、ファームウェアセキュリティエージェント440,442は、O/S内セキュリティエージェント418のインスタンスを検証してもよい。
各ファームウェアセキュリティエージェント440,442,444は、外部通信用のファームウェアロジックをモニタ及び制御するのを可能にするのに十分なファームウェアロジック内にあるよう構成されてもよい。ファームウェアセキュリティエージェント440,442,444は、特定の情報又は特定の他のエンティティをトラップ及び/又は通信するよう構成されてもよい。ファームウェアセキュリティエージェント440,442,444は、受信した処理リクエストと共に、送受信対象のデータを決定するよう構成されてもよい。さらに、ファームウェアセキュリティエージェント440,442,444は、送受信対象のデータを制御し、暗号化、圧縮、透かしの埋め込み又はデータの透かしの復号化など、当該データに対する追加的な処理を実行させるよう構成されてもよい。ファームウェアセキュリティエージェント440,442,444と通信するシステム400の他のセキュリティエージェントは、ファームウェアセキュリティエージェント440,442,444によりトラップされるデータに透かしを埋め込み、又はファームウェアセキュリティエージェント440,442,444によりデータに配置された透かしを復号化するよう構成されてもよい。
ファームウェアセキュリティエージェント440,442又はPCファームウェアセキュリティエージェント444との通信は、例えば、プログラマブル入出力インタラプト又はプログラマブル入出力レジスタなどを介し実行されてもよい。このようなインタラプト又はレジスタは、ファームウェアセキュリティエージェント440,442,444があるファームウェア又はデバイスのメーカーにより定義及び提供されてもよい。
システム400のO/S下位セキュリティエージェントの1以上は、電子デバイス404のファームウェアベースセキュリティエージェントのアンチマルウェアアクティビティを調整するためのメインセキュリティエージェントとして機能するよう構成されてもよい。一実施例では、PCファームウェアセキュリティエージェント444は、システム400のメインセキュリティエージェントとして構成されてもよい。他の実施例では、O/S下位エージェント450は、メインセキュリティエージェントして機能するよう構成されてもよい。セキュリティエージェントは、ファームウェアセキュリティエージェント440,442からのトリガイベントを処理するよう構成されてもよい。メインセキュリティエージェントは、何れのセキュリティエージェントが疑わしい動作を通知し、又はマルウェアを検出したか、システム400がマルウェアに攻撃されているか、システム400のアドミニストレータがセキュリティに影響を与える嗜好又は設定を変更したかに関して他のセキュリティエージェントに通知するよう構成されてもよい。メインセキュリティエージェントは、システム400のその他のセキュリティエージェントと攻撃に関する情報を共有してもよい。
システム400のリソースへのアクセスをトラップし、及び/又はシステム400のオペレーティングシステムのレベルの下位の結果として生じるトリガイベントを処理することによって、システム400は、マルウェアに対するセキュリティを増大するようにしてもよい。ファームウェアにおけるセキュリティエージェントの処理は、マルウェアがセキュリティエージェントの処理に影響を与える機会を減少させるようにしてもよい。ファームウェア又はデバイスレベルの処理をトラップすることは、それの処理を偽るため、システム400の要素をマルウェアがスプーフ又はフィッシングする能力を減少させるようにしてもよい。例えば、オペレーティングシステム412の何れの部分がマルウェアにより危険にさらされても、コンポーネント424,426に対するリクエストは、デバイス自らから偽らないようにしてもよい。
図5は、マルウェアから電子デバイスをプロテクトするためのファームウェアベース手段の実施例のより詳細な図である。I/Oデバイス502などのデバイスは、当該デバイスのリソースの利用又はアクセスのためのリクエストを受信及びトラップするよう構成されてもよい。一実施例では、I/Oデバイス502は、当該リクエストがマルウェアの存在を示しているか判断するため、トラップされたリクエストを処理するよう構成されてもよい。他の実施例では、I/Oデバイス502は、I/Oデバイスがあるシステムの他の部分にトリガイベントとしてトラップされたリクエストをわたすよう構成されてもよい。システムの当該他の部分は、O/S下位セキュリティエージェントを有してもよい。I/Oデバイス502は、メモリ508に接続されたプロセッサ506とファームウェア504とを有し、ファームウェア504は、プロセッサ506による実行のためメモリ508にある命令を有してもよい。
I/Oデバイス502は、電子デバイスのリスースへのアクセスを制御するための電子デバイスの何れか適切な部分を有してもよい。一実施例では、I/Oデバイス502は、電子デバイスの周辺装置の一部又はすべてを実現してもよい。I/Oデバイス502は、例えば、ディスプレイコントローラカード、コンピュータバスコントローラ、キャッシュデバイス、I/Oコントローラデバイス、ディスクコントローラ、メモリデバイス、ネットワークコントローラ、マザーボード、又はキーボードコントローラなどにより実現されてもよい。I/Oデバイス502は、電子デバイスにあってもよい。一実施例では、I/Oデバイス502は、物理コンポーネントに接続されてもよい。当該物理コンポーネントは、一例として、ディスプレイ、コンピュータバス、メモリ、I/Oコントローラ、ディスク、ネットワークカード、又はキーボードを含むものであってもよい。例えば、キーボードコントローラは、キーボードとのシリアルインタフェースを介し接続されてもよい。当該実施例では、I/Oデバイス502は、電子デバイスにあってもよく、物理コンポーネントは、電子デバイスに通信接続されるが、電子デバイスの外部にあってもよい。
ファームウェア504は、I/Oデバイス502の処理を制御するよう構成されてもよい。ファームウェア504は、リソースに対するリクエストをトラップし、I/Oデバイス502又はI/Oデバイス502があるシステムにおいてオペレーティングシステムのレベルの下位で動作するよう構成されるO/S下位セキュリティエージェント516を有してもよい。O/S下位セキュリティエージェント516は、I/Oデバイス502又はI/Oデバイス502があるシステムをマルウェアからプロテクトするため、当該リクエストを許可、拒絶又は処理するか判断するため、トラップされたリクエストから生じるイベントを処理するよう構成されてもよい。一実施例では、ファームウェア504は、ファームウェアセキュリティエージェント516を有してもよい。ファームウェアセキュリティエージェント516は、図2のSVMM216又はSVMMセキュリティエージェント217の機能の一部又はすべてを内蔵するが、ファームウェア504において実現されるものであってもよい。この場合、リソースへのアクセスのトラップ及び/又はトラップされたリクエストの処理などのSVMM216又はSVMMセキュリティエージェント217の機能は、ファームウェアセキュリティエージェント516により実行されてもよい。一実施例では、ファームウェアセキュリティエージェント516は、ファームウェア504にあるよう構成されてもよい。
ファームウェア504は、I/Oコマンド510、データ伝送エンジン512及びプログラマブルロジック514を有してもよい。I/Oコマンド510は、デバイスと情報を送受信するための命令を有してもよい。当該コマンドは、IN又はOUTコマンドの変形を含むものであってもよい。I/Oコマンド510の実行は、デバイスの所望のアクションを実行するよう処理可能であってもよい。デバイスにより受信されたリクエストは、I/Oコマンドに変換されてもよい。リソースに対する特定のリクエストに応答したトラップ又はトリガは、関連するI/Oコマンド510に対するトラップ又はトリガにより実現されてもよい。データ伝送エンジン512は、デバイスとのリクエストと以降のレスポンスとの通信を処理するよう構成されてもよい。データ伝送エンジン512は、I/Oコマンド510とデータとが交換されるI/Oバスを介しプロセッサ506及びプログラマブルI/Oコントローラに接続されてもよい。プログラマブルロジック514は、ファームウェア504がI/Oコマンド510とデータ伝送エンジン512とを処理するための命令を提供するよう構成されてもよい。プログラミングロジック514は、プロセッサ506などのプロセッサにロードされてもよい。
ファームウェアセキュリティエージェント516は、試行された悪意ある処理を検出するため、プログラミングロジック514の処理を修正するよう構成されてもよい。ファームウェアセキュリティエージェント516は、データ伝送エンジン512を介しI/Oデバイス502のリクエストをインターセプトし、当該リクエストが悪意あるか判断するため、デバイスとのリクエストの通信をモニタするよう構成されてもよい。ファームウェアセキュリティエージェント516は、トラップ対象の処理に対応するフラグが設定される制御構造を有してもよい。一実施例では、トラップ対象のコマンドのメモリアドレスに従って、フラグが制御構造において設定されてもよい。ファームウェアセキュリティエージェント516は、I/Oデバイス502に対するリクエストのインターセプトについてフラグを設定するよう構成されてもよい。当該フラグは、例えば、I/Oコマンド510の特定のコマンド又は特定のパラメータに関する当該特定のコマンドなどに対応するものであってもよい。このようなフラグは、特定のリクエスト又はリクエストのカテゴリをインターセプトするよう構成されてもよい。I/Oコマンド510のトラップされた試行された処理に対応するフラグのトリガに応答して、ファームウェアセキュリティエージェント516は、イベントを処理し、結果としてのアクションを実行し、結果としての情報をデータ伝送エンジン512を介し他のセキュリティエージェントにわたすか、又はデータ伝送エンジン512を介しトリガイベントをわたすよう構成されてもよい。
I/Oデバイス502はまた、セキュリティルール518を有してもよい。セキュリティルール518は、図2のセキュリティルール222の一部又はすべてを実装してもよい。セキュリティルール518は、メモリ508において実現されてもよい。一実施例では、セキュリティルール518は、ファームウェア504の外部にあってもよい。他の実施例では、セキュリティルール518は、ファームウェア504の内部にあってもよい。ファームウェアセキュリティエージェント516は、セキュリティルール518に通信接続され、それのリソースへのアクセスのためI/Oデバイス502に行われる特定のリクエスト又は特定のリクエストのカテゴリをトラップするため、ファームウェア504において設定されるべきフラグを決定するため、セキュリティルール518にアクセスするよう構成されてもよい。例えば、ファームウェアセキュリティエージェント516は、トリガイベントが悪意あるか又はないか判断するため、セキュリティルール518にアクセスするよう構成されてもよい。一実施例では、セキュリティルール518は、ファームウェアセキュリティエージェント516がトリガイベントを処理するための命令を含むものであってもよい。ファームウェアセキュリティエージェント516は、当該命令を用いてリクエストを許可若しくは拒絶するか、又は他の訂正アクションを実行すべきか判断するよう構成されてもよい。他の実施例では、ファームウェアセキュリティエージェント516は、当該命令を用いてリクエストを他のセキュリティエージェントに報告すべきか判断するよう構成されてもよい。このような訂正アクションはまた、他のセキュリティエージェントからのレスポンスを待機することを含むものであってもよく、リクエストを許可又は拒絶するかに関する命令を含むものであってもよい。
いくつかの実施例では、ファームウェアセキュリティエージェント516は、ファームウェア504にあってもよく、これは、ファームウェアセキュリティエージェント516を更新することを相対的に困難にする可能性がある。さらに、マルウェアの攻撃の永続的性質は、アンチマルウェア手段をフレキシブルにすることを要求するかもしれない。このため、ファームウェアセキュリティエージェント516は、トラップすべきI/Oデバイスに対するリクエストと、実行されるべき以降のアクションとを決定するための情報を受信するのに適した何れかの機構を利用してもよい。
一実施例では、このような機構は、上述されるようなセキュリティルール518にアクセスすることを含むものであってもよい。ファームウェアセキュリティエージェント516は、他のセキュリティエージェント又はプロテクションサーバから新規及び更新されたセキュリティルール518を受信するよう構成されてもよい。フレキシビリティを実現するため、ファームウェアセキュリティエージェント516は、例えば、ファームウェア504の当該ルールのストレージがセキュリティルール518の更新を困難にする場合、ファームウェア504から分離したメモリ508にセキュリティルール518を格納するよう構成されてもよい。
他の実施例では、ファームウェアセキュリティエージェント516は、ファームウェアの更新又はフラッシュに応答して、セキュリティルール518を更新するよう構成されてもよい。当該実施例では、トラップ対象のリクエストを更新するフレキシビリティは限定的であるかもしれない。この結果、セキュリティルール518は、極めて特定のプロテクトされたリソースに対するものになる可能性がある。例えば、ディスクデバイスのセキュリティルール518は、デバイスのブートセクタに対するすべてのライトリクエストをトラップするための命令を含むものであってもよい。いくつかのケースでは、他のセキュリティエージェントとの通信が容易である場合、セキュリティルール518は、広範なリクエストをトラップするための命令を含んでもよく、処理が他のセキュリティエージェントに対して大きくオフロードされるかもしれない。
さらなる他の実施例では、ファームウェアセキュリティエージェント516は、他のセキュリティエージェントから命令を受信するよう構成されてもよい。あるケースでは、当該命令は、ファームウェア504又はファームウェアセキュリティエージェント516のファンクションコールに対するパラメータの形態をとるものであってもよい。例えば、他のセキュリティエージェントは、“UpdateRule(trigger,action)”と呼ばれるファームウェアセキュリティエージェント516のファンクションをコールしてもよく、トラップするためのリクエストがtriggerに詳述され、実行すべき以降のアクションはactionに詳述される。ファームウェアセキュリティエージェント516は、セキュリティルールに対する更新に関する命令を受信することによって、セキュリティルール518を更新してもよい。他のケースでは、他のセキュリティエージェントは、ファームウェアセキュリティエージェント516により以降にアクセスされてもよいデバイス502の確保されているメモリスペースにセキュリティルール518のアップデートを書き込むようにしてもよい。他のセキュリティエージェントから受信すべき命令はまた、ファームウェアセキュリティエージェント516にセキュリティルール518の特定のセットを利用するよう指示するものであってもよい。例えば、タイムクリティカル処理中、ファームウェアセキュリティエージェント516は、当該命令によってセキュリティルール518の最小限のコアなセットを利用するよう構成されてもよい。I/Oデバイス502がディスクデバイスである場合、このような最小限のコアなルールセットは、ディスクのブートセクタへのアクセスをトラップするための命令を含むものであってもよい。他の例では、タイムクリティカル処理が現在実行されていない場合、ファームウェアセキュリティエージェント516は、当該命令によってセキュリティルール518からのルールを利用して、より広範なアクセス試行の範囲をトラップし、対応するイベントを処理のために他のセキュリティエージェントに送信するよう構成されてもよい。
ファームウェアセキュリティエージェント516は、I/Oコマンド510を制御し、受信した又は送信対象のコンテンツ又はデータをスキャンし、当該コマンド及びコンテンツに対するアクセス制御を適用するよう構成されてもよい。ファームウェアセキュリティエージェント516は、既存のデバイスファームウェアの拡張として実現されてもよい。
ファームウェアセキュリティエージェント516の実現は、デバイス502のタイプに依存してもよい。例えば、ディスプレイデバイス及びディスクデバイスは、異なるタイプのコンテンツ又は試行されるコマンドに対してトリガしてもよい。各種デバイスのファームウェアセキュリティエージェント516の作成は、デバイスとの特定タイプのインタフェースに調整されてもよい。例えば、デバイス502がSATA(Serial Advanced Technology Attachement)バスを介し通信するよう構成される場合、それには、SATAバスを介し通信する他のデバイスに類似したファームウェアセキュリティエージェント516が備えられるようにしてもよい。ファームウェアセキュリティエージェント516は、デバイス502のアーキテクチャをサポートし、デバイス502の外部バスI/Oをサポートし、又はデバイス502の他のインタフェースをサポートするようカスタマイズされてもよい。
ファームウェアセキュリティエージェント516は、リソースのリクエストの一部を構成しうる、特定のリード及びライトコマンドをインターセプトすることによって、デバイス502のリソースの試行されたアクセスをトラップするよう構成されてもよい。リード又はライトコマンドは、セキュリティルール518の1つなどのルールに基づき、インターセプト及び評価されて、ブロック又は許可されてもよい。ファームウェアセキュリティエージェント516のためのセキュリティルール518は、マルウェアの証拠を検出するのに適した何れかのルールを含むものであってもよい。当該リード及びライトコマンドは、例えば、ドライバ又はインタラプトに対するファンクションコールなどの結果であってもよい。
例えば、セキュリティルール518は、ファームウェアセキュリティエージェント516がデバイスに書き込まれるデータをスキャンするためのルールを含むものであってもよい。データのコンテンツ又はデータのハッシュが、当該データがマルウェアデータ又はコードに対応するか判断するため評価されてもよい。このような評価は、当該コンテンツをホワイトリスト又はブラックリストのデータ又はシグネチャに対して比較することによって行われてもよい。良好なライトは、コンテンツ又はデータをマルウェア又はそうでないものとして正しく特定するため、書き込まれるデータ又はコンテンツの完全な範囲を適切に評価するため一緒に評価される必要があるかもしれない。例えば、ファイルは、デバイス502に対する繰り返される良好なコールに対して書き込まれるようにしてもよい。書き込まれるデータは、ライトコマンドのコンテンツの適切なスキャンが評価されるようにキューされてもよい。
他の例では、セキュリティルール518は、ファームウェアセキュリティエージェント516がデバイスにおける既存のデータをスキャンするためのルールを含むものであってもよい。デバイス502は、ネットワークカードなどのシステムの外部から受信されるコンテンツを含むものであってもよい。それがデバイス502ににより備えられると、受信情報のコンテンツがマルウェアの証拠についてスキャンされてもよい。ファームウェアセキュリティエージェント516は、当該コンテンツとホワイトリスト又はブラックリストのデータ又はシグネチャとを比較することによって評価してもよい。
さらなる他の例では、セキュリティルール518は、ファームウェアセキュリティエージェント516が時間又はパーミッションに基づきコマンドを評価するためのルールを含むものであってもよい。ネットワークデバイス又はディスクなどのデバイス502は、何れの正当なアクティビティも実行されるべきでない時間中、リード又はライトからプロテクトされてもよい。例えば、特定のマルウェアは、ブート処理中にディスクドライブを攻撃するかもしれない。従って、ファームウェアセキュリティエージェント516は、ディスクがブートされている時間中、デバイスへのライトを阻止してもよい。同様に、デバイスやシステムが利用可能である時間又は方法に関して、デバイス502があるシステムのアドミニストレータによってパーミッションが設定されてもよい。例えば、デバイス502があるシステムのアドミニストレータは、デバイスを営業時間外に利用不可に設定してもよい。システム上のネットワークデバイスは、営業時間外のアクティビティを移送する正当な目的を有していないかもしれず、セキュリティルール518のパーミッションに基づき、ネットワークデバイスのリード及びライトがファームウェアセキュリティエージェント516により阻止されてもよい。このような利用は、例えば、デバイスの実際のユーザによる又はネットワークデバイスを用いてDoS攻撃を実行するマルウェアによる意図的なアクティビティなどを阻止してもよい。
さらなる他の例では、セキュリティルール518は、I/Oコマンドと共に用いられるパラメータに基づき、ファームウェアセキュリティエージェント516がコマンドを評価するためのルールを含むものであってもよい。このようなパラメータは、例えば、ライトコマンドが書き込むアドレスなどを含むものであってもよい。セキュリティルール518は、ディスクデバイスの特定部分が読み出し専用であることを示すルールを含むものであってもよい。従って、ファームウェアセキュリティエージェント516は、データが書き込みされるアドレスを決定するため、ディスクにデータを書き込むためのOUTコマンドに関するパラメータを調べ、試みられたライトがセキュリティルール518のルールによりライトプロテクトされるディスクの部分に対するものである場合、当該コマンドをブロックしてもよい。ファームウェアセキュリティエージェント516は、当該コールの発信元のコンテンツやエンティティなどの他のベースに関して当該パラメータを考慮してもよい。例えば、書き込み対象のデータのコンテンツをスキャンすることはコストがかかる可能性があり、セキュリティルール518は、データが特定の範囲のアドレスに書き込まれる場合に限って、書き込み対象のデータをスキャンするようファームウェアセキュリティエージェント516を設定してもよい。他の例では、セキュリティルール518などのセキュリティルールは、特定のコール元のエンティティがディスクデバイスの特定部分に対してライト又はリードすることしか許可しないようにしてもよい。従って、ファームウェアセキュリティエージェント516は、試行されたライト又はリードをトラップし、コール元のエンティティの識別情報がセキュアに決定されるまで当該試行を許可しないようにしてもよい。当該決定は、一部のファンクションがコール元のデバイスドライバ又はアプリケーションを特定するとき、デバイスファンクションをコールするのに利用されるパラメータにおける情報を評価することによって行われてもよい。このようなケースでは、ファームウェアセキュリティエージェント516は、コールの有効性を判断するため、何れか適切なステップを実行してもよい。一実施例では、ファームウェアセキュリティエージェント516は、コール元のエンティティが当該コールを行うことが許可されているか判断するため、セキュリティルール518のホワイトリスト又はブラックリストを照会してもよい。他の実施例では、ファームウェアセキュリティエージェント516は、コール元のアプリケーション又はデバイスドライバが有効であるか判断するため、デバイス502を含むシステムにおける他のセキュリティエージェントと通信してもよい。このような他のセキュリティエージェントは、コール元のアプリケーション又はデバイスドライバの処理を検証していてもよいし、又は当該処理を検証したO/S内セキュリティエージェントと通信してもよい。さらなる他の例では、デバイス502などのデバイスに対する既存のドライバコールは、コール元のエンティティを特定しなくてもよい。従って、何れのパラメータも利用可能でなくてもよい。この例では、ファームウェアセキュリティエージェント516は、トリガイベントをわたすか、あるいは、試行されたアクセスを生じさせたコールのコンテクストを判断するため、システムの他のセキュリティエージェントに照会するよう構成されてもよい。当該他のセキュリティエージェントは、認証されたエンティティが当該試行を行ったか判断するため、コールに適したコンテクストを提供することが可能であってもよい。
さらなる例では、セキュリティルール518は、ファームウェアセキュリティエージェント516がデバイス502がある環境からの情報に基づきコマンドを評価するためのルールを含むものであってもよい。システムにおける他のセキュリティエージェントは、取り除くことが困難なマルウェアの感染を検出していてもよいし、又はクリーンするためのアドミニストレータからの直接的な介入を要求してもよい。システムの他のセキュリティエージェントは、疑わしい動作を観察しており、当該動作の性質がまだ完全には解析されていない。この場合、ファームウェアセキュリティエージェント516は、他のセキュリティエージェントから既存の脅威の通知を受信してもよい。セキュリティルール518は、感染のタイプに応じてファームウェアセキュリティエージェント516のための予防的アクションを指示してもよい。例えば、キーボードデバイスのファームウェアセキュリティエージェント516は、キーログについて知られる特定タイプのマルウェアの証拠が検出されたが、まだ取り除くことができていないという通知を受信するかもしれない。セキュリティルール518は、ファームウェアセキュリティエージェント516がキーボードデバイスからのすべてのリード及びライトがキーボードと通信される情報を危険にさらすことを阻止することを不可にすることを指示してもよい。
ファームウェアセキュリティエージェント516は、異なるタイプのデバイスのI/Oを異なる方法によりプロテクトしてもよい。例えば、ディスプレイデバイスのファームウェアセキュリティエージェント516は、マルウェアの脅威に応じてディスプレイの一部をシャットダウンしてもよい。ファームウェアセキュリティエージェント516は、画面上に透かしを生じさせる特定のパターンの表示をブロックしてもよい。ファームウェアセキュリティエージェント516は、特定のパターンの試行された表示をトラップしてもよい。ファームウェアセキュリティエージェント516は、画面キャプチャを阻止するため、デバイスからの情報の試行されたリードをインターセプトしてもよい。
他の例では、キーボードデバイスのファームウェアセキュリティエージェント516は、任意的には、システムの残りとの通信においてそれの結果を符号化又は復号化してもよい。このような暗号化は、キーロガー(keylogger)などのマルウェアの脅威が存在するという通知に応答して、ファームウェアセキュリティエージェント516により設定されてもよい。
さらなる他の例では、ネットワークデバイスのファームウェアセキュリティエージェント516は、ソースIP(Internet Protocol)アドレス、ソースポート番号、送受信対象のデータ、デスティネーションIPアドレス又はデスティネーションポート番号に基づきトラップしてもよい。ネットワークデバイスを利用する試行がトラップされると、ファームウェアセキュリティエージェント516は、マルウェアの証拠について送受信対象のパケットのデータペイロードをスキャンしてもよい。一実施例では、このようなデータペイロードは、他のセキュリティエージェント又はプロテクションサーバに送信されてもよく、当該コンテンツがマルウェアの証拠についてスキャンされる。データペイロードのコンテンツは、パケットスニッファ(packet sniffer)がコンテンツのインターセプトに成功しないように暗号化されてもよい。ネットワークデバイス上の試行された処理は、安全でないネットワークデスティネーションとの通信に関するセキュリティリスクのためトラップされてもよく、悪意あるデスティネーションとのネットワーク通信は、デバイス502があるシステムのセキュリティを危険にさらす可能性がある。試行された処理は、銀行取引ウェブサイトなどの特定のデータセットのセンシティブな性質のためトラップされてもよい。このような場合、当該ウェブサイトからのデータの受信に対して、当該データは、他のセキュリティエージェント又はコール元のエンティティにわたされる前に、ファームウェアセキュリティエージェント516により暗号化されてもよい。このような暗号化は、デバイス502のシステムのパケットスニッファ又はフィルタが情報のインターセプトに成功することを阻止する可能性がある。
トラップされる特定のI/Oコマンド510は、特定のデバイス及び当該デバイスの処理に依存してもよい。従って、デバイス502のメーカーは、特定のデバイス502についてファームウェアセキュリティエージェント516の処理をどのように設定するか決定してもよい。デバイス502のメーカーは、他のセキュリティエージェントにデバイス502の機能をどの程度明らかにするか決定してもよい。例えば、デバイス502は、他のセキュリティエージェントにトリガイベントをわたす前に、他のセキュリティエージェントによる検証を要求するよう構成されてもよい。
動作について、1以上のO/S下位セキュリティエージェントは、システム400のファームウェア又はコンポーネントにおいて実行されてもよい。ファームウェアセキュリティエージェント440は、ディスプレイ424において実行され、ファームウェアセキュリティエージェント442は、ストレージ426において実行され、PCファームウェアセキュリティエージェント444は、メインPCファームウェア400において実行されてもよい。O/S下位エージェント450及びO/S内エージェント412は、システム400において実行されてもよい。各セキュリティエージェントは、システム400における1以上の他のセキュリティエージェントと通信してもよい。各セキュリティエージェントは、通信を受け付ける前に他のセキュリティエージェントのインスタンスを検証してもよい。プロテクションサーバ402は、セキュリティエージェントを検証した後、セキュリティエージェントの1以上と通信してもよい。
PCファームウェアセキュリティエージェント444又はO/S下位エージェントは、メインセキュリティエージェントとして指定されてもよい。メインセキュリティエージェントは、セキュリティルールを決定するため、プロテクションサーバ402と通信してもよい。メインセキュリティエージェントは、メインセキュリティエージェントにローカルにセキュリティルールを格納してもよい。メインセキュリティエージェントは、セキュリティルールを各セキュリティエージェントに配信してもよく、セキュリティルールは、セキュリティエージェントにローカルに格納されてもよい。セキュリティルールは、セキュリティルールの大きなセットのコストを低減するため、デバイスのタイプ、製造又はモデルについてカスタマイズされてもよい。
ルール434などのセキュリティルールを受信すると、ディスプレイ424などのデバイスは、トラップされるべきデバイスの処理に対応するデバイスファームウェア430内の制御構造においてフラグを設定してもよい。同様のタスクが、ストレージ426により実行されてもよい。
アプリケーション410又はドライバ411は、ディスプレイ424やストレージ426などのデバイスにアクセスすることを試みる。アプリケーション410又はドライバ411は、オペレーティングシステム412のカーネルをコールすることによって当該試行を行うかもしれず、さらにオペレーティングシステムのデバイスドライバがコールされ、さらにリクエストがコンポーネント424、426に送信されるかもしれない。
当該リクエストは、ストレージ426などのデバイスに到着する。デバイス上で実行されるファームウェアセキュリティエージェント442は、制御構造を備えたストレージ426のデータ伝送エンジン412をモニタすることによって、当該リクエストをフィルタリングしてもよい。当該リクエストは、ストレージ426により利用可能とされるI/Oコマンド510の形態をとりうる。当該リクエストがファームウェアセキュリティエージェント442により設定された何れかのフラグに一致する場合、当該リクエストはトラップされ、結果としてのイベントがトリガされてもよい。ファームウェアセキュリティエージェント442は、トリガイベントをどのように処理するか決定するため、セキュリティルール436に照会してもよい。
一実施例では、トリガイベントは、ファームウェアセキュリティエージェント442により処理されてもよく、関連するデータコマンド、コンテクスト情報、時間又は環境情報などの利用可能な情報に基づき、訂正アクションがとられてもよい。このような訂正アクションは、リクエストの許可又は拒絶、悪意あるコード又はデータの削除、又は転送対象のデータの暗号化を含むものであってもよい。他の訂正アクションは、トラップされるイベントに関してプロテクションサーバ402にわたされる情報を送信することを含むものであってもよい。ファームウェアセキュリティエージェント442は、他のセキュリティエージェントにトリガイベントの状態を通知し、これにより、他のエージェントがまた各自のセキュリティルールに照会した後に訂正アクションを行ってもよい。例えば、ファームウェアセキュリティエージェント442が未知のソースのマルウェア攻撃を検出した場合、ファームウェアセキュリティエージェント440は、ディスプレイ424への追加的なアクセスをロックしてもよい。
他の実施例では、トリガイベントは、O/S内セキュリティエージェント418、PCファームウェアセキュリティエージェント444又はO/S下位エージェント450など、処理のための他のセキュリティエージェントに転送されてもよい。PCファームウェアセキュリティエージェント444などの受信側のセキュリティエージェントは、セキュリティルール438を照会することによって、トリガイベントを処理してもよい。データ、コマンド、コンテクスト情報、時間又は環境情報などの利用可能な情報に基づき、トリガイベントにより表されるリクエストは、PCファームウェアセキュリティエージェント444により許可又は拒絶されてもよい。PCファームウェアセキュリティエージェント444は、リソースの試行されたアクセスに関するコンテクスト情報を決定するため、O/S内セキュリティエージェント418と通信してもよい。PCファームウェアセキュリティエージェント444は、トリガイベントをどのように処理するかに関する追加的な情報のため、プロテクションサーバ402と通信してもよい。PCファームウェアセキュリティエージェント444は、発信元のファームウェアセキュリティエージェント442に結果としてのアクションに対する命令を送り返してもよい。PCファームウェアセキュリティエージェント444は、解析又は記録対象のトリガイベントに関する情報をプロテクションサーバ402に送信してもよい。当該解析又は記録は、トリガイベントの悪意ある性質が未知であるときに実行されてもよい。PCファームウェアセキュリティエージェント444は、システム400のセキュリティエージェントに特定のタイプのマルウェアが検出された、あるタイプの疑わしいアクティビティが検出された、又はシステム400がマルウェアの攻撃を受けていることを通知してもよい。
PCファームウェアセキュリティエージェント444から情報を受信すると、ファームウェアセキュリティエージェント440は、訂正アクションを実行してもよい。当該アクションは、試行されたアクセスの許可又は拒絶、転送されるデータの暗号化、又は悪意あるコード又はデータの削除を含むものであってもよい。
図6は、マルウェアからの電子デバイスのファームウェアベースコンフィギュラブルプロテクションのための方法600の実施例である。ステップ605において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント、プロテクションサーバ及びファームウェアセキュリティエージェントの識別情報とセキュリティとが認証されてもよい。当該認証は、メモリにある各自のイメージ、暗号化ハッシュ又は秘密鍵の特定及び検証によることを含む何れか適切な方法により実行されてもよい。ステップ605が終了するまで、他のステップの処理は保留されてもよい。
ステップ610において、プロテクションサーバは、セキュリティルールを決定するためアクセスされてもよい。当該セキュリティルールは、以下のステップにおける決定に利用されてもよい。ステップ615において、ファームウェアセキュリティエージェントは、システムリソースへのアクセスをトラップするよう指示されてもよい。当該アクセスは、電子デバイス上で実行されるアプリケーション、ドライバ又はオペレーティングシステムから生じるものであってもよい。ファームウェアセキュリティエージェントは、電子デバイスの何れのシステムリソースがモニタされるべきかに関して指示されてもよい。ファームウェアセキュリティエージェントはまた、モニタされるシステムリソースに対する何れの処理がトラップされるべきかに関して指示されてもよい。例えば、ファームウェアセキュリティエージェントが実行されるデバイスに対するリード及びライトコマンドが、トラップ対象として特定されてもよい。ステップ620において、トラップ対象の処理に対応するフラグが、制御構造において設定されてもよい。当該トラップされる処理は、トリガイベントを生成してもよい。
電子デバイスは、ステップ630〜675におけるシステムリソースのアクセスのトラップ、又はステップ680〜685におけるマルウェアの存在についてのデータのスキャンの1以上によって実行及びプロテクトされてもよい。システムリソースのアクセスのトラップと、マルウェアの有無についてのデータのスキャンとのそれぞれは、パラレルに実行されてもよい。さらに、これらのそれぞれは、電子デバイスの処理をプロテクトするため、必要に応じて繰り返されてもよい。
ステップ630において、システムメモリ、レジスタ又はI/Oデバイスなどのシステムリソースのアクセスがトラップされてもよい。当該トラップは、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で実行されてもよい。当該トラップは、ファームウェアの内部で実行されてもよい。ステップ632において、結果としてのトリガイベントは、何れかの関連する情報と共に、トラップされた試行に関連して生成されてもよい。ステップ635において、トリガイベントが現在処理されるべきか、又は処理のため他のセキュリティエージェントにわたされるべきか判断されてもよい。当該判定は、1以上のセキュリティルールにアクセスすることによって行われてもよい。トリガイベントが現在処理されるべきである場合、ステップ640において、セキュリティルールが、関連するデータ、コマンド、コンテクスト情報、時間又は環境情報なの他の情報とトラップされるイベントとに基づき、実行すべきアクションを決定するためアクセスされてもよい。例えば、ライト又はリード対象のデータがセンシティブ又は悪意あるコンテンツについてスキャンされ、コール元のエンティティが、当該エンティティがパーミッションを有しているか確認するため特定され、コマンドをコールするのに利用されるパラメータが調べられ、又は他のセキュリティエージェントからのシステムにおけるマルウェアに関するアラートが参照されてもよい。
ステップ642において、試行されたアクセスが疑わしかったか判断されてもよい。試行されるアクセスに関する情報に関してセキュリティルールにアクセスすることが、試行されるアクセスが疑わしくないという判定をもたらす場合、ステップ645において、当該試行は許可されてもよい。当該試行が疑わしいと判断される場合、ステップ647において、訂正アクションが実行されてもよい。当該訂正アクションは、データからの悪意あるコンテンツの削除、プロテクションサーバ又は他のセキュリティエージェントへの悪意ある試行の存在の通知、試行されるアクセスの拒絶、又は転送されるデータの暗号化を含むものであってもよい。当該試行が疑わしくない場合、ステップ650において、トリガイベントが許可されてもよい。
ステップ655において、他のセキュリティエージェントがトリガイベントを処理すべきであると判断された場合、トリガイベントは処理のため他のセキュリティエージェントにわたされる。ステップ670において、適切なアクションが実行されるべきことを指示するセキュリティエージェントからのレスポンスが受信されてもよい。ステップ675において、訂正アクションやトリガイベントの処理の許可などのアクションが実行されてもよい。
ステップ680において、デバイスのメモリが、マルウェアの存在についてスキャンされてもよい。当該メモリは、以前に実行されたファイルリードの結果や他のネットワークカードなどの他のエンティティから到着したコンテンツを含むものであってもよい。メモリのコンテンツが悪意ある、疑わしい又は未知であると知られた場合、ステップ685において、メモリのコンテンツは削除されてもよい。
ステップ690において、試行されたアクセスが拒絶された場合、又は疑わしいコンテンツが検出された場合、当該イベントは、他のセキュリティエージェント又はプロテクションサーバに報告されてもよい。当該報告は、何れか関連するマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
方法600のステップは、連続的、定期的又は要求に応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図7は、マルウェアに対する電子デバイス204のプロテクションのためのマイクロコードベースシステム700の実施例である。システム700は、マイクロコードによりシステム100の特定の要素を実現するシステム100の実施例であってもよい。システム700のトラップ処理は、電子デバイス701のオペレーティングシステムの下位で実行されてもよい。システム700は、電子デバイス204のリソースへのアクセスの試行された利用をトラップし、当該試行に対応するトリガイベントを生成し、トリガイベントに関するセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを実行するよう構成される1以上のO/S下位セキュリティエージェントを含むものであってもよい。当該O/S下位セキュリティエージェントは、電子デバイス701のリソースから生成される情報をインターセプトし、当該生成に対応するトリガイベントを生成し、トリガイベントに関するセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを実行するよう構成されてもよい。当該O/S下位セキュリティエージェントの1以上は、システム700のプロセッサにおいて完全に又は部分的に実現されてもよい。O/S下位セキュリティエージェントは、当該プロセッサのマイクロコード(μC)により完全に又は部分的に実現されてもよい。システム700によりプロテクトされる電子デバイス701のシステムリソース724は、例えば、図2のシステムリソース224に類似したリソース、物理メモリ714、プロセッサフラグ716、例外(exception)718、レジスタ720又はインタラプト722などを含むものであってもよい。
システム700は、マイクロコードセキュリティエージェント708などのマイクロコードベースO/S下位セキュリティエージェントを含むものであってもよい。マイクロコードセキュリティエージェント708は、プロセッサ704などのプロセッサのマイクロコード内にあってもよい。一実施例では、マイクロコードセキュリティエージェント708は、アプリケーション710、ドライバ711又はオペレーティングシステム713などのシステム700の各部分により行われるシステムリソース724の試行されたアクセスをトラップするよう構成されてもよい。マイクロコードセキュリティエージェント708は、システムリソース724の試行されたアクセスに基づき、トリガイベントを生成するよう構成されてもよい。例えば、オペレーティングシステム713は、物理メモリ714におけるアドレスのコードのセグメントを実行することを試みることによって、プログラムを起動することを試みてもよい。他の例では、オペレーティングシステム713は、物理メモリ714のアドレスをリード又はライトすることを試みてもよい。物理メモリ714が示されているが、マイクロコードセキュリティエージェントは、バーチャルメモリにアクセスするための試行をトラップするよう構成されてもよい。他の実施例では、マイクロコードセキュリティエージェント708は、マイクロコードモジュール710などのプロセッサ702の他の部分からの情報の試行された通信をトラップするよう構成されてもよい。マイクロコードモジュール710は、命令を実行するためのプロセッサ702の処理を実行するよう構成されるプロセッサ702の他の部分を含むものであってもよい。試行された情報の通信は、システムリソース724からの処理の結果を含むものであってもよい。例えば、コードの処理中、ゼロによる除算演算がマイクロコードモジュール710によりインターセプトされ、例外718を生成及び通信することを試行してもよい。
マイクロコード706は、オペレーティングシステム713などのシステム700の要素から受信した上位レベルの命令を実行するためのハードウェアレベル命令を含むものであってもよい。マイクロコード706は、当該上位レベル命令をプロセッサ702により実行される回路レベル命令に変換してもよい。マイクロコード706は、プロセッサ702により実現される電子回路又はプロセッサのタイプに固有のものであってもよい。マイクロコード706は、プロセッサ702の生成に応答して、マイクロコード706の特定のコンテンツにより構成されてもよい。プロセッサ702上でマイクロコード706を更新又は再プログラムする能力は、限定されてもよい。マイクロコード706は、内部プロセッサメモリ704にあってもよい。内部プロセッサメモリ704は、メモリ703などのシステム700のシステムメモリから分離した高速メモリであってもよい。一実施例では、内部プロセッサメモリ704は、ROMであってもよい。他の実施例では、マイクロコード706は、内部プロセッサメモリ704に含まれるプログラマブルロジックアレイにあってもよい。さらなる他の実施例では、内部プロセッサメモリ704は、メモリストア又は制御ストアを有するか、又は実現されてもよい。当該実施例では、内部プロセッサメモリ704は、SRAM(Static RAM)又はフラッシュメモリにより部分的に又は完全に実現されてもよい。当該実施例では、マイクロコード706は、プロセッサ702の初期化の一部として、メモリ703などの他の記憶媒体からのメモリストアにロードされるよう構成されてもよく、また、メモリストアに書き込まれたデータを介しセキュリティルールやマシーン命令などの新たな情報を受信、更新又は再インストールするよう構成されてもよい。
マイクロコードセキュリティエージェント708は、何れの処理、コマンド、通信又は他のアクションをトラップするか決定するため、セキュリティルール707にアクセスするよう構成されてもよい。セキュリティルール707は、マイクロコード706又はプロセッサ702若しくはシステム700の他の適切な部分内にあってもよい。セキュリティルール707は、マイクロコードセキュリティエージェント708に対するコールを行い、パラメータを介し情報をわたす他のセキュリティエージェントなど、プロセッサ702の外部のエンティティからのファンクションコールにより実現されてもよい。マイクロコードセキュリティエージェント708は、セキュリティルール707に通信接続されてもよい。一例では、セキュリティルール707は、
−アドレス(x)がバーチャルメモリレンジ(X1――>X2)又は物理メモリレンジ(Y1――>Y2)のコードにより実行される場合、処理のためO/S下位エージェントに対するトリガイベントを生成し、
−アドレス(x)が物理メモリレンジ(Z1――>Z2)のコードにより実行される場合、命令をスキップし、
−A、B及びCである場合、メモリレンジ(Y1――>Y2)はメモリレンジ(X1――>X2)にアクセスし、
−メモリレンジ(Y1――>Y2)及び(T1――>T2)からのコードのみが(Z1――>Z2)に書き込まれる、
などのロジックを有してもよい。
マイクロコード706は、受信された命令のコンテクストを理解するための状態マシーンを有してもよい。当該情報は、例えば、相互のコンテクスト内で連続する処理を評価するなどの特定のセキュリティルール707を実行するため必要とされてもよい。当該情報は、トリガイベントと共にわたされてもよい。
システム700のO/S下位セキュリティエージェントの1以上がまた、O/S下位エージェント712において実現されてもよい。O/S下位エージェント712は、オペレーティングシステム713などの電子デバイス701のオペレーティングシステムのレベルの下位においてリソースのアクセスのトリガ又は当該トリガの処理を提供するのに適した何れかの方法により実現されてもよい。O/S下位エージェント712は、図2のSVMM216又はSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440,442又はPCファームウェアセキュリティエージェント444、又は図5のファームウェアセキュリティエージェント516の機能の一部又はすべてを実現してもよい。O/S下位エージェント712は、セキュリティルール723に通信接続されてもよい。
一実施例では、O/S下位エージェント712などのシステム700のO/S下位セキュリティエージェントの1以上は、マイクロコードセキュリティエージェント708などのマイクロコードベースセキュリティエージェントにより生成されるトリガイベントを処理するよう構成されてもよい。O/S下位エージェント712は、図1〜2及び4〜5のO/S下位エージェントと同様にして、リソースへのアクセスをトラップするか、又はトリガイベントを処理するよう構成されてもよい。O/S下位エージェント712及びマイクロコードセキュリティエージェント708は、通信接続されてもよい。マイクロコードセキュリティエージェント708は、O/S下位エージェント712にトリガイベントを送信するよう構成されてもよい。O/S下位エージェント712は、O/S内セキュリティエージェント719などの他のセキュリティエージェントに通信接続されてもよく、プロテクションサーバ202に通信接続されてもよい。O/S下位エージェント712は、O/S内セキュリティエージェント719などの他のセキュリティエージェントからコンテクスト情報を受信するよう構成されてもよい。当該情報は、システムリソース724への試行されたアクセスを生成したエンティティに関する情報を提供してもよい。複数のO/S内セキュリティエージェント719がシステム700に存在する場合、各O/S内セキュリティエージェント719は、トラップ、検証又はO/S内セキュリティエージェントに関する他のタスクの指定された部分を実行するよう構成されてもよい。当該部分は、O/S内セキュリティエージェントにより規定されてもよい。例えば、あるO/S内セキュリティエージェント719はMOV命令を検証又は調査し、他のO/S内セキュリティエージェント719はJMP命令を検証又は調査してもよい。
O/S下位エージェント712はまた、プロテクションサーバ202からセキュリティルール又はジャストインタイム情報を受信するよう構成されてもよい。さらに、O/S下位エージェント712は、マイクロコードセキュリティエージェント708から受信したトリガイベントをどのように処理するか決定するため、O/S内セキュリティエージェント719又はプロテクションサーバ202などの他のセキュリティエージェントから受信したコンテクスト情報とセキュリティルール723などのセキュリティルールを照会するよう構成されてもよい。
特定の実施例では、O/S下位エージェント712は、システム700において遭遇する処理のコンテクストを理解するため、動作状態マシーンを含むものであってもよい。O/S下位エージェント712は、その後、コンテクストに基づきマイクロコードセキュリティエージェント708により実行されるのに適したアクションを決定するよう構成されてもよい。当該アクションは、訂正アクション、処理の許可、処理の拒絶又はセキュリティルールの要求の促進における他のステップの実行を含むものであってもよい。マイクロコードセキュリティエージェント708は、O/S下位エージェント712から受信されるアクションを実行するよう構成されてもよい。
O/S下位エージェント712はまた、O/S内セキュリティエージェント719などの他のセキュリティエージェントにより実行されるのに適したアクションを決定するよう構成されてもよい。例えば、マイクロコードセキュリティエージェント708からのトリガイベントが特定のタイプのマルウェアの脅威、カーネルの特定部分又は電子デバイス701のユーザモードに対する脅威を示す場合、O/S下位エージェント712は、O/S内セキュリティエージェント719に訂正アクションを実行するよう命令するよう構成されてもよい。従って、O/S下位エージェント712は、O/S内セキュリティエージェント719を制御してもよい。
O/S下位エージェント712は、マイクロコードセキュリティエージェント708のインスタンスを検証し、またその逆を行うよう構成されてもよい。O/S下位エージェント712は、セキュリティルール707により実現されるべきセキュリティルール723からのものなどのセキュリティルール、システム700に関するステータス情報、アドミニストレータ若しくは環境設定若しくは嗜好、又はマイクロコードセキュリティエージェント708が処理をトラップし、トリガを生成し、当該トリガを処理し、又はそれらを他のセキュリティエージェントに送信するのに適した他の情報を共有又は設定するため、マイクロコードセキュリティエージェント708と通信するよう構成されてもよい。
O/S下位エージェント712は、何れか適切な機構を介し当該情報をマイクロコードセキュリティエージェント708に通信するよう構成されてもよい。O/S下位エージェント712は、プロセッサ702、マイクロコード706又はマイクロコードセキュリティエージェント708のファンクションをコールし、パラメータなどの情報を当該ファンクションにわたしてもよい。当該ファンクションは、マイクロコードセキュリティエージェント708に当該変更をわたすよう特に生成されてもよい。例えば、物理メモリ“B”の他のレンジからのメモリから実行される何れかのエンティティからの物理メモリ“A”のレンジへのアクセスを禁止するため、“Bar_Memory(A,B)”などのファンクションが利用可能である。当該ファンクションがコールされた結果として、マイクロコードセキュリティエージェント708は、マイクロコード706内でパラメータを設定するよう構成されてもよい。当該マイクロコード命令のコールは、マイクロコードセキュリティエージェント708がO/S下位エージェント712のために当該マイクロコード命令をコールする前にO/S下位エージェント712を検証するよう構成されるように特権が付与されてもよい。他の例では、O/S下位エージェント712又はマイクロコードセキュリティエージェント708は、メモリストア、制御ストア又はプロセッサ若しくはマイクロコード706の他の書き換え可能部分にデータを書き込むことによって、当該情報を通信してもよい。
プロセッサ702は、マイクロコードセキュリティエージェント708がマルウェアからシステム700をプロテクトするために必要なすべてのトラップ及び処理を完全に実現するための限定的なリソースを有してもよい。一実施例では、マイクロコードセキュリティエージェント708は、プロセッサ702により実行されるアクションのトラップのみを実現するよう構成されてもよく、以降の処理のためシステム700の他のセキュリティエージェント又はコンポーネントに当該トラップに関するトリガをオフロードしてもよい。マイクロコードセキュリティエージェント708は、リクエスト又は通信の許可又は不許可などの以上のアクションを実行するか、又は情報の報告などの他のアクションを行うようにしてもよい。他の実施例では、マイクロコードセキュリティエージェント708は、トリガイベントの小さな部分の処理を実現するよう構成されてもよい。当該処理に適したトリガイベントは、重要なコンテクスト情報を要求しないものを含むものであってもよい。例えば、マイクロコードセキュリティエージェント708は、O/S下位エージェントのインスタンスが検証されていない場合、あるレンジのメモリアドレスがすべてのリード及びライトからプロテクトされるべきであるというセキュリティルール707を介し情報を受信してもよい。当該セキュリティルールは、コンテンツが極めてセンシティブであるという理由により実現されてもよく、O/S下位エージェント712の処理の支援がない場合、メモリコンテンツにアクセスするエンティティの識別情報は特定できない。従って、O/S下位エージェントのインスタンス及び処理を検証した後、マイクロコードセキュリティエージェント708は、当該検証を示すビットを設定してもよい。メモリの試行されたアクセスがトリガされ、ビットがまだ設定されていない場合、マイクロコードセキュリティエージェント708は、メモリレンジのコンテンツのリード、ライト又は実行を不許可するよう構成されてもよい。ビットが設定された場合、マイクロコードセキュリティエージェント708は、メモリレンジへの試行されたアクセスをトラップし、O/S下位エージェント712に送信されるべきトリガイベントを生成するよう構成されてもよく、O/S下位エージェント712は、コール元のエンティティがメモリレンジにアクセスすることが許可されているかコンテクスト情報と他の設定とから評価する。O/S下位エージェント712は、おそらくアクセスを許可又は拒絶するか示す結果としてのアクションをマイクロコードセキュリティエージェント708に送信してもよい。
トリガイベントは、試行されたアクションのソース、メソッド又はデスティネーションを特定するため利用される何れか適切な情報を有してもよい。トリガイベントは、セキュリティルールを適用するため、マイクロコードセキュリティエージェント708又はO/S下位セキュリティエージェント712により利用されてもよい。トリガイベントは、マイクロコードセキュリティエージェント708により生成されてもよい。例えば、トリガイベントは、何れのリソースがアクセスされたか、何れの命令がコールされたか、何れの命令オペランドが利用されたか、何れのメモリアドレスから当該試行又は命令が到来したか(すなわち、ソースメモリ)、何れのメモ路に処理の結果が格納されるべきであったか(すなわち、ターゲットメモリ)、何れのメモリに影響を与えるか、又は、試行されたアクションのソース、メソッド又はデスティネーションの特定を導く他の何れかの情報を正確に詳述するものであってもよい。マイクロコードセキュリティエージェント708はまた、アクティブ、スリープ、アイドル、ホルト及びリセットのプロセッサ状態、プロセッサ間通信及び電力消費などのプロセッサ702に関する情報を含むよう構成されてもよい。
O/S下位エージェント712などの他のセキュリティエージェントは、セキュリティルール722を適用する際にイベントの範囲を決定するため、トリガイベントにおいて当該情報を利用するよう構成されてもよい。O/S下位エージェント712は、オペレーティングシステム713で実行されるエンティティに関する情報、プロテクションサーバ202における新たな情報、他のセキュリティエージェントにより検出されたマルウェア若しくは他の脅威、アドミニストレータ設定などの追加的な情報にアクセスしてもよい。例えば、物理メモリの特定のアドレスからのトラップリクエストが与えられると、O/S下位エージェント712は、特定のアドレスに関連するスレッド、プロセス又はアプリケーションを決定することが可能であってもよい。その後、O/S下位エージェント712は、当該エンティティが対象となるアクションを実行することが認められているか判断するよう構成されてもよい。O/S下位エージェント712は、エンティティの識別情報を決定するよう構成されてもよい。O/S下位エージェント712は、安全であると知られている(例えば、ホワイトリストを照会することによって)、悪意あると知られている(例えば、動作を観察するか、又は既知のマルウェアのブラックリストを照会することによって)、又は未知であるととしてエンティティを分類するよう構成されてもよい。O/S下位エージェント712は、未知の及び悪意あるエンティティに関する情報をプロテクションサーバ202に報告するよう構成されてもよい。
マイクロコードセキュリティエージェント708は、トラップのため、他のセキュリティエージェントに利用不可な特定のプロセッサ702のリソース及び他のシステムリソースにアクセスしてもよい。一実施例では、マイクロコード706内のマイクロコードセキュリティエージェント708の実現は、プロセッサの外部のコール元のエンティティに対して当該リソースを限定的に明らかにすることによって生成される制限を回避してもよい。例えば、バーチャルマシーンモニタは、仮想化のためプロセッサ702により明らかにされたリソースに対するトラップ処理に限定されてもよい。さらなる例として、メモリに対する試行されたリード、ライト又は実行をトラップする能力を取得する。バーチャルマシーンモニタベースセキュリティエージェントは、仮想化されるのが利用可能であるときのみメモリにアクセスしてもよく、この結果、メモリページに対して試みられたリード、ライト又は実行の試行を追跡することのみ可能であってもよい。他方、マイクロコードセキュリティエージェント708は、特定の物理メモリアドレスへのリード、ライト又は実行リクエストをインターセプトして処理し、セキュリティルール707に基づき当該リクエストを評価することが可能であってもよい。より小さな粒度は、システム700においてセキュリティ手段を提供する際のより大きなフレキシビリティを提供してもよい。特定の物理メモリアドレスに関して何れの命令が利用されたかの命令レベルアウェアネスは、何れのエンティティが何れのリソースをコールしたかシステム700に通知し、メモリページがアクセスされたことを単に通知するものでない。このフレキシビリティは、大変価値があるかもしれない。例えば、マイクロコードセキュリティエージェント708は、リード、ライト又は実行の試行について2つの隣接するメモリアドレスをモニタするが、2つのメモリアドレスの何れがアクセスされたかに基づき、完全に異なるアクションをとるようにセキュリティルール707により指示されてもよい。ある試行が行われるメモリページへの閲覧のみによって、ルールにおける区別は適用できない。他の例では、デバッグレジスタをモニタ及び設定するためハイパーバイザによる他の方法は、システム700と同様に、デバッグレジスタにアクセスするのに利用された命令のコンテクストを有しなかった。さらに、当該デバッグレジスタを設定又は観察するための他のいくつかのエンティティは、オペレーティングシステムのレベルの下位では実行されず、マルウェアの傾向が高いものにする。最後に、当該デバッグレジスタを設定又は観察するための他のいくつかのエンティティは、セキュリティに対して指示されておらず、セキュリティルールにアクセスし、当該アクセスを評価し、訂正アクションを実行することができない。
マイクロコードセキュリティエージェント708により実行されるべき訂正アクションは、セキュリティルール707により決定されるか、又はO/S下位エージェント712から受信された何れか適切なアクションを含むものであってもよい。コマンド又は命令は、許可又は拒絶されてもよい。マイクロコードモジュール710から生成される情報は許可又は抑制されてもよい。当該コマンド、命令又は情報は修正されてもよい。
マイクロコードセキュリティエージェント708は、インターラプトの生成をトラップするよう構成されてもよい。当該インターラプトは、例えば、“INT”命令の実行と、その後のインターラプトに関する情報をホストするのに知られる関連するレジスタをリードするなどのトラップによりトラップされてもよい。例えば、汎用レジスタは、インターラプトのコード識別子と共に、それをコールするのに利用されるパラメータとを学習するため読み出されてもよい。例えば、インターラプト13は、ディスクインターラプトであってもよく、既知のレジスタセットは、関連するデータのセクタ及び位置と共に、インターラプトをリード又はライトとして特定してもよい。
マイクロコードセキュリティエージェント708は、プロセッサ702の入力及び出力ポートに書き込まれる値をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント708は、プロセッサ702により入出力デバイスに書き込まれる値をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント708は、当該ライト又はリードを行うための命令に対してトラップするよう構成されてもよい。
マイクロコードセキュリティエージェント708はまた、プロセッサ702のALU(Arithmetic Logic Unit)の特定の処理をトラップするよう構成されてもよい。プロテクトされたハッシュアルゴリズムのステップに対応するプロセッサ上の処理系列は、ファンクションの未認証のアクセスを決定するようトラップされてもよい。いくつかの算術処理は、自らを偽装又は変身するためマルウェアにより利用される。特定の算術命令、ビット単位命令又はMOV命令はすべて、メモリページ又はアドレスレンジのコンテンツの変更を生じさせる可能性のある命令である。当該命令をトラップすることによって、コードセクション又はデータセクションに対する変更が記録されてもよい。以降の解析が、自己修正したマルウェアの一部としてコードセクション又はデータセクションが修正されたことを示す場合、トランプ及び記録された命令は、マルウェアにより利用される暗号化アルゴリズムを追跡するのに利用されてもよい。例えば、マルウェアは自らを変身するための特定のキーと共にXORファンクションを利用すると判断されてもよい。当該情報は、自己変身するマルウェアを検出するためのより良好なセキュリティルールを生じさせるものであってもよい。さらに、メモリの修正を追跡することによって、リペアロジックは、命令の適用を逆転することによって実現されてもよい。
さらに、マイクロコードセキュリティエージェント708は、DRM(Digital Right Management)処理を実行するよう構成されてもよい。例えば、マイクロコードセキュリティエージェント708は、特定のプログラムを実行するための許可が必要であることを示すセキュリティルール707を受信するよう構成されてもよい。特定のプログラムは、メモリの特定のアドレスに配置されてもよい。当該許可は、例えば、マイクロコードセキュリティエージェント708がO/S下位セキュリティエージェント712から認証コード、キー又はバイトなどを受信するという形態をとってもよい。当該許可は、マイクロコードセキュリティエージェント708がメモリ上で試行されたアクセスをトラップするか、又はプログラム命令をロードし、トリガイベントを認証コード、キー又はバイトにアクセス可能なO/S下位セキュリティエージェント712に送信することによって実現されてもよい。O/S下位セキュリティエージェント712は、マイクロコードセキュリティエージェント712に当該判定を返してもよい。従って、プログラムの処理は、認証コードに基づき許可又は不許可されてもよい。
さらに、マクロコードセキュリティエージェント708は、メモリのハッシュ又はチェックサムに基づき、メモリの特定のコードの実行を停止するよう構成されてもよい。当該ハッシュ又はチェックサムは、セキュリティルール707によって悪意あるとして示されてもよい。コードがメモリからロードされると、マイクロコードセキュリティエージェント708は、コンテンツのハッシュ又はチェックサムを実行し、それを既知の悪意あるコードのものと比較し、その後、ロードする試行を拒絶し、攻撃的なコードを排除するためのリペアファンクションをロードしてもよい。
O/S下位エージェント712は、システム700がマルウェアにより件戦死、疑わしい動作に遭遇し、又は危険にさらされていると判断されたことを、マイクロコードセキュリティエージェント706を含むシステム700の他のセキュリティエージェントに通知するよう構成されてもよい。当該ケースでは、マイクロコードセキュリティエージェント706は、プロセッサ702の一部の処理を不可にするよう構成されてもよい。マイクロコードセキュリティエージェント706は、特定のシステムリソース724に対するリクエスト又はマイクロコードモジュール710から生成される通信をトラップ及び拒絶することによって、当該処理を不可にするよう構成されてもよい。プロセッサ702の一部は、それらがセンシティブであるか、又はマルウェアにより悪用される可能性があるため、不可にされてもよい。
マイクロコードセキュリティエージェント706は、ロード、リード、ライト又は実行するための試行からメモリアドレス又はあるレンジのメモリアドレスをプロテクトするよう構成されてもよい。当該メモリは、センシティブなデータを有してもよく、又は制限されたファンクション、センシティブなファンクション又はプロテクトされたファンクションのための初期化ポイントであってもよい。マイクロコードセキュリティエージェント706は、アクセス元のソフトウェアが安全か又は無力であるという検証がないメモリへのアクセスを阻止するようにしてもよい。この場合、O/S下位エージェント712などのセキュリティエージェントは、おそらく当該メモリアドレスがセンシティブな情報又はプロテクトされたルーチンなどに対応してもよいため、プロテクトされる特定のメモリアドレスを特定してもよい。O/S下位エージェント712は、何れのアドレスがプロテクトされるべきかに関するセキュリティルール707などの情報をマイクロコードセキュリティエージェント708に送信してもよい。マイクロコードセキュリティエージェント708は、当該メモリアドレスに対して試行されるロード、実行、リード又はライトをトラップし、O/S下位エージェント712に対応するトリガイベントを送信してもよい。O/S下位エージェント712は、コール元のソフトウェアがセキュリティルール723、プロテクションサーバ202からの情報、ホワイトリスト又は他の何れか適切な情報ソースに従って安全であるか又は無力であるか判断してもよい。O/S下位エージェント712は、実現されるべきアクションをマイクロコードセキュリティエージェント708に返してもよい。マイクロコードセキュリティエージェント706は、バーチャルメモリのページ又はレンジ及び/又は物理メモリのアドレス又はレンジをプロテクトするよう構成されてもよい。マイクロコードセキュリティエージェント706は、バーチャルメモリページ、位置又はアドレスを物理メモリの位置又はアドレスに変換するよう構成されてもよい。従って、トラップすべきバーチャルメモリ位置又は試行の発信元のバーチャルメモリ位置が与えられると、マイクロコードセキュリティエージェント706は、対応する物理メモリの位置を決定するよう構成されてもよく、またその逆を行うよう構成されてもよい。
さらに、マイクロコードセキュリティエージェント708は、センシティブコードのアクセスをプロテクトするよう構成されてもよい。一実施例では、マイクロコードセキュリティエージェント708は、メモリに格納されるときのコードの開始位置を示す特定のアドレスのアクセスをモニタすることによって、上述されたような方法によりセンシティブコードのアクセスをプロテクトするよう構成されてもよい。他の実施例では、マイクロコードセキュリティエージェント708は、プロセッサ304の処理をセンシティブデータ又はコードの中間に移動する“JMP”又は同様のブランチ命令をモニタするよう構成されてもよい。この場合、マイクロコードセキュリティエージェント708は、センシティブなメモリレンジと共に“JMP”命令の実行をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント708は、“JMP”命令の発信元を解析するよう構成されてもよい。マイクロコードセキュリティエージェント708は、O/S下位エージェント712により処理されるトラップされた“JMP”の試行された実行に対応するトリガイベントを生成するよう構成されてもよい。O/S下位エージェント712は、“JMP”命令の発信元と、“JMP”命令が発信されたメモリが対象となるメモリにアクセスすることが許可されているかとを考慮するよう構成されてもよい。
マイクロコードセキュリティエージェント708自体又はそのトラップ機能はまた、システム700の他の部分によりイネーブル又は不可とされるよう構成されてもよい。このような能力は、トラップ及び処理イベントがコストがかかり、システムパフォーマンスに不利である場合に有用であるかもしれない。当該イネーブル又は不可は、特にセンシティブなプログラム若しくはデータの利用、マルウェアの脅威の検出、管理上の嗜好又は他の何れか適切な理由に基づくものであってもよい。一実施例では、マイクロコードセキュリティエージェント706は、セキュリティ処理及びトラップを開始するため、MSAOn信号、VMXOn信号又は他の命令をO/S下位エージェント712から受信するよう構成されてもよい。マイクロコードセキュリティエージェント708は、セキュリティ処理及びトラップを停止するため、MSAOff信号、“VMWrite VMXOff”信号又は他の命令を受信してもよい。セキュリティ処理及びトラップを開始又は停止する前に、マイクロコードセキュリティエージェント708は、リクエストを行ったセキュリティエージェントの識別情報とインスタンスとを検証してもよい。
さらに、マイクロコードセキュリティエージェント708は、プロセッサ702と電子デバイス701の他のプロセッサとの間のプロセッサ間のメッセージ及びコマンドをインターセプトするよう構成されてもよい。当該プロセッサ間のコマンドは、適切なマイクロコードモジュール710により受信されてよく、又は特定のシステムリソース724にアクセスする電子デバイス710のエンティティにより試行されてもよい。一実施例では、プロセッサ間のコマンドは、マシーン状態レジスタを介しオペレーティングシステム713のプロセッサ702にアクセスするソフトウェアから送信されてもよい。マルウェアは、例えば、プロセッサをスイッチオフするか、又はそれらをスリープモードに移行させるなどのため、メッセージを送信することを試みてもよい。マイクロコードセキュリティエージェント708は、例えば、プロセッサ間コマンドに対応するMSRレジスタなどへの試行されたライトにトラップするよう構成されてもよい。トラップされたコマンドのトリガイベントは、当該試行のソースを検証するための処理のために、O/S下位エージェント712に送信されてもよい。
マイクロコードセキュリティエージェント708は、ソフトウェアインタラプト722などのプロセッサからのメッセージの生成及び通信をインターセプトするよう構成されてもよい。マイクロコードセキュリティエージェント708は、許可されたソフトウェアのみによりアクセス可能とされるように、インタラプトの実行を制御するよう構成されてもよい。例えば、既知の識別情報のないドライバ(ハッシュにより判断され、メモリのドライバのソースなど)又は悪意あるアイデンティティは、ソフトウェアインターラプトを実行することが許可されない。マイクロコードセキュリティエージェント708は、インタラプトのアクセスをトラップし、トリガイベントを処理のためO/S下位エージェント712にわたしてもよい。
他の例では、マイクロコードセキュリティエージェント708は、プロセッサ702による例外718の生成をトラップするよう構成されてもよい。例外は、例えば、ゼロによる除算演算、ページフォルト及びデバッグ信号などを含むものであってもよい。これらを含むメモリアドレスへのリードアクセスは、マイクロコードセキュリティエージェント708によりトラップされ、O/S下位エージェント712により処理されてもよい。
マイクロコードセキュリティエージェント708は、プロセッサ702の各種データ構造をプロテクトするよう構成されてもよい。例えば、マルウェアは、Interrupt Descriptor Table(IDT)をプロテクトするよう構成されてもよい。一実施例では、マイクロコードセキュリティエージェント708は、IDT自体を含むメモリ位置へのライトアクセス試行をトラップしてもよい。他の実施例では、マイクロコードセキュリティエージェント708は、“LOAD IDT”及び“STORE IDT”などのIDTを変更するためのファンクションが格納されるメモリ位置をプロテクトしてもよい。他の例では、マイクロコードセキュリティエージェント708は、EFLABS若しくは同様のデータ構造又はインタラプトハンドラに関するフラグをプロテクトするよう構成されてもよい。マルウェアは、未認証のソースによる当該リソースの変更を開始インタラプトハンドラの処理を妨害することを試みるかもしれない。
マイクロコードセキュリティエージェント708は特定タイプのプロセッサの特定のインスタンスに固有のものであってもよいが、異なる回路構成が異なるマイクロコード命令を必要とするため、セキュリティルール707のセットは、所与の命令セットを利用してすべてのプロセッサに対して有効とされてもよい。これは、マイクロコードセキュリティエージェント708が、同一の命令セットを実現する異なるプロセッサ間で変更されない特定の命令をトラップするため可能であるかもしれず、回路は関連するリソースが変化し、回路に依存するかもしれない。例えば、メインディスクトップCPU(Central Processing Unit)及び埋め込みシステムCPUは共に、同一メーカーからのISAプロセッサであってもよく、セキュリティルール707は、2つのタイプのプロセッサの間で少なくとも部分的に共有されてもよい。他方、グラフィックプロセッサ上のグラフィック処理ユニット又は異なる命令セットを備えた自動車埋め込みプロセッサは、セキュリティルール707を共有できなくてもよい。
動作について、マイクロコードセキュリティエージェント708は、電子デバイス701のプロセッサ702において実行され、O/S下位エージェント712は、電子デバイス104のオペレーティングシステムのレベルより下位で実行されてもよい。マイクロコードセキュリティエージェント708とO/S下位エージェント712とは、相互認証してもよい。マイクロコードセキュリティエージェント708は、システムリソース724へのアクセスと、マイクロコードモジュール710により生成される出力又は通信とのトラップを開始してもよい。マイクロコードセキュリティエージェント708は、O/S下位エージェント712からの要求に応答して、セキュリティルール707に応答して又はプロセッサ702のスタートアップに応答して開始されてもよい。O/S下位エージェント712は、システム700における発生、アドミニストレータ若しくはシステム設定又はトリガされたセキュリティルール723のため、マイクロコードセキュリティエージェント708にセキュリティイネーブルリクエストを送信してもよい。当該リクエストは、例えば、特定のプログラムが実行されるべきである、センシティブデータがアクセスされるべきである、又はマルウェアの脅威がシステム700の何れかにおいて検出されたため、生成されてもよい。O/S内セキュリティエージェント719及び/又はO/S下位システムエージェント712は、マイクロコードセキュリティエージェント708に対して自らを認証してもよい。自己認証のため、O/S内セキュリティエージェント719及び/又はO/S下位システムエージェントは、認証プロセスを開始するため、プロセッサ702により提供される特権命令をコールしてもよい。当該コールは、マイクロコードセキュリティエージェント708に、O/S内セキュリティエージェント719及び/又はO/S下位システムエージェント712などをシグネチャ又はハッシュにより評価及び認証させるようにしてもよい。
マイクロコードセキュリティエージェント708は、O/S下位エージェント712からセキュリティルール707を受信してもよい。マイクロコードセキュリティエージェント708は、ファンクションコールによって、又はメモリストアなどの共有メモリへのライトによって更新されてもよい。マイクロコードセキュリティエージェント708は、特定の命令、当該命令に対するオペランド、ターゲットアドレス、ソースアドレス又はこれらの何れかの組み合わせをトラップするよう構成されるマイクロコード706の制御構造に対して、セキュリティルール707に基づくフラグを適用してもよい。マイクロコードセキュリティエージェント708は、オペレーティングシステム713、アプリケーション710又はドライバ711などのプロセッサの上位で実行されるエンティティによるシステムリソースの試行されたアクセスをトラップしてもよい。マイクロコードセキュリティエージェント708の処理は、当該エンティティにトランスペアレントであってもよい。マイクロコードセキュリティエージェント708は、他のマイクロコードモジュール710のインスタンスからの出力など、情報をの生成をトラップしてもよい。当該マイクロコードモジュール710は、プロセッサ702について各種タスクを実行するよう構成されるマイクロコードの他の部分を含むものであってもよい。例えば、マイクロコードモジュール710の一部は、プロセッサ
の例外又はインタラプトが生成されるべき時点、入出力データをどのようにルーティングするか。又は数学演算をどのように実行するかを検出するようにしてもよい。マイクロコードセキュリティエージェント708の処理は、当該モジュールにトランスペアレントであってもよい。マイクロコードセキュリティエージェント708は、状態マシーンを利用して、観察された以前にイベントに基づき特定のトラップを実行してもよい。
リスースへのアクセス又は情報の生成をトラップすると、マイクロコードセキュリティエージェント708は、トラップに関するトリガイベントを生成してもよい。当該トリガイベントは、トラップされる命令、利用されるパラメータ、発信元のメモリ位置及びターゲットメモリ位置などのコンテクスト情報を含む、トラップに関する情報を含むものであってもよい。
一実施例では、マイクロコードセキュリティエージェント708は、トリガイベントを処理してもよい。他の実施例では、マイクロコードセキュリティエージェント708は、トリガイベントをO/S下位エージェント712又は処理用の他のセキュリティエージェントにわたしてもよい。マイクロコードセキュリティエージェント708は、トリガイベントを処理するか否か、及びどのように処理するかを決定するため、又はトリガイベントをO/S下位エージェント712にわたすたけセキュリティルール707を照会してもよい。マイクロコードセキュリティエージェント708は、O/S下位エージェント712からのリプライを待機してもよいし、又はフォローアップがセキュリティルール707により要求されない場合、トラップアクションを許可してもよい。マイクロコードセキュリティエージェント708は、命令の許可又は拒絶、又は実行される値又はパラメータの置換など、セキュリティルール707に基づき訂正アクションを実行してもよい。
O/S下位エージェント712は、マイクロコードセキュリティエージェント708からトリガイベントを受信してもよい。O/S下位エージェント712は、トリガイベントに基づき実行するのに適したアクションを決定するため、セキュリティルール723などのセキュリティルールを照会してもよい。O/S下位エージェント712は、マイクロコードセキュリティえーじぇント708からのトリガイベント情報、O/S内セキュリティエージェント719からのコンテクスト情報、プロテクションサーバ202からの情報、他のセキュリティエージェントからの判定結果、アドミニストレータ設定、時間又は実行されるべき適切なアクションを決定するための他の情報を利用してもよい。O/S内エージェント712は、O/S内セキュリティエージェント719及び/又はマイクロコードセキュリティエージェント708に実行されるべきアクションを送信してもよい。O/S下位エージェント712は、トリガイベント及び結果のアクションに関する情報をプロテクションサーバ202に送信してもよい。
マイクロコードセキュリティエージェント708は、O/S下位エージェント712などの他のセキュリティエージェントから実行されるアクションを受信してもよい。マイクロコードセキュリティエージェント708は、命令の許可若しくは拒絶又は実行される値若しくはパラメータの置換などの受信したアクションを実行してもよい。
図8は、マルウェアから電子デバイスのマイクロコードベースのパーソナル化及びコンフィギュラブルなプロテクションのための方法800の実施例である。ステップ805において、マイクロコードセキュリティエージェントのインスタンスが検証されてもよい。ステップ810において、他のセキュリティエージェントのインスタンスが検証されてもよい。当該セキュリティエージェントは、O/S下位セキュリティエージェントを含むものであってもよい。ステップS815において、プロセッサ内でマイクロコードレベルでトラップするための1以上のセキュリティルールが取得、送信又は受信されてもよい。当該セキュリティルールは、例えば、ファンクションコールなどによって、又は共有メモリスペースへのパラメータの書き込みによって通信されてもよい。ステップ820において、マイクロコードレベルのリソースのセキュリティトラップが開始されてもよい。一実施例では、当該開始は、セキュリティトラップを開始するための信号の受信から行われてもよい。当該実施例では、システムに対する悪意ある攻撃が検出されたため、又はセンシティブデータがシステムに存在する可能性があるため、信号が受信されてもよい。他の実施例では、当該開始は、プロセッサのスタートアップから行われてもよい。
ステップ825において、トラップ対象の処理に対応するフラグが、マイクロコードに設定されてもよい。当該フラグは、特定の命令、当該命令に対するオペランド、ターゲットアドレス、ソースアドレス又はこれらの何れかの組み合わせに対応するものであってもよい。当該フラグは、受信されたセキュリティルールにより規定されてもよい。ステップ830において、実行対象の命令が受信され、トラップフラグと比較される。ステップ835において、マイクロコードにより生成及び送信される情報が受信され、トラップフラグと比較されてもよい。ステップ830及び835は、これらのステップが繰り返される状態マシーンにより実現されてもよく、複数のステップの繰り返しからの結果が記憶され、フラグ又はセキュリティルールに対して一緒に比較されてもよい。
ステップ840において、命令又は情報がトラップされたか判断されてもよい。何もトラップされなかった場合、本方法は、ステップ830及び835において命令及び生成された情報のモニタリングに戻ってもよい。トラップされるものがある場合、ステップ845において、トラップに関するトリガイベントが生成されてもよい。当該トリガイベントは、トラップされる命令、使用されるパラメータ、発信元のメモリ位置及びターゲットメモリ位置などのコンテクスト情報を含む、トラップに関する情報を含むものであってもよい。
ステップ850において、トリガイベントがマイクロコード内で処理されるべきか、又はマイクロコード外のセキュリティエージェントがトリガイベントを処理すべきか判断されてもよい。トリガイベントがマイクロコード内で処理されるべきである場合、ステップ855において、トリガイベントに適したアクションが実行されてもよい。当該アクションは、セキュリティルールを照会することによって規定されてもよい。当該アクションは、実行対象の命令又は送信対象の情報の許可、命令又は通信の拒絶、メモリ又はパラメータの値の置換、又は他の何れかの要求される訂正アクションを含むものであってもよい。方法800は、その後、ステップ830及び835におけるセキュリティのモニタを継続してもよい。
トリガイベントがマイクロコードの外部で処理されるべきである場合、ステップ860において、トリガイベントは、当該トリガイベントを処理するためのセキュリティエージェントに送信されてもよい。ステップ865において、トリガイベントに関する追加的な情報が収集されてもよい。当該情報は、設定、嗜好、コンテクスト情報又はマルウェア状態を含むものであってもよい。当該情報は、トリガイベントにセキュリティルールを適用するため、ステップ870において利用されてもよい。当該アプリケーションは、トリガイベントに関して実行されるべき手順を生成してもよい。ステップ875において、当該手順が規定され、規定されたアクションを実現する各種セキュリティエージェントに送信されてもよい。当該アクションは、処理若しくは通信が実行されることの許可、プロテクションサーバへのイベントの報告又は他の何れか適した結果などの訂正アクションを含むものであってもよい。ステップ880において、ステップ875において規定されたアクションが実行されてもよい。本方法800は、その後、ステップ830及び835におけるセキュリティのモニタを継続してもよい。
図9は、電子デバイス901上のセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するシステム900の実施例である。システム900は、オペレーティングシステム913などの電子デバイス901のオペレーティングシステムにおいて実行されるソフトウェアベースエンティティから、プロセッサリソース924にアクセスする悪意ある試みを検出するため電子デバイス901上で実行されるよう構成されるO/S下位トラップエージェント920及びトリガイベントハンドラ922を有してもよい。さらに、O/S下位トラップエージェント920及びトリガイベントハンドラ922は、トラップすべき嗜好された処理又は情報の生成と、トラップされる処理又は情報に対応して生成されるトリガイベントをどのように処理するかとを決定するため、1以上のセキュリティルール908を利用するよう構成されてもよい。O/S下位トラップエージェント920及びトリガイベントハンドラ922は、許可、拒絶又はトリガイベントの他の訂正アクションを実行するよう構成されてもよい。
電子デバイス901は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス901は、メモリ903に接続される1以上のプロセッサ902を有してもよい。プロセッサ902は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ903は、図2のメモリ206、図4のメモリ406、図7のメモリ703及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス901は、1以上のセキュリティルール921に接続されるO/S内セキュリティエージェント919を有するオペレーティングシステム913を有してもよい。オペレーティングシステム913は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。O/S内セキュリティエージェント919は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719又はこれらの何れか適切な組み合わせを実現するよう全体的又は部分的に構成されてもよい。
O/S下位トラップエージェント920は、図1のO/S下位トラップエージェント104、図2のSVMM216、図4のファームウェアセキュリティエージェント440,442又はPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708及び/又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。トリガイベントハンドラ922は、図1のトリガイベントハンドラ108、図2のSVMMセキュリティエージェント217、図4のO/S下位エージェント450、図7のO/S下位エージェント712及び/又はこれらの何れかの組み合わせを実現するよう構成されてもよい。各種実施例では、O/S下位トラップエージェント920の機能の一部は、トリガイベントハンドラ922により実現されてもよく、又はトリガイベントハンドラ922の機能の一部は、O/S下位トラップエージェント920により実現されてもよい。さらに、O/S下位トラップエージェント920及びトリガイベントハンドラ922は、同一のソフトウェアモジュールにより実現されてもよい。
セキュリティルール908は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、及び/又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。セキュリティルール921は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721及び/又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。
O/S下位トラップエージェント920は、プロセッサリソース924などの何れか適切なリソースとの間のアクセス又は情報をインターセプトするよう構成されてもよい。例えば、プロセッサリソース924は、図1のリソース106、図2のシステムリソース214、図4のディスプレイ424及びストレージ426などのコンポーネントの一部、又は図7のシステムソースの機能を実現するよう構成されてもよい。プロセッサ924は、プロセッサが命令をロード及び実行することを可能にするため、プロセッサ902などのプロセッサに利用可能なリソースを有してもよい。当該リソースは、例えば、データレジスタ928、制御レジスタ930、キャッシュ934、プロセッサフラグ936、プロセッサコア938、プロセッサ例外940、又はプロセッサインタラプト942などを含む物であってもよい。当該リソースの試行されたアクセスは、オペランドを有するアセンブリ言語命令などの命令を含むものであってもよい。トラップが利用可能なプロセッサリソース924は、プロセッサ902により明らかにされるリソースに依存してもよい。例えば、O/S下位トラップエージェント920がバーチャルマシーンモニタにより実現される場合、O/S下位トラップエージェント920がトラップするのに利用可能なプロセッサリソース924は、仮想化の目的のため、プロセッサ902により明らかにされたプロセッサリソース924に限定されてもよい。この場合、プロセッサ902は、プロセッサリソース924の一部についての仮想化拡張を含む物であってもよい。他の例では、O/S下位トラップエージェント920がマイクロコードセキュリティエージェントにより実現される場合、プロセッサ902は、プロセッサ902のほぼすべてのリソースをトラップに利用可能にしてもよい。
O/S下位トラップエージェント920は、プロセッサリソース制御構造(PRCS)926を有してもよい。PRCS926は、レコード、データ構造、テーブル又は他の何れか適切な構造により実現されてもよい。PRCS926は、何れの命令、情報又はプロセッサリソース924の試行されたアクセスがトラップされるべきか規定する情報を有してもよい。O/S下位トラップエージェント920又はトリガイベントハンドラ922は、トラップされるセンシティブな処理、情報又はリソースに対応するPRCS926のフラグを設定するよう構成されてもよい。O/S下位トラップエージェント920又はトリガイベントハンドラ922は、セキュリティルール908に含まれる情報に従ってPRCS926のフラグを設定するよう構成されてもよい。
図10は、PRCS100の実施例である。PRCS1000は、図9のPRCS926の実施例であってもよい。PRCS1000は、トラップされる各種プロセッサリソースのエントリ1014のテーブルを含むものであってもよい。各エントリは、トリガイベントを生じさせるリソース及び条件を特定した1以上のフィールド1004、1006、1008、1010、1012を有してもよい。例えば、PRCS1000は、トリガフラグ1002、リソースの識別子1004、リソースに関するタイプ1006、トリガタイプ1008、イベントをトリガすべき時期に関するトリガ時期条件1010、及びイベントをトリガする実行段階1012のフィールドを有してもよい。PRCS1000の実現形態は、プロセッサ902により明らかにされるリソース又はアーキテクチャ(ISA(Industry Standard Architectureなど)を含む、特定されるリソースを有するプロセッサの性質に依存してもよい。
トリガフラグ1002は、関連するエントリ1014のトラップ及びトリガがオン又はオフされるかの指示を含むものであってもよい。当該フラグは、トラップ条件がエントリ1014としてPRCS1000にロードされることを可能にするが、依然として休眠状態に維持される。従って、PRCS1000は、それらをアクティブに強制することなく、セキュリティルールの実施例によりロードされてもよい。トリガフラグ1002は、図9のO/S下位トラップエージェント920などのエンティティにより設定されるよう構成されてもよい。当該処理は、特定のリソース又は条件に対するトラップがイネーブル又は非イネーブルされる毎に、PRCS1000に投入又は非投入されることを要求するシステムと対照的に、PRCS1000を用いたアンチマルウェアシステムがより迅速に動作することを可能にするものであってもよい。エントリ1014をオン及びオフする能力は、アンチマルウェアシステムが特定の処理を選択的にトラップすることを可能にするものであってもよい。当該選択は、特定のトラップ処理が時間又は実行に関してコストがかかる場合に効果的であり、このため、エントリ1014が特定の条件が検出されたときに限ってイネーブルとされる。例えば、システムが特定のレジスタに多数回通常の書き込みを行う場合、当該レジスタへのアクセスに対するトラップは、アンチマルウェアシステムの他の部分がマルウェア感染の可能性を示す疑わしい動作を検出するまでオフされてもよい。この場合、レジスタのライトに対応するエントリ1014のトリガフラグ1002は、リソースを攻撃するための何れか追加的な悪意ある試みをキャッチするため、“ON”に設定されてもよい。
リソース識別子1004は、トラップされるプロセッサの特定のリソースの識別情報を含むものであってもよい。例えば、識別子1004は、リソースが特定のデータレジスタなどのレジスタ、EAXなどのアドレスレジスタ、スタックレジスタ、制御レジスタ、ベクトルレジスタ、ESPなどのスタックポインタ、命令レジスタ、プログラムカウンタ、命令レジスタ、プログラムステータスワード、コンスタントレジスタ、浮動小数点レジスタ又は条件付きレジスタであることを示すものであってもよい。他の例として、識別子1004は、リソースが“JMP”、“JZ”(条件がゼロに等しい場合にジャンプする)、“JNZ”(条件がゼロに等しくない場合にジャンプする)、“MOV”(値の移動)、又は“SysEnter”(Ring0手順へのファーストコール)などの命令であることを特定するものであってもよい。さらなる他の例として、識別子1004は、変換ルックアサイドバッファなどのキャッシュ、タイムスタンプなどのカウンタ、システムのプロセッサ0、プロセッサ1、...、プロセッサNなどの論理コア、“DIV/0”などのプロセッサ例外、又はプロセッサ間インタラプト若しくは他のグローバル変数などのインタラプトなどの他のリソースの1つであることを特定するものであってもよい。リソース識別子1004は、リソース識別子1004により表される命令、レジスタ又は他のリソースのアドレスの表現に変換されてもよい。リソースタイプ1006は、エントリ1014が含むリソースのクラス又はタイプの識別情報を含むものであってもよい。PRCS1000のいくつかのエントリは、特定のタイプのすべてのリソースに適用されてもよい。
トリガタイプ1008は、結果としてのトリガイベントの処理が同期的又は非同期的であるかの特定を含むものであってもよい。同期的トリガは、トラップされたリソースの実行又は通信が、例えば、試行がマルウェアを示すか判断されるまで停止させるものであってもよい。非同期的トリガは、例えば、トリガが以降の評価のため記録される間、トラップされたリソースの実行又は通信が継続されることを可能にするものであってもよい。一実施例では、非同期的にトリガされるリソースの試行されたアクセスは、より大きなアクション系列の評価を構築するのに利用されてもよく、当該アクション系列の適切な評価は、判定が可能になる前に複数のデータポイントを要求するものであってもよい。例えば、命令ポインタレジスタの特定のリードがそれ自体悪意のないものであるが、返される情報の以降の利用は悪意あるものであるかもしれない。従って、状態マシーンはまず、命令ポインタレジスタのリードを最初に非同期的にトラップし、その後に他の命令においてそれの使用を同期的にトラップするのに利用されてもよい。
トリガ時期条件1010は、リソースのアクセスに基づきトリガイベントが生成される論理ルール又は条件を含むものであってもよい。例えば、トリガイベントは、リソースがライト又はリードされると、レジスタに対して生成されてもよい。トリガイベントは、命令が実行されると、“JMP”などの命令に対して生成されてもよい。トリガイベントは、キャッシュが無効にされると、変換ルックアサイドバッファなどのキャッシュについて生成されてもよい。トリガイベントは、コアがアイドルであるときなど、プロセッサの状態に応じてプロセッサコアについて生成されてもよい。プロセッサ例外又はプロセッサフラグは、フラグ又は例外が設定又はライとされると、トリガされてもよい。トリガ時期条件1010は、単一のリソースに対する複数の条件(値のレンジなど)、複数のリソースに対する条件(複数のエントリ1014において結び付けられる)又は双方の組み合わせなどの復号化的な論理条件を有してもよい。
トリガ時期条件1010は、トラップされるべきリソースのタイプに従って条件を含むものであってもよい。例えば、レジスタは、それがライトされると、特定の値によりライトされると、又はリードされるとトリガされてもよい。他の例では、キャッシュ又はポインタは、それはライトされると、特定の値によりライトされると、又はリードされると同様にトリガされてもよい。さらなる他の例では、プロセッサコアに停止、スリープ又はアクティブ化するよう指示するのに利用されるものなどのプロセッサ間インタラプトは、当該インタラプトが送信される前(インタラプトテーブルのグローバルなスペースの試行されたアクセスに応答して)、又はインタラプトが送信された後(インタラプトテーブルが書き込まれた後)、トリガされてもよい。
トリガ実行段階1012は、命令の実行の何れの段階で試行されたアクセスがトラップされ、トリガイベントが生成されるかの指示を含むものであってもよい。トリガ実行段階1012は、所与のリソースをトラップするための追加的な要求として、トリガ時期条件1010に関して利用されてもよい。所与のエントリをトラップするため、トリガ時期条件1010は、関連する命令がトリガ実行段階1012に指定された実行段階に到達すると評価されてもよい。トリガ実行段階1012は、例えば、プロセッサによる実行の5つの段階又はステップなどに対応するエントリを含むものであってもよい。一実施例では、命令の実行の5つの段階は、1)命令のフェッチ、2)命令の復号化、3)実行、4)結果のメモリ位置のアクセス、及び5)リターン値のメモリ、レジスタ又は他の位置への書き込みを含むものであってもよい。当該実施例では、トリガ実行段階1012は、5つの段階の何れの前後においてトリガする可能性を有してもよい。これは、フェッチ前、復号化後(従って実行前)、実行後(従ってメモリ位置へのアクセス前)、メモリ位置へのアクセス後(従ってリターン値の書き込み前)、及びリターン値の書き込み後の合計で異なる6つのトリガオプションを提供する。実行段階に基づきトラップすることを可能にすることは、他のアンチマルウェアシステムにおいて利用不可な有意なフレキシビリティを提供するものであってもよい。例えば、特定の命令を実行する結果は予め知られておらず、アンチマルウェアシステムは、結果のメモリ位置へのアクセス後であるが、命令により指示されるようなレジスタへのリターン値の書き込み前となるように、トリガ実行段階1012の値を設定してもよい。これは、アンチマルウェアシステムが書き込みの許可なしに処理結果を評価することを可能にするものであってもよい。結果が悪意ある処理を示す場合、ダミー値が、第4の実行段階から返される値の代わりにレジスタに書き込まれてもよい。試行された実行に関する情報は、当該試行が悪意あるか否かを判断するのに役立つように、試行された実行に基づきトリガイベントのハンドラに提供されてもよい。
PRCS1000の各リソース1004は、リソース1004のアクセスと他のリソース1004との組み合わせに対応する複数のエントリを有してもよい。当該アクセスの組み合わせは、2以上のステップのプロセスがトラップされることを含むものであってもよい。例えば、エントリ1014は、a)制御レジスタのアクセスに関してIDT(Interrupt Descriptor Table)に対応するメモリ位置のアクセスと、b)汎用レジスタのアクセスに関してIDTに対応するメモリ位置のアクセスとについて、別々のエントリを含むものであってもよい。さらに、図9において、当該別々のエントリは、システム900の別々の部分により処理されてもよい。例えば、特定のO/S内トラップエージェント919は、トラップされるIDT汎用レジスタアクセスについてコンテクスト情報を収集することを処理し、他のO/S内トラップエージェント919は、トラップされるIDT制御レジスタアクセスについてコンテクスト情報を収集することを処理するものであってもよい。
図9を参照して、O/S下位トラップエージェント920は、PRCS926においてフラグを設定し、又はエントリを追加するよう構成されてもよい。O/S下位トラップエージェント920は、当該フラグ又はエントリを決定するため、セキュリティルール908などの1以上のセキュリティルールにアクセスするよう構成されてもよい。一実施例では、O/S下位トラップエージェント920は、セキュリティルール908又はプロテクションサーバ202への照会後にO/S下位トラップエージェント920をコールしうるトリガイベントハンドラ922から、当該フラグ又はエントリを設定するための命令を受信するよう構成されてもよい。特定の特権ルーチンセットが、PRCS926へのフラグの設定又はエントリの追加のため、プロセッサ902及び/又はO/S下位トラップエージェント920により提供されてもよい。
電子デバイス901が複数のプロセッサを有する場合、各プロセッサは、対応するPRCS926を有してもよい。一実施例では、システム900は、各PRCS926についてO/S下位トラップエージェント920を有してもよい。他の実施例では、O/S下位トラップエージェント920は、各PRCS926に表されるリソースをトラップするよう構成されてもよい。
システム900が仮想化をサポートする場合、PRCS926自体が仮想化されてもよい。仮想化されたPRCS926のコンテンツは、対応するプロセッサ902により仮想化されるリソースに限定されてもよい。当該階層化PRCS926は、バーチャルマシーンモニタに含まれてもよい。この場合、O/S下位トラップエージェント920又はトリガイベントハンドラ922は、バーチャルマシーンモニタにおいてPRCS926を制御するよう構成されてもよい。他の実施例では、O/S下位トラップエージェント920は、各PRCS926に表されるリソースをトラップするよう構成されてもよい。さらに、エントリ1014は、各仮想化PRCS926において、PRCS単位で、又は仮想化プロセッサ単位で生成され、トリガフラグ1002が設定されてもよい。
O/S下位トラップエージェント920は、トリガイベントハンドラ922とのトラップされた試行又は通信から生じるトリガイベントを送信するよう構成されてもよい。トリガイベントハンドラ922は、トリガイベントの情報と1以上のセキュリティルール908とに基づき、以降の何れか適切なアクションを実行するよう構成されてもよい。例えば、トリガイベントハンドラ922は、試行される命令の実行を許可するが、実行後の結果の通知を要求するよう構成されてもよい。他の例では、トリガイベントハンドラ922は、コマンド又は通信の実行をスキップするよう構成されてもよい。当該具体例は、リターン値が要求されない場合に適用されてもよい。さらなる他の例では、実行は、“JMP”命令を用いてリペアルーチンのアドレスに実行を送信するなどによって、新たな位置に転送されてもよい。
動作について、O/S下位トラップエージェント920及びトリガイベントハンドラ922は、電子デバイス901上で実行されてもよい。O/S下位トラップエージェント920は、電子デバイス901のオペレーティングシステムのレベルの下位で実行されてもよい。さらに、トリガイベントハンドラ922はまた、電子デバイス901のオペレーティングシステムのレベルの下位で実行されてもよい。トリガイベントハンドラ922は、PRCS926に設定するフラグ1002又はエントリ1014を決定するため、セキュリティルール908又はプロテクションサーバ202を照会してもよい。トリガイベントハンドラ922は、PRCS926に設定するフラグ1002又はエントリ1014をO/S下位トラップエージェント920に指示してもよい。使用中のアプリケーション910、検出されたマルウェアの他の通知、以前にトリガされたイベント又は電子デバイス901のアドミニストレータ設定などの検出される各種条件に応じて、O/S下位エージェント920及びトリガイベントハンドラ922は、電子デバイス901の動作中に動的にPRCS926のトリガフラグ1002を変更し、又は新たなエントリ1014を追加してもよい。当該動的な変更の基礎となる情報は、例えば、O/S下位トラップエージェント920又はO/S内エージェント919などから得られてもよい。PRCS926のエントリ1014は、リソース1004又はリソースタイプ1006に従って特定されてもよい。トリガタイプ1008は、以降のトラップイベントを同期的又は非同期的に設定するよう設定されてもよい。トリガ時期条件1010は、トリガ実行段階102と同様に、インターセプトされたリクエストが何れの状況においてトリガイベントを生成するか設定するよう設定されてもよい。
PRCS926のエントリは、システム900により遭遇する各種条件に応じて動的にイネーブル又は非イネーブルとされてもよい。例えば、O/S下位トラップエージェント920は、トラップされる試行されたアクセスが多くの偽陽性により頻繁に行われるためコストのかかるトラップ処理を、電子デバイス901がマルウェアの攻撃を受けているという通知をトリガイベントハンドラ922が受信するまで非イネーブルとしてもよい。その後、O/S下位トラップエージェント920は、トラップ処理をイネーブルとしてもよい。一実施例では、当該条件の下、1以上のプロセッサリソース924上の過剰なトラップが、有害な電子デバイス901から未知のマルウェアアクションを阻止するためイネーブルとされてもよい。このような過剰なトラップは、プロセッサの実行環境全体、仮想化されたプロセッサ、スレッド、プロセス又はアプリケーションを実質的にシャットダウンするため延長されてもよい。
プロセッサリソース924に対するリクエストは、アプリケーション910、ドライバ911又はオペレーティングシステム913などから、システム900のオペレーティングシステムのレベルにおいてエンティティから発生してもよい。当該リクエストは、プロセッサリソース924にわたされるが、O/S下位トラップエージェント920によりインターセプトされてもよい。さらに、情報又は通信は、各種プロセッサリソース924を介しプロセッサから生成されてもよい。情報又は通信は、O/S下位トラップエージェント920によりインターセプトされてもよい。
O/S下位トラップエージェント920は、PRCS926を利用して、情報又は通信がPRCS926のエントリ1014の何れかのトリガ時期フィールド1014に一致する場合、リソースのアクセスをトラップし、その後にトリガイベントを生成してもよい。トリガフラグ1002が“ON”に設定されることによりイネーブルとされたエントリ1014は、試行されたアクセス、情報又は通信に一致してもよい。アクセスされるリソースは、リソースフィールド1004及び/又はリソースタイプフィールド1006と比較されてもよい。アクセスされるリソースが当該フィールドに一致する場合、トリガ時期条件1010が評価されてもよい。トリガ時期条件1010がリクエストに関する情報又はシステム情報に一致する場合、PRCS926は、トリガイベントを生成してもよい。トリガ実行段階1012は、トリガイベントを生成する時期を決定するのに利用されてもよい。例えば、トリガイベントは、命令フェッチ前、命令フェッチ後、実行後、以降のライトのためメモリがアクセスされた後、又はレジスタなどの他のリソースがライトのためアクセスされた後に生成されてもよい。さらに、トリガイベントは、インタラプトがインタラプトテーブルに送信又は書き込まれる前後に、“Interrupt_Sleep”などのプロセッサ間インタラプトなどの試行された情報の通信又は生成に対して生成されてもよい。生成されたトリガイベントは、トリガタイプ1008に応じて同期的又は非同期的であってもよい。O/S下位トラップエージェント920は、同期的トリガイベントが生成される場合、試行されたリソースのアクセスの実行又は通信の生成を停止し、イベントの処理を保留してもよい。O/S下位トラップエージェント920は、非同期的トリガイベントが生成される場合、試行されるリソースのアクセスの実行又は通信の生成を許可してもよい。O/S下位トラップエージェント920は、当該試行の発信元のメモリアドレス、結果が書き込まれる場所又は他の何れか適切な情報など、試行に関する追加的なコンテクスト情報をトリガイベントに追加してもよい。
O/S下位トラップエージェント920は、トリガイベントが疑わしいか決定するため、トリガイベントに関する情報を含むものであってもよい。例えば、O/S下位トラップエージェント920は、試行されるアクセスがメモリの何れの部分から行われたかの判断などの情報を決定してもよい。メモリの当該部分は、電子デバイス903上で実行される既知のプロセス、アプリケーション又はプログラムに対してトリガイベントハンドラ922により相互に関連付けされてもよい。試行されたアクセスが未知の又は未認証のプロセス、アプリケーション又はプログラムから発生した場合、当該試行は疑わしいものであるかもしれない。トリガイベントハンドラ922は、当該相互関係を決定するため、O/S内セキュリティエージェント919からの情報を利用してもよい。他の例では、O/S下位トラップエージェント920は、状態マシーンに記録されたものなど、以前にトリガされたイベントに関する情報を提供してもよい。現在トリガされたイベントに関連する以前のトリガイベントは、試行が疑わしいかに関するコンテクスト情報を提供してもよい。
O/S下位トラップエージェント920は、トリガイベントをトリガイベントハンドラ922をわたし、トリガイベントハンドラ922は、セキュリティルール908に従ってO/S内エージェント919からのコンテクスト情報及び/又はトリガイベントの情報を評価することによって、イベントを処理してもよい。結果としての適切なアクションが決定され、トラップされた試行に適用するため、O/S下位トラップエージェント920に送り返してもよい。当該アクションは、試行の許可、命令の実行の拒絶、又はマルウェアの動作を回避するための異なるデータ若しくは命令の置換を含むものであってもよい。
O/S下位トラップエージェント920は、以降に試行されたアクセスをトラップする際に以降の参照のためトリガイベントを格納してもよい。例えば、悪意ある処理は、複数の命令がプロセッサリソース924により実行されることを要求してもよい。従って、当該悪意ある動作の各ステップは、PRCS926において別々のエントリ1014に反映されてもよい。O/S下位トラップエージェント920は、それ自体は悪意はないが、以降のステップと関連するときにのみ悪意ある処理の第1ステップをトラップしてもよい。この場合、当該ステップのエントリ1014は、O/S下位トラップエージェント920又はPRCS926が以前の処理された試行を認識するように、条件が状態マシーンに単に記録されるとき、非同期的にトリガするよう設定されてもよい。悪意ある処理の第2ステップのトラップは、第1ステップのトラップをトリガ時期条件1010として有してもよい。
図11は、電子デバイスのセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するための方法1100の実施例である。ステップ1105において、セキュリティルールは、ステップ1110において、何れのプロセッサリソース又はプロセッサ通信がセキュアにされるべきか判断するためアクセスされてもよい。電子デバイスのオペレーティングシステムのレベルの下位で動作するトラップエージェントは、何れのリソース及び通信をトラップするか決定してもよい。当該トラップエージェントは、例えば、プロセッサのバーチャルマシーンモニタ、ファームウェア又はマイクロコードなどにおいて実行されてもよい。
ステップ1115において、トラップされるリソース又は通信に対応するエントリが、指定された条件の下で指定されたリソース又は通信の処理、アクセス又は他の利用をトラップするよう構成されてもよいプロセッサリソース制御構造に書き込まれてもよい。PRCSのエントリは、リソースの識別情報、リソースタイプ、イベントがトリガされる条件、トリガが非同期的又は同期であるか否か、存在する場合に何れの実行段階において試行されたアクセス若しくは通信がトリガイベントを生じさせるべきかと共に書き込まれてもよい。ステップ1120において、PRCSのエントリはまた、当該エントリがトラップのためアクティブ化されるか否か示すトリガ若しくはイネーブルフラグと共に書き込まれてもよい。トリガフラグが設定されていない場合、エントリは休止状態とされ、試行されたリソースのアクセスをトラップするのに利用されなくてもよい。
ステップ1125において、リソースへのアクセス又は通信の生成がモニタされてもよい。当該モニタは、PRCSを介し行われてもよい。電子デバイスのエンティティは、プロセッサ通信を生成するための試行又はプロセッサリソースにアクセスするための試行を試みてもよい。リソースにアクセスするための試行は、電子デバイスのオペレーティングシステムのレベルから発信されてもよい。リソースにアクセスするための命令、コマンド又は他の試行が、エントリがアクティブ化されたPRCSのエントリのリソース識別子に一致する場合、当該試行はトラップされてもよい。同様に、エントリがアクティブ化されたPRCSのエントリのリソース識別子に一致するプロセッサ通信が生成される場合、当該試行はトラップされてもよい。一実施例では、リソースにアクセスし、又は通信を生成するための試行は、トリガ時期を指定する追加的な基準が満たされる場合にトラップされてもよい。例えば、制御レジスタの試行されたライトは、制御レジスタがこれまで書き込みされているとトラップされてもよい。他の例では、制御レジスタの試行されたライトは、制御レジスタが特定の値により書き込まれるとトラップされてもよい。
ステップ1130において、試行されたアクセス又は通信がトラップされたか判断されてもよい。何れの試行もトラップされていない場合、ステップ1140において、PRCSのエントリが調整される必要があるか判断されてもよい。当該調整は、当該エントリのイネーブル化又は非イネーブル化、新たなエントリの追加又は基準若しくはエントリの設定の調整を含むものであってもよい。方法1100は、その後にステップ1125に戻ってもよい。当該調整は、例えば、電子デバイスにおいて検出された新たなマルウェアの脅威、時間の経過、以前にトラップされた試行又はアドもニスとレータの設定などに基づくものとすることができる。
ステップ1145において、試行がトラップされた場合、結果としてのトリガイベントが同期的又は非同期的であるべきか判断されてもよい。トリガタイプが同期的でない場合、方法1100は、ステップ1150に移行するのとパラレルにステップ1125に戻ってもよい。トリガタイプが同期的である場合、ステップ1150において、トラップされた試行に関する情報が格納されてもよい。当該情報は、例えば、トラップされた試行がトリガイベントを生じさせるべきかの以降の判定において状態マシーンにより利用されてもよい。ステップ1155において、トリガのすべての条件が充足されているか判断されてもよい。当該条件は、例えば、特定の値がリソースに書き込まれることを要求してもよいし、又は当該リクエストがメモリの特定位置から発信された(又は発信されていない)ものであってもよい。さらに、当該条件は、他の試行が以前にトラップされたことを要求してもよい。当該試行に関する情報がアクセスされ、状態マシーンに格納されてもよい。トリガのすべての条件が充足されない場合、方法1100はステップ1125に戻ってもよい。
トリガのすべての条件が充足される場合、ステップ1155において、存在する場合には実行の特定の段階においてトリガイベントが生成されるべきか判断されてもよい。当該段階は、例えば、試行の命令がフェッチされる前、命令がフェッチされた後、命令が実行された後、メモリが結果を読み込むためアクセスされた後、又は値が書き込みされた後などを含むものであってもよい。さらに、当該段階は、プロセッサ間インタラプトが実行される前後を含むものであってもよい。指定された実行段階が実現されると、当該試行のトリガイベントが、ステップ1165において生成されてもよい。試行のソース若しくはデスティネーションアドレスや関係するリソースなどのコンテクスト情報が、ステップ1175におけるハンドラへの配信のため、ステップ1170においてトリガイベントと共に含まれてもよい。
ステップ1180において、セキュリティルールは、トリガイベントが疑わしいか、アドミニストレータ設定により許可されていないか、又はマルウェアを示しているか判断するため、ステップ1185において照会されてもよい。トリガイベントのもの、電子デバイスのオペレーティングシステムにおける他のイベント又はアドミニストレータ設定などのコンテクスト情報が、トリガイベントに対するセキュリティルールの適用を評価するのに利用されてもよい。トリガイベントが疑わしくない場合、ステップ1187において、トリガエージェントに通知され、方法1100はステップ1125に戻ってもよい。トリガイベントが疑わしい場合、ステップ1190において、結果としての訂正アクションはトラップエージェントに送信されてもよい。このような訂正アクションは、リソースにアクセスするため、又はプロセッサ通信を生成するための特定の試行に依存してもよい。例えば、悪意ある命令は、リード又はライトスプーフされる値を有してもよいし、又はジャンプ命令がリペアルーチンにリダイレクトされてもよい。ステップ1195において、訂正アクションが適用されてもよい。方法1100はステップ1125に戻ってもよい。
図12は、電子デバイス1201上のO/S下位トラップを利用してメモリをセキュアにするソフトウェアアクセスを規制するためのシステム1200の実施例である。システム1200は、オペレーティングシステム1213などの電子デバイス1201のオペレーティングシステム上で実行されるソフトウェアベースエンティティからのメモリにアクセスするための悪意ある試行を検出するため、電子デバイス1201上で動作するよう構成されるO/S下位セキュリティエージェント1220を有してもよい。さらに、O/S下位セキュリティエージェント1220は、1以上のセキュリティルール1208及びメモリマップ1206を利用して、トラップする試行されたメモリのアクセスと、トランプされる処理に対応して生成されるトリガイベントをどのように処理するかとを決定するよう構成されてもよい。O/S下位セキュリティエージェント1220は、トリガイベントについて許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
電子デバイス1201は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901及び/又はこれらの何れかの組み合わせの機能を実現するため全体的又は部分的に実現又は構成されてもよい。電子デバイス1201は、物理メモリ1203などのメモリに接続された1以上のプロセッサ1202を有してもよい。プロセッサ1202は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902又はこれらの何れかの組み合わせの機構を全体的又は部分的に実現するよう構成されてもよい。物理メモリ1203は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス1201は、1以上のセキュリティルール1221に接続されるO/S内セキュリティエージェント1219を含みうるオペレーティングシステム1213を有してもよい。オペレーティングシステム1213は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。O/S内セキュリティエージェント1219は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919又はこれらの何れか適切な組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
O/S下位セキュリティエージェント1220は、図1のO/S下位トラップエージェント104若しくはトリガイベントハンドラ108、図2のSVMM216若しくはSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440、442、O/S下位エージェント450若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708若しくはO/S下位エージェント712、図9のO/S下位トラップエージェント920若しくはトリガイベントハンドラ922及び/又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。
セキュリティルール1208は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908及び/又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。セキュリティルール1221は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721、図9のセキュリティルール921及び/又はこれらの何れかの組み合わせを実現するよう構成されてもよい。
O/S下位セキュリティ1220は、電子デバイス1201のメモリへのアクセスをインターセプトするよう構成されてもよい。当該メモリは、例えば、物理メモリ1203の試行されたアクセスのアクセス又は仮想化メモリ1204の試行されたページのアクセスなどを含むものであってもよい。当該試行されたアクセスは、アプリケーション1210やドライバ1211などの電子デバイス1201上で実行されるオペレーティングシステム1213を利用したエンティティ又はオペレーティングシステム1213から発信されてもよい。
一実施例では、O/S下位セキュリティ1220によりセキュアにされるメモリは、仮想化メモリ1204を含むものであってもよい。仮想化メモリ1204は、物理メモリ及び/又はストレージから抽象化されたオペレーティングシステム1213、アプリケーション1210又はドライバ1211などのエンティティに利用可能なメモリを含むものであってもよい。仮想化メモリ1204は、使用される実際のスペースは物理メモリ1203などの実際の物理メモリ及び/又はディスク上などのストレージにおいて別々に展開されてもよいが、オペレーティングシステム1213、アプリケーション12010又はドライバ1211などのエンティティへの連続的なメモリブロックとして出現するようにしてもよい。仮想化メモリ1204は、プロセッサ1202の拡張に従って仮想化されてもよい。仮想化メモリ1204のアドレススペースは、メモリページに分割されてもよい。メモリページはそれぞれ、4キロバイトなどの等しいサイズを有してもよい。電子デバイス1201は、ページテーブルを利用して仮想化メモリ1204のバーチャルアドレスを、物理メモリ1203又はストレージのアドレスなどのメモリの物理的アドレスに変換するよう構成されてもよい。電子デバイス1201は、バーチャルメモリ1204のバーチャルアドレスを物理メモリ1203などのメモリの物理的アドレス及び/又はストレージのアドレスに変換するよう構成されるメモリマネージメントユニット(MMU)1214を有してもよい。バーチャルメモリ1204のページはインデックス化されてもよい。バーチャルメモリ1204のページの試行されたアクセスは、当該ページの試行されたリード、ライト又は実行を含むものであってもよく、O/S下位セキュリティエージェント1220は、当該試行をトラップするよう構成されてもよい。一実施例では、バーチャルメモリ1204のページは、物理メモリのアドレス又はストレージのアドレスに対応するものであってもよい。他の実施例では、バーチャルメモリ1204の各ページは、物理メモリのアドレスに対応するものであってもよい。さらなる他の実施例では、オペレーティングシステム1213の特定部分などの特定コンテンツを含むページがピン留めされ、電子デバイス1201の実行中は変更されないようにしてもよい。
他の実施例では、O/S下位セキュリティエージェント1220によりセキュアにされるメモリは、物理メモリ1203を含むものであってもよい。物理メモリ1203は、規定された要素を含むメモリレンジのベースアドレスであってもよい物理メモリ1203の特定のアドレスを示すマーカ(A)、(B)、(C)、(D)、(E)、(F)、(G)、(H)、(I)、(J)及び(K)により示されるように、物理メモリのアドレスを介しアクセスされてもよい。物理メモリ1203は、特定のメモリアドレスの試行されたリード、ライト又は実行を介しアクセスされてもよく、O/S下位セキュリティエージェント1220は、当該試行をトラップするよう構成されてもよい。例えば、試行されたライトは、“MOV Addr1,Value”の命令の形態をとるものであってもよく、変数“Value”により表される値が、“Addr1”により表される特定のメモリアドレスに書き込まれてもよい。物理メモリ1203への何れかの書き込み命令が利用されてもよい。試行されたリードは、“MOV Value,Addr1”などの命令の形態をとるものであってもよく、変数“Value”により表される値が、“Addr1”により表される特定のメモリアドレスからリードされる。物理メモリ1203のアドレスからの何れかのリード命令が利用されてもよい。試行される実行は、“MOV EIP,Addr1”などの物理メモリ1203のアドレスによって“EIP”などの命令ポインタレジスタをロードする命令の形態をとるものであってもよい。当該命令は、“Addr1”により表されるアドレスから始まるコードを実行するよう構成されてもよい。メモリのアドレスを実行する何れかの命令が利用されてもよい。
O/S下位セキュリティエージェント1220は、バーチャルメモリ1204への試行されたアクセスをインターセプトするよう構成されてもよい。さらに、O/S下位セキュリティエージェント1220は、物理メモリ1203への試行されたアクセスをインターセプトするよう構成されてもよい。一実施例では、バーチャルメモリ1204に対するリクエストはインターセプトされず、MMUがバーチャルメモリ1204のページを物理メモリ1203のアドレスに変換した後に物理メモリ1203の以降の対応する試行されたアクセスにおいて、O/S下位セキュリティエージェント1220は、物理メモリに試行されたアクセスをインターセプトするよう構成されてもよい。他の実施例では、試行されたアクセスは、バーチャルメモリ1204を介し変換されることなく物理メモリ1203から直接行われてもよく、O/S下位セキュリティエージェント1220は、試行されたアクセスをインターセプトするよう構成されてもよい。さらなる他の実施例では、バーチャルメモリ1204に対して行われる試行されるアクセスはインターセプトされるが、O/S下位セキュリティエージェント1220は、物理メモリ1203のアドレスの以降のアクセスをインターセプトするよう構成されなくてもよい。
O/S下位セキュリティエージェント1220は、O/S内セキュリティエージェント1219に通信接続されてもよい。O/S下位セキュリティエージェント1220は、O/S内セキュリティエージェント1219から電子デバイス1201のメモリの試行されるアクセスに関するコンテクスト情報を受信するよう構成されてもよい。O/S内セキュリティエージェント1219により提供されるコンテクスト情報は、電子デバイス1201のメモリの特定のアクセスを試行したエンティティの身元を含むものであってもよい。
O/S下位セキュリティエージェント1220は、メモリマップ1206に通信接続されるか、又はこれを含むものであってもよい。メモリマップ1206は、ファイル、レコード、データ構造又は他の適切なエンティティにより実現されてもよい。メモリマップ1206は、メモリにおける電子デバイス1201の各種エンティティの位置に関する情報を含むものであってもよい。例えば、プロセスが実行のため電子デバイス1201のメモリにロードされる場合、メモリマップ1206は、仮想化メモリ1204の何れのメモリページ又は物理メモリ1203の何れのアドレスレンジが当該プロセスを含むかに関する情報を有してもよい。電子デバイス1201のメモリの仮想化の実装に応じて、一部のコンテンツがディスクなどのストレージにロードされてもよいため、プロセスのコンテンツのすべてが物理メモリ1203にロードされてもよいし、又はそうでなくてもよい。当該コンテンツがアクセスされるため、それらは物理メモリ1203にロードされてもよい。この場合、メモリマップ1206は、コンテンツが格納されるアドレス、物理メモリ1203又はディスクなどのストレージに格納されるかに関する情報を含むものであってもよい。O/S下位セキュリティエージェント1220は、メモリマップ1206を利用してバーチャルメモリ1204のページ又は物理メモリ1203のアドレスにおける何れか所与のコンテンツの身元又はオーナーを決定するよう構成されてもよい。O/S下位セキュリティエージェント1220は、例えば、オペレーティングシステムの処理をプロファイルし、その後に各種センシティブコンポーネントがメモリに何れに配置されるかを決定することによって、メモリマップ1206を構成してもよい。オペレーティングシステム1213のカーネルのロード、又はカーネルモード命令の実行など、メモリにアクセスするための試行が行われると、O/S下位セキュリティエージェント1220は、オペレーティングシステム1213の何れの部分がロード又は実行されているか判断するため、O/S内セキュリティエージェント1219と通信するよう構成されてもよい。他の例では、O/S下位セキュリティエージェント1220は、当該バーチャルメモリ1204のページのメモリレンジのコンテンツのハッシュ又はデジタルシグネチャを決定するよう構成されてもよい。ハッシュ又はデジタルシグネチャは、セキュリティルール1208に含まれるか、又はプロテクションサーバ202から取得されてもよい既知の値に対して比較されてもよい。当該既知の値は、例えば、オペレーティングシステム1213の何れの部分が特定されたかという以前の特徴付けの結果であってもよい。マッピング対象の要素は、セキュリティルール1208により決定されてもよい。O/S下位セキュリティエージェント1220は、メモリマップ1206の要素が電子デバイス1201のメモリのある場所から他の場所にコピーされるとき、当該要素の動きを追跡するよう構成されてもよい。
図13は、メモリマップの実施例の図である。一実施例では、バーチャルメモリマップ1302は、バーチャルメモリの各自のポジションを介し追跡される各要素のマッピングを含むものであってもよい。他の実施例では、物理メモリマップ1304は、物理メモリの各自のポジションを介し追跡される各要素のマッピングを含むものであってもよい。各種実施例では、バーチャルメモリマップ1302及び物理メモリマップ1304は、要素が双方のマッピングで追跡されるように一緒にマッピングされてもよい。
バーチャルメモリマップ1302は、10個の異なるバーチャルメモリページを反映してもよい。バーチャルメモリマップ1302は、例えば、ページディレクトリなどのカーネルオペレーティングシステムのデータ構造がメモリページ1及びメモリページ2に検出されてもよいことなどを示すものであってもよい。他の例では、“Fn1”と呼ばれる特定のプロセス、ファンクション又はルーチンの要素が、メモリページ4〜6に検出されてもよい。さらなる他の例では、システムサービスディスパッチテーブル(SSDT)のパーミッションのデータ構造がページ8に検出されてもよい。さらなる他の例では、“Fn2”と呼ばれる特定のプロセス、ファンクション又はルーチンの要素が、メモリページ8及びメモリページ9に検出されてもよい。
物理メモリマップ1304は、物理メモリによって要素の位置を反映してもよい。物理メモリの要素の一部は、メモリにおいて不連続なセグメント又はブロックに展開されてもよい。さらに、物理メモリの要素の一部は、任意の順序によりメモリに展開されてもよい。各セグメントのサイズは可変であってもよい。セグメントは、ベースアドレスからのオフセットのアドレスから開始されてもよい。図13に示される一例となるベースアドレスは、FFxFFFのアドレスで終了する00x000である。物理メモリの各種セグメントのスタートを示すアドレスは、(A)〜(O)により示される。物理メモリの複数のセグメント内に含まれる要素について、これらの要素の順序が留意されてもよい。物理メモリでは、ある要素の複数のセグメントがポインタにより一緒にリンクされてもよく、要素の1つのセグメントのエンドが当該要素の次のセグメントを指し示すようにしてもよい。
例えば、Fn1は、(A)と(B)、(J)と(K)、及び(M)と(N)との間のセグメントにマッピングされてもよい。他の例では、SSDTパーミッションは、(G)と(H)との間のセグメントにマッピングされてもよい。さらなる他の例では、ページディレクトリデータ構造が、(O)とFFxFFF、(F)と(G)、及び(I)と(J)との間のセグメントにマッピングされてもよい。さらなる他の例では、Fn2は、(H)と(I)、及び(B)と(C)との間のセグメントにマッピングされてもよい。
図12に戻って、O/S下位セキュリティエージェント1220は、メモリの何れの部分をプロテクトするか、及びそれらをどのようにプロテクトするかを決定するため、セキュリティルール1208を照会するよう構成されてもよい。例えば、セキュリティルール1208は、ページディレクトリデータ構造が電子デバイス1201の特定の特権が付与されたエンティティによってのみ書き込み可能であることを示すよう構成されてもよい。従って、ページディレクトリデータ構造への書き込みの試みがトラップされ、当該書き込みを試みた要素が、安全であるか、未知であるか、又は安全でないと知られているか判断するため調べられてもよい。O/S下位セキュリティエージェント1220は、ページディレクトリデータ構造がメモリに配置されている場所を決定するため、メモリマップ1206を照会するよう構成されてもよい。O/S下位セキュリティエージェント1220は、例えば、バーチャルマシーンモニタにおいて完全に又は部分的に実現される場合、O/S下位セキュリティエージェント1220は、バーチャルメモリ1204のメモリページ1及び/又は2への何れかの試行されたライトをトラップするため、制御構造のフラグを設定するよう構成されてもよい。他の例では、O/S下位セキュリティエージェント1220がマイクロコードにより完全に又は部分的に実現される場合、O/S下位セキュリティエージェント1220は、物理メモリ1203のアドレス(O)とFFxFFF、(F)と(G)、及び(I)と(J)との間のアドレスレンジ内のメモリアドレスへの何れか試行されたライトをトラップするため、制御構造のフラグを設定するよう構成されてもよい。
他の例では、セキュリティルール1208は、Fn1が電子デバイスの特定の特権が付与されたエンティティによってのみコールされてもよいことを示すよう構成されてもよい。従って、Fn1を実行するための試行はトラップされ、Fn1をコールする要素は、安全であるか、未知であるか、又は安全でないと知られているか判断するため調べられてもよい。O/S下位セキュリティエージェント1220は、Fn1がメモリにある場所を決定するため、メモリマップ1206を照会するよう構成されてもよい。O/S下位セキュリティエージェント1220が、例えば、バーチャルマシーンモニタにおいて完全に又は部分的に実現される場合、O/S下位セキュリティエージェント1220は、バーチャルメモリ1204のメモリページ4、5及び/又は6の試行された実行をトラップするため、制御構造のフラグを設定するよう構成されてもよい。他の例では、O/S下位セキュリティエージェント1220がマイクロコードにより完全に又は部分的に実現される場合、O/S下位セキュリティエージェント1220は、物理メモリ1203のメモリアドレスの何れか試行された実行をトラップするため、制御構造のフラグを設定するよう構成されてもよい。Fn1の異なる部分が別々に実行されるいくつかのケースでは、O/S下位セキュリティエージェント1220は、物理メモリ1203の(A)と(B)、(M)と(N)、アドレス(O)とFFxFFF、(F)と(G)、(J)と(K)又は(I)と(J)の間のレンジの範囲内の何れかのメモリアドレスの試行された実行をトラップするよう構成されてもよい。
一実施例では、O/S下位セキュリティエージェント1220は、何れのエンティティがメモリへのライトのためのコールを行ったか判断するため、O/S内セキュリティエージェント1219を照会するよう構成され、その後、それは当該エンティティがライトを行うことが許可されているか否か判断するのに利用されてもよい。他の実施例では、O/S下位セキュリティエージェント1220は、リクエストの発信元の仮想化メモリ1204のメモリページを決定し、メモリマップ1206を照会して、当該メモリページがそこにマッピングされた何れかの要素に関連付けされているか判断するよう構成されてもよい。さらなる他の実施例では、O/S下位セキュリティエージェント1220は、要求元の要素のメモリページのハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャに対して比較するよう構成されてもよい。
O/S下位セキュリティエージェント1220がマイクロコードによって完全に又は部分的に実現される場合、O/S下位セキュリティエージェント1220は、当該ライトを試みた命令のアドレスを決定するよう構成されてもよい。一実施例では、O/S下位セキュリティエージェント1220は、命令が物理メモリ1203の何れで行われたか判断するため、命令ポインタを調べることによって、当該決定を行うよう構成されてもよい。他の実施例では、メモリマップ1206にアクセスすることによって、O/S下位セキュリティエージェント1220は、アドレスに関連するメモリマップ1206からの要素を決定するよう構成されてもよい。さらなる他の実施例では、O/S下位セキュリティエージェント1220は、要求元の要素のハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャと比較するよう構成されてもよい。
メモリの試行されたアクセスがトラップされると、O/S下位セキュリティエージェント1220は、特定された要求元のエンティティに基づきトラップされた試行をどのように処理するか判断するため、セキュリティルール1208にアクセスするよう構成されてもよい。セキュリティルール1208は、例えば、オペレーティングシステム1213の指定された特定のカーネル部分のみがFn1をコール及び実行可能であるか、又は安全であると知られる及びホワイトリストにあるエンティティのみがSSDTのパーミッションに書き込み可能であることを規定してもよい。O/S下位セキュリティエージェント1220は、その後、リクエストを進捗することの許可、当該リクエストの拒絶、レスポンス又は書き込まれた値のスプーフ、又は訂正プロセスの実行などの何れか適切なアクションを実行するよう構成されてもよい。
動作について、O/S下位セキュリティエージェント1220は、オペレーティングシステム1213などの電子デバイス1201のオペレーティングシステムのレベルの下位で実行されてもよい。O/S下位セキュリティエージェント1220は、電子デバイス1201の何れのメモリリソースをプロテクトするか判断するため、セキュリティルール1208にアクセスしてもよい。O/S下位セキュリティエージェント1220は、メモリマップ1206のコンテンツを決定、展開及び/又は投入してもよい。これを実行するため、O/S下位セキュリティエージェント1220は、メモリマップ1206に情報を投入するため、セキュリティルール1208、プロテクションサーバ202又は他の何れか適切な情報のソースにアクセスしてもよい。O/S下位セキュリティエージェント1220は、メモリマップ1206のメモリのコンテンツ及びオーナーシップをマッピングするため、オペレーティングシステム1213、アプリケーション1210又はドライバ1211などのオペレーティングシステムのレベルにおけるエンティティからの物理メモリ1203又はバーチャルメモリ1204のリクエストをインターセプトしてもよい。O/S下位セキュリティエージェント1220は、メモリマップ1206が投入されるように、何れのエンティティがメモリにロードされているか判断するため、O/S内セキュリティエージェント1219にアクセスしてもよい。メモリマップ1206は、物理メモリ1203、バーチャルメモリ1204及び/又はこれら2つの間のマッピングのためのメモリマッピングを有してもよい。
O/S下位セキュリティエージェント1220は、バーチャルメモリ1204及び/又は物理メモリ1203の何れの部分をプロテクトするか判断するため、セキュリティルール1208を照会してもよい。セキュリティルール1208は、メモリに対するプロテクションが各種考慮に応じてO/S下位セキュリティエージェント1220によってイネーブル化又は非イネーブル化されてもよい動的ベースによって、メモリの一部がセキュアにされるべきであることを指定してもよい。このような考慮は、例えば、アドミニストレータの設定、悪意ある又は疑わしい動作の検出、時間、メモリの以前に検出されたアクセス又は他の何れか適切な基準などを含むものであってもよい。電子デバイス1201のメモリをプロテクトすることが、計算リソースに関してコストのかかるものである場合、当該動的なイネーブル化及び非イネーブル化は、O/S下位セキュリティエージェント1220が他のタスクを実行する電子デバイス1201の能力に対する副次的影響を軽減しながら、電子デバイス1201のメモリの重要な部分をより良好にセキュアにすることを可能にするものであってもよい。例えば、オペレーティングシステム1213のカーネルコードのコンテンツを含むメモリは常に、O/S下位セキュリティエージェントによりプロテクトされる一方、サードパーティのアプリケーション1210のコードのコンテンツを含むメモリは、マルウェアが存在するか、又はサードパーティアプリケーション1210に影響を与えうるという他の通知に応答してのみプロテクトされるようにしてもよい。
O/S下位セキュリティエージェント1220は、物理メモリ1203及び/又はバーチャルメモリ1204の試行されたアクセスをトラップするため、制御構造のフラグを設定してもよい。一実施例では、オペレーティングシステム1213のエンティティからトラップ対象に指定されたバーチャルメモリ1204のメモリページに対するリクエストが行われると、O/S下位セキュリティエージェント1220は、試行されたリクエストをインターセプトしてもよい。他の実施例では、バーチャルメモリ1204のメモリページに対するリクエストがされると、O/S下位セキュリティエージェントは、当該リクエストがMMU1214によって物理メモリ1203のアドレスに対するリクエストに変換され、これにより、O/S下位セキュリティエージェントが試行されたリクエストをインターセプトすることを可能にしてもよい。さらなる他の実施例では、オペレーティングシステム1213のエンティティからのリクエストが物理メモリ1203のアドレスに対して直接的に行われる可能性があるため、O/S下位セキュリティエージェント1220は、試行されたリクエストをインターセプトしてもよい。
リクエストがインターセプトされると、O/S下位セキュリティエージェント1220は、何れか適切な機構を利用して、インターセプトされたメモリのリクエストを評価してもよい。セキュリティルール1208は、試行が疑わしく、電子デバイス1201のリソースを使用するマルウェアによる悪意ある試行を示すか判断するため利用されてもよい。セキュリティルール1208は、例えば、リード、ライト又は実行が試行されたか、何れのエンティティが当該試行を行ったか、アクセスされたメモリアドレス若しくはページ、同一の要求元による以前の試行若しくはアクション、電子デバイス1201のアドミニストレータによるセキュリティ設定、電子デバイス1201のユーザに基づくより制限的な又はより制限的でないルール、メモリ位置及び/若しくはデジタルシグネチャ若しくはハッシュによって若しくは関連するページ若しくはメモリアドレスにより決定されるような要求元の身元などの考慮を含むものであってもよい。
例えば、バーチャルメモリ1204のページ2又は物理メモリ1203のアドレス(J)におけるページディレクトリデータ構造の試行されたライトが、O/S下位セキュリティエージェント1220によりインターセプトされてもよい。当該ライトが未知のプロセスのメモリの一部から到来したものである場合、当該ライトはO/S下位セキュリティエージェント1220により疑わしいと判断されてもよい。しかしながら、試行されたライトが既知のオペレーティングシステム1213のカーネルの検証された部分から到来したものである場合、当該試行は、疑わしいものでないと判断されてもよい。同様に、バーチャルメモリ1204のページ8又は物理メモリ1203のアドレス(H)におけるFn2の試行された実行がインターセプトされてもよい。試行された実行がユーザ入力から行われたものである場合、当該実行は、疑わしくないと判断されてもよい。試行された実行が他のプログラムのメモリからのものであり、当該プログラムが承認されたリストにない場合、当該試行は、疑わしい又は悪意あるものと判断されてもよい。
他の例では、Fn1が互換性のため他のアプリケーションに自らのキャッシュを通常明らかにするウェブブラウザである場合、O/S下位セキュリティエージェント1220は、Fn1のメモリページ又はメモリアドレスの指定された部分が他のアプリケーションにより読み込まれることを可能にするものであってもよい。しかしながら、Fn1がプライベートに維持されるべきメタデータ又は他の情報を含む場合、O/S下位セキュリティエージェント1220は、Fn1自体以外の何れかのプロセスからのリードから、Fn1のメモリページ又はメモリアドレスの部分をセキュアにするようにしてもよい。
プログラムが疑わしい、悪意ある又はマルウェアを示していると判断されると、O/S下位セキュリティエージェント1220は、何れか適切な訂正アクションを行うようにしてもよい。O/S下位セキュリティエージェント1220は、例えば、バーチャルメモリ1204のメモリページ2又は物理メモリ1203のアドレス(J)に対するライトリクエストを拒絶し、値が書き込まれたことを示す結果を返すようにしてもよい。当該リクエストを生成するプロセスは、電子デバイス1201のリソースにアクセスするための追加的な試行についてモニタされるか、停止されるか、又は電子デバイス1201からクリーンされてもよい。他の例では、バーチャルメモリ1204のページ8又は物理メモリ1203のアドレス(H)の試行された実行が、代わりにハニーポット又はクリーンアッププロセスの実行に関するものであってもよい。
O/S下位セキュリティエージェント1220によりセキュアにされるメモリのコンテンツは、マルウェアにより攻撃されてもよいデータ、コード又は他の何れか有用なシステムリソースを含むものであってもよい。O/S下位セキュリティエージェント1220は、電子デバイス1201上で実行されるプロセスを示す機構をリード、ライト又はフックなどすることを試みるマルウェアに対してメモリのコンテンツをプロテクトし、それのコードをメモリにロードされたアプリケーションの部分に挿入し、又はパーミッションを変更してバーチャルメモリ1204についてマッピングテーブルのフラグにアクセスするようにしてもよい。オペレーティングシステム1213のレベルの下位で実行することによって、O/S下位セキュリティエージェント1220は、オペレーティングシステム1213のカーネルモードレベルでマルウェアが実行されることを回避してもよい。O/S下位セキュリティエージェント1220は、一部のケースでは、要求元のエンティティの身元が悪意あるものであると以前に決定されたという知識を必要としなくてもよいため、ゼロデイ検出(zero−day detection)を実現してもよい。すなわち、当該エンティティが未知であるという事実が、電子デバイス1201のメモリの一部へのアクセスを拒絶するのに利用されてもよい。オペレーティングシステム1213又はオペレーティングシステム1213上で実行されるアンチウイルス若しくはアンチマルウェアが完全に危険にされされる場合、メモリは、オペレーティングシステムのレベルで実行されるエンティティから完全にロックされてもよい。
O/S下位セキュリティエージェント1220の1つのアプリケーションは、特定のコンテンツのリード、ライト又は実行が特定のメモリページのパーミッションへに対する変更を検出することによって試行される前に、バーチャルメモリ1204のコンテンツの試行されたアクセスを検出するものであってもよい。MMU1214により使用されるメモリテーブルは、メモリ、バーチャルメモリ1204のページ自体、及び/又は物理メモリ1203のアドレスにあってもよい。例えば、“リード”から“ライト”へのプロセスのコードセクションのパーミッションを変更するなど、メモリテーブルの値を変更する試行は、それ自体O/S下位セキュリティエージェント1220によりトラップされてもよい。バーチャルメモリ1204のメモリページ又は物理メモリ1203のアドレスは、O/S下位セキュリティエージェント1220によりセキュアにされてもよく、当該位置にパーミッションに対する新たな値を書き込むためのトラップされる試行に応答して、O/S下位セキュリティエージェント1220は、当該試行の要求元が当該変更を行うことが許可されているか判断してもよい。例えば、プロセスのコードセクションのパーミッションを変更するための当該リクエストが異なるプロセスから発生したものである場合、試行されたパーミッションの変更は拒絶されてもよい。
図14は、電子デバイスの試行されたアクセスのO/S下位トラップを利用してメモリをセキュアにする方法1400の実施例である。ステップ1405において、電子デバイスのバーチャル又は物理メモリが、メモリのコンテンツの身元又はオーナーを決定するためマッピングされてもよい。メモリをマッピングするため、例えば、プロテクションサーバがアクセスされ、メモリのリード、ライト及び実行が追跡され、及び/又はメモリのコンテンツがスキャンされ、当該コンテンツについてシグネチャが生成されてもよい。
ステップ1410において、セキュリティルールが、ステップ1415において、セキュアにされるべき物理メモリのアドレス又はバーチャルメモリのページを決定するためアクセスされてもよい。セキュアにされるメモリは、例えば、セキュリティルール、電子デバイスのユーザ、マルウェアのつうしなどの電子デバイスにおいて観察される他の動作、セキュアにされたメモリにアクセスするための以前の試行又はアドミニストレータ設定などに依存してもよい。セキュアにされるメモリは、電子デバイスの処理の条件が変更されてもよいとき、動的に変更されてもよい。セキュリティルールは、プロテクト対象の電子デバイスのエンティティを指定し、当該エンティティの物理又はバーチャルメモリの位置が、メモリマップにアクセスすることによって決定されてもよい。
ステップ1420において、セキュリティルールの要件に従って、メモリの試行されたアクセスをトラップするため、制御構造においてフラグが設定されてもよい。当該フラグは、バーチャルメモリのページ及び/又は物理メモリのアドレスについて設定されてもよい。フラグは、フラグ付けされるアクセス方法の種類と共に(例えば、リード、ライト又は実行など)、セキュアにされるメモリの指定を含むものであってもよい。ステップ1425において、指定されたタイプの試行されたアクセスが指定されたアドレス又はページに対して行われたものであるか確認するため、セキュアにされたメモリへのアクセスがモニタされてもよい。ステップ1430において、メモリにアクセスするための試行がトラップされたか判断されてもよい。トラップされていない場合、ステップ1435において、セキュアにされるメモリのフラグが変更を要するか判断されてもよい。トラップされている場合、本方法1400はステップ1410に戻り、メモリへのアクセスを保護するためのフラグを更新するため、セキュリティルールにアクセスしてもよい。変更を要しない場合、本方法1400はステップ1425に戻り、セキュアにされたメモリの試行されたアクセスをモニタしてもよい。
メモリにアクセスするための試行がトラップされた場合、ステップ1440において始めて、トラップされた試行が評価されてもよい。当該トラップを評価するため、メモリマップは、当該リクエストが何れから行われたかを決定し、要求元を特定するため照会されてもよい。書き込み対象のデータの値が、そのコンテンツについて決定及び評価されてもよい。リード、ライト又は実行の試行の性質が考慮されてもよい。これらの一例となる考慮は、試行されたアクセスがマルウェアを示しているか判断するため、ステップ1445においてセキュリティルールに関して利用されてもよい。試行されたアクセスがマルウェアを示す場合、ステップ1450において、訂正アクションが実行されてもよい。当該訂正アクションは、共有されたアクセスの拒絶、スプーフされた値のリターン、又はハニーポット又は訂正プロセスの開始を含むものであってもよい。試行されたアクセスがマルウェアを示していない場合、ステップ1455において、当該リクエストは許可されてもよい。本方法1400は、電子デバイスのメモリをセキュアにし続けるため要求されるように、ステップ1425に戻ってもよい。
図15は、電子デバイス1504のオペレーティングシステム1512のカーネルをプロテクトするシステムの実施例である。システム1500は、オペレーティングシステム1512のコンポーネント(ファンクション、データ及び/又は他のコンポーネントなど)とオペレーティングシステムに関連する信頼されたドライバにアクセスするためのマルウェアによる試行に対してプロテクトするために電子デバイス1504上で動作するよう構成されるO/S下位セキュリティエージェント1516を有してもよい。さらに、O/S下位セキュリティエージェント1516は、1以上のセキュリティルール1522を利用して、何れの試行された処理をトラップするか、及び当該トラップされた処理にどのように応答するかを決定するよう構成されてもよい。O/S下位セキュリティエージェント1516は、トラップされた処理について許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
図15に示されるように、電子デバイス1504は、メモリ1508に接続されるプロセッサ1506、1以上のアプリケーション1510、1以上のドライバ1511、オペレーティングシステム1512、O/S下位セキュリティエージェント1516及びセキュリティルール1522を有してもよい。電子デバイス1504は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。プロセッサ1506は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ1508は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくは仮想化メモリ、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。アプリケーション1510は、図1のアプリケーション110、図2のアプリケーション210、図4のアプリケーション410、図7のアプリケーション709、図9のアプリケーション910、図12のアプリケーション1210及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。ドライバ1511は、図1のドライバ111、図2のドライバ211、図4のドライバ411、図7のドライバ711、図9のドライバ911、図12のドライバ1211及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。オペレーティングシステム1512は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。O/S下位セキュリティエージェント1516は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
図15に示されるように、O/S下位セキュリティエージェント1516は、セキュリティルール1522を有してもよい。セキュリティルール1522は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール707、723及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。セキュリティルール1522は、何れか適切な方法により設定されてもよい(例えば、電子デバイス1504のユーザにより設定されたポリシー、電子デバイス1504を含む企業のアドミニストレータにより設定されたポリシー、O/S下位セキュリティエージェント1516の作成者により設定されたポリシーなど)。一部の実施例では、O/S下位セキュリティエージェント1516は、ネットワーク244を介しプロテクションサーバ202からセキュリティルール1522に対する更新又は修正を要求及び/又は受信してもよい(例えば、マルウェアの定義に対する更新のためなど)。
図15に示されるように、セキュリティルール1522は、アクセスマップ1562とポリシー1564とを有してもよい。アクセスマップ1562は、1以上の信頼されるアクセスに関するコンテクスト情報と共に、オペレーティングシステム1512及びドライバ1511の各種コンポーネント(ファンクション、データ及び/又は他のコンポーネントなど)の1以上の信頼されたアクセスを設定するログ、リスト、マップ又は他のデータ構造を有してもよい。図16は、アクセスマップ1562の実施例である。特定の実施例では、アクセスマップ1562は、実質的にマルウェアのないオペレーティングシステム(図18のオペレーティングシステム1812など)と他の電子デバイス(図18の電子デバイス1800など)上のそれの実質的にマルウェアのない信頼されたドライバ(信頼されたドライバ1811など)との実行をシミュレートすることによって生成されてもよい。当該実施例によるアクセスマップ1562の作成は、図18及び19に関して以下においてより詳細に説明される。図16に示されるように、アクセスマップ1562は、1以上のファンクションアクセスサブマップ1602、1以上のデータアクセスサブマップ1604及び/又は1以上のスタックアクセスマップ1606を含むものであってもよい。
ファンクションアクセスサブマップ1602は、オペレーティングシステム1512又は信頼されたドライバ1511の特定のファンクションについて、他の信頼されたファンクションによる特定のファンクションへの信頼されたアクセスを定義してもよい。ファンクションアクセスサブマップ1602はまた、一部の実施例では、信頼されたアクセスのコール元のファンクションが特定のドライバないにあるコードセクション(メモリ位置により特定されるように)を含むコンテクスト情報などのファンクションへの信頼されたアクセスに関連するコンテクスト情報を含むものであってもよい。
データアクセスサブマップ1604は、オペレーティングシステム1512又はドライバ1511の特定のデータアイテムについて、信頼されたファンクションによる特定データへの信頼されたアクセスを定義してもよい。データアクセスサブマップ1604はまた、一部の実施例では、信頼されたファンクションに関する特定のメモリ位置、信頼されたファンクションが特定のドライバないにあるコードセクション(メモリ位置により特定されるような)、及び/又は信頼されたアクセスがリード又はライトアクセスであるか否かを含む、データアイテムへの信頼されたアクセスに関するコンテクスト情報を含むものであってもよい。
スタックアクセスサブマップ1606は、複数のファンクションの間の許可されたコール関係を記述するファンクションスタックを定義してもよい。スタックアクセスサブマップ1606において、スタックの各ファンクションは、ファンクションスタックのそれの下位に出現するファンクションにアクセスするのに信頼されている。スタックアクセスサブマップ1606は、ファンクションアクセスサブマップ1602のものと同様のコンテクスト情報を有してもよい。スタックアクセスサブマップ1606は、例えば、特定のファンクションF2がファンクションF3をコールし、ファンクションF3がF4をコールし、F3をコールするF4とF2をコールするF3とが信頼されたファンクションコールパスでないことを示す。
アクセスマップ1562において提供される各種ファンクション、データ、コードセクション、ドライバ及び他のエンティティの身元は、当該ファンクション、データ、コードセクション、ドライバ又はエンティティがメモリに格納されているメモリ位置(物理メモリアドレス又はバーチャルメモリアドレスなど)により規定されてもよい。図17は、図16の一例となるアクセスマップ1562において定義されたファンクション及びデータの間の相互関係をさらに示すバーチャルメモリ1799の実施例である。図17に示されるように、メモリ1700は、メモリアドレス1701、1706、1710及び1714にそれぞれ配置されるドライバY1、Y2、Y3及びY4を有する。ドライバY1は、アドレス1702のコードセクションX1内のアドレス1703においてファンクションF1を有してもよい。ドライバY1はまた、アドレス1704のデータセクションD1内にデータポインタ1705を有してもよい。ドライバY2は、アドレス1707のコードセクションX2内のアドレス1708においてファンクションF2を有してもよい。ドライバY3は、アドレス1711のコードセクションX3内のアドレス1712においてファンクションF3を有してもよい。ドライバY4は、アドレス1715のコードセクションX3内のアドレス1716においてファンクションF4を有してもよい。ファンクションF2のメモリアドレスZ2は、メモリ位置1709にあってもよい。ファンクションF3のメモリアドレスZ3は、メモリ位置1713にあってもよい。ファンクションF4のメモリアドレスZ4は、メモリ位置1717にあってもよい。図17の各種矢印は、図16のアクセスマップ1562において設定されるファンクションとデータとの間の信頼されたアクセスを示す。例えば、ファンクションアクセスサブマップ1602の信頼されたアクセスは、アドレス1708のファンクションF2とアドレス1703のファンクションF1との間の信頼された実行コールを示す矢印、アドレス1712のファンクションF3とアドレス1703のファンクションF1との間の信頼された実行コールを示す矢印、及びアドレス1716のファンクションF4とアドレス1703のファンクションF1との間の信頼された実行コールを示す矢印によって示される。
図15に戻って、ポリシー1564は、O/S下位セキュリティエージェント1516によりトラップされるイベント及び/又はトラップされるイベントの処理を規定するため適用されるポリシーを設定したログ、リスト又は他のデータ構造を有してもよい。特定の実施例では、ポリシーは、オペレーティングシステム1512のコンポーネント又は信頼されたドライバ1511を格納するメモリの部分に対するドライバファンクションによる試行されたアクセス(リード、ライト、実行、ファンクションコールなど)に応答して、アクセスマップ1562のエントリがドライバファンクションがコンポーネントへのアクセスを有することを示す場合(一部の実施例では、ドライバファンクションは、アクセスマップ1562に規定されるように、ドライバの特定のコードセクションにあるという通知を含む)、O/S下位セキュリティエージェント1516が試行されたアクセスを許可してもよいことを指示してもよい。同一の又は他の実施例では、ポリシーは、オペレーティングシステム1512のコンポーネント又は信頼されたドライバ1511を格納するメモリの部分に対するドライバファンクションにより試行されたアクセス(リード、ライト、実行、ファンクションコールなど)に応答して、アクセスマップ1562へのエントリが当該ドライバファンクションが当該コンポーネントへのアクセスを有していることを示さない場合(一部の実施例では、アクセスマップ1562に規定されるように、ドライバファンクションがドライバの特定のコードセクションにあるという通知を含む)、O/S下位セキュリティエージェント1516は当該試行されたアクセスを拒絶してもよいことを示すものであってもよい。上記及び他の実施例では、ポリシーは、未知のドライバファンクションによりオペレーティングシステム1512のコンポーネント又は信頼されたドライバ1511に対する試行されたアクセスについて、特定の試行されたアクセスが許可され、他の試行されたアクセスが拒絶され、及び/又は当該アクセスに関する情報は、さらなる解析のためのフォレンジックエビデンスとしてプロテクションサーバ202に通信されてもよい。
動作について、O/S下位セキュリティエージェント1516は、本開示に提供される何れかのトラップ技術に従って、オペレーティングシステム1512のコンポーネント及びドライバ1511への試行されたアクセスに対してトラップしてもよい。一部の実施例では、O/S下位セキュリティエージェント1516は、セキュリティルール1522に従ってイベントに応答してトラップしてもよい。オペレーティングシステム1512のコンポーネント及びドライバ1511への試行されたアクセスをトラップすることに応答して、O/S下位セキュリティエージェント1516は、試行されたアクセスが信頼されているか判断するため、試行されたアクセスに関するコンテクスト情報とアクセスマップ1562とを比較してもよい。試行されたアクセスが信頼されている場合(例えば、試行されたアクセスがアクセスマップ1562の対応するエントリを有する場合など)、O/S下位セキュリティエージェント1516は、アクセスを許可してもよい。試行されたアクセスが信頼されていない場合(例えば、試行されたアクセスがアクセスマップ1562において対応するエントリを有しない場合など)、O/S下位セキュリティエージェント1516は、訂正アクションを開始してもよい。訂正アクションは、試行されたアクセスの拒絶、アクセスを許可若しくは拒絶するか判断するためのポリシー1564の照会、及び/又はさらなる処理のためプロテクションサーバ202へのアクセスに関するフォレンジックデータの報告(コンテクスト情報など)を含むものであってもよい。従って、アクセスマップ1562及びポリシー1564に関してO/S下位セキュリティエージェント1516は、オペレーティングシステム1512のコンポーネント及びドライバ1511に対する悪意ある攻撃をプロテクトしてもよい。
一部の実施例では、ポリシー1564は、信頼されない試行されたアクセスに応答してO/S下位セキュリティエージェント1516により開始された訂正アクションが、試行されたアクセスが悪意の可能性のないエンティティ又は悪意の可能性のあるエンティティによるものであるかに依存してもよいことを示すものであってもよい。悪意の可能性のあるエンティティは、信頼されない試行されたアクセス(アクセスマップ1562において対応するエントリを有しないなど)を開始し、マルウェアの存在の可能性を示す動作を示す(例えば、電子デバイス1504のセンシティブリソースにアクセスする試み、オペレーティングシステム1512により提供されるファンクションルーティングを利用することなくサブファンクションにアクセスするための試みなど)O/S下位セキュリティエージェント1516に未知のアプリケーション、ドライバ又は他のエンティティ(例えば、ホワイトリスト又はブラックリストの何れにも出現しない)であってもよい。悪意の可能性のないエンティティは、悪意の可能性のあるエンティティであると検出されなかった何れかのエンティティであってもよい。悪意の可能性のないエンティティの場合、ポリシー1564は、他のものを拒絶しながら、特定の試行されたアクセスを許可してもよい。例えば、悪意の可能性のないエンティティについて、ネットワークコール及びファイルシステムコールが許可される一方、内部のネットワークディスパッチルーチンポインタを修正したり、内部のNDIS(Network Driver Interface Specification)ポインタを修正したり、又はカーネルコードセクション、データセクション又はSSDT(Ssystem Service Dispatch Table)への書き込みのための試行されたアクセスは拒絶されてもよい。他方、悪意の可能性のあるエンティティについて、試行されるすべてのアクセスが拒絶されてもよい。
他の実施例では、ポリシー1564は、未知のエンティティ(ホワイトリスト又はブラックリストに出現しないエンティティなど)が制限付きで一度だけ試行されたアクセスを実行するよう許可され、その後、当該アクセスに関する情報がプロテクションサーバ202に通信され、さらなる訂正アクションを決定するため評価されてもよい。
図18は、アクセスマップ1562を生成するシステム1800の実施例である。システム1800は、オペレーティングシステム1812及び信頼されるドライバ1811の観察された動作に基づきアクセスマップ1562のエントリを生成するため、電子デバイス1804上で動作するよう構成されるO/S下位セキュリティエージェント1816を有してもよい。図18に示されるように、電子デバイス1804は、プロセッサ1806、メモリ1808、ドライバ1811、オペレーティングシステム1812、及びO/S下位セキュリティエージェント1816を有してもよい。電子デバイス1804は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
プロセッサ1806は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、ASIC(Application Specific Integrated Circuit)又はプログラム命令及び/若しくはプロセスデータを解釈及び/若しくは実行するよう構成される他の何れかのデジタル若しくはアナログ回路などを有してもよい。いくつの実施例では、プロセッサ1806は、メモリ1808に格納されているプログラム命令及び/又はプロセスデータを解釈及び/又は実行してもよい。メモリ1808は、アプリケーションメモリ、システムメモリ又は双方として部分的又は全体的に構成されてもよい。メモリ1808は、1以上のメモリモジュールを保持及び/又は収容するよう構成される何れかのシステム、デバイス又は装置を有してもよく、例えば、メモリ1808は、ROM、RAM、ソリッドステートメモリ又はディスクベースメモリを含むものであってもよい。各メモリモジュールは、ある期間においてプログラム命令及び/又はデータを保持するよう構成される何れかのシステム、デバイス又は装置(コンピュータ可読な非一時的媒体など)を含むものであってもよい。
O/S下位セキュリティエージェント1816は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444又はO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント、図15のO/S下位セキュリティエージェント1516及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
オペレーティングシステム1812は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213、図15のオペレーティングシステム1512、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。信頼されるドライバ1811は、図1のドライバ111、図2のドライバ211、図4のドライバ411、図7のドライバ711、図9のドライバ911、図12のドライバ1211、図15のドライバ1511及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。しかしながら、電子デバイス1804における利用に関して、オペレーティングシステム1812はマルウェアがなく、信頼されるドライバ1811は、悪意がなく、マルウェアがないと知られるドライバのみを含む。例えば、オペレーティングシステム1812及び信頼されるドライバ1811は悪意のあるエンティティを有しないことを保証するため、電子デバイス1804に関して配慮されてもよい。具体例として、オペレーティングシステム1812及び信頼されるドライバ1811は、電子デバイス1804のエンプティ又は新たにフォーマット化されたコンピュータ可読媒体にインストールされてもよく、O/S下位セキュリティエージェント1816以外のエンティティは電子デバイス1804上でインストールされないことが配慮されてもよい。
動作について、O/S下位セキュリティエージェント1816は、本開示に提供される何れかのトラップ技術に従って、オペレーティングシステム1812のコンポーネント及び信頼されるドライバ1811への試行されたアクセスに応答してトラップしてもよい。システム1812のコンポーネント及び信頼されるドライバ1811へのアクセスをトラップすることに応答して、O/S下位セキュリティエージェント1816は、当該アクセスに関するコンテクスト情報を決定し、当該アクセス及びコンテクスト情報のレコードを格納してもよい(例えば、ファンクションアクセスサブマップ1602、データアクセスサブマップ1604、ファンクションスタックアクセスサブマップ1606の一部として又は他の適切な方法により)。従って、実質的にマルウェアのない電子デバイス1804の実行と、オペレーティングシステム1812及びその信頼されたドライバ1811の間の信頼される依存関係とが、アクセスマップ1562のエントリを生成するため、O/S下位セキュリティエージェント1816により観察されてもよく、各エントリは、オペレーティングシステム1812のコンポーネント又は信頼されるドライバ1811への信頼されるアクセスを規定する。アクセスマップ1562のエントリは実質的にマルウェアがないと知られるエンティティのシミュレートされた実行に基づき生成されるため、アクセスマップ1562は、追加的なエンティティなしにオペレーティングシステム1812及びその信頼されるドライバ1811の標準的な予想される動作の表現を含むものであってもよい。従って、アクセスマップ1562は、オペレーティングシステム1812のコンポーネント及びそれの信頼されるドライバ1811への正当な悪意のないアクセスを有するエントリのみを含むものであってもよい。
この結果、電子デバイス1804のO/S下位セキュリティエージェント1816がアクセスマップ1562を生成すると、アクセスマップ1562はO/S下位セキュリティエージェント1516に利用可能とされてもよく(例えば、ネットワーク244を介しアクセスマップ1562にアクセスすることによって、電子デバイス1504にアクセスマップをダウンロードすることによって、コンピュータ可読記憶媒体を介し電子デバイス1504に転送することによってなど)、O/S下位セキュリティエージェント1516は、上述されるように、試行されたアクセスの何れが信頼され、又は信頼されていないか判断し、当該判断に基づきさらなるアクションを実行するため、オペレーティングシステム1512のコンポーネント及び/又はドライバ1511への試行されたアクセスをトラップしてもよい。この結果、O/S下位セキュリティエージェントは、オペレーティングシステム1512及び信頼されるドライバ1511を悪意あるアクセスからプロテクトしてもよい。
図19は、電子デバイスのオペレーティングシステムカーネルをプロテクトする方法1900の実施例である。本方法1900では、オペレーティングシステムにインストールされた第1電子デバイス上で実行される第1O/S下位セキュリティエージェントと、マルウェアが実質的にない関連する信頼されるドライバとが、アクセスマップを作成するのに利用されてもよい(ステップ1905〜1910などを参照されたい)。さらに、第2電子デバイス上で実行される第2O/S下位セキュリティエージェントは、アクセスマップを参照することにより、第2電子デバイスにインストールされた第2オペレーティングシステムのコンポーネントとそれの関連するドライバとをプロテクトしてもよい(ステップ1915〜1930などを参照されたい)。
ステップ1905において、オペレーティングシステムがインストールされた第1電子デバイス上で実行される第1O/S下位セキュリティエージェントと、実質的にマルウェアのない関連する信頼されたドライバとが、オペレーティングシステムのコンポーネント(ファンクション及びデータなど)及び/又は信頼されるドライバへのアクセスをトラップしてもよい。ステップ1910において、第1O/S下位セキュリティエージェントは、アクセスに関連するコンテクスト情報を含む、アクセスに関する情報をアクセスマップに記録してもよい。他のコール元ファンクションによるファンクションへのアクセスに関して、当該コンテクスト情報は、信頼されるアクセスのコール元ファンクションが特定のドライバ以内に配置されるコードセクション(メモリ位置などにより特定される)を含むものであってもよい。コール元ファンクションによるデータアイテムへのアクセスに関して、当該コンテクスト情報は、信頼されるファンクションに関する特定のメモリレジスタ、信頼されるファンクションが特定のドライバ内に配置されるコードセクション、及び/又は信頼されるアクセスがリード又はライトアクセスであるか否かを含むものであってもよい。
ステップ1915において、第2電子デバイス上で実行される第2O/S下位セキュリティエージェントは、第2電子デバイス上で実行されるオペレーティングのコンポーネント及び/又はドライバへの試行されたアクセスをトラップしてもよい。ステップ1920において、コンポーネントへの試行されたアクセスのトラップに応答して、第2O/S下位セキュリティエージェントは、試行されたアクセスが信頼されるか判断するため、試行されたアクセスに関するコンテクスト情報とアクセスマップとを比較してもよい。試行されたアクセスは、それがアクセスマップにおいて対応するエントリを有する場合、信頼されてもよい。試行されるアクセスが信頼される場合、本方法1900はステップ1925に移行してもよい。試行されるアクセスが信頼されない場合、本方法1900はステップ1930に移行してもよい。
ステップ1925において、試行されるアクセスが信頼されると判断されたことに応答して、第2O/S下位セキュリティエージェントは、試行されるアクセスを許可してもよい。ステップ1925の終了後、本方法1900はステップ1915に再び移行してもよい。
ステップ1930において、試行されるアクセスが信頼されないと判断されたことに応答して、第2O/S下位セキュリティエージェントは、訂正アクションを開始してもよい。訂正アクションは、試行されるアクセスの拒絶、アクセスを許可若しくは拒絶するか判断するためのポリシーの照会、及び/又はさらなる処理のためプロテクションサーバへのアクセスに関するフォレンジックデータの報告(例えば、コンテクスト情報など)を含むものであってもよい。ステップ1925の終了後、本方法1900はステップ1915に再び移行してもよい。
図20は、マルウェアから電子デバイス2001をプロテクトするよう構成されるオペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境を提供するシステム2000の実施例である。図20からの要素は、図21及び図22からの共通の名前が付されたパーツと同じであってもよい。システム2000は、オペレーティングシステム実行環境2008(OSEE)のセキュアな起動を提供するよう構成される起動モジュール2020を有してもよい。起動モジュール2020は、O/S下位セキュリティエージェント2004、オペレーティングシステム2012及びO/S内セキュリティエージェント2016などのOSEE2008のコンポーネントが起動前にマルウェアにより制約されていないことを保証することによって、OSEE2008のセキュアな起動を提供するよう構成されてもよい。起動モジュール2020がOSEE2008のセキュアな起動を良好に提供した後、O/S下位セキュリティエージェント2004及びO/S内セキュリティエージェント2016などのOSEE2008のコンポーネントは、起動モジュール2020などの電子デバイス2001のコンポーネントをマルウェアが件センすることを阻止するため連係してもよい。
電子デバイス2001は、OSEE2008のセキュアな起動を提供するよう構成される起動モジュール2020を有してもよい。OSEE2008は、1以上のオペレーティングシステム2012を実行するためのセキュアな環境を提供するため、O/S下位セキュリティエージェント2004及びO/S内セキュリティエージェント2016を有してもよい。電子デバイス2001はまた、1以上のオペレーティングシステム2012を実行するためのセキュアな環境を提供するのに役立つため、プロテクションサーバ2022に通信接続されてもよい。プロテクションサーバ2022は、バックアップストレージデバイス2024を有してもよい。電子デバイス2001は、図1の電子デバイス103、図2の電子デバイス104、図4の電子デバイス404、図7の電子デバイス701、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス2001は、1以上のプロセッサ2002、メモリ2003又はストレージデバイス2006などのリソース2026を有してもよい。プロセッサ2002は、図2のプロセッサ208、図4のプロセッサ406、図7のプロセッサ702、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ2003は、図2のメモリ207、図4のメモリ408、図7のメモリ703、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。オペレーティングシステム2012は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。O/S内セキュリティエージェント2016の実施例の説明は、図22からのO/S内セキュリティエージェント2206の説明に見つけられてもよい。O/S下位セキュリティエージェント2004の実施例の説明は、図22からのO/S下位セキュリティエージェント2208の説明に見つけられてもよい。
ストレージデバイス2006は、図1のリソース106、図2のシステムリソース214、図4のストレージ426、図5のI/Oデバイス502、及び/又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。ストレージデバイス2006は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、ストレージデバイス2006は、限定することなく、ダイレクトアクセスストレージデバイス(ハードディスクドライブやフロッピー(登録商標)ディスクなど)、シーケンシャルアクセスストレージデバイス(テープディスクドライブなど)、コンパクトディスク、CD−ROM、DVD、RAM、及び/又はフラッシュメモリ(フラッシュベースソリッドステートドライブなど)を含むものであってもよい。ストレージデバイス2006は、それそれが一定量のデータを格納可能な1以上のセクタに分割されてもよい。例えば、ストレージデバイス2006は、何れか適切なセクタサイズが利用されてもよいが、それぞれが512バイトのセクタに分割されてもよい。各種実施例では、ストレージデバイス2006は、プロテクションサーバ2022などの電子デバイス2001から遠隔配置されてもよい。他の実施例では、ストレージデバイス2006は、電子デバイス2001のローカルリソース2026であってもよい。
バックアップストレージデバイス2024は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、バックアップストレージデバイス2024は、ストレージデバイス2006の機能により実現されてもよく、又は当該機能を実現するよう構成されてもよい。バックアップストレージデバイス2024は、ストレージデバイス2006などの電子デバイス2001のローカルストレージデバイスにより実現されてもよい。他の実施例では、バックアップストレージデバイス2024は、プロテクションサーバ2022などのネットワーク上に配置されたリモートストレージデバイスにより実現されてもよい。バックアップストレージデバイス2024がネットワーク上にある場合、O/S下位セキュリティエージェント2004は、ネットワーク接続を利用して、バックアップストレージデバイス2024にアクセスしてもよい。ネットワーク接続は、マルウェアに感染する可能性のあるオペレーティングシステムカーネルのネットワークデバイスドライバを利用することを回避するため、オペレーティングシステム2012の下位の優先レベルにおいて実現されてもよい。ネットワーク接続は、電子デバイス2001のネットワークカードに直接アクセスすることによって、バックアップストレージデバイス2024にアクセスするためのHTTPS、iSCSI、NFS又はCIFSクライアントの利用を可能にするActive Management Technology(AMT)を用いて実現されてもよい。当該実施例では、ネットワーク接続がバックアップストレージデバイス2024にアクセスすることが要求されるが、バックアップストレージデバイス2024は、電子デバイス2001のオペレーティングシステム2012上で実行される何れのマルウェアからも隔離されてもよい。
プロテクションサーバ2022は、電子デバイス2001から遠隔は位置され、セキュリティルール2018を提供するか、又は他の情報を送受信するため、起動モジュール2020、O/S下位セキュリティエージェント2004及びO/S内セキュリティエージェント2001などの電子デバイス2001のコンポーネントと通信するよう構成されてもよい。例えば、プロテクションサーバ2022は、リソース2026にアクセスするための疑わしい試行に関する情報を受信し、以降の解析のため当該情報を格納してもよい。プロテクションサーバ2022は、図1のプロテクションサーバ102、図2のプロテクションサーバ202及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティルール2018は、各イベントについてトラップ及び適切なレスポンスを要求するイベントを指定するのに適した何れかのルール、ロジック、コマンド、命令、フラグ又は他の機構を有してもよい。セキュリティルール2018は、図1のセキュリティルール114、図2のセキュリティルール220、222、図4のセキュリティルール420、422、434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、721、723及び/又はこれらの何れかの組み合わせの機能によって実現されてもよいし、又は当該機能を実現するよう構成されてもよい。
起動モジュール2020は、O/S下位セキュリティエージェント2004、オペレーティングシステム2012及びO/S内セキュリティエージェント2016などのOSEE2008のコンポーネントが起動前にマルウェアにより制約されないことを保証することによって、OSEE2008のセキュアな起動を提供するよう構成されてもよい。起動モジュール2020は、O/S下位セキュリティエージェント2004、オペレーティングシステム2012及びO/S内セキュリティエージェントに関連する1以上のプロテクトされたファイルのインテグリティを検証することによって、O/S下位セキュリティエージェント2004、オペレーティングシステム2012及びO/S内セキュリティエージェント2016がマルウェアにより制約されるか評価してもよい。起動モジュール2020がプロテクトされたファイルの何れかにマルウェアを検出した場合、起動モジュール2020は、バックアップコピーからプロテクトされるファイルを復元するよう構成されてもよい。OSEE2008のコンポーネントがマルウェアにより制約されていないか、又は起動モジュール2020が、マルウェアにより制約されたOSEE2008の何れかのコンポーネントを良好に復元したことを起動モジュール2020が検証した後、起動モジュール2020は、OSEE2008を起動してもよい。OSEE2008を起動した後、起動モジュール2020は、オペレーティングシステム2012などのOSEE2008の他のコンポーネントを起動する前に、O/S下位セキュリティエージェント2004を起動してもよい。
起動モジュール2020がOSEE2008のセキュアな起動を提供するのに成功した後、O/S下位セキュリティエージェント2004及びO/S内セキュリティエージェント2016などのOSEE2008のコンポーネントは、電子デバイス2001のリソース2026にマルウェアが感染することを阻止するよう連係してもよい。例えば、O/S下位セキュリティエージェント2004及び/又はO/S内セキュリティエージェント2016は、セキュリティルール2018により指定されるように、ストレージデバイス2026上の各種のプロテクトされたファイルにアクセスするための試行をインターセプトするよう構成されてもよい。プロテクトされるファイルは、起動モジュール2020、O/S下位セキュリティエージェント2004又はO/S内セキュリティエージェント2016に関連するファイル又はオペレーティングシステム2012のコアファイルを含むものであってもよい。マルウェアからこれらのファイルをプロテクトすることは、これらのコンポーネントにより利用されるセーフガードがマルウェアにより覆されないことを保証するのに役立つものであってもよい。例えば、オペレーティングシステム2012の実行中に起動モジュール2020をマルウェアからプロテクトすることによって、起動モジュール2020は、電子デバイス2001の次のスタートアップにおいてマルウェアがなくなる。このようにして、O/S下位セキュリティエージェント2004、O/S内セキュリティエージェント2016及びオペレーティングシステム2012などのOSEE2008のコンポーネントは、電子デバイス2001がブーとされるとき、起動モジュール2020によりマルウェアについてチェックされ、起動モジュール2020は、オペレーティングシステム2012の実行中にOSEE2008のコンポーネントによってマルウェアからプロテクトされてもよい。
図21は、セキュアなオペレーティングシステム実行環境を提供するシステムにおける起動モジュール2102の実施例である。図21からの要素は、図20及び図22からの共通の名前が付けられた対応するパーツと同じであってもよい。起動モジュール2102は、図20のシステムからの起動モジュール2020又は図22のシステムからの起動モジュール2226の機能を実現するため利用されてもよい。起動モジュール2102は、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及びO/S内セキュリティエージェント2126をセキュアに起動することによって、セキュアなオペレーティングシステム実行環境2122を提供するよう構成されてもよい。
起動モジュール2102は、ブートエージェント2104、セキュア起動エージェント2110及びリカバリエージェント2112を有してもよい。ブートエージェント2104は、電子デバイス2101が開始されると、セキュア起動エージェント2110が、オペレーティングシステム2124及び他の何れかのソフトウェア(マルウェアなど)の前にブートされることを保証するよう構成されてもよい。セキュア起動エージェント2110は、OSEE2122をセキュアに起動するよう構成されてもよい。OSEE2122は、オペレーティングシステム2124をセキュアに実行するための実行環境であってもよい。セキュア起動エージェント2110は、セキュリティエージェント2116を利用して、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及び/又はO/S内セキュリティエージェント2126がマルウェアにより感染されているか判断することによって、OSEE2122のセキュアな起動を提供してもよい。例えば、セキュア起動エージェント2110は、各コンポーネントのディスクイメージの暗号化ハッシュ値を比較することによって、及び/又はマルウェアを検出するのに適した他の何れかの方法を利用することによって、マルウェアの既知のパターンについてストレージデバイス2114の各コンポーネントのディスクイメージをスキャンすることによって、マルウェアについてOSEE2122のコンポーネントをチェックしてもよい。セキュア起動エージェント2110がマルウェア感染を検出した場合、リカバリエージェント2112は、マルウェア感染から復元するのに利用されてもよい。マルウェア感染がセキュア起動エージェント2110により検出された場合、又はリカバリの成功がリカバリエージェント2112により実現された場合、セキュア起動エージェント2110は、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及び/又はO/S内セキュリティエージェント2126を起動するよう構成されてもよい。O/S下位セキュリティエージェント2128は、図22のO/S下位セキュリティエージェント2208の機能によって実現されてもよいし、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント2126は、図22のO/S内セキュリティエージェント2206の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム2124は、図20のオペレーティングシステム2012の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。ストレージデバイス2114は、図20のストレージデバイス2006の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。セキュリティルール2116は、図20のセキュリティルール2018の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。
ブートエージェント2104は、マスタブートレコード(MBR)マネージャ2106とブートストラップローダ2108とを有してもよく、電子デバイス2101が開始されると、セキュア起動エージェント2110は、オペレーティングシステム2124及びマルウェアなどの他の何れかのソフトウェアの前にブートされることを保証するよう構成されてもよい。MBRマネージャ2106は、ストレージデバイス2114上の既存のMBR2130をブートストラップローダ2108により置換するよう構成されてもよい。MBR2130は、ストレージデバイスの第1セクタ(すなわち、セクタ0)に配置されてもよく、電子デバイス2101が開始されるとき、オペレーティングシステム214又は他のソフトウェアをブートするためのものであってもよい。MBR2130をブートストラップローダ2108により置換することによって、ブートストラップローダ2108は、新たなMBR2130になってもよい。元のMBR2130は実行されず、元のMBR2130に関するオペレーティングシステム2124又は他のソフトウェアはブーとされない。その代わりに、電子デバイス2101が開始されると、ブートストラップローダ2108は、それが新たなMBR2130になったため、実行されることになる。ブートストラップローダ2108は、OSEE2122を起動するためのセキュア起動エージェント2110をブートするよう構成されてもよい。このようにして、セキュア起動エージェント2110は、オペレーティングシステム2124及び/又は他の何れかのソフトウェアの前にブートされ、セキュア起動エージェント2110がO/S下位セキュリティエージェント2128、O/S内セキュリティエージェント2126及び/又はオペレーティングシステム2124をロードする前にセキュア起動エージェント2110がマルウェアについてチェックすることを可能にする。
セキュア起動エージェント2110は、OSEE2122を起動するよう構成されてもよい。OSEE2122は、オペレーティングシステム2124をセキュアに実行するための実行環境として構成されてもよく、O/S下位セキュリティエージェント2128、オペレーティングシステム214及び/又はO/S内セキュリティエージェント2126を有してもよい。セキュア起動エージェント2110は、ディスクI/O機能、ネットワークI/O機能及びベーシックコンソールI/O機能を提供可能なスリム埋め込みオペレーティングシステムにより実現されてもよい。他の実施例では、セキュア起動エージェント2110は、O/S下位セキュリティエージェント2128により実現されてもよい。セキュア起動エージェント2110は、O/S下位セキュリティエージェント2128、オペレーティングシステム214及び/又はO/S内セキュリティエージェント2126がマルウェアに感染したか検出するよう構成されてもよい。マルウェア感染を検出するため、セキュア起動エージェント2110は、暗号化ハッシュアルゴリズムを利用して、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及び/又はO/S内セキュリティエージェント2126に関連する各種のプロテクトされたファイル2120のインテグリティを検証してもよい。プロテクトされたファイルは、例えば、MBR2130、オペレーティングシステム2124のコアファイル、及びO/S下位セキュリティエージェント2128及び/又はO/S内セキュリティエージェント2126の実行可能イメージなどを含むものであってもよい。プロテクトされたファイル2120のインテグリティを検証するため、セキュア起動エージェント2110は、ハッシュアルゴリズムを利用して、プロテクトされたファイル2120のハッシュ値を計算してもよい。計算されたハッシュ値は、その後、プロテクトされたファイル2120について以前に生成されたハッシュ値と比較されてもよい。ハッシュ値が異なる場合、プロテクトされたファイル2120は、おそらくマルウェアにより修正又は変更されている。各種実施例では、セキュリティエージェント2110は、ディスクマッピングビットマップ(DMB)2118を利用して、プロテクトされたファイル2120のインテグリティを検証してもよい。ディスクマッピングビットマップ2118は、ストレージデバイス2114上のプロテクトされた各ファイル2120の位置を指定し、プロテクトされた各ファイル2120について以前に生成されたハッシュ値を提供してもよい。ディスクマッピングビットマップ2118の実施例の説明は、図23からのディスクマッピングビットマップ2301の説明に見つけられてもよい。セキュア起動エージェント2110は、ストレージデバイス2114上のプロテクトされたファイル2120の位置を特定し、プロテクトされたファイル2120のハッシュ値を計算し、当該計算されたハッシュ値とディスクマッピングビットマップ2118により提供される以前に生成されたハッシュ値と比較するため、ディスクマッピングビットマップ2118を照会してもよい。プロテクトされたファイル2120のハッシュ値が一致しない場合、プロテクトされたファイル2120は、おそらくマルウェアにより変更又は修正された。セキュア起動エージェント2110は、マルウェア感染の可能性から復元するため、リカバリエージェント2112を起動してもよい。マルウェア感染の可能性が検出されない場合、又は感染の可能性のあるすべてのファイルがリカバリエージェント2112により復元に成功した場合、セキュア起動エージェント2110は、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及びO/S内セキュリティエージェント2126をロードするよう進捗してもよい。セキュア起動エージェント2110は、OSEE2122を起動した後に終了するよう構成されてもよい。
リカバリエージェント2112は、O/S下位セキュリティエージェント2128、オペレーティングシステム2124及び/又はO/S内セキュリティエージェント2126に関連する1以上のプロテクトされたファイル2120のマルウェア感染から復元するよう構成されてもよい。マルウェア感染から復元させるため、リカバリエージェント2112は、バックアップストレージデバイスからバックアップファイルを抽出し、感染したプロテクトされたファイル2120を対応するバックアップファイルに置換するよう構成されてもよい。バックアップファイルは、例えば、電子デバイス2114上など電子デバイス2101上にローカルに格納されてもよい。バックアップファイルはまた、電子デバイス2101から遠隔的な位置に格納されてもよい。例えば、バックアップファイルは、図20からのプロテクションサーバ2022のバックアップストレージデバイス2024上など、ネットワーク上に格納されてもよい。バックアップファイルのメタデータが維持され、バックアップファイルが作成された日時と改訂番号とを含むものであってもよい。プロテクトされたファイル2120の復元のためバックアップファイルを利用する前に、リカバリエージェント2112は、バックアップファイルがマルウェアにより感染されていないことを保証するため、バックアップファイルのインテグリティを検証するよう構成されてもよい。リカバリエージェント2112は、セキュア起動エージェント2110がプロテクトされたファイル2120のインテグリティを検証するの同様にして、バックアップファイルのインテグリティを検証してもよい。例えば、リカバリエージェント2112は、バックアップファイルのハッシュ値を計算し、計算されたハッシュ値とディスクマッピングビットマップ2118からのバックアップファイルの対応するハッシュ値と比較してもよい。ハッシュ値の比較が、マルウェアによりバックアップファイルが感染しているかもしれないことを示す場合、バックアップファイルは利用されないか、及び/又は古いバックアップファイルが利用されてもよい。リカバリエージェント2112は、セキュア起動エージェント2110がO/S下位セキュリティエージェント2128、オペレーティングシステム2124及びO/S内セキュリティエージェント2126を起動することに進むことを可能にするため、復元の成功をセキュア起動エージェント2110に通知するよう構成されてもよい。
図22は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境(OSEE)2202の実施例である。図22からの要素は、図20及び図21からの共通の名前が付された対応するパーツと同じであってもよい。OSEE2202は、例えば、図20からのOSEE2008又は図21からのOSEE2122の機能などを実現するのに利用されてもよい。OSEE2202は、オペレーティングシステム2204をセキュアに実行するための実行環境として構成されてもよく、オペレーティングシステム2204、O/S下位セキュリティエージェント2208、O/S内セキュリティエージェント2206及び/又はディスクセキュリティエージェント2214を含むものであってもよい。OSEE2202は、起動モジュール2226によりセキュアに起動されてもよい。その後、O/S下位セキュリティエージェント2208、O/S内セキュリティエージェント2206及びディスクセキュリティエージェント2214などのOSEE2202のコンポーネントは、電子デバイス2201のコンポーネントをマルウェアが抑制することを阻止するよう連係してもよい。例えば、OSEE2202のコンポーネントは、起動モジュール2226をマルウェアからプロテクトするよう連係してもよい。このようにして起動モジュール2226をプロテクトすることは、電子デバイス2201の次の初期化において、起動モジュール2226により利用されるセーフガードがマルウェアに感染したオペレーティングシステム2204、O/S下位セキュリティエージェント2208及び/又はO/S内セキュリティエージェント2206の起動を可能にするため覆されない。
OSEE2202は、O/S下位セキュリティエージェント2208、オペレーティングシステム2204、O/S内セキュリティエージェント2206及び/又はディスクセキュリティエージェント2214を有してもよい。OSEE2202は、起動モジュール2226によりセキュアに起動されてもよい。起動モジュール2226がOSEE2202のセキュアな起動の提供に成功した後、O/S下位セキュリティエージェント2208、O/S内セキュリティエージェント2206及びディスクセキュリティエージェント2214などのOSEE2202のコンポーネントは、起動モジュール2226などの電子デバイス2201のコンポーネントをマルウェアが抑制することを阻止するよう連係してもよい。
O/S下位セキュリティエージェント2208は、O/S下位トラップエージェント2210とトリガイベントハンドラ2212とを有してもよい。O/S下位トラップエージェント2210は、図1のO/S下位トラップエージェント104、図2のSVMM216、図4のファームウェアセキュリティエージェント440、442若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708及び/又はこれらの何れかの組み合わせの機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ2010は、図1のトリガイベントハンドラ108、図2のSVMMセキュリティエージェント217、図4のO/S下位エージェント450、図7のO/S下位エージェント712及び/又はこれらの何れかの組み合わせの機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。各種実施例では、O/S下位トラップエージェント2210の機能の一部は、トリガイベントハンドラ2212により実行されてもよく、あるいは、トリガイベントハンドラ2212の機能の一部は、O/S下位トラップエージェント2210により実行されてもよい。一実施例では、トリガイベントハンドラ2212は、O/S下位セキュリティエージェント2208と同じ優先レベルで動作してもよい。他の実施例では、トリガイベントハンドラ2212は、O/S内セキュリティエージェント2206の一部として実現されてもよく、オペレーティングシステム2204の優先レベルで又は上位で動作してもよい。さらなる他の実施例では、トリガイベントハンドラ2212は、2以上のトリガイベントハンドラにより実現されてもよく、少なくとも1つのトリガイベントハンドラは、O/S下位セキュリティエージェント2208と同じ優先レベルで動作し、少なくとも1つのトリガイベントハンドラは、オペレーティングシステム2204の優先レベルで又は上位で動作する。
O/S下位セキュリティエージェント2208は、O/S下位トラップエージェント2210を利用して、ストレージデバイス2218などの電子デバイス2201のリソースにアクセスするためのリクエストをインターセプトするよう構成されてもよい。ストレージデバイス2218にアクセスするためのリクエストをインターセプトすると、O/S下位トラップエージェント2210は、トラップされたアクセスの試みに関連するトリガイベントを作成するよう構成され、イベントに関して実行するのに適切なアクションを決定するため、トリガイベントをトリガイベントハンドラ2212に送信するよう構成されてもよい。トリガイベントは、リクエスト、要求元のエンティティ及び要求されたアクセスのタイプに関連するストレージデバイス2218のエリア(セクタ及び/又はファイルなど)などの情報を有してもよい。要求元のエンティティは、オペレーティングシステム2204、ドライバ2228又はアプリケーション2230など、当該リクエストを開始するためのエンティティである。要求されたアクセスのタイプは、ストレージデバイス2218からのコードをリード、ライト又は実行するリクエストを含むものであってもよい。
トリガイベントハンドラ2212は、O/S下位トラップエージェント2210からトリガイベントを受信及び処理するよう構成されてもよい。トリガイベントは、O/S下位トラップエージェント2210によりトラップされたストレージデバイス2218にアクセスするためのリクエストに関する情報を含むものであってもよい。トリガイベントハンドラ2212は、トリガイベントに関連するコンテクスト情報と共に1以上のセキュリティルール2216を利用し、ストレージデバイス2218のプロテクトされたエリアにアクセスする試行を特定し、適切なレスポンスを決定するよう構成されてもよい。プロテクトされたセクタ及び/又はファイルなどのプロテクトされたエリアにアクセスするための試行を特定した後、トリガイベントハンドラ2212は、プロテクトされたエリアにアクセスするための試行が許可されているか判断するため、セキュリティルール2216を照会するよう構成されてもよい。トリガイベントハンドラ2212はさらに、適切なアクションの決定をO/S下位セキュリティエージェント2208に提供するよう構成されてもよい。例えば、トリガイベントハンドラ2212は、トリガイベントが許可又は拒絶されるべきか、あるいは、他の訂正アクションが実行されるべきかO/S下位セキュリティエージェント2208に通知してもよい。
O/S内セキュリティエージェント2206は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、及び/又はこれらの何れか適切な組み合わせの機能によって全体的又は部分的に実現されるか、当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント2206は、オペレーティングシステム2204の優先レベルにおいて又は上位で実行されてもよく、マルウェアから電子デバイス2201をプロテクトするため、1以上のセキュリティルール2216を照会するよう構成されてもよい。例えば、セキュリティルール2216は、O/S内セキュリティエージェント2206がストレージデバイス2218上の特定のプロテクトされたファイル2222にアクセスするための試行をインターセプトすることを要求してもよい。セキュリティルール2216はさらに、プロテクトされたファイル2222にアクセスするための特定の試行が許可されているか指定してもよい。しかしながら、O/S内セキュリティエージェント2206は、オペレーティングシステム2204の優先レベルにおいて又は上位で実行されるため、O/S内セキュリティエージェント2206自体は、オペレーティングシステム上で実行されるマルウェアにより感染される可能性があり、O/S内セキュリティエージェント2206のセーフガードが回避される可能性がある。この可能性を阻止することに資するため、O/S下位セキュリティエージェント2208は、マルウェアからO/S内セキュリティエージェント2206をプロテクトするよう構成されてもよい。
ディスクセキュリティエージェント2214は、DMB生成手段2232とディスクプロテクト手段2234とを有し、OSEE2202のコンポーネントや起動モジュール2226などの電子デバイス2201のコンポーネントをマルウェアからプロテクトするのに利用されてもよい。ディスクセキュリティエージェント2214は、何れか適切な方法により実現されてもよい。一実施例では、ディスクセキュリティエージェント2214は、O/S下位セキュリティエージェント2208の一部として実現されてもよく、及び/又はO/S下位セキュリティエージェント2208と同じ優先レベルで実行されてもよい。他の実施例では、ディスクセキュリティエージェント2214は、O/S内セキュリティエージェント2206として実現されてもよく、及び/又はオペレーティングシステム2204の優先レベルにおいて又は上位で実行されてもよい。さらなる他の実施例では、ディスクセキュリティエージェント2214は、少なくとも1つのディスクセキュリティエージェントがO/S下位セキュリティエージェント2208と同じ優先レベルで動作し、少なくとも1つのディスクセキュリティエージェントがオペレーティングシステム2204の優先レベルにおいて又は上位で動作する2以上のディスクセキュリティエージェントにより実現されてもよい。
ディスクプロテクト手段2234は、起動モジュール2226及びOSEE2202のコンポーネントを、当該コンポーネントに関連する各種のプロテクトされたファイル2222にアクセスするための未認証の試行をインターセプトすることによって、マルウェアからプロテクトするよう構成されてもよい。プロテクトされたファイル2222は、コアオペレーティングシステムファイル(オペレーティングシステムカーネルファイルなど)、コアセキュリティエージェントファイル(O/S下位セキュリティエージェント2208及びO/S内セキュリティエージェント2206の実行可能イメージなど)、及び/又はこれらのファイルのバックアップコピーを含むものであってもよい。ディスクプロテクト手段2234は、プロテクトされたファイル2222が格納されるストレージデバイス2218のセクタにアクセスするための未認証の試行をインターセプトすることによって、プロテクトされたファイル2222への未認証のアクセスを阻止してもよい。いくつかの実施例では、ディスクプロテクト手段2234は、ディスクマッピングビットマップ2220を利用して、プロテクトされたファイル2222と共に、プロテクトされたファイル2222が格納されるストレージデバイス2218上のセクタを特定してもよい。ディスクマッピングビットマップ2220の実施例の説明は、図23からのディスクマッピングビットマップ2301の説明に見つけられてもよい。ディスクマッピングビットマップ2220は、例えば、プロテクトされた各ファイルが格納されるストレージデバイスのセクタなどを含む各種のプロテクトされたファイルに関連する情報を含むものであってもよい。ディスクプロテクト手段2234は、プロテクトされたファイル2222が格納されるストレージデバイス2218のセクタを特定するため、ディスクマッピングビットマップ2220を照会してもよい。ディスクプロテクト手段2234は、その後、プロテクトされたファイル2222に関連するセクタにアクセスするための試行をインターセプトし、試行が許可されているか判断するため、セキュリティルール2216を照会してもよい。例えば、セキュリティルール2216は、コアオペレーティングシステムファイルに書き込むためのリクエストが、オペレーティングシステム2204からのものでない場合には拒絶されることを指示するものであってもよい。
いくつかの実施例では、ディスクプロテクト手段2234の機能は、O/S下位セキュリティエージェント2208のコンポーネントにより実現されてもよい。O/S下位セキュリティエージェント2208のコンポーネントとしてディスクプロテクト手段2234を実現することによって、ディスクプロテクト手段2234は、オペレーティングシステムの下位のレベルで実行され、オペレーティングシステム2204を感染させるマルウェアの多くを回避するようにしてもよい。ディスクプロテクト手段2234の機能は、例えば、O/S下位トラップエージェント2210及びトリガイベントハンドラ2212などにより実現されてもよい。O/S下位トラップエージェント2210は、プロテクションを要求するストレージデバイス2218のセクタを特定するため、ディスクマッピングビットマップ2220を照会するよう構成されてもよい。O/S下位トラップエージェントはさらに、ストレージデバイス2218の特定されたセクタにアクセスするための試行をトラップするよう構成されてもよく、セキュリティルール2216を利用して、試行が許可されているか判断してもよい。このようにして、ディスクマッピングビットマップ2220により特定されるプロテクトされたファイル2222は、未認証のアクセスからプロテクトされてもよい。
他の実施例では、ディスクプロテクト手段2234の機能は、O/S内セキュリティエージェント2206のコンポーネントとして実現されてもよい。例えば、O/S内セキュリティエージェント2206は、ディスクプロテクト手段113の機能を実現するためのディスクフィルタドライバを有してもよい。フィルタドライバは、オペレーティングシステム2204の特定のデバイスの既存のドライバスタックに挿入され、以前から存在するディスクドライバの機能を補完してもよい。ディスクフィルタドライバは、プロテクトションを要求するストレージデバイス2218のセクタを特定するため、ディスクマッピングビットマップ2220を照会することによって、ディスクプロテクト手段1133の機能を実現してもよい。ディスクフィルタドライバは、その後、ストレージデバイス2218のプロテクトされるセクタにアクセスするための試行をインターセプトし、セキュリティルール2216を利用して、試行が許可されているか判断してもよい。このようにして、ディスクマッピングビットマップ2220により特定されるプロテクトされたファイル2222は、未許可のアクセスからプロテクトされてもよい。しかしながら、ディスクフィルタドライバがオペレーティングシステム2204の優先レベルにおいて又は上位で実行されるため、ディスクフィルタドライバ自体は、オペレーティングシステム2204上で実行されるマルウェアにより感染され、ディスクフィルタドライバのセーフガードが回避される可能性がある。従って、いくつかの実施例では、ディスクプロテクト手段2234の機能は、O/S下位セキュリティエージェント2208とO/S内セキュリティエージェント2206の双方により実現されてもよい。例えば、O/S内セキュリティエージェント2206は、上述されるようなディスクフィルタドライバを利用して、ストレージデバイス2218にアクセスするための未許可の試行をインターセプトするよう構成されてもよく、O/S下位セキュリティエージェント2208は、未許可の試行がメモリ又はストレージデバイス2218のディスクフィルタドライバイメージを修正することを阻止するよう実現されてもよく、これにより、オペレーティングシステム2204と同じ優先レベルで実行されるマルウェアによってディスクフィルタドライバが覆されることをプロテクトする。
ディスクプロテクト手段2234はさらに、電子デバイス2201のシャットダウン前にMBRのインテグリティを検証するよう構成されてもよい。例えば、電子デバイス2201のシャットダウンが開始されると、ディスクプロテクト手段2234は、MBR2224のハッシュ値を計算するよう構成されてもよい。その後、ディスクプロテクト手段2234は、MBR2224について以前に生成されたハッシュ値を取得するため、ディスクマッピングビットマップ2220を照会し、計算されたハッシュ値と以前に生成されたハッシュ値とを比較してもよい。これらのハッシュ値が異なる場合、MBR2224は、おそらくマルウェアにより変更されており、ディスクプロテクト手段2234は、MBR2224をバックアップコピーと置換するよう構成されてもよい。このようにして、電子デバイス2201の次のスタートアップにおいて、マルウェア感染したMBR2224はブートされない。
DMB生成手段2232は、ディスクマッピングビットマップ2220を生成及び更新するよう構成されてもよい。例えば、DMB生成手段2232は、プロテクトされた各ファイルが格納されるストレージデバイス2218上のセクタを決定するよう構成され、さらにプロテクトされた各ファイル2222についてハッシュ値を生成するよう構成されてもよい。DMB生成手段2232は、プロテクトされた各ファイル2222の対応するセクタとハッシュ値とをディスクマッピングビットマップ2220に格納してもよい。DMB生成手段2220は、何れか適切な方法により実現されてもよい。例えば、DMB生成手段2220の機能は、O/S下位セキュリティエージェント2208又はO/S内セキュリティエージェント2206の一部として実現されてもよく、あるいは、DMB生成手段2220の機能は、O/S下位セキュリティエージェント2208とO/S内セキュリティエージェント2206の双方により実現されてもよい。
一実施例では、DMB生成手段2232は、プロテクトされたファイル2222にアクセスするためのリクエストをインターセプトすることによって、ディスクマッピングビットマップ2220を生成してもよい。例えば、O/S内セキュリティエージェント2206は、プロテクトされたファイル2222にアクセスするためのリクエストをインターセプトするよう構成されるファイルシステムフィルタドライバを有してもよい。ファイルシステムフィルタドライバは、ファイルシステム又は他のファイルシステムフィルタドライバを対象としたリクエストをインターセプトする。それが意図したターゲットに到達する前にリクエストをインターセプトすることによって、フィルタドライバは、リクエストの元のターゲットにより提供される機能を拡張又は置換できる。O/S内セキュリティエージェント2206からのファイルシステムフィルタドライバは、プロテクトされたファイル2222に対するファイルI/Oリクエストをインターセプトしてもよい。フィルタドライバは、その後、プロテクトされたファイル2222のコンテンツがが格納されるストレージデバイス2218上のセクタを取得するため、ファイルシステムにクエリしてもよい。その後、フィルタドライバは、ファイルシステムのマスタフォーマットテーブル(MFT)にアクセスし、プロテクトされたファイル2222のディスクセクタレイアウトを決定してもよい。ディスクマッピングビットマップ2220は、プロテクトされたファイル2222が格納される特定されたセクタを指定するよう更新されてもよい。プロテクトされたファイル2222についてハッシュ値が生成されていない場合、ハッシュ値が生成され、ディスクマッピングビットマップ2220が、新たなハッシュ値を含むよう更新されてもよい。新たなハッシュ値がまた生成され、プロテクトされたファイル2222が更新されている場合、ディスクマッピングビットマップ2220に格納されてもよい。例えば、ファイルシステムフィルタドライバがプロテクトされたファイル2222に書き込むためのリクエストをインターセプトした場合、プロテクトされたファイル2222の修正されたコンテンツを利用して、新たなハッシュ値が生成される必要があってもよい。
図23は、セキュアオペレーティングシステム実行環境を提供するシステム又は方法で利用されるディスクマッピングビットマップ2301の実施例である。ディスクマッピングビットマップ2301は、例えば、図21のディスクマッピングビットマップ2118、図22のディスクマッピングビットマップ2220又は図26のディスクマッピングビットマップ2628の機能を実現するためなどに利用されてもよい。ディスクマッピングビットマップ2301は、ファイルであってもよく、プロテクトされた各種ファイル2302に関連する情報を含むものであってもよい。例えば、ディスクマッピングビットマップ2301は、プロテクトされた各ファイル2302が格納されるストレージデバイスのセクタ2304を特定し、プロテクトされた各ファイル2302のハッシュ値2306を有してもよい。ディスクマッピングビットマップ2301は、各種のプロテクトされたファイル2302のインテグリティを検証するのに利用されてもよい。例えば、図21のセキュア起動エージェント2110及び/又はリカバリエージェント2112は、ディスクマッピングビットマップ2301からの情報を利用して、プロテクトされたファイル2302のインテグリティを検証してもよい。ディスクマッピングビットマップは、例えば、図22からのDMB生成手段2232などによって生成されてもよい。
ディスクマッピングビットマップ2301は、ストレージデバイス上の指定されたセクタに格納されてもよい。指定されたセクタは、オペレーティングシステムのファイルシステムを実現するのに利用されるストレージデバイスの同一部分にあってもよい。指定されたセクタは、セクタがオペレーティングシステムにより利用されることを阻止するため、占有されているとしてマーク付けされてもよい。ストレージデバイスはまた、オペレーティングシステムと異なるパーティションの指定されたセクタにディスクマッピングビットマップ2301が格納されることを可能にするため、パーティションされてもよい。ディスクマッピングビットマップ2301はまた、ネットワーク上にあるリモートストレージデバイスに格納されてもよい。例えば、ディスクマッピングビットマップ2301は、図20からのプロテクションサーバ2022や図26からのプロテクションサーバ2602などのプロテクションサーバに格納されてもよい。
ディスクマッピングビットマップ2301は、プロテクトされた各ファイル2302、当該プロテクトされたファイル2302が格納されるストレージデバイスのセクタ2304、及びプロテクトされたファイル2302のハッシュ値を特定してもよい。ディスクマッピングビットマップ2301により特定されるプロテクトされたファイル2302は、コアセキュリティエージェントファイル2302、コアオペレーティングシステムファイル2310及びバックアップファイル2312を有してもよい。コアセキュリティエージェントファイル2308は、MBR、O/S下位セキュリティエージェント及びO/S内セキュリティエージェントの実行可能ファイルを含むものであってもよい。コアオペレーティングシステムファイル2310は、オペレーティングシステムカーネルファイルと他のオペレーティングシステムファイルとを含むものであってもよい。例えば、オペレーティングシステムがMicrosoft Windows(登録商標)の変形である場合、コアオペレーティングシステムファイル2310は、ntoskrnl.exe、hal.sys、win32k.sys、ntfs.sys、disk.sys及び/又はtcpip.sysを含むものであってもよい。コアオペレーティングシステムファイル2310は、特定のオペレーティングシステムに応じて変更されてもよい。バックアップファイル2312は、各コアセキュリティエージェントファイル2308と各コアオペレーティングシステムファイル2310のバックアップコピーを有してもよい。各種実施例において、バックアップファイル2312は、コアセキュリティエージェントファイル2308とコアオペレーティングシステムファイル2310と同じストレージデバイスに格納されなくてもよい。当該実施例では、ディスクマッピングビットマップ2301はまた、バックアップファイル2312が格納される特定のストレージデバイスを特定してもよい。あるいは、別のディスクマッピングビットマップ2301が、セクタ2304やハッシュ値2306などのバックアップファイル2312に関する情報を格納するため利用されてもよい。
プロテクトされた各ファイル2302について、ディスクマッピングビットマップ2301は、暗号化ハッシュアルゴリズムを利用して生成されたハッシュ値2306を格納してもよい。ハッシュアルゴリズムは、入力としてデータブロックを受信し、ビット文字列又はハッシュ値を出力として生成するアルゴリズムを有してもよい。異なるデータセットに対するハッシュ値は、通常は異なるものになる。プロテクトされた各ファイル2302のハッシュ値2306は、ハッシュアルゴリズムへの入力としてプロテクトされた各ファイル2302のコンテンツを利用して生成される。例えば、Secure Hash Algorithm 2(SHA−2)又はMessage−Digest Algorithm 5(MD5)などを含む何れか適切な暗号化ハッシュアルゴリズムが利用されてもよい。
ディスクマッピングビットマップ2301は、例えば、図21のセキュア起動エージェント2110及び/又はリカバリエージェント2112、図22のO/S下位セキュリティエージェント2208、O/S内セキュリティエージェント2206及び/又はディスクセキュリティエージェント2214、図26のO/S下位セキュリティエージェント2616及び/又はO/S内セキュリティエージェント2618などによって、プロテクトされたファイル2301のマルウェア感染の可能性を検出するのに利用されてもよい。プロテクトされたファイル2302のマルウェア感染の可能性を検出するため、ハッシュアルゴリズムが、プロテクトされたファイル2302のインテグリティを検証するため利用されてもよい。ディスクマッピングビットマップ2304は、プロテクトされたファイル2302が格納されるストレージデバイス上のセクタ2304を特定するため照会されてもよく、その後、プロテクトされたファイルのコンテンツは、ストレージデバイスの適切なセクタ2304から抽出されてもよい。SHA−2又はMD5などの選択されたハッシュアルゴリズムは、その後、プロテクトされたファイル2302のコンテンツを利用してハッシュ値を生成するのに利用されてもよく、生成されたハッシュ値は、ディスクマッピングビットマップ2301からの対応するハッシュ値2306と比較されてもよい。これらのハッシュ値が異なる場合、プロテクトされたファイル2302は、おそらくマルウェアにより修正又は変更されている。
ディスクマッピングビットマップ2301は、何れか適切な方法により生成されてもよい。一実施例では、ディスクマッピングビットマップ2301は、プロテクトされたファイル2302にアクセスするためのリクエストをインターセプトし、プロテクトされたファイル2302に関する情報を取得し、プロテクトされたファイルに関する情報によってディスクマッピングビットマップ2301を更新することによって生成されてもよい。いくつかの実施例では、リクエストは図26からのO/S下位セキュリティエージェント2616などのオペレーティングシステムより下位の優先度のリングにおいて実行されるソフトウェアによりインターセプトされてもよい。他の実施例では、リクエストは、図26からのO/S内セキュリティエージェント2618などのオペレーティングシステムと同じ優先度リングで実行されるソフトウェアによりインターセプトされてもよい。例えば、図26からのO/S内セキュリティエージェント2618は、ファイルシステムフィルタドライバを有してもよい。ファイルシステムフィルタドライバは、プロテクトされたファイル2302に対するファイルI/Oリクエストをインターセプトしてもよい。ファイルドライバは、その後、プロテクトされたファイル2302のコンテンツが格納されるストレージデバイス上のセクタ2304を取得するため、ファイルシステムをクエリしてもよい。ファイルドライバは、その後、プロテクトされたファイル2302のディスクセクタレイアウトを決定するため、ファイルシステムのマスタファイルテーブル(MFT)にアクセスしてもよい。ディスクマッピングビットマップ2301は、プロテクトされたファイル2302が格納される特定されたセクタ2304を指定するため更新されてもよい。ファイルシステムフィルタドライバがプロテクトされたファイル2302に書き込むためのリクエストをインターセプトする場合、プロテクトされたファイル2302の更新されたコンテンツを利用して、新たなハッシュ値が生成されてもよく、ディスクマッピングビットマップ2301は、新たなハッシュ値を格納するため更新されてもよい。
図24は、セキュアオペレーティングシステム実行環境を起動する方法の実施例である。ステップ2410において、ストレージデバイスの既存のMBRが、セキュア起動環境をブートするよう構成される他のMBRと置換されてもよい。MBRは、ストレージデバイスの第1セクタ(すなわち、セクタ0)に配置され、電子デバイスのスタートアップ時に実行されてもよい。このようにして、電子デバイスが開始されると、元のMBRは実行されず、元のMBRに関するオペレーティングシステム又は他のソフトウェアはロードされなくてもよい。代わりに、他のMBRが実行され、セキュア起動環境をロードしてもよい。ステップ2420において、電子デバイスが開始され、ステップ2410からの他のMBRが実行されてもよい。他のMBRはセキュア起動環境のロードに進む。
ステップ2430において、セキュリティルールが取得されてもよい。セキュリティルールは、ストレージデバイスにローカルに格納されてもよいし、あるいは、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ2440〜2480において判定を行うのに利用されてもよい。ステップ2440において、各種のプロテクトされたファイルのバックアップコピーが作成されたか判断されてもよい。バックアップを要求するプロテクトされたファイルは、セキュリティルールにおいて指定されてもよい。バックアップファイルは、例えば、代替的なMBR、セキュア起動環境に関するファイル、1以上のセキュリティエージェントに関するファイル及びコアオペレーティングシステムファイルなどを含むものであってもよい。バックアップコピーが作成されていない場合、ステップ2450において、バックアップコピーが作成される。バックアップコピーは、ストレージデバイスにローカルに格納されるか、又はプロテクションサーバなどにリモートに格納されてもよい。
ステップ2460において、セキュリティエージェント又はオペレーティングシステムがマルウェアにより感染されているか判断されてもよい。セキュリティエージェントは、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントを有してもよい。一実施例では、セキュリティエージェント及びオペレーティングシステムは、セキュリティエージェント及びオペレーティングシステムに関連する各種のプロテクトされたファイルのインテグリティを検証することによって、マルウェアについてチェックされてもよい。ハッシュアルゴリズムが、プロテクトされたファイルのインテグリティを検証するのに利用されてもよい。例えば、ハッシュ値は、プロテクトされたファイルのコンテンツを利用して各プロテクトファイルについて計算されてもよく、計算されたハッシュ値は、プロテクトされたファイルについて以前に生成されたハッシュ値と比較されてもよい。プロテクトされたファイルのハッシュ値が異なる場合、プロテクトされたファイルは、おそらくマルウェアにより修正されている可能性がある。いくつかの実施例では、ディスクマッピングビットマップは、プロテクトされた各ファイルがストレージデバイス上で格納されるセクタを特定し、プロテクトされた各ファイルについて以前に生成されたハッシュ値を有してもよい。当該実施例では、ディスクマッピングビットマップは、プロテクトされたファイルのコンテンツが格納されるセクタを決定するため照会されてもよく、プロテクトされたファイルのコンテンツを利用して、ハッシュ値が計算されてもよい。ディスクマッピングビットマップはまた、以前に生成されたハッシュ値が計算されたハッシュ値と比較されるように、プロテクトされたファイルについて以前に生成されたハッシュ値を抽出するよう照会されてもよい。プロテクトされたファイルのハッシュ値が異なる場合、マルウェア感染が仮定され、ステップ2470において、プロテクトされたファイルはマルウェア感染の可能性から復元されてもよい。プロテクトされたハッシュ値が一致する場合、プロテクトされたファイルは変更されていないもしれず、マルウェアにより感染していないかもしれない。この場合、本方法はステップ2480に移行し、セキュリティエージェントとオペレーティングシステムとがロードされてもよい。
ステップ2470において、マルウェア感染の可能性について復元が行われてもよい。当該復元は、感染している可能性のあるプロテクトされた各ファイルのバックアップコピーを抽出し、感染の可能性のあるプロテクトされたファイルを対応するバックアップファイルと置換することによって行われてもよい。バックアップコピーは、ローカルストレージデバイスに配置されてもよく、又はプロテクションサーバなどのリモートに配置されてもよい。バックアップコピーを利用して感染の可能性のあるプロテクトされたファイルを置換する前に、バックアップファイルのインテグリティがまた、バックアップファイルがマルウェアにより感染していないことを保証するため検証されてもよい。
プロテクトされたファイルが対応するバックアップコピーを用いて復元された後、ステップ2480において、セキュリティエージェントとオペレーティングシステムとがロードされてもよい。セキュリティエージェントは、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントを含むものであってもよい。O/S下位セキュリティエージェントは、オペレーティングシステムの下位の優先度レベルで実行され、O/S内セキュリティエージェントは、オペレーティングシステムにおける又は上位の優先度レベルで実行されてもよい。O/S下位セキュリティエージェント及びO/S内セキュリティエージェントは、マルウェアから電子デバイスをプロテクトするよう連係してもよい。例えば、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントは、未認証のアクセスからストレージデバイスなどの電子デバイスのリソースをプロテクトしてもよい。いくつかの実施例では、O/S下位セキュリティエージェント、O/S内セキュリティエージェント及び/又はオペレーティングシステムのセキュアな起動を提供する電子デバイスのコンポーネントに対して、プロテクションが提供されてもよい。例えば、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントは、ステップ2410〜2470を実行するこれらのコンポーネントをプロテクトしてもよい。このようにして、電子デバイスが次に開始されると、ステップ2420においてロードされるセキュア起動環境がマルウェアにより制約されないかもしれない。
図24からの方法のステップは、連続的、定期的、要求に応答して、又はマルウェア及び/又は他の疑わしい動作の検出を含むものであってもよいイベントのトリガに応答して、ストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図25は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境を提供する方法2500の実施例である。ステップ2505において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリのイメージを特定及び検証すること、暗号化ハッシュを利用すること、及び/又は秘密鍵を利用することを含む、何れか適切な方法を利用して実行されてもよい。ステップ2505が終了すると、他のステップの処理は保留されてもよい。ステップ2510において、セキュリティルールが取得されてもよい。セキュリティルールは、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントによってストレージデバイス上にローカルに格納されるか、あるいは、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ2515〜1475における判定を行うのに利用されてもよい。
ステップ2515において、プロテクトされたファイルにアクセスするための試行がインターセプトされてもよい。インターセプトされた試行は、O/S内セキュリティエージェントなどによって、オペレーティングシステムレベルにおいて又は上位で行われてもよく、あるいは、O/S下位セキュリティエージェントなどによりオペレーティングシステムの下位のレベルで行われてもよい。プロテクトされたファイルは、MBR、1以上のセキュリティエージェントに関するファイル、1以上のセキュリティエージェントを起動するのに利用されるファイル(図21からのロードモジュール2102など)、及びコアオペレーティングシステムファイルを含むものであってもよい。プロテクトされたファイルは、セキュリティルールにより指定されてもよい。ステップ2520において、プロテクトされたファイルのエントリがディスクマッピングビットマップに追加される必要があるか判断されてもよい。ディスクマッピングビットマップは、ファイル又は他のデータ構造として実現されてもよく、プロテクトされた各ファイルが配置されるストレージデバイス上のセクタやプロテクトされた各ファイルに関連するハッシュ値などのプロテクトされたファイルに関する情報を格納してもよい。ディスクマッピングビットマップが、ステップ2515においてアクセスされているプロテクトされたファイルについて当該情報を有しない場合、プロテクトされたファイルのエントリがディスクマッピングビットマップに追加されてもよい。例えば、ディスクマッピングビットマップは、プロテクトされたファイルが格納されるセクタを指定しなくてもよく、あるいは、プロテクトされたファイルのハッシュ値を指定しなくてもよい。当該情報がディスクマッピングビットマップから欠落している場合、ステップ2525において、ディスクマッピングビットマップは、当該情報を含むよう更新されてもよい。ディスクマッピングビットマップを更新するため、プロテクトされたファイルのコンテンツを格納するセクタが特定され、プロテクトされたファイルのコンテンツを利用して、ハッシュ値が生成されてもよい。プロテクトされたファイルが格納されるストレージデバイス上のセクタの決定は、ファイルシステムをクエリし、プロテクトされたファイルのセクタレイアウトを決定するためマスタフォーマットテーブル(MFT)にアクセスすることに関するものであってもよい。プロテクトされたファイルのコンテンツが、その後、ストレージデバイスの適切なセクタから抽出され、暗号化ハッシュアルゴリズムへの入力としてプロテクトされたファイルのコンテンツを利用して、ハッシュ値が計算されてもよい。プロテクトされたファイルの対応するセクタ及び計算されたハッシュ値が、その後、ディスクマッピングビットマップに格納されてもよい。
ステップ2530において、プロテクトされたファイルへのアクセスが許可されているか判断されてもよい。当該判定は、O/S内セキュリティエージェントなどによりオペレーティングシステムのレベルにおいて又は上位で行われ、あるいは、O/S下位セキュリティエージェントなどによりオペレーティングシステムの下位のレベルで行われてもよい。プロテクトされたファイルにアクセスするための試行されたリクエストに関するコンテクスト情報は、要求元のエンティティがプロテクトされたファイルにアクセスするのに許可されているか決定するためのセキュリティルールに関して解析されてもよい。例えば、セキュリティルールは、オペレーティングシステム、特定のアプリケーション及び/又は特定のデバイスドライバがプロテクトされたファイルにアクセスすることが許可されているか否か指定してもよい。セキュリティルールはまた、プロテクトされたファイルにアクセスすることが許可されている要求元のエンティティについて、リード、ライト又は実行などのアクセスパーミッションを指定してもよい。プロテクトされたファイルへのアクセスが許可されていない場合、ステップ2555において、アクセスは拒絶されてもよい。プロテクトされたファイルへのアクセスが許可されている場合、ステップ2535において、プロテクトされたファイルは更新されているか判断されてもよい。プロテクトされたファイルが更新されている場合、ステップ2540において、ディスクマッピングビットマップがまた更新されてもよい。例えば、プロテクトされたファイルに対する更新が、ファイルを格納するのに利用されるストレージデバイス上のセクタを変更させる場合、ディスクマッピングビットマップは、プロテクトされたファイルを格納するのに利用される適切なセクタを特定するため更新されてもよい。さらに、プロテクトされたファイルに対する新たなハッシュ値がディスクマッピングビットマップにおいて生成及び格納されてもよい。ステップ2545において、プロテクトされたファイルのバックアップコピーがまた、プロテクトされたファイルに対する直近の更新を反映するよう更新されてもよい。
プロテクトされたファイルへのアクセスが認証されている場合、ステップ2550において、プロテクトされたファイルへのアクセスは許可されてもよい。プロテクトされたファイルへのアクセスが認証されていない場合、ステップ2555において、アクセスは拒絶され、ステップ2560において、アクセス試行に関する疑わしい情報が、プロテクションサーバに報告されてもよい。
ステップ2565において、電子デバイスのシャットダウンが検出されたか判断されてもよい。シャットダウンが検出されない場合、本方法はステップ251において再開され、プロテクトされたファイルにアクセスするための試行をインターセプトし続けてもよい。シャットダウンが検出された場合、MBRのインテグリティがステップ2570におうて検証され、電子デバイスの次のスタートアップ時には、マルウェア感染したMBRはブートされないことを保証してもよい。MBRのインテグリティは、MBRのコンテンツを利用してハッシュ値を計算し、計算されたハッシュ値とディスクマッピングビットマップからの以前に生成されたハッシュ値とを比較することによって検証されてもよい。これらのハッシュが異なる場合、MBRは変更されている可能性があり、バックアップコピーと置換されてもよい。MBRのインテグリティが検証された後、ステップ2575において、電子デバイスがシャットダウンされてもよい。
図25からの方法のステップは、連続的、定期的、要求に応答して、又はイベントのトリガに応答してストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図26は、未認証のアクセスからストレージデバイス2606をプロテクトするシステム900の実施例である。システム900は、トリガイベントハンドラ2608に通信接続されるO/S下位セキュリティエージェント2616を有してもよい。O/S下位セキュリティエージェント2616は、電子デバイス2601のストレージデバイス2606にアクセスするための試行をトラップするよう構成されるO/S下位トラップエージェント2604を有してもよい。O/S下位トラップエージェント2604は、トラップされたアクセスリクエストに関するトリガイベントを作成し、トリガイベントをトリガイベントハンドラ2608に送信するよう構成されてもよい。トリガイベントハンドラ2608は、トリガイベントをどのように処理するか判断するため、1以上のセキュリティルール2614又はプロテクションサーバ2602を照会するよう構成されてもよい。トリガイベントハンドラ2608はまた、ストレージデバイス2606を覆すためのマルウェア又は悪意ある試行の表示であるとトリガイベントの傾向を評価するよう構成されてもよい。さらに、トリガイベントハンドラ2608は、トリガイベントが許可又は拒絶されるべきかの判定をO/S下位トラップエージェント2604に提供するよう構成されてもよく、あるいは、他の訂正アクションを生成するよう構成されてもよい。O/S下位セキュリティエージェント2616は、オペレーティングシステム2612上で実行されるO/S内セキュリティエージェント2618に通信接続されてもよい。システム900は、バックアップストレージデバイス2620を利用して、ストレージデバイス2606上でデータを復元するよう構成されてもよい。
電子デバイス2601は、図1の電子デバイス103、図2の電子デバイス104、図4の電子デバイス404、図7の電子デバイス701及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。電子デバイス2601は、メモリ1603に接続される1以上のプロセッサ2602を有してもよい。プロセッサ2602は、図2のプロセッサ208、図4のプロセッサ406、図7のプロセッサ702及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ2603は、図2のメモリ207、図4のメモリ408、図7のメモリ703及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。電子デバイス2601は、O/S内セキュリティエージェント2618を含むオペレーティングシステム2612を有してもよい。オペレーティングシステム2612は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント2618は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
ストレージデバイス2606は、図1のリソース106、図2のシステムリソース214、図4のストレージ426又は図5のI/Oデバイス502の機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。ストレージデバイス2606は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、ストレージデバイス2606は、限定することなく、ダイレクトアクセスストレージデバイス(ハードディスクドライバ又はフロッピー(登録商標)ディスクなど)、シーケンシャルアクセスストレージデバイス(テープディスクドライブなど)、コンパクトディスク、CD−ROM、DVD、RAMディスク、及び/又はフラッシュメモリ(フラッシュベースソリッドステートドライブなど)を含むものであってもよい。ストレージデバイス2606は、マスストレージデバイスを有してもよい。ストレージデバイス2606は、限定することなく、PCI、シリアルATA、USB又はFirewireを含みうるシステムバスとの接続タイプ又はインタフェース方法に関係なく、電子デバイス2601に接続されるストレージデバイスを有してもよい。ストレージデバイス2606は、パーシスタントブロックデバイスを有してもよい。ストレージデバイス2606は、それぞれが固定量のデータを格納可能な1以上のセクタ924に分割されてもよい。例えば、ストレージデバイス2606は、何れか適切なセクタサイズが利用されてもよいが、それぞれが512バイトのセクタに分割されてもよい。ストレージデバイス2606上のセクタ924は、スタティック又はダイナミックであってもよい。スタティックセクタの位置は固定され、ダイナミックセクタは固定されない。例えば、マスタブートレコード2626(MBR)はスタティックであり、ストレージデバイス2606の第1セクタであるセクタ0に配置される。プロテクションを要求するダイナミックセクタは、マスタファイルテーブル(すなわち、ファイルシステムに格納されるすべてのファイルに関するメタデータを含むファイル)、オペレーティングシステムカーネルファイル、デバイスドライバ、及びO/S下位セキュリティエージェント2616若しくはO/S内セキュリティエージェント2618などのアンチマルウェアアプリケーションを格納するセクタを含む。ダイナミックセクタは固定されていないため、ダイナミックセクタに格納されるファイルは、ファイルシステム上の概念的な存在から、ファイルからのデータがあるストレージデバイス2606の物理セクタにマッピングされる必要がある。
O/S下位セキュリティエージェント2616は、図1のO/S下位トラップエージェント104、図2のSVMM216、図4のファームウェアセキュリティエージェント440、442若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、又は図7のマイクロコードセキュリティエージェント708の機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。図4のファームウェアセキュリティエージェント440若しくは442又は図5のファームウェアセキュリティエージェント516の機能によりO/S下位セキュリティエージェント2616を実現する実施例では、O/S下位セキュリティエージェント2616は、ストレージデバイス2606のファームウェアにより実現されてもよい。トリガイベントハンドラ2608は、図1のトリガイベントハンドラ108、図2のSVMMセキュリティエージェント217、図4のO/S下位エージェント450、又は図7のO/S下位エージェント712の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。図4のファームウェアセキュリティエージェント440若しくは442又は図5のファームウェアセキュリティエージェント516の機能によりトリガイベントハンドラ2608を実現する実施例では、トリガイベントハンドラ2608は、ストレージデバイス2606のファームウェアにより実現されてもよい。各種実施例では、O/S下位セキュリティエージェント2616の機能の一部は、トリガイベントハンドラ2608により実行されてもよく、あるいは、トリガイベントハンドラ2608の機能の一部は、O/S下位セキュリティエージェント2616により実行されてもよい。さらに、O/S下位セキュリティエージェント2616及びトリガイベントハンドラ2608は、同一のソフトウェアモジュールにより実現されてもよい。
O/S下位セキュリティエージェント2616は、電子デバイス2601のオペレーティングシステム2612より下位の機能レベルにより実現されてもよい。例えば、O/S下位セキュリティエージェント2616は、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610によりストレージデバイス2606の試行されたアクセスをインターセプトしてもよい。O/S下位セキュリティエージェント2616は、オペレーティングシステムを利用することなく電子デバイス2601のプロセッサ上で実行されてもよい。一実施例では、O/S下位セキュリティエージェント2616は、ベアメタル環境又は実行レベルで実行されてもよい。さらに、O/S下位セキュリティエージェント2616は、電子デバイス2601のすべてのオペレーティングシステム2612よりも、電子デバイス2601のプロセッサにより規定されるように上位の優先度リングで実行されてもよい。例えば、より小さな数字がより高い優先度を表すプロテクションリングを使用する階層的プロテクションドメインモデルに関して、オペレーティングシステム2612は“Ring0”で動作し、下位O/Sセキュリティエージェント2616は“Ring−1”で動作してもよい。ドライバ2611及びアプリケーション2610は、“Ring0”又は“Ring3”で動作してもよい。電子デバイス2601のオペレーティングシステムは、Ring0で実行されてもよい。
“Ring−1”で実行されることによって、O/S下位セキュリティエージェント2616は、オペレーティングシステム2612などのオペレーティングシステムを完成居させるマルウェアの多くを回避してもよい。O/S下位セキュリティエージェント2616は、Ring0又はそれより上位で実行されるエンティティにトランスペアレントに実行されてもよい。従って、ストレージデバイス2606にアクセスする試行は、O/S下位セキュリティエージェント2616が存在するかにかからわず、同じ方法によりオペレーティングシステム2612又は他のエンティティによりリクエストされてもよい。ストレージデバイス2606にアクセスするリクエストを実行する際、O/S下位セキュリティエージェント2616は、当該リクエストを許可若しくは拒絶、ストレージデバイス2606上のデータを破壊、ストレージデバイス2606のメディアサーファスを破壊、ストレージデバイス上のデータを暗号化又は他の訂正アクションを実行してもよい。リクエストを拒絶するため、O/S下位セキュリティエージェント2616は、単に当該リクエストがストレージデバイス2606又はプロセッサ2602に到達することを阻止してもよく、又はオペレーティングシステム2612に当該アクションが行われたと確信させるため、当該リクエストに対してスプーフされた又はダミーリプライを提供してもよい。リクエストを許可するため、O/S下位セキュリティエージェント2616は、単に当該リクエストをストレージデバイス2606又はプロセッサ2602にわたしてもよい。データを破壊するため、O/S下位セキュリティエージェント2616は、ストレージデバイス2606上にデータを上書き又は削除するよう構成されてもよい。ストレージデバイス2606のメディアサーファスを破壊するため、O/S下位セキュリティエージェント2616は、ストレージデバイス2606をデータのリード又はライトを実行不可にするためのアクションを実行してもよい。ストレージデバイス2606上のデータを暗号化するため、O/S下位セキュリティエージェント2616は、何れか適切な暗号化アルゴリズムを利用して、ストレージデバイス2606上のデータを暗号化し、暗号化されたデータによってストレージデバイス2606上の未暗号データを置換してもよい。
O/S下位セキュリティエージェント2616は、ストレージデバイス2606にアクセスするリクエストをトラップするよう構成されるO/S下位トラップエージェント2604を有してもよい。ストレージデバイス2606にアクセスするためのリクエストは、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610により開始されてもよい。O/S下位トラップエージェント2604は、リクエストを開始する要求元のエンティティを特定するよう構成されてもよい。O/S下位トラップエージェント2604はさらに、トラップされたアクセス試行に関するトリガイベントを作成し、当該イベントに関して実行すべき適切なアクションを決定するため、トリガイベントをトリガイベントハンドラ2608に送信するよう構成されてもよい。トリガイベントは、リクエスト、要求元エンティティ及びリクエストされたアクセスのタイプに関するストレージデバイス2606のエリア(セクタ及び/又はファイルなど)などの情報を有してもよい。リクエストに関するストレージデバイス2606のエリアは、ストレージデバイス2606の1以上のセクタであってもよいし、又はストレージデバイス2606に格納されているファイルであってもよい。要求元エンティティは、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610であってもよい。例えば、アプリケーション2610又はドライバ2611がストレージデバイス2606へのアクセスを要求する場合、トリガイベントは、アクセスを要求しているアプリケーション2610又はドライバ2611を示すものであってもよい。リクエストが特定のアプリケーション2610又はドライバ2611でなくオペレーティングシステム2612からのものである場合、トリガイベントは、当該リクエストがオペレーティングシステム2612からのものであることを示してもよい。リクエストされたアクセスのタイプは、ストレージデバイス2606からのリード、ストレージデバイス2606へのライト又はストレージデバイス2606上のコードの実行のためのリクエストを含むものであってもよい。
一実施例では、O/S下位セキュリティエージェント2604は、システムに対する攻撃、マルウェア感染又は他の何れかのセキュリティの脅威の可能性などのイベントを検出した後にのみ、ストレージデバイス2606にアクセスするためのリクエストをトラップするよう構成されてもよい。当該実施例では、システム100のリソースは、セキュリティの脅威の可能性が検出されるまで保全される。他の実施例では、O/S下位トラップエージェント2604は、セキュリティ脅威の可能性が検出されたかにかかわらず、いつでもストレージデバイス2606にアクセスするリクエストをトラップするよう構成されてもよい。
他の実施例では、O/S下位セキュリティエージェント2616は、ファイルの入出力のためドライバ又はシステムのファンクションに対するコールの実行をトラップすることによって、ストレージデバイス2606の試行されたアクセスをトラップするよう構成されてもよい。当該コールのトラップは、当該ドライバ又はシステムファンクションを含むメモリページがO/S下位セキュリティエージェント2616により特定及びセキュアにされるバーチャルメモリページレベルで実行されてもよい。この場合、O/S下位セキュリティエージェント2616は、例えば、バーチャルマシーンモニタ又はマイクロコードによって部分的又は完全に実現されてもよい。当該コールのトラップは、ドライバ又はシステムファンクションのコードセクションのメモリアドレスが、O/S下位セキュリティエージェント2616により特定及びセキュアにされる物理メモリアドレスレベルで実行されてもよい。この場合、O/S下位セキュリティエージェント2616は、例えば、マイクロコードにより部分的又は完全に実現されてもよい。マルウェアは、当該ファンクションを直接コールしてもよく、この場合、O/S下位セキュリティエージェント2616は、コール元がストレージデバイス2606の特定部分にアクセスするためのパーミッションを有しているか特定するため、当該ファンクションのコール元を決定してもよい。マルウェアは、例えば、ファイルファンクションの未ドキュメント化ファンクションをコールするか、又はファンクションを全くコールすることなくファンクションのコードセクションに直接分岐することによって、間接的に当該ファンクションをコールしてもよい。当該試行は、コール元の身元を隠蔽するか、又はマルウェアによるファイルI/Oの使用をあいまいにするため利用されてもよい。この場合、O/S下位セキュリティエージェント2616は、サブファンクションの実行をトラップすることによって、又はファイルI/Oファンクションのコードセクションを導くJMP又は分岐命令をトラップすることによって、試行されたファイルI/Oをトラップしてもよい。当該動作自体は疑わしいものであり、コール元が知られていない場合、O/S下位セキュリティエージェント2616は、当該試行されたアクセスのホストが疑わしく、当該試行がマルウェアを示す可能性があることを決定するよう構成されてもよい。
さらなる他の実施例では、O/S下位セキュリティエージェント2616は、ディスクにアクセスするため生成されるインタラプトをトラップすることによって、ストレージデバイス2606の試行されたアクセスをトラップするよう構成されてもよい。当該インタラプトは、ファイルI/Oのための通常のファンクションによりコールされてもよいし、又はマルウェアがファンクションの使用を回避し、ストレージデバイス2606に直接書き込みすることを試みることによって生成されてもよい。O/S下位セキュリティエージェント2616は、インタラプトのソースを決定し、インタラプトの性質を特定し、何れかのコンテクスト情報又はパラメータを特定し、インタラプトのターゲットを特定し、試行が疑わしいか判断するよう構成されてもよい。試行が疑わしいか否かの決定は、例えば、アクション自体が疑わしいか否かなど、コール元の身元を含むものであってもよい。例えば、マルウェアは、ある個数のセクタが書き込まれ(“MOV al,count”など)、書き込まれるトラックの特定(“MOV ch,track”など)、書き込まれるセクタの特定(“MOV cl,sector”など)、書き込まれるヘッドの特定(“MOV dh,head”など)、書き込まれるボリュームの特定(“MOV dl,drive”など)、実行されるファイルI/Oのタイプの特定(“MOV ah,03h”など)及びファイルに書き込まれるデータのメモリ位置(“MOV bx,buf”など)が汎用レジスタに移動される命令系列を実行するかもしれない。特定の汎用レジスタへの当該情報の割当ては、以降のファイルI/Oインタラプトのための情報をロードするための既知の方法であってもよい。これらの割当ては、“MOV”命令により行われてもよい。その後、“INT 13h”などのインタラプト13を生成する命令が実行されてもよい。O/S下位セキュリティエージェント2616は、コマンドをトラップし、ストレージデバイス2606の対象部分と共に、試行されたファイルI/Oの性質を決定するため、関連するレジスタのコンテンツを調べるよう構成されてもよい。O/S下位セキュリティエージェント2616は、当該処理のコール元がストレージデバイス2606の指定された部分にライトするパーミッションを有しているか判断するため、セキュリティルールを照会するよう構成されてもよい。O/S下位セキュリティエージェント2616は、コマンド系列が認証されたファイルI/Oドライバから発生したものであるか、又はそれらが未知の若しくは悪意あるプロセスにより直接実行されたか判断するため、実行履歴を調べるよう構成されてもよい。この場合、コール元は、それのステータスが当該動作に基づき悪意あると以前に知られていない場合でさえ、悪意あると判断されてもよい。最後に、標準的なファイルI/Oドライバのコールがインタラプトを実行するため行われたとしても、ドライバのコール元が特定され、O/S下位セキュリティエージェント2616は、コール元が対象となるストレージデバイス2606の部分にアクセスするためのパーミッションを有しているか判断するよう構成されてもよい。
O/S下位セキュリティエージェント2616は、マッピングエージェント2622を有してもよい。マッピングエージェント2622は、ファイルシステム上の概念的存在からファイルが格納されているストレージデバイス2606のセクタに当該ファイルをマッピングするよう構成されてもよい。一実施例では、マッピングエージェント2622は、O/S下位セキュリティエージェント2616と同じ優先度リングで動作してもよい。他の実施例では、マッピングエージェント2622は、O/S内セキュリティエージェント2618の一部として実現されてもよく、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610と同じ優先度リングで動作してもよい。さらなる他の実施例では、マッピングエージェント2622は、少なくとも1つのマッピングエージェントがO/S下位セキュリティエージェント2616と同じ優先度リングで動作し、少なくとも1つのマッピングエージェントがオペレーティングシステム2612、ドライバ2611又はアプリケーション2610の優先度リングで動作する2以上のマッピングエージェントにより実現されてもよい。マッピングエージェント2622は、O/S下位トラップエージェント2604又はトリガイベントハンドラ2608からファイルをマッピングするためのリクエストを受信し、ファイルが格納されるストレージデバイス2606上のセクタを提供することによって応答してもよい。当該実施例は、O/S下位トラップエージェント2604及び/又はトリガイベントハンドラ2608は、ストレージデバイス2606の同じセクタに常には格納されていなくてもよい動的に配置されたファイル又はデータにアクセスするためのリクエストを特定することを可能にしてもよい。例えば、マスタファイルテーブル、オペレーティングシステムカーネルファイル、デバイスドライバ及びアンチマルウェアソフトウェアの位置は、ストレージデバイス2606の同一セクタに常にあるとは限らず、マッピングエージェント2622は、これらのファイルが格納されているセクタを特定するのに利用されてもよい。いくつかの実施例では、マッピングエージェント2622は、プロテクトされたファイルが格納されているセクタを決定するため、ファイルシステムをクエリしてもよい。マッピングエージェント2622はまた、ディスクマッピングビットマップ2628を利用して、プロテクトされたファイルが格納されているストレージデバイス2606上のセクタを特定してもよい。ディスクマッピングビットマップ2628は、図23のディスクマッピングビットマップ2301の機能により実現されてもよく、又は当該機能を実現するよう構成されてもよい。ディスクマッピングビットマップ2628は、例えば、プロテクトされた各ファイルが格納されるストレージデバイスのセクタなどを含む、各種のプロテクトされたファイルに関する情報を含むものであってもよい。プロテクトされたファイルが更新される場合、ディスクマッピングビットマップ2628からの情報もまた更新されてもよい。このようにして、マッピングエージェント2622がファイルシステム上の概念的存在から、ファイルがあるストレージデバイス2606のセクタ924にプロテクトされたファイルをマッピングするためのリクエストを受信すると、マッピングエージェント2622は、プロテクトされたファイルに対応するセクタ924を特定するため、ディスクマッピングビットマップ2628を照会してもよい。
トリガイベントハンドラ2608は、相互に通信接続された1以上のイベントハンドラ又はセキュリティエージェントにより実現されてもよい。トリガイベントハンドラ2608及びO/S下位トラップエージェント2604は、同一のセキュリティエージェントにより実現されてもよい。一実施例では、トリガイベントハンドラ2608は、O/S下位トラップエージェント2604と同じ優先度リングにおいて動作してもよい。他の実施例では、トリガイベントハンドラ2608は、O/S内セキュリティエージェント2618の一部として実現されてもよく、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610と同じ優先度リングで動作してもよい。さらなる他の実施例では、トリガイベントハンドラ2608は、少なくとも1つのトリガイベントハンドラがO/S下位セキュリティエージェント2616と同じ優先度リングで動作し、少なくとも1つのトリガイベントハンドラがオペレーティングシステム2612、ドライバ2611又はアプリケーション2610の優先度リングにおいて動作する2以上のトリガイベントハンドラにより実現されてもよい。O/S下位トラップエージェント2604の優先度リングで実行することによって、トリガイベントハンドラ2608は、“Ring0”又は“Ring3”がエージェント自体をマルウェア感染する問題を同様に回避するかもしれない。しかしながら、オペレーティングシステム2612、ドライバ2611又はアプリケーション2610と共に“Ring0”又は“Ring3”で実行されるトリガイベントハンドラ2608は、“Ring−1”のエージェントの観点から利用不可であるストレージデバイス2606の試行されたアクセスに関するコンテクスト情報を提供することが可能であってもよい。
トリガイベントハンドラ2608は、O/S下位トラップエージェント2604からトリガイベントを受信及び処理するよう構成されてもよい。トリガイベントハンドラ2608はまた、O/S下位セキュリティエージェント2616及び/又は2604にセキュリティルール2614を提供するよう構成されてもよい。トリガイベントは、O/S下位トラップエージェント2604によりトラップされたストレージデバイス2606にアクセスするためのリクエストに関する情報を含むものであってもよい。トリガイベントハンドラ2608は、トリガイベントに関するコンテクスト情報と共に、1以上のセキュリティルール2614又はプロテクションサーバ2602を利用し、ストレージデバイス2606のプロテクトされたエリアにアクセスするための試行を特定し、適切なレスポンスを決定するよう構成されてもよい。例えば、トリガイベントハンドラ2608は、セキュリティルール2614を利用して、プロテクトされたセクタ及び/又はファイルなどのストレージデバイス2606のプロテクトされたエリアにアクセスするための試行を特定してもよい。トリガイベントハンドラ2608は、マッピングエージェント2622を利用して、プロテクトされたファイルにアクセスするためのリクエストを特定するのに使用してもよい。例えば、トリガイベントハンドラ2608は、ストレージデバイス2606上の対応するセクタにプロテクトされたファイルをマッピングするためのリクエストをマッピングエージェント2622に送信してもよい。マッピングエージェント2622は、マッピングエージェント2622は、プロテクトされたファイルに対応するセクタにより応答してもよい。トリガイベントハンドラ2608は、ファイルに対応するセクタにアクセスする試行を特定することによってmプロテクトされたファイルにアクセスするための試行を特定してもよい。プロテクトされたセクタ及び/又はファイルなどのプロテクトされたエリアにアクセスするための試行を特定した後、トリガイベントハンドラ2608は、プロテクトされたエリアにアクセスするための試行が認証されているか判断するため、セキュリティルール2614を照会するよう構成されてもよい。トリガイベントハンドラ2608はさらに、適切なアクションの決定をO/S下位セキュリティエージェント2616に提供するよう構成されてもよい。例えば、トリガイベントハンドラ2608は、トリガイベントが許可若しくは拒絶されるべきか、特定のデータ又はメディアサーファスが破壊されるべきか、又はデータが暗号化されるべきかO/S下位セキュリティエージェント2616に通知してもよい。
O/S下位セキュリティエージェント2616は、トリガイベントハンドラ2608又はO/S内セキュリティエージェント2618などのコンポーネントと共に又は単独で、ストレージデバイス2606にアクセスする典型的な信頼される方法を決定するよう構成されてもよい。例えば、ストレージデバイス2620のセクタに対するライト又はリードは、通常はファイルI/Oドライバによるコールを介し行われてもよい。従って、プロテクトされたセクタへのライトのトラップされた試行は、当該試行を行うのに利用された手順又はファンクションをO/S下位セキュリティエージェント2616が調べることによって評価されてもよい。セクatにアクセスする際に予想される動作からの乖離が観察され、マルウェアの徴候について評価されてもよい。例えば、O/S下位セキュリティエージェント2616が、プロテクトされたセクタに対する嗜好されたライトが、通常のファイルI/Oファンクション又はドライバを利用することなくインタラプト13への直接的なコールを介し行われたと判断した場合、当該試行されたライトは疑わしいものであるかもしれない。
バックアップストレージデバイス2620は、ストレージデバイス2606上のデータをバックアップ及び復元するのに利用されてもよい。例えば、O/S下位セキュリティエージェント2616及び/又はO/S内セキュリティエージェント2618は、ストレージデバイス2606からのデータをバックアップし、各種状況下で当該データを復元するよう構成されてもよい。セキュリティルール2614は、バックアップされることが認められているストレージデバイス2606の特定のセクタを指定してもよい。ストレージデバイス2606からのデータが復元を要求するとき、ストレージデバイス2606の適切なセクタが、バックアップストレージデバイス2620の対応するセクタからデータを用いて書き込まれてもよい。必要である場合、ストレージデバイス2606に対する複数のライトが復元プロセス中に利用されてもよい。いくつかの実施例では、ストレージデバイス2606からのデータは、当該データがコラプト又はマルウェア感染していると判断された場合、復元されてもよい。この判定は、マルウェアの存在を検出するため、ストレージデバイス2606のセクタをスキャンすることによって実行されてもよい。ストレージデバイス2606のセクタの実行中、マルウェアを有する又は関連すると知られているデータパターンを特定するため、ブラックリストが利用されてもよい。ブラックリストは、セキュリティルール2614により規定されてもよい。マルウェアに関連すると知られるデータパターンが検出された場合、感染したセクタがバックアップストレージデバイス2620から復元される。いくつかの実施例では、ディスクマッピングビットマップ2628が、各種のプロテクトされたファイルがマルウェアに感染しているか判断するため利用されてもよい。ディスクマッピングビットマップ2628の実施例の説明は、例えば、図23のディスクマッピングビットマップ2301の説明などに見つけられてもよい。ディスクマッピングビットマップ2628は、ストレージデバイス2606上のプロテクトされたファイルの位置を指定し、プロテクトされたファイルについて以前に生成されたハッシュ値を提供してもよい。ディスクマッピングビットマップ2628は、プロテクトされたファイルの位置を特定するため照会され、プロテクトされたファイルのコンテンツを用いてハッシュが計算され、計算されたハッシュがディスクマッピングビットマップ2628からの以前に生成されたハッシュ値と比較されてもよい。これらのハッシュ値が一致しない場合、プロテクトされたファイルはおそらくマルウェアにより変更されており、当該ファイルは、バックアップストレージデバイス2620から復元される。いくつかの実施例では、バックアップストレージデバイス2620はまた、ストレージデバイス2606上のデータを復元するのに利用される前にマルウェアについてチェックされる。バックアップストレージデバイス2620が件センしている場合、バックアップストレージデバイス2620からのバックアップデータは利用されず、及び/又は古いバックアップが利用されてもよく、又はストレージデバイス2606にアクセスするためのリクエストは拒絶されてもよい。
バックアップストレージデバイス2620からのデータは、マルウェアに感染している可能性のあるオペレーティングシステム2612のファイルシステム機構を利用することを回避するため、O/S下位セキュリティエージェント2616によってストレージデバイス2606に書き込みされてもよい。しかしながら、他の何れかセキュアなプロセスが、バックアップストレージデバイス2620からのデータによりストレージデバイス2606に対するデータを復元するのに利用されてもよい。各バックアップのメタデータが維持され、改訂番号、バックアップが作成された日時、及びバックアップに関連するアプリケーション2610若しくは他のエンティティを含むものであってもよい。バックアップストレージデバイス2620は、ネットワーク上などのストレージデバイス2606からリモートに配置されてもよい。例えば、バックアップストレージデバイス2620は、プロテクションサーバ2602に関連付けされてもよい。バックアップストレージデバイス2620がネットワーク上に配置されている場合、O/S下位セキュリティエージェント2616は、帯域外ネットワーク接続を利用して、マルウェア感染している可能性のあるオペレーティングシステムカーネルネットワークデバイスドライバを利用することを回避するため、バックアップストレージデバイス2620にアクセスしてもよい。この帯域外ネットワーク接続は、一実施例では、電子デバイス2601のネットワークカードに直接アクセスすることによって、バックアップストレージデバイス2620にアクセスするためのHTTPS、iSCSI、NFS又はCIFSクライアントの利用を可能にするActive Management Technology(AMT)を利用して実現されてもよい。
プロテクションサーバ2602は、ネットワーク上で動作し、クラウドコンピューティングスキームを実現してもよい。プロテクションサーバ2602は、セキュリティルール2614を格納し、O/S下位セキュリティエージェント2616、O/S内セキュリティエージェント2618及び/又はトリガイベントハンドラ2608などのシステム900の要素と通信し、セキュリティルール2614及び他の情報を提供するよう構成されてもよい。プロテクションサーバ2602は、バックアップストレージデバイス2620を有してもよい。バックアップストレージデバイス2620は、セキュリティルール2614及び/又はストレージデバイス2606からのバックアップデータを格納するため利用されてもよい。
セキュリティルール2614は、図1のセキュリティルール114、図2のセキュリティルール220、222、図4のセキュリティルール420、422、434、436、438、図5のセキュリティルール518、又は図7のセキュリティルール707、721、723の機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール2614の実施例の説明は、以下の図27の説明に見つけられてもよい。
図27は、未認証のアクセスからストレージデバイスをプロテクトするシステム又は方法により利用されるセキュリティルールの実施例である。セキュリティルール2700は、各イベントについてトラップ及び適切なレスポンスを要求するイベントを指定するための何れか適切なルール、ロジック、コマンド、命令、フラグ又は他の機構を含むものであってもよい。例えば、セキュリティルール2700は、トラップを要求するイベントを特定し、各イベントについて適切なレスポンスを決定するため、図26からのO/S下位セキュリティエージェント2616、O/S内セキュリティエージェント2618及び/又はトリガイベントハンドラ2608により利用されてもよい。セキュリティルール2700は、ストレージデバイスにアクセスするすべてのリクエストがトラップされることを要求してもよいし、又はリード、ライト及び/又は実行リクエストなどの特定タイプのリクエストのトラップのみを要求してもよい。セキュリティルール2700はさらに、プロテクションを要求するストレージデバイスのファイル又は特定のセクタなど、ストレージデバイスのプロテクトされたエリア2702を指定するルールを含むものであってもよい。プロテクトされた各エリア2702について、セキュリティルール2700は、プロテクトされた各エリア2702にアクセスすることが認証される又は認証されないオペレーティングシステム、アプリケーション又はドライバなどの要求元のエンティティ2704を指定してもよい。セキュリティルール2700はまた、プロテクトされたエリア2702にアクセスすることが許可されている各エンティティ2704について、プロテクトされたエリア2702のリード2706a、ライト2706b又は実行2706cなどのアクセスパーミッションを指定してもよい。
特定のセキュリティルール2700は、アプリケーション認知不能(application agnostic)又はアプルケーション固有のものであってもよい。アプリケーション認知不能なルールは、ストレージデバイスのプロテクトされたエリア2702へのアクセスを要求しているアプリケーションにかかわらず適用される。アプリケーション固有のルールは、ストレージデバイスのプロテクトされたエリア2702へのアクセスを、当該リクエストの発信元のアプリケーションに応じて許可又は禁止してもよい。ルール2710aは、マスタブートレコードに書き込むための何れかのエンティティによるリクエストが拒絶されるべきであることを指定するアプリケーション認知不可なルールの一例である。ルール2710bは、他の何れかのエンティティがストレージデバイス上のセキュリティエージェントのイメージへの書き込みを禁止しながら、セキュリティエージェントがストレージデバイス上の自らのイメージに書き込むことを許可するアプリケーション固有のルールの一例である。ルール2710c及び2710dはまた、アプリケーション固有のルールの一例である。ルール2710cは、インターネットエクスプローラアプリケーションのコードページが何れかのエンティティにより書き込まれてはならないことを指定する。ルール2710dは、インターネットエクスプローラアプリケーションのデータページへのライトの他の何れかのエンティティからのリクエストが拒絶される一方、インターネットエクスプローラアプリケーションのデータページへのライトのリクエストが、当該リクエストがインターネットエクスプローラアプリケーションからのものである場合には許可されることを指定する。
セキュリティルール2700は、アプリケーション及びオペレーティングシステムがデータやコードページなどの各自の情報の必要なプロテクションを指定することを可能にするため、アプリケーション又はオペレーティングシステムにより規定されてもよい。セキュリティルール2700はまた、アドミニストレータにより設定され、図26からのプロテクションサーバ2602などにリモートに格納されてもよい。セキュリティルール2700は、リモート位置から抽出及び/又は更新されてもよい。
いくつかの実施例では、セキュリティルール2700は、ストレージデバイスへのアクセスを許可する前に、図26からのプロテクションサーバ2602などのプロテクションサーバとのネットワーク接続を要求してもよい。プロテクションサーバとの接続が利用不可である場合、セキュリティルール2700は、ストレージデバイスへのアクセスを禁止し、ストレージデバイスのメディアサーファス又はデータを破壊してもよい。例えば、セキュリティルール2700は、図26からのO/S下位セキュリティエージェント2616などのセキュリティエージェントが、指定された日数の間にプロテクションサーバに接続できない場合、セキュリティエージェントは、ストレージデバイスのセキュリティが危険にさらされたと想定してもよいことを指定してもよい。当該実施例では、ストレージデバイス上のデータは、物理的に危険にされされた場合であってもセキュアにされる。
図28は、未認証のアクセスから電子デバイスのストレージデバイスをプロテクトする方法の実施例である。ステップ2805において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリにおけるイメージの特定及び検証、暗号化ハッシュ又は秘密鍵を含む何れか適切な方法を利用して実行されてもよい。ステップ2805が終了すると、他のステップの処理は、特定の実施例では保留されてもよい。
ステップ2810では、セキュリティルールが取得される。セキュリティルールは、O/S下位セキュリティエージェント、O/S内セキュリティエージェント若しくはトリガイベントハンドラによりローカルに格納されてもよく、あるいは、セキュリティルールは、例えば、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ2815〜2860における判定を行うのに利用されてもよい。ステップ2815において、セキュリティの脅威が検出されたか判断される。例えば、O/S下位セキュリティエージェント及び/又はO/S内セキュリティエージェントは、電子デバイス上でマルウェアを特定してもよく、又は電子デバイスを感染させるためのマルウェアによる試行を特定してもよい。セキュリティの脅威が検出されなかった場合、アクションは実行されなくてもよい。セキュリティの脅威が検出された場合、ステップ2820において、O/S下位セキュリティエージェントは、ストレージデバイスへのアクセスをトラップするよう命令される。いくつかの実施例では、O/S下位セキュリティエージェントは、セキュリティの脅威が検出されたかにかかわらず、認証プロセス後にストレージデバイスへのアクセスをトラップするよう命令される。
ステップ2825において、ストレージデバイスにアクセスするためのリクエストがトラップされる。当該トラップは、電子デバイス上で実行されるオペレーティングシステムより下位の優先度リングにおいて実行されるソフトウェアにより実行されてもよい。例えば、O/S下位セキュリティエージェントは、トラップ機能を実行してもよい。ステップ2830において、トラップされたリクエストに関するストレージデバイスのセクタがマルウェアに感染したか判断される。この判定は、マルウェアの存在を検出するため、ストレージデバイスのセクタをスキャンすることによって実行されてもよい。ストレージデバイスのセクタのスキャン中、ブラックリストは、マルウェアを有するか又は関連すると知られるデータパターンを特定するのに利用されてもよい。マルウェアに関連すると知られるデータパターンが検出された場合、ステップ2835において、感染したセクタがバックアップストレージデバイスから復元される。いくつかの実施例では、バックアップストレージデバイスはまた、ストレージデバイスを復元するのに利用される前にマルウェアについてスキャンされる。バックアップストレージデバイスが感染している場合、バックアップは利用されず、及び/又は古いバックアップが利用されるか、又はストレージデバイスにアクセスするリクエストは拒絶されてもよい。
ステップ2840において、ストレージデバイスのプロテクトされたセクタへのアクセスが要求されたか判断される。プロテクトされたセクタは、セキュリティルールにより規定されてもよい。セキュリティルールは、特定のセクタがプロテクトされることを要求するものであってもよいし、又は動的に配置される特定のファイル及び/又はデータがプロテクトされることを要求するものであってもよい。例えば、セキュリティルールは、スタティックであって、ストレージデバイスの第1セクタ(セクタ0)に配置されるマスタブートレコードのプロテクションを要求するものであってもよい。他の例として、セキュリティルールはまた、マスタファイルテーブル、オペレーティングシステムカーネルファイル、デバイスドライバ又はアンチマルウェアソフトウェアのプロテクションを要求するものであってもよい。これらのファイルは、動的な位置を有してもよく、常に同一のセクタに格納されるとは限らない。動的に格納されたファイル又はデータがプロテクションを要求する場合、ファイル又はデータは、ファイルシステムのそれの概念的な存在から、当該ファイル又はデータがあるストレージデバイスの実際のセクタにマッピングされる。ストレージデバイスにアクセスするリクエストがプロテクトされたセクタに関するものでない場合、ステップ2850において、ストレージデバイスにアクセスするリクエストは許可される。ストレージデバイスにアクセスするリクエストがプロテクトされたセクタに関するものである場合、ステップ2845において、プロテクトされたセクタへのアクセスが認証されているか判断される。ストレージデバイスにアクセスするための試行されたリクエストに関するコンテクスト情報がセキュリティルールに関して解析され、要求元のエンティティがプロテクトされたセクタにアクセスすることが許可されているか判断してもよい。例えば、セキュリティルールは、オペレーティングシステム、特定のアプリケーション又は特定のデバイスドライバがプロテクトされたセクタにアクセスすることが許可されているか否か指定してもよい。セキュリティルールはまた、プロテクトされたセクタにアクセスすることが許可されている要求元のエンティティについてリード、ライト又は実行などのアクセスパーミッションを指定してもよい。
プロテクトされたセクタへのアクセスが許可されている場合、ストレージデバイスにアクセスするためのリクエストは許可される。プロテクトされたセクタへのアクセスが許可されていない場合、ステップ2855において、ストレージデバイスにアクセスするためのリクエストは拒絶される。いくつかの実施例では、他の訂正アクションが実行されてもよい。例えば、ストレージデバイス上のデータは破壊又は暗号化されてもよいし、又はストレージデバイスのメディアサーファスが破壊されてもよい。ストレージデバイスにアクセスするためのリクエストが許可されていない場合、ステップ2860において、ストレージデバイスにアクセスするための試行は、プロテクションサーバに報告される。当該報告は、関連する何れかのマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
図28からの方法のステップは、連続的、定期的、要求に応答して、又はイベントのトリガに応答してストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図29は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにするシステム2900の実施例である。システム2900は、電子デバイス2904のアプリケーションI/Oパスに対するマルウェアのgこうげきに対してプロテクトされるべき電子デバイス2904を有してもよい。電子デバイス2904は、O/S下位セキュリティエージェント2916、I/Oデバイス2926、アプリケーション2910、オペレーティングシステム2912及びドライバ2911を有してもよい。電子デバイス2904は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス401、図7の電子デバイス701及び/又はこれらの何れかの組み合わせの機能によって全体的又は部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント2916は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント2916は、マルウェアから電子デバイス2904のアプリケーションI/Oパスをセキュアにするよう構成されてもよい。I/Oデバイス2926は、図2のデバイス226、図4のディスプレイ424若しくはストレージ426、図5の入出力デバイス502、及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション2910は、図1のアプリケーション110、図2のアプリケーション210、図4のアプリケーション410、図7のアプリケーション709及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ2911は、図1のドライバ111、図2のドライバ211、図4のドライバ411、図7のドライバ711及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム2912は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
図29の矢印により示され、また以下の図30に関して説明されるように、O/S下位セキュリティエージェント2916は、アプリケーションI/Oパスを介しデータの送信に対してトラップしてもよい。トラップすると、O/S下位セキュリティエージェント2916は、I/Oライトアクセスに関してアプリケーション2910からI/Oデバイス2926に配信されるコンテンツをインターセプトしてもよい。O/S下位セキュリティエージェント2916は、インターセプトされたI/Oコンテンツを修正し、修正されたコンテンツを通常のI/Oパスを介し(例えば、オペレーティングシステム3112及びドライバ3111などを介し)送信してもよい。当該修正されたコンテンツは、I/Oパスデータをインターセプト可能なマルウェアが実際のユーザデータの代わりにダミーデータをインターセプトするように、“スプーフ”又は“ダミー”コンテンツを有してもよい。O/S下位セキュリティエージェント2916は、それがI/Oデバイス2926のデバイスドライバに到着するとき、修正されたI/Oコンテンツをインターセプトし、それを元のコンテンツと置換し、マルウェア攻撃からI/O送信をセキュアにしてもよい。さらに、O/S下位セキュリティエージェント2916は、ルール(セキュリティルール114、220、222、438、434、436、518、707、721及び/又は723など)に基づき、通常のI/Oパスを介し送信される修正されたコンテンツがマルウェア的な動作(修正されたコンテンツがスニフ(sniff)、フック(hook)及び/又は攻撃されたことを示す動作など)により影響を受けたか検出し、マルウェア的な動作が検出された場合、訂正アクションを実行してもよい。いくつかの実施例では、O/S下位セキュリティエージェント2916は、プロテクションサーバ202とマルウェア的な動作の発生に関する情報を通信してもよい。例えば、O/S下位セキュリティエージェント2916は、電子デバイス2904及び/又は他の電子デバイスに対するさらなる感染を阻止し、及び/又はマルウェア的動作を生じさせるマルウェアを特定するためプロテクションサーバ202を支援するフォレンジック情報をプロテクションサーバ202に通信してもよい。当該フォレンジック情報は、限定することなく、当該動作が行われた電子デバイスの身元、マルウェア的動作を特定するO/S下位セキュリティエージェント、マルウェア的動作が行われたデバイス2926及び/若しくはアプリケーションI/Oパス、O/S下位セキュリティエージェントによりI/Oパスに配置された修正されたコンテンツ、及び/又はインターセプトされた修正されたデータ(マルウェアの可能性により修正されたデータに行われる修正を示す)を含むものであってもよい。
アプリケーション2910と入出力デバイス2926との間のパスが特定数の要素と共に示されるが、当該パスは、アプリケーション2910と入出力デバイス2926との間の入力又は出力パスを実現するのに必要とされる個数のコンポーネントを含むものであってもよい。例えば、オペレーティングシステム2912及びドライバ2910は、アプリケーション2910と入出力デバイス2926との間で情報をわたすための複数のサブコンポーネントを有してもよい。オペレーティングシステム2912、ドライバ111及びこれらのサブコンポーネントは、システム又はドライバにより規定されたファンクションを用いて互いにコールするよう構成されてもよい。O/S下位セキュリティエージェント2916は、アプリケーション2910と入出力デバイス2926との間の入出力パスに沿って何れかの通信又は処理をトラップするよう構成されてもよい。例えば、WindowsTM環境では、デバイス2926にイメージを配置するため、アプリケーション2910は、デバイス2926により実現されるディスプレイに対する入出力を処理するグラフィックI/Oドライバをコールするよう構成されるNtGDIBBitBltファンクションを利用してwin32k.sysをコールするよう構成されるNtGDIBBitBltファンクションを用いてndtll.dllをコールするよう構成されるBitBltファンクションを用いてgdi32.dllをコールするよう構成されてもよい。O/S下位セキュリティエージェント2916は、例えば、当該ファンクションのコードセクションを含むメモリ位置の実行をトラップするなどによって、当該ファンクションコールの実行をトラップするよう構成されてもよい。メモリ位置は、例えば、バーチャルメモリページ又は物理メモリのアドレスレンジなどを含むものであってもよい。
O/S下位セキュリティエージェント2916は、アプリケーション2910とデバイス2926との間のパスに沿ってコマンド又は情報を通信するためのファンクションのコール元を決定し、それらが認証されたエンティティにより実行されたものであるか判断するよう構成されてもよい。例えば、ドライバ2911のファンクションは、2911のファンクションにアクセスするためシステムにより提供される方法を利用する代わりに(オペレーティングシステム2912のファンクションなど)、悪意あるプロセスにより直接コールされる可能性がある。O/S下位セキュリティエージェント2916は、ドライバ2911のファンクションの実行をトラップし、当該アクセスの発信元のメモリアドレスに基づき、アプリケーション2910がドライバ2911を直接コールしたと判断し、当該コールがオペレーティングシステム2912内の認証されたエンティティからのものでなかったと判断するよう構成されてもよい。当該アクセスは、オペレーティングシステム2912内のセキュリティ手段を回避するよう実行されているかもしれない。O/S下位セキュリティエージェント2916は、当該アクセスがマルウェアを示していると判断し、試行されたアクセスを拒絶するよう構成されてもよい。
さらに、O/S下位セキュリティエージェント2916は、入力及び出力バッファに対応するメモリ位置への情報の試行されたリード又はライトをトラップすることによって、アプリケーション2910とデバイス2926との間の情報の通信をトラップするよう構成されてもよい。例えば、オペレーティングシステム2912は、I/Oバッファに情報を書き込み、デバイス2926に送信すべきバッファ内の情報を抽出するため、ドライバ2911のファンクションをコールしてもよい。当該バッファは、情報のサイズのためパラメータとして情報を直接わたす代わりに利用されてもよい。従って、O/S下位セキュリティエージェント2916は、例えば、I/Oバッファのバーチャルメモリページ又は物理アドレスレンジなどへのリード又はライトアクセスをトラップするよう構成されてもよい。O/S下位セキュリティエージェント2916は、I/Oバッファにアクセスするエンティティの身元を、当該エンティティがI/Oバッファをリード又はライトすることが許可されているか判断するため決定するよう構成されてもよい。例えば、O/S下位セキュリティエージェント2916は、キーボードデータのバッファへの試行されたアクセスをトラップするよう構成されてもよい。アプリケーション2910がバッファから情報を直接リードすることを試行する場合(すなわち、オペレーティングシステム2912を介した通常のコールチェーンの範囲外)、O/S下位セキュリティエージェント2916は、バッファのキーボードデータの試行された直接的なアクセスがキーロガーなどのマルウェアを示すため、アクセスを拒絶するよう構成されてもよい。他の例では、ディスプレイデータのためのバッファが、スクリーンキャプチャマルウェアを阻止するためアクセスからプロテクトされてもよい。さらなる他の例では、ネットワーク出力のためのバッファは、DoS攻撃の生成又はパケット修正を阻止するため、アクセスからプロテクトされてもよい。
従って、いくつかの実施例では、O/S下位セキュリティエージェント2916は、バッファに対するリード又はライトが許可されていると知られていないI/Oバッファにアクセスするエンティティに対するすべてのアクセスをブロックするよう構成されてもよい。当該実施例では、エンティティが悪意あるシグネチャについて当該エンティティをスクANすることによりマルウェアとして以前に特定されていなくても、マルウェアステータスが知られていないアプリケーション2910又は他のエンティティがブロックされてもよい。他の実施例では、O/S下位セキュリティエージェント2916は、バッファへのアクセスを既知のコールチェーン内のバッファの直接的な下位又は上位にあるドライバ、インタフェース、アプリケーション又は他のエンティティのみに許可するよう構成されてもよい。同様に、O/S下位セキュリティエージェント2916は、ドライバ2911又はオペレーティングシステム2912のファンクションへのアクセスを、既知のコールチェーン内のバッファの直接的な下位又は上位にあるドライバ、インタフェース、アプリケーション又は他のエンティティのみに許可するよう構成されてもよい。当該既知のコールチェーンは、既知の安全なシステムが理解する典型的な処理、プロファイル、及びアプリケーション2910とデバイス2926との間のパスに沿ってエンティティが相互にコールするベンチマークを観察することによって規定されてもよい。当該既知の安全な処理の特徴は、O/S下位セキュリティエージェント2916にアクセス可能なセキュリティルールに実現されてもよい。ドライバ2911などのドライバ若しくはオペレーティングシステム2912のコンポーネントへのコール、又は当該既知のチェーンの外部のI/Oバッファに対するコールが拒絶されてもよい。
O/S下位セキュリティエージェント2916は、アプリケーション2910とデバイス2926との間のパス内のコールをトラップし、わたされるデータを読み、データを暗号化し、データをパスに再挿入し、及び処理の進捗を許可してもよい。一実施例では、デバイス2926は、当該データを解読するよう構成されるファームウェアセキュリティエージェントを有してもよい。当該ファームウェアセキュリティエージェントとO/S下位セキュリティエージェント2916とは、当該暗号化を連係するため通信接続され、及び/又は当該暗号化を連係するため同様のセキュリティルールをそれぞれ有してもよい。他方、O/Sセキュリティエージェント2916は、パス内のコールをトラップし、デバイスから到来したデータを解読し、当該データをパスに再挿入し、処理が進捗することを許可するよう構成されてもよい。他の実施例では、O/S下位セキュリティエージェント2916は、パスのさらなる上下のコールをトラップし、わたされるデータを読み、データを解読し、データをパスに再挿入し、処理が進捗することを許可するよう構成されてもよい。さらに、O/S下位セキュリティエージェント2916は、アプリケーション2910とデバイス2926との間のパスに沿ってわたされるデータを調べ、マルウェアの徴候について当該データをスキャンするよう構成されてもよい。O/S下位セキュリティエージェント2916は、パス内のエンティティの間でわたされたデータを制御し、又はパラメータとしてわたされたデータ(ダミーデータなど)を置換するよう構成されてもよい。
図30は、アプリケーションと入出力デバイスとの間のライトアクセスについて入出力パスをセキュアにする方法3000の実施例である。ステップ3002において、O/S下位セキュリティエージェントは、アプリケーションI/Oパスがマルウェア攻撃について脆弱であるか判断してもよい。アプリケーションI/Oパスのプロテクションについてここで開示されるシステム及び方法はかなりのプロセッサ、メモリ及び/又は他のリソースを消費するため、アプリケーションI/Oパスがマルウェア攻撃に特に影響を受ける可能性があるときのみ、当該システム及び方法を利用することが望ましい。アプリケーションI/Oパスは、アプリケーション又はオペレーティングシステムがセンシティブな可能性のある情報が通信されるI/O処理を実行しているとき、マルウェア攻撃に脆弱であるかもしれない。例えば、O/S下位セキュリティエージェントは、電子デバイスのユーザの金融データ、企業人事データ、アカウント番号、ユーザ名、パスワード、ソーシャルセキュリティ番号及び/又は他の識別データなど、アプリケーションI/Oパスに関するセンシティブ情報を公開するバンキング又は他の金融ウェブサイトにアプリケーションがアクセスしている場合、アプリケーションI/Oパスがマルウェア攻撃に脆弱であると判断してもよい。
ステップ3003において、アプリケーションI/Oパスが脆弱であると判断された場合、方法3000はステップ3005に移行してもよい。そうでない場合、方法3000はステップ3002に戻り、アプリケーションI/Oパスのプロテクションは、アプリケーションI/Oパスが脆弱であると判断されるまで利用されなくてもよい。
ステップ3005において、O/S下位セキュリティエージェントは、アプリケーションからデバイス(ディスプレイ、ディスクドライブ、キーボードなど)へのI/Oライトアクセスについてトラップしてもよい。例えば、I/OライトアクセスがWindowsオペレーティングシステムにおけるアプリケーションからディスプレイデバイスへのデータの送信を含む場合、O/S下位セキュリティエージェントは、ビットブロック転送処理(BitBltなど)に対するアプリケーションのコール又はディスプレイI/Oファンクションのライブラリ(gdi32.dll、ntdll.dllなど)に対するコールの実行についてトラップしてもよい。I/Oライト又はリードアクセスは、ドライバに対する及びドライバの間のコール及びエンドデバイスに到達するためのドライバのファンクションの系列又はチェーンを含むものであってもよい。例えば、WindowsTMでは、アプリケーションは、BitBltファンクションを用いてgdi32.dllをコールし、当該ファンクションはNtGDIBitBltファンクションを用いてntdll.dllをコールし、当該ファンクションは、NtGDIBitBltを用いてwin32k.sysをコールし、当該ファンクションは、ディスプレイデバイスにアクセス可能なグラフィックI/Oドライバをコールしてもよい。
ステップ3010において、O/S下位セキュリティエージェントは、I/O処理のコンテンツをインターセプトしてもよい(例えば、ディスプレイデバイスに表示されるイメージ、ディスクドライブに書き込まれるデータなど)。
ステップ3015において、O/S下位セキュリティエージェントは、I/Oコンテンツを修正してもよい。例えば、コンテンツは、アプリケーションI/Oパスを攻撃することを試みるマルウェアが、元のコンテンツを構成するセンシティブ情報の代わりに、修正されたコンテンツのみにアクセス可能であるように、“スプーフ”又は“ダミー”コンテンツにより修正されてもよい。O/S下位セキュリティエージェントは、何れか適切な方法によりI/Oコンテンツを修正してもよい。例えば、ディスプレイデバイスに表示されるイメージを置換するため、修正されたコンテンツは、元のコンテンツの代わりにビットブロック転送処理にパラメータとしてわたされてもよい。特定の具体例では、O/S下位セキュリティエージェントは、所定のダミーコンテンツによりセンシティブなファイル又は電子メールのテキストコンテンツを置換してもよい。
ステップ3020において、O/S下位セキュリティエージェントは、アプリケーションが実行しているオペレーティングシステムによる処理と、オペレーティングシステムとデバイスとの間のドライバによる処理とを含む、アプリケーションI/Oパスを介し通常処理のための修正されたコンテンツを送信してもよい。当該ステップ中、アプリケーションI/Oパスに影響を与えるマルウェアは、I/Oコンテンツを利用することを試みるかもしれない。しかしながら、利用されるデータは、O/S下位セキュリティエージェントにより挿入された修正されたダミーコンテンツであってもよく、これにより、利用から元のコンテンツをプロテクトする。
ステップ3025において、O/S下位セキュリティエージェントは、それがI/Oデバイス(I/Oデバイスを有する電子デバイス又はデバイスの通信ポートなど)に到着するとき、修正されたコンテンツをインターセプトしてもよい。ステップ3030において、O/S下位セキュリティエージェントは、修正されたコンテンツを元のコンテンツと置換してもよい。例えば、I/OライトアクセスがWindowsオペレーティングしすてむにおけるアプリケーションからディスプレイデバイスへのデータの送信を含む場合、イメージの置換は、ディスプレイデバイスを有する電子デバイスのI/Oポートのフック、グラフィックI/Oドライバのメモリフック、又はグラフィックI/Oドライバからのディスプレイコマンドの実行に対するフック若しくはトリガによって実現可能である。従って、元のコンテンツは、アプリケーションとデバイスとの間で帯域外で通信され、残りは、従来のアプリケーションI/Oパスにおいてコンテンツを利用することを試行するマルウェアからプロテクトされる。
ステップ3035において、O/S下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたか判断してもよい。例えば、ルール(セキュリティルール114、220、222、438、436、518、707、721及び/又は723など)に基づき、O/S下位セキュリティエージェントは、インターセプトされた修正されたコンテンツが、マルウェアにより影響を受けたことを示す特性を有しているか判断してもよい(例えば、修正されたデータが、アプリケーションI/Oにおいて修正されて、アプリケーションI/Oパスを介しわたされた場合など)。さらに、O/S下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたと判断した場合、O/S下位セキュリティエージェントは、訂正アクション(マルウェアを削除、隔離及び/又は無力化するためのアクションなど)。さらに、いくつかの実施例では、O/S下位セキュリティエージェントは、プロテクションサーバにマルウェア的動作の発生に関する情報(フォレンジック情報など)を通信してもよい。
図31は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにするシステム3100の実施例である。システム3100は、電子デバイス3104のアプリケーション入出力(I/O)パスへのマルウェア攻撃に対してプロテクトされるべき電子デバイス3104を有してもよい。電子デバイス3104は、O/S下位セキュリティエージェント3116、I/Oデバイス3126、アプリケーション3110、オペレーティングシステム3112及びドライバ3111を有してもよい。システム3100は、電子デバイス3104のアプリケーションI/Oパスへのマルウェア攻撃に対してプロテクトされる電子デバイス3104を有してもよい。電子デバイス3104は、O/S下位セキュリティエージェント3116、I/Oデバイス3126、アプリケーション3110、オペレーティングシステム3112及びドライバ3111を有してもよい。電子デバイス3104は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス401、図7の電子デバイス701、図29の電子デバイス2904及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント3116は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図29のO/S下位セキュリティエージェント2916及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント3116は、マルウェアから電子デバイス3104のアプリケーションI/Oパスをセキュアにするよう構成されてもよい。I/Oデバイス3126は、図2のデバイス226、図4のディスプレイ424若しくはストレージ426、図5の入出力デバイス502、図29のI/Oデバイス2926及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション3110は、図1のアプリケーション110、図2のアプリケーション210、図4のアプリケーション410、図7のアプリケーション709、図29のアプリケーション2910及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ3111は、図1のドライバ111、図2のドライバ211、図4のドライバ411、図7のドライバ711、図29のドライバ2911及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム3112は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図29のオペレーティングシステム2912及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント3116は、マルウェアから電子デバイス3104のアプリケーションI/Oパスをセキュアにするよう構成されてもよい。図31の矢印により示され、以下の図32に関して説明されるように、O/S下位セキュリティエージェント3116は、アプリケーションI/Oパスを介したデータの送信に対してトラップしてもよい。トラップすると、O/S下位セキュリティエージェント3116は、I/Oリードアクセスに関して、I/Oデバイス3126からアプリケーション3110に配信されるコンテンツをインターセプトしてもよい。O/S下位セキュリティエージェント3116は、インターセプトされたI/Oコンテンツを修正し、修正されたコンテンツを通常のI/Oパスを介し送信してもよい(オペレーティングシステム3112及びドライバ3111などを介し)。当該修正されたコンテンツは、I/Oパスデータをインターセプト可能な何れかのマルウェアが、実際のユーザデータの代わりにダミーデータをインターセプトするように、“スプーフ”又は“ダミー”コンテンツを含むものであってもよい。O/S下位セキュリティエージェント3116は、それがI/Oデバイス3126のデバイスドライバに到着するとき、修正されたI/Oコンテンツをインターセプトし、それを元のコンテンツと置換し、これにより、マルウェア攻撃からI/O送信をセキュアにする。さらに、O/S下位セキュリティエージェント3116は、ルール(セキュリティルール114、220、222、438、434、436、518、707、721及び/又は723など)に基づき、通常のI/Oパスを介し送信された修正されたコンテンツがマルウェア的動作により影響を受けたか検出し(例えば、修正されたコンテンツがスニフ、フック及び/又は攻撃されたことを示す動作など)、マルウェア的動作が検出された場合、訂正アクションを実行してもよい。例えば、O/S下位セキュリティエージェント3116は、マルウェア的動作を生じさせるマルウェアを特定し、及び/又は電子デバイス3104及び/又は他の電子デバイスに対するさらなる感染を阻止するため、プロテクションサーバ202を支援するフォレンジック情報をプロテクションサーバ202に通信してもよい。当該フォレンジック情報は、限定することなく、当該動作が行われた電子デバイスの身元、マルウェア的動作を特定したO/S下位セキュリティエージェント、マルウェア的動作が行われたデバイス3126及び/若しくはアプリケーションI/Oパス、O/S下位セキュリティエージェントによりI/Oパスに配置された修正されたコンテンツ、及び/又はインターセプトされた修正されたデータ(修正されたデータに対してマルウェアの可能性により行われた修正を示す)を含むものであってもよい。
図32は、アプリケーションと入出力デバイスとの間のリードアクセスについて入出力パスをセキュアにする方法3200の実施例である。ステップ3202において、O/S下位セキュリティエージェントは、アプリケーションI/Oパスがマルウェア攻撃に対して脆弱であるか判断してもよい。ステップ3202は、方法3000のステップ3002と同様であってもよい。ステップ3203において、アプリケーションI/Oパスが脆弱であると判断された場合、方法3200はステップ3205に移行してもよい。そうでない場合、方法3200はステップ3202に戻り、アプリケーションI/Oパスが脆弱であると判断される時点まで、アプリケーションI/Oパスプロテクションは利用されなくてもよい。ステップ3203は、方法3000のステップ3003と同様であってもよい。
ステップ3205において、O/S下位セキュリティエージェントは、デバイスからアプリケーションまでのI/Oリードアクセスについてトラップしてもよい(ディスプレイ、ディスクドライブ、キーボードなど)。ステップ3210において、O/S下位セキュリティエージェントは、I/O処理のコンテンツをインターセプトしてもよい(例えば、キーボードから受信したキーストローク、ディスクドライブから読み出されたデータなど)。
ステップ3215において、O/S下位セキュリティエージェントは、I/Oコンテンツを修正してもよい。例えば、アプリケーションI/Oパスを攻撃することを試みるマルウェアが、元のコンテンツを構成するセンシティブ情報の代わりに、修正されたコンテンツのみにアクセス可能となるように、コンテンツは、“スプーフ”又は“ダミー”コンテンツにより修正されてもよい。O/S下位セキュリティエージェントは、何れか適切な方法によりI/Oコンテンツを修正してもよい。
ステップ3220において、O/S下位セキュリティエージェントは、アプリケーションが実行されているオペレーティングシステムと、オペレーティングシステムとデバイスとの間のドライバとによる処理を含む、アプリケーションI/Oパスを介し通常の処理のための修正されたコンテンツを送信してもよい。当該ステップ中、アプリケーションI/Oパスに影響を与えるマルウェアは、I/Oコンテンツを利用することを試みるかもしれない。しかしながら、利用される何れのデータも修正され、ダミーコンテンツがO/Sセキュリティエージェントにより挿入されており、これにより、利用から元のコンテンツをプロテクトすることができる。
ステップ3225において、O/S下位セキュリティエージェントは、それがアプリケーションに到着するときに修正されたコンテンツをインターセプトしてもよい。ステップ3230において、O/S下位セキュリティエージェントは、修正されたコンテンツを元のコンテンツと置換してもよい。従って、元のコンテンツは、アプリケーションとデバイスとの間で帯域外で通信され、残りは、従来のアプリケーションI/Oパスにおいてコンテンツを利用することを試みるマルウェアからプロテクトされる。
ステップ3235において、O/S下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたか判断してもよい(例えば、修正されたデータが、アプリケーションI/Oパスにおいて修正されたとき、アプリケーションI/Oパスを介しわたされた場合など)。例えば、O/S下位セキュリティエージェントは、ルール(セキュリティルール114、220、222、438、434、436、518、707、721及び/又は723など)に基づき、インターセプトされた修正されたコンテンツが、それがマルウェアにより影響を受けたことを示す特性を有するか判断してもよい。さらに、O/S下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたと判断した場合、O/S下位セキュリティエージェントは、訂正アクションを実行してもよい(例えば、マルウェアを削除、隔離及び/又は無力化するアクションなど)。さらに、いくつかの実施例では、アプリケーションI/Oパスを介し送信されるダミーデータ(方法3000のステップ3015、3020及び/又は方法3200のステップ3215、3220など)は、電子デバイス2904及び/又は電子デバイス3104上のマルウェアの存在を追跡するのに利用されてもよい。例えば、第1デバイスのアプリケーションがネットワークを介し第2電子デバイスにセンシティブ情報を通信するとき(例えば、第2電子デバイスによりホストされるバンキング又は他の金融ウェブサイトなど)、O/S下位セキュリティエージェントは、第2電子デバイスへのアクセスをスプーフするI/Oパスにダミー情報を挿入してもよい(“フェイク”のユーザ名及びパスワードをバンキングウェブサイトに提供するダミー情報など)。第2電子デバイスは、このようにスプーフされると、第2電子デバイスのセキュリティエージェントがアクセス中に行われたアクションを追跡し(例えば、プロファイル情報の変更などのスプーフされたアクセス中にバンキングウェブサイトで行われたアクション又は他のアクションなど)、マルウェア的動作が発生したか判断するように、自らのセキュリティエージェントを有してもよい。第2電子デバイスのセキュリティエージェントが、マルウェア的動作が発生したと判断した場合、第2電子デバイスは、訂正アクションを実行してもよい。例えば、第2電子デバイスのセキュリティエージェントは、マルウェア的動作の存在を示すのに適したメッセージを通信してもよい(例えば、第2電子デバイスに通信接続されるプロテクションサーバ102などに)。当該メッセージは、例えば、マルウェア的動作の説明及び/又は第1電子デバイスの身元(インターネットプロトコルアドレス又は他の識別情報など)などを含むフォレンジックエビデンスを含むものであってもよい。
図33は、電子デバイス3304上の隠蔽されたプロセスを検出及び修復するシステム3300の実施例である。O/S内セキュリティエージェント3318及び/又はOS下位セキュリティエージェント3316は、電子デバイス3304上で実行されるプロセスの処理を隠蔽するよう構成されるマルウェアなどの悪意ある感染を検出及び修復するよう電子デバイス3304上で動作してもよい。電子デバイス3304は、メモリ3308に接続されるプロセッサ3306、オペレーティングシステム3312及び1以上のプロセス3373を有してもよい。電子デバイス3304は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ3306は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ3308は、図2のメモリ206、図4のメモリ406、図7のメモリ703、及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム3312は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント3318は、図2のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント3316は、図1のO/Sトラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
プロセス3373は、電子デバイス3304上で実行されるよう構成されてもよい。電子デバイス3304上で実行される1以上のプロセス3373は、マルウェアに関する悪意あるプロセスであってもよい。電子デバイス3304上のマルウェアは、アンチマルウェアソフトウェアによる検出を回避するため、プロセス3373の1以上の悪意あるプロセスの存在を偽装するよう動作する可能性がある。例えば、オペレーティングシステム3312は、オペレーティングシステムカーネルメモリ3380を有してもよい。オペレーティングシステムカーネルメモリ3380は、電子デバイス3304上のプロセスの実行を追跡するための1以上の機構を有してもよい。一例では、当該機構は、アクティブプロセスリスト3384を有してもよい。アクティブプロセスリスト3384は、電子デバイス3304上で実行されるプロセスを追跡するためのデータ構造、レコード、ファイル又は他の何れか適切な方法により実現されてもよい。例えば、プロセス3373bがマルウェアに関する悪意あるプロセスである場合、電子デバイス3304上のマルウェアは、プロセス3373bの参照を削除するため、アクティブプロセスリスト3384を修正してもよい。従って、何れのプロセスが電子デバイス3304上でアクティブに実行され、マルウェアについて調べられるべきであるか決定する際、電子デバイス3304上で実行されるセキュリティソフトウェアは、調査のためのアクティブなプロセスとしてプロセス3373bを認識しなくてもよい。
オペレーティングシステム3312は、レディキュー(ready queue)33222を有してもよい。レディキュー3322は、電子デバイス3304上で実行されるアクティブなスレッドを示す1以上の適切なデータ構造(アレイ、テーブル、リストなど)を有してもよい。アクティブプロセス3373は、1以上の個別のスレッドから構成されてもよい。スレッドは、電子デバイス3304による実行のためアクティブプロセス3373の他のスレッドから分離して独立にスケジューリングされるアクティブプロセス3373内の処理単位(1以上の命令など)とみなされてもよい。WindowsTMオペレーティングシステムのレディキュー3322の例示的な具体例として、レディキュー3322は、KiDispatcherReadyListHeadとして知られる変数により実現されてもよい。レディキュー3322はまた、例えば、スレッドを含むプロセスの識別子、当該プロセスのイメージ名、スタートアドレス、ユーザモードアドレス、デバイスオブジェクト及び/又は他の適切な情報など、アクティブスレッドに関する各種メタデータを有してもよい。WindowsTMオペレーティングシステムでは、当該アクティブプロセス情報は、スレッドに関するエグゼクティブスレッド(ETHREAD)データ構造に含まれてもよい。
システム3300の処理中、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、オペレーティングシステム3312上で実行されるセキュリティデバイスドライバ3370を起動してもよい。セキュリティデバイスドライバ3370は、ドライバ、モジュール、実行可能、DLL又はカーネルモードデバイスドライバサービスを提供するのに適した他の何れかの機構により実現されてもよい。セキュリティデバイスドライバ3370は、電子デバイス3304上で実行されるプロセスを列挙するため、オペレーティングシステム3312の各種部分をコールするよう構成されてもよい。例えば、セキュリティデバイスドライバ3370は、カーネルメモリ3380又はアクティブプロセスリスト3384を調べるよう構成されてもよい。セキュリティデバイスドライバ3370は、セキュリティデバイスドライバ3370が検出可能なアクティブプロセス3373の第1リスト(アクティブプロセスリスト3383など)を通信するよう構成されてもよい。セキュリティデバイスドライバ3370は、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316とアクティブプロセスリスト3384を通信するよう構成されてもよい。一実施例では、セキュリティデバイスドライバ3370は、ハイパーコールを介しO/S下位セキュリティエージェント3316に所与の検出されたプロセスに関するエグゼクティブプロセス(EPROCESS)構造をわたすよう構成されてもよい。セキュリティデバイスドライバ3370はオペレーティングシステムと同じ又は下位の特権実行リングで実行されるため、セキュリティデバイスドライバ3370により列挙されるアクティブプロセスは、アクティブプロセスリスト3384上に出現するアクティブプロセスに限定されてもよく、これは、自らへの参照を削除するためアクティブプロセスリスト3384を修正した悪意あるプロセスがセキュリティデバイスドライバ3370により列挙されなくてもよいことを意味する。WindowsTMオペレーティングシステムでは、セキュリティデバイスドライバ3370は、決定されるSystem_Process_informationを特定するオペレーティングシステムからプロセスリストを要求するため、ZwQuerySystemInformationファンクションを利用するよう構成されてもよい。O/S下位セキュリティエージェント3316は、当該ファンクションもまた利用するよう構成され、当該アクションの実行においてよりセキュアであってもよい。セキュリティデバイスドライバ3370は、列挙されたプロセスをアクティブプロセスの第1リスト3385に配置してもよい。特定の実施例では、第1リスト3385は、アクティブプロセスリスト3384に実質的に等価であってもよい。他の実施例では、別の第1リスト3385は作成されず、セキュリティデバイスドライバ3370は、第1リスト3385の代わりにアクティブプロセスリスト3384を利用してもよい。
他方、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、オペレーティングシステム3312と同じ又は上位の特権実行リングで実行されてもよく、電子デバイス3304上で実行される個別のスレッドを列挙することが可能であってもよい。このような列挙されたスレッドに少なくとも基づき、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、アクティブプロセスリスト3384から自らの参照を削除した悪意あるプロセスを含む、電子デバイス3304上で実行されるすべてのアクティブプロセスを決定してもよい。例えば、特定の実施例では、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、レディキュー3322をスキャンし、レディキュー3322のすべてのスレッドを列挙し、スレッドをリストに配置してもよい。各スレッドについて、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、スレッドを所有するプロセスと当該スレッドに関する他の情報(例えば、スレッドに関するETHREAD情報などのメタデータへの参照などにより)を特定し、O/S内セキュリティエージェント3318が、アクティブプロセスリスト3384から自らへの参照を削除した可能性のある悪意あるプロセスを含む、アクティブプロセス3373の第2リスト3386を列挙することを可能にしてもよい。
さらに具体的な実施例を説明するため、スレッドに関するETHREADデータ構造は、いくつかのメタデータフィールドを含み、ThreadsProcessフィールド、StartAddressフィールド、DeviceToVerifyフィールド、Win32StartAddressフィールド及びThreadListEntryフィールドを含むものであってもよい。ThreadsProcessフィールドを解析することによって、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、スレッドを所有するプロセスを特定することが可能であってもよく、これから当該プロセスのプロセス識別子及びイメージ名が決定されてもよい。StartAddress及びWin32StartAddressから、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、メモリの何れのコードがプロセスを実行しているか特定し、これにより、スレッドを所有するプロセスが疑わしいと検出された場合、疑わしいドライバ、アプリケーション及び/又は他のプログラムのさらなる特定を可能にしてもよい。DeviceToVerifyに基づき、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、デバイスオブジェクトがスレッドに関連しているか判断し、スレッドを所有するプロセスが疑わしいと検出された場合、ドライバオブジェクト及びマルウェアドライバを特定してもよい。ThreadListEntryは、同一プロセス内のスレッドの列挙を支援してもよい。
O/S内セキュリティエージェント3318は、その後、アクティブプロセス3373の第1リスト3385とアクティブプロセス3373の第2リスト3386とを比較し、疑わしいプロセスとして第2リスト3386に現れ、第1リスト3385には現れないアクティブプロセス3373を特定してもよい。当該疑わしいプロセスの証拠は、オペレーティングシステム3312と共に、電子デバイス3304上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されたマルウェアの証拠であってもよい。
他の実施例では、O/S下位セキュリティエージェント3316は、スレッドを列挙すると共に、特定されたスレッドに少なくとも基づきアクティブプロセス3373の第2リスト3386を列挙するため、レディキュー3322をスキャンしてもよい(例えば、スレッドに関するETHREAD情報などのメタデータへの参照などにより)。当該実施例では、O/S下位セキュリティエージェント3316は、O/S内セキュリティエージェント3318からセキュリティデバイスドライバ3370により生成されたアクティブプロセスの第1リスト3385を受信してもよく、又はメモリから直接リードすることによって、アクティブプロセス3372の第1リスト3385にアクセスしてもよい。その後、O/S下位セキュリティエージェント3316は、アクティブプロセス3373の第1リスト3385と第2リスト3386とを比較し、疑わしいプロセスとして第2リスト3386に現れ、第1リスト3385には現れないアクティブプロセス3373を特定してもよい。当該疑わしいプロセスは、オペレーティングシステム3312と共に、電子デバイス3304上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されてもよい。当該疑わしいプロセスの証拠は、オペレーティングシステム3312と共に、電子デバイス3304上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されたマルウェアの証拠であってもよい。
O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316が、電子デバイス3304上で実行される隠蔽されたプロセスの証拠があると判断した場合、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、当該プロセスに関して修正が行われたか判断するため、オペレーティングシステム3312、オペレーティングシステムカーネルメモリ3380又は電子デバイス3304の他の要素をスキャンするよう構成されてもよい。例えば、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、マルウェアにより実行されると知られる何れかのメモリの修正についてスキャンするよう構成されてもよい。いくつかの実施例では、O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、アクティブプロセスリスト3384と共に、オペレーティングシステムコードセクション3382をスキャンするよう構成されてもよい。上記及び他の実施例では、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、疑わしいプロセスに関するスレッドのスレッドメタデータ(ETHREAD情報など)を利用して、修正についてスキャンすべき電子デバイス3304の要素及び/又はその部分を決定してもよい。
悪意ある修正が検出された場合、O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、訂正アクションを実行してもよい。例えば、O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、オペレーティングシステムカーネルメモリ3380に検出された悪意ある修正を修復するよう構成されてもよい。他の例として、O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、オペレーティングシステムカーネルメモリ380におけるメモリ修正を調べることによって決定された検出されたルートキット感染を削除するよう構成されてもよい。さらなる例として、O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、内部のデータ構造又はコードセクションに対する感染を修復するよう構成されてもよい。上記及び他の実施例では、O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316は、疑わしいプロセスに関するスレッドのスレッドメタデータ(ETHREAD情報など)を利用し、実行されるべき訂正アクションを決定してもよい(例えば、当該メタデータは、マルウェアプロセスの特定のメモリ位置、疑わしい動作に関係するドライバなどを特定してもよい)。O/S内セキュリティエージェント3318又はO/S下位セキュリティエージェント3316は、セキュリティデバイスドライバ3370により決定されるプロセスの第1リスト3385と、レディキュー3322にあるスレッドメタデータの解析から決定されるプロセスの第2リスト3386との間で検出されたすべての相違について隠蔽されたプロセスによる修正に関するスキャンプロセスを繰り返すよう構成されてもよい。
図34は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法の実施例である。ステップ3405において、1以上のセキュリティエージェント(O/S内セキュリティエージェント3318及び/又はO/S下位セキュリティエージェント3316など)は、電子デバイスのオペレーティングシステム上で実行されるセキュリティデバイスドライバを起動してもよい。ステップ3410において、セキュリティデバイスドライバは、電子デバイスのオペレーティングシステムに対する標準的なシステムコールを介し電子デバイス上で実行されるアクティブプロセスを列挙してもよい。セキュリティデバイスドライバは、アクティブプロセスの第1リストに列挙されたプロセスを配置してもよい。セキュリティデバイスドライバは、オペレーティングシステムと同じ又は下位の特権実行リングで実行されてもよいため、セキュリティデバイスドライバにより列挙されるアクティブプロセスは、オペレーティングシステムのアクティブプロセスリストに現れるアクティブプロセスに限定されてもよく、これは、自らへの参照を削除するためアクティブプロセスリストを修正した悪意あるプロセスがセキュリティデバイスドライバにより列挙されない可能性があることを意味する。
ステップ3415において、1以上のセキュリティエージェントは、スレッドレディキューをスキャンし、当該スキャンに少なくとも基づき、電子デバイス上で実行される個別スレッドを列挙し、これらをスレッドリストに配置してもよい。ステップ3420において、スレッドに関するメタデータに少なくとも基づき(スレッドに関するETHREAD情報又はスレッドを所有するプロセスを示す他のメタデータなど)、1以上のセキュリティエージェントは、スレッドを所有するプロセスを特定し、アクティブプロセスの第2スレッドを生成してもよい。第2リストは、アクティブプロセスリストから自らへの参照を削除した可能性のある悪意あるプロセスを含むものであってもよい。
ステップ3425では、1以上のセキュリティエージェントがアクティブプロセスの第1リストと第2リストとを比較してもよい。ステップ3430において、1以上のセキュリティエージェントは、疑わしいプロセスとして第2リストに現れ、第1リストに現れないアクティブプロセスを特定してもよい。当該疑わしいプロセスの証拠は、電子デバイス上で実行されるアンチウイルス若しくはアンチマルウェアソフトウェア及び/又は電子デバイス上で実行されるオペレーティングシステムから隠蔽されたマルウェアの証拠であってもよい。
ステップ3435において、1以上のセキュリティエージェントが、電子デバイス上で実行される隠蔽されたプロセスの証拠があると判断した場合、1以上のセキュリティエージェントは、電子デバイスの一部に対する修正が疑わしいプロセスにより行われたか判断してもよい。修正が行われたか判断するため、1以上のセキュリティエージェントは、オペレーティングシステム及び/又はオペレーティングシステムカーネルメモリをスキャンし、当該プロセスに関する何れかの修正が行われたか判断してもよい。例えば、1以上のセキュリティエージェントは、マルウェアにより実行されていると知られるメモリ修正についてスキャンし、及び/又はオペレーティングシステムカーネルメモリのオペレーティングシステムコードセクション及び/又はアクティブプロセスリストをスキャンしてもよい。
ステップ3440において、1以上のセキュリティエージェントは、修正が検出された場合、訂正アクションを実行してもよい。例えば、1以上のセキュリティエージェントは、オペレーティングシステムカーネルメモリにおいて検出された悪意ある修正を修復してもよい。他の例として、1以上のセキュリティエージェントは、オペレーティングシステムカーネルメモリにおけるメモリ修正を調べることによって決定された何れかの検出されたルートキット感染を削除してもよい。さらなる例として、1以上のセキュリティエージェントは、内部のデータ構造又はコードセクションに対する何れかの感染を修復してもよい。方法3400の一部は、特定された各疑わしいプロセスについて繰り返されてもよい。従って、1以上のセキュリティエージェントは、セキュリティデバイスドライバにより決定されたプロセスの第1リストと、レディキューにあるスレッドメタデータの解析から決定されたプロセスの第2リストとの間に検出されたすべての相違のための隠蔽されたプロセスによる修正についてスキャンするプロセスを繰り返してもよい。
効果的には、上述された方法及びシステムは、オペレーティングシステムカーネルのファンクションに対するフック又はトラップの要求なく、ルートキット及び/又は他のマルウェアの特定を提供してもよい。
図35は、電子デバイス3504上の隠蔽されたプロセスを検出及び修復するシステム3500の実施例である。O/S下位セキュリティエージェント3516、セキュリティデバイスドライバ3570及びセキュリティダイナミックリンクライブラリ(DLL)3572は、電子デバイス3504上で実行されるプロセスの処理を隠蔽するよう構成されるマルウェアなど、悪意ある感染を検出及び修復するため電子デバイス3504上で実行されてもよい。電子デバイス3504は、メモリ3504に接続されるプロセッサ3506、オペレーティングシステム3512、セキュリティDLL3572、O/S下位セキュリティエージェント3516、バーチャルマシーン制御構造3552(VMCS)、1以上のプロセス3573(プロセス3573a、3573b、3573cなど)、当該プロセスに関するアドレススペース3587(アドエススペース3587a、3587b、3587cなど)、及び制御レジスタと同様のCR3制御レジスタ3560などの1以上のシステムリソースを有してもよい。プロセッサレジスタ3530は、CR3レジスタ3560や他の何れかのレジスタ3568などのレジスタを有してもよい。CR3はプロセスレジスタ3530の一例として与えられているが、何れか適切な制御レジスタが利用されてもよい。CR3レジスタ3560は、電子デバイス3504上のCPUの全体的な動作を制御又は変更するよう構成されるプロセッサレジスタであってもよい。CR3レジスタ3560は、バーチャルメモリアドレスを物理メモリアドレスに変換するため、電子デバイス3504上で実行されるプロセッサ3506などのプロセッサをイネーブルにするよう構成されてもよい。CR3レジスタ3560は、O/Sスケジューラによる処理のため選択されてスタックにあるものなど、現在リクエストされているタスクについてページディレクトリ及びページテーブルを特定するよう構成されてもよい。CR3レジスタ3560は、何れか適切なバーチャルアドレッシング制御レジスタにより実現されてもよい。他のレジスタ268は、電子デバイス3504の特定の設計又は実装に従ってプロセッサレジスタ3530にあってもよい。プロセッサレジスタ3530は、プロセッサ3506又は電子デバイス3504の他のプロセッサと関連付けされてもよい。
電子デバイス3504は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図33の電子デバイス3304及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ3506は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図33のプロセッサ3306及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ3508は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図33のメモリ3308及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム3512は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図33のオペレーティングシステム3312及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント3516は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図33のO/S下位セキュリティエージェント3316及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
電子デバイス3504は、バーチャルマシーン制御構造1152を有してもよい。一実施例では、バーチャルマシーン制御構造1152は、O/S下位セキュリティエージェント3516にあってもよい。他の実施例では、バーチャルマシーン制御構造1152は、O/S下位セキュリティエージェント3516に通信接続されてもよい。当該実施例では、バーチャルマシーン制御構造1152の機能の一部又はすべては、O/S下位セキュリティエージェント3516により実行されてもよい。さらに、当該実施例では、O/S下位セキュリティエージェント3516の機能の一部又はすべては、バーチャルマシーン制御構造1152により実行されてもよい。バーチャルマシーン制御構造1152は、図1のO/S下位トラップエージェント104、図2のVMCS、図4のファームウェアセキュリティエージェント440、442若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、又は図7のマイクロコードセキュリティエージェント706により完全に又は部分的に実現されてもよい。バーチャルマシーン制御構造1152は、プロセッサレジスタ3530又は他のリソースなどのリソースに対するリクエストをトラップするためのデータ構造、レコード、ファイル、モジュール又は他の何れか適切なエンティティにより実現されてもよい。一実施例では、システム3500が図2のシステム200により完全に又は部分的に実現される場合など、バーチャルマシーン制御構造1152及びO/S下位セキュリティエージェント3516は、プロセッサレジスタ3530や他の何れか適切なシステムリソースなどの電子デバイス3504のシステムリソースへのアクセスを仮想化するよう構成されてもよい。
バーチャルマシーン制御構造1152は、プロセッサレジスタ3530などのシステムリソースのオペレーティングシステム3512により要求された処理をトラップするための1以上のフラグ1154を有してもよい。フラグ1154は、例えば、プロセスコンテクストスイッチフラグ3556及び/又はリードファンクションフラグ3558などをトラップするためのフラグを有してもよい。フラグ1154は、プロセッサレジスタ3530などのシステムリソースへのアクセスをトラップするのに適した何れかのフラグを有してもよい。O/S下位セキュリティエージェント3516は、バーチャルマシーン制御構造1152の何れのフラグがシステムリソースへのアクセスをトラップするのに利用されるか設定するよう構成されてもよい。バーチャルマシーン制御構造1152及びO/S下位セキュリティエージェント3516によりトラップ及び/又はガードされるシステムリソースは、限定することなく、プロセッサレジスタ3530を含むものであってもよい。
プロセッサ3573は、電子デバイス3504上で動作するよう構成されてもよい。電子デバイス3504上で動作する1以上のプロセスは、マルウェアに関する悪意あるプロセスであるかもしれない。電子デバイス3504上のマルウェアは、アンチマルウェアソフトウェアによる検出を回避するため、プロセス3573の1以上のプロセスの存在を偽装するよう動作する可能性がある。例えば、オペレーティングシステム3512は、オペレーティングシステムカーネルメモリ3580を有してもよい。オペレーティングシステムカーネルメモリ3580は、電子デバイス3504上のプロセスの実行を追跡するための1以上の機構を含むものであってもよい。一例では、当該機構は、アクティブプロセスリスト3584を有してもよい。アクティブプロセスリスト3584は、電子デバイス3504上で実行されるプロセスを追跡するためのデータ構造、レコード、ファイル又は他の何れか適切な方法により実現されてもよい。例えば、プロセス3573bがマルウェアに関する悪意あるプロセスである場合、電子デバイス3504上のマルウェアは、プロセス3573bへの参照を削除するため、アクティブプロセスリスト3584を修正してもよい。従って、何れのプロセスが電子デバイス3504上でアクティブ実行され、マルウェアについて調べられるべきか決定する際、電子デバイス3504上で実行されるセキュリティソフトウェアは、調査のためのアクティブなプロセスとしてプロセス3573bを認識しない。
プロセス3573又は電子デバイス3504上で実行される他のエンティティは、仮想化メモリを利用する際に通常処理の一部として、プロセス3573の1つに関連するプロセスコンテクストスイッチの利用を要求するものであってもよい。仮想化メモリの利用を実現するため、オペレーティングシステム3512は、所与のプロセスに対するプロセスコンテクストスイッチ、リード又はアタッチメントを実行するよう構成されてもよい。当該アクションは、オペレーティングシステム3512がCR3レジスタ3560などの制御レジスタを含むシステムリソースにアクセスすることを試みることを要求してもよい。オペレーティングシステム3512は、“move value,CR3”コマンドの形態によりCR3レジスタ3560のリードを生成してもよい。オペレーティングシステム3512は、“move CR3,value”のコマンドの形態によりCR3レジスタ3560の値を変更することを試みるよう構成されてもよい。
バーチャルマシーン制御構造1152は、レジスタ3530を含む電子デバイス3504のシステムリソースにアクセスするため、オペレーティングシステム3512による試行をインターセプトするよう構成されてもよい。バーチャルマシーン制御構造1152は、電子デバイス3504のシステムリソースにアクセスするためオペレーティングシステム3512により試行された特定のコマンドをトラップすることを試みるよう構成されてもよい。バーチャルマシーン制御構造1152は、オペレーティングシステム3512のコマンドをインターセプトするためのフラグを利用するよう構成されてもよい。一実施例では、バーチャルマシーン制御構造1152は、CR3レジスタ3560に対するプロセスコンテクストスイッチ及びリードコマンドをインターセプトするためのフラグ3556〜3558を有してもよい。O/S下位セキュリティエージェント3516は、バーチャルマシーン制御構造1152内のフラグ3556〜3558を設定するよう構成されてもよい。バーチャルマシーン制御構造1152は、VMイグジットを生成するよう構成されてもよく、当該イベントは、CR3レジスタ3560に関するリード又はプロセスコンテクストスイッチコマンドなど、フラグ付けされた処理のインターセプトに応答して生成される。一実施例では、バーチャルマシーン制御構造1152は、仮想化メモリに関する制御レジスタの何れか試行されたアクセスについてVMイグジットを生成するよう構成されてもよい。電子デバイス3504上で実行されるプロセスの1つがプロセスコンテクストスイッチを実行し、又はプロセスに関するプロセススペースを読むことを試行する毎に、バーチャルマシーン制御構造1152は、VMイグジットを生成し、試行されたコマンドに関する情報をO/S下位セキュリティエージェント3516に転送するよう構成されてもよい。説明のため、O/S下位セキュリティエージェント3516は、レジスタ変更3576におけるCR3レジスタ3560(又は他のレジスタ3568)に対するすべてのアクションを記録するよう構成されてもよい。レジスタ変更3576は、CR3レジスタ3560又は他のレジスタ3568に対する変更の履歴を格納するためのファイル、構造、データ構造、レコード又は他の何れか適切な機構により実現されてもよい。O/S下位セキュリティエージェント3516は、CR3レジスタ3560のすべてのアクセスを記録することによって、電子デバイス3504におけるプロセスコンテクストスイッチを試みたすべてのプロセス3573のレコードを有してもよい。レジスタ変更3576としての変更のレコードは、電子デバイス3504上で実行されるプロセスのレコードとして機能するよう構成されてもよい。O/S下位セキュリティエージェント3516は、電子デバイス3504上で実行されているすべてのプロセスを含む実行中のプロセス3586のリストをレジスタ変更3576から決定するよう構成されてもよい。
CR3レジスタへのアクセスをインターセプトすることによって、O/S下位セキュリティエージェント3516は、実行の内外でスワップされるプロセスの可能性を拒絶することによって、実行をフリーズすることが可能であってもよい。実行をフリーズすることによって、O/S下位セキュリティエージェント3516は、訂正又は検出手段を回避又は覆すため動作しているマルウェアとのレース条件に入ることなく、実行中のプロセスのリストを収集するよう構成されてもよい。
あるいは、O/S下位セキュリティエージェント3516は、コンテクストスイッチのためのオペレーティングシステムファンクション(WindowsTMのファンクションSwapContextなど)をモニタすることによって、実行中のプロセス3586のリストを決定するよう構成されてもよい。オペレーティングシステムコンテクストスイッチファンクションのモニタは、ファンクションコールのコードセクションに関するメモリのプロセッサレベルモニタリングを介し、又は当該コードセクションを指し示す実行命令ポインタ(EIP)の観察を介し実行されてもよい。例えば、SwapContextがある物理的又は仮想的なメモリ位置がマッピングされ、セキュリティルールに記述されてもよい。SwapContextがある物理的アドレス又はバーチャルメモリアドレスのフラグがトラップされてもよい。例えば、O/S下位セキュリティエージェント3516が図2のSVMMセキュリティエージェント217により完全に又は部分的に実現される場合、O/S下位セキュリティエージェント3516は、SwapContextがあるバーチャルメモリページの試行された実行をトラップするためVMCS1152を設定してもよい。他の例では、O/S下位セキュリティエージェント3516が図7のマイクロコードセキュリティエージェント708により完全に又は部分的に実現される場合、O/S下位セキュリティエージェント3516は、SwapContextファンクションのコードセクションが始まる物理メモリアドレスの試行された実行をトラップするため、VMCS1152を設定してもよい。
オペレーティングシステム3512は、セキュリティデバイスドライバ3570を有してもよい。セキュリティデバイスドライバ3570は、カーネルモードデバイスドライバサービスを提供するためのドライバ、モジュール、実行可能、DLL又は他の何れか適切な機構により実現されてもよい。セキュリティデバイスドライバ3570は、電子デバイス3504上で実行されている実行中のプロセスを列挙するため、オペレーティングシステム3512の各種部分をコールするよう構成されてもよい。例えば、セキュリティデバイスドライバ3570は、カーネルメモリ3580又はアクティブプロセスリスト3584を調べるよう構成されてもよい。セキュリティデバイスドライバ3570は、セキュリティデバイスドライバ3570が検出可能な実行中プロセスリスト3580を通信するよう構成されてもよい。セキュリティデバイスドライバ3570は、O/S下位セキュリティエージェント3516に実行中プロセスリスト3580を通信するよう構成されてもよい。一実施例では、セキュリティデバイスドライバ3570は、ハイパーセルを介しO/S下位セキュリティエージェント3516に所与の検出されたプロセスに関するEPROCESS構造をわたすよう構成されてもよい。セキュリティデバイスドライバ3570により検出されたアクティブプロセスのEPROCESS構造を受信すると、O/S下位セキュリティエージェント3516は、セキュリティデバイスドライバ3570から受信した各EPROCESS構造に関するCR3レジスタ3560の値(又は他のレジスタ3568の値)を計算するよう構成されてもよい。O/S下位セキュリティエージェント3516は、セキュリティデバイスドライバ3570から受信した実行中プロセスリスト3580と、レジスタ変更3576からO/S下位セキュリティエージェント3516が決定した実行中プロセスリスト3586とを比較するよう構成されてもよい。O/S下位セキュリティエージェント3516は、それがコンパイルしたレジスタ変更3576と比較して、セキュリティデバイスドライバ3570からの実行中プロセスリスト3580から導出されたCR3値が欠落しているか判断するよう構成されてもよい。当該相違は、隠蔽されたプロセスを示す可能性がある。当該プロセスは、オペレーティングシステム3512と共に、電子デバイス3504上で実行されるセキュリティデバイスドライバ3570、アンチウイルス又はアンチマルウェアソフトウェアから隠蔽されてもよい。しかしながら、当該プロセスの証拠は、当該隠蔽されたプロセスが例えば、プロセスコンテクストスイッチ又はプロセスアドレススペースのリードなどを試みたため、O/S下位セキュリティエージェント3516に可視的であったかもしれない。隠蔽されるプロセスの証拠は、カーネルモードセキュリティデバイスドライバ3570が隠蔽されたプロセスを検出できないため、カーネルルートデバイスドライバを介したカーネルモード感染の証拠であってもよい。
O/S下位セキュリティエージェント3516は、隠蔽されたプロセスではないが、リストがコンパイルされた時点の間の通常の実行中に削除されたプロセスである欠落プロセスを決定してもよい。隠蔽されたプロセスとしてスレッドを誤って特定することを回避するため、O/S下位セキュリティエージェント3516は、プロセスを作成及び削除するためのファンクションの実行をモニタするよう構成されてもよい。当該ファンクションは、例えば、pspProcessCreate又はpspTerminateProcessなどを含むものであってもよい。O/S下位セキュリティエージェント3516は、それの列挙アクション及び作成又は削除ファンクションの観察のタイムスタンプレコードを生成するよう構成されてもよく、これにより、プロセスが欠落している場合、当該プロセスが目辛くしていると特定されるまでに削除ファンクションにより当該プロセスが削除されたか判断してもよい。
O/S下位セキュリティエージェント3516が、電子デバイス3504上で実行される隠蔽されたプロセスの証拠があると判断した場合、O/S下位セキュリティエージェント3516は、当該プロセスに関する修正が行われたか判断するため、オペレーティングシステム3512及びオペレーティングシステムカーネルメモリ3580をスキャンするよう構成されてもよい。O/S下位セキュリティエージェント3516は、マルウェアにより実行されていると知られるメモリ修正についてスキャンするよう構成されてもよい。いくつかの実施例では、O/S下位セキュリティエージェント3516は、アクティブプロセスリスト3584と共に、オペレーティングシステムコードセクション3582をスキャンするよう構成されてもよい。O/S下位セキュリティエージェント3516は、オペレーティングシステムカーネルメモリ3580に検出された悪意ある修正を修復するよう構成されてもよい。O/S下位セキュリティエージェント3516は、オペレーティングシステムカーネルメモリ3580におけるメモリ修正を調べることによって決定される何れかの検出されたルートキット感染を削除するよう構成されてもよい。O/S下位セキュリティエージェント3516は、何れか内部のデータ構造又はコードセクションに対する感染を修復するよう構成されてもよい。O/S下位セキュリティエージェント3516は、O/S下位セキュリティエージェント3516とセキュリティデバイスドライバ3570とにより決定されたプロセス間で検出されたすべての相違の隠蔽されたプロセスのメモリ修正についてスキャンするプロセスを繰り返すよう構成されてもよい。セキュリティデバイスドライバ3570は、実行中プロセスリスト3586などのO/S下位セキュリティエージェント3516から最終的なプロセスリストを受信するよう構成されてもよい。セキュリティデバイスドライバ3570は、ハイパーセルを介しO/S下位セキュリティエージェント3516に実行中プロセスリスト3586にアクセスするよう構成されてもよい。
セキュリティDLL3572は、電子デバイス3504上で実行されるよう構成されてもよい。セキュリティDLL3572は、後述されるようなそれの機能を実行するため、ダイナミックリンクライブラリ(DLL)、共有ライブラリ、実行可能又は他の何れか適切な機構により実現されてもよい。セキュリティデバイスドライバ3570は、セキュリティDLL3572又はセキュリティDLL3572への参照を、プロセスアドレススペース3587などの電子デバイス3504上で実行される各プロセスのアドレススペースに挿入するよう構成されてもよい。各プロセスアドレススペース3587は、セキュリティDLL3572へのポインタを含むものであってもよい。セキュリティDLL3572は、電子デバイス3504上で実行されるすべてのユーザモードプロセスを列挙するよう構成されてもよい。セキュリティDLL3572は、何れか適切な技術を利用してユーザモードプロセスを列挙するよう構成されてもよい。例えば、セキュリティDLL3572は、WindowsTMオペレーティングシステムにおけるNtQuerySystemInformationファンクションを利用し、ProcessFirst及びProcessNextファンクションを利用してプロセスをナビゲートするよう構成されてもよい。当該ファンクションはまた、O/S下位セキュリティエージェントにより実行されてもよい。セキュリティDLL3572は、それの結果を実行中プロセスリスト3588にコンパイルするよう構成されてもよい。セキュリティDLL3572は、実行中プロセスリスト3588をセキュリティデバイスドライバ3570に送信するよう構成されてもよい。セキュリティDLL3572は、セキュアな入出力コールを介し実行中プロセスリスト3586を送信するよう構成されてもよい。セキュリティデバイスドライバ3570は、O/S下位セキュリティエージェント3516から受信した実行中プロセスリスト3586のリストと、受信した実行中プロセスリスト3588とを比較するよう構成されてもよい。セキュリティデバイスドライバ3570は、当該プロセスリストの相違がユーザモードルートキット攻撃を含みうると判断するよう構成されてもよい。セキュリティデバイスドライバ3570又はセキュリティDLL3572は、メモリ修正が行われたか判断するため、プロセスアドレススペースに関するメモリのプロセスコード及びデータセクションを調べるよう構成されてもよい。セキュリティデバイスドライバ3570は、プロセスアドレススペース3587において行われたメモリ修正を修復するよう構成されてもよい。セキュリティデバイスドライバ3570は、セキュリティDLL3572からの実行中プロセスリスト3588とO/S下位セキュリティエージェント3516からの実行中プロセスリスト3586との間で検出される各相違について、プロセスアドレススペース3587をスキャンし、メモリ修正を検出し、当該メモリ修正を修復するプロセスを繰り返すよう構成されてもよい。
動作について、プロセス3573は、電子デバイス3504上で実行されてもよい。プロセス3573の1以上が隠蔽されてもよい。例えば、プロセス3573bは、マルウェアに関連付けされてもよく、電子デバイス3504上で実行されるアンチウイルス又はアンチマルウェアソフトウェアからそれの悪意ある処理を偽装するため隠蔽されてもよい。プロセス3573は、オペレーティングシステム3512を介しdenしデバイス3504のシステムリソースにアクセスしてもよい。プロセッサ3573は、メモリの異なる部分にアクセスするため、又はプロセッサ3508により実行されるため、電子デバイス3504の制御レジスタにアクセスすることを要求してもよい。当該アクセスは、プロセスコンテクストスイッチ又はプロセスアドレススペースの読み込みを生じさせることを含むものであってもよい。当該要求は、CR3レジスタ3560などのレジスタにアクセスするオペレーティングシステム3512により処理されてもよい。バーチャルマシーン制御構造1152は、当該リクエストをインターセプトし、当該リクエストについてVMイグジットを生成してもよい。バーチャルマシーン制御構造1152は、当該試行に関する情報をO/S下位セキュリティエージェント3516に提供してもよい。O/S下位セキュリティエージェント3516は、バーチャルマシーン制御構造1152上の命令“move CR3,value”3556又は“move value,CR3”3558をトラップするためのものなど、フラグを設定してもよい。O/S下位セキュリティエージェント3516は、CR3レジスタ3560及びレジスタ変更3576に対するすべての試行されたリード又は変更を記録してもよい。
電子デバイス3504上で実行される1以上のプロセス3573が隠蔽されているか判断するため、セキュリティデバイスドライバ3570は、オペレーティングシステム3512から何れのカーネルモードプロセスがオペレーティングシステム3512上で実行されているか判断してもよい。セキュリティデバイスドライバ3570は、アクティブプロセスリスト3584などのオペレーティングシステムカーネルメモリ3580の一部をスキャンすることによって、当該プロセスを決定してもよい。セキュリティデバイスドライバ3570は、電子デバイス3504のカーネルモードによる動作を検出可能な実行中プロセスリスト3580のリストを有してもよい。セキュリティデバイスドライバ3570は、実行中プロセスリスト3580をO/S下位セキュリティエージェント3516に送信してもよい。セキュリティデバイスドライバ3570は、実行中プロセスリスト3580において検出される各プロセスのEPROCESS構造をハイパーセルを介しO/S下位セキュリティエージェント3516にわたすことによって、実行中プロセスリスト3580をO/S下位セキュリティエージェント3516に送信してもよい。O/S下位セキュリティエージェント3516は、実行中プロセスリスト3580内に含まれる各EPROCESSのCR3値を計算してもよい。O/S下位セキュリティエージェント3516は、その後、実行中プロセスリスト3580においてセキュリティデバイスドライバ3570から生じたCR3値と、電子デバイス3504の動作中にコンパイルしたレジスタ変更3576とを比較してもよい。実行中プロセスリスト3580とレジスタ変更3576との間の相違は、電子デバイス3504上で隠蔽されるプロセス3573の1以上の結果であってもよい。
O/S下位セキュリティエージェント3516が、電子デバイス3504上で実行される隠蔽されたプロセスの証拠があると判断した場合、O/S下位セキュリティエージェント3516は、当該プロセスに関する修正が行われたか判断するため、オペレーティングシステム3512及びオペレーティングシステムカーネルメモリ3580をスキャンしてもよい。O/S下位セキュリティエージェント3516は、マルウェアにより行われたと知られるメモリ修正についてスキャンしてもよい。一実施例では、O/S下位セキュリティエージェント3516は、メモリ修正についてアクティブプロセスリスト3584と共にオペレーティングシステムコードセクション3582をスキャンしてもよい。O/S下位セキュリティエージェント3516は、オペレーティングシステムカーネルメモリ3580において検出された悪意ある修正を修復してもよい。O/S下位セキュリティエージェント3516は、オペレーティングシステムカーネルメモリ3580におけるメモリ修正を調べることによって決定された何れかの検出されたルートキット感染を削除するか、又は何れか内部のデータ構造又はコードセクションに対する感染を修復してもよい。O/S下位セキュリティエージェント3516は、O/S下位セキュリティエージェント3516及びセキュリティデバイスドライバ3570により決定されたプロセス間で検出された各相違の隠蔽されたプロセスのメモリ修正についてスキャンするプロセスを繰り返すよう構成されてもよい。O/S下位セキュリティエージェント3516は、実行中プロセスリスト3586などの最終的なプロセスリストを生成し、当該リストをセキュリティデバイスドライバ3570に送信してもよい。
セキュリティデバイスドライバ3570は、実行中プロセスリスト3586などの電子デバイス3504上で実行される各プロセスのアドレススペースにセキュリティDLL3572又はセキュリティDLL3572への参照を挿入してもよい。各プロセスアドレススペース3587は、セキュリティDLL3572へのポインタを含むものであってもよい。セキュリティDLL3572は、電子デバイス3504上で実行されるすべてのユーザモードプロセスを列挙してもよい。セキュリティDLL3572は、それの結果を実行中プロセスリスト3588にコンパイルし、実行中プロセスリスト3588をセキュリティデバイスドライバ3570に送信してもよい。
セキュリティデバイスドライバ3570は、O/S下位セキュリティエージェント3516から受信した実行中プロセスリスト3586のリストと、受信した実行中プロセスリスト3588とを比較してもよい。セキュリティデバイスドライバ3570は、当該プロセスリストの相違がユーザモードルートキット攻撃などのマルウェア感染を示すと判断してもよい。セキュリティデバイスドライバ3570は、メモリ修正が行われたか判断し、必要なリペアを行うため、プロセスアドレススペース3587に関するメモリにおいてプロセスコード及びデータセクションを調べてもよい。セキュリティデバイスドライバ3570は、プロセスアドレススペース3587をスキャンし、メモリ修正を検出し、当該メモリ修正を修復するプロセスを、セキュリティDLL3572からの実行中プロセスリスト3588とO/S下位セキュリティエージェント3516からの実行中プロセスリスト3586との間で検出された各相違について繰り返してもよい。
図36は、電子デバイス上で隠蔽されたプロセスを検出及び修復する方法3600の実施例である。
ステップ3605において、制御レジスタの試行されたアクセスがインターセプト及び記録されてもよい。当該制御レジスタは、CR3制御レジスタであってもよい。当該試行されたアクセスは、VMイグジットをトラップすることによってインターセプトされてもよい。当該インターセプトは、バーチャルマシーン制御構造においてフラグを設定することによって実現されてもよい。ステップ3605は、所与の期間における制御レジスタにアクセスするすべてのプロセスのレコードを含むO/S下位レベルプロセスリストをステップ3610において構築するため繰り返されてもよい。バーチャルメモリを利用するシステムでは、制御レジスタは、当該バーチャルメモリをスイッチ及びアクセスするためアクセスされてもよい。ステップ3605〜3610は、O/S下位セキュリティエージェントの支援により実現されてもよい。ステップ3605〜3610は、方法3600において各種比較が行われるように更新されたベースラインを提供するため、必要に応じて方法3600の処理中に定期的又は必要に応じて繰り返されてもよい。
ステップ3615において、電子デバイスのオペレーティングシステム上で実行されるプロセスは、オペレーティングシステムのカーネルモードの観点から決定されてもよい。当該プロセスは、オペレーティングシステムのカーネルモードの列挙ファンクションを利用することによって決定されてもよい。例えば、オペレーティングシステムのアクティブプロセスリストは、実行中のプロセスを決定するためアクセスされてもよい。ステップ3620において、当該プロセスは、O/Sレベルプロセスリストを構成するため利用されてもよい。ステップ3625において、O/Sレベルプロセスリストの各プロセスのEPROCESS構造からの制御レジスタ値が計算されてもよい。当該レジスタ値は、プロセスがO/Sレベルプロセスリストにおいて相互参照されることを可能にするものであってもよい。
ステップ3630において、O/S下位レベル及びO/Sレベルプロセスリストが、相違が存在するか決定するため比較されてもよい。O/S下位レベルプロセスリストにあって、O/Sレベルプロセスリストから欠落しているプロセスが存在する場合、ステップ3635において、当該プロセスが隠蔽され、悪意ある可能性があると判断されてもよい。
ステップ3640において、オペレーティングシステム及びシステムメモリが、隠蔽されたプロセスに関するメモリ修正についてスキャンされてもよい。一実施例では、当該リソースは、プロセス列挙に関する変更についてスキャンされてもよい。例えば、オペレーティングシステムコードセクション及び/又はオペレーティングシステムアクティブプロセスリストがスキャンされてもよい。ステップ3645において、検出されたメモリ修正が修復されてもよい。ステップ3650において、ステップ3605〜3645が、O/S下位レベルプロセスリストとO/Sレベルプロセスリストとの要素間に相違が存在しなくなるまで、隠蔽されるすべてのプロセスについて繰り返されてもよい。
図37は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法3700の実施例である。方法3700は方法3600と異なり、方法3600はカーネルモードプロセスとユーザモードプロセスとの双方を含むリストを作成及び比較することに関し、方法3700はカーネルモードプロセスリストとユーザモードプロセッサリストとの別々の作成及び比較に関する。一方のリストにあって、他方にないプロセスの存在を比較することによって、マルウェアがユーザモードルートキット又はカーネルモードルートキットであるかなど、マルウェアプロセスのクオリティが決定されてもよい。また、ルートキットは、1以上のプロセスを感染させている可能性がある。
ステップ3705において、制御レジスタの試行されたアクセスがインターセプト及び記録されてもよい。当該制御レジスタは、CR3制御レジスタであってもよい。当該試行されたアクセスは、VMイグジットをトラップすることによってインターセプトされてもよい。当該インターセプトは、バーチャルマシーン制御構造においてフラグを設定することによって実現されてもよい。ステップ3705は、所与の期間において制御レジスタにアクセスするすべてのプロセスのレコードを含みうるO/S下位レベルプロセスリストをステップ3710において構成するため繰り返されてもよい。バーチャルメモリを利用するシステムでは、制御レージスタは、バーチャルメモリをスイッチ及びアクセスするためアクセスされてもよい。ステップ3705〜3710は、O/S下位セキュリティエージェントの支援により実現されてもよい。ステップ3705〜3710は、方法3700において行われる各種比較について更新されたベースラインを提供するため、必要に応じて方法3700の処理中に定期的又は必要に応じて繰り返されてもよい。
ステップ3715において、電子デバイスのオペレーティングシステムのカーネルモードで実行されるプロセスは、オペレーティングシステムのカーネルモードの観点から決定されてもよい。当該プロセスは、オペレーティングシステムのカーネルモードの列挙ファンクションを利用することによって決定されてもよい。例えば、オペレーティングシステムのアクティブプロセスリストは、カーネルモードで実行されるプロセスを決定するためアクセスされてもよい。ステップ3720において、当該プロセスは、O/Sレベルプロセスリストを構成するため利用されてもよい。ステップ3725において、O/Sレベルプロセスリストの各プロセスのEPROCESS構造からの制御レジスタ値が計算されてもよい。当該レジスタ値は、当該プロセスがO/Sレベルプロセスリストにおいて相互参照されることを可能にするものであってもよい。
ステップ3730において、O/S下位レベル及びO/Sレベルプロセスリストが、相違が存在するか判断するため比較されてもよい。O/S下位レベルプロセスリストにあって、O/Sレベルプロセスリストから欠落したプロセスがある場合、ステップ3735において、当該プロセスが隠蔽されて悪意があり、おそらくカーネルモードルートキットの形態をとりうると判断されてもよい。一実施例では、あるいは、O/Sレベルプロセスリストから欠落したプロセスは、実際にはユーザモードプロセスであると判断されてもよい。当該実施例では、ステップ3715は、電子デバイスのユーザモードプロセスを列挙していないかもしれない。
ステップ3740において、オペレーティングシステム及びシステムメモリが、隠蔽されたプロセスに関するメモリ修正についてスキャンされてもよい。一実施例では、当該リソースは、プロセス列挙に関連する変更についてスキャンされてもよい。例えば、オペレーティングシステムコードセクション及び/又はオペレーティングシステムアクティブプロセスリストがスキャンされてもよい。ステップ3745において、何れか検出されたメモリ修正が修復されてもよい。ステップ3750において、ステップ3735〜3745が、O/S下位レベルプロセスリストとO/Sレベルプロセスリストとのカーネルモード要素間に相違がなくなるまで、すべての隠蔽されたカーネルモードプロセスについて繰り返されてもよい。
ステップ3755において、電子デバイスのユーザモードプロセスが決定及び列挙されてもよい。ステップ3755は、実行中の各プロセスのアドレススペースに共有ライブラリを挿入することによって実現されてもよい。共有ライブラリは、オペレーティングシステムのユーザモードプロセス列挙ファンクションをコールしてもよい。ステップ3760において、ユーザレベルプロセスリストは、ステップ3755の結果により作成されてもよい。ステップ3765において、O/S下位レベルプロセスリストとユーザレベルプロセスリストとの間の相違が決定されてもよい。ユーザレベルプロセスリストに検出されず、またO/Sレベルプロセスリストに以前に検出されていないプロセスは、隠蔽されたユーザモードプロセスであるかもしれず、マルウェアに関連付けされてもよい。ステップ3770において、ユーザモードのアプリケーション及びプロセススペースは、メモリ修正についてスキャンされてもよい。共有ライブラリが挿入されたアドレススペースのプロセスコードは、当該メモリ修正について調べられてもよい。データセクションと共にユーザモードプロセスコードを収容するメモリの部分が、ステップ3775においてスキャンされてもよい。ステップ3780において、検出されたメモリ修正が修復されてもよい。ステップ3785において、O/S下位レベルプロセスリストとユーザレベルプロセスリストとのユーザモード要素の間に相違が存在しなくなるまで、ステップ3755〜3780が繰り返されてもよい。
図38は、電子デバイス3801上で実行されるオペレーティングシステム3813のシステムコールへのアクセスをセキュアにするシステム3800の実施例である。システム3800は、オペレーティングシステム3813などの電子デバイス3801のオペレーティングシステムにおいて実行されるソフトウェアベースエンティティからのシステムコール及び/又はシステムコールテーブルにアクセスする悪意ある試行を検出するため、電子デバイス3801上で動作するよう構成されるO/S下位トラップエージェント3820及びトリガイベントハンドラ3822を有してもよい。さらに、O/S下位トラップエージェント3820及びトリガイベントハンドラ3822は、システムコール及び/又はシステムコールテーブル3804へのアクセスをトラップすべき時点と、トラップ処理に関するトリガイベントをどのように処理するかとを決定するため、1以上のセキュリティルール3804を利用するよう構成されてもよい。O/S下位トラップエージェント3820及びトリガイベントハンドラ3822は、トリガイベントを許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
電子デバイス3801は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス3801は、メモリ3803に接続される1以上のプロセッサ3802を有してもよい。プロセッサ3802は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ3803は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12のメモリ1203及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス3801は、システムコールテーブル3804、バーチャルメモリページテーブル3806及びO/S内セキュリティエージェント3819を含むオペレーティングシステム3813を有してもよい。オペレーティングシステム3813は、図1のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント3819は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール3808は、図1のセキュリティルール114、図2のセキュリティルール220、222、図4のセキュリティルール420、434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、721、723、図9のセキュリティルール908、921、図12のセキュリティルール1208、1221及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。プロテクションサーバ3818は、図1のプロテクションサーバ102、図2のプロテクションサーバ202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S下位トラップエージェント3820は、図1のO/S下位トラップエージェント104、図2のSVMM216、図4のファームウェアセキュリティエージェント440、442及び/若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ3822は、図1のトリガイベントハンドラ108、図2のSVMMセキュリティエージェント217、図4のO/S下位エージェント450、図7のO/S下位エージェント712、図9のトリガイベントハンドラ922及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。各種実施例では、O/S下位トラップエージェント3820の機能の一部は、トリガイベントハンドラ3822により実行されてもよく、及び/又はトリガイベントハンドラ3822の機能の一部は、O/S下位トラップエージェント3820により実行されてもよい。さらに、O/S下位トラップエージェント3820及びトリガイベントハンドラ3822は、同一のソフトウェアモジュールにより実現されてもよい。
ページテーブル3806は、データ構造として実現され、オペレーティングシステム3813のバーチャルメモリシステムを実現するのに利用されてもよい。バーチャルメモリシステムは、電子デバイス3801のメモリ3803へのアクセスを仮想化するメモリマネージメントシステムである。バーチャルメモリシステムでは、オペレーティングシステム3813上で実行されるソフトウェアプロセスには、プロセスがメモリの連続的なブロックとして扱うバーチャルアドレススペースが設けられる。実際には、バーチャルアドレススペースは、物理メモリの異なるエリアに分散されてもよい。プロセスがメモリへのアクセスをリクエストすると、オペレーティングシステム3813は、プロセスのバーチャルアドレスをデータが実際に格納されているメモリ3803の物理アドレスにマッピングしてもよい。バーチャルアドレススペースは、バーチャルメモリページと呼ばれる連続するバーチャルメモリアドレスの固定サイズのブロックに分割されてもよい。ページテーブル3806は、バーチャルメモリページからそれの対応する物理アドレスへのマッピングを、バーチャルメモリページが格納されるメモリ3803に格納するのに利用されてもよい。ページテーブル3806は、所与のバーチャルメモリページについて許可されているアクセスタイプを指定するため、リード、ライト及び/又は実行などの各種アクセスパーミッションを有してもよい。いくつかの実施例では、O/S下位トラップエージェント3820及び/又はトリガイベントハンドラ3822は、生成された例外又は試行されたリード、ライト若しくは実行処理を取得し、セキュリティルール3808を用いてメモリ3803にアクセスするための未認証のリクエストがマルウェアを示しているか判断するよう構成されてもよい。
システムコールテーブル3804は、システムコールを実現するため、オペレーティングシステム3813により利用されるデータ構造であってもよい。システムコールは、オペレーティングシステム3813により提供されるルーチン及び/又はシステムサービスであってもよい。システムコールテーブル3804は、アプリケーション3810とオペレーティングシステム3813との間のインタフェースを提供し、アプリケーション3810がオペレーティングシステム3813に当該アプリケーション3810が実行することが許可されていないかもしれない処理を実行することを要求するのを可能にする。各システムコールは、特定のシステムコールのエントリが格納されるシステムコールテーブル3804へのインデックスを用いて特定されてもよい。システムコールテーブル3804の各エントリは、特定のシステムコールに対応するコードが格納可能なメモリ3803のアドレスを格納してもよい。当該エントリはポインタとして実現されてもよい。システムコールは、オペレーティングシステム3813に適切なインデックスを通知し、以降にオペレーティングシステム3813への制御を移転することによって実行されてもよい。オペレーティングシステム3813は、その後、特定のシステムコールに対応するコードが格納されるメモリ3803の位置を特定するため、システムコールテーブル3804を照会してもよい。オペレーティングシステム3813は、その後、当該コードを実行し、システムコールを要求するソフトウェアコンポーネントに制御を返してもよい。システムコールテーブル3804の実施例の説明は、以下の図39のシステムコールテーブル3901の説明に見つけられてもよい。
O/S下位トラップエージェント3820は、メモリ3803及び/又はプロセッサ3802などのシステムコールに関する何れか適切なリソース3816へのアクセス又はそこからの情報をインターセプトするよう構成されてもよい。例えば、リソース3816は、図1のリソース106、図2のシステムリソース214、図7のシステムリソース、図9のプロセッサリソース924、図12のバーチャルメモリ1204及び/又は物理メモリ1203、及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。リソース3816は、プロセッサが命令をロード及び実行することを可能にするため、プロセッサ3802などのプロセッサに利用可能なリソースを含むものであってもよい。当該リソースは、例えば、データレジスタ、制御レジスタ、キャッシュ、プロセッサフラグ、プロセッサコア、プロセッサ例外及び/又はプロセッサインタラプトなどを含むものであってもよい。リソース3816はまた、バーチャル及び/又は物理メモリ3803を有してもよい。当該リソースの試行されたアクセスは、オペランドを有するアセンブリ言語命令などの命令を含むものであってもよく、当該試行されたアクセスは命令の実行をトラップすることによってトリガされてもよい。
O/S下位トラップエージェント3820は、メモリ3803などの何れか適切なリソース及び/又はプロセッサ3802のリソースへのアクセス又はそれからの情報をインターセプトするよう構成されてもよい。O/S下位トラップエージェント3820は、システムコール及び/又はシステムコールテーブル3804にアクセスするための試行をトラップするのに利用されてもよいシステムコールトラップ手段3814を有してもよい。システムコールトラップ手段3814及び/又はトリガイベントハンドラ3822は、その後、セキュリティルール3808に関連して、トラップされた試行に関するコンテクスト情報を利用して、1以上のサブスクライバ3812への試行を許可、拒絶及び/又は報告するか判断してもよい。コンテクスト情報は、トラップされたアクセス試行の要求元エンティティ、問題となっているシステムコール及び/又は試行されたアクセスのタイプを含むものであってもよい(例えば、システムコールを実行する試行、システムコールテーブル3804のエントリへのリード/ライトの試行など)。
システムコールトラップ手段3814は、O/S下位トラップエージェント3820のモジュール及び/又はコンポーネントであってもよく、何れか適切な方法によりシステムコールへのアクセスをトラップするよう構成されてもよい。例えば、システムコールトラップ手段3814は、システムコールの実行のためオペレーティングシステム3813に制御を移転する命令など、システムコールを実現するのに利用されるアセンブリ言語命令の実行をトラップするよう構成されてもよい。トラップするための命令は、電子デバイス3801のオペレーティングシステム3813及び/又はプロセッサ3802に依存してもよい。例えば、x86命令セットアーキテクチャ(ISA)をサポートするプロセッサ3802上で実行されるMicrosoft WindowsTMの一変形を利用するとき、システムコールトラップ手段3814は、“SysEnter”及び/又は“KiFastSysCall”命令を実行するための試行をトラップしてもよい。これらの命令は、システムコールを実行するため、オペレーティングシステム3813に制御を移転するよう機能する。“SysEnter”命令を実行する試行のトラップは、“Ring3”優先度で実行されるソフトウェアからの試行のみをトラップし、“KiFastSysCall”命令を実行する試行のトラップは、“Ring0”又は“Ring3”優先度で実行されるソフトウェアからの試行をトラップしてもよい。いくつかの実施例では、“SysEnter”及び/又は“KiFastSysCall”命令を実行する試行は、当該命令が格納可能な物理メモリ位置に対応するバーチャルメモリページを実行する試行をトラップすることによってトラップされてもよい。
他の実施例では、システムコールトラップ手段3814は、システムコールテーブル3804にアクセスするための試行をトラップするよう構成されてもよい。システムコールテーブル3804にアクセスするための試行をトラップするのに利用される方法は、電子デバイス3801のプロセッサ3802及び/又はオペレーティングシステム3813に依存してもよい。x86ISAをサポートするプロセッサ3802を利用するとき、システムコールトラップ手段3814は、MOV命令を実行するための試行をトラップすることによって、システムコールテーブル3804へのリード又はライトの試行をトラップしてもよい。例えば、システムコールトラップ手段3814は、“MOV syscall_table_address,EAX”命令をトラップすることによって、システムコールテーブル3804へのライトの試行をトラップしてもよい。この命令は、syscall_table_addressにより指定されたメモリアドレスのシステムコールテーブルへのエントリに、EAXレジスタからの値を書き込むよう処理してもよい。システムコールテーブル3804へのライトの試行をトラップすることによって、システムコールトラップ手段3814は、悪意あるコードを含むメモリアドレスによってシステムコールテーブル3814のエントリをマルウェアが上書きすることを阻止してもよい。同様に、システムコールトラップ手段3814は、“MOV EAX,syscall_table_address”命令をトラップすることによって、システムコールテーブル3804からのリードの試行をトラップしてもよい。当該命令は、syscall_table_addressにより指定されたメモリアドレスにおけるシステムコールテーブル3804のエントリから値をリードするよう処理してもよい。システムコールテーブル3804のエントリをリードする試行のトラップは、システムコールテーブル3804がシステムコールに対応するコードのメモリの位置をオペレーティングシステム3813が特定することを可能にするためリードされる必要があるため、システムコールテーブル3804のエントリに関するシステムコールを実行するすべての試行を効果的にトラップすることになる。さらに、システムコールテーブル3804のエントリへのリードの試行のトラップは、マルウェアなどによるシステムコールテーブル3804へのリードの直接的な試行をトラップすることになる。いくつかの実施例では、システムコールテーブル3804にアクセスするための試行は、システムコールテーブル3804が格納可能な物理メモリ位置に対応するバーチャルメモリページにアクセスするための試行をトラップすることによってトラップされてもよい。
さらなる他の実施例では、システムコールトラップ手段3814は、システムコールのコードがあるメモリ位置におけるコードを実行する試行をトラップすることによって、システムコールを実行するための試行をトラップするよう構成されてもよい。システムコールテーブル3804は、特定のシステムコールのコードがあるメモリ位置を特定するため照会されてもよい。システムコールを実行する試行をトラップするのに利用される方法は、電子デバイス3801のプロセッサ3802のタイプに依存してもよい。一実施例では、システムコールを実行するための試行は、命令ポインタ(IP)レジスタなどの値に基づくトリガを利用してトラップされてもよい。いくつかの実施例では、IPレジスタは、プログラムカウンタ(PC)レジスタとして知られてもよい。IPレジスタは、特定のプロセッサに応じて現在実行中の命令のアドレス又は次に実行される命令のアドレスを格納するのに利用されてもよい。x86ISAをサポートするプロセッサ3802を利用するとき、システムコールトラップ手段3814は、IPレジスタの値をモニタし、IPレジスタの値がシステムコールのアドレスを含むときに実行をトラップすることによって、特定にシステムコールを実行するための試行をトラップしてもよい。他の実施例では、システムコールを実行するための試行は、システムコールのコードが格納可能な物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってトラップされてもよい。システムコールテーブル3804は、システムコールに対応するコードのメモリにおける位置を特定するため、トラップされるシステムコールに対応するインデックスにおいて照会されてもよい。一実施例では、システムコールテーブル3804においてリンクされるルーチン及びファンクションを含むメモリ位置の実行は、システムコールテーブル3804内にあると知られている位置に対して導かれる“JMP”ルーチンなど。制御を移転するための命令をトラップすることによってトラップされてもよい。
システムコール及びシステムコールテーブル3804へのアクセスをトラップするための上記方法の具体的な実現は、O/Sトラップエージェント3820及び/又はシステムコールトラップ手段3814の特定の実現形態に依存してもよい、例えば、O/S下位トラップエージェント3820及び/又はシステムコールトラップ手段3814がバーチャルマシーンモニタにより実現される場合、メモリアドレスはバーチャルメモリアドレスから物理メモリアドレスに変換されていないかもしれないため、特定のメモリアドレスに基づくトラップは(例えば、システムコールテーブルのエントリへのリード/ライトのための試行に基づくトラップ、及び/又はシステムコールのコードを含むメモリ位置における実行に基づくトラップなど)、バーチャルメモリアドレスに基づくものであってもよい。他の例として、O/S下位トラップエージェント3820及び/又はシステムコールトラップ手段3814がマイクロコードセキュリティエージェントにより実現される場合、特定のメモリアドレスに基づくトラップは、物理メモリアドレスに基づくものであってもよい。これは、バーチャルアドレスから物理アドレスへの変換は、マイクロコードレベルにおいてすでに実行された可能性があるためである。
システムコールテーブル3804に関するファンクション又はシステムコールテーブル3804にアクセスする試行を行う命令のメモリ位置が、当該試行のトラップ中に検出されてもよい。メモリ位置は、試行を行ったエンティティを決定するため解析されてもよい。
特定の試行をトラップした後、システムコールトラップ手段3814は、当該試行に関するトリガイベントを作成し、トリガイベントハンドラ3822に送信してもよい。トリガイベントハンドラは、その後、セキュリティルール3808と共に、トラップされたイベントに関するコンテクスト情報を利用して、イベントを許可、拒絶及び/又は1以上のサブスクライバ3812に報告するか判断してもよい。コンテクスト情報は、トラップされたイベントの要求元エンティティ、問題となっている特定のシステムコール及び/又は要求されたアクションを含むものであってもよい(例えば、システムコールを実行する試行、及び/又はシステムコールテーブル3804のエントリに対するリード/ライトの試行など)。例えば、安全であってマルウェアがないと知られている特定のエンティティのみが、システムコールテーブル3804に書き込むことが許可されてもよい。以前に未知であったマルウェアステータスを有するエンティティは、システムコールテーブル3804へのライトの未認証の試行に基づき、マルウェアであると判断されてもよい。他の例では、システムコールテーブル3804においてリンクされるファンクションの実行はトラップされ、ファンクションへのコールをしたエンティティがシステムコールテーブル3804を介して当該試行を行った場合に限って、実行が許可されてもよい。マルウェアステータスが以前に未知であったエンティティによる試行は、ファンクションの実行への直接的なアクセスが拒絶されてもよい。さらに、ブラックリスト又は他の判定を介してシステムコールテーブル3804又はそれの関連するファンクションへのアクセスを試行するマルウェアであると判断されたエンティティは、アクセスが拒絶され、他の適切な訂正アクションが実行されてもよい。
サブスクライバ(subscriber)3812は、システムコールテーブル3804にアクセスするためのトラップされた試行及び/又はシステムコールを実行するためのトラップされた試行に関する情報を利用する何れかのエンティティを含むものであってもよい。サブスクライバ3812は、電子デバイス3801上のアプリケーション3810及び/又はセキュリティエージェントを有し、及び/又はサードパーティアプリケーション又は他のソフトウェアを有してもよい。例えば、サブスクライバ3812は、マルウェアを検出するためトラップされた試行に関するコンテクスト情報を利用可能なO/S下位トラップエージェント3820、トリガイベントハンドラ3822及び/又はO/S内セキュリティエージェント3819などの電子デバイス3801上で実行されるセキュリティソフトウェアを有してもよい。いくつかの実施例では、各サブスクライバ3812は、例えば、ファームウェアセキュリティエージェントなどのO/S下位トラップエージェント3820と同じ優先度レベルで動作する自らのセキュリティエージェントを提供してもよい。サブスクライバ3812は、プロテクションサーバ3818上などリモートで実行されるセキュリティソフトウェアを有してもよい。他の例として、サブスクライバ3812は、電子デバイス3801により利用される何れかのI/Oデバイスなどの特定のリソースのメーカーを含むものであってもよい。メーカーは、リソースに関するシステムコールなどのシステムコールの実行及び/又はシステムコールテーブルへのアクセスを介しリソースを危険にさらす何れかの疑わしい試行に関心があるかもしれない。他の例として、サブスクライバ3812は、デジタル著作権管理(DRM)システムのアドミニストレータを含むものであってもよい。DRMシステムは、デジタルコンテンツの使用を制限及び/又は制御してもよく、ビデオ及び/又は音楽コンテンツなど、著作権により保護されるデジタルコンテンツをプロテクトするのに通常利用される。DRMシステムのアドミニストレータは、各種のデジタルプロテクトされたファイルがどの時点でどのようにしてアクセスされるか知ることに興味があり、プロテクトされたファイルにアクセスするのに利用可能な各種システムコールを追跡することによってこれを実行してもよい。Application Programming Interface(API)は、サブスクライバ3812がシステムコールを実行するためのトラップされた試行及び/又はシステムコールテーブル3804にアクセスするためのトラップされた試行に関する情報にアクセスすることを可能にするため、サブスクライバ3812に備えられてもよい。
図39は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステム及び/又は方法により利用されるシステムコールテーブル3901の実施例である。システムコールテーブル3901は、各システムコールのコードがあるメモリ3908のアドレス3906を格納するためオペレーティングシステムにより利用されてもよい。システムコールテーブル3901は、テーブル、レコード及び/又は他の適切なデータ構造により実現されてもよい。Microsoft WindowsTMオペレーティングシステムの変形による実施例では、システムコールテーブル3901は、System Service Descriptor Table(SSDT)により実現されてもよい。システムコール3904は、オペレーティングシステムにより提供されるルーチン及び/又はシステムサービスであってもよい。典型的なシステムコール3904は、例えば、ファイルを操作及び/又は実行するためのオープン、リード、ライト、クローズ及び/又は実行、新たなプロセスを作成するためのntCreateProcess、及び/又は新たなドライバをロードするためのntLoadDriver及びZwLoadDriverなどを含むものであってもよい。
システムコール3904は、アプリケーションが実行することが許可されていない処理を実行することをオペレーティングシステムに要求することを可能にするアプリケーションとオペレーティングシステムとの間のインタフェースを提供する。例えば、典型的には“Ring3”優先度で実行されるアプリケーションは、ディスク上のファイルにアクセスする必要があるが、ディスクI/O処理を実行するパーミッションを有していないかもしれない。アプリケーションは、リード又はライトファイルシステムコードなどのシステムコール3904を利用し、オペレーティングシステムがアプリケーションからのリクエストを充足することを可能にするため、制御をオペレーティングシステムに移転するようにしてもよい。“Ring0”優先度で実行されるオペレーティングシステムは、特定のシステムコール3904に関するサービスを提供し、その後、アプリケーションに制御を戻してもよい。例えば、オペレーティングシステムは、システムコール3904に対応するコードがあるメモリアドレス3906を特定するため、システムコールテーブル3901にアクセスしてもよい。オペレーティングシステムは、その後、メモリ3908の指定されたアドレス3906のコードを実行し、アプリケーションに制御を戻してもよい。このようにして、アプリケーションは、オペレーティングシステムなど“Ring0”優先度で実行されるソフトウェアのみに典型的には利用可能な特定のサービスを利用してもよい。
各システムコール3904は、システムコール3904へのエントリが格納されるシステムコールテーブル3901へのインデックス3902を用いて参照されてもよい。例えば、システムコールテーブル3901は、合計でN個のエントリを有し、各エントリは、0〜N−1の範囲のインデックス3902を用いて参照されてもよい。システムコール3904は、適切なインデックス3902をオペレーティングシステムに通知し、オペレーティングシステムに制御を移転することによって実行されてもよい。いくつかの実施例では、ソフトウェアコンポーネントは、当該インデックスをプロセッサのレジスタに配置することによって適切なインデックス3902を指定してもよく、システムコール3904の実行のため、オペレーティングシステムに制御を移転するための命令を実行してもよい。例えば、x86命令セットアーキテクチャ(ISA)を利用する一実施例では、以下の命令が、アプリケーションのシステムコールを実現するのに利用されてもよい。
“MOV EAX,index”
“SysEnter”
最初の命令は、“index”をプロセッサのEAXレジスタに移すものであり、“index”は、特定のシステムコール3904のエントリがあるシステムコールテーブル3901のインデックス3902に対応する整数である。“SysEnter”命令は、その後、オペレーティングシステムに制御を移転し、オペレーティングシステムは、EAXレジスタに指定されるインデックス3902においてシステムコールテーブル3901にアクセスしてもよい。システムコールテーブル3901の特定のインデックスのエントリは、特定のシステムコール3904のコードがあるメモリ3908の位置を指し示すメモリアドレス3906を指定してもよい。その後、プロセッサは、メモリ3908の指定されたアドレスにあるコードを実行してもよい。システムコール3904は、アプリケーション、オペレーティングシステム及び/又はドライバを含む何れかのソフトウェアコンポーネントにより実行されてもよい。x86ISAに関する具体例として、オペレーティングシステム及び/又はドライバは、“KiFastSysCall”命令を利用することを除き、アプリケーションと同様にしてシステムコール3904を実行してもよい。
システムコール3904は、システムコールテーブル3901に追加及び/又は削除されてもよい。例えば、新たなデバイスが電子デバイスに追加された場合、当該新たなデバイスのデバイスドライバが、オペレーティングシステムによりロードされる必要があり、システムコール3904は、アプリケーションが新たなデバイスの機能を利用することを可能にするため、システムコールテーブル3901に追加されてもよい。新たなシステムコールのコードは、メモリ3908にロードされてもよく、新たなシステムコール3904のエントリが、システムコールのコードがあるメモリ3908のアドレス3906を指定するシステムコールテーブル3901のエンドに追加されてもよい。
システムコール3904を実現するための上述された実施例は、多数の可能な実施例の単なる数例である。システムコール3904及び/又はシステムコールテーブル3901は、何れか適切な方法により実現されてもよい。システムコール3904及び/又はシステムコールテーブル3901の具体的な実現形態は、電子デバイスのプロセッサ及び/又はオペレーティングシステムに依存してもよい。
図40は、電子デバイス上で実行されるオペレーティングシステムのシステムコールへのアクセスをセキュアにする方法400の実施例である。ステップ4005において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが、認証されてもよい。当該認証は、各コンポーネントのメモリのイメージを特定及び検証することによって、暗号化ハッシュを利用することによって、及び/又は秘密鍵を利用することによってを含む何れか適切な方法を用いて実行されてもよい。ステップ4005が終了するまで、他のステップの処理が保留されてもよい。ステップ4010において、セキュリティルールが取得される。セキュリティルールは、O/S下位セキュリティエージェント、O/S内セキュリティエージェント及び/又はトリガイベントハンドラによりローカルに格納されてもよく、及び/又はプロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ4015〜4040における判定を行うのに利用されてもよい。
ステップ4015において、システムコールを実行するための試行及び/又はシステムコールテーブルにアクセスするための試行がインターセプトされてもよい。いくつかの実施例では、システムコールを実行するための試行は、システムコールを実現するのに利用される制御トランスファ命令を実行するための試行をトラップすることによってインターセプトされてもよい。例えば、いくつかのプロセッサ及び/又はオペレーティングシステムは、SysEnter及び/又はKiFastSysCall命令などの制御トランスファ命令を用いてシステムコールを実現してもよく、システムコールを実行するための試行は、適切な制御トランスファ命令の実行をトラップすることによってインターセプトされてもよい。システムコールを実行するための試行はまた、特定の制御トランスファ命令が格納される物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってインターセプトされてもよい。いくつかの実施例では、システムコールを実行するための試行は、システムコールのコードを含むメモリ位置のコードを実行するための試行をトラップすることによってインターセプトされてもよい。当該実施例では、トラップは、IPレジスタの値に基づくものであってもよい。例えば、システムコールテーブル又はメモリマップは、システムコールのコードを含むメモリ位置を特定するため照会されてもよく、IPレジスタが特定のシステムコールのメモリ位置のアドレスを含むとき、トラップが実行されてもよい。他の実施例では、システムコールを実行するための試行は、特定のシステムコールのコードが格納されうる物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってインターセプトされてもよい。いくつかの実施例では、システムコールテーブルをリード又はライとするための試行がまたインターセプトされてもよい。当該実施例では、試行は、システムコールテーブルのメモリ位置にリード又はライトするのに利用される命令の実行をトラップすることによってインターセプトされてもよい。例えば、x86命令セットアーキテクチャ上で、MOV命令は、システムコールテーブルのある位置のリード又はライトを行うのに利用されるとき、トラップされてもよい。システムコールテーブルをリード又はライトするための試行がまた、いくつかの実施例では、システムコールテーブルが格納されうる物理メモリ位置に対応するバーチャルメモリページにアクセスするための試行をトラップすることによって、インターセプトされてもよい。
ステップ4020において、試行されたアクセスのソースが特定される。例えば、試行されたアクセスは、アプリケーション、ドライバ、O/S内セキュリティエージェント、オペレーティングシステム及び/又は他のソフトウェアエンティティからのものであってもよい。ステップ4025において、試行が認証されているか判断される。セキュリティルールは、特定の試行が認証されてもよいか否か判断するため、試行に関するコンテクスト情報と共に利用されてもよい。コンテクスト情報は、試行されたアクセスのソース及び/又は特定タイプのアクセスを含むものであってもよい。例えば、セキュリティルールは、オペレーティングシステムのみがシステムコールテーブルに書き込み可能であることを指定してもよい。他の例として、セキュリティルールは、エントリに関する署名されたドライバ又は他のソフトウェアコンポーネントが自らのエントリに書き込む可能であることを指定してもよい。試行が認証された場合、ステップ4030において、アクセスが許可される。試行が認証されていない場合、ステップ4035において、アクセスが拒絶される。最後に、ステップ4040において、試行が1以上のサブスクライバに報告されるべきか判断される。試行が報告されるべきか否かは、問題となっている特定のシステムコール及び試行されたアクセスに関するコンテクスト情報に依存するものであってもよい。セキュリティルールは、システムコールを実行するための試行及び/又はシステムコールテーブルにアクセスするための試行が1以上のサブスクライバに報告されるべき時点を指定してもよい。
図40からの方法のステップは、連続的、定期的、要求に応答して、及び/又はイベントのトリガに応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図41は、電子デバイス4104上の悪意ある又は悪意の可能性のあるコードの規制及び制御のためのシステム4100の実施例である。例えば、システム4100は、電子デバイス4104上の自己修正コードの規制及び制御のため利用されてもよい。システム4100は、検出から逃れるため、自らを自己修正するためのマルウェアによる試行に対してプロテクトするように電子デバイス4104上で動作するよう構成されるO/S下位セキュリティエージェント4116を有してもよい。他の例として、システム4100は、電子デバイス4104上の悪意あるコードを修正するのに利用されてもよい。システム4100は、検出されたマルウェアを無力化するため、悪意あるコードを修正するため電子デバイス4104上で動作するよう構成されるO/S下位セキュリティエージェント4116を有してもよい。さらなる例として、システム4100は、悪意の可能性のあるコードを含みうるスレッドファミリを特定するため、スレッドをモニタ及び追跡するのに利用されてもよい。システム4100は、スレッド間の関係をモニタ及び追跡するため電子デバイス4104上で動作するよう構成されるO/S下位セキュリティエージェント4116を有してもよい。
さらに、O/S下位セキュリティエージェント4116は、何れの試行された処理をトラップするか、また当該トラップされた処理にどのように応答するかを決定するため、1以上のセキュリティルール4122を利用するよう構成されてもよい。O/S下位セキュリティエージェント4116は、許可、拒絶又はトラップされた処理について他の訂正アクションを実行するよう構成されてもよい。
図41に示されるように、電子デバイス4104は、メモリ4108に接続されるプロセッサ4106、オペレーティングシステム4112、O/S下位セキュリティエージェント4116及びセキュリティルール4122を有してもよい。電子デバイス4104は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ4106は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ4108は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくは仮想化メモリ及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム4112は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント4116は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール4122は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール4122は、何れか適切な方法により決定されてもよい(例えば、電子デバイス4104のユーザにより設定されたポリシー、電子デバイス4104を含む企業のアドミニストレータにより設定されたポリシー、O/S下位セキュリティエージェント4116の作成者により設定されたポリシーなど)。いくつかの実施例では、O/S下位セキュリティエージェント4116は、ネットワーク244を介しプロテクションサーバ202からセキュリティルール4122に対する更新又は修正をリクエスト及び/又は受信してもよい(マルウェアの定義に対する更新などのため)。
オペレーティングシステム4112は、O/S内セキュリティエージェント4118を有してもよい。O/S内セキュリティエージェント4118は、図2のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント718、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
図41に示されるように、メモリ4108は、パーミッションフラグ4136及び履歴4140を有してもよい。パーミッションフラグ4136は、メモリ4108に格納されているコンテンツに関するパーミッションを決定するフラグ、変数又は他のデータを維持してもよい。例えば、パーミッションフラグ4136は、メモリ4108の特定の位置(ページ又はアドレスなど)について、電子デバイス4104上で実行されるエンティティが当該位置に格納されているコンテンツをリード、ライト及び/又は実行してもよい。いくつかの実施例では、パーミッションフラグ4136は、メモリ4108のページテーブルエントリ(PTE)及び/又はページディレクトリエントリ(PDE)に実現されてもよい。パーミションフラグ4136は、特定のメモリ位置(ページ又はアドレスレンジなど)に格納されてもよい。
履歴4140は、トラップされた試行されたアクセスと、当該トラップされた試行されたアクセスに関する情報とを記録するためのログ、リスト、キャッシュ及び/又は他の適切なデータ構造を含むものであってもよい(例えば、試行されたアクセスのタイプ、トラップされた試行されたアクセスに関するメモリ位置など)。履歴4140への試行された悪意あるアクセスを介しO/S下位セキュリティエージェント4116の効果を回避するためマルウェアによる試行を阻止するため、履歴4140のコンテンツは、メモリをセキュアにするためここで開示された方法の1以上に従って試行されたアクセスからプロテクトされてもよい。例えば、O/S下位セキュリティエージェント4116は、O/S下位セキュリティエージェント4116以外のエンティティからの履歴4140があるメモリページ又はメモリアドレスレンジへの試行されたアクセスをトラップし、当該トラップされた試行されたアクセスを拒絶してもよい。
上述されるように、O/S下位セキュリティエージェント4116は、セキュリティルール4122に基づき悪意あるコードの存在を検出してもよい。O/S下位セキュリティエージェント4116は、上述されるような何れかの方法を介し、及び/又は他の何れか適切な方法により悪意あるコードの存在を検出してもよい。例えば、O/S下位セキュリティエージェント4116は、メモリ4108又は電子デバイス4104の他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、O/S下位セキュリティエージェント4116は、悪意あるコードについてメモリ4108及び/又はストレージ4126のページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、O/S下位セキュリティエージェント4116は、O/S内セキュリティエージェント4118が悪意あるコードの存在を検出したという通信をO/S内セキュリティエージェント4118から受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
特に、O/S下位セキュリティエージェント4116は、セキュリティルール4122に基づき、個別に又はまとめて自己修正したマルウェアの存在を示すメモリへの1以上の試行されたアクセスに対してトラップしてもよい。例えば、パーミッションフラグ4136に示されるようなメモリの位置のパーミッションへの変更は(例えば、リードからリード/ライト、リード/ライトからリード/ライト/実行など)、マルウェアの存在を示す可能性がある(例えば、他の試行されたメモリアクセスと個別に又はまとめて)。従って、O/S下位セキュリティエージェント4116は、パーミッションフラグ4136に対する検出された変更に応答してトラップしてもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってパーミッションフラグ4136を含むメモリ4106の位置(ページ又はアドレスなど)への試行されたアクセスに対してトラップしてもよい。同じ又は他の実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってオペレーティングシステム4112の対応するパーミッションフラグを有するメモリ4108(例えば、NTProtectVirtualMemory、ZwProtectVirtualMemory、ProtectVirtualMemory、及び/又はWindowsTMの他の適切なフラグなど)のメモリパーミッション(例えば、MiSetProtectionOnSection、AllocateVirtualMemory()、MiProtectVirtualMemory()、及び/又はWindowsTMの他の適切なファンクションコールなど)及び/又は位置(ページ又はアドレスなど)を修正するためオペレーティングシステム4112のコール及び/又はファンクションを含むメモリ4108の位置(ページ又はアドレスなど)に対する試行されたアクセスに対してトラップしてもよい。
他の例として、メモリ4106のある位置から他の位置へのコンテンツのコピーは、マルウェアの存在を示すものであるかもしれない(個別に又は他の試行されたメモリアクセスと一緒になど)。従って、O/S下位セキュリティエージェント4116は、メモリ位置の間のコンテンツのコピーに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってメモリのある位置から他の位置へのコンテンツのコピーのためのプロセッサファンクションに対してトラップしてもよい。同じ又は他の実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従って、WindowsTMのMemUICopyファンクションなどの、データをコピーするためのオペレーティングシステム4112のコール及び/又はファンクションを含むメモリ4108の位置(ページ又はアドレスなど)への試行されたアクセスに対してトラップしてもよい。
さらなる例として、メモリ4106に格納されているコンテンツの修正又は“writing−in−place”は、マルウェアの存在を示す可能性がある(個別に又は他の試行されたメモリアクセスと一緒になど)。従って、O/S下位セキュリティエージェント4116は、メモリ4108のコンテンツのwriting−in−placeに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってメモリ4108の所定の位置のコンテンツを修正するプロセッサファンクションに対してトラップしてもよい。同じ又は他の実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従って所定の位置のコンテンツを修正するため、オペレーティングシステム4112のコール及び/又はファンクションを含むメモリ4108の位置(ページ又はアドレスなど)への試行されたアクセスに対してトラップしてもよい。
さらなる例として、メモリに格納されるコピー又は修正されたコンテンツの実行は、マルウェアの存在を示す可能性がある(個別に又は他の試行されたメモリアクセスと一緒になど)。従って、O/S下位セキュリティエージェント4116は、メモリ4108のコンテンツの実行に関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従って、メモリ4108のコンテンツを実行するためプロセッサファンクションに対してトラップしてもよい。同一の又は他の実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってコンテンツを実行するためのオペレーティングシステム4112のコール及び/又はファンクションを含むメモリ4108の位置(ページ又はアドレスなど)への試行されたアクセスに対してトラップしてもよい。
さらなる例として、メモリへのコンテンツのロードは、マルウェアの存在を示す可能性がある(個別に又は他の試行されたメモリアクセスと一緒になど)。従って、O/S下位セキュリティエージェント4116は、メモリ4108へのコードのロードに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、セキュリティルール4122に従ってメモリ4108にコードをロードするためのプロセッサファンクション又はシステムファンクションに対してトラップしてもよい。O/S下位セキュリティエージェント4116は、オペレーティングシステムローダの使用など、メモリ4108にコードをロードするための安全な又は標準的な方法を決定するよう構成されてもよい。当該安全な又は標準的な方法は、オペレーティングシステム4112により実行されるロジック又はステップが知られてもよいように、ベンチマーク又はマッピングされてもよい。メモリ4108にコードをロードするための試行をトラップすると、O/S下位セキュリティエージェント4116は、当該試行がコードをロードするための既知の方法に一致するか判断してもよい。例えば、当該試行がメモリのすでに割り当てられた部分へのコードのロードに関するものであり、メモリへの直接的なライトによりオペレーティングシステムローダをバイパスすることにより実行するよう試みる場合、当該試行は悪意あると判断される可能性がある。
コードを含むページ又はメモリレンジが修正された場合、O/S下位セキュリティエージェント4116は、当該修正を追跡するよう構成されてもよい。修正されたコードの以降の処理は、実行に進捗することが許可される場合、追跡及び記録されてもよい。しかしながら、O/S下位セキュリティエージェント4116は、例えば、他のカーネルモードエンティティ又はオペレーティングシステムを含むメモリである特権位置へのアクセスに対する修正されたコードにより試行をトラップ及び拒絶するなどによって、当該コードにより少ない特権を提供してもよい。修正されたコードのマルウェアステータスは未知である可能性があり、それが安全であると最終的に決定されるまで、O/S下位セキュリティエージェント4116は、カーネルファンクション又はルーチンへの修正されたコードアクセスを拒絶してもよい。
O/S下位セキュリティエージェント4116は、履歴4140の1以上のトラップされた試行されたアクセスに関する情報を記録してもよい。時々、O/S下位セキュリティエージェント4116は、特定のメモリ位置に関して疑わしい動作が発生したか判断するため、履歴4140を解析してもよい。その解析中、O/S下位セキュリティエージェント4116は、履歴4140に実現されるような特定のメモリ位置の動作が、自己修正したマルウェアコードの存在の可能性を示しうる疑わしい動作を示すか判断するため、ルール4122を照会してもよい。例えば、履歴4140の解析が、第1メモリ位置のコンテンツが第2位置にコピーされ、第2位置で修正され、第2位置のコンテンツの試行された実行が行われたことを示す場合、当該表示は、自己修正するマルウェアコードの存在の可能性の証拠である可能性がある。他の例として、履歴4140の解析が、第3位置において共通の祖先(ancestor)をそれぞれが有する第1及び第2メモリ位置の各コンテンツが試行された実行のターゲットであった場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠である可能性がある。さらなる例として、履歴4140の解析が、特定の守り位置のコンテンツが他の複数のメモリ位置において祖先を有知ることを示す場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠である可能性がある。さらに、履歴4140は、階層におけるレベルとエンティティとの間で行われる修正を記録してもよい。
ここで用いられる特定のメモリ位置におけるコンテンツとは、他のメモリ位置におけるコンテンツが当該特定のメモリ位置のコンテンツのコピー又は修正版である場合、他のメモリ位置におけるコンテンツの“祖先”であり、他のメモリ位置におけるコンテンツが特定のメモリアドレスにおけるコンテンツに加えて、1以上の中間的な祖先の派生したものであるケースを含む。
履歴4140の当該記録は、すべてのメモリ位置に適用される場合、電子デバイス4104の処理リソースのかなりの部分を使用する可能性があるため、O/S下位セキュリティエージェント4116は、特定のメモリ位置がマルウェアの影響を受けることを示す試行されたアクセスの発生に応答して、特定のメモリ位置についてのみ履歴4140を記録してもよい。例えば、O/S下位セキュリティエージェント4116は、特定のメモリ位置に対するパーミッション(パーミッションフラグ4136により実現される)の修正をトラップすると、特定のメモリ一日手履歴4140の記録を始めてもよい。
さらに、疑わしい動作が発生したか判断するための履歴4140の解析は、すべてのメモリ位置及び/又は試行されたアクセスに適用される場合、電子デバイス4104の処理リソースのかなりの部分を消費しうるため、O/S下位セキュリティエージェント4116は、特定のメモリ位置に関する特定のトラップされた試行されたアクセスの発生に応答して、特定のメモリ位置に関してのみ履歴を解析してもよい。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、特定のメモリ位置におけるコンテンツへの試行されたアクセスをトラップすることに応答して、特定のメモリ位置に関する履歴4140の解析を開始してもよい。
特定の実施例では、単一のトラップされた試行されたアクセスの発生は、履歴4140の解析なく疑わしい動作を示す可能性がある。例えば、パーミッションフラグ4136に示されるような特定のメモリ位置のパーミッションの変更は(例えば、リードからリード/ライト、又はリード/ライトからリード/ライト/実行など)、マルウェアの存在を示す可能性がある。例えば、オペレーティングシステムカーネル又はセキュリティアプリケーションを格納するメモリ位置に対するパーミッションの変更は、マルウェアの存在の可能性を示す疑わしい動作を示す可能性がある。
O/S下位セキュリティエージェント4116が、マルウェアの存在の可能性を示す疑わしい動作を検出した場合(例えば履歴4140の解析又は単一のトラップされた試行されたアクセスなどに基づき)、O/S下位セキュリティエージェント4116は、訂正アクションを開始してもよい(例えば、セキュリティルール4122などに従って)。例えば、いくつかの実施例では、O/S下位セキュリティエージェント4116は、疑わしい動作を検出すると、検出された疑わしい動作に関する特定のメモリ位置に格納されているコンテンツと既知のマルウェア及び/又は既知の信頼された/真正のプロセスとを比較し、コンテンツが悪意あるか判断してもよい。当該比較は、コンテンツのハッシュ、フィンガープリント又はシグネチャと既知のプロセスのハッシュ、フィンガープリント又はシグネチャとを比較することによって実行されてもよい。
あるいは又はさらに、O/S下位セキュリティエージェント4116が、マルウェアの存在の可能性を示す疑わしい動作を検出した場合(例えば、単一のトラップされた試行されたアクセス又は履歴4140の解析などに基づき)、O/S下位セキュリティエージェント4116は、以降の解析のためプロテクションサーバ202に疑わしい動作に関するフォレンジックな証拠を報告してもよい(例えば、メモリ位置に関する履歴4140、メモリ位置のコンテンツなど)。いくつかの実施例では、プロテクションサーバ202は、コンテンツに関するシグネチャ(ハッシュ又はフィンガープリントなど)を生成し、シグネチャに関するポリシー又はブラックリストエントリを生成し、他の電子デバイス上で実行されるセキュリティエージェントに当該情報を通信してもよい。同一の又は他の実施例では、プロテクションサーバ202はさらに、疑わしい動作が実際にマルウェアを示すか判断するため、疑わしい動作を解析し(他の電子デバイスから受信したフォレンジックエビデンスと共に)、マルウェアを示す場合、同様の動作がマルウェアの存在の証拠であるか否かに関する命令を電子デバイスに通信してもよい(例えば、セキュリティルール4122の形態などにより)。
O/S下位セキュリティエージェント4116が、疑わしい動作に関するメモリ位置のコンテンツが悪意あると判断した場合(例えば、コンテンツと既知のプロセスとの比較、プロテクションサーバ202から受信した情報、セキュリティルール4122への参照、及び/又は他の判断などにより)、O/S下位セキュリティエージェント4116は、さらなる訂正アクションを実行してもよい(セキュリティルール4122などに従って)。当該訂正アクションは、限定することなく、コンテンツの実行の不許可、コンテンツに対する変更の不実行(履歴4140に示されるコンテンツの修正及びコピーなど)、コンテンツの修復、コンテンツと無害なコンテンツとの置換、及び/又はコンテンツに関するプロセスの非イネーブル化を含むものであってもよい。
上述された各種実施例では、セキュリティルール4122及びメモリ4108の特定部分に適用されたプロテクションは、コンテンツがメモリ4108の異なる部分の間で転送されるとき、推移的に適用されてもよい。従って、例えば、セキュリティルール4122の特定のセットがメモリ4108の特定部分のコンテンツに適用される場合、当該コンテンツのメモリ4108の他の部分への移転に応答して、O/S下位セキュリティエージェント4116は、メモリ4108のデスティネーション部分に適用するセキュリティルール4122を更新してもよい。
上述されるように、O/S下位セキュリティエージェント4116は、セキュリティルール4122に基づき、悪意あるコードの存在を検出してもよい。O/S下位セキュリティエージェント4116は、上述されたような何れかの方法を介し及び/又は他の何れか適切な方法により悪意あるコードの存在を検出してもよい。例えば、O/S下位セキュリティエージェント4116は、メモリ4108又は電子デバイス4104の他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、O/S下位セキュリティエージェント4116は、悪意あるコードについてメモリ4108及び/又はストレージ4126のページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、O/S下位セキュリティエージェント4116は、O/S内セキュリティエージェント4118が悪意あるコードの存在を検出したという通信をO/S内セキュリティエージェント4118から受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
電子デバイス4104上の悪意あるコードの検出に応答して(当該コードが自己修正コード又は他の悪意あるコードであるか)、O/S下位セキュリティエージェント4116は、悪意あるコードの修正を含む訂正アクションを実行してもよい。ここで用いられる悪意あるコードの“修正”とは、限定することなく、メモリ4108において実現されるような悪意あるコードの修正、ストレージ4126において実現されるような悪意あるコードの修正、及び/又はメモリ4108及び電子デバイス4104の他のリソースへの悪意あるコードのアクセスの修正を含むものであってもよい。悪意あるコードの修正は、悪意あるコードを含むメモリ4108の部分(ページなど)がマルウェア又は感染を認識していないプログラムに属する可能性があるため、効果的である。例えば、当該悪意あるコードは、ワープロドキュメント、オペレーティングシステムカーネルの一部又はマルウェア自体に実現される可能性がある。
メモリ4108に実現されるような悪意あるコードの修正では、O/S下位セキュリティエージェント4116は、悪意あるコードを含むプログラムが自己終了するか、及び/又は悪意あるコードを無力化する信頼されたコードに実行を移転するように、悪意あるコードを修正してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを削除することなどによって)、例えば、O/S下位セキュリティエージェント4116は、悪意あるコードの実行が最終的に終了するように、オペレーティングシステム4112の“イグジット”ファンクションへのコールをメモリ4108の悪意あるコードに挿入してもよい。他の例として、O/S下位セキュリティエージェント4116は、悪意あるコードを無力化するコードの既知の信頼された部分を格納したメモリ4108の他の部分への悪意あるコードの実行のリダイレクトする命令(JUMP命令など)をメモリ4108の悪意あるコードに挿入してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータの消去などによって)。さらなる例として、悪意あるコードが現在実行されている場合、O/S下位セキュリティエージェント4116は、実行の制御を悪意あるコードを無力化するコードの既知の信頼された部分に移転させるため、メモリ4108の命令ポインタ値を変更してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって)。
いくつかのインスタンスでは、悪意あるコードにより実現される悪意あるプロセスを単に終了することは、望ましくないかもしれない。例えば、削除又は終了が望ましくない副次的効果を有する可能性のあるオペレーティングシステムの感染部分からの信頼されたアプリケーションについて、終了及び削除は不適切であるかもしれない。従って、O/S下位セキュリティエージェント4116は、悪意あるコードが修復されるように悪意あるコードを修正し、感染したアプリケーションが感染がなかったかのように効果的に実行することを可能にする。例えば、O/S下位セキュリティエージェント4116は、既知の又は信頼されたコードにより悪意あるコードを置換してもよい。特定の例として、オペレーティングシステムの既知の部分が特定のメモリページにおいて感染している場合、O/S下位セキュリティエージェント4116は、オペレーティングシステムの当該部分の既知のコードによって、特定のメモリページを上書きしてもよい。一実施例では、O/S下位セキュリティエージェント4116は、プロテクションサーバから置換ページを取得してもよい。当該置換ページは、要求に応答して生成されてもよいし、又はオペレーティングシステムコンポーネント、ドライバ又は他のモジュールの既知の部分を置換するよう構成されてもよい。あるいは、O/S下位セキュリティエージェント4116は、実行が他のメモリ位置の感染したコードの復元されたバージョンにより継続されるように、メモリ4108の命令ポインタを修正してもよい。
ストレージ4126において実現されるような悪意あるコードの修正では、悪意あるコードを変更又は削除してもよい。例えば、メモリ4108とストレージ4126との間のコンテンツの移転についてトラップすることによって、O/S下位セキュリティエージェント4116は、メモリ4108に格納されているコンテンツとストレージ3126に格納されている対応するコンテンツとの関係に関する情報をログ、リスト、キャッシュ又は他のデータ構造に収集及び格納してもよい。従って、O/S下位セキュリティエージェント4116がメモリ4108において悪意あるコードを特定した場合、それは、メモリ4108に格納されるコンテンツとストレージ4126に格納される対応するコンテンツとの関係に関する収集された情報を参照し、悪意あるコードを有するメモリ4108の位置に対応するストレージ4126の位置においてコンテンツを修正してもよい。当該修正は、限定することなく、ストレージ4126における対応するコンテンツの削除、又はストレージ4126及び/又はメモリ4108における悪意あるコードの自己終了又は削除を生じさせるコンテンツの修正を含むものであってもよい。
メモリ4108及び電子デバイス4104の他のリソースへの悪意あるコードのアクセスを修正する際、O/S下位セキュリティエージェント4116は、悪意あるコードセグメントのメモリ4108又は電子デバイス4104の他のリソースへのアクセスを拒絶してもよい。メモリ4108及び他のリソースの拒絶は、悪意あるコードを含むプロセスをクラッシュ又は無効にする可能性がある。例えば、悪意あるコードが特定されると、O/S下位セキュリティエージェント4116は、電子デバイス4104のメモリ4108又はリソースへの悪意あるコードを含むプロセスによる試行されたアクセスに対してトラップし、当該アクセスを拒絶してもよい。
上述された修正技術のいくつかに従って、O/S下位セキュリティエージェント4116は、悪意あるコードを手つかずにしたまま、悪意あるコードを無力化してもよい。当該シナリオでは、O/S下位セキュリティエージェントは、さらなる解析のため悪意あるコードを隔離し、フォレンジックエビデンスとしてプロテクションサーバ202に転送してもよい。プロテクションサーバ202は、その後、悪意あるコードに関するシグネチャ(ハッシュ又はフィンガープリントなど)を生成し、シグネチャに関するポリシー又はブラックリストエントリを生成し、他の電子デバイス上で実行されるセキュリティエージェントに当該情報を通信してもよい。
いくつかの実施例では、メモリ4108の特定部分に存在する悪意あるコードの特定は、O/S下位セキュリティエージェント4116が悪意あるコードを有するメモリ4108の他の部分を特定することを可能にしてもよい。例えば、マルウェア的動作を示すスレッドを検出すると、O/S下位セキュリティエージェント4116は、当該スレッドの実行アドレス及び/又は悪意あるコードのメモリページ内の位置を決定してもよい。バーチャルメモリ構成では、アプリケーションコードは連続的にリストされ、物理メモリでは、アプリケーションコードは実質的に不連続であってもよい。従って、メモリ4108の物理メモリアドレスとストレージ4126のバーチャルメモリアドレスとの間のオペレーティングシステムにより維持されるマッピングを利用することによって、O/S下位セキュリティエージェント4116は、悪意あるコードを含む特定された悪意あるコードに連続するバーチャルメモリの部分を特定し、当該バーチャルメモリ部分を感染している可能性のある物理メモリアドレスにマッピングしてもよい。従って、当該物理メモリアドレスにおけるコードの実行はさらに、悪意あるコードの存在についてO/S下位セキュリティエージェントによりモニタされてもよい。
さらに、O/S下位セキュリティエージェント4116はまた、スレッドによるリソースの実行及び/又は使用に関するアクティビティをモニタし、当該モニタリングに基づき各種スレッド間の関係を決定するよう構成されてもよい。従って、特定のスレッドが悪意あると特定されると、O/S下位セキュリティエージェント4116は、悪意あるスレッドに関するスレッドを決定し(例えば、祖先スレッド、子孫スレッド、兄弟スレッドなど)、悪意あるスレッドに加えて関連するスレッドに関して訂正アクションを実行してもよい。
当該モニタリング及び追跡を実行するため、O/S下位セキュリティエージェント4116は、メモリ4108、ストレージ4126、ネットワーク244及び/又は電子デバイス4104の他のリソースへのアクセスをモニタし、スレッドによりリソースの利用及び/又はスレッドの実行に関するオペレーティングシステムサービス、コール及び/又はファンクションをモニタし、及び/又は疑わしい動作を検出するためここに開示される技術の1以上を利用してもよい。例えば、O/S下位セキュリティエージェント4116は、メモリ4108、ストレージ4126及び/又は電子デバイス4104の他のコンポーネントにおけるリード、ライト及び/又は実行コードへの試行されたアクセス、パーミッションフラグ4136に対する試行された変更、及び/又は疑わしい動作を示し、履歴4140への試行されたアクセスに関する情報を記録する他の試行されたアクセス(個別に又は他のメモリアクセスと一緒に)をトラップするため、図12のO/S下位セキュリティエージェント4116の機能を実現してもよい(例えば、セキュリティルール4122に基づき)。
さらなる例として、O/S下位セキュリティエージェント4116は、疑わしい動作を示すスレッドによりリソースの利用及び/又はスレッドの実行に関する試行されたオペレーティングシステムサービス、コール及び/又はファンクションをトラップし(セキュリティルールなどに基づき)、履歴4140への試行されたアクセスに関する情報を記録するため、O/S下位セキュリティエージェント712、マイクロコードセキュリティエージェント708及び/又はO/S下位トラップエージェント920の機能を実現してもよい。さらに、いくつかの実施例では、O/S内セキュリティエージェント4118は、疑わしい動作を示すスレッドによりリソースの利用及びスレッドの実行に対するオペレーティングシステム4112のユーザ又はカーネルモードファンクションに対してトラップし、履歴4140への試行されたアクセスに関する情報を記録し、及び/又はO/S下位セキュリティエージェント4116に当該情報を通信するよう構成されてもよい。
スレッド間の関係を決定するため、O/S下位セキュリティエージェント4116は、メモリの観点からオペレーティングシステムのスレッド同期オブジェクトへの試行されたアクセスをモニタしてもよい。説明のため、初期的なスレッドは、第2スレッドを生成し、その後、初期的なスレッドは終了しながら第2スレッドは処理を開始する(プロセスのメインスレッドになる)。他の例では、スレッドは、プロセス間通信(IPC)コールを介し互いに生成、終了又はサスペンドするよう動作してもよい。従って、スレッドは、複数のプロセスを発生差し、1つのプロセスのスレッドは、生成、終了又はサスペンドする他のプロセスにおけるスレッドに対するIPCコールを実行してもよい。O/S内セキュリティエージェント4118は、当該IPCコールを開始するため、オペレーティングシステムコール(例えば、WindowsTMの実施例では、NTCreateThread、NTSuspendThread、又はNTTerminateThreadなどのコール)に対してトラップすることによって、IPCコールを追跡してもよい。
しかしながら、O/S内セキュリティエージェントを利用したIPCコールに対するトラップは、マルウェアにより危険にさらされるか、又は回避されてもよい。従って、O/S下位セキュリティエージェント4118は、IPCコールの開始に関するメモリ又はプロセッサリソースへの試行されたアクセスに対してトラップすることによって、試行されたアクセスをモニタしてもよい。例えば、O/S下位セキュリティエージェント4116は、IPCコールの開始に関するプロセッサリソースへの試行されたアクセスをトラップするため、図9のO/S下位トラップエージェント920の機能を実現してもよい。他の例として、O/S下位セキュリティエージェント4116は、当該IPCコールの実行可能コードが格納されるメモリ位置(ページ又はアドレスなど)への試行されたアクセスをトラップするため、図12のO/S下位セキュリティエージェント1220の機能を実現する。IPCコールに関するイベントによるトラップによって、O/S下位セキュリティエージェント4116は、履歴940に当該イベントに関する情報(スレッド識別子など)を記録してもよい。
IPCコールに関するスレッドを特定するため、O/S下位セキュリティエージェント4116は、特定のスレッドに関する情報を取得する1以上のプロセッサリソース(例えば、システムリソース724として図7に特定されたものなど)にアクセスしてもよい。例えば、WindowsTMオペレーティングシステムで実行されるスレッドについて、プロセッサレジスタ(FSレジスタなど)は、プロセッサ制御ブロック(PCB)と呼ばれる各プロセッサのメモリにおける構造を指し示してもよい。PCBは、スケジューリングされたスレッドのETHREADリストと共に、プロセッサ上で現在実行されているスレッドのETHREADデータ構造を含むプロセッサ上のスレッドを管理するため、スレッドスケジューラにより利用される情報を含む。スレッドに関するETHREADデータ構造は、スレッドの識別子を含むいくつかのメタデータフィールドを含むものであってもよい。従って、O/S下位セキュリティエージェント4116は、WindowsTMにセキュリティを適用する際、プロセッサのPCBのメモリ位置を決定するため、プロセッサリソースの情報にアクセスし、特定のスレッドについてETHREAD情報を取得するため、PCBにアクセスしてもよい。
IPCコールに関する履歴4140に格納されている情報に基づき、O/S下位セキュリティエージェント4116は、各種スレッド間の関係を決定するため、履歴4140を解析してもよい。それの解析中、O/S下位セキュリティエージェント4116は、履歴4140に示されるスレッド動作が2以上のスレッド間の関係を示すか判断するため、ルール4122を照会してもよい。他方、特定のスレッド又はそれのホストアプリケーションが悪意あると判断された場合、O/S下位セキュリティエージェント4116は、特定のスレッドに関する1以上のスレッドを決定し、当該関連するスレッドに関して訂正アクションを実行することが可能であってもよい。例えば、訂正アクションは、当該関連するスレッドが悪意あるコードを含むか判断するため、O/S下位セキュリティエージェント4116が当該スレッドを調査、スキャン及び/又は解析することを含むものであってもよい(例えば、本明細書の何れで記載された1以上の技術を利用するなど)。さらなる例として、訂正アクションは、O/S下位セキュリティエージェント4116がさらなる解析のため特定のスレッド及びそれの関連するスレッドに関するフォレンジックエビデンスをプロテクションサーバ202に通信することを含むものであってもよい。プロテクションサーバ202は、当該情報を解析し、実行されるべき何れか追加的な訂正アクションに関する命令を電子デバイス4104に通信してもよい(セキュリティルール4122の形態などにより)、さらなる例として、O/S下位セキュリティエージェント4116は、悪意あるスレッドを含むメモリの部分を修復することを試みてもよい(ページ、メモリアドレスなど)。
当該修復を実行するため、O/S下位セキュリティエージェント4116は、時々メモリ4106のスナップショット又はその特定部分(オペレーティングシステム、セキュリティアプリケーション又は重要なドライバを格納したメモリ部分など)を生成し、当該スナップショットを(履歴4140などに)格納してもよい。スナップショットは、スナップショットの日時、スナップショットに関するエンティティ(オペレーティングシステム、アプリケーション又はドライバなど)、メモリページに関するスレッド識別子、バーチャルメモリのメモリのアドレス位置などのコンテクスト情報と共に格納されてもよい。悪意あるスレッド又はスレッドファミリが特定された場合、当該スレッドを含むメモリ部分が、スナップショットに関するコンテクスト情報に少なくとも部分的に基づき、悪意あるスレッドを有するメモリ部分を適切なスナップショットにより置換することによって修復されてもよい。いくつかの実施例では、O/S下位セキュリティエージェント4116はまた、マルウェアの検出に応答したスナップショットの改訂が正当な変更を取り消さないように、スナップショットの生成後にメモリ位置に信頼されたエンティティにより行われた変更を記録してもよい(履歴4140に)。
関連するスレッドとスレッドによる悪意の可能性のある動作のモニタリングは、すべてのスレッドに適用された場合、電子デバイスの処理リソースのかなりの部分を消費するため、O/S下位セキュリティエージェント4116は、特定のメモリ位置がマルウェアの影響を受け、及び/又は特定のメモリが重要なコード又はデータを格納していることを示す試行されたアクセスの発生にのみ応答して、当該モニタリングを実行してもよい(オペレーティングシステム又はセキュリティアプリケーションなど)、例えば、O/S下位セキュリティエージェント4116は、(パーミッションフラグ4136において実現されるような)特定のメモリ位置のパーミッションの変更をトラップすると、特定のメモリ位置のついてスレッド動作とスレッド関係とのモニタリングを開始してもよい。
図42は、電子デバイス上の自己修正コードの規制及び制御のための方法4200の実施例である。ステップ4205において、O/S下位セキュリティエージェントは、メモリへの試行されたアクセスに対してトラップしてもよく、当該試行されたアクセスのそれぞれは、個別に又はまとめて自己修正マルウェアの存在を示すものであってもよい。トラップされる試行されたアクセスは、セキュリティルールに従って決定されてもよい。マルウェアの可能性を示す試行されたアクセスは、限定することなく、メモリパーミッションへの変更、あるメモリ位置のコンテンツの他のメモリ位置へのコピー、メモリ位置のコンテンツの修正及びメモリ位置の実行を含むものであってもよい。
ステップ4210において、O/S下位セキュリティエージェントは、履歴にトラップされる試行されたアクセスに関する情報を記録してもよい(例えば、試行されたアクセスのタイプ、トラップされる試行されたアクセスに関するメモリ位置など)。当該履歴の記録は、すべてのメモリ位置に適用される場合、電子デバイスの処理リソースのかなりの部分を消費するため、O/S下位セキュリティエージェントは、特定のメモリ位置がマルウェアの影響を受けていることを示す試行されたメモリアクセスの発生により、特定のメモリ位置について履歴への記録を開始してもよい(例えば、特定のメモリアドレスについて履歴の記録を開始するためのトリガイベントを決定するセキュリティルールなどに基づき)。例えば、O/S下位セキュリティエージェントは、特定のメモリ位置についてのパーミッションの修正をトラップすると(メモリ位置のパーミッションフラグにより実現される)、特定のメモリ位置の履歴の記録を開始してもよい。
ステップ4215において、O/S下位セキュリティエージェントは、特定のメモリ位置の履歴の解析の開始をトリガする(セキュリティルールなどに従って)試行されたアクセスをモニタしてもよい。疑わしい動作が行われたかを決定するための履歴の解析は、すべてのメモリ位置及び/又は試行されたアクセスに適用された場合、電子デバイスの処理リソースのかなりの部分を消費するため、O/S下位セキュリティエージェントは、特定のメモリ位置に関する特定のトラップされる試行されたアクセスに関する履歴の解析を開始してもよい(以下のステップ4220などにおいて)。例えば、いくつかの実施例では、O/S下位セキュリティエージェントは、特定のメモリ位置におけるコンテンツへの試行されたアクセスをトラップすると、特定のメモリ位置に関する履歴の解析の開始をトリガしてもよい。
ステップ4220において、O/S下位セキュリティエージェントは、特定のメモリ位置に関して疑わしい動作が行われたか判断するため、履歴を解析してもよい。その解析中、O/S下位セキュリティエージェントは、履歴に実現されるような特定のメモリ位置の動作が自己修正するマルウェアコードの存在の可能性を示す疑わしい動作を示すか判断するため、セキュリティルールを照会してもよい。例えば、履歴の解析が第1メモリ位置におけるコンテンツが第2位置にコピーされ、第2位置において修正され、その後、第2位置のコンテンツの試行された実行が行われたことを示す場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠であるかもしれない。他の例として、履歴の開成が、第3位置における共通の祖先をそれぞれ有する第1及び第2メモリ位置におけるコンテンツがそれぞれ試行された実行のターゲットであったことを示す場合、当該表示は、自己修正するマルウェアコードの存在の可能性の証拠であるかもしれない。さらなる例として、履歴の解析が特定のメモリ位置におけるコンテンツが他の複数のメモリ位置における祖先を有することを示す場合、当該表示は、自己修正するマルウェアコードの存在する可能性の証拠であるかもしれない。
ステップ4225において、O/S下位セキュリティエージェントが、マルウェアの存在の可能性を示す疑わしい動作が検出されたか判断してもよい(例えば、単一のトラップされた試行されたアクセス又は履歴の解析などに基づき)。疑わしい動作が検出された場合、方法4200はステップ4230に移行してもよい。検出されなかった場合、方法4200は、再びステップ4205に移行してもよい。ステップ4230において、マルウェアの存在の可能性を示す疑わしい動作の検出に応答して(例えば、単一のトラップされた試行されたアクセス又は履歴の解析などに基づき)、O/S下位セキュリティエージェントは訂正アクションを開始してもよい(セキュリティルール4122などに従って)。例えば、いくつかの実施例では、O/S下位セキュリティエージェントは、疑わしい動作を検出すると、コンテンツが悪意あるか判断するため、既知のマルウェア及び/又は既知の信頼された/真正なプロセスと、検出された疑わしい動作に関する特定のメモリ位置に格納されているコンテンツを比較してもよい。当該比較は、コンテンツのハッシュ、フィンガープリント又は他のシグネチャと、既知のプロセスのハッシュ、フィンガープリント又は他のシグネチャとを比較することによって実行されてもよい。他の例として、O/S下位セキュリティエージェントは、疑わしい動作を検出すると、疑わしい動作に関するフォレンジックエビデンス(メモリ位置のコンテンツ、メモリ位置に関する履歴など)をさらなる解析のためプロテクションサーバに報告してもよい。
ステップ4235において、O/S下位セキュリティエージェントは、疑わしい動作に関するメモリ位置のコンテンツが悪意あるか判断してもよい(例えば、既知のプロセスとコンテンツの比較、プロテクションサーバから受信した情報、セキュリティルールの参照及び/又は他の判断などによって)。コンテンツが悪意ある場合、方法4200はステップ4240に移行してもよい。悪いない場合、方法4200は、ステップ4205に再び移行してもよい。ステップ4240において、コンテンツが悪意あると判断したことに応答して、O/S下位セキュリティエージェントは、さらなる訂正アクションを実行してもよい(例えば、セキュリティルールなどに従って)。当該訂正アクションは、限定することなく、コンテンツの実行の不許可、コンテンツへの変更の不実行(履歴に示されるコンテンツの修正及びコピーなど)、コンテンツの修復、コンテンツの無害なコンテンツへの置換及び/又はコンテンツに関するプロセスの非イネーブル化を含むものであってもよい。ステップ4240の終了後、方法4200はステップ4205に再び移行する。
図43は、電子デバイス上の悪意あるコードを修正する方法4305の実施例である。ステップ4305において、O/S下位セキュリティエージェントは、電子デバイス上で悪意あるコードの存在を検出してもよい。例えば、O/S下位セキュリティエージェントは、電子デバイスのメモリ又は他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、O/S下位セキュリティエージェントは、悪意あるコードについて電子デバイスのメモリ及び/又はストレージのページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、O/S下位セキュリティエージェントは、悪意あるコードの存在を検出したO/S内セキュリティエージェントから通信を受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
ステップ4310〜4320において、電子デバイス上の悪意あるコードの検出に応答して、O/S下位セキュリティエージェントは、悪意あるコードを修正することを含む、訂正アクションを実行してもよい。例えば、ステップ4310において、O/S下位セキュリティエージェントは、悪意あるコードを含むプログラムが自己終了するか、及び/又は悪意あるコードを無力化する信頼差エッ留コードに実行を移転するように、悪意あるコードを修正してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって)。例えば、O/S下位セキュリティエージェントは、悪意あるコードの実行が最終的に終了するように、オペレーティングシステムの“イグジット”ファンクションに対するコールを電子デバイスのメモリの悪意あるコードに挿入してもよい。他の例として、O/S下位セキュリティエージェントは、悪意あるコードを無効化するコードの既知の信頼された部分を格納したメモリの他の部分に悪意あるコードの実行をリダイレクトする命令(JUMP命令など)を電子デバイスのメモリの悪意あるコードに挿入してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって)。さらなる例として、悪意あるコードが現在実行されている場合、O/S下位セキュリティエージェントは、悪意あるコードを無力化する既知の信頼されたコード部分に実行の制御を移転させるためのメモリにおける命令ポインタ値を変更してもよい(例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって)。あるいは、O/S下位セキュリティエージェントは、悪意あるコードが修復されるように悪意あるコードを修正してもよく、これにより、実行が他のメモリ位置における感染したコードの復元されたバージョンにより継続されるように、悪意あるコードを既知の又は信頼されるコードにより置換するか、又はメモリの命令ポインタを修正することによって感染が起こらなかったかのように感染したアプリケーションが効果的に実行することを可能にする。
ステップ4315において、O/S下位セキュリティエージェントは、ストレージに実現される悪意あるコードを修正してもよい。例えば、電子デバイスのメモリとストレージとの間のコンテンツの移転に対してトラップすることによって、O/S下位セキュリティエージェントは、メモリに格納されるコンテンツとストレージに格納される対応するコンテンツとの関係に関する情報をログ、リスト、キャッシュ又は他のデータ構造に収集及び格納してもよい。従って、O/S下位セキュリティエージェントは、メモリにおいて悪意あるコードを特定した場合、メモリに格納されているコンテンツとストレージに格納されている対応するコンテンツとの関係に関する収集された情報を参照し、悪意あるコードを有するメモリ位置に対応するストレージ位置のコンテンツを修正してもよい。当該修正は、限定することなく、ストレージにおける対応するコンテンツの消去、又はストレージ及び/又はメモリの悪意あるコードの自己終了又は削除を行わせるコンテンツの修正を含むものであってもよい。
ステップ4320において、O/S下位セキュリティエージェントは、例えば、電子デバイスのメモリ又は他のリソースへのアクセスを悪意あるコードセグメントに拒絶するため、電子デバイスのメモリ及び他のリソースへの悪意あるコードのアクセスを修正してもよい。当該メモリ及び他のリソースの拒絶は、悪意あるコードを含むプロセスをクラッシュさせるか、又は無効化させてもよい。例えば、悪意あるコードが特定されると、O/S下位セキュリティエージェントは、電子デバイスのメモリ又はリソースに悪意あるコードを含むプロセスにより試行されたアクセスに対してトラップし、当該アクセスを拒絶してもよい。
ステップ4325において、O/S下位セキュリティエージェントは、検出された悪意あるコードの物理メモリアドレスに基づき、悪意あるコードを有する可能性のあるメモリの他の部分を特定してもよい。例えば、マルウェア的動作を示すスレッドを検出すると、O/S下位セキュリティエージェントは、悪意あるコードのメモリページ内の位置及び/又はスレッドの実行アドレスを決定してもよい。バーチャルメモリ構成では、アプリケーションコードは連続的にリストされるが、物理メモリでは、アプリケーションコードは実質的に不連続である可能性がある。従って、メモリの物理メモリアドレスをストレージのバーチャルメモリアドレスにマッピングするオペレーティングシステムにより維持されるマッピングを利用することによって、O/S下位セキュリティエージェントは、悪意あるコードを含む特定された悪意あるコードに対応するバーチャルメモリの部分を特定し、当該バーチャルメモリ部分を感染の可能性のある物理メモリアドレスにマッピングしてもよい。従って、当該物理メモリアドレスにおけるコードの実行はさらに、悪意あるコードの損座についてO/S下位セキュリティエージェントによりモニタされてもよい。
ステップ430において、O/S下位セキュリティエージェントは、悪意あるコードを隔離し、さらなる解析のためフォレンジックエビデンスとしてプロテクションサーバに転送してもよい。
図44は、電子デバイス上の関連するスレッドをモニタリング及び追跡する方法4400の実施例である。ステップ4405において、O/S下位セキュリティエージェントは、他のスレッドによるあるスレッドの生成、サスペンド又は終了に関するスレッド同期オブジェクトのファンクションコールに関するメモリ又はプロセッサリソースへの試行されたアクセスに対してトラップしてもよい。例えば、O/S下位セキュリティエージェントは、プロセス間通信(IPC)コールに関するプロセッサリソースのメモリへの試行されたアクセスに対してトラップしてもよい。ステップ4410において、O/S下位セキュリティエージェントは、履歴へのトラップされた試行されたアクセスに関する情報(スレッド識別子など)を格納してもよい。
ステップ4415において、O/S下位セキュリティエージェントは、メモリ又はプロセッサリソースへの試行されたアクセスに対してトラップしてもよく、当該試行されたアクセスのそれぞれは、マルウェアの存在を個別に又はまとめて示すものであってもよい。トラップされた試行されたアクセスは、セキュリティルールに従って決定されてもよい。マルウェアの可能性を示す試行されたアクセスは、限定することなく、メモリパーミッションへの変更、あるメモリ位置のコンテンツの他のメモリ位置へのコピー、メモリ位置のコンテンツの修正及びメモリ位置の実行を含むものであってもよい。ステップ4420において、O/S下位セキュリティエージェントは、履歴へのトラップされた試行されたアクセスに関する情報(スレッド識別子など)を格納してもよい。ステップ4410及び4420において、O/S下位セキュリティエージェントは、スレッドメタデータについてメモリ位置を決定し、スレッドメタデータに基づき、履歴の情報の一部として格納するため特定のスレッドのスレッド識別子を取得するため、プロセッサリソースの情報にアクセスしてもよい。
ステップ4425において、O/S下位セキュリティエージェントは、マルウェア感染に一致した動作が特定のスレッドに関して発生したか判断するため、履歴を解析してもよい(例えば、セキュリティルールなどに従って)。ステップ4430において、マルウェア感染に一致した動作が行われた場合、O/S下位セキュリティエージェントは、マルウェアアクティビティが特定されたスレッドに関する1以上のスレッドを決定するため、履歴を解析してもよい。
ステップ4435において、O/S下位セキュリティエージェントは、特定のスレッド及び1以上の関連するスレッドに関して訂正アクションを実行してもよい。例えば、訂正アクションは、関連するスレッドが悪意あるコードを含むか判断するため、O/S下位セキュリティエージェントが当該スレッドを調査、スキャン及び/又は解析することを含むものであってもよい。他の例として、訂正アクションは、当該スレッドが悪意あると判断された場合、O/S下位セキュリティエージェントが1以上の関連するスレッドを終了、削除、修正又は無効化することを含むものであってもよい。さらなる例として、訂正アクションは、O/S下位セキュリティエージェントが特定のスレッド及びそれに関連するスレッドに関するフォレンジックエビデンスをさらなる解析のためプロテクションサーバに通信することを含むものであってもよい。
図45は、電子デバイス4504のメモリ及びストレージをセキュアにするシステム4500の実施例である。システム4500は、電子デバイス4504のメモリ4508及びストレージ4526にアクセスする悪意ある試行に対してプロテクトするため電子デバイス4504上で実行されるよう構成されるO/S下位セキュリティエージェント4516を有してもよい。さらに、O/S下位セキュリティエージェント4516は、何れの試行される処理をトラップするか、当該トラップされた処理をどのように応答するかを決定するため、1以上のセキュリティルール4522を利用するよう構成されてもよい。O/S下位セキュリティエージェントは、許可、拒絶又はトラップされた処理の他の訂正アクションを実行するよう構成されてもよい。
図45に示されるように、電子デバイス4504は、メモリ4508に接続されるプロセッサ4506、アプリケーション4510、ドライバ4511、オペレーティングシステム4512、O/S下位セキュリティエージェント4516、ストレージ4526及びアプリケーションアセット4548を有してもよい。電子デバイス4504は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。プロセッサ4506は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202、及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ4508は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくは仮想化メモリ及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション4510は、図1のアプリケーション110、図2のアプリケーション210、図4のアプリケーション410、図7のアプリケーション709、図9のアプリケーション910、図12のアプリケーション1210及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ4511は、図1のドライバ111、図2のドライバ211、図4のドライバ411、図7のドライバ711、図9のドライバ911、図12のドライバ1211及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム4512は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。O/S下位セキュリティエージェント4516は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント4518は、図2のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント718、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ストレージ4526は、図4のストレージの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティルール4522は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。セキュリティルール4522は、何れか適切な方法により決定されてもよい(例えば、電子デバイス4504のユーザにより設定されたポリシー、電子デバイス4504を含む企業のアドミニストレータにより設定されたポリシー、O/S下位セキュリティエージェント4516の作成者により設定されたポリシーなど)。いくつかの実施例では、O/S下位セキュリティエージェント4516は、ネットワーク244を介しプロテクションサーバ202からセキュリティルール4522に対する更新又は修正を要求及び/又は受信してもよい(例えば、マルウェア定義に対する更新のためなど)。
O/S下位セキュリティエージェント4516は、メモリトラッキングファシリティ4542、ストレージトラッキングファシリティ4544及びメモリ/ストレージセキュリティレイヤ4546を含むものであってもよい。メモリトラッキングファシリティ4542は、メモリ4508へのアクセスをモニタするため、メモリ4508とインタフェースをとってもよい。例えば、メモリトラッキングファシリティ4542は、メモリ4508における特定のページをリード、ライト又は実行するため、アプリケーション4510、ドライバ4511及び/又はオペレーティングシステム4512による試行されたアクセスをトラップ又はトリガするため‘ページテーブルフラグ及び/又はビットフラグにより示されるような)、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント442、図7のマイクロコードセキュリティエージェント708、図9のO/S下位セキュリティエージェント920、及び/又は図12のO/S下位セキュリティエージェント1220の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。他の例として、メモリトラッキングファシリティ4542は、メモリ4508の特定のアドレスをリード、ライト又は実行するため、アプリケーション4510、ドライバ4511及び/又はオペレーティングシステム4512による試行されたアクセスをトラップ又はトリガするため、O/S下位セキュリティエージェント712及び/又はマイクロコードセキュリティエージェント708の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。従って、メモリトラッキングファシリティ4542は、メモリ4508におけるある位置から他の位置へのコンテンツの移動(例えば、あるページから他のページ、あるアドレスから他のアドレスなど)、又はメモリ4508とストレージ4526との間の移動(例えば、ストレージ4526からの実行可能コードのバーチャルメモリコンテクストスワップ又はロードに関して)を追跡してもよい。さらに、メモリトラッキングファシリティ4542は、メモリトラッキングファシリティ4542及び/又はメモリ/ストレージセキュリティレイヤ4546によりアクセス可能なログ、リスト、キャッシュ又は他の適切なデータ構造に追跡された移動に関する情報を格納してもよい。
ストレージトラッキングファシリティ4544は、ストレージ4526におけるある位置から他の位置へのコンテンツの移動、又はメモリ4508とストレージ4526との間の移動をモニタリングするため、ストレージ4526とインタフェースをとってもよい。例えば、ストレージトラッキングファシリティ4544はストレージ4526の特定のセクタをリード、ライト又は実行するため、アプリケーション4510、ドライバ4511及び/又はオペレーティングシステム4512により試行されたアクセスをトラップ又はトリガするため、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント442、図7のマイクロコードセキュリティエージェント708、図9のO/S下位セキュリティエージェント920及び/又は図12のO/S下位セキュリティエージェント1220の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。他の例として、ストレージトラッキングファシリティ4544は、ストレージ4526の特定のアドレスをリード、ライト又は実行するため、アプリケーション4510、ドライバ4511及び/又はオペレーティングシステム4512により試行されたアクセスをトラップ又はトリガするため、O/S下位セキュリティエージェント712及び/又はマイクロコードセキュリティエージェント708の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。従って、ストレージトラッキングファシリティ4544は、ストレージ4526におけるある位置から他の位置へのコンテンツの移動(例えば、あるセクタから他のセクタ、又はあるアドレスから他のアドレスなど)、又はメモリ4508とストレージ4526との間の移動(例えば、ストレージ4526からの実行可能コードのロード又はバーチャルメモリコンテクストスワップと共に)を追跡してもよい。
動作について、メモリ/ストレージセキュリティレイヤ4546は、セキュリティルール4522を受信し、セキュリティルール4522をメモリトラッキングファシリティ4542及びストレージトラッキングファシリティ4544に通信してもよい。従って、メモリトラッキングファシリティ4542及びストレージトラッキングファシリティ4544によるモニタリングは、モニタリングがイネーブルであるか示し、及び/又はメモリ4508及び/又はストレージ4526の何れの部分がモニタリングされるべきか特定するセキュリティルール4522に基づくものであってもよい。
メモリトラッキングファシリティ4542及びストレージトラッキングファシリティ4544は、メモリ4508及び/又はストレージ4526の試行されたアクセスをメモリ/ストレージセキュリティレイヤ4546に通知してもよい(例えば、メモリ4508又はストレージ4526内又はメモリとストレージとの間のコンテンツの試行された移動など)。メモリ/ストレージセキュリティレイヤ4546は、図1のO/S下位トラップエージェント104、図2のSVMMセキュリティエージェント217若しくはSVMM216、図4のファームウェアセキュリティエージェント440、442、PCファームウェアセキュリティエージェント444若しくはO/S下位システムエージェント450、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ/ストレージセキュリティレイヤ4546は、以下でより詳細に説明されるように、試行されたアクセスがマルウェア攻撃を示すか判断するため、セキュリティルール4522及び/又はアプリケーションアセット4548に従って、メモリトラッキングファシリティ454及び/又はストレージトラッキングファシリティ4544により報告されるメモリ4508及び/又はストレージ4526の試行されたアクセスを解析してもよい。いくつかの実施例では、メモリ/ストレージセキュリティレイヤ4546は、図45のアクティビティ4532、4534により示されるように、メモリトラッキングファシリティ4542及びストレージトラッキングファシリティ4544により報告されるアクセスのログ、リスト又は他の表示をメモリ4508及び/又はストレージ4526に格納してもよい。従って、メモリ4508及び/又はストレージ4526への個別の試行されたアクセスを解析することに加えて、メモリ/ストレージセキュリティレイヤ4546は、アクセス動作履歴がマルウェアの存在を示すか判断するため、セキュリティルール4522に基づきアクティビティ4532,4534に実現されるアクティビティの履歴を解析してもよい。
特定の実施例では、メモリ/ストレージセキュリティレイヤ4546は、図2のSVMM216の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよく、メモリトラッキングファシリティ4542は、図7のマイクロコードセキュリティエージェント708の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよく、ストレージトラッキングファシリティ4544は、図4のファームウェアセキュリティエージェント442の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。当該実施例では、メモリトラッキングファシリティ4542は、特定のメモリアクセスに対してトラップし、ストレージトラッキングファシリティ4544は、特定のストレージアクセスに対してトラップし、それぞれは、当該トラップイベントをメモリ/ストレージセキュリティレイヤ4546に通知してもよい。メモリ/ストレージセキュリティレイヤ4546は、アクセス動作履歴がマルウェアの存在を示すか判断するため、セキュリティルール4522に基づきアクティビティの履歴を解析し、及び/又はメモリ及び/又はストレージへの個々の試行されたアクセスを解析してもよい。
他の特定の実施例では、メモリ/ストレージセキュリティレイヤ4546、メモリトラッキングファシリティ4542及びストレージトラッキングファシリティ4544のそれぞれは、図2の単一のSVMM216の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。当該実施例では、SVMM216は、アクセス動作履歴がマルウェアの存在を示すか判断するため、特定のメモリアクセスに対してトラップし、特定のストレージアクセスに対してトラップし、メモリ及び/又はストレージへの個別の試行されたアクセスを解析し、及び/又はセキュリティルール4522に基づきアクティビティ履歴を解析してもよい。
アプリケーション4510、ドライバ4511,オペレーティングシステム4512及び/又は他のエンティティのアプリケーションアセット4548は、当該エンティティ及びそれのコンポーネントがメモリ4508及び/又はストレージ4526内にどのようにあるか示すマップ、テーブル、リスト及び/又は他のデータ構造を表すものであってもよい。アプリケーションアセット4548は、エンティティが格納されるメモリ4508及び/又はストレージ4526の部分を特定してもよい(例えば、メモリページ、メモリアドレスレンジ、ディスクセクタ、ディスクアドレスランクなど)。上述されるように、アプリケーションアセット4548及び/又はセキュリティルール4522に基づき、メモリ/ストレージセキュリティエージェント4516は、メモリ4508及び/又はストレージ4526の試行されたアクセスに関するメモリトラッキングファシリティ4542及び/又はストレージトラッキングファシリティ4544からの通知がマルウェア攻撃を示すか判断してもよい。例えば、アプリケーション4510がポータブル実行可能ファイルである実施例では、アプリケーション4548は、アプリケーション4510の実行可能コードを有するメモリ4508及び/又はストレージ4526に格納されているアプリケーション4510の部分を特定し、及び/又はアプリケーション4510のコンポーネントが格納されるメモリ4508及び/又はストレージ4527の位置を含む、アプリケーション4510のデータを有するメモリ4508及び/又はストレージ4526に格納されているアプリケーション4510の部分を特定してもよい。セキュリティルール4522は、アプリケーションの具体例について、アプリケーション4510以外のプログラムからアプリケーション4510の実行可能コードを有するメモリ4508及び/又はストレージ4526の部分へのライトアクセスがマルウェア攻撃を示すことを指示してもよい。さらに又はあるいは、セキュリティルール4522は、アプリケーション4510の具体例について、アプリケーション4510以外のプログラムからアプリケーション4510のデータを有するメモリ4508及び/又はストレージ4526の部分へのリード又はライトアクセスがマルウェア攻撃を示すことを指示してもよい。
他の例として、アプリケーション4510がワープロプログラムである実施例では、アプリケーションアセット4548は、アプリケーション4510の実行可能コードを有するメモリ4508及び/又はストレージ4526に格納されているアプリケーション4510の部分を特定し、アプリケーション4510のコンポーネントが格納されているメモリ4508及び/又はストレージ4526の位置を含む、アプリケーション4510のスクリプト、イメージ、フォーマット化されたテキスト、ノート及び他のデータを有するメモリ4508及び/又はストレージ4526に格納されているアプリケーション4510の部分を特定してもよい。セキュリティルール4522は、アプリケーション4510の当該例について、アプリケーション4510以外の特定のプログラムセットからアプリケーション4510のデータを有するメモリ4508及び/又はストレージ4526の部分へのリード又はライトアクセスが許可されることを指示するものであってもよく(例えば、オペレーティングシステム、アンチマルウェアアプリケーションからのアクセスなど)、当該プログラムセット以外のプログラムによるアクセスは、マルウェアの攻撃を示すものであってもよい。
アプリケーションアセット4548は、アプリケーション4510、ドライバ4511、オペレーティングシステム4512及び/又は他のプログラムの作成者によって(例えば、アプリケーションベンダ、プログラマ、作成者など)、電子デバイス4504のユーザによって、電子デバイス4504を含む企業のアドミニストレータによって、O/S下位セキュリティエージェント4516の作成者によって、及び/又は他の適切な個人によって作成又は定義されてもよい。いくつかの実施例では、アプリケーションアセット4548は、プログラムについて、当該プログラムのオンストレージ構造とインメモリ構造との間の関係を含むものであってもよい(例えば、メモリ4508とストレージ4526とにおけるプログラムのコンポーネント間のマッピングなど)。
アプリケーションアセット4548を構成するため、O/S内セキュリティエージェント4518及び/又はO/S下位セキュリティエージェント4516は、何れかの個数の適切な技術を利用してもよい。例えば、O/S内セキュリティエージェント4518及び/又はO/S下位セキュリティエージェント4516は、バーチャルメモリ処理に関してオペレーティングシステム4512により生成されるバーチャルメモリページスワップに関する情報を収集してもよい。例えば、WindowsTMでは、O/S内セキュリティエージェント4518は、プロトタイプページテーブルエントリ(PTE)にアクセスし、O/S下位セキュリティエージェント4516と当該情報を通信してもよい。他の実施例では、O/S下位セキュリティエージェント4516は、アクセスが実行されるときはいつでも、メモリ4508のページ及び/又はディスクのセクタ4526についてハッシュ、フィンガープリント又は他の一意的な識別子を生成し、当該識別子のキャッシュを維持するようにしてもよい(例えば、当該キャッシュはメモリ4508及び/又はストレージ4526に格納される)。当該シナリオでは、O/S下位セキュリティエージェント4516は、ストレージ4526の何れのセクタがメモリ4508の何れのページにロードされるか、またその逆を決定するため、シンプルな比較を適用してもよい。当該マッピングは、セキュリティエージェント4516及び/又は4518がメモリ4508及び/又はストレージ4526におけるエンティティの特定の情報の位置を追跡することを可能にするものであってもよい。
メモリ/ストレージセキュリティレイヤ4546、メモリトラッキングファシリティ4542及び/又はストレージトラッキングファシリティ4544により実行されるモニタリング及び解析は、メモリ4508及びストレージ4526のすべてのアクセスに適用される場合、電子デバイス4504の処理リソースのかなりの部分を消費するため、メモリ4508及びストレージ4526のモニタリング及び解析は、特定の定義された状況においてのみイネーブルとされてもよい。例えば、いくつかの実施例では、セキュリティルール4522は、メモリトラッキングファシリティ4542及び/又はストレージトラッキングファシリティ4544がメモリ4508及び/又はストレージ4526の特定部分のみをモニタすることを提供してもよい(オペレーティングシステム、重要なドライバ又はアプリケーションを有するものなど)。他の例として、同一の又は他の実施例では、セキュリティルール4522は、メモリトラッキングファシリティ4542及び/又はストレージトラッキングファシリティ4544が、メモリ4508及び/又はストレージ4526の特定部分におけるプログラムを、当該プログラムが疑わしいと他の表示が示す場合、及び/又はマルウェア攻撃が行われたことを他の表示が示す場合にモニタリングすることを提供してもよい。さらなる例として、メモリトラッキングファシリティ4542及び/又はストレージトラッキングファシリティ4544は、ストレージ4526からの実行可能コードのロード又はバーチャルメモリコンテクストスワップのケースと同様に、コンテンツがメモリ4508からストレージ4526にロードされるとき、又はその逆のときを除き、メモリトラップ及びストレージトラップを見合わせるようにしてもよい。
動作について、上述されるように、メモリ/ストレージセキュリティレイヤ4546は、セキュリティルール4522及び/又はアプリケーションアセット4548に基づき、メモリ4508及び/又はストレージ4526への報告されたアクセスを解析することによって、メモリ4508及び/又はストレージ4526をセキュアにしてもよい。メモリ4508及び/又はストレージ4526への試行されたアクセスの通知を受信した後、メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスを要求したエンティティ(オペレーティングシステム4512、ドライバ4511又はアプリケーション4510など)の身元を決定してもよい。例えば、O/S内セキュリティエージェント4518は、特定のメモリ4508及び/又はストレージリクエスト4526の要求元のエンティティに関するコンテクスト情報をオペレーティングシステム4512から収集し、当該情報をメモリ/ストレージセキュリティレイヤ4546に通信してもよい。さらに、メモリ/ストレージセキュリティレイヤ4546は、要求元のエンティティの身元を検証し、当該エンティティがマルウェアにより危険にさらされたか判断してもよい(例えば、メモリに格納されているエンティティのマップ又はハッシュとエンティティの既知の予想されるマップ又はハッシュとを比較することによって、又はマルウェアの存在についてメモリに格納されているエンティティをスキャンすることなどによって)。さらに、メモリ/ストレージセキュリティレイヤ4546は、エンティティがリクエストを行うことが認証されているか判断してもよい(例えば、エンティティがメモリ4508又はストレージ4526の特定部分にアクセスすることが認証されているかに関するセキュリティルール4522及び/又はアプリケーションアセット4548に基づく判定など)。さらに、メモリ/ストレージセキュリティレイヤ4546は、コンテンツがマルウェアを含むか判断するため、試行されたアクセスに関するコンテンツをスキャンしてもよい(例えば、データ又は実行可能コードがリード、ライト又は実行されるなど)。また、メモリ/ストレージセキュリティレイヤ4546は、アクセス履歴の動作解析(アクティビティ4532及び/又は4534に格納されるなど)がマルウェアの存在を示しているか判断してもよい(例えば、未認証エンティティによるO/S4512のプロテクトされた部分の試行されたアクセスなど)。メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスがマルウェアに関するものであると判断された場合、訂正アクションを実行してもよい。訂正アクションは、試行されたアクセスの阻止、要求元エンティティの終了、要求元エンティティの修復、プロテクションサーバ202へのマルウェア関連イベントの発生の通信及び/又は他の何れか適切なアクションを含むものであってもよい。
具体例として、ストレージ4526の特定のセクタへに対するリクエストに応答して(ストレージトラッキングファシリティ4544からの通知により示されるように)、メモリ/ストレージセキュリティレイヤ4546は、特定のセクタがセキュリティルール4522に少なくとも基づきアクセスされるべきか判断してもよい。さらに、メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスに関するコンテンツ(例えば、試行されたアクセスに関してリード、ライト又は実行されるデータ又は実行可能コードなど)がマルウェアの感染の可能性がないか判断するため、当該コンテンツをスキャンしてもよい。さらに、メモリ/ストレージセキュリティレイヤ4546は、セキュリティルール4522に少なくとも基づき、試行されたアクセスを要求したエンティティが特定のセクタにアクセスすることが認証されているか判断してもよい。当該判定が、試行されたアクセスがマルウェアに関するものでないことを示す場合、メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスを許可してもよい。
他の具体例として、メモリの特定のページに対するリクエストに応答して(メモリトラッキングファシリティ4542からの通知により示されるように)、メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスに関するコンテンツ(例えば、試行されたアクセスに関してリード、ライト又は実行されるデータ又は実行可能コードなど)マルウェアの感染の可能性がないか判断するため、当該コンテンツをスキャンしてもよい。さらに、メモリ/ストレージセキュリティレイヤ4546は、セキュリティルール4522に少なくとも基づき、試行されたアクセスを要求したエンティティが特定のページにアクセスすることが認証されているか判断してもよい。さらに、試行されたアクセスがストレージ4526からメモリ4508への移転である場合、メモリ/ストレージセキュリティレイヤ4546は、セキュリティルール4522に少なくとも基づき、コンテンツが移転されるべき移転元のストレージ4526の特定部分が信頼されたソースであるか判断してもよい。当該判定は、試行されたアクセスがマルウェアに関するものでないと示す場合、メモリ/ストレージセキュリティレイヤ4546は、試行されたアクセスを許可してもよい。
さらに、セキュリティルール4522及びメモリ4508又はストレージ4526の特定部分に適用されるプロテクションは、コンテンツがメモリ4508とストレージ4526との間で、メモリ4508の異なる部分の間で、又はストレージ4526の異なる部分の間で移転されるとき、推移的に適用されてもよい。従って、例えば、セキュリティルール4522の特定セットがメモリ4508の特定部分のコンテンツに適用される場合、当該コンテンツのメモリ4508又はストレージ4526の他の部分への移転に応答して、メモリ/ストレージセキュリティレイヤ4546は、メモリ4508又はストレージ4526のデスティネーション部分に適用するため、セキュリティルール4522を更新してもよい。
図46は、電子デバイスのメモリ及びストレージをセキュアにする方法4600の実施例である。ステップ4605において、メモリ/ストレージセキュリティレイヤは、メモリトラッキングファシリティ及びストレージトラッキングファシリティにセキュリティルールを通信してもよい。マルウェアからのメモリ及びストレージのプロテクションのためここに開示されるシステム及び方法は、かなりのプロセッサ、メモリ及び/又は他のリソースを消費するため、メモリ又はストレージの特定位置が特にマルウェア攻撃の影響を受けやすいときに限って当該システム及び方法を利用することが望ましいかもしれない。メモリ又はストレージの一部は、例えば、それがオペレーティングシステム又はセキュリティアプリケーションの一部を含む場合、又は以前の攻撃の徴候が電子デバイス上で観察又は検出された場合、マルウェア攻撃の影響を受けやすいものである可能性がある。
ステップ4610において、メモリトラッキングファシリティ及びストレージトラッキングファシリティは、セキュリティルールに従ってアクセスをモニタしてもよい。モニタのため、メモリトラッキングファシリティ及びストレージトラッキングファシリティは、メモリ/ストレージセキュリティレイヤから受信されたセキュリティルールにより特定されるメモリ又はストレージの特定部分への試行されたアクセス(試行されたリード、ライト又は実行など)をトラップ又はトリガしてもよい。
ステップ4615において、メモリトラッキングファシリティ及び/又はストレージトラッキングファシリティは、メモリ及び/又はストレージへの試行されたアクセスの通知をメモリ/ストレージセキュリティレイヤに通信してもよい。
ステップ4620において、メモリ/ストレージセキュリティレイヤは、メモリ/ストレージセキュリティレイヤへの通知で特定される試行されたアクセスを要求するエンティティ(オペレーティングシステム、ドライバ又はアプリケーションなど)の身元を決定してもよい。例えば、メモリ/ストレージセキュリティレイヤと通信するO/S内セキュリティエージェントは、特定のメモリ及び/又はストレージリクエストの要求元エンティティに関するオペレーティングシステムからのコンテクスト情報を収集し、当該情報をメモリ/ストレージセキュリティレイヤに通信してもよい。
ステップ4625において、メモリ/ストレージセキュリティレイヤは、要求元のエンティティの身元を検証し、当該エンティティがマルウェアによる危険にさらされたか判断してもよい。例えば、メモリ/ストレージセキュリティレイヤは、メモリに格納されているエンティティのマップ又はハッシュと、エンティティの既知の予想されるマップ又はハッシュとを比較してもよい。他の例として、メモリ/ストレージセキュリティレイヤは、マルウェアの存在についてメモリに格納されているエンティティをスキャンしてもよい。
ステップ4630において、メモリ/ストレージセキュリティレイヤは、エンティティがリクエストを行うことが認証されているか判断してもよい。例えば、メモリ/ストレージセキュリティレイヤは、エンティティがメモリ4508又はストレージ4526の特定部分にアクセスすることが認証されているか判断するため、セキュリティルール及び/又はアプリケーションアセットを照会してもよい。ステップ4635において、メモリ/ストレージセキュリティレイヤは、試行されたアクセスに関するコンテンツを解析してもよい(例えば、リード、ライト又は実行されるデータ又は実行可能コードなど)。例えば、メモリ/ストレージセキュリティレイヤは、コンテンツがマルウェアを有するか判断するため、試行されたアクセスに関するコンテンツをスキャンしてもよい。
ステップ4640において、メモリ/ストレージセキュリティレイヤは、メモリ及び/又はストレージへのアクセス履歴を解析してもよい。当該履歴は、電子デバイスのメモリ及び/又はストレージにログ又はリストとして格納されてもよい。当該解析は、履歴がマルウェアの存在を示すか判断するため、メモリ及び/又はストレージへのアクセスの履歴の動作解析を含むものであってもよい。
ステップ4645において、メモリ/ストレージセキュリティレイヤは、メモリトラッキングファシリティ及び/又はストレージトラッキングファシリティにより報告されたメモリ及び/又はストレージへの試行されたアクセスが、試行されたアクセスがマルウェアにより影響を受けていることを示すか判断してもよい(例えば、ステップ4620〜4640の1以上の解析及び判定などに基づき)。さらに、メモリ/ストレージセキュリティレイヤは、修正されたコンテンツがマルウェア的動作により影響を受けた場合、メモリ/ストレージセキュリティレイヤは、訂正アクション(マルウェアを削除、隔離及び/又は無力化するアクションなど)を実行してもよい。さらに、いくつかの実施例では、メモリ/ストレージセキュリティレイヤは、マルウェア的動作の発生に関する情報(フォレンジック情報など)をプロテクションサーバに通信してもよい。
ステップ4650において、メモリ/ストレージセキュリティレイヤは、電子デバイスのメモリ及び/又はストレージに格納されているアクセスのログ又はリストへのアクセスの通知を追加してもよい。アクセス履歴の動作解析を実行するため、メモリ/ストレージセキュリティレイヤは、格納されているログ又はリストに以降にアクセスしてもよい。ステップ4650の終了後、方法4600はステップ4605に再び戻ってもよい。
図47は、電子デバイス4701上で実行されるオペレーティングシステム4710のオブジェクトへのアクセスをセキュアにするシステム4700の実施例である。システム4700は、オペレーティングシステム4713上で実行されるソフトウェアベースエンティティによるオブジェクト4706及び/又はオブジェクトマネージャ4704にアクセスする悪意ある試行を検出するため、電子デバイス4701上で動作するよう構成されるO/S下位トラップエージェント4720及びトリガイベントハンドラ4722を有してもよい。さらに、O/S下位トラップエージェント4720及びトリガイベントハンドラ4722は、オブジェクト4706及び/又はオブジェクトマネージャ4704へのアクセスをトラップする時点と、トラップされた処理に関するトリガイベントをどのように処理するかを決定するため、1以上のセキュリティルール4708を利用するよう構成されてもよい。O/S下位トラップエージェント4720及びトリガイベントハンドラ4722は、許可、拒絶又はトリガイベントの他の訂正アクションを実行するよう構成されてもよい。
電子デバイス4701は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス4701は、メモリ4703に接続される1以上のプロセッサ4702を有してもよい。プロセッサ4702は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス4701は、O/S内セキュリティエージェント4719及びオブジェクト4706を管理するオブジェクトマネージャ4704を含むオペレーティングシステム4713を有してもよい。オペレーティングシステム4713は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント4719は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール4708は、図1のセキュリティルール114、図2のセキュリティルール220、222、図4のセキュリティルール420、434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、721、723、図9のセキュリティルール908、921、図12のセキュリティルール1208、1221及び/又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。プロテクションサーバ4714は、図1のプロテクションサーバ102、図2のプロテクションサーバ202及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
メモリ4703は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12のメモリ1203及び/又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ4703は、メモリ4703へのアクセスを仮想化するよう構成されるバーチャルメモリシステムを用いて実現されてもよい。バーチャルメモリシステムでは、オペレーティングシステム4713上で実行されるソフトウェアプロセスには、メモリの連続するブロックとしてプロセスが処理するバーチャルアドレススペースが設けられてもよい。実際、バーチャルアドレススペースは、物理メモリの異なるエリアに分散されてもよい。プロセスがメモリへのアクセスをリクエストするとき、オペレーティングシステム4713は、当該プロセスのバーチャルメモリアドレスを、データが実際に格納されるメモリ4703の物理アドレスにマッピングしてもよい。バーチャルアドレススペースは、バーチャルメモリページと呼ばれる連続するバーチャルメモリアドレスの固定サイズのブロックに分割されてもよい。ページテーブルは、バーチャルメモリページからバーチャルメモリページが格納されるメモリ4703の対応する物理アドレスへのマッピングを格納するのに利用されてもよい。ページテーブルは、所与のバーチャルメモリページについて認証されたアクセスのタイプを指定するリード、ライト及び/又は実行などの各種アクセスパーミッションを含むものであってもよい。プロセスが関連するバーチャルメモリページのアクセスパーミッションにより認証されない方法によりバーチャルメモリアドレスにアクセスしようとするとき、当該試行は拒絶されてもよい。
O/S下位トラップエージェント4720は、図1のO/S下位トラップエージェント104、図2のSVMM216、図4のファームウェアセキュリティエージェント440、442及び/又はPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708、図9のO/S下位トラップエージェント920、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ4722は、図1のトリガイベントハンドラ108、図2のSVMMセキュリティエージェント217、図4のO/Sエージェント450、図7のO/S下位エージェント712、図9のトリガイベントハンドラ922及び/又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。各種実施例では、O/S下位トラップエージェント4720の機能の一部は、トリガイベントハンドラ4722により実行されてもよく、トリガイベントハンドラ4722の機能の一部は、O/S下位トラップエージェント4720により実行されてもよい。さらに、O/S下位トラップエージェント4720及びトリガイベントハンドラ4722は、同一のソフトウェアモジュールにより実現されてもよい。
オペレーティングシステム4713は、オペレーティングシステム4713に関する各リソースを表すため、オブジェクト4703を用いてオブジェクト指向環境として実現されてもよい。例えば、オペレーティングシステム4713は、ドライバ4711、アプリケーション4710、プロセス、メモリ4703、ファイル及び/又はフォルダ、物理デバイス及び/又はオペレーティングシステム4713により使用される他の何れかのリソースを表すオブジェクトを有してもよい。さらに、各アプリケーション4710及び/又はオペレーティングシステム4713上で実行される他のソフトウェアプロセスはまた、オブジェクト4706を利用して、特定のアプリケーション4710又はソフトウェアプロセスにより使用されるリソースを表してもよい。オブジェクト4706は、特定タイプのオブジェクト4706に一意的であってもよいオブジェクトファンクション4730を有し、特定のオブジェクト4706のデータを操作するのに利用されてもよい。オブジェクト4706は、ヘッダとボディとを有するデータ構造により表されてもよい。オブジェクト4706のヘッダは、すべてのオブジェクトに共通の管理フィールドを有してもよい。これらのフィールドは、オブジェクト4706を管理するためオブジェクトマネージャ4704により利用されてもよい。オブジェクト4706のヘッダは、例えば、オブジェクト4706を特定するためのオブジェクト名、及び/又はオブジェクト4706に関するアクセスパーミッションを指定する記述子とを有してもよい。オブジェクト4706のボディは、特定タイプのオブジェクト4706に一意的なオブジェクトに固有のデータフィールドを有してもよい。
オブジェクトマネージャ4704は、オペレーティングシステム4713のオブジェクト4706を管理するため、オペレーティングシステム4713において実行されるよう構成されてもよい。オブジェクトマネージャ4704は、オブジェクト4706を管理するため利用可能な各種オブジェクトマネージャファンクション4726を用いて実現されてもよい。例えば、オブジェクトマネージャファンクション4726は、データを生成、削除、修正し、及び/又はオブジェクト4706の設定をしゅうせいするのに利用されるファンクションを含むものであってもよい。Microsoft WindowsTMオペレーティングシステムのオブジェクトマネージャ4704により使用されるオブジェクトマネージャファンクション4726の具体例が、テーブル1に見つけられてもよい。
Figure 2015212979
メモリマップ4718は、図12のメモリマップ1206の機能により実現されるか、又は当該機能を実現するよう構成されてもよい。メモリマップ4718は、ファイル、レコード、データ構造又は他の何れか適切なエンティティにより実現されてもよい。メモリマップ4718は、O/S下位トラップエージェント4720の一部として含まれてもよく、又はO/S下位トラップエージェント4720に通信接続されてもよい。メモリマップ4718は、各種オブジェクトリソース4734のメモリ4703の位置に関する情報を有してもよい。オブジェクトリソース4734は、例えば、オブジェクトマネージャ4704、オブジェクトマネージャファンクション4726及び/又はサブファンクション4728、オブジェクト4706及び/又はオブジェクトファンクション4730などを有してもよい。メモリマップ4718は、バーチャルメモリのメモリページ、物理メモリのアドレスレンジ及び/又は特定のオブジェクトリソース4734が格納されるディスク上の位置に関する情報を有してもよい。O/S下位トラップエージェント4720は、バーチャルメモリページ又は物理メモリアドレスにおける何れか所与のコンテンツの身元又はオーナーを決定するため、メモリマップ4718を利用するよう構成されてもよい。
O/S下位トラップエージェント4720は、メモリマップ4718のコンテンツを決定、展開及び/又は投入してもよい。これを実行するため、O/S下位トラップエージェント4720は、セキュリティルール4708、プロテクションサーバ4714又はメモリマップ4718に情報を投入するための情報の他の何れか適切なソースにアクセスしてもよい。O/S下位トラップエージェント4720は、例えば、オペレーティングシステム4713の処理をプロファイルし、その後、各種オブジェクトリソース4734がメモリの何れに配置されているか決定することによって、メモリマップ4718を構成してもよい。O/S下位トラップエージェント4720は、O/S内セキュリティエージェント4719に関して、各ファンクションの実行スタックをトラバースすることによって、オブジェクトファンクション4730、オブジェクトマネージャファンクション4726及び/又はオブジェクトマネージャサブファンクション4728のメモリにおける位置を特定してもよい。O/S下位トラップエージェント4720は、メモリマップ4718のメモリのオーナーシップ及びコンテンツをマッピングするため、オペレーティングシステム4713、アプリケーション4710又はドライバ4711などのオペレーティングシステムレベルにおけるエンティティからの物理メモリ又はバーチャルメモリのリクエストをインターセプトしてもよい。例えば、オブジェクトリソース4734にアクセスするための試行がトラップされると、O/S下位トラップエージェント4720は、何れのオブジェクトリソース4734がアクセスされているか、及び/又は何れのエンティティが特定のオブジェクトリソース4734のアクセスを担当しているか決定するため、O/S内セキュリティエージェント4719と通信するよう構成されてもよい。O/S下位トラップエージェント4720は、メモリマップ4718が投入されるように、何れのエンティティがメモリにロードされるか判断するため、O/S内セキュリティエージェント4719と通信してもよい。メモリマップ4718は、物理メモリ、バーチャルメモリのためのメモリマッピング及び/又はこれら2つの間のマッピングを含むものであってもよい。
オブジェクト指向オペレーティングシステム4713の実質的にすべてのリソースがオブジェクト4706により表される可能性があるため、マルウェアは、オブジェクト4706を攻撃することによって、オペレーティングシステム4713のセキュリティを危険にさらすことを試みる。O/S下位トラップエージェント4720及び/又はトリガイベントハンドラ4722は、マルウェアからオブジェクト4706をプロテクトするよう構成されてもよい。マルウェアによるオブジェクト4706に対する攻撃は、オブジェクト4706及び/又はオブジェクトマネージャ4704を操作するための未認証の試行など、不適切なオブジェクトリソース4734に対する何れかの試行を含むものであってもよい。例えば、オペレーティングシステム4713は、オペレーティングシステム上で実行される各ソフトウェアプロセスを表すオブジェクト4706を有し、マルウェアは、オペレーティングシステム4713上で実行されるセキュリティアプリケーションに関する特定のプロセスオブジェクト4706を削除してもよい。このようにして、セキュリティアプリケーションの実行は停止し、セキュリティソフトウェアのセーフガードをマルウェアが覆し、さらなる悪意あるアクティビティを実行することを可能にする。他の例として、マルウェアは、マルウェアスキャナから自らを偽装するため、オブジェクト名などの自らのオブジェクト4706のフィールドを編集してもよい。マルウェアはまた、オブジェクト4706のセキュリティ設定を修正することを試行する可能性がある。例えば、マルウェアは、コアオペレーティングシステムファイルが何れかのエンティティによりアクセスされることを可能にするため、コアオペレーティングシステムファイルを表すオブジェクト4706のアクセスパーミッションを修正することを試みる可能性がある。マルウェアは、オブジェクトマネージャファンクション4726、オブジェクトマネージャサブファンクション4728及び/又はオブジェクトファンクション4730をコールすることによって、上述された攻撃を間接的に実行してもよい。マルウェアは、特定のファンクションのコール元として自らを隠蔽するため、ファンクションのコール前にオブジェクトのセキュリティ設定を変更してもよい。マルウェアは、オブジェクトまねージャファンクション4726が未認証の実行からプロテクトされるが、1以上のサブファンクション4726はプロテクトされない場合、オブジェクトマネージャファンクション4730に反対するように、オブジェクトマネージャサブファンクション4728をコールしてもよい。このようにして、マルウェアは、オブジェクトマネージャファンクション4726の1以上のプロテクトされていないサブファンクション4728をコールすることによって、オブジェクトマネージャファンクション4726のプロテクションを回避することが可能である可能性がある。マルウェアはまた、オブジェクト4706及び/又はオブジェクトマネージャ4704が格納されるメモリ4703の位置にアクセスすることによって、オブジェクト4706を直接的に攻撃してもよい。
O/S下位トラップエージェント4720及び/又はトリガイベントハンドラ4722は、オブジェクトリソース4734にアクセスするための試行をプロテクトすることによって、オブジェクト4706に対するマルウェア攻撃を阻止するよう構成されてもよい。例えば、O/S下位トラップエージェント4720は、オブジェクトリソース4734をリード、ライト又は実行するための試行をトラップするよう構成されてもよく、トリガイベントハンドラ4722は、トラップされた試行がマルウェアを示すか判断するよう構成されてもよい。オブジェクトリソース4734にアクセスするためのトラップされた試行は、オブジェクトマネージャ4704のファンクション4726及び/又はサブファンクション4728を実行するための試行、オブジェクト4706のファンクション4730を実行するための試行、及び/又はオブジェクトリソース4734が格納されるメモリ4703の位置に直接アクセスするための試行を含むものであってもよい。O/S下位トラップエージェント4720のメモリトラップ機能は、図12のO/S下位セキュリティエージェントの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。O/S下位トラップエージェント4720は、オブジェクトファンクション4730、オブジェクトマネージャファンクション4726及び/又はオブジェクトマネージャサブファンクション4728のコードを何れか適切な方法により実行するための試行をトラップするよう構成されてもよい。例えば、O/S下位トラップエージェント4720は、特定のファンクションのコードが格納されるメモリ位置におけるコードを実行するための試行をトラップするよう構成されてもよい。O/S下位トラップエージェント4720は、トラップを要求するファンクションのメモリ4703の位置を特定するため、メモリマップ4718を照会するよう構成されてもよい。コードを実行するためのトラップされる試行は、物理メモリレベル又はバーチャルメモリレベルでトラップされてもよい。例えば、O/S下位トラップエージェント4720は、特定のファンクションのコードに関するバーチャルメモリページを実行するための試行をトラップするよう構成されてもよい。O/S下位トラップージェント4720はまた、特定のファンクションのコードが格納されている物理メモリアドレスに対応するバーチャルメモリアドレスにおけるコードを実行するための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換前に実行されてもよい。さらなる他の実施例では、O/S下位トラップエージェント4720は、特定のファンクションのコードが格納される物理メモリアドレスにおけるコードを実行するための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換後に実行されてもよいし、又はバーチャルメモリを介し最初に変換されることなく、物理メモリアドレスにおけるコードを実行するための直接的な試行の後に実行されてもよい。オブジェクトファンクション4730、オブジェクトマネージャファンクション4726及び/又はオブジェクトマネージャサブファンクション4728を実行するための試行をトラップした後、O/S下位トラップエージェント4720は、トラップされた試行を処理するため、トラップされた試行に関するトリガイベントを生成し、トリガイベントハンドラ4722に送信してもよい。
O/S下位トラップエージェント4720は、メモリ4703のオブジェクトリソース4734にアクセスするための試行をトラップするよう構成されてもよい。例えば、O/S下位トラップエージェント4720は、オブジェクト4706及び/又はオブジェクトマネージャ4703を格納するのに利用されるメモリ位置にアクセスするための試行をトラップするよう構成されてもよい。O/S下位トラップエージェント4720はまた、オブジェクトファンクション4730、オブジェクトマネージャファンクション4726及び/又はオブジェクトマネージャサブファンクション4728のコードを格納するのに利用されるメモリ位置に書き込むための試行をトラップするよう構成されてもよい。当該トラップは、悪意あるコードによりオブジェクトファンクション4730、オブジェクトマネージャファンクション4726及び/又はオブジェクトマネージャサブファンクション4728のコードをマルウェアが上書きすることを阻止する。いくつかの実施例では、O/S下位トラップエージェント4720は、メモリマップ4718を利用して、オブジェクトリソース4734のメモリ4703における位置を特定してもよい。一実施例では、O/S下位トラップエージェント4720は、オブジェクトリソース4734のバーチャルメモリアドレスに対応するバーチャルメモリページにアクセスするための試行をトラップするよう構成されてもよい。他の実施例では、O/S下位トラップエージェント4720は、オブジェクトリソース4734が格納される物理メモリアドレスに対応するバーチャルメモリアドレスにアクセスするための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換前に実行されてもよい。さらなる他の実施例では、O/S下位トラップエージェント4720は、オブジェクトリソース4734が格納される物理メモリアドレスにアクセスするための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換後に実行されてもよいし、又はバーチャルメモリを介して最初に変換されることなく物理メモリアドレスにアクセスするための直接的な試行の後に実行されてもよい。
一実施例では、O/S下位トラップエージェント4720は、特定のオブジェクトリソース4734にアクセスするためのリクエストの要求元のエンティティを決定するため、O/S内セキュリティエージェント4719を照会するよう構成されてもよい。他の実施例では、O/S下位トラップエージェント4720は、リクエストの発信元のバーチャルメモリページを決定し、当該メモリページがそこにマッピングされた何れかの要素に関連付けされているか決定するため、メモリマップ4718を照会するよう構成されてもよい。さらなる他の実施例では、O/S下位トラップエージェント4720は、要求元の要素のバーチャルメモリページのハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャと比較するよう構成されてもよい。オブジェクトリソース4734にアクセスするための試行をトラップし、要求元のエンティティを特定した後、O/S下位トラップエージェント4720は、リクエストの特定のオブジェクトリソース4734、アクセスタイプ及び要求元のエンティティを含むトラップされた試行に関する情報を含むトリガイベントを生成してもよい。O/S下位トラップエージェント4720は、トラップされた試行を処理するため、トリガイベントをトリガイベントハンドラ4722に送信してもよい。
トリガイベントハンドラ4722は、O/S下位トラップエージェント4720からのトラップされた試行に関するトリガイベントを受信するよう構成されてもよい。トリガイベントハンドラ4722は、セキュリティルール4708に関して、トリガイベントに関するコンテクスト情報を利用して、トリガイベントに関して実行するのに適切なアクションを決定してもよい。いくつかの実施例では、トリガイベントハンドラ4722は、トリガイベントに関するコンテクスト情報を特定するため、O/S内セキュリティエージェント4719と連係してもよい。コンテクスト情報は、トラップされた試行の要求元のエンティティ、トラップされた試行に関する特定のオブジェクト4706、及び/又は特定のオブジェクト4706に関して要求されたアクセスタイプを含むものであってもよい。セキュリティルール4708は、例えば、セキュリティアプリケーションに関するプロセスオブジェクトがセキュリティアプリケーション自体によってのみ削除されてもよいことを指示してもよい。他の例として、セキュリティルール4708は、新たなオブジェクト4706を作成するため、オペレーティングシステム4713からの試行を認証し、O/S下位トラップエージェント4720が新たに生成されたオブジェクト4706にアクセスするための以降の試行をトラップすることを要求してもよい。
O/S下位トラップエージェント4720は、オペレーティングシステム4713の動作を表す動作状態マップ4732を生成するため、オブジェクトリソース4734へのアクセスをモニタするよう構成されてもよい。例えば、O/S下位トラップエージェント4720は、オブジェクトリソース4734にアクセスするための試行をトラップし、トラップされた各処理を表すため動作状態マップ4732を更新することによって、動作状態マップ4732を生成してもよい。動作状態マップ4732は、未知のゼロデイ(zero−day)マルウェアにより攻撃を予防的に検出及び阻止するため、動作解析システム4716を実現するため利用されてもよい。動作状態マップ4732及び動作解析システム4716の実施例の説明は、以下の図48の動作状態マップ4802及び動作解析システム4804の説明に見つけられてもよい。
図48は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステム又は方法により利用される動作状態マップ4802の実施例である。例えば、動作状態マップ4802は、図47の動作状態マップ4732として実現され、図47の動作解析システム4716、O/S下位トラップエージェント4720及び/又はトリガイベントハンドラ4722により生成及び/又は利用されてもよい。オブジェクト指向環境では、オペレーティングシステム及びファイル、アプリケーション、プロセッサ、ドライバ及び/又はデバイスを含むそれのリソースのすべてが、オブジェクトとして実現されてもよい。動作状態マップ4802は、オペレーティングシステムのオブジェクト間の処理及び/又はやりとりに基づき、オブジェクト指向オペレーティングシステムの動作の表現を提供してもよい。動作状態マップ4802は、マルウェアに通常関連するオブジェクトのインタラクションのパターンを特定するため利用されてもよい。
動作状態マップ4802は、グラフ及び/又はマップを含む何れか適切なデータ構造を利用して実現されてもよい。グラフを利用した実施例では、各ノードは、オペレーティングシステムのオブジェクトを表し、各ノード間のエッジは、オブジェクト間の処理及び/又はやりとりを表すものであってもよい。例えば、オペレーティングシステムによるプロセスの実行は、オペレーティングシステムオブジェクトを表すノードと、プロセスオブジェクトを表すためのノードとを利用して、動作状態マップにより表されてもよい。動作状態マップは、オペレーティングシステムオブジェクトから、当該プロセスがオペレーティングシステムにより実行されたことを表すプロセスオブジェクトへのエッジを含むものであってもよい。プロセスがファイルを開く場合、動作状態マップは、特定のファイルオブジェクトを表すノードを含むよう更新され、プロセスオブジェクトから、特定のファイルがプロセスにより開かれたことを表すファイルオブジェクトまでのエッジを含むものであってもよい。動作状態マップは、オブジェクト間で実行される各処理について、このようにして連続的に更新されてもよい。いくつかの実施例では、動作状態マップは、オペレーティングシステム全体の動作を表すよう実現されてもよく、又は特定のアプリケーション、ドライバ及び/又はオペレーティングシステム上で実行されるプロセスなどのオペレーティングシステムの特定のコンポーネントの動作のみを表すよう実現されてもよい。
動作状態マップ4802は、マルウェアに感染したオペレーティングシステムに関する動作状態マップの実施例である。動作状態マップ4802は、オペレーティングシステムのオブジェクト、オブジェクトマネージャ4816、セキュリティアプリケーション4808及びマルウェア4810を表すノードを含む。オペレーティングシステム4806からセキュリティアプリケーション4808へのエッジは、オペレーティングシステムによるセキュリティアプリケーション4808の実行を表し、オペレーティングシステム4806からマルウェア4810へのエッジは、オペレーティングシステム4806によるマルウェア4810の実行を表す。オペレーティングシステム4806からオブジェクトマネージャ4816へのエッジは、オペレーティングシステム4806によるオブジェクトマネージャ4816の生成を表す。マルウェア4810は、マルウェア4810により実行される悪意あるアクティビティを表す複数のエッジに関連付けされる。マルウェア4806からオペレーティングシステム4814への2つのエッジは、マルウェア4810がオペレーティングシステムファイル4814を開き、オペレーティングシステムファイル4814に書き込むことを表す。例えば、オペレーティングシステムファイル4814は、オペレーティングシステム4806が初期化されると実行されるアプリケーションを指定するのに利用されてもよく、マルウェア4810は、これらのアプリケーションの1つとして自らを含むようこれらのファイルに書き込むようにしてもよい。マルウェア4810からセキュリティアプリケーション4808へのエッジは、マルウェア4810がセキュリティアプリケーション4808を終了することを試行していることを表す。マルウェア4810からシステムコールテーブル4812へのエッジは、マルウェア4810がシステムコールテーブル4812に書き込むことを表す。マルウェア4810は、例えば、特定のシステムコールについてエントリを修正するため、システムコールテーブル4812に書き込みしてもよい。このようにして、システムコールが実行されるときは常に、マルウェア4810の悪意あるコードが、意図されたシステムコールの代わりに実行される可能性がある。マルウェア4810からオブジェクトマネージャ4816へのエッジは、マルウェアがオブジェクトマネージャ4810の特定のファンクションをコールすることを試行していることを表す。例えば、マルウェア4810は、オブジェクトマネージャ4816の削除オブジェクトファンクションをコールすることによって、オペレーティングシステム4716のオブジェクトを削除すすることを試行してもよい。動作状態マップ4802は、動作状態マップの可能性のある1つのみの実施例を表す。動作状態マップ4802は、オペレーティングシステムのオブジェクトの処理及び/又はやりとりを示すのに適した何れかの方法により実現されてもよい。
図47に戻って、いくつかの実施例では、動作状態マップ4732は、O/S下位トラップエージェント4720により生成されてもよい。他の実施例では、動作状態マップ4732は、以前に生成されており、未知のゼロデイマルウェアによる攻撃を予防的に検出及び阻止するのに利用されてもよい。
動作状態マップ4732は、オペレーティングシステム4713のオブジェクト4706の間の処理及び/又はやりとりをモニタリングすることによって生成されてもよい。例えば、O/S下位トラップエージェント4720は、オブジェクトリソース4734にアクセスするための試行をトラップし、トラップされた各処理を反映させるため、動作状態マップ4732を更新してもよい。いくつかの実施例では、動作状態マップ4732は、マルウェアに感染したオペレーティングシステム4713を用いて生成される可能性がある。他の実施例では、動作状態マップ4732は、マルウェアのないオペレーティングシステム4713を用いて生成されるかもしれない。いくつかの実施例では、動作状態マップ4732が生成された後、それは、マルウェアに関する動作パターンを隔離し、及び/又は安全な動作パターンを隔離するため解析されてもよい。当該実施例では、動作状態マップ4732は、隔離された動作を表すためだけに更新されてもよく、又は新たな動作状態マップが、隔離された動作のみを表すのに生成されてもよい。このようにして、動作状態マップ4732は、マルウェアに関連すると知られているオブジェクトの動作のモデル、及び/又は安全であると知られているオブジェクトの動作のモデルを提供してもよい。例えば、動作状態マップ4732が、マルウェアに感染したオペレーティングシステム4713上で生成された場合、動作状態マップ4732は、悪意ある動作を隔離するよう解析されてもよい。マルウェアにより通常実行される悪意ある動作は、コアオペレーティングシステムファイルの修正、システムコールテーブルのアクセス及び/又はセキュリティアプリケーションに関するプロセスのキルなどを含む。マルウェアに感染したオペレーティングシステム4713の動作状態マップ4732を解析することによって、悪意ある動作がオブジェクトレベルで解析されてもよい。オブジェクトレベルの悪意ある動作の解析は、特定の悪意あるアクティビティが、悪意あるアクティビティを実行するオブジェクト4706の間の処理パターンと相互関連付けされることを可能にする。同様に、動作状態マップ4732がマルウェアのないオペレーティングシステム4713上で生成された場合、動作状態マップ4732は、既知の安全な動作とオブジェクト処理パターンとを相互関連付けするため、オブジェクトレベルでの安全な動作を解析するのに利用されてもよい。
いくつかの実施例では、動作状態マップ4732は、未知のゼロデイマルウェアによる攻撃を予防的に検出及び阻止するのに利用されてもよい。当該実施例では、動作状態マップ4732は、以前に生成され、マルウェアに通常関連付けされる動作のモデル及び/又は安全であると知られた動作のモデルを提供してもよい。当該実施例では、動作状態マップ4732は、マルウェアに通常関連付けされるオペレーティングシステム4713の動作を特定するため、動作解析システム4716により利用されてもよい。動作解析システム4716は、O/S下位トラップエージェント4720により実現されてもよく、又はトリガイベントハンドラ4722により実現されてもよく、いくつかの実施例では、動作解析システム4716の機能は、部分的にO/S下位トラップエージェント4720及びトリガイベントハンドラ4722により実現されてもよい。O/S下位トラップエージェント4720は、オブジェクトリソース4734にアクセスするための試行をトラップするよう構成されてもよく、動作解析システム4716は、トラップされた試行がマルウェアを示すか判断するため利用されてもよい。動作解析システム4716は、動作状態マップ4732への試行されたアクセスを比較してもよい。動作状態マップ4732が既知の安全な動作を表す実施例では、動作解析システム4716は、トラップされた試行が動作状態マップ4732からの何れかの安全な動作に一致するか判断してもよい。一致が検出された場合、動作解析システムは、トラップされた試行が安全であると判断し、当該試行を許可することを決定してもよい。動作状態マップ4732がマルウェアに関する動作を表す実施例では、動作解析システム4716は、トラップされた試行が動作状態マップ4732からのマルウェアに関する動作に一致するか判断してもよい。一致が検出された場合、動作解析システム4716は、トラップされた試行が安全でないと判断し、当該試行を拒絶することを決定してもよい。
いくつかの実施例では、複数の動作状態マップ4732が利用されてもよい。例えば、O/S下位トラップエージェント4720は、現在の動作状態マップとモデル動作状態マップとを含むものであってもよい。現在の動作状態マップは、オペレーティングシステム4713の現在の状態を表すものであってもよい。モデル動作状態マップは、マルウェアに通常関連付けされるモデル動作及び/又は安全であると知られるモデル動作を提供する以前に生成された状態マップであってもよい。O/S下位トラップエージェント4720は、オブジェクトリソース4734の試行されたアクセスをトラップし、試行されたアクセスを反映するため、現在動作状態マップを更新してもよい。動作解析システム4716は、モデル動作状態マップと現在動作状態マップとを比較してもよい。このようにして、動作解析システム4716は、トラップされた試行がマルウェアに関するものであるか判断するため、現在動作状態マップからの以前の動作に関して、トラップされた試行を解析してもよい。これは、動作解析システム4716がトラップされた試行をより効果的に評価することを可能にするものであってもよい。
図49は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにする方法4900の実施例である。ステップ4905において、O/S下位セキュリティエージェント、O/S内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリにおけるイメージの特定及び検証、暗号化ハッシュの利用及び/又は秘密鍵の利用によることを含む何れか適切な方法を利用して実行されてもよい。ステップ4905が終了するまで、他のステップの処理は保留されてもよい。ステップ4910において、セキュリティルールが取得される。セキュリティルールは、O/S下位セキュリティエージェント、O/S内セキュリティエージェント及び/又はトリガイベントハンドラによりローカルに格納されてもよく、及び/又はプロテクションサーバ上などのリモートに格納されてもよい。当該セキュリティルールは、ステップ4915〜4945における判定を行うのに利用されてもよい。
ステップ4915において、オペレーティングシステムのオブジェクトに関するリソースにアクセスするための試行がインターセプトされてもよい。オペレーティングシステムのオブジェクトに関するリソースは、例えば、オブジェクトマネージャ、オブジェクトマネージャファンクション及び/又はサブファンクション、オブジェクト自体及び/又は当該オブジェクトのファンクションなどを含むものであってもよい。インターセプトされた試行は、オブジェクトファンクション、オブジェクトマネージャファンクション、及び/又はオブジェクトマネージャファンクションのサブファンクションを格納するメモリにおける位置のコードを実行するための試行を含むものであってもよい。インターセプトされた試行はまた、オブジェクト及び/又はオブジェクトマネージャが格納されるメモリにおける位置にアクセスするための試行を含むものであってもよい。いくつかの実施例では、当該試行は、バーチャルメモリアドレスから物理メモリアドレスへの変換前にバーチャルメモリレベルにおいてインターセプトされてもよい。他の実施例では、当該試行は物理アドレスレベルでインターセプトされてもよい。いくつかの実施例では、メモリマップは、プロテクトされるオブジェクトリソースのメモリにおける位置を指定するのに利用されてもよい。
ステップ4920において、インターセプトされた試行の要求元のエンティティが特定される。例えば、インターセプトされた試行は、アプリケーション、ドライバ、O/S内セキュリティエージェント、オペレーティングシステム及び/又は他のソフトウェアエンティティからのものであってもよい。いくつかの実施例では、要求元のエンティティは、オペレーティングシステム上で実行されるエンティティのアドレスを含むメモリマップを照会することによって特定されてもよい。
ステップ4925において、オペレーティングシステムの現在動作状態マップが更新されてもよい。現在動作状態マップは、オペレーティングシステムのオブジェクト間のやりとり及び/又は処理に基づき、オペレーティングシステムの動作を示すデータ構造であってもよい。オブジェクトリソースにアクセスするためのインターセプトされた各試行について、現在動作状態マップは、インターセプトされた試行に対応する処理を反映するため更新されてもよい。ステップ4930において、現在動作状態マップは、モデル動作状態マップと比較される。モデル動作状態マップは、マルウェアに典型的に関連付けされる動作及び/又は安全であると典型的に知られる動作を表すものであってもよい。当該比較は、マルウェアに関するオブジェクトの処理パターンの特定を可能にしてもよく、又は安全である知られるオブジェクトの処理パターンの特定を可能にするものであってもよい。
ステップ4935において、インターセプトされた試行が認証されるか判断される。マルウェアがステップ4930からの現在動作状態マップとモデル状態マップとの比較に基づき特定された場合、当該試行は認証されないようにしてもよい。ステップ4930における比較からマルウェアが特定されなかった場合、セキュリティルールが、特定の試行が認証されているか判断するため、インターセプトされた試行に関するコンテクスト情報に関して利用されてもよい。コンテクスト情報は、インターセプトされた試行の要求元のエンティティ、インターセプトされた試行に関する特定のオブジェクト及び/又は要求されたアクセスのタイプを含むものであってもよい。例えば、セキュリティルールは、セキュリティアプリケーションに関するプロセスオブジェクトが、セキュリティアプリケーション自体によってのみ削除されることを指定してもよい。試行が認証されていると判断された場合、ステップ4940において、アクセスは許可されてもよい。試行が認証されていない場合、ステップ4945において、アクセスは拒絶されてもよい。
図49からの方法のステップは、連続的、定期的、要求に応答して、及び/又はイベントのトリガに応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
図50は、電子デバイス5001上のドライバ間の通信をセキュアにするシステム5000の実施例である。システム5000は、電子デバイス5001上のオペレーティングシステム5012などのオペレーティングシステムのドライバ間の通信をインターセプト又は覆すための悪意ある試行を検出するため、電子デバイス5001上で動作するよう構成されるO/S下位セキュリティエージェント5020を有してもよい。さらに、O/S下位セキュリティエージェント5020は、例えば、何れの試行されたドライバ間通信をトラップするか、ドライバ間通信ファシリティの何れの試行されたアクセスをトラップするか、又は試行と関係するエンティティとに基づきしこうが認証されるかなどを決定するため、1以上のセキュリティルール5008を利用するよう構成されてもよい。O/S下位セキュリティエージェント5020は、許可、拒絶又はトラップされた試行に対する他の訂正アクションを実行するよう構成されてもよい。
電子デバイス5001は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス5001は、メモリ5003などのメモリに接続される1以上のプロセッサ5002を有してもよい。プロセッサ5002は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ5003は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくはバーチャルメモリ1204及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス5001は、1以上のセキュリティルール5021に接続されるO/S内セキュリティエージェント5019を有するオペレーティングシステム5012を有してもよい。オペレーティングシステム5012は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント5019は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント5020は、図1のO/S下位トラップエージェント104若しくはトリガイベントハンドラ108、図2のSVMM216若しくはSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440、442、O/S下位エージェント450若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708若しくはO/S下位エージェント712、図9のO/Sトラップエージェント920若しくはトリガイベントハンドラ922、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティルール5008は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール5021は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721、図9のセキュリティルール921、図12のセキュリティルール1221及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
電子デバイス5001は、ドライバ5029などのドライバ又はドライバ5029のドライバ間通信ファシリティを利用又は通信するため、電子デバイス5001のリソースにアクセスすることを試行してもよいアプリケーション5026やドライバ2 5028などの1以上のアプリケーション、ドライバ又は他のエンティティを含むものであってもよい。アプリケーション5026又はドライバ2 5028は、何れかのプロセス、アプリケーション、プログラム又はドライバを含むものであってもよい。アプリケーション5026又はドライバ2 5028は、ドライバ5029をコールすることを試行し、ドライバ5029と他のドライバとの間のドライバ間通信を生じさせるコールシーケンスを開始してもよい。アプリケーション5026又はドライバ2 5028は、直接的に又は他のルーチンへのコールを介しドライバ間通信のファシリティにアクセスすることを試行してもよい。アプリケーション5026又はドライバ2 5028は、ドライバサブファンクション5030をコールすることを試行してもよい。このようなドライバ間通信のファシリティへのアクセス及びコールのすべては、プロセッサ5002に関してメモリ5003に対する試行されたリード、ライト又は実行処理を介し試行されてもよい。O/S下位セキュリティエージェント5020は、ドライバ間通信のファシリティに対する試行されたコール又はアクセスをインターセプトし、当該試行がマルウェアを示すか判断するため、O/S内セキュリティエージェント5019からのセキュリティルール5008及びコンテクスト情報を照会し、何れか適切な訂正アクションを実行するよう構成されてもよい。O/S下位セキュリティエージェント5020は、メモリ5003へのアクセス及び/又はプロセッサ5002の利用のトラップを介しインターセプトを行うよう構成されてもよい。O/S下位セキュリティエージェント5020は、セキュリティルール5008にアクセスし、何れのメモリ5003のアクセス及び/又はプロセッサ5002の利用がトラップされるか判断するよう構成されてもよい。O/S下位セキュリティエージェント5020は、トラップされるべきアクションに対応する制御構造においてフラグを設定するよう構成されてもよい。
一実施例では、アプリケーション5026又はドライバ2 5028は、メモリ5003がオペレーティングシステム5012により仮想化されているメモリページを介したドライバ間通信に関するメモリ5003の一部にアクセスすることを試行してもよい。当該実施例では、O/S下位セキュリティエージェント5020は、メモリページ単位でメモリ5003の試行されたアクセス又は実行をトラップするよう構成されてもよい。他の実施例では、アプリケーション5026又はドライバ2 5028は、ドライバ間通信に関するメモリ5003の物理部分にアクセスすることを試行してもよい。当該実施例では、O/S下位セキュリティエージェント5020は、メモリアドレス単位でメモリ5003の実行の試行されたアクセスをトラップするよう構成されてもよい。
オペレーティングシステム5012及び電子デバイス5001のドライバは、ドライバ間通信のためのファシリティを提供してもよい。例えば、NTFS.SYS5031などの
ドライバは、ディスパッチルーチンポインタ5032、エクスポートアドレステーブル5034、インポートアドレステーブル5036又は高速I/Oルーチンポインタ5038を含むものであってもよい。ディスパッチルーチンポインタ5032は、CodeSection1、CodeSection2又はマルウェアコードセクション5046などのコードセクションに実現されるファンクションなど、ドライバのファンクションへのポインタを有してもよい。エクスポートアドレステーブル5034は、ポインタがドライバのファンクションをコールするため他のドライバにより利用されてもよいファンクションに関するコードセクションへのポインタを含むものであってもよい。インポートアドレステーブル5036は、ドライバがコールするため1以上の他のドライバのファンクションへのポインタのリストを含むものであってもよい。当該インポートアドレステーブル5036は、他のドライバのエクスポートアドレステーブルをインポートした結果であってもよい。ドライバ間通信のファシリティは、ドライバのデータにアクセスするため提供されてもよい。ドライバのデータは、ドライバの性質及び構成に固有のものであってもよい。例えば、NTFS.SYS5031は、すべてのオープンファイルへのポインタを含むオープンファイル処理リスト5040、又はオペレーティングシステム5012内に搭載される各ストレージボリュームへのポインタを含む搭載ボリュームリスト5042のデータセクション又は構造を含むものであってもよい。ドライバ間通信ファシリティは、マルウェアにより攻撃される傾向があり、O/S下位セキュリティエージェント5020は、これらのファシリティ、これらの基礎となる機構又はドライバデータなどのこれらのファシリティの目的の利用に対する試行されたアクセスをトラップしてもよい。
図51は、ドライバ間通信の一例となる図である。アプリケーション5102は、ネットワークインタフェース(NIC)カード5116に対するネットワークリクエスト又はディスク5128に対するファイルリクエストなどのリクエストを行うことを試行してもよい。当該デバイスに到達するため、当該リクエストは、オペレーティングシステム5104を介し処理されてもよい。オペレーティングシステム5104の入出力リクエストは、オペレーティングシステム入出力マネージャ5106により処理されてもよい。
オペレーティングシステム入出力マネージャ5106は、ドライバ系列において利用可能なコールによりネットワークリクエストを送信してもよい。オペレーティングシステム入出力マネージャ5106は、SOCKET_DRIVER_AFS.SYS5108をコールし、それがType Demand Interface(TDI)プロトコルドライバ5110をコールし、さらにそれがNetwork Driver Interface Specification(NDIS)ドライバ5112をコールし、さらにそれがNICカード5116のハードウェアに固有なNDIS.SYSドライバをコールしてもよい。リプライは、アプリケーション5102への同じドライバチェーンに続く。
同様に、オペレーティングシステム入出力マネージャ5106は、ドライバ系列において利用可能なファンクションをコールすることによって、ファイルリクエストを送信してもよい。オペレーティングシステム入出力マネージャ5106は、アタッチされたファイルシステムフィルタドライバ5118を有するファイルシステムドライバ5120をコールし、さらにそれがアタッチしたディスクフィルタドライバ5122を備えたディスクドライバ5124をコールし、さらにそれがディスク5128との入出力を処理するDISK.SYSなどのディスク5128に固有のディスクドライバをコールしてもよい。リプライは、アプリケーション5102への同じドライバチェーンに続く。
図51内のドライバ及びカーネルモジュールの各コールは、ドライバ自体により指示されたコール又はシステムワイドコールにより実行されてもよい。マルウェアは、図51に示される各要素間のコールをフック、覆す、ハイジャック、スプーフ又は攻撃することを試行してもよい。従って、これらは、図50のO/S下位セキュリティエージェント5020が通信が行われるときと、当該通信をイネーブルにする機構をプロテクトする際との双方をプロテクトするよう構成されてもよい。
図52は、図50のO/S下位セキュリティエージェント5020などのO/S下位セキュリティエージェントがドライバ間通信に関してプロテクトするよう構成される電子デバイスの具体的部分をさらに示す。ドライバ間通信は、アプリケーション5202などのユーザモードで発信されたリクエストによって、又はドライバ2 5204などの他のドライバからのリクエストによって行われてもよい。アプリケーション5202は、電子デバイスの一部のデバイスリクエストコマンド5208を行うよう構成されてもよい。デバイスリクエストコマンド5208は、システムサービスディスパッチャテーブル(SSDT)5210によりデバイスファンクション5212に変換されてもよい。デバイスファンクション5212は、アプリケーション5202により行われたリクエストに対応するI/Oリクエストパケット(IRP)を問題となるデバイスに関するドライバに送信するよう構成されてもよい。図52において、当該ドライバは、ディレクトリ制御に対するI/Oリクエストを処理するドライバ1 5206であってもよい。ドライバ間通信は、ドライバ2 5204などの他のカーネルモードドライバから発信されたリクエストにより行われてもよい。
図50のO/S下位セキュリティエージェント5020は、何れか適切な方法によりドライバ間通信を攻撃するマルウェアに対して電子デバイス5001をプロテクトするよう構成されてもよい。例えば、マルウェアは、IoCallDriverコマンド5220などのIRPコマンドを送受信するためのファンクションをフックしてもよい。当該マルウェアは、ファンクションに指定されたターゲットについて意図されたIRPをミスダイレクトさせるものであってもよい(例えば、ドライバが実行されるシステムにより定義されたファンクションを含むディスパッチルーチン5209など)、代わりに、マルウェアフック5224は、リクエストをインターセプトするため、IoCallDriver5220にインストールされてもよい。マルウェアフック5224の背後のマルウェアは、それの元のディスティネーションにリクエストIRP_MJ_READ5226を送信する前、又は悪意あるコード5228を実行する前、リクエストを調べてもよい。従って、O/S下位セキュリティエージェントは、IoCallDriver5220の命令を含むメモリをプロテクトし、又はドライバ又はコールバックルーチンに対する悪意あるコールのIoCallDriver5220の実行を調査するよう構成されてもよい。O/S下位セキュリティエージェント5020は、エクスポートされたファンクション又はディスパッチルーチンをトラップするよう構成されてもよい。O/S下位セキュリティエージェント5020は、ファンクション自体のメモリ位置の実行と共に、オペレーティングシステムコンストラクト内のファンクション又はルーチンに対するポインタをトラップするよう構成されてもよい。例えば、マルウェアは、エクスポートアドレステーブル(さらに詳細に後述されるEAT)におけるポインタのメモリ位置における値を変更することを試行するか、又はファンクション自体(悪意あるコードにJMPを挿入するなど)のコードセクションのコンテンツを変更することを試行してもよい。ポインタ及びファンクションへのアクセスをトラップすることによって、トラップされた試行は、ファンクションのコール元を決定するため復号化されてもよい。
他の例では、ドライバ1 5206は、ドライバなどの他のエンティティによりコールされるそれ自体に固有のドライバ1 5206により提供されるファンクションのEAT5211を維持してもよい。EAT5211は、指定されたファンクションを実行するためのコードセクションの位置を指し示すファンクションポインタのリスト又はアレイを有してもよい。マルウェアは、EATのエントリがもはや正しいコードセクションを指し示さないように、当該ポインタの値を変更する可能性がある。これらのポインタは、ドライバファンクションがEAT5211においてポインタを参照することにより他のドライバによりコールされるとき、悪意あるコードが実行されるように、悪意の可能性のあるコードセクションを指し示すよう生成されてもよい。例えば、EAT5211は、Driver1Fn1 Code Section5214を指し示すDriver1Fn1と、Driver1Fn2 Code Section5216を通常指し示すDriver1Fn2ファンクションのポインタを通常有してもよい。しかしながら、マルウェアは、Driver1Fn2がマルウェアコードセクション5128を現在指し示すように、第2ポインタを変更したかもしれない。従って、O/S下位セキュリティエージェントは、EAT5211があるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをインターセプトし、ライト主体が検証されていない場合、EAT5211に書き込むためのトラップされた試行を拒絶してもよい。O/S下位セキュリティエージェントはまた、EAT5211を書き込み、変更又は設定するための何れかの試行されたファンクションの実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェントはまた、試行のコール元が当該ファンクションを実行することが許可されていることと、コール元がEAT5211を変更するためドキュメント化されていないサブルーチンをコールするなどによって、標準的な手順を覆していないことを検証してもよい。
さらなる他の例では、ドライバ2 5204などの他のドライバは、ドライバ1 5206のEAT5211をインポートし、ドライバ1 5206のファンクションに関する自らのインポートアドレステーブル(IAT)5222としてテーブルをホストしてもよい。IAT5222を利用して、ドライバ2 5204は、ドライバ1 5206のファンクションをコールするよう構成されてもよい。IAT5222は、オペレーティングシステムローダにより充填されてもよい。マルウェアは、複数の方法によりIATを感染する可能性がある。IAT5222の値は、Dirver2Fn2などのファンクションがマルウェアコードセクション5218などの悪意あるコードセクションを指し示すように変更されている可能性がある。従って、O/S下位セキュリティエージェントは、IAT5222があるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをインターセプトし、ライト主体が検証されていない場合、IAT5222に書き込むためのトラップされた試行を拒絶する。当該検証は、例えば、オペレーティングシステムローダがIAT5222をロードすることを含むものであってもよい。O/S下位セキュリティエージェントはまた、IAT5222を書き込み、変更又は設定するための何れか試行されたファンクションの実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェントはまた、試行のコール元がファンクションを実行することが許可されており、コール元がIAT5222を変更するためドキュメント化されていないサブルーチンをコールするなどによって、標準的な手順を覆さなかったことを検証してもよい。
さらなる他の例では、Driver1Fn1などのドライバファンクションがコールされると、Dirver1Fn1 Code Section5212などのコードが実行を開始してもよい。マルウェアは、ルーチンがコールされると、悪意あるコードが実行されるように、当該コールセクションの部分を書き換え又は投入してもよい。従って、O/S下位セキュリティエージェントは、ドライバファンクションのコードがあるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをトラップし、ライト主体が検証されていない場合、ドライバのコードセクションに書き込むためのトラップされた試行を拒絶する。当該検証は、例えば、パッチにより自らを更新するドライバからライトが発信されたことを決定するなどを含むものであってもよい。O/S下位セキュリティエージェントはまた、ドライバファンクションのコードセクションを書き込み、変更又は設定するため試行されたファンクションの実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェントはまた、試行のコール元が当該ファンクションを実行することが許可されており、コール元が、ドライバファンクションのコードセクshんを変更するためドキュメント化されていないサブルーチンをコールするなどによって標準的な手順を覆さなかったことを検証してもよい。
さらなる例では、ドライバファンクションのコードは、認証されたインポート又はエクスポートアドレステーブルにアクセス代わりに、マルウェアにより直接的にコールされてもよい。従って、O/S下位セキュリティエージェントは、悪意あるコード5228による直接的な実行から、Driver1Fn2 Code Section5216などのドライバのファンクションの実行をプロテクトするよう構成されてもよい。当該O/S下位セキュリティエージェントは、ファンクションの実行をトラップすることが可能であってもよい。O/S下位セキュリティエージェントは、コンテクスト情報から、何れのドライバが各自のIAT5222においてオペレーティングシステムにより更新されたか判断することによって、ドライバ1 5206上でファンクションを実行するためのパーミッションを何れのドライバが受信したか判断してもよい。O/S下位セキュリティエージェントは、当該コールがどこから行われたか判断し、当該位置が既知の認証されたドライバに対応しない場合、試行が拒絶されてもよい。一実施例では、図50のO/S内セキュリティエージェント5019は、コンテクスト情報を提供するため、オペレーティングシステムのドライバ又はドライバフィルタとして登録してもよい。例えば、ルートキットドライバは、ファイルI/OのためNTFS.SYSをコールすることを回避してもよい。O/S内セキュリティエージェント5019は、NTFS.SYSに対して行われたすべてのコールを観察し、その後、O/S下位セキュリティエージェントに何れのファンクションコールがルートキットによりファイルI/Oのため利用されたか通知するため、NTFS.SYS上のフィルタとして登録してもよい。
図50に戻って、動作について、ドライバ5029などのドライバ及びドライバ2 5028は、何れか適切な方法により通信してもよい。O/S下位セキュリティエージェント5020は、当該通信をイネーブル化する機構に対する試行された変更又は通信をトラップしてもよい。一実施例では、O/S下位セキュリティエージェント5020は、図52に示されるドライバ間通信との悪意ある干渉の何れかの具体例をトラップ及び評価してもよい。
一例では、当該通信は、IRPを介し送信されるI/O制御コードを有してもよい。O/S下位セキュリティエージェント5020は、IRPを介しI/O制御コードを送信するためのファンクションコールに対応するコードの実行をトラップし、送信元が認証されているか検証し、必要に応じて何れかの訂正アクションを実行してもよい。
他の例では、当該通信は、コードセクション1などのドライバのファンクションのコードセクションのコールを含むものであってもよい。O/S下位セキュリティエージェント5020は、試行された実行であるコードセクション1をトラップしてもよい。O/S下位セキュリティエージェント5020は、ファンクションにアクセスする正当な手段を利用して試行された実行が正当なソースから発生したか判断してもよい。O/S下位セキュリティエージェント5020は、コール元を特定し、コール元が既知であるか、また何れかのルールがコール元の決定された身元に基づきファンクションの実行を阻止するか判断してもよい。例えば、コードセクション2の実行は、既知であって、デジタル証明書を有するドライバに制限されてもよい。O/S下位セキュリティエージェント5020は、アクセスを発信したドライバ2 5028がホワイトリストに従って安全であると知られ、デジタル証明書を有するか判断してもよい。他の例では、O/S下位セキュリティエージェント5020は、当該コールがドライバ5029を介して行われたか判断し、又は当該コールがドライバ5030のドキュメント化されていないサブファンクションを介し行われたか、ドライバ5029(及びそこで使用されるセキュリティ手段)にアクセスすることなく判断してもよい。関連する具体例は、例えば、指定されたドライバファンクション機構の何れも利用することなく、直接ジャンプするか又はコードセクション1にブランチすることためのアプリケーション5026による試行をトラップしてもよい。アプリケーション5026がスキャン又はそれのシグネチャを介し悪意あると知られていない場合でさえ、当該動作はかなり疑わしく、マルウェアを示し、O/S下位セキュリティエージェント5020は、当該アクセスがマルウェアを示していると判断してもよい。
さらなる他の例では、コールバックルーチン5044は、ドライバのデータスペースなどのドライバに登録されてもよい。コールバックルーチンは、ドライバ又は特定のドライバファンクションのイグジットにより実行されるようトリガされてもよい。当該コールバックルーチン5044は、悪意あるものであるかもしれない。また、O/S下位セキュリティエージェント5020は、メモリ内のドライバ5031のコードセクション又はデータセクションへの試行されたライトを検出することによって、何れかのコールバックルーチンの試行された作成をトラップしてもよい。試行されたライトの主体が未知である場合、当該ライトは許可されるが、コールバックルーチンの以降の実行自体は、実行対象のアクションが悪意あるか判断するためトラップされてもよい。例えば、ロガーは、重複したネットワークパケットが悪意あるサーバに送信されるコールバックルーチン5044をインストールしてもよい。コールバックルーチンの以降の動作は、マルウェアのさらなる徴候について観察及び評価されてもよい。
さらなる他の例では、アプリケーション5026は、EAT5034からアドレスを読み、対応するファンクションを直接実行することを試みてもよい。O/S下位セキュリティエージェント5020は、EAT5034の試行されたリードをトラップし、リード主体が当該試行及びコードセクション1などのファンクションの以降の実行を行うことが許可されているか判断してもよい。当該試行は、従属ドライバとして登録し、それ自体のインポートアドレステーブルを介しファンクションポインタリストを受信するなど、オペレーティングシステム5012により提供される標準的な方法を利用する代わりに、マルウェアがEAT5034を直接リードすることを示すものであってもよい。
さらなる例では、ドライバ2 5028は、NTFS.SYS5031などのドライバのデータセクションを直接操作することを試みるものであってもよい。O/S下位セキュリティエージェント5020は、ドライバ間通信に対する悪意ある攻撃を阻止するため、ドライバのデータセクションの試行された操作をトラップしてもよい。例えば、O/S下位セキュリティエージェント5020は、高速I/Oルーティングポインタ5038への試行されたライトをトラップし、当該試行がNTFS.SYS5031自体又はオペレーティングシステム5012から発生したか評価してもよい。そうでない場合、O/S下位セキュリティエージェント5020は、ドライバ2などの他のドライバから発生したと決定されたトラップされた試行を拒絶してもよい。同様に、何れかの重要なデータがカーネルオペレーティングシステム5012により保持されている場合、O/S下位セキュリティエージェント5020は、当該データを有するメモリの試行されたアクセスをトラップするよう構成されてもよい。
さらなる他の例では、ドライバ2 5028は、インポートアドレステーブル5036の試行されたリードを介しドライバの情報から他のサードパーティに関する情報を取得することを試みてもよい。O/S下位セキュリティエージェント5020は、インポートアドレステーブル5036の試行されたリードをトラップし、NTFS.SYSなどのドライバ自体、アドレステーブルがインポートされたサードパーティ又はオペレーティングシステム5012から発信されてない何れの試行も拒絶してもよい。
さらなる他の例では、ドライバの一部にアクセスするファンクションコールはフックされてもよく、マルウェアが電子デバイス5001の各種部分にアクセスすることを可能にする。O/S下位セキュリティエージェント5020は、当該ファンクションコールがあるメモリをプロテクトし、システムファンクションに悪意あるフックを追加するため試行されたライトをトラップすることによって、攻撃に対して防御してもよい。同様に、O/S下位セキュリティエージェント5020は、悪意あるコードを投入するためコードセクションに直接アクセスするマルウェアに対してファンクションのコードセクションをプロテクトしてもよい。例えば、O/S下位セキュリティエージェント5020は、投入されたコードの追加を阻止するため、コードセクション2に収容されたファンクションのコードへの試行されたライトをトラップしてもよい。
ドライバ間コールに関する各種リソースをトラップすることはコストがかかるため、O/S下位セキュリティエージェント5020は、必要に応じて当該リソースのトラップをイネーブル又は非イネーブルしてもよい。トラップされた各試行について、O/S下位セキュリティエージェント5020は、動作中のドライバ又はモジュールを特定し、ターゲットドライバを特定し、アクセスタイプを特定してもよい。当該タイプは、リード、ライト又は実行タイプを含むものであってもよい。O/S下位セキュリティエージェント5020は、電子デバイス5001のリソースにアクセスする試行が悪意あるか評価するため、何れか適切な基準と共に上記要素を考慮してもよい。
図53は、電子デバイスにおけるドライバ間通信のO/S下位トラップの方法5300の実施例である。ステップ5305において、セキュリティルールは、プロテクトされるドライバ間通信に関するリソースを決定するためアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
ステップ5310において、電子デバイス内のオペレーティングシステムのレベルより下位の制御構造においてフラグが設定されてもよい。フラグは、例えば、ドライバ間通信ファンクションの試行された実行、ロードドライバ間の通信サブファンクションの実行、メモリにロードされたドライバのデータ若しくはコードセクションへのリード若しくはライト、及び/又はドライバ間通信のためのドライバのコードセクションのジャンプ、ブランチ又は他の直接的な実行をトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリのアクセスを介し、及び/又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
ステップ5315において、電子デバイスは、ドライバ間通信に関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ5320において、試行がトラップされなかった場合、プロセス5300は、トラップされた試行のモニタリングを継続するため、ステップ5315に移行してもよい。試行がトラップされた場合、当該試行はステップ5325において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ5325において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行ったプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報は、O/S内セキュリティエージェントから取得されてもよい。
ステップ5330において、ドライバ間通信に関するドライバのデータセクションの試行されたアクセスが未認証であるか判断される。当該データセクションのコンテンツは、EAT、IAT又は他の何れか適切な情報を含むものであってもよい。未認証である場合、ステップ5360において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。
未認証でない場合、ステップ5335において、ドライバ間通信のファンクションのコンテンツが認証されたファンクションを使用することなく直接アクセスされたか判断されてもよい。一実施例では、コール元のプロセス又はルーチンがドライバの当該部分にアクセスすることが未認証であるか判断されてもよい。未認証である場合、ステップ5360において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。未認証でない場合、ステップ5345において、ドライバ間通信サブファンクションが当該アクセスについて指定されたファンクションを使用することなく直接実行されたか判断されてもよい。一実施例では、コール元のプロセス又はルーチンが当該試行を行うことが未認証であるか判断されてもよい。未認証である場合、ステップ5360において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。未認証でない場合、ステップ5350において、ドライバ間通信ファンクションが認証されたエンティティによりコールされたか、又は試行されたブランチ、ジャンプ又は他の直接的な実行が認証されたエンティティによりコールされたか判断されてもよい。コールされていない場合、ステップ5360において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。コールされた場合、ステップ5355において、当該試行は許可されてもよい。
当該試行が許可され、それがコールバックファンクションを登録するためのものである場合、ステップ5365において、新たに追加されたコールバックファンクションについて割り当てられたメモリは、追加的なトラップについてマーク付けされてもよい。当該ステップは、特にコールバックファンクションを登録することを試みたエンティティが未知であった場合、又はコールバックを登録したエンティティのマルウェアステータスが最終的にけっていできなかった場合に実行されてもよい。従って、コールバックファンクションのコードによる以降のリード、ライト又は実行は、トラップ及び評価されてもよい。そうでない場合、ステップ5385において、ドライバは実行許可されてもよい。方法5300は、任意的には、ドライバ間通信のため電子デバイスのリソースへの試行されたアクセスのモニタリングを継続するためステップ5315に戻ってもよい。
図54は、電子デバイス5401上のドライバフィルタのアタッチメント及びデタッチメントをセキュアにするシステム5400の実施例である。システム5400は、オペレーティングシステム5412などの電子デバイス5401のオペレーティングシステムにおけるドライバフィルタをアタッチ又はデタッチするための悪意ある試行を検出するため、電子デバイス5401上で動作するよう構成されるO/S下位セキュリティエージェント5420を有してもよい。さらに、O/S下位セキュリティエージェント5420は、ドライバフィルタの何れの試行されたアタッチメント又はデタッチメントがトラップされた処理に対応するか、また試行が当該試行及び当該試行を行ったエンティティに基づき認証されるか判断するため、1以上のセキュリティルール5408を利用するよう構成されてもよい。O/S下位セキュリティエージェント5420は、許可、拒絶又はトラップイベントの他の訂正アクションを実行するよう構成されてもよい。
電子デバイス5401は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス1201は、物理メモリ1203などのメモリに接続される1以上のプロセッサ1202を有してもよい。プロセッサ5402は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ5403は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくはバーチャルメモリ1204及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス5401は、1以上のセキュリティルール5421に接続されるO/S内セキュリティエージェント5419を有するオペレーティングシステム5412を有してもよい。オペレーティングシステム5412は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント5419は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S内セキュリティエージェント5420は、図1のO/S下位トラップエージェント104若しくはトリガイベントハンドラ108図2のSVMM216若しくはSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440、442、O/S下位エージェント450若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708若しくはO/S下位エージェント712、図9のO/S下位トラップエージェント920若しくはトリガイベントハンドラ922、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティルール5408は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール5421は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721、図9のセキュリティルール921、図12のセキュリティルール1221及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
電子デバイス5401は、ドライバを用いて電子デバイス5401のリソースにアクセスすることを試みる“アプリケーション1”などの1以上のアプリケーション、ドライバ又は他のエンティティを有してもよい。一実施例では、当該リソースは、I/Oデバイス5430であってもよい。I/Oデバイス5430は、例えば、ストレージデバイス、ディスプレイデバイス、周辺デバイス、キーボード、又は入出力に利用される電子デバイス5401の他の何れかのデバイス若しくはコンポーネントなどを含むものであってもよい。一実施例では、I/Oデバイス5430は、バーチャルデバイスであってもよい。オペレーティングシステム5412は、リソースに対するリクエストを処理してもよい。一実施例では、オペレーティングシステム5412は、I/Oマネージャ5422などのリクエストに対するハンドラを含むものであってもよい。I/Oマネージャ5422は、リソースに対するリクエストを解析及び処理し、当該リクエストのさらなる処理に適したドライバに当該リクエストを導くよう構成されてもよい。例えば、I/Oマネージャ5422は、アプリケーション1からのI/OリクエストをI/Oドライバ5428に送信してもよい。オペレーティングシステム5412は、限定することなく、ディスプレイ、キーボード、ディスクストレージ、シリアル、USB(Universal Serial Bus)、Firewire、IEEE−488、プラグインボード、プリンタ、コンピュータバス又はネットワーキングを含むリソースに対するリクエストを管理及び変換するための何れか適切な個数及び種類のドライバを有してもよい。I/Oドライバ5428などのドライバは、I/Oデバイスなどへの直接的なアドレッシングを実行するよう構成されてもよい。一実施例では、オペレーティングシステム5412は、ハードウェアデバイスをエミュレートするバーチャルデバイスドライバを含むものであってもよい。
I/Oドライバ5428は、デバイススタック5424などの構造を利用してアクセス可能であってもよい。デバイススタック5424は、ドライバ及び何れか追加的なドライバフィルタを含むコンストラクトであってもよい。例えば、デバイススタック5424は、I/Oドライバ5428の先頭にある1以上のI/Oフィルタを有してもよい。I/Oリクエストなどのリクエストが、ドライバスタック5424を介しドライバ5428に送信されるが、I/Oフィルタ5426によりインターセプトされてもよい。オペレーティングシステム5412は、ドライバ又はリソースについて特化した処理を実行するため何れか適切な個数及び種類のドライバフィルタを有してもよい。例えば、I/Oドライバフィルタ5426などのドライバフィルタは、リクエストを条件化又はフォーマット化し、最適化を提供し、結果をキャッシュし、又は他の何れか適切なファンクションを実行してもよい。I/Oドライバフィルタ5426などのドライバフィルタの具体的な実装は、ドライバ自体の性質及び/又は身元に依存してもよい。例えば、いくつかのドライバフィルタは、ディスプレイ、キーボード又はファイルストレージなどの特定タイプのすべてのドライバに適用可能である一方、いくつかのドライバフィルタは、特定のドライバの特定のブランド又はモデルに適用可能であるかもしれない。I/Oリクエストなどのリクエストを受信した後、I/Oフィルタ5426などのフィルタは、当該リクエストに対して又はために処理を実行し、フィルタリングされたリクエストをI/Oドライバ5428などのドライバにわたしてもよい。I/Oドライバ5428は、I/Oデバイス5430などのデバイスと通信し、リターンとして生の結果を受信してもよい。生の結果は、I/Oフィルタ5426などの同一のフィルタを介し送り返される。I/Oフィルタ5426は、コンテンツのフォーマット化、プレゼンテーション又は他の何れか適切な目的のため当該結果をフィルタリングしてもよい。フィルタリングされた結果は、その後、I/Oマネージャ5422や最終的にはアプリケーション1などのデバイススタックと呼ばれるエンティティにわたされてもよい。
図55は、一例となるデバイススタック5500の処理のより詳細な図である。説明のため、デバイススタック5500は、ストレージディスク上のファイルとアプリケーションとのインタフェースをとるためのファイルI/Oドライバスタックとして構成されてもよい。デバイススタック5500は、ファイルI/Oドライバ5506との間のリクエストをフィルタリングするよう構成されるフィルタ1 5502及びアンチマルウェアファイルI/Oフィルタ5504とを有してもよい。デバイススタック5500のベースは、ファイルI/Oドライバ5506であってもよく、リクエストはデバイススタック5500に入り、ドライバにわたされ、結果がデバイススタック5500の先頭でリターン及びアクセスされてもよい。例えば、リクエストはフィルタ1 5502により受信され、アンチマルウェアファイルI/Oフィルタ5510にわたされ、その後、ファイルI/Oドライバ5506にわたされる。各フィルタは、リクエストをスタックの上下にわたす前に、それの個々のフィルタリング処理を実行するよう構成されてもよい。ファイルI/Oドライバ5506は、フィルタリングされたI/Oリクエストを実行し、存在する場合には、フィルタ1 5502に自らのフィルタリングされた結果を返すよう構成されるアンチマルウェアファイルI/Oフィルタ5504に結果を返すよう構成されてもよい。フィルタ1及びアンチマルウェアファイルI/Oフィルタ5504はそれぞれ、当該結果に対するフィルタリング処理を実行するよう構成されてもよい。デバイススタック5500のフィルタは、リード、ライト又は実行などの何れか適切なリクエストをフィルタリングするよう構成されてもよい。
デバイススタック5500は、スタックを構成し、デバイススタック5500内のフィルタとドライバとの間の通信を実行するのに適した何れかの機構を有してもよい。例えば、デバイススタック5500は、フィルタの順序を特定すると共に、デバイススタック5500のベースを特定するためのデータ構造を有してもよい。デバイススタック5500を順序付けるための一例となるデータ構造は、ポインタ5508、5510、5512又は5514を含むものであってもよい。各ポインタは、スタックにおいて上下に配置される次のエンティティのアドレスを含むものであってもよい。例えば、アンチマルウェアファイルI/Oフィルタ5510は、ファイルI/Oドライバ5514であってもよいスタックの下方で次のエンティティを指し示すポインタ5512と、フィルタ1 5502であってもよいスタックの上方で次のエンティティへのポインタ5510とを有してもよい。当該データ構造の具体例は、デバイスオブジェクトにより実現されてもよい。
フィルタ1 5502は、“Kernel.DLL”ファイルのコンテンツが他のファイル“Malware.DLL”により上書きされることを命令する“Write Malware.DLL to Kernel.DLL”コマンドなどのファイルI/Oリクエストを受信するよう構成されてもよい。フィルタ1 5502は、リクエストを受信し、当該リクエストに応答してそれの処理を実行し、当該リクエストをスタックの下方のアンチマルウェアファイルI/Oフィルタ5504であってもよい次のエンティティにわたしてもよい。アンチマルウェアファイルI/Oフィルタ5504は、未認証のプログラムによるタンパリングからシステムのコアファイルをプロテクトするよう構成されてもよい。例えば、マルウェアは、カーネルオペレーティングシステムコンテンツ、マスタブートレコード又はアンチマルウェアソフトウェアファイルなどの特定のシステムファイルを変更又は削除することを試みるかもしれない。図55の例では、当該リクエストは、未知の悪意の可能性のあるファイル“Malware.DLL”により“Kernel.DLL”などのプロテクトされたファイルなどを書き込むための試行であってもよく、及び/又は当該リクエストは、オペレーティングシステムのカーネルプロセス以外のプロセスから発信されているかもしれない。従って、アンチマルウェアファイルI/Oフィルタ5504は、例えば、当該リクエストをフィルタリングし、当該リクエストをファイルI/Oドライバ5506のリードからブロックするよう構成されてもよい。アンチマルウェアファイルI/Oフィルタ5504は、さらなる解析のためシステム上で実行されるアンチマルウェアエージェント5516にブロックされたリクエストを送信するよう構成されてもよい。一実施例では、アンチマルウェアエージェントは、図54のO/S内セキュリティエージェント5419又は他の何れか適切なアンチマルウェアモジュール、ソフトウェア、システム若しくはプロセスにより全体的若しくは部分的に実現されてもよい。アンチマルウェアファイルI/Oフィルタ5504は、ライトが成功したかのように、リクエストを試行したエンティティが進捗するように、スタックにスプーフされたリプライを返すよう構成されてもよい。そうでなく、ライト試行が疑わしい又は悪意あるとみなされない場合、アンチマルウェアファイルI/Oフィルタ5504は、リクエストをファイルI/Oドライバ5506にわたし、結果をフィルタ1 5502に返すよう構成されてもよい。
図56は、ドライバフィルタをアタッチ又はデタッチするよう動作するマルウェアにより危険にさらされうるデバイススタックの一例を示す。ファイルI/Oデバイススタック5602は、図54のデバイススタック5424又は図55のデバイススタック5500により記述されるようなデバイススタックの実現形態である。ファイルI/Oデバイススタック5602は、ファイルI/Oドライバ5610へのアクセスを提供するよう構成され、フィルタ1 5606やアンチマルウェアファイルI/Oフィルタ5608などのフィルタを有してもよい。アンチマルウェアファイルI/Oフィルタ5608は、図55のアンチマルウェアファイルI/Oフィルタ5504の実現形態であってもよい。アンチマルウェアファイルI/Oフィルタ5608は、ドライバスタック5602からデタッチされていてもよい。当該デタッチメントは、ファイルI/Oデバイススタック5602のデータ構造の直接的な操作によって、又はドライバフィルタをデタッチ又は削除するためのシステムファンクションコールによって実行されてもよい。フィルタ1 5606は、アンチマルウェアファイルI/Oフィルタ5608を介しリクエストをもはやわたさず、その代わりにそれをバイパスし、当該リクエストをファイルI/Oドライバ5610などの次のエンティティに直接送信してもよい。ポインタ5612は、アンチマルウェアファイルI/Oフィルタ5608を介し次のエンティティを指し示すよう修正されてもよい。ファイルI/Oドライバ5610は、もはやアンチマルウェアファイルI/Oフィルタ5608によりフィルタリングされるようなリクエストを受信しなくてもよい。受信したリクエストに応答して、ファイルI/Oドライバ5610は、ファイルI/Oドライバ5610のポインタ5614が修正されたとき、フィルタ1にリプライを送信し、これにより、アンチマルウェアファイルI/Oフィルタ5608はもはやフィルタのベースにいなくなる。従って、アンチマルウェアファイルI/Oフィルタ5608は、ファイルI/Oデバイススタック5602から効果的に削除されてもよい。
アンチマルウェアファイルI/Oフィルタ5608の削除は、許可されていてもよく、又はマルウェア攻撃の結果である可能性がある。Ring0などのアンチマルウェアファイルI/Oフィルタ5608と同じ実行優先度で動作するマルウェアは、検出なくフィルタをデタッチするのに成功する可能性がある。アンチマルウェアファイルI/Oフィルタ5608が一例として示されているが、他のドライバフィルタが同様に攻撃されてもよい。
キーボードI/Oデバイススタック5604は、図54のデバイススタック5424又は図55のデバイススタック5500により記述されるようなデバイススタックの完全な又は部分的な実現形態であってもよい。キーボードI/Oデバイススタック5604は、システムのキーボードデバイスへのアクセスを提供するよう構成されてもよい。一実施例では、キーボードI/Oデバイススタック5604は、キーボードドライバ5620の先頭でフィルタ1 5616などのフィルタを当初は有していたかもしれない。しかしながら、ドライバフィルタアタッチメント処理は、キーボードI/Oデバイススタック5604に悪意あるキーロガーフィルタ5618をアタッチした可能性がある。キーボードドライバ5620のポインタ5628又はフィルタ1 5616のポインタ5622などのスタックのデータ構造は、悪意あるキーロガーフィルタ5618がフィルタ1 5616とキーボードドライバ5620との間に挿入されることを可能にするよう修正されていてもよい。当該処理は、ドライバフィルタをアタッチするためのシステムファンクションコールを介し、又はキーボードI/Oデバイススタック5604のデータ構造の直接的な操作によって実行されていてもよい。悪意あるキーロガーフィルタ5618は、ユーザのキーストロークをキャプチャし、それらをファイル又はリモートサーバに送信するよう構成されてもよい。
悪意あるキーロガーフィルタ5618又は他の悪意の可能性のあるフィルタは、アンチマルウェアソフトウェアからの検出を回避するスタックのあるポジションにインストールされてもよい。例えば、悪意の可能性のあるフィルタは、アンチマルウェアフィルタにより実行される何れの訂正アクションも悪意あるフィルタにより元に戻されるように、アンチマルウェアフィルタよりスタックにおいて下位のポジションにインストールされる可能性がある。さらに、悪意あるフィルタは、悪意あるフィルタの処理が偽装されるように、信頼されたフィルタの代わりにスタックに挿入されてもよい。
図54に戻って、オペレーティングシステム5412のレベルで実行されるアンチマルウェアソフトウェアは、当該アクティビティを実行するマルウェアがまた同一の優先度レベルで実行される可能性があるため、ドライバフィルタの悪意あるアタッチメント及びデタッチメントを完全に解決することはできないかもしれない。
O/S下位セキュリティエージェント5420は、オペレーティングシステム5412の下位のレベルでドライバフィルタをアタッチ又はデタッチする試行をインターセプトするよう構成されてもよい。O/S下位セキュリティエージェント5420は、ドライバフィルタのアタッチメント及びデタッチメントに関するリソースを決定し、当該リソースへの試行されたアクセスをトラップするため、セキュリティルール5408を照会するよう構成されてもよい。当該リソースは、例えば、メモリ5403の一部を含むものであってもよい。試行されたアクセスをトラップした後、O/S下位セキュリティエージェント5420は、アクセスを試行したエンティティがアクションを実行するため認証されているか、セキュリティルール5408に基づき判断するよう構成されてもよい。O/S下位セキュリティエージェント5420は、リクエストを許可若しくは拒絶するか、又は他の適切なアクションを実行するよう構成されてもよい。
一実施例では、メモリ5403は、バーチャルメモリを有してもよい。当該実施例では、メモリ5403は、アタッチファンクション5436、アタッチサブファンクション5438、デタッチファンクション5440及び/又はデタッチサブファンクション5442のためのコード、ドライバデータ構造のデータ形式パーミッション5444、及び/又はドライバデータ構造5446を含むメモリページを有してもよい。アタッチファンクション5436及びデタッチファンクション5440は、ドライバをアタッチ又はデタッチするため電子デバイス5401内のエンティティのためオペレーティングシステム5412により提供されてもよい。当該エンティティは、アタッチファンクション5436又はデタッチファンクション5440を通常はコールしてもよい。アタッチファンクション5436及びデタッチファンクション5440を提供することによって、オペレーティングシステム5412は、ドライバフィルタを追加又は削除するため、電子デバイス5401のエンティティの制御されたセキュアで効率的な機構を提供してもよい。しかしながら、アタッチサブファンクション5438及びデタッチサブファンクション5442は、ドキュメント化されず、又はオペレーティングシステム5412による使用から阻止されるかもしれない。アタッチサブファンクション5438及びデタッチサブファンクション5442は、関連するアタッチファンクション5436及びデタッチファンクション5440により利用のためだけに意図されてもよい。マルウェアは、アタッチサブファンクション5438及びデタッチサブファンクション5442の個々のインスタンスをコールすることによって、アタッチファンクション5436及びデタッチファンクション5440のセキュリティ及び制御機構をバイパスする可能性がある。
他の実施例では、メモリ5403は、物理メモリを有してもよい。当該実施例では、メモリ5403は、システムのアタッチファンクション5436、アタッチサブファンクション5438、デタッチファンクション5440、デタッチサブファンクション5442、ドライバデータ構造のパーミッション5444に関するデータ及び/又はドライバデータ構造5446を含むメモリアドレスを有してもよい。
アタッチファンクション5436のコードは、アプリケーション又はドライバがドライバフィルタをイネーブルにするため、システム5400又はオペレーティングシステム5412により指定される何れかのファンクションのコードを有してもよい。当該ファンクションは、デバイススタック5424へのI/Oフィルタ5426の1つなど、ドライバスタックにドライバフィルタをアタッチするためのファンクションを含むものであってもよい。これらのファンクションはさらに、ドライバフィルタをイネーブルする際に特定のタスクを実行するため、サブルーチン又は他のファンクションをコールしてもよい。デタッチファンクション5440のコードを含むメモリは、アプリケーション又はドライバがドライバフィルタを非イネーブルするため、システム5400又はオペレーティングシステム5412により指定されたファンクションのコードを有してもよい。当該ファンクションは、デバイススタック5424からのI/Oデバイスフィルタ5426の1つなど、ドライバスタックからドライバフィルタをデタッチするためのファンクションを含むものであってもよい。これらのファンクションはさらに、ドライバフィルタを非イネーブルにする際に特定のタスクを実行するためのサブルーチン又は他のファンクションをコールしてもよい。一例では、WindowsTMアタッチファンクション5436は、限定することなく、IoAttachDevice()、IoAttachDeviceByPointer()、IoAttachDeviceToDeviceStack()及びIoAttachDeviceToDeviceStackSafe()を含むものであってもよい。他の例では、WindowsTMデタッチファンクション5440は、限定することなく、IoDeleteDevice()及びIoDetachDevice()を含むものであってもよい。
当該サブルーチン又は他のファンクションのコードは、サブファンクション5438をアタッチするか、又はサブファンクション5442をデタッチするコードを含むメモリに含まれてもよい。マルウェアは、オペレーティングシステム5412による検出を回避するため、サブファンクションを直接的にコールしてもよい。従って、システム5400のエンティティが、アタッチファンクション5436又はデタッチファンクション5440などの標準的なファンクションのメモリにおけるコードを使用することなく、サブファンクションを直接的にコールした場合、試行されたアクセスは、疑わしいと判断されてもよい。一例では、WindowsTMアタッチファンクションは、限定することなく、IopAttachDevicetoDeviceStackSafe()を有してもよい。当該サブファンクションは、WindowsTMアタッチファンクション5436の各インスタンスによりコールされてもよい。
ドライバデータ構造のパーミッション5444は、デバイススタック5424などのデバイススタックに関するデータ構造をリード、ライト又は実行する能力を設定するため、テーブル、フラグ又は他の何れか適切なデータ構造若しくは表示を有してもよい。当該パーミッション5444は、例えば、図55のポインタ5508、5510、5512又は5514又は図56のポインタ5612、5614、5622、5624、5626又は5628などのデバイススタックにおけるポインタをライト又はリードする能力などを制御してもよい。メモリ5403におけるパーミッション5444を変更するための未認証の試行は、I/Oフィルタ5426の1つなどドライバフィルタを悪意によりアタッチ又はデタッチするためのマルウェアによる試行における第1ステップを示すかもしれない。
ドライバデータ構造5446は、I/Oドライバ5428やデバイススタック5424などのドライバ又はデバイススタックを構成するのに適した何れかのデータ構造を有してもよい。例えば、ドライバデータ構造5446は、図55のポインタ5508、5510、5512若しくは5514、又は図56のポインタ5612、5614、5622、5624、5626若しくは5628を有してもよい。マルウェアがそれのコールルーチンを完全に偽装したとしても、ドライブフィルタをアタッチ又はデタッチすることは、ドライバデータ構造5446において値を変更することを要求するかもしれない。従って、ドライバデータ構造5446の値を変更するための未認証の試行は、マルウェアを示すものであるかもしれない。
O/S下位セキュリティエージェント5420は、物理メモリ及び/又は仮想化メモリ単位でメモリ5403のドライバフィルタ関連コンテンツをプロテクトするよう構成されてもよい。例えば、O/S下位セキュリティエージェント5420は、アタッチファンクション5436、アタッチサブファンクション5438、デタッチファンクション5440、デタッチサブファンクション5442のコード、ドライバデータ構造のデータ形式パーミッション5444、及び/又はドライバデータ構造5446を含むメモリページをリード、ライト又は実行することを試行するリクエストをインターセプトするよう構成されてもよい。当該例では、O/S下位セキュリティエージェント5420は、バーチャルマシーンモニタにより完全に又は部分的に実現されてもよい。他の例では、O/S下位セキュリティエージェント5420は、アタッチファンクション5436、アタッチサブファンクション5438、デタッチファンクション5440及び/デタッチサブファンクション5442のコード、ドライバデータ構造のデータ形式パーミッション5444、及び/又はドライバデータ構造5446を含むメモリアドレスをリード、ライト又は実行することを試行するリクエストをインターセプトするよう構成されてもよい。
O/S下位セキュリティエージェント5420は、メモリ5403のドライバフィルタ関連コンテンツのリクエストをインターセプトし、コンテクスト情報に基づき当該リクエストを評価するよう構成されてもよい。当該コンテクスト情報は、リクエストを行ったエンティティ、リクエストの性質(リード、ライト又は実行など)、試行されたライトの値、エンティティがリクエストを行った方法、メモリ5403のドライバフィルタ関連コンテンツをリクエストするための以前の試行及び/又はメモリ5403にアクセスすることが試行されたオペレーティングシステム5412のレベルのエンティティの処理に関するO/S内セキュリティエージェント5419からの情報を含むものであってもよい。
リクエストの評価に基づき、O/S下位セキュリティエージェント5420は、リクエストを許可若しくは拒絶し、コール元エンティティにスプーフされたレスポンスを返送し、又は他の何れか適切な訂正アクションを実行することを可能にするよう構成されてもよい。
動作について、O/S下位セキュリティエージェント5420は、ドライバフィルタのアタッチメント及び/デタッチメントをセキュアにするため電子デバイス5401上で動作してもよい。アプリケーション2などのアプリケーション、ドライバ又は他のエンティティは、フィルタアタッチメント又はデタッチメント試行を発信してもよい。アプリケーション2は、例えば、ユーザモード、カーネルモード、オペレーティングシステム5412と同一レベルで、又はオペレーティングシステム5412より上位レベル実行してもよい。O/S下位セキュリティエージェント5420は、電子デバイス5401上のドライバフィルタのアタッチメント及びデタッチメントをどのようにプロテクトするか決定するため、セキュリティルール5408にアクセスしてもよい。O/S下位セキュリティエージェント5420は、例えば、アタッチファンクション5436、アタッチサブファンクション5438、デタッチファンクション5440及び/若しくはデタッチサブファンクション5442のコードについてメモリページ又はアドレスの試行された実行、ドライバデータ構造のパーミッション5444についてメモリページ又はアドレスの試行されたライト、及び/又はドライバデータ構造5446の試行されたリード若しくはライトをキャプチャするため、制御構造フラグを設定してもよい。アプリケーション2は、ドライバフィルタに関するメモリ5403のコンテンツにアクセスすることによることを含む、各種機構を介しI/Oフィルタ5426などのドライバフィルタにアクセスすることを試行してもよい。
一実施例では、アプリケーション2は、ドライバデータ構造のパーミッション5444への書き込みの試行など、メモリ5403における値の直接的な操作などを介しフィルタアタッチメント又はデタッチメントを試行してもよい。当該試行されたライトは、データ構造の値が以降にドライバフィルタをアタッチ又はデタッチするため書き換えられてもよいように、ドライバデータ構造に対するリードオンリーパーミッションをリード/ライトに変更するための試行であってもよい。当該試行は、I/Oフィルタ5426などのドライバフィルタにアクセスするための標準的でセキュアな機構をバイパスしてもよい。当該機構をバイパスすることによって、当該試行は、オペレーティングシステム5412のセキュリティ手段から偽装、隠蔽又は阻止されてもよい。
他の実施例では、アプリケーション2は、当該処理のためオペレーティングシステム5412により提供されるアタッチ又はデタッチファンクション5432をコール及び実行することによって、フィルタアタッチメント又はデタッチメントを試行してもよい。当該アタッチ又はデタッチファンクション5432はさらに、アタッチ又はデタッチサブファンクション5434aのインスタンスをコール及び実行してもよい。アタッチ又はデタッチサブファンクション5434aは、ドライバデータ構造のパーミッション5444へのアクセス又はドライバデータ構造5446の試行されたアクセスを導く特定のコールを実行してもよい。アタッチ又はデタッチファンクション5432は、I/Oフィルタ5426などのドライバフィルタにアクセスする標準的なプロテクトされた機構としてオペレーティングシステム5412により提供されてもよい。アタッチ又はデタッチファンクション5432は、オペレーティングシステム5412の特定のプロセスのみがドライバフィルタにアクセスするためファンクションを利用できるようにセキュアにされてもよい。
さらなる他の実施例では、アプリケーション2は、ドライバデータ構造5446への標準的なプロテクトされたアクセスのため、オペレーティングシステム5412により提供されるアタッチ又はデタッチファンクション5432などのファンクションを利用することなく、アタッチ又はデタッチサブファンクション543bのインスタンスを直接コール及び実行することによって、フィルタアタッチメントを試行してもよい。オペレーティングシステム5412がアタッチ又はデタッチファンクション5432について実行されるように、アタッチ又はデタッチサブファンクション5434bの利用をセキュア化及び認証するための機構を有していない場合、サブファンクション5434bの直接的な利用は、オペレーティングシステム5412のセキュリティ手段を阻止するか、又は自らを隠蔽若しくは偽装するためマルウェアにより利用される可能性がある。
O/S下位セキュリティエージェント5420は、メモリ5403のドライバフィルタ関連コンテンツへの試行されたアクセスをトラップしてもよい。O/S下位セキュリティエージェント5420は、インターセプトされたアクセスをどのように処理するか決定するため制御構造を有してもよい。O/S下位セキュリティエージェント5420は、試行されたアクセスをどのように処理するか決定するため、セキュリティルール5408又はプロテクションサーバにアクセスしてもよい。
例えば、アプリケーション2によりアタッチファンクション5436又はデタッチファンクション5440を実行する試行がトラップされてもよい。I/Oフィルタ5426にアクセスするため標準的又はセキュアな方法としてオペレーティングシステムにより提供されてもよい当該ファンクションの利用は、例えば、デジタル署名されたドライバなどに制限されてもよい。従って、一実施例では、O/S下位セキュリティエージェント5420は、ドライバがデジタル署名されていることを要求するルールを決定し、コール元アプリケーション若しくはドライバを決定し、ドライバが署名されているか判断するため、セキュリティルール5408にアクセスしてもよい。O/S下位セキュリティエージェント5420は、アプリケーション2の署名されたスタータスを決定するため、オペレーティングシステム5412にアクセス可能なO/S内セキュリティエージェント5419にアクセスしてもよい。当該アクセスは、オペレーティングシステム5412のコール元スタックを調べることによって行われてもよい。他の実施例では、O/S下位セキュリティエージェント5420は、アプリケーション2がブラックリスト又はホワイトリストにあるか、又はアプリケーション2のハッシュなどに基づき悪意ある状態に関して未知であるか判断してもよい。O/S下位セキュリティエージェント5420は、アプリケーション2が未知である場合、アプリケーション2は事前注意としてブロックされるか、又はアプリケーション2に関する情報がプロテクションサーバに報告されてもよいと判断してもよい。さらに、アプリケーション2が未知である場合、O/S下位セキュリティエージェント5420は、アプリケーション2の処理のより多くをトラップすることによって、より高い詳細さによりアプリケーション2の処理をモニタリングしてもよい。O/S下位セキュリティエージェント5420は、アプリケーション2がマルウェアを有すると判断し、アプリケーション2をブロックし、アプリケーション2の電子デバイス5401をクリーンにし、又は他の訂正アクションを実行してもよい。
他の例では、アプリケーション2によるアタッチサブファンクション5438又はデタッチサブファンクション5442を実行するための試行はトラップされてもよい。当該ファンクションの利用は、アタッチファンクション5436又はデタッチファンクション5438などの標準的又はセキュアな機構を利用することを介してのみ通常実行されてもよい。従って、一実施例では、O/S下位セキュリティエージェント5420は、アタッチサブファンクション5438又はデタッチサブファンクション5442をコールしたルーチンに基づき、当該ルーチンが既知で列強される標準的又はセキュアな機構の1つでない場合にトラップしてもよい。他の実施例では、O/S下位セキュリティエージェント5420は、アタッチサブファンクション5438又はデタッチサブファンクション5442のすべての試行されたアクセスをトラップし、その後、コール元のルーチンを決定し、当該コール元ルーチンが標準的又はセキュアな機構の1つでない場合、当該リクエストを拒絶してもよい。コール元ルーチンは、例えば、デバイススタック5424の情報、ドライバデータ構造5446を介し、又はメモリ5403の何れのメモリページ又はメモリアドレスから、サブファンクションを実行するためのコマンドが行われたか、判断し、メモリマップと当該ページ又はアドレスとを相互に関連付けること
などによって決定されてもよい。コール元ルーチンがアタッチファンクション5436又はデタッチファンクション5442のインスタンスであると判断された場合、当該ファンクションをコールしたルーチンは、上述されたように検証されてもよい。O/S下位セキュリティエージェント5420は、認証されたアタッチ又はデタッチファンクションのコールから発生しないアタッチサブファンクション5438又はデタッチサブファンクション5442のコールを拒絶してもよい。
さらなる他の例では、ドライバデータ構造5446をリード又はライトするか、又はドライバデータ構造のパーミッション5444をライとするアプリケーション2による試行は、O/S下位セキュリティエージェント5420によりトラップされてもよい。当該すべての試行に対するトラップは、アタッチ又はデタッチファンクションの実行から発生する試行のトラップを含むものであってもよい。従って、当該試行をトラップすると、O/S下位セキュリティエージェント5420は、メモリの何れの部分から、又は何れのエンティティから当該試行が行われたか判断してもよい。当該試行が認証されたファンクションから行われた場合、当該試行は許可されてもよい。認証されたファンクション自体のコール元は、上述されたように検証されてもよい。当該試行が認証されたファンクションから行われたものでない場合、当該試行は、アプリケーション2によりデバイススタック5424を直接操作する悪意ある試行を示し、ブロックされてもよい。
O/S下位セキュリティエージェント5420は、試行が悪意あるか判断するとき、デバイスのタイプを考慮してもよい。例えば、バーチャルディスクボリュームは、特にフィルタにより利用される傾向がある。従って、O/S下位セキュリティエージェント5420は、デバイスのタイプを決定するため、オブジェクトなどのドライバデータ構造5446にアクセスし、当該タイプがFILE_VIRTUAL_VOLUMEである場合、要求元がデジタル署名されていることを要求してもよい。当該要求は、オペレーティングシステム5412による要求から独立していてもよい。試行をトラップするか、又は試行が悪意あるか決定する際に考慮してもよいデバイスオブジェクトの他のタイプは、限定することなく、ライトワンスメディア、バーチャルボリューム、リムーバブルメディア、リモートデバイス、フロッピー(登録商標)ディスケット、リードオンリーデバイス、マウントデバイス、プラグ・アンド・プレイデバイス又は自動生成された名前を有するデバイスを含むものであってもよい。セキュリティルール5408は、デバイスオブジェクトのタイプの考慮を含むものであってもよい。例えば、モデムタイプのデバイスは、コール元ドライバが未知である場合、すべてのアタッチメントに対してプロテクトされてもよい。これは、O/S下位セキュリティエージェント5420が、ファックス及びモデム処理に対するスニフから悪意あるドライバを阻止することを可能にするかもしれない。他の例では、デバイススキャナのドライバは、既知の正当なフィルタ利用がデバイススキャナのドライバについて存在しない場合、すべてのアタッチメントに対してプロテクトされてもよい。
上述されたように、O/S下位セキュリティエージェント5420は、I/Oフィルタ5426にアクセスすることを試みたエンティティに基づき、試行をトリガ又は処理してもよい。さらに、O/S下位セキュリティエージェント5420は、アクセスされるべきデバイスの所有ドライバを決定し、試行が悪意あるか判断する際に当該情報を考慮してもよい。ドライバデータ構造5446又はデバイスデータ構造はそれぞれ、ドライバ及びデバイスをリンクする情報を有してもよい。当該データ構造は、ドライバとデバイスとの間の関係を決定するためアクセスされてもよい。例えば、I/Oフィルタ5426にアクセスする試行がアプリケーション2により行われるが、アプリケーション1がI/Oデバイス5430を所有していると判断された場合、当該リクエストは拒絶されてもよい。
図57は、電子デバイスのドライブフィルタアタッチメントのO/S下位トラップの方法5700の実施例である。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価されるかの基準と共に、リソースを特定してもよい。
ステップ5710において、フラグが、電子デバイス内のオペレーティングシステムの下位の制御構造において設定されてもよい。フラグは、例えば、アタッチファンクション若しくはデタッチファンクションの試行された実行、アタッチサブファンクション若しくはデタッチサブファンクションの実行、ドライバ及びデバイスデータ構造のリード/ライト/実行パーミッションへのライト、及び/又はデータ構造へのリード若しくはライトなどをトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び/又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
ステップ5715において、電子デバイスは、ドライバフィルタのアタッチメントに関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ5720において、トラップされた試行がない場合、プロセス5700は、ステップ5715に移行し、トラップされた試行についてモニタリングを継続する。試行がトラップされた場合、当該試行はステップ5725において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ5725において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行ったプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステムの内部からのコンテクスト情報が、O/S内セキュリティエージェントから取得されてもよい。試行に関するデバイスのデバイスタイプは、デバイスの所有するドライバと同様に決定されてもよい。
ステップ5735において、デバイスオブジェクト又はドライバスタックのデータ構造が認証されたファンクションを利用することなく直接アクセスされたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該データ構造にアクセスすることが未認証であるか判断されてもよい。データ構造が直接アクセスされた場合、ステップ5760において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。データ構造が直接アクセスされなかった場合、ステップ5740において、デバイスオブジェクト又はデバイススタックのデータ構造に対するパーミッションが試行されたか又は直接書き込まれたか判断されてもよい。一実施例では、コール元プロセス又はルーチンがライトのための当該試行を行うのに許可されているか判断されてもよい。データ構造が直接書き込まれた場合、ステップ5760において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。当該データ構造が直接書き込まれていない場合、ステップ5745において、アタッチ又はデタッチサブファンクションが、当該アクセスについて指定されたファンクションを利用することなく直接実行されたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該試行を行うのに未認証であるか判断されてもよい。サブファンクションが直接実行された場合、ステップ5760において、当該試行が疑わしい及び/又は悪意あると判断され、拒絶されてもよい。当該サブファンクションが直接実行されていない場合、ステップ5750において、アタッチファンクション又はデタッチファンクションが認証されたエンティティによりコールされたか判断されてもよい。ファンクションが認証されたエンティティによりコールされていない場合、ステップ5760において、当該試行が疑わしい及び/又は悪意あると判断され、拒絶されてもよい。当該ファンクションが認証されたエンティティによりコールされた場合、ステップ5755において、当該試行は許可されてもよい。
ステップ5755又は5760の実行後、方法5700は、任意的にドライバフィルタアタッチメントについて電子デバイスのリソースへの試行されたアクセスについてモニタリングを継続するため、ステップ5715に戻ってもよい。
図58は、電子デバイス5801上のドライバのロード又はアンロードをセキュアにするシステム5800の実施例である。システム5800は、オペレーティングシステム5812などの電子デバイス5801のオペレーティングシステムにおいてドライバをロード又はアンロードするための悪意ある試行を検出するため、電子デバイス5801上で動作するよう構成されるO/S下位セキュリティエージェント5820を有してもよい。さらに、O/S下位セキュリティエージェント5820は、何れのドライバの試行されたロード又はアンロードがトラップされる処理に対応するか、試行が当該試行と当該試行を実行するエンティティとに基づき認証されているか判断するため、1以上のセキュリティルール5808を利用するよう構成されてもよい。O/S下位セキュリティエージェント5820は、許可若しくは拒絶又はトラップされたイベントについて他の訂正アクションを実行するよう構成されてもよい。
電子デバイス5801は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス5801は、メモリ5803などのメモリに接続される1以上のプロセッサ5802を有してもよい。プロセッサ5802は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ902、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ5803は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくはバーチャルメモリ1204及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス5801は、1以上のセキュリティルール5821に接続されるO/S内セキュリティエージェント5819を有するオペレーティングシステム5821を有してもよい。オペレーティングシステム5812は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント5819は、図1のO/S内セキュリティエージェント281、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント5820は、図1のO/S下位トラップエージェント104若しくはトリガイベントハンドラ108、図2のSVMM216若しくはSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440、442、O/S下位トラップエージェント450若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708若しくはO/S下位エージェント712、図9のO/S下位トラップエージェント920若しくはトリガイベントハンドラ922、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティルール5808は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール5821は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721、図9のセキュリティルール921、図12のセキュリティルール1221及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
電子デバイス5801は、ドライバをロード又はアンロードするため、電子デバイス5801のリソースにアクセスすることを試みるアプリケーション5826などの1以上のアプリケーション、ドライバ又は他のエンティティを有してもよい。アプリケーション5826は、メモリ5803などのリソースにアクセスすることを試行してもよい。一実施例では、アプリケーション5826は、メモリ5803がオペレーティングシステム5812により仮想化されたメモリページを介しメモリ5803にアクセスすることを試行してもよい。他の実施例では、アプリケーション5826は、物理メモリのアドレスへのアクセスを介しメモリ5812にアクセスすることを試行してもよい。アプリケーション5826は、メモリ5803の命令を実行するためプロセッサ5802を利用することを試行してもよい。
オペレーティングシステム5812は、ドライバをロード及びアンロードするため電子デバイス5801内のアプリケーション5826などのエンティティのファンクションを提供してもよい。当該エンティティは、ロード及びアンロードファンクションを通常ロールしてもよい。当該ファンクションを提供することによって、オペレーティングシステム5812は、電子デバイス5801のエンティティがドライバをロード又はアンロードするための制御されたセキュアで効率的な機構を提供してもよい。当該ファンクションは、ロードサブファンクション及びアンロードサブファンクションの組み合わせに依拠してもよい。当該ロード及びアンロードサブファンクションは、オペレーティングシステム5812による利用から非ドキュメント化又は阻止されてもよい。ロード及びアンロードサブファンクションは、関連するロード及びアンロードファンクションにより利用のためのみに意図される。マルウェアは、ロードサブファンクション及びアンロードサブファンクションの個々のインスタンスをコールすることによって、ロード及びアンロードファンクションのセキュリティ及び制御機構をバイパスするかもしれない。さらに、マルウェアは、当該ファンクション又はサブファンクションのコードセクションに直接ジャンプすることによって、ロード及びアンロードファンクションのセキュリティ及び制御機構をバイパスしてもよい。さらに、マルウェアは、実行のためメモリにロードされると、ドライバを変更するよう試行する可能性があり、ディスク上のドライバのイメージがマルウェアによりクリーンされ、ドライバにロードされるとき、コードがマルウェアにより投入され、ドライバをコラプトさせる。
オペレーティングシステム5812により提供される何れか適切なロード又はアンロードファンクションは、ドライバをロード又はアンロードするのに利用されてもよい。例えば、WindowsTMオペレーティングシステムにより実現されるオペレーティングシステム5812は、ZwLoadDriver()ファンクションを利用してドライバをロードし、又はZwUnloadDriver()を利用してドライバをアンロードしてもよい。当該ロード又はアンロードファンクションは、何れか適切な個数又は種類のサブファンクションをコールしてもよい。例えば、ZwLoadDriver()は、NtLoadDriver()をコールし、それはさらにIopLoadUnloadDriver()をコールする。IoPLoadUnloadDriver()はさらに、ドライバをロードするためIoPUoadDriver()をコールし、又はドライバをアンロードするためIopUnloadDriver()をコールする。従って、ファンクションコールの階層が、ドライバをロード又はアンロードするため利用されてもよい。一実施例では、ドライバは、他の処理の副次的効果としてロードされるかもしれない。例えば、WindowsTMオペレーティングシステムにより実現されるオペレーティングシステム5812は、MmLoadSystemImage()ファンクションを利用して、システムイメージ全体をロードし、当該期間中にドライバは結果としてロードされるかもしれない。当該ファンクションによりロードされたイメージは、ドライバのための相対アドレスを有してもよく、当該相対アドレスはリロケーションテーブルに基づきリロケートされてもよい。当該タスクを実行するため、MmLoadSystemImage()に対するコールは、LdrRelocateImageサブファンクションを利用してもよい。他の実施例では、MiMapViewOfDataSection()、MiMpaViewOfImageSection()又はMiMpaViewOfPhysicalSection()などの特定の補助ファンクションが、ドライバをロードするため利用されてもよい。
ドライバのロード及びアンロードをセキュアにするため、O/S下位セキュリティエージェント5820は、電子デバイス5801のリソースの何れの部分がトラップされるべきか、また試行に関する何れのコンテクスト情報が決定されるべきか決定するため、セキュリティルール5808にアクセスするよう構成されてもよい。O/S下位セキュリティエージェント5820は、何れか適切なファンクション又はサブファンクションの試行された実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント5820は、何れか適切な方法によりこれらのファンクション又はサブファンクションの試行された実行をトラップするよう構成されてもよい。
一実施例では、O/S下位セキュリティエージェント5820は、メモリ5803のファンクションの実行のため制御構造のフラグを設定するよう構成されてもよい。例えば、O/S下位セキュリティエージェント5820は、メモリ5803のアドレス(D)におけるZwLoadDriver()のファンクションエントリポイントの試行された実行をトラップするよう構成されてもよい。他の例では、O/S下位セキュリティエージェント5820は、メモリ5803のアドレス(E)におけるNtLoadDriver()のファンクションエントリポイントの試行された実行をトラップするよう構成されてもよい。
他の実施例では、O/S下位セキュリティエージェント5820は、マルウェアの強い徴候である当該ファンクションのコードセクションの実行を直接的にトラップするよう構成されてもよい。例えば、O/S下位セキュリティエージェント5820は、メモリ5803のアドレス(A)におけるNtLoadDriver()のコードセクションのダイレクトアクセスを生じさせる何れか試行されたJMP命令又は同様の命令をトラップするよう構成されてもよい。
ドライバの試行されたロードに応答して、O/S下位セキュリティエージェント5820は、ロードが許可される前にドライバをロードする効果の可能性を決定するよう構成されてもよい。O/S下位セキュリティエージェント5820は、ディスク5824上などのストレージのドライバのイメージを調べるよう構成されてもよい。例えば、新たなドライバ5830の試行されたロードをトラップすると、O/S下位セキュリティエージェント5820は、ディスク5824上の新たなドライバ5830のイメージのコンテンツをスキャンするよう構成されてもよい。O/S下位セキュリティエージェント5820は、ディスク5824上の新たなドライバ5830のイメージのコンテンツのハッシュ又はデジタルシグネチャ、及び/又は当該コンテンツの一部(コードセクションなど)のハッシュ又はシグネチャを決定するよう構成されてもよい。O/S下位セキュリティエージェント5820は、新たなドライバ5830がホワイトリスト、ブラックリスト又はセキュリティルール5808などの他の情報に従って安全であるか、悪意あるか、又は未知であると知られているか判断するよう構成されてもよい。O/S下位セキュリティエージェント5820は、新たなドライバ5830の身元を確認するため、ディスク5824上にある新たなドライバ5830のレイアウトを評価するよう構成されてもよい。O/S下位セキュリティエージェント5820は、署名者名、シグネチャ情報又は署名日などの新たなドライバ5830の作成者により提供されたデジタルシグネチャを評価するよう構成されてもよい。O/S下位セキュリティエージェント5820は、ディスクにある新たなドライバ5830のイメージのファイルの名前を評価するよう構成されてもよい。
一実施例では、O/S下位セキュリティエージェント5820は、ロード処理を許可するが、追加的な動作モニタリングをイネーブルにすることによって、ドライバの試行されたロードを条件付きで許可するよう構成されてもよい。例えば、アプリケーション5826による新たなドライバ5830の試行されたロードのトラップによって、O/S下位セキュリティエージェント5820は、ディスク5824上のアプリケーション5826と新たなドライバ5830のイメージの何れも既知でなく、最初にロードされるドライバがオペレーティングシステム5812の重要部分に干渉する署名を示していないと判断してもよい。アクセスの偽陽性ブロックを阻止するため、O/S下位セキュリティエージェント5820は、新たなドライバ5830のロードを許可するよう構成されてもよい。しかしながら、ドライバの真の性質が確証を持ってまだ決定されていないため、O/S下位セキュリティエージェント5820は、メモリ5803のアドレス(B)における新たなドライバ5830について割り当てられたメモリスペースにおける追加的なフラグ又はトリガを割り当てるよう構成されてもよい。従って、新たなドライバ5830のコードが実行され、新たなドライバが各種アクションを実行することを試行すると、O/S下位セキュリティエージェント5820は、電子デバイス5801の悪意あるアクションを実行しないことを保証するため、新たなドライバ5830のアクションをモニタリングするよう構成されてもよい。
他の実施例では、O/S下位セキュリティエージェント5820は、ロード処理を許可するが、その後メモリ5803にあるときにドライバの追加的なセキュリティ検証を実行することによって、ドライバの試行されたロードを条件付きで許可するよう構成されてもよい。O/S下位セキュリティエージェント5820は、当該チェックが終了するまで、ドライバの実行を停止するよう構成されてもよい。メモリ5803のドライバのイメージに対してO/S下位セキュリティエージェント5820により実行されるセキュリティ検証は、ディスク5824などのストレージにあるとき、ドライバのイメージに対してO/S下位セキュリティエージェント5820により実行されるものと類似してもよい。例えば、O/S下位セキュリティエージェント5820は、アドレスレンジ(B)におけるメモリの新たなドライバ5830のイメージのコンテンツをスキャンし、イメージ又はイメージのサブセクションのコンテンツのハッシュ又はデジタルシグネチャを決定し、当該イメージをホワイトリスト又はブラックリストと比較し、メモリ5803にあるとき新たなドライバ5830のイメージのファイルレイアウト又はファイル名を評価するよう構成されてもよい。さらに、O/S下位セキュリティエージェント5820は、ディスク5824などのストレージのドライバのイメージを解析した結果とメモリ5803のドライバのイメージとを比較するよう構成されてもよい。ある相違は、それがロードされたとき、ドライバにコードが投入されたことを示すものであるかもしれない。
ドライバの試行されたアンロードにより、O/S下位セキュリティエージェント5820は、当該ドライバが重要であるか判断するため、アンロードするドライバの身元を決定するよう構成されてもよい。一実施例では、O/S下位セキュリティエージェント5820は、関連するドライバ及びエンティティとメモリ5803のアドレス(C)とメモリレンジ(B)との間のものなどの値との相関を示すメモリマップを照会するよう構成されてもよい。図58の例では、当該レンジは、古いドライバ5828により利用されるメモリスペースに対応するものであるかもしれない。アンロードされるドライバの身元に依存して、O/S下位セキュリティエージェント5820は、アンロードされるドライバの身元に固有のセキュリティルール5808を適用するよう構成されてもよい。例えば、悪意あるアンロード処理の偽陽性の特定を最小限にするため、セキュリティルール5808は、電子デバイス5801のセキュリティ又は処理に重要なものとして特定されたか、又はマルウェアの傾向があるドライバのみに削除を制限してもよい。
O/S下位セキュリティエージェント5820は、ドライバ情報の試行された直接的な操作をトラップするよう構成されてもよい。当該直接的な操作は、ドライバをアンロードするシステムファンクションの利用をマルウェアが回避することによって試行されてもよい。一実施例では、O/S下位セキュリティエージェント5820は、アドレス(C)とメモリレンジ(B)との間のメモリ5803の古いドライバ5828に対するものなど、特定のアドレスレンジ内のロード又はアンロードに関するドライバのデータ構造の試行されたアクセスをトラップするよう構成されてもよい。O/S下位セキュリティエージェント5820は、認証されたファンクションコールを介し試行が実行されたか判断するよう構成されてもよい。試行が実行されない場合、O/S下位セキュリティエージェント5820は、当該試行が疑わしいと判断するよう構成されてもよい。
O/S下位セキュリティエージェント5820は、何れか試行されたロード又はアンロードドライバ処理のソースを決定するよう構成されてもよい。O/S下位セキュリティエージェント5820は、試行のソースを考慮しながら、ロード又はアンロードのため試行されたリソースのアクセスを評価するよう構成されてもよい。例えば、試行が信頼されたソースからのものであり、処理を行うアプリケーション又はドライバがデジタル署名され、それのコードセクションのハッシュがホワイトリスト上にある場合、O/S下位セキュリティエージェント5820は、マルウェアステータスが未知であるドライバを当該ソースがロードすることを可能にするよう構成されてもよい。他の例では、試行が悪意であると判断されたソースからのものである場合、O/S下位セキュリティエージェント5820は、それがドライバをロード又はアンロードすることを許可しないよう構成されてもよい。さらなる他の例では、ロード又はアンロードのサブファンクションがアクセスされ、コール元のプロセス、アプリケーション、ドライバ又はファンクションがサブファンクションをコールするよう指定されたシステムにより提供されたファンクションでない場合、O/S下位セキュリティエージェント5820は、当該アクセスを許可しないよう構成されてもよい。さらなる他の例では、ファンクション又はサブファンクションのこーdおセクションがJMP又は同様の命令を介して直接アクセスされた場合、O/S下位セキュリティエージェント5820は、何れのメモリ位置から試行命令が行われたか判断し、当該試行がドライバをロード又はアンロードするため認証されたファンクション又はサブファンクション内からのものでない場合、当該アクセスを拒絶するよう構成されてもよい。これらすべての例では、O/S下位セキュリティエージェント5820は、電子デバイス5801のリソースの試行されたアクセスを導くコールのチェーンを決定するため、コールスタックをウォークするよう構成されてもよい。コールチェーンの各ステップにおいて、O/S下位セキュリティエージェント5820は、コールを行ったエンティティを評価するよう構成されてもよい。
さらに、O/S下位セキュリティエージェント5820は、アドミニストレータの設定に基づき試行されたロード又はアンロード処理が悪意あるか判断するよう構成されてもよい。例えば、電子デバイス5801が動作する企業のアドミニストレータは、電子デバイス5801のユーザがアドミニストレータとしてログインされない場合、ドライバがロード又はアンロードされないことを指示してもよい。
さらに、O/S下位セキュリティエージェント5820は、電子デバイス5801のリソースにアクセスするため以前にトラップされた試行に基づき、試行されたロード又はアンロード処理が悪意あるか判断するよう構成されてもよい。ロード又はアンロードの試行が電子デバイス5801上で検出された他の疑わしいアクションに関するものである決定するための何れか適切な基準が利用されてもよい。例えば、アプリケーション5826が古いドライバ5828などの重要なドライバをアンロードする試行において以前に拒絶されている場合、アプリケーション5826は疑わしいアクティビティを行ったことがあるため、O/S下位セキュリティエージェント5820は、アプリケーション5826による以降のロード又はアンロード試行を拒絶するよう構成されてもよい。
一実施例では、O/S下位セキュリティエージェント5820は、プロセッサ5802による命令の実行及びメモリ5803へのアクセスをメモリページ単位でトラップするよう構成されてもよい。当該実施例では、オペレーティングシステム5812は、電子デバイス5801上で実行するためそれに依存するエンティティに対してプロセッサ5802及びメモリ5803へのアクセスを仮想化するよう構成されてもよい。他の実施例では、O/S下位セキュリティエージェント5820は、プロセッサ5802による命令の実行及びメモリ5803へのアクセスを物理メモリアドレス単位でトラップするよう構成されてもよい。当該実施例では、メモリ5803のコンテンツが連続的に示されているが、当該コンテンツは物理メモリの別々のセクションに分散されてもよい。
ドライバをロード又はアンロードする試行が検出されると、O/S下位セキュリティエージェント5820は、何れか適切な訂正アクションを実行するよう構成されてもよい。例えば、試行を行ったエンティティが電子デバイス5801から隔離又は削除されてもよい。他の例では、ロードされたドライバは、電子デバイス5801から隔離又は削除されてもよい。
動作について、O/S下位セキュリティエージェント5820は、ドライバのロード及びアンロードをセキュアにするため、電子デバイス5801上で実行されてもよい。O/S下位セキュリティエージェント5820は、ドライバをロード及びアンロードするため電子デバイス5801の何れのリソースをガードするか決定するため、セキュリティルール5808を照会してもよい。O/S下位セキュリティエージェント5820は、その後、当該リソースの試行されたアクセスをトラップするため、1以上の制御構造においてフラグを設定してもよい。例えば、O/S下位セキュリティエージェント5820は、メモリ5803のアドレス(D)におけるSwLoadDriver()の実行、アドレス(A)のNtLoadDriver()のコードセクションのアクセス、アドレス(E)のNtLoadDriver()の実行、(B)のメモリレンジの新たなドライバについて割り当てられたスペースのアクセス、(C)と(B)との間のレンジにおける古いドライバのスペースのアクセス又はディスク5824上の新たなドライバのイメージのリードについてフラグを設定してもよい。
アプリケーション5826は、新たなドライバ5830などのドライバをロードし、及び/又は古いドライバ5828などのドライバをアンロードすることを試行するため、電子デバイス5801の1以上のリソースにアクセスしてもよい。例えば、アプリケーション5826は、新たなドライバ5830をロードするため、ZwLoadDriver()5832のインスタンスをコールしてもよい。O/S下位セキュリティエージェント5820は、アドレス(D)におけるファンクションの試行された実行をトラップし、コール元のエンティティであるアプリケーション5826の身元を決定してもよい。O/S下位セキュリティエージェント5820は、アプリケーション5826をスキャンし、それのコンテンツのデジタルハッシュ又はシグネチャを計算し、ホワイトリスト、ブラックリスト、セキュリティルール5808及び/又はプロテクションサーバを調べてアプリケーション5826の身元を決定するものであってもよい。O/S下位セキュリティエージェント5820は、アプリケーション5826が安全であると知られている、悪意あると知られている又は未知であるか判断してもよい。コールされたファンクション、アプリケーション5826の身元及びO/S内セキュリティエージェント5819から収集したコンテクスト情報に基づき、O/S下位セキュリティエージェント5820は、アプリケーション5826がZwLoadDriver()5832などのロード又はアンロードファンクションをコールすることが許可されている判断してもよい。
他の例では、アプリケーション5826は、新たなドライバ5830をロードするため、NtLoadDriver()5834のインスタンスをコールしてもよい。NtLoadDriver()5834のコールは、NtLoadDriver()5834bの直接的なコールを介し、又はNtLoadDriver()5834aのインスタンスをさらにコールするZwLoadDriver()5832などのコールによって実行されてもよい。O/S下位セキュリティエージェント5820は、アドレス(E)におけるファンクションの試行された実行をトラップし、電子デバイス5801の何れのエンティティから当該コールが行われたか判断してもよい。実行チェーンに検出される各エンティティについて、O/S下位セキュリティエージェント5820は、ZwLoadDriver()について上述した例で行われたものと同様の決定を行ってもよい。具体的には、O/S下位セキュリティエージェント5820は、サブファンクションが当該目的のためオペレーティングシステム5812により提供されたファンクションを介し適切にアクセスされたか判断してもよい。従って、O/S下位セキュリティエージェント5820は、当該コールがZwLoadDriver()から行われたと判断した場合、当該コールは認証されてもよい。しかしながら、当該オールがアプリケーション5826から直接行われ、O/S下位セキュリティエージェント5820が当該コールが認証されたチャネルを介し行われなかったと判断した場合、当該コールは、悪意あると判断されてもよい。
さらなる他の例では、O/S下位セキュリティエージェント5820は、アドレス(A)におけるNtLoadDriver()などのドライバをロード又はアンロードするためのファンクション又はサブファンクションのコードセクションに試行されたジャンプ、ブランチ又は他の実行をトラップしてもよい。O/S下位セキュリティエージェント5820は、試行されたジャンプ、ブランチ又は実行がNtLoadDriver()又は他の認証されたエンティティから行われたか判断してもよい。行われていない場合、O/S下位セキュリティエージェント5820は、試行されたジャンプ、ブランチ又は実行が悪意あると判断してもよい。当該試行されたジャンプ、ブランチ又は実行は、ファンクション又はサブファンクションをコールことを回避し、ドライバを直接ロード又はアンロードすることを試行するマルウェアの結果であるかもしれない。
さらなる他の例では、O/S下位セキュリティエージェント5820は、メモリ5803のレンジ(B)の新たなドライバ5830について割り当てられたスペースへのディスク5824からの新たなドライバ5830のイメージなど、メモリへのストレージからのドライバのイメージをロードするための試行をトラップしてもよい。ロードを許可する前、O/S下位セキュリティエージェント5820は、ディスク5824上の新たなドライバ5830のイメージのコンテンツを調べ、及び/又はコール元エンティティを特徴付けしてもよい。イメージがマルウェアを示さない場合、又はエンティティが未知であるか、又は安全であると知られる場合、O/S下位セキュリティエージェント5820は、ドライバがメモリにロードされることを許可してもよい。O/S下位セキュリティエージェント5820は、新たにロードされた新たなドライバ5830による悪意あるアクティビティに対する追加的なガードを提供するため、アドレスレンジ(B)の実行又はアクセスに追加的なフラグを設けてもよい。O/S下位セキュリティエージェント5820は、ディスク5824上で観察されたイメージに対してメモリ5803にある新たなドライバ5830のイメージを比較し、ロード処理中に投入されたコードを何れかの変更が表すか判断してもよい。当該コードの投入は、マルウェアの徴候であるかもしれない。
さらなる例では、O/S下位セキュリティエージェント5820は、メモリ5803におけるメモリレンジ(B)と位置(C)との間の古いドライバ5828について割り当てられたスペースなど、メモリにロードされたドライバのメモリスペースへのライトコマンドなどの試行されたアクセスをトラップしてもよい。O/S下位セキュリティエージェント5820は、当該アクセスをトラップし、コール元エンティティを決定し、当該エンティティが当該変更を行うためのセキュリティルール5808による権限を有しているか判断してもよい。当該試行された変更は、電子デバイス5801からドライバを手動により削除するためのマルウェアの試行の一部であってもよい。
ドライバのロード及びアンロードのためリソースにアクセスすることを試行する間におけるO/S下位セキュリティエージェント5820によりトラップされた試行されたアクションは、許可又は拒絶されてもよい。O/S下位セキュリティエージェント5820は、以降の評価に利用される試行の記録、試行したエンティティの隔離又は削除、プロテクションサーバへの試行の報告、又は他の何れか適切なアクションなどの追加的な訂正手段を実行してもよい。
オペレーティングシステム5812のレベルで実行されるアンチマルウェアソフトウェアは、当該アクティビティを実行するマルウェアがまた同一の優先度レベルに実行される可能性があるため、ドライバの悪意あるロード及びアンロードを完全に解決することはできないかもしれない。
図59A及び59Bは、電子デバイスのドライバのロード及びアンロードをセキュアにする方法5900の実施例を示す。ステップ5905において、セキュリティルールは、プロテクトされるべきドライバのロード及びアンロードに関するリソースを決定するためアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
ステップ5910において、フラグが、電子デバイス内のオペレーティングシステムのレベルの下位で制御構造に設定されてもよい。フラグは、例えば、ロード及びアンロードファンクションの試行された実行、ロードサブファンクション若しくはアンロードサブファンクションの実行、メモリにロードされるドライバのイメージへのライト、ロード実行によるストレージのドライバのイメージからのリード、及び/又はドライバロード及びアンロードファンクション及びサブファンクションのこーdおセクションのジャンプ、ブランチ又は他の直接的な実行をトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び/又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
ステップ5915において、電子デバイスは、ドライバのロード及びアンロードに関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ5902において、試行がトラップされなかった場合、プロセス5900は、ステップ5915に移行し、トラップされる試行のモニタリングを継続する。試行がトラップされた場合、当該試行は、ステップ5925において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ5925において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行うプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報が、O/S内セキュリティエージェントから取得されてもよい。ドライバをロードするための試行が行われた場合、ディスク上のドライバのイメージが評価されてもよい。
ステップ5935において、ドライバをロード又はアンロードするためのドライバのコンテンツが認証されたファンクションを用いることなく直接アクセスされたか判断されてもよい。一実施例では、コール元プロセス又はルーチンがドライバの当該部分にアクセスすることが未認証であるか判断されてもよい。コンテンツが直接アクセスされた場合、ステップ5960において、当該試行が疑わしく及び/又は悪意あると判断されてもよく、当該試行は拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。コンテンツが未認証のファンクションにより又は未認証のメモリ位置から直接アクセスされていなかった場合、ステップ5940において、試行されたロード処理に関するストレージのドライバイメージのコンテンツが評価されてもよい。イメージが悪意あるコンテンツについてスキャンされ、観察及び記録されたドライバレイアウト、計算されたドライバのハッシュ、評価されたデジタル証明書の作成者又は他の何れか適切な調査アクションが実行されてもよい。ステップ5943において、ストレージのディスクのイメージに関する情報が当該コンテンツが疑わしい及び/又は悪意あることを示しているか判断されてもよい。コンテンツが疑わしい及び/又は悪意ある場合、ステップ5960において、当該リクエストは拒絶されてもよい。そうでない場合、ステップ5945において、ロード又はアンロードサブファンクションが当該アクセスについて指定されたファンクションを利用することなく直接実行されたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該試行を行うのに未認証であるか判断されてもよい。コール元プロセスが未認証である場合、ステップ5960において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。未認証でない場合、ステップ5950において、ロードファンクション又はアンロードファンクションが認証されたエンティティによりコールされたか、又は試行されたブランチ、ジャンプ又は他の直接的な実行が認証されたエンティティによりコールされたか判断されてもよい。ファンクションが認証されたファンクションによりコールされていなかった場合、ステップ5960において、当該試行は疑わしい及び/又は悪意あると判断され、拒絶されてもよい。認証されたファンクションによりコールされていた場合、ステップ5955において、当該試行は許可されてもよい。
試行が許可され、ドライバをロードするためのものである場合、ステップ5965において、新たにロードされたドライバに割り当てられたメモリは、追加的なトラップのためマーク付けされてもよい。当該ステップは、特にドライバをロードすることを試行したエンティティが未知であった場合、又はロードされたドライバのマルウェアステータスが最終的に決定できなかった場合、実行されてもよい。従って、ドライバメモリの以降のリード、ライト又は実行はトラップされてもよい。ステップ5970において、それがメモリにロードされたとき、ドライバイメージのコンテンツは評価され、及び/又はそれがロードされる前にストレージにあったドライバのイメージの評価結果と比較されてもよい。ステップ5975において、これらの結果が異なっており、マルウェアの投入を示す場合、又は新たにロードされたドライバの評価がマルウェアを示す場合、ステップ5980において、ドライバは削除、隔離又は他の適切な訂正アクションが実行されてもよい。そうでない場合、ステップ5985において、ドライバは実行が許可されてもよい。
5960、5980マヤは5985の実行後、方法5900は、任意的にはドライバのロード及びアンロードのため電子デバイスのリソースへの試行されたアクセスについてのモニタリングを継続するため、ステップ5915に戻ってもよい。
図60は、メモリへのコードのロードをトラップ及びセキュアにするO/S下位のためのシステム6000の実施例である。システム6000は、メモリ6003などのメモリにコードをロードするための試行をトラップするため、電子デバイス6001上で動作するよう構成されるO/S下位セキュリティエージェント6020を有してもよい。一実施例では、O/S下位セキュリティエージェント6020は、カーネルモードコードをメモリ6003にロードするための試行をトラップするよう構成されてもよい。さらに、O/S下位セキュリティエージェント6020は、カーネルモードコードをメモリ6003にロードするための試行をトラップするため電子デバイス6001の何れのリソースをセキュアにするか、また当該試行が当該試行と当該試行を実行するのに関係するエンティティとに基づき認証されているか判断するため、1以上のセキュリティルール6008を利用するよう構成されてもよい。O/S下位セキュリティエージェント6020は、当該試行を許可若しくは拒絶するか、又は他の訂正アクションを実行するよう構成されてもよい。
電子デバイス6001は、図1の電子デバイス103、図2の電子デバイス204、図4の電子デバイス404、図7の電子デバイス701、図9の電子デバイス901、図12の電子デバイス1201及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス6001は、メモリ6003などのメモリに接続される1以上のプロセッサ6002を有してもよい。プロセッサ6002は、図2のプロセッサ208、図4のプロセッサ408、図7のプロセッサ702、図9のプロセッサ1202、図12のプロセッサ1202及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ6003は、図2のメモリ206、図4のメモリ406、図7のメモリ703、図9のメモリ903、図12の物理メモリ1203若しくはバーチャルメモリ1204及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス6001は、1以上のセキュリティルール6021に接続されるO/S内セキュリティエージェント6019を有するか、又は通信接続されるオペレーティングシステム6012を有してもよい。O/S内セキュリティエージェント6019は、O/S下位セキュリティエージェント6020に通信接続されてもよい。オペレーティングシステム6012は、図1のオペレーティングシステム112、図2のオペレーティングシステム212、図4のオペレーティングシステム412、図7のオペレーティングシステム713、図9のオペレーティングシステム913、図12のオペレーティングシステム1213及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。O/S内セキュリティエージェント6019は、図1のO/S内セキュリティエージェント218、図4のO/S内セキュリティエージェント418、図7のO/S内セキュリティエージェント719、図9のO/S内セキュリティエージェント919、図12のO/S内セキュリティエージェント1219及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント6020は、図1のO/Sトラップエージェント104若しくはトリガイベントハンドラ108、図2のSVMM216若しくはSVMMセキュリティエージェント217、図4のファームウェアセキュリティエージェント440、442、O/S下位エージェント450若しくはPCファームウェアセキュリティエージェント444、図5のファームウェアセキュリティエージェント516、図7のマイクロコードセキュリティエージェント708若しくはO/S下位エージェント712、図9のO/S下位トラップエージェント
920若しくはトリガイベントハンドラ922、図12のO/S下位セキュリティエージェント1220及び/又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
セキュリティエージェント6008は、図1のセキュリティルール114、図2のセキュリティルール222、図4のセキュリティルール434、436、438、図5のセキュリティルール518、図7のセキュリティルール707、723、図9のセキュリティルール908、図12のセキュリティルール1208及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール6021は、図2のセキュリティルール220、図4のセキュリティルール420、図7のセキュリティルール721、図9のセキュリティルール921、図12のセキュリティルール1221及び/又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
O/S下位セキュリティエージェント6020及び/又はO/S内セキュリティエージェント6019は、メモリマップ6010に通信接続されてもよい。メモリマップ6010は、メモリ6003におけるオペレーティングシステム6012の各種エンティティのページ又はアドレスの位置のマッピングを含むものであってもよい。O/S下位セキュリティエージェント6020及び/又はO/S内セキュリティエージェント6019は、メモリ6003における所与のメモリ位置又はページについて、電子デバイス6020の何れのプロセス、DLL(Dynamically Linked Library)、アプリケーション、モジュール又は他のエンティティが当該位置又はページに関連するか決定するため、メモリマップ6010にアクセスするよう構成されてもよい。O/S下位セキュリティエージェント6020及び/又はO/S内セキュリティエージェント6019は、例えば、メモリ6003の何れの部分をトラップするか、又はメモリ6003のトラップされたアクセス若しくはファンクションのトラップされた実行に応答して、電子デバイス6001の何れのエンティティが当該試行を発信したか判断するため、当該情報を利用するよう構成されてもよい。さらに、O/S下位セキュリティエージェント6020は、追加的なトラップされた試行とメモリ6003の領域とを悪意あるとして関連付けるため、メモリマップ6010を利用してもよく、ここで、メモリ6003にコードをロードするための以前の試行が悪意あると判断され、メモリ6003の領域に関連付けされていた。
ストレージ6044は、電子デバイス6001に通信接続されるか、又は電子デバイス6001内にあってもよい。ストレージ6044は、ハードディスク、フラッシュドライブ、RAMディスク、コンパクトディスク、DVDメディアドライブ、又は他の何れか適切なメモリを含むマスストレージのための何れか適切な媒体を含むものであってもよい。ストレージ6044は、PCI、SATA、USB又はFirewireなどの何れか適切なインタフェースを介し電sでバイス6001に通信接続されてもよい。
電子デバイス6001は、メモリ6003にコードをロードするため、電子デバイス6001のリソースにアクセスすることを試行するアプリケーション6026又はドライバ6028などの1以上のアプリケーション、ドライバ又は他のエンティティを含むものであってもよい。アプリケーション6026又はドライバ6028は、何れかのプロセス、アプリケーション、プログラム又はドライバを含むものであってもよい。アプリケーション6026又はドライバ6028は、直接的に又は他のルーチンに対するコールを介し、例えば、リード、ライト又は実行命令によりメモリ6003又はストレージ6044の一部にアクセスするなどによって、コードをメモリ6003にロードすることを試行してもよい。O/S下位セキュリティエージェント6020は、試行されたコール若しくはアクセスをインターセプトし、当該試行がマルウェアを示すか判断するため、O/S内セキュリティエージェント6019からのセキュリティルール6008及び/又はコンテクスト情報を照会し、何れか適切な訂正アクションを実行するよう構成されてもよい。O/S下位セキュリティエージェント6020は、メモリ6003若しくはストレージ6044へのアクセス及び/又はプロセッサ6002の利用をトラップすることによって、当該インターセプトを実行するよう構成されてもよい。O/S下位セキュリティエージェント6020は、セキュリティルール6008及び/又はメモリマップ6010にアクセスし、メモリ6003若しくはストレージ6044の何れか試行されたアクセス及び/又はプロセッサ6002の何れか試行された利用がトラップされるか決定するよう構成されてもよい。O/S下位セキュリティエージェント6020は、トラップ対象のアクションに対応する制御構造のフラグを設定するよう構成されてもよい。
一実施例では、アプリケーション6026又はドライバ6028などのエンティティは、メモリ6003がオペレーティングシステム6012により仮想化されたメモリページを介しメモリ6003にコードをロードすることに関連するメモリ6003の部分にアクセスすることを試行してもよい。当該実施例では、O/S下位セキュリティエージェント6020は、メモリページ単位でメモリ6003の試行されたアクセス又は実行をトラップするよう構成されてもよい。他の実施例では、アプリケーション6026又はドライバ6028は、メモリへのコードのロードに関するメモリ6003の物理部分にアクセスすることを試行してもよい。当該実施例では、O/S下位セキュリティエージェント6020は、メモリアドレス単位でメモリ6003の試行されたアクセス又は実行をトラップするよう構成されてもよい。
メモリ6003は、メモリ603にコードをロードするためのアクションに関する1以上のコンテンツ又は位置を含むものであってもよい。O/S下位セキュリティエージェント6020は、当該コンテンツ又は位置へのアクセスをトラップするよう構成されてもよい。以下は、例示的な具体例として与えられる。メモリ6003は、メモリ6003内の他のページ又はアドレスレンジのパーミッション6032を含むページテーブルディレクトリ6030をホストするアドレスのページ又はレンジを含むものであってもよい。例えば、パーミッション6032は、メモリ位置(A)、(B)、(C)、(D)及び(E)におけるコンテンツをリード、ライト及び/又は実行するためのパーミッションの組み合わせについて設定を含むものであってもよい。メモリ6003は、例えば、アプリケーション6026又はドライバ6028などにより割り当てされてもよい位置(A)においてエンプティスペース6034を有してもよい。メモリ6003は、メモリ位置(E)におけるドライバコードセクション6036などの電子デバイス6001のエンティティ又はファンクションのコードセクションを有してもよい。メモリ6003は、オペレーティングシステム6012がメモリ位置(B)における未割当てスペース6038などの何れかのエンティティに関するものである限り、未割当てなメモリのセクション又はレンジを含むものであってもよい。メモリ6003は、メモリ位置(C)における信頼されていないドライバ6040のスペースなど、安全であるか又は悪意あるかというマルウェアステータスが未知であるドライバのメモリのセクション又はレンジを含むものであってもよい。メモリ6003は、ノンプレゼント(non−present)コンテンツ6042を有するメモリのセクション又はレンジを含むものであってもよい。メモリ6003におけるこのようなノンプレゼントコンテンツ6042は、例えば、ディスクにスワップされたコンテンツを有するメモリページなどを含み、例えば、ストレージ6044上の1以上のスワップされたファイル6046におけるスワップされたコンテンツ6048などにあってもよい。
ストレージ6044は、メモリ6003にコードをロードするためのアクションに関する1以上のコンテンツ又は位置を含むものであってもよい。以下は、例示的な具体例として与えられる。ストレージ6044は、スワップされたコンテンツ6048が格納されるスワップファイル6046を含むものであってもよい。スワップされたコンテンツ6048は、メモリ6003内に存在するよう電子デバイス6001のエンティティに見えるが、実際にはストレージ6044に格納されている。ストレージ6044は、アプリケーションイメージ6050を格納するセクション又はアドレスを含むものであってもよい。アプリケーションイメージ6050は、アプリケーション6026又はドライバ6028などの電子デバイス6001上で実行されるアプリケーション、ドライバ、DLL又は他のエンティティのイメージを含むものであってもよい。
O/S下位セキュリティエージェント6020及び/又はO/S内セキュリティエージェント6019は、マルウェアについてメモリ6003及び/又はストレージ6044の一部をスキャンするよう構成されてもよい。当該スキャンは、コンテンツがセキュリティルール6008、6021により定義されるように、悪意あると判断されたコンテンツと同一であるか判断するため、メモリ6003及び/又はストレージ6044内のコンテンツのデジタルシグネチャ、チェックサム又はハッシュを計算することを含むものであってもよい。しかしながら、あるマルウェアは、実行対象のメモリ6003に自ら又は他の悪意あるコードを挿入することによって、電子デバイス6001を攻撃することを試みるかもしれない。メモリ6003にコードをロードするための試行をトラップすることによって、O/S下位セキュリティエージェント6020は、例えば、ドライバファイル、メモリのイメージ、at亜はコードを格納する他の標準的な方法などににより初期的に配置されていないコードをトラップ、スキャン又はセキュアにするよう構成されてもよい。当該コードをドライバファイル、メモリのイメージ又はコードを格納する他の標準的な方法により初期的に配置しないことによって、マルウェアは、マルウェアについてメモリ6003及び/又はストレージ6044の一部をスキャンするため、O/S下位セキュリティエージェント6020及び/又はO/S内セキュリティエージェント6019について以前に記述された労力を回避することを試行するかもしれない。さらに、メモリ6003にコードを投入する変則的な方法は、投入されたコンテンツ又は当該投入を試行したエンティティが悪意あるものとしてすでに知られているかに関わらず、当該投入を試行したエンティティが悪意あるものであるという徴候であってもよい。
O/S下位セキュリティエージェント6020は、オペレーティングシステムローダの使用など、メモリ6003にコードをロードするための安全又は標準的な方法を決定するよう構成されてもよい。このような安全又は標準的な方法は、オペレーティングシステム6012により実行されるロジック又はステップが既知であるように、ベンチマーク付け又はマッピングされてもよい。メモリ6003にコードをロードするための試行をトラップすると、O/S下位セキュリティエージェント6020は、当該試行がコードをロードするための既知の方法と一致するか判断してもよい。例えば、当該試行がメモリのすでに割り当てられた部分にコードをロードすることに関するものであり、メモリへの直接的なライトによりオペレーティングシステムローダをバイパスすることによりこれを実行することを試行した場合、当該試行は悪意あるものと判断されてもよい。
プロセッサ6002による実行のためマルウェアがコードをメモリ6003に投入することを停止するため、O/S下位セキュリティエージェント6020は、実行のためメモリ6003にコードをロードする通常の方法を回避するコードを投入するのに要求される1以上の試行されたステップをトラップするよう構成されてもよい。実行用のコードをメモリ6003にロードする通常の方法は、例えば、ストレージ6044などから実行対象のアプリケーション、ドライバ又は他のエンティティのイメージを読み、当該イメージからのコードをメモリ6003に配置し、ロードされたコードを実行するため、オペレーティングシステム6012のオペレーティングシステムローダなどを利用することを含むものであってもよい。O/S下位セキュリティエージェント6020は、例えば、変則的な方法によりこれらのステップの何れかを実行し、及び/又はオペレーティングシステムローダの使用を回避するなど実行用のコードをロードする試行をトラップするよう構成されてもよい。当該変則的な方法は、セキュリティルール6008により定義されてもよい。当該変則的な方法は、認証されたアプリケーションイメージ6050のファイルから当初には読まれず、又はメモリ6003の等価なアプリケーションイメージに配置されるコードの試行されたロードをトラップすることを含むものであってもよい。
一実施例では、O/S下位セキュリティエージェント6020は、メモリ6003へのコードの試行されたライトとコードの試行された以降の実行とをトラップするよう構成されてもよい。例えば、O/S下位セキュリティエージェント6020は、新たに割り当てられたスペース6034の一部であってもよいアドレス(A)における試行されたライトをトラップするよう構成されてもよい。当該試行されたライト自体はマルウェアを示さず、このため、当該試行は以降の参照のため記録及び利用されてもよい。書き込まれたコンテンツは、スキャン、記録又は評価されてもよい。O/S下位セキュリティエージェント6020は、アドレス(A)に書き込まれたコードの以降の試行された実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、試行されたコンテンツの実行が以前のトラップされたコンテンツのロードに続くため、コンテンツのロードは、メモリ6003にコードをロードすることを含むと判断するよう構成されてもよい。O/S下位セキュリティエージェント6020は、試行のソース、試行のターゲット、ロードされるコンテンツ、O/S内セキュリティエージェント6019からの情報又は他の何れか適切な情報などのコンテクスト情報から、コードのロードがマルウェアを示すか判断するよう構成されてもよい。例えば、コードがメモリにロードされ、実行が試行されたと検出すると、O/S下位セキュリティエージェント6020は、ロードされたコンテンツをスキャンし、コードがマルウェアであると知られているか判断するよう構成されてもよい。他の例では、ロード及びコードの試行された実行を検出すると、O/S下位セキュリティエージェント6020は、当該コードがオペレーティングシステムローダなどのオペレーティングシステム6012の通常のファンクションを利用してロードされたか判断するよう構成されてもよい。コードが未知のドライバからの直接的なライトなどの他の非標準的な方法を用いてロードされた場合、O/S下位セキュリティエージェント6020は、試行されたコードのロードが疑わしいと判断し、コードの実行をブロックするよう構成されてもよい。O/S下位セキュリティエージェント6020がメモリ6103におけるコードの試行されたロード及び実行をトラップし、当該試行が疑わしい又は悪意あると判断する方法の他の具体例が、後述される。
一実施例では、O/S下位セキュリティエージェント6020は、ストレージ6044からのアプリケーションイメージ6050の試行されたリードと、部分6034などのメモリ6003の新たなセクションへのコンテンツの以降のライト及び実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、ディスクにあるイメージとメモリにあるイメージとを比較するよう構成されてもよい。これら2つのイメージが異なる場合、コードセクションのシグネチャやファイルレイアウトなどの相違は、コードがメモリ6003にあるイメージに投入されたことを示すものである可能性がある。当該投入は、悪意あると判断されてもよい。しかしながら、O/S下位セキュリティエージェント6020は、ディスクからアプリケーションイメージ6050の試行されたリードをトラップせず、当該イメージとメモリ6003にロードされるイメージとを比較することができない可能性がある。
図61は、当該投入されたコードがどのようにアプリケーションにより収集され、実行のためメモリ6003内に配置されるかの具体例を示す。アプリケーション6102は、図60のアプリケーション6026又はドライバ6028により実現されてもよい。O/S下位セキュリティエージェント6120は、図60のO/S下位セキュリティエージェント6020により実現されてもよい。メモリ6103は、図60のメモリ6003により実現されてもよい。メモリ6103は、アプリケーション6130及びドライバ6132のメモリスペースを有してもよい。各メモリスペース6130、6132は、各自のエンティティのためのこーdおセクション6138、6140のスペースを有してもよい。アプリケーション6102は、マルウェアサーバ6104からコードをダウンロードしてもよい。マルウェアサーバ6104は、ウェブサイト、ネットワーク上の他の電子デバイス又はアプリケーション6102に通信接続される他の何れかのエンティティであってもよい。アプリケーション6102は、当該コードをアプリケーション6130自体のコードセクション6138、6140に又はドライバ6132などの他のエンティティに書き込んでもよい。O/S下位セキュリティエージェント6120は、ここに与えられる各種技術に従って当該試行をインターセプト及び評価するよう構成されてもよい。例えば、O/S下位セキュリティエージェント6120は、試行されたライト及び実行をトラップし、ライト試行のコンテンツを評価し、アプリケーション6102の身元を評価し、ターゲットメモリ位置を評価するよう構成されてもよい。
図62A及び62Bは、投入されるコードがどのようにメモリ6003内に配置するためアプリケーションにより収集されるかの他の例を示す。アプリケーション1 6202及びアプリケーション2 6204は、図60のアプリケーション6026又はドライバ6028によって、又は他の同様のエンティティによって実現されてもよい。O/S下位セキュリティエージェント6220は、図60のO/S下位セキュリティエージェント6020により実現されてもよい。メモリ6203は、図60のメモリ6003により実現されてもよい。ディスク6244は、図60のストレージ6044により実現されてもよい。
図62Aは、ディスク6244からメモリ6203へのアプリケーション1などのアプリケーションのイメージ6252のロードの具体例を示す。オペレーティングシステムローダは、アプリケーション1 6250のディスクイメージ6250をリードし、メモリ6203のアプリケーション1のイメージ6234にこれを書き込むよう構成されてもよい。アプリケーション1のディスクイメージ6250は、暗号化されたコンテンツ6236としてメモリ6203のアプリケーション1のイメージ6234にコピー及び維持される暗号化されたコンテンツ6252を有してもよい。O/S下位セキュリティエージェント6220は、オペレーティングシステムローダによりコールされた試行されたリード及びライトをトラップしてもよい。しかしながら、一実施例では、O/S下位セキュリティエージェント6220は、2つのイメージが異なっておらず、アクションはオペレーティングシステムの通常の機構により実行されたため、悪意あるアクティビティがイメージのロードに関係することを疑う理由はない。
図62Bは、アプリケーションのイメージがメモリにロードされた後に実行される可能性のあるアクションの具体例を示す。アプリケーション2 6204は。電子デバイス上で動作してもよい。アプリケーション1 6202は、電子デバイス上で動作し、暗号化されたコンテンツ6236を解読するための命令を送信してもよい。当該コマンドは、暗号化されたコンテンツ6236を解読し、解読されたコンテンツ6238aがアプリケーション1のイメージ6234のメモリスペースに書き込まれ、及び/又は解読されたコンテンツ6238bとしてアプリケーション2のイメージ6240のメモリスペースに書き込まれてもよい。従って、アプリケーション1 6202は、自らのコードセクション又は他のエンティティのコードセクションにコードを投入することを試行してもよい。アプリケーション1 6202は、以前に暗号化されたコンテンツ6236上の位置又はアプリケーション1のイメージ6234の他のメモリ部分に解読されたコンテンツ6238aを書き込むようにしてもよい。解読されたコンテンツ6238からのコードは、悪意あるかもしれない。従って、O/S下位セキュリティエージェント6220は、ここに与えられる各種教示に従って、解読されたコンテンツ6238などのコードの試行されたライト及び実行をトラップして評価するよう構成されてもよい。例えば、O/S下位セキュリティエージェント6220は、試行されたライト及び実行をインターセプトし、ライト試行のコンテンツを評価し、アプリケーション6102の身元を評価し、ターゲットメモリ値を評価するよう構成されてもよい。
図60に戻って、O/S下位セキュリティエージェント6020は、電子デバイス6001の既知のエントリの位置を含むメモリ6003の部分のレイアウトを決定してもよい。一実施例では、当該レイアウトは、信頼されたドライバ(及びそれらのコード及びデータセクション)及び他のドライバ(及びそれらのコード及びデータセクション)と共に、オペレーティングシステム6012のカーネルイメージ及びそれのコンポーネントを含むとき、カーネルバーチャルメモリのレイアウトを有してもよい。当該レイアウトは、メモリマップ6010に格納されてもよい。O/S下位セキュリティエージェント6020は、オペレーティングシステム6012のスタートアップ及び処理をプロファイルすることによって、デジタル証明書をスキャン又は検証することによりオペレーティングシステム6012のコンポーネント及び信頼されたドライバを検証することによって、又は他の何れか適切な方法によって、セキュリティルール6008又はプロテクションサーバからのレイアウトを決定してもよい。O/S下位セキュリティエージェント6020はまた、メモリ6003の何れの部分が電子デバイス6001のエンティティの何れにも割り当てられないか決定してもよい。カーネルメモリから物理メモリへのマッピングは、カーネルメモリの所与のページについて関連する物理メモリアドレスを記述したメモリマップ6010に含まれてもよい。メモリマップ6010はまた、メモリの何れの部分が割り当てられたか、割り当てられていないか、ノンプレゼントコンテンツに関連するか、又はファイルをスワップするかの説明を含むものであってもよい。オペレーティングシステム6012は、オペレーティングシステム6012により管理されるバーチャルページを記述したPage Frame Number Database(Pfn)などのデータベースに情報を有してもよい。当該データベースの探索は、割り当てられた、マッピングされた、ノンプレゼントコンテンツを含むなどのメモリページを決定するのに利用されてもよい。
メモリ6003のレイアウトが既知になると、O/S下位セキュリティエージェント6020は、未割当てエリアにおけるメモリの割り当て及び実行をモニタリングするよう構成されてもよい。O/S下位セキュリティエージェント6020は、当該試行された処理をトラップし、書き込み対象のオンテンツをスキャンするよう構成されてもよい。当該処理のステップは、エンティティがライトパーミッションがイネーブルなメモリ6003の部分を割り当て、当該メモリ6003の部分に新たなコンテンツを書き込み、メモリ6003の部分のパーミッションを実行をイネーブルにするよう変更し、実行のためメモリ6003の部分をコールすることを含むものであってもよい。O/S下位セキュリティエージェント6020は、これらのステップをトラップし、当該ステップがマルウェアを示すか判断する前に試行された実行を停止するよう構成されてもよい。例えば、O/S下位セキュリティエージェント6020は、位置(A)におけるメモリ6003の未割当て部分6034の試行された割り当て、部分6034にコンテンツを書き込むための試行、位置(A)のパーミッションをライトからライト/実行に変更するためのページテーブルディレクトリ6030のパーミッション6032へのライト、及び位置(A)におけるパーミッションの試行された実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、
・MmAllocateContiguousMemory
・MmAllocateContiguousMemorySpecifyCache
・MmAllocateSpecialPool
・MmAllocateContiguousMemorySpecifyCacheNode
・MmAllocateIndependentPages
・MmAllocateMappingAddress
・MmAllocateNonCachedMemory
・MmAllocatePagesForMdl又は
・MmAllocatePagesForMdlEx
のWindowsTMファンクションなどのメモリを割り当てるのに適した何れかのファンクションをトラップするよう構成されてもよい。
O/S下位セキュリティエージェント6020は、メモリの試行された割当てをトラップするためこれらのファンクションに対応して、メモリ6003のページの実行又はメモリ6003の物理アドレスの実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、ファンクションのコール元を決定し、既知のマルウェアについてコール元のコンテンツをスキャンする。例えば、割当てのための試行が既知のセキュアな割り当てファンクションのサブファンクションにより行われた場合、当該試行は、ファンクションに関するセキュリティを回避することを試行するマルウェアを示すかもしれない。O/S下位セキュリティエージェント6020は、以降の参照のため割り当てられたメモリ部分をメモリマップ6010に追加するよう構成されてもよい。O/S下位セキュリティエージェント6020は、コール元などのコンテクスト情報と共に、試行されたメモリ割当てを記録するよう構成されてもよい。
O/S下位セキュリティエージェント6020は、メモリにコードを書き込むのに適した何れかのファンクション又は方法をトラップするよう構成されてもよい。アプリケーション6026又はドライバ6028などのエンティティは、オペレーティングシステム6012により提供されるファンクション又は方法を利用して、コードをメモリ6003に入力してもよい。しかしながら、これらのエンティティは、指定されたファンクションを利用することなく行われたメモリ6003にコードを入力するための試行をトラップする場合、O/S下位セキュリティエージェント6020は、メモリ6003にコードをロードするための試行が疑わしいと判断するよう構成されてもよい。
O/S下位セキュリティエージェント6020は、メモリ位置のパーミッションを変更するのに適した何れかのファンクション又は方法をトラップするよう構成されてもよい。例えば、メモリページパーミッションを変更するため、
・MmProtectMdlSystemAddress
・NtProtectVirtualMemory
・MiGetPageProtection
・MiQueryAddressState
・MiSetProtectionOnSection
・MiGetpageProtection
・MiProtectPrivateMemory
などのWindowsTMファンクションの1つがコールされてもよい。
従って、O/S下位セキュリティエージェント6020は、メモリにおける各自の位置の実行をモニタリングすることによって、当該ファンクションの何れかの実行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、ページテーブルディレクトリ6030及びそれに含まれるそれのパーミッション6032への試行されたライトをトラップするよう構成されてもよい。パーミッション6032に対する試行されたライトがトラップされる一方、パーミッション6032を変更するための認証されたファンクション(上述されたものなど)の実行はトラップされない場合、O/S下位セキュリティエージェント6020は、ライトの試行がマルウェアを示していると判断するよう構成されてもよい。当該試行は、対応する位置がオペレーティングシステム6012のファンクションに関するセキュリティを受けることなく実行されるか、又は悪意あるコンテンツにより書き込まれるように、マルウェアがメモリ位置に対するパーミッション(リードからライト又は実行など)についてページテーブルディレクトリのエントリを直接編集した結果であるかもしれない。
メモリへの試行されたライトとその後の試行された実行とがトラップされ、O/S下位セキュリティエージェント6020が、当該試行が位置(B)の未割当てメモリ部分6038などのメモリの未割当て部分に対して行われたと判断した場合、O/S下位セキュリティエージェント6020は、当該試行が悪意あると判断するよう構成されてもよい。O/S下位セキュリティエージェント6020は、コンテンツをライト及び実行するための試行が位置(B)の未割当て部分6038などの未割当てスペースに対して行われたか判断するよう構成されてもよい。O/S下位セキュリティエージェント6020は、メモリマップ6010にアクセスし、又は割り当てファンクションの以前にトラップされた実行を参照することによって、当該判定を行うよう構成されてもよい。一実施例では、試行されたライト及び実行が、未割当てであると判断されるメモリ6003において行われる場合、マルウェアは、オペレーティングシステム6012により定義されたルーチンを利用することなくメモリを割り当てた可能性がある。当該実施例では、O/S下位セキュリティエージェント6020は、実行のため当該試行がメモリ6003にコードをロードするための悪意ある試行であると判断してもよい。他の実施例では、試行されたライト及び実行が、メモリマップ6010に示されるような電子デバイス6001のエンティティにすでに割り当てられたメモリ6003において行われた場合、O/S下位セキュリティエージェント6020は、命令のコール元が他のエンティティにコードを書き込むためのパーミッションを有しているか又は認証されているか調べるよう構成されてもよい。パーミッションを有していない場合、当該試行は、悪意ある可能性のある他のファンクションに属するメモリ6003の部分にコードを投入することを試みるマルウェアを示す可能性がある。
O/S下位セキュリティエージェント6020は、位置(B)における部分6038などの未割当てとして指定されるメモリ6003の部分における試行されたライト、リード又は実行、又はパーミッション6032における未割当て部分6038のパーミッションを変更する試行をトラップするよう構成されてもよい。オペレーティングシステム6012の認証されたエンティティによりコールされる認証された割り当てファンクション以外のエンティティから発生した試行は、コール元のマルウェアステータスが未知であるか否かに関係なく、悪意あると判断されてもよい。メモリ位置が試行されたライトを受ける場合、当該試行はコードがメモリにロードされたこの徴候であると判断されてもよい。メモリ位置が試行された実行を受けた場合、当該試行は、新たにロードされたコードが実行されることの徴候であると判断されてもよい。
O/S下位セキュリティエージェント6020は、信頼されていないドライバ6040に関するメモリ位置(C)についてのパーミッションの変更6032又は信頼されていないドライバ6040による試行されたライト若しくは実行をトラップするよう構成されてもよい。信頼されないドライバ6040は、マルウェアステータスが未知であるドライバを有してもよい。信頼されないドライバ6040のシグネチャ又はハッシュについてブラックリスト又はホワイトリストにエントリがないかもしれない。信頼されないドライバ6040は、システム6000又は同様のシステムが遭遇していない安全で新たなドライバであるかもしれず、又はシステム6000が送信しないマルウェアのパーミュテーション(permutation)であるかもしれない。信頼されないドライバ6040の試行されたライト又は実行がトラップされると、O/S下位セキュリティエージェント6020は、当該トラップされた処理を評価するため、追加的なセキュリティルール6008を適用するよう構成されてもよい。特に、コードをライトして以降に実行する試行はトラップされ、オペレーティングシステム6012のカーネルドライバ又は既知のドライバなどの既知の要素に対して当該処理が試行されているか判断するため、O/S下位セキュリティエージェント6020によって詳細に調べられてもよい。試行されている場合、当該試行はブロックされ、信頼されないドライバ6040はマルウェアであると判断されてもよい。
O/S下位セキュリティエージェント6020は、アドレス(D)における部分6042など、ノンプレゼントコンテンツを有するメモリ6003の部分の試行されたライト又は実行をトラップするよう構成されてもよい。メモリ6003の一部6042は、バーチャルメモリ割り当てに関して割り当てられるが、部分6042のコンテンツは、実際にはメモリ6003の物理メモリに存在しなくてもよい。代わりに、当該部分6042のコンテンツは、ストレージ6044などの何れかにあってもよい。ノンプレゼントコンテンツは、仮想化メモリ6003がメモリ6003の物理メモリにおいて他の要素のための余地を作るのにディスクに移されるページスワップ処理の一部として、ストレージ6044のスワップされたコンテンツ6048を含むスワップファイル6046にあってもよい。オペレーティングシステム6012は、当該スワップ処理を実行するよう構成されてもよく、スワップされたコンテンツ6048を必要なときに物理メモリにリロードするよう構成されてもよい。従って、部分6042はノンプレゼントコンテンツを含む一方、部分6042の試行されたライト又は実行は、O/S下位セキュリティエージェント6020によりトラップされてもよい。当該試行されたライトがページスワップを実行したオペレーティングシステム6012以外のエンティティから発信された場合、当該ライトは悪意ある可能性がある。例えば、オペレーティングシステム6012のバーチャルメモリマネージャから発信されていない部分6042に試行されたライトは拒絶されてもよい。さらに、部分6042の試行された実行が、それのコンテンツがノンプレゼントである間に行われた場合、当該試行された実行は悪意である可能性がある。
さらに、ストレージ6044上のスワップされたファイル6046のスワップされたコンテンツ6048へのライトなどの試行されたアクセスは、O/S下位セキュリティエージェント6020によりトラップされてもよい。当該試行されたアクセスが認証されたエンティティ以外のエンティティから発信された場合、当該ライトは悪意あるものであるかもしれない。例えば、オペレーティングシステム6012のバーチャルメモリマネージャから発信されていないスワップされたコンテンツ6048に試行されたライトは拒絶され、マルウェアを示すと判断されてもよい。当該トラップは、例えば、ディスクライトファンクションをトラップすることによって、又はストレージ6044における入出力コマンドをトラップすることによって実行されてもよい。ストレージ6044の入出力コマンドのトラップは、例えば、ストレージ6044上で実行されるファームウェアセキュリティエージェントなどにより実行されてもよい。
図63は、コードを投入するためスワップされたコンテンツに対する悪意ある攻撃のさらなる例を示す。カーネルバーチャルメモリ6304は、仮想化されたときのメモリ6003の部分を表す。カーネルバーチャルメモリ6304のコンテンツは、それらがある位置にマッピングされてもよい。当該コンテンツは、例えば、物理メモリ6302及び/又はディスク6344などにマッピングされてもよい。物理メモリ6302は、それが電子デバイス6001に物理的にあるときのメモリ6003の物理的レイアウトを示すものであってもよい。ディスク6344は、図60のストレージ6044により実現されてもよい。カーネルバーチャルメモリ6304の部分6306、6310、6314、6318は未割当てであり、バーチャルメモリのユーザに利用可能であってもよい。カーネルバーチャルメモリ6304の他の部分は、オペレーティングシステムカーネル6308と、ドライバ1 6312、ドライバ2 6316及びドライバ3 6320などのドライバとのための部分を含むものであってもよい。カーネルバーチャルメモリ6304における割り当てられたメモリの部分は、物理メモリ6302及び/又はディスク6344の各種の不連続な部分にマッピングされてもよい。ページ6322、6324及び6326を含むドライバ3 6320に含まれる一例となるページが示される。ドライバ3のページ0に対応するページ6326は、ディスク6344上のスワップファイル6350にマッピングされてもよい。ドライバ3のページ1に対応するページ6324は、アドレス(A)上にあってアドレス(B)に続く物理メモリ6302におけるアドレスにマッピングされてもよい。ドライバ3のページ2に対応するページ6322は、ディスク6344のスワップファイル6348にマッピングされてもよい。
スワップファイル処理が実行されると、XYZであるかもしれないドライバ3のページ0のコンテンツが、スワップファイル6350に書き込まれてもよい。ドライバ3のページ0のコンテンツは、ノンプレゼントであってもよい。その間、マルウェア6352はスワップファイル6350のコンテンツをPDQに書き換えてもよい。従って、スワップファイル処理がリバースされ、コンテンツがディスク6344及びスワップファイル6350から読まれると、新たなコードがカーネルバーチャルメモリ6304にロードされる。また、ページ6324などの他のページについて値を物理メモリ6302に直接書き込むためのマルウェア6352のアクションが可能であるかもしれない。
図60に戻って、O/S下位セキュリティエージェント6020は、ノンプレゼントコンテンツ6042を有するページに関するスワップファイル6046にコードをロードすることを阻止するよう構成されてもよい。O/S下位セキュリティエージェント6020は、メモリ6003からスワップファイル6046に対して指向されたライト処理をトラップするか、又はその反対を実行し、コンテンツのスナップショット、シグネチャ、暗号化ハッシュ、チェックサム又は他の表示を決定するよう構成されてもよい。O/S下位セキュリティエージェント6020は、ストレージ6044上の位置に対応するフラグを設定することによって、又はメモリページをスワップするためのファンクション若しくはルーチンに応答して、試行をトラップするよう構成されてもよい。O/S下位セキュリティエージェント6020は、スワップファイル6046から試行されたリード処理をトラップし、及び/又はノンプレゼントコンテンツ6042についてメモリ部分にライトバックするよう構成されてもよい。O/S下位セキュリティエージェント6020は、当該タスクを実行するため、スワップファンクションの試行された実行をトラップするよう構成されてもよい。当該ファンクションは、例えば、IoPageRead()、IoAsynchronousPageWrite()又はIoAsynchronousPageWrite()などを含むか、又はコールしてもよい。O/S下位セキュリティエージェント6020は、スワップファイル6046からリードされ、及び/又はノンプレゼントコンテンツ6042にライトされるコンテンツのスナップショット、シグネチャ、暗号化ハッシュ、チェックサム又は他の表示を決定し、コンテンツが変更されているか判断するよう構成されてもよい。変更されている場合、O/S下位セキュリティエージェント6020は、スワップファイル6046のコンテンツがコードとと共に投入されていると判断するよう構成されてもよい。O/S下位セキュリティエージェント6020は、新たなコンテンツの実行をブロックし、他の何れかの訂正手段を実行するよう構成されてもよい。
O/S下位セキュリティエージェント6020は、メモリ6003への特定のライトが実行パーミッションを与えるためにコンテンツのメモリ位置のパーミッション6032を変更するための以降の試行をトラップすることによるコードのロードであると判断するよう構成されてもよい。さらに、O/S下位セキュリティエージェント6020は、メモリ6003に書き込み、その後にメモリが実行されることを可能にするようパーミッション6032への書き込みを試行するエンティティを決定するよう構成されてもよい。当該エンティティは、典型的には、オペレーティングシステムローダなどの既知の信頼されたエンティティであってもよい。従って、O/S下位セキュリティエージェント6020は、メモリ6003にコードをロードするための試行がオペレーティングシステムローダなどの既知の信頼されたエンティティにより生成されたか判断するよう構成されてもよい。生成されていない場合、O/S下位セキュリティエージェント6020は、当該試行を拒絶し、当該試行及び/又はエンティティがマルウェアを示すと判断するよう構成されてもよい。
O/S下位セキュリティエージェント6020は、メモリ6003から正当なファンクションコードをコピーし、新たに割り当てられた部分6034などの新たな位置にファンクションコードをコピーし、その後にコピーされたコードを実行するための試行をトラップするよう構成されてもよい。当該試行は、例えば、オペレーティングシステム6012又は当該ファンクションを所有するドライバなどから認証を取得する必要なく、システムファンクションを実行するためのマルウェアによる試行であってもよい。
試行された処理をトラップすると、O/S下位セキュリティエージェント6020は、O/S内セキュリティエージェント6019からのコンテクスト情報、ドライバのコール元のスタック及び/又はメモリマップ6010に基づき、当該処理のコール元を特定するよう構成されてもよい。動作ルール、ホワイトリスト若しくはブラックリストを含むセキュリティルール6008を利用して、O/S下位セキュリティエージェント6020は、コール元が悪意あると知られているか判断するよう構成されてもよい。当該悪意ある状態が未知である場合、O/S下位セキュリティエージェント6020は、ライト処理が継続することを可能にするよう構成されてもよい。しかしながら、O/S下位セキュリティエージェント6020は、以降の実行試行を停止するよう構成されてもよい。一部の処理は、投入されたコードを完全にロードするための複数の試行されたライトに関するものであるかもしれない。O/S下位セキュリティエージェント6020は、投入されたコードを完全に決定及び特徴付けるため、実行の処理前に当該ライトを許可してもよい。
メモリ6003が信頼される又は信頼されないエンティティにより割り当て、割り当て解除又はライトされると、O/S下位セキュリティエージェント6020は、メモリマップ6010に当該情報を記録するよう構成されてもよい。O/S下位セキュリティエージェント6020は、実行のパーミッションなくコード投入攻撃の影響を受けやすいメモリ6003の部分をマーク付けしてもよい。メモリ6003の当該部分の試行された実行は、トラップされた処理を生じさせるものであってもよい。O/S下位セキュリティエージェント6020は、試行された実行に関するメモリマップ6010におけるメモリの部分を特定し、関連するエンティティを決定するよう構成されてもよい。O/S下位セキュリティエージェント6020は、コードを書き込む際に観察される悪意の可能性のある動作を評価し、又は既知のマルウェアの徴候についてコードバイトをスキャンしてもよい。
試行されたコードのロードと以降の試行された実行とが疑わしいと判断されるか、又はマルウェアを示す場合、O/S下位セキュリティエージェント6020は、適切な訂正アクションを実行するよう構成されてもよい。一実施例では、O/S下位セキュリティエージェント6020は、NOOP命令や他のパターンなどのダミー情報により書き込まれたコードを充填するよう構成されてもよい。さらに、当該試行を行ったエンティティのメモリ位置が、ダミー情報により充填されてもよい。他の実施例では、O/S下位セキュリティエージェント6020は、試行のソース及びターゲットをクリーン及び隔離するため、修復エンジンに実行をわたすよう構成されてもよい。さらなる他の実施例では、O/S下位セキュリティエージェント6020は、リード、ライト又は実行を不許可するパーミッション6032によりコール元及びターゲットのメモリ位置をマーク付けするよう構成されてもよい。同様に、O/S下位セキュリティエージェント6020は、試行のコール元又はターゲットのメモリ位置の以降の試行されたリード、ライト又は実行をトラップするよう構成されてもよい。当該試行に関するメモリ位置は、メモリマップ6010において悪意あるとしてマーク付けされてもよい。
図64は、メモリの一部が悪意あると判断された後、図60のメモリマップ6010などのメモリマップ6400の実施例である。メモリマップ6400の部分6402、6406、6410、6418、6422が未割当てとして示される。メモリマップは、オペレーティングシステムカーネル6404、ドライバ1 6408、ドライバ2 6412及びドライバ3 6416の位置を示してもよい。コードを投入及び実行するための悪意ある試行に関連すると判断されたメモリの部分が、マルウェア6420として指定されてもよい。マルウェアセクション6420のリード、ライト及び実行を拒絶するパーミッションが設定されてもよい。マルウェアセクション6420は、例えば、コードが投入されたメモリの部分又は投入試行が行われたメモリ部分などを反映してもよい。その後、未知のセクション6424からのマルウェアセクション6420の試行されたアクセスは、図60のO/S下位セキュリティエージェント6020などのO/S下位セキュリティエージェントによりトラップされてもよい。当該O/S下位セキュリティエージェントは、マルウェアセクション6420に対応するメモリ6003の部分へのアクセスをトラップするためフラグを設定するよう構成されてもよい。例えば、セクション6420に以前に書き込まれたコードをリードするための試行は、未知のセクション6424により行われてもよい。他の例では、セクション6420に以前に書き込まれたコードを実行するための試行は、未知のセクション6424により行われてもよい。O/S下位セキュリティエージェントは、マルウェアとして指定されたメモリの試行されたアクセスはそれ自体悪意あると判断するよう構成されてもよい。従って、O/S下位セキュリティエージェントは、当該試行をブロックし、以前に未知のセクション6424をマルウェアセクション6424として再指定してもよい。O/S下位セキュリティエージェントは、ダミーデータを充填し、クリーン及び隔離のためのプロセスにわたし、リード、ライト又は実行アクセスを拒絶するためのパーミッションによりマルウェアセクション6424をマーク付けし、及び/又はマルウェアセクション6424への以降のアクセスをトラップするなど、新たに指定されたマルウェアセクション6424に対して訂正アクションを実行するよう構成されてもよい。
図65は、電子デバイスのメモリのコードをロード及び実行するO/S下位トラップの方法6500の実施例である。ステップ6505において、セキュリティルールは、メモリのコードをロード及び実行することに関するリソースを決定するようアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
ステップ6510において、電子デバイス内のオペレーティングシステムのレベルの下位で制御構造にフラグが設定されてもよい。フラグは、例えば、コードの試行された投入と以降の実行をトラップするため設定されてもよい。フラグは、上述されたような試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び/又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
ステップ6515において、電子デバイスは、メモリへのコードの投入に関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ6520において、トラップされた試行がない場合、プロセス6500はステップ6515に移行し、トラップされる試行のモニタリングを継続する。試行がトラップされた場合、当該試行はステップ6525において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ6525において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行うプロセス、アプリケーション、ドライバ又はルーチンが、試行のターゲット共に決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報が、O/S内セキュリティエージェントから取得されてもよい。コードを投入するための試行が行われた場合、コール元のイメージがスキャンされてもよい。
ステップ6530において、ロード又は投入試行を行ったエンティティが、当該試行を行うのに未認証であると知られているか判断されてもよい。未認証である場合、ステップ6565において、当該試行は拒絶され、何れか適切な訂正アクションが実行されてもよい。未認証でない場合、エンティティのマルウェア状態は依然として未知であることを意味し、ステップ6535において、ロード試行が許可され、以降の試行される実行の状況に応じて、ロード試行が疑わしい可能性があると判断されてもよい。ロード試行が疑わしい可能性がない場合、当該方法はステップ6515に移行し、電子デバイスのモニタリングを継続してもよい。
ロード試行が依然として疑わしい可能性がある場合、ステップ6545において、電子デバイスは、書き込まれたコードの以降の実行試行についてモニタリングされてもよい。トラップされた試行がない場合、プロセス6500は、ステップ6545を繰り返すか、又はトラップされる試行のモニタリングを継続するためパラレルにステップ6515に移行してもよい。実行試行がトラップされた場合、当該試行はステップ6550において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ6550において、実行試行がロード試行に関連して悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行のを行うプロセス、アプリケーション、ドライバ又はルーチンが、試行のターゲット共に決定されてもよい。電子デバイスのオペレーティングシステムの内部からのコンテクスト情報が、O/S内セキュリティエージェントから取得されてもよい。実行試行のコール元のイメージが、マルウェアの徴候についてスキャンされてもよい。
ステップ6555において、試行されたロードに関して試行された実行がマルウェアを示しているか判断されてもよい。示している場合、ステップ6565において、当該試行は拒絶され、何れか適切な訂正アクションが実行されてもよい。示していない場合、ステップ6560において、実行及びロード試行は許可され、方法6500は、電子デバイスのモニタリングを任意的に継続するため、ステップ6515を継続してもよい。
方法300、600、800、1100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500が、図1〜2、4〜5、7、9〜10、12〜13、15〜18、20〜23、26〜27、29、31、33、35、38〜39、41、45、47〜48、50〜52、54〜56、58若しくは60〜64のシステム、又は方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500を実現するよう動作可能な他の何れかのシステムの何れかを利用して実現されてもよい。また、方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500の好適な初期化ポイント及びこれらのステップの順序は、選択された実現形態に依存する。図3、6、8、11、14、19、24〜25、28、30、32、34、36〜37、40、42〜44、46、49、53、57、59及び65は、方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500の具体例に関して実行される特定数のステップを開示しているが、これらの方法は、図面に示されるより多くの又は少ないステップにより実行されてもよい。さらに、図3、6、8、11、14、19、24〜25、28、30、32、34、36〜37、40、42〜44、46、49、53、57、59及び65は、これらの方法に関して実行されるステップの特定の順序を開示し、これらの方法を構成するステップは、何れか適切な順序により完了されてもよい。さらに、方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500の一部又はすべてのステップは、他の方法からのステップと組み合わされてもよい。いくつかの実施例では、一部のステップは、任意的に省略、繰り返し又は合成されてもよい。いくつかの実施例では、方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500の1以上のいくつかのステップは、互いの他のステップとパラレルに実行されてもよい。特定の実施例では、方法300、600、800、100、1400、1900、2400、2500、2800、3000、3200、3400、3600、3700、4000、4200、4300、4400、4600、4900、5300、5700、5900、6500は、コンピュータ可読媒体に実現されるソフトウェアにより部分的又は完全に実現されてもよい。
本開示のため、コンピュータ可読媒体は、ある期間においてデータ及び/又は命令を保持する手段又は手段の集合を含むものであってもよい。コンピュータ可読媒体は、限定することなく、ダイレクトアクセスストレージデバイス(ハードディスクドライブ又はフロッピー(登録商標)ディスクなど)、シーケンシャルアクセスストレージデバイス(テープディスクドライブなど)、コンパクトディスク、CD−ROM、DVD、RAM、ROM、EEPROM及び/又はフラッシュメモリと共に、非一時的通信媒体、及び/又は上記の何れかの組み合わせなどのストレージメディアを含むものであってもよい。
図1〜2、4〜5、7、9〜10、12〜13、15〜18、20〜23、26〜27、29、31、33、35、38〜39、41、45、47〜48、50〜52、54〜56、58若しくは60〜64のシステムの1以上は、同一のシステムの他のコンポーネントと組み合わされてもよい。
本開示が詳細に説明されたが、添付した請求項により定義されるような本開示の趣旨及び範囲から逸脱することなく、各種変更、置換及び変形が可能であることが理解されるべきである。

Claims (46)

  1. 電子デバイスをセキュアにするシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに接続されるプロセッサと、
    前記電子デバイスのリソースと、
    前記不揮発性メモリにあって、前記プロセッサにより実行されるファームウェアであって、前記電子デバイスのリソースに通信接続される前記ファームウェアと、
    前記ファームウェアにあるファームウェアセキュリティエージェントと、
    を有し、
    前記ファームウェアセキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで、
    前記リソースに対するリクエストをインターセプトし、
    前記リクエストがマルウェアを示すか判断する、
    よう構成されるシステム。
  2. 前記ファームウェアは、前記電子デバイスの周辺のコントローラにある、請求項1記載のシステム。
  3. 前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項1記載のシステム。
  4. 前記リソースは、キーボードを有する、請求項1記載のシステム。
  5. 前記リソースは、ディスプレイデバイスを有する、請求項1記載のシステム。
  6. 前記リソースは、ディスクを有する、請求項1記載のシステム。
  7. 前記リクエストは、入力又は出力コマンドを有する、請求項1記載のシステム。
  8. 前記リクエストがマルウェアを示すかの判断は、前記入力又は出力コマンドの値がマルウェアを示すか評価することを含む、請求項7記載のシステム。
  9. 前記メモリと前記プロセッサとを有する入出力(I/O)デバイスであって、前記電子デバイスのオペレーティングシステムに通信接続される前記I/Oデバイスと、
    前記ファームウェアセキュリティエージェントに通信接続されるセキュリティエージェントと、
    をさらに有し、
    前記リクエストがマルウェアを示すか判断するよう前記ファームウェアセキュリティエージェントを設定することは、前記リクエストを有する情報を前記セキュリティエージェントに送信するよう前記ファームウェアセキュリティエージェントを設定することを有し、
    前記セキュリティエージェントは、前記情報がマルウェアを示すか判断するため、1以上のセキュリティルールにアクセスするよう構成される、請求項1記載のシステム。
  10. 前記セキュリティエージェントは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項9記載のシステム。
  11. 前記セキュリティエージェントに通信接続され、前記オペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントをさらに有し、
    前記セキュリティエージェントは、前記リソースのリクエストを行った前記オペレーティングシステムの1以上の要素に関する情報をセキュリティエージェントに提供するよう構成される、請求項9記載のシステム。
  12. 前記ファームウェアセキュリティエージェントは、前記セキュリティエージェントを認証するよう構成される、請求項9記載のシステム。
  13. 前記セキュリティエージェントは、
    前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで実行され、
    前記セキュリティエージェントより上位のレベルから前記リクエストを受信する、
    よう構成される、請求項9記載のシステム。
  14. 前記セキュリティエージェントは、
    前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定された前記優先度で実行され、
    前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信する、
    よう構成される、請求項9記載のシステム。
  15. 前記セキュリティエージェントは、
    前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
    前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信する、
    よう構成される、請求項9記載のシステム。
  16. 電子デバイスをセキュアにする方法であって、
    前記電子デバイスに接続されたリソースに通信接続され、不揮発性メモリにあるファームウェアにおいて、前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで前記リソースに対するリクエストをインターセプトするステップと、
    1以上のセキュリティルールを照会するステップと、
    前記1以上のセキュリティルールに基づき、前記リクエストがマルウェアを示すか判断するステップと、
    を有する方法。
  17. 前記リクエストがマルウェアを示すか判断するステップは、
    前記リクエストに関する情報をプロテクションサーバに送信するステップと、
    前記リクエストに関する判定を前記プロテクションサーバから受信するステップと、
    を有する、請求項16記載の方法。
  18. 前記リクエストは、前記電子デバイスの周辺のコントローラにあるファームウェアにおいてインターセプトされる、請求項16記載の方法。
  19. 前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項16記載の方法。
  20. 前記リソースは、キーボードを有する、請求項16記載の方法。
  21. 前記リソースは、ディスプレイデバイスを有する、請求項16記載の方法。
  22. 前記リソースは、ディスクを有する、請求項16記載の方法。
  23. 前記リクエストは、入力又は出力コマンドを有する、請求項16記載の方法。
  24. 1以上のセキュリティルールを受信するためセキュリティエージェントと通信するステップをさらに有する、請求項16記載の方法。
  25. 入出力(I/O)デバイスのファームウェアにおいて前記リクエストをインターセプトするステップをさらに有し、
    前記リクエストがマルウェアを示すか判断するステップは、
    前記リクエストを有する情報を前記セキュリティエージェントに送信するステップと、
    前記リクエストがマルウェアを示すか判断するため、前記セキュリティエージェントからの1以上のセキュリティルールにアクセスするステップと、
    を有する、請求項24記載の方法。
  26. 前記セキュリティエージェントからの1以上のセキュリティルールにアクセスするステップは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項24記載の方法。
  27. 前記電子デバイスのオペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントと通信するステップと、
    前記リソースのリクエストを行った前記オペレーティングシステムの1以上の要素に関する情報を受信するステップと、
    をさらに有する、請求項24記載の方法。
  28. 前記セキュリティエージェントを認証するステップをさらに有する、請求項24記載の方法。
  29. 前記セキュリティエージェントは、前記電子デバイスのすべてのオペレーティングシステムより下位レベルで実行され、
    前記セキュリティエージェントより上位のレベルから前記リクエストを受信するステップをさらに有する、請求項24記載の方法。
  30. 前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定される前記優先度において実行され、
    前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信するステップをさらに有する、請求項24記載の方法。
  31. 前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
    前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信するステップをさらに有する、請求項24記載の方法。
  32. コンピュータ可読媒体と、
    前記コンピュータ可読媒体上に担持されるコンピュータ実行可能命令と、
    を有する製造物であって、
    前記命令はプロセッサにより可読であり、読み込まれ実行されると、前記電子デバイスに接続されたリソースに通信接続され、不揮発性メモリにあるファームウェアにおいて、前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで前記リソースに対するリクエストをインターセプトするステップと、
    1以上のセキュリティルールを照会するステップと、
    前記1以上のセキュリティルールに基づき、前記リクエストがマルウェアを示すか判断するステップと、
    を前記プロセッサに実行させる製造物。
  33. 前記リクエストは、前記電子デバイスの周辺のコントローラにあるファームウェアにおいてインターセプトされる、請求項32記載の製造物。
  34. 前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項32記載の製造物。
  35. 前記リソースは、キーボードを有する、請求項32記載の製造物。
  36. 前記リソースは、ディスプレイデバイスを有する、請求項32記載の製造物。
  37. 前記リソースは、ディスクを有する、請求項32記載の製造物。
  38. 前記リクエストは、入力又は出力コマンドを有する、請求項32記載の製造物。
  39. 1以上のセキュリティルールを受信するためセキュリティエージェントと通信するステップを前記プロセッサにさらに実行させる、請求項32記載の製造物。
  40. 入出力(I/O)デバイスのファームウェアにおいて前記リクエストをインターセプトするステップを前記プロセッサにさらに実行させ、
    前記リクエストがマルウェアを示すか判断するステップは、
    前記リクエストを有する情報を前記セキュリティエージェントに送信するステップと、
    前記リクエストがマルウェアを示すか判断するため、前記セキュリティエージェントからの1以上のセキュリティルールにアクセスするステップと、
    を有する、請求項39記載の製造物。
  41. 前記セキュリティエージェントからの1以上のセキュリティルールにアクセスするステップは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項39記載の製造物。
  42. 前記電子デバイスのオペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントと通信するステップと、
    前記リソースのリクエストを行った前記オペレーティングシステムの1以上の要素に関する情報を受信するステップと、
    を前記プロセッサにさらに実行させる、請求項39記載の製造物。
  43. 前記セキュリティエージェントを認証するステップを前記プロセッサにさらに実行させる、請求項39記載の製造物。
  44. 前記セキュリティエージェントは、前記電子デバイスのすべてのオペレーティングシステムより下位レベルで実行され、
    前記セキュリティエージェントより上位のレベルから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項39記載の製造物。
  45. 前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定される前記優先度において実行され、
    前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項39記載の製造物。
  46. 前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
    前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項39記載の製造物。
JP2015143187A 2011-03-28 2015-07-17 バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法 Active JP6370747B2 (ja)

Applications Claiming Priority (40)

Application Number Priority Date Filing Date Title
US13/073,810 2011-03-28
US13/073,791 2011-03-28
US13/073,791 US20120254993A1 (en) 2011-03-28 2011-03-28 System and method for virtual machine monitor based anti-malware security
US13/073,842 US20120254994A1 (en) 2011-03-28 2011-03-28 System and method for microcode based anti-malware security
US13/073,842 2011-03-28
US13/073,853 2011-03-28
US13/073,810 US9317690B2 (en) 2011-03-28 2011-03-28 System and method for firmware based anti-malware security
US13/073,853 US20120255031A1 (en) 2011-03-28 2011-03-28 System and method for securing memory using below-operating system trapping
US13/073,864 2011-03-28
US13/073,864 US8549644B2 (en) 2011-03-28 2011-03-28 Systems and method for regulating software access to security-sensitive processor resources
US13/075,049 2011-03-29
US13/074,925 US8925089B2 (en) 2011-03-29 2011-03-29 System and method for below-operating system modification of malicious code on an electronic device
US13/074,925 2011-03-29
US13/074,947 US20120255014A1 (en) 2011-03-29 2011-03-29 System and method for below-operating system repair of related malware-infected threads and resources
US13/074,831 US8813227B2 (en) 2011-03-29 2011-03-29 System and method for below-operating system regulation and control of self-modifying code
US13/075,049 US8621620B2 (en) 2011-03-29 2011-03-29 System and method for protecting and securing storage devices using below-operating system trapping
US13/075,101 2011-03-29
US13/074,831 2011-03-29
US13/074,741 US8549648B2 (en) 2011-03-29 2011-03-29 Systems and methods for identifying hidden processes
US13/075,072 2011-03-29
US13/075,101 US9032525B2 (en) 2011-03-29 2011-03-29 System and method for below-operating system trapping of driver filter attachment
US13/074,947 2011-03-29
US13/074,741 2011-03-29
US13/075,072 US8959638B2 (en) 2011-03-29 2011-03-29 System and method for below-operating system trapping and securing of interdriver communication
US13/076,480 US9038176B2 (en) 2011-03-31 2011-03-31 System and method for below-operating system trapping and securing loading of code into memory
US13/076,473 2011-03-31
US13/077,305 2011-03-31
US13/076,480 2011-03-31
US13/076,512 US8966629B2 (en) 2011-03-31 2011-03-31 System and method for below-operating system trapping of driver loading and unloading
US13/076,473 US8650642B2 (en) 2011-03-31 2011-03-31 System and method for below-operating system protection of an operating system kernel
US13/077,227 2011-03-31
US13/077,270 US9262246B2 (en) 2011-03-31 2011-03-31 System and method for securing memory and storage of an electronic device with a below-operating system security agent
US13/077,305 US8863283B2 (en) 2011-03-31 2011-03-31 System and method for securing access to system calls
US13/076,537 2011-03-31
US13/076,493 US8966624B2 (en) 2011-03-31 2011-03-31 System and method for securing an input/output path of an application against malware with a below-operating system security agent
US13/077,270 2011-03-31
US13/076,537 US20120255003A1 (en) 2011-03-31 2011-03-31 System and method for securing access to the objects of an operating system
US13/076,493 2011-03-31
US13/076,512 2011-03-31
US13/077,227 US9087199B2 (en) 2011-03-31 2011-03-31 System and method for providing a secured operating system execution environment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014502709A Division JP2014514651A (ja) 2011-03-28 2012-03-27 バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法

Publications (2)

Publication Number Publication Date
JP2015212979A true JP2015212979A (ja) 2015-11-26
JP6370747B2 JP6370747B2 (ja) 2018-08-08

Family

ID=46932287

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014502709A Pending JP2014514651A (ja) 2011-03-28 2012-03-27 バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
JP2015143187A Active JP6370747B2 (ja) 2011-03-28 2015-07-17 バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014502709A Pending JP2014514651A (ja) 2011-03-28 2012-03-27 バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法

Country Status (6)

Country Link
EP (1) EP2691908B1 (ja)
JP (2) JP2014514651A (ja)
KR (1) KR101626424B1 (ja)
CN (1) CN103620613B (ja)
AU (1) AU2012236739A1 (ja)
WO (1) WO2012135192A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020528609A (ja) * 2017-07-26 2020-09-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ処理における侵入検知および侵入軽減
JP7384900B2 (ja) 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US9032525B2 (en) 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US9507937B2 (en) * 2012-03-30 2016-11-29 Intel Corporation Reporting malicious activity to an operating system
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
US9672374B2 (en) * 2012-10-19 2017-06-06 Mcafee, Inc. Secure disk access control
US9275223B2 (en) 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
US8914857B2 (en) 2012-11-21 2014-12-16 Wal-Mart Stores, Inc. Security bypass environment for circumventing a security application in a computing environment
US10409980B2 (en) 2012-12-27 2019-09-10 Crowdstrike, Inc. Real-time representation of security-relevant system state
US10127379B2 (en) * 2013-03-13 2018-11-13 Mcafee, Llc Profiling code execution
US9275225B2 (en) * 2013-03-15 2016-03-01 Intel Corporation Linear address mapping protection
US9330259B2 (en) * 2013-03-19 2016-05-03 Trusteer, Ltd. Malware discovery method and system
US9495544B2 (en) 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
RU2653985C2 (ru) 2013-06-28 2018-05-15 Закрытое акционерное общество "Лаборатория Касперского" Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию
US9230106B2 (en) 2013-06-28 2016-01-05 Kaspersky Lab Ao System and method for detecting malicious software using malware trigger scenarios in a modified computer environment
GB2515736A (en) 2013-07-01 2015-01-07 Ibm Controlling access to one or more datasets of an operating system in use
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9323931B2 (en) * 2013-10-04 2016-04-26 Bitdefender IPR Management Ltd. Complex scoring for malware detection
US9246935B2 (en) 2013-10-14 2016-01-26 Intuit Inc. Method and system for dynamic and comprehensive vulnerability management
US9323929B2 (en) 2013-11-26 2016-04-26 Qualcomm Incorporated Pre-identifying probable malicious rootkit behavior using behavioral contracts
US9501345B1 (en) 2013-12-23 2016-11-22 Intuit Inc. Method and system for creating enriched log data
US9323926B2 (en) 2013-12-30 2016-04-26 Intuit Inc. Method and system for intrusion and extrusion detection
US9740857B2 (en) 2014-01-16 2017-08-22 Fireeye, Inc. Threat-aware microvisor
US20150222646A1 (en) 2014-01-31 2015-08-06 Crowdstrike, Inc. Tagging Security-Relevant System Objects
US9325726B2 (en) 2014-02-03 2016-04-26 Intuit Inc. Method and system for virtual asset assisted extrusion and intrusion detection in a cloud computing environment
US20150304343A1 (en) 2014-04-18 2015-10-22 Intuit Inc. Method and system for providing self-monitoring, self-reporting, and self-repairing virtual assets in a cloud computing environment
US10757133B2 (en) 2014-02-21 2020-08-25 Intuit Inc. Method and system for creating and deploying virtual assets
US9866581B2 (en) * 2014-06-30 2018-01-09 Intuit Inc. Method and system for secure delivery of information to computing environments
US9276945B2 (en) 2014-04-07 2016-03-01 Intuit Inc. Method and system for providing security aware applications
CN103942492B (zh) * 2014-03-04 2016-09-21 中天安泰(北京)信息技术有限公司 单机版数据黑洞处理方法及计算设备
CN103942499B (zh) * 2014-03-04 2017-01-11 中天安泰(北京)信息技术有限公司 基于移动存储器的数据黑洞处理方法及移动存储器
CN103927493B (zh) * 2014-03-04 2016-08-31 中天安泰(北京)信息技术有限公司 数据黑洞处理方法
DE102014204417A1 (de) 2014-03-11 2015-09-17 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US9245117B2 (en) 2014-03-31 2016-01-26 Intuit Inc. Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems
US11294700B2 (en) 2014-04-18 2022-04-05 Intuit Inc. Method and system for enabling self-monitoring virtual assets to correlate external events with characteristic patterns associated with the virtual assets
US9374389B2 (en) 2014-04-25 2016-06-21 Intuit Inc. Method and system for ensuring an application conforms with security and regulatory controls prior to deployment
US9900322B2 (en) 2014-04-30 2018-02-20 Intuit Inc. Method and system for providing permissions management
US9330263B2 (en) 2014-05-27 2016-05-03 Intuit Inc. Method and apparatus for automating the building of threat models for the public cloud
US9798882B2 (en) 2014-06-06 2017-10-24 Crowdstrike, Inc. Real-time model of states of monitored devices
US9473481B2 (en) 2014-07-31 2016-10-18 Intuit Inc. Method and system for providing a virtual asset perimeter
US10102082B2 (en) 2014-07-31 2018-10-16 Intuit Inc. Method and system for providing automated self-healing virtual assets
KR101616702B1 (ko) 2014-09-16 2016-04-29 주식회사 엠엘소프트 코드사인을 이용한 소프트웨어 관리방법
WO2016047111A1 (ja) 2014-09-25 2016-03-31 日本電気株式会社 解析システム、解析装置、解析方法、及び、解析プログラムが記録された記憶媒体
JP6229800B2 (ja) 2014-09-25 2017-11-15 日本電気株式会社 解析システム、解析方法、及び、解析プログラム
WO2016047110A1 (ja) 2014-09-25 2016-03-31 日本電気株式会社 解析システム、解析装置、解析方法、及び、解析プログラムが記録された記録媒体
US9509708B2 (en) * 2014-12-02 2016-11-29 Wontok Inc. Security information and event management
CN105763593B (zh) * 2014-12-19 2020-01-24 中兴通讯股份有限公司 多用户共享环境下的设备共享方法、装置、服务器及终端
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
KR102175745B1 (ko) * 2015-01-07 2020-11-06 주식회사 케이티 보안 대상 객체에 맞는 보안 솔루션을 제공하는 보안 플랫폼 장치, 보안 플랫폼 시스템 및 보안 플랫폼 방법
US9912681B1 (en) 2015-03-31 2018-03-06 Fireeye, Inc. Injection of content processing delay in an endpoint
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
CA2982244C (en) * 2015-04-14 2024-01-23 Gigavation, Inc. Paravirtualized security threat protection of a computer-driven system with networked devices
US20160363919A1 (en) * 2015-06-09 2016-12-15 Fisher Controls International Llc Custom application environment in a process control device
US9984230B2 (en) * 2015-06-26 2018-05-29 Mcafee, Llc Profiling event based exploit detection
US10691476B2 (en) * 2015-06-27 2020-06-23 Mcafee, Llc Protection of sensitive data
US20160381051A1 (en) * 2015-06-27 2016-12-29 Mcafee, Inc. Detection of malware
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US9852295B2 (en) * 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
US10089465B2 (en) * 2015-07-24 2018-10-02 Bitdefender IPR Management Ltd. Systems and methods for tracking malicious behavior across multiple software entities
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
DE102015214376A1 (de) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Verfahren und Vorrichtung zur On-Board-Diagnose bei einem Steuergerät mit einem Hypervisor und mindestens einem unter dem Hypervisor betriebenen Gastsystem
CN105160243A (zh) * 2015-09-15 2015-12-16 浪潮集团有限公司 一种面向移动智能终端的驱动监控机制实现方法
CN105141623B (zh) * 2015-09-16 2018-10-26 宇龙计算机通信科技(深圳)有限公司 电子账户的控制方法、系统及移动终端
US10255434B2 (en) * 2015-09-17 2019-04-09 Qualcomm Incorporated Detecting software attacks on processes in computing devices
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
KR101729680B1 (ko) 2015-12-01 2017-04-25 한국전자통신연구원 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
EP3208717A1 (en) * 2016-02-17 2017-08-23 Gemalto Sa Method for managing objects in a secure element
US11188651B2 (en) * 2016-03-07 2021-11-30 Crowdstrike, Inc. Hypervisor-based interception of memory accesses
US10594733B2 (en) 2016-04-06 2020-03-17 Rapid7, Inc System and method for application software security and auditing
US10044744B1 (en) 2016-04-26 2018-08-07 EMC IP Holding Company LLC Covert storage channel communication between computer security agent and security system
US10191861B1 (en) 2016-09-06 2019-01-29 Fireeye, Inc. Technique for implementing memory views using a layered virtualization architecture
CN106383735A (zh) * 2016-09-21 2017-02-08 中科信息安全共性技术国家工程研究中心有限公司 一种实时监测云环境中虚拟机主机安全的系统及方法
US10375111B2 (en) * 2016-11-12 2019-08-06 Microsoft Technology Licensing, Llc Anonymous containers
US10609066B1 (en) * 2016-11-23 2020-03-31 EMC IP Holding Company LLC Automated detection and remediation of ransomware attacks involving a storage device of a computer network
CN106874785A (zh) * 2017-01-13 2017-06-20 北京元心科技有限公司 多操作系统的系统文件访问方法及装置
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
CN110383277B (zh) * 2017-03-07 2021-09-14 华为技术有限公司 虚拟机监视器测量代理
US9892256B1 (en) * 2017-04-10 2018-02-13 Bracket Computing, Inc. Threat defense techniques
US10650156B2 (en) 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US10489593B2 (en) * 2017-06-27 2019-11-26 Symantec Corporation Mitigation of malicious actions associated with graphical user interface elements
KR102008952B1 (ko) * 2017-07-05 2019-08-08 한국전자통신연구원 가상머신 부팅 과정에서의 감사 증적 수집 장치 및 방법
US10776491B2 (en) 2017-07-05 2020-09-15 Electronics And Telecommunications Research Institute Apparatus and method for collecting audit trail in virtual machine boot process
US10943007B2 (en) * 2017-09-20 2021-03-09 Twistlock, Ltd System and method for defending applications invoking anonymous functions
US10938854B2 (en) * 2017-09-22 2021-03-02 Acronis International Gmbh Systems and methods for preventive ransomware detection using file honeypots
KR102411920B1 (ko) 2017-11-08 2022-06-22 삼성전자주식회사 전자 장치 및 그 제어 방법
KR102024053B1 (ko) * 2017-12-28 2019-09-24 주식회사 안랩 행위 기반 실시간 접근 제어 시스템 및 행위 기반 실시간 접근 제어 방법
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing
CN108563552B (zh) * 2017-12-28 2021-09-28 北京奇虎科技有限公司 一种记录外设操作行为的方法、设备及其存储介质
US11113425B2 (en) * 2018-01-17 2021-09-07 Crowd Strike, Inc. Security component for devices on an enumerated bus
US11144638B1 (en) * 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
CN108446149B (zh) * 2018-02-28 2021-07-20 北京凌宇智控科技有限公司 一种第三方动态库接口拦截方法及系统
TWI698769B (zh) * 2018-04-18 2020-07-11 新唐科技股份有限公司 透過匯流排安全存取周邊裝置之裝置及方法
CN108762826B (zh) * 2018-04-23 2021-09-28 厦门市美亚柏科信息股份有限公司 进程隐藏方法及计算机可读存储介质
CN109299607A (zh) * 2018-08-24 2019-02-01 珠海奔图电子有限公司 驱动程序安全检测方法、装置和图像形成系统
WO2020047041A1 (en) * 2018-08-28 2020-03-05 Digital Immunity Llc Non-disruptive mitigation of malware attacks
US11586383B2 (en) 2018-10-16 2023-02-21 Micron Technology, Inc. Command block management
US10715541B2 (en) 2018-11-05 2020-07-14 cmdSecurity Inc. Systems and methods for security monitoring processing
EP3663947B1 (en) * 2018-12-06 2021-11-24 Hewlett-Packard Development Company, L.P. Protected peripheral ports
CN111444510A (zh) * 2018-12-27 2020-07-24 北京奇虎科技有限公司 基于虚拟机实现的cpu漏洞检测方法及系统
GB2589664B (en) * 2019-06-13 2021-12-15 Beyondtrust Software Inc Systems and methods for event-based application control
WO2021080601A1 (en) * 2019-10-25 2021-04-29 Hewlett-Packard Development Company, L.P. Integrity monitor
CN112749397A (zh) 2019-10-29 2021-05-04 阿里巴巴集团控股有限公司 一种系统和方法
EP3828748A1 (en) * 2019-11-27 2021-06-02 AO Kaspersky Lab System and method for access control in electronic control units of vehicles
CN110929260A (zh) * 2019-11-29 2020-03-27 杭州安恒信息技术股份有限公司 一种恶意软件检测的方法、装置、服务器及可读存储介质
JP7333748B2 (ja) * 2019-12-13 2023-08-25 株式会社日立製作所 電子機器および電子機器の攻撃検知方法
CN111427693B (zh) * 2020-03-26 2023-04-28 北京字节跳动网络技术有限公司 数据处理方法、系统、介质、服务系统及旁路卸载系统
CN111767548A (zh) * 2020-06-28 2020-10-13 杭州迪普科技股份有限公司 一种漏洞捕获方法、装置、设备及存储介质
CN111796911A (zh) * 2020-07-08 2020-10-20 中国科学院信息工程研究所 一种面向云平台虚拟设备的攻击检测方法及电子装置
WO2022031275A1 (en) * 2020-08-05 2022-02-10 Hewlett-Packard Development Company, L.P. Detection of memory modification
CN112084411B (zh) * 2020-09-10 2021-04-20 绍兴文理学院 一种面向个性化信息检索的用户隐私保护方法
US11775639B2 (en) * 2020-10-23 2023-10-03 Sophos Limited File integrity monitoring
US20220164774A1 (en) * 2020-11-23 2022-05-26 C2 Monster Co., Ltd. Project management system with capture review transmission function and method thereof
US20230297685A1 (en) * 2022-03-15 2023-09-21 Vmware, Inc. Remediation method to trace and clean up malicious files in a distributed malware detection system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256229A (ja) * 2002-02-28 2003-09-10 Ntt Docomo Inc 移動通信端末、情報処理装置、中継サーバ装置、情報処理システム及び情報処理方法
US20090165133A1 (en) * 2007-12-24 2009-06-25 Samsung Electronics Co., Ltd. System for executing program using virtual machine monitor and method of controlling the system
WO2009118844A1 (ja) * 2008-03-26 2009-10-01 富士通株式会社 情報処理装置、ウィルス管理機能装置およびウィルス駆除方法
JP2010086538A (ja) * 2008-09-30 2010-04-15 Intel Corp ハードウェアベースのアンチウィルススキャンサービス
US20100330961A1 (en) * 2009-06-26 2010-12-30 Vmware, Inc. Providing security in virtualized mobile devices

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049289A (en) * 1996-09-06 2000-04-11 Overhead Door Corporation Remote controlled garage door opening system
KR100611867B1 (ko) * 1998-01-26 2006-08-11 마츠시타 덴끼 산교 가부시키가이샤 데이터 기록재생방법, 데이터 기록재생 시스템, 기록장치, 재생장치, 프로그램 기록매체
EP1022895A3 (en) * 1999-01-22 2001-04-04 Matsushita Electric Industrial Co., Ltd. Apparatus for and method of embedding and extracting digital information, and medium having program for carrying out the method recorded thereon
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US8024799B2 (en) * 2005-08-19 2011-09-20 Cpacket Networks, Inc. Apparatus and method for facilitating network security with granular traffic modifications
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
KR100791290B1 (ko) * 2006-02-10 2008-01-04 삼성전자주식회사 디바이스 간에 악성 어플리케이션의 행위 정보를 사용하는장치 및 방법
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US9015704B2 (en) * 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
US8726364B2 (en) * 2008-06-30 2014-05-13 Intel Corporation Authentication and access protection of computer boot modules in run-time environments
US8213618B2 (en) * 2008-12-30 2012-07-03 Intel Corporation Protecting content on client platforms

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256229A (ja) * 2002-02-28 2003-09-10 Ntt Docomo Inc 移動通信端末、情報処理装置、中継サーバ装置、情報処理システム及び情報処理方法
US20090165133A1 (en) * 2007-12-24 2009-06-25 Samsung Electronics Co., Ltd. System for executing program using virtual machine monitor and method of controlling the system
WO2009118844A1 (ja) * 2008-03-26 2009-10-01 富士通株式会社 情報処理装置、ウィルス管理機能装置およびウィルス駆除方法
JP2010086538A (ja) * 2008-09-30 2010-04-15 Intel Corp ハードウェアベースのアンチウィルススキャンサービス
US20100330961A1 (en) * 2009-06-26 2010-12-30 Vmware, Inc. Providing security in virtualized mobile devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020528609A (ja) * 2017-07-26 2020-09-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ処理における侵入検知および侵入軽減
US11652852B2 (en) 2017-07-26 2023-05-16 International Business Machines Corporation Intrusion detection and mitigation in data processing
JP7384900B2 (ja) 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス

Also Published As

Publication number Publication date
EP2691908A4 (en) 2014-10-29
AU2012236739A1 (en) 2013-10-03
KR101626424B1 (ko) 2016-06-01
WO2012135192A2 (en) 2012-10-04
WO2012135192A3 (en) 2013-02-28
JP2014514651A (ja) 2014-06-19
KR20140033349A (ko) 2014-03-18
CN103620613A (zh) 2014-03-05
EP2691908A2 (en) 2014-02-05
CN103620613B (zh) 2018-06-12
EP2691908B1 (en) 2018-12-05
JP6370747B2 (ja) 2018-08-08

Similar Documents

Publication Publication Date Title
JP6370747B2 (ja) バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
US9392016B2 (en) System and method for below-operating system regulation and control of self-modifying code
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
US8925089B2 (en) System and method for below-operating system modification of malicious code on an electronic device
US9087199B2 (en) System and method for providing a secured operating system execution environment
US9747443B2 (en) System and method for firmware based anti-malware security
US9565214B2 (en) Real-time module protection
US8621620B2 (en) System and method for protecting and securing storage devices using below-operating system trapping
US9384349B2 (en) Negative light-weight rules
US8863283B2 (en) System and method for securing access to system calls
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8959638B2 (en) System and method for below-operating system trapping and securing of interdriver communication
US8549648B2 (en) Systems and methods for identifying hidden processes
US9032525B2 (en) System and method for below-operating system trapping of driver filter attachment
US8966629B2 (en) System and method for below-operating system trapping of driver loading and unloading
US20120255014A1 (en) System and method for below-operating system repair of related malware-infected threads and resources
US20120255003A1 (en) System and method for securing access to the objects of an operating system
US20130312099A1 (en) Realtime Kernel Object Table and Type Protection
US20120255031A1 (en) System and method for securing memory using below-operating system trapping
US20120254993A1 (en) System and method for virtual machine monitor based anti-malware security

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160921

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170227

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170322

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20170414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180711

R150 Certificate of patent or registration of utility model

Ref document number: 6370747

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250