JP6326502B2 - 頻度に基づくレピュテーション - Google Patents

頻度に基づくレピュテーション Download PDF

Info

Publication number
JP6326502B2
JP6326502B2 JP2016542965A JP2016542965A JP6326502B2 JP 6326502 B2 JP6326502 B2 JP 6326502B2 JP 2016542965 A JP2016542965 A JP 2016542965A JP 2016542965 A JP2016542965 A JP 2016542965A JP 6326502 B2 JP6326502 B2 JP 6326502B2
Authority
JP
Japan
Prior art keywords
reputation
subroutine
score
executable object
execution frequency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016542965A
Other languages
English (en)
Other versions
JP2017505947A (ja
Inventor
ムッティク,イゴール
Original Assignee
マカフィー, エルエルシー
マカフィー, エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マカフィー, エルエルシー, マカフィー, エルエルシー filed Critical マカフィー, エルエルシー
Publication of JP2017505947A publication Critical patent/JP2017505947A/ja
Application granted granted Critical
Publication of JP6326502B2 publication Critical patent/JP6326502B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

この出願は、コンピュータネットワークセキュリティの分野に関し、特にオブジェクトについて頻度に基づくレピュテーション(frequency-based reputation)を計算するシステム、装置及び方法に関する。
この明細書を通じて使用されるときに、悪意のあるソフトウェア(“マルウェア(malware)”)は、非限定的な例として、データ破壊、秘密データの収集、ブラウザのハイジャック、ネットワークプロキシ又はリダイレクション、秘密トラッキング、データロギング、キーロギング、削除への過度又は故意の障壁、連絡先ハーベスティング、及び無許可の自己繁殖を含み、いずれかのウィルス、トロイの木馬(Trojan)、ボット、ゾンビ、ルートキット、バックドア、ワーム、スパイウェア、アドウェア、ランサムウェア、ダイヤラ、ペイロード、悪意のあるブラウザヘルパーオブジェクト、クッキー、ロガー、又は潜在的に不必要なアクションを行うように設計された同様のものを含む。ここではアンチマルウェアシステムと呼ばれる特定のシステムは、アプリケーション又はファイルレベルでマルウェアを識別して駆除することに焦点を当てている。“実行可能オブジェクト”は、いずれかのファイル、プログラム、マクロ、スクリプト、ドキュメント、レコード、又はプログラムを実行するコードを含む同様のものを含む。スタンドアローンプログラムとして動作するように設計されているものとは別に、マルウェアはまた、他のソフトウェアに追加又は注入される悪意のあるコードの形式になり得る。この形式の一例は、悪意のあるコードがコンピュータウィルスを再現する寄生により導入される“感染ファイル(infected file)”でもよい。悪意のあるコードはまた、コンパイル後に実行可能オブジェクトの一部になるように、手動で注入されてもよく、ソフトウェアのソースに追加されてもよく、コンパイルされてもよくされなくてもよいスクリプトに追加されて翻訳実行されてもよい。特定のアンチマルウェア対策は、感染ファイルを識別し、これらを削除、隔離又はブロックすることに焦点を当てている。
この開示は、添付図面と共に読まれた場合に以下の詳細な説明から最も良く理解できる。業界における標準的な慣行に従って、様々な図面は縮尺通りに描かれておらず、説明目的にのみ使用されることが強調される。実際に、様々な図面の寸法は、説明の明瞭性のために任意に増加又は減少してもよい。
この明細書の1つ以上の例による分散レピュテーション環境のネットワークレベルの図 この明細書の1つ以上の例による共通サブルーチンを含む複数のサブルーチンを含む複数の実行可能オブジェクトのブロック図 この明細書の1つ以上の例によるクライアントデバイス130のブロック図 この明細書の1つ以上の例によるレピュテーションクライアントにより実行される例示的な処理のフローチャート この明細書の1つ以上の例によるレピュテーションサーバのブロック図 この明細書の1つ以上の例によるレピュテーションサーバを提供する方法のフローチャート
<概要>
一例では、サブルーチンレベルでアプリケーション及び他の実行可能オブジェクトを分析するアンチマルウェアシステム及び方法が開示される。各サブルーチンは、実行頻度スコアを割り当てられてもよく、実行頻度スコアは、隔離された環境、現実の世界の動作条件、又は静的な分析でのシミュレーションされた実行に基づいてもよい。各サブルーチンは、どのくらいの頻度で実行されたかに基づいて実行頻度スコアを割り当てられてもよい。このスコアに基づいて、各サブルーチンはまた、レピュテーションスコアを割り当てられてもよい。他のアプリケーションでの同じサブルーチンの発生への相互参照を支援するために、サブルーチンはまた、ファジーフィンガープリント(fuzzy fingerprint)のような擬似固有の識別子を割り当てられてもよい。
<開示の実施例>
或るソフトウェアエコシステムは、Google Play、Apple Store、及びMicrosoft Storeのような“アプリストア(app store)”から配信されるアプリケーション及び他の実行可能オブジェクトのモデルに向かって移行している。この環境では、マルウェア作者は、アプリストアの選考から悪意のある機能を隠すことにより適合させてもよい。あるアンチマルウェア対策で検出することも困難になり得る1つの潜在的な方法は、例えば、比較的小さいが、望ましいユーザのクラスに目標を定めるために、ゲームのような有用又は所望のプログラムを構築し、これを特定の比較的希な条件のみで活性化する悪意のあるサブルーチンに注入することである(この種類の包含は、場合によっては“イースターエッグ(Easter egg)”と呼ばれる)。このシナリオでは、多くのユーザは、アプリケーションが予想された境界内で動作し、有用で楽しいと思うことを見出す。これらのユーザは、アプリケーションに良好なレビューを与え、従って、隠されたマルウェアの拡散を大きくする。
同様に、悪意のあるコードは、ソースコードのレポジトリに対して“書き込み”アクセスを有する人のコンピュータに歩み寄った後等に、開発者に賄賂を使うことにより、或いはソース制御システムへの無許可のアクセスを取得することにより、適法のソフトウェアに注入されてもよい。このような隠蔽されたマルウェア配信は、マス規模の攻撃と、政府支援の攻撃を含む目標を定めた攻撃とに使用可能である。
従って、或る場合には、マルウェアの識別を実行可能オブジェクトレベルに限定することが最適でない可能性がある。むしろ、出現しつつある脅威は、例えば以下を含む新たな攻撃手法に焦点を当ててもよい。
マルウェアルーチンを注入するためにリバースエンジニアリング或いは既存の実行可能オブジェクトを変更し、変更された実行可能オブジェクトをアプリストアに提供することにより感染ファイルを生成すること。
アプリストアを介して配信されるほとんど適法の実行可能オブジェクトを生成するが、希に実行されるマルウェアルーチンを含めてマルウェアとしての実行可能オブジェクトの識別を困難にすること。
これらの課題は、大規模な開発チーム及びサードパーティのソフトウェアアドオンの使用により更に悪化する可能性がある。一例の攻撃では、マルウェア作者は、オブジェクトコードのフォーマットで有用なサードパーティのライブラリを提供する。ライブラリは、ほとんど適法な機能と、希にのみ実行するマルウェアペイロードとを含んでもよい。この希な実行は、ライブラリのマルウェアの性質をマスクするのに役立つ可能性がある。例えば、ライブラリは、金融トランザクションをロギングし、ユーザが利用可能な資金で$100,000より多くの銀行アカウントにアクセスした場合にのみ活性化してもよく、この場合、アカウントが流出する。他の例では、マルウェアペイロードは、マーケティングエンティティに販売するためにユーザからプライベートデータを収集するが、GPS信号が存在し、有用なデータを提供するのに十分であるがマルウェアペイロードが希にのみ実行されることを確保するのに十分に小さくなるように構成されたリストから選択された郵便番号内にユーザがいることが分かった場合にのみデータを収集する。
この実行の希さは、マルウェアライブラリが容易に検出されないことを確保するのに役立ってもよい。ライブラリが一般的に使用される機能又は非常に有用な機能を提供し、多くのライセンスチームに無料又は安価に提供される場合、厳しい期限を満たすことを求める時間に追われた開発者は、ライブラリを使用することにそそのかされる可能性がある。従って、マルウェアライブラリは、多くの異なるアプリケーションに存在し、多くの異なるデバイスに配信される可能性がある。広範囲の異質性の配信はまた、悪意のあるペイロードが発見された後でも、マルウェアライブラリの全てのインスタンスを識別することを困難にする可能性がある。例えば、ペイロードは、第1の実行可能オブジェクトで識別されてもよく、これにより、第1の実行可能オブジェクトは、適切に検疫されて洗浄されてペイロードなしに再開発される。しかし、ライブラリを使用した全てのベンダを知らなければ、全ての感染ファイルを識別することは困難である。更に、ライブラリは、非限定的な例として、ウェブページからのスクリプト若しくは命令又はネットワーク接続を介して受信したコマンドのような、外部ソースから供給されたコードを実行又は翻訳解釈する機能を有してもよい。或る場合には、静的及び動的分析は、或る場合には“ボット”、“バックドア”又は“リモートシェル”機能と等価なこのような遠隔制御が実行される前に、アタッカーの正確な意図を検査することができない。
第2の例示的な攻撃シナリオでは、マルウェア作者は、アプリのような公衆利用可能な実行可能オブジェクトのコピーを入手し、マルウェア動作を挿入するようにアプリをリバースエンジニアリング又は変更する。作者は、例えば、ユーザが任意選択で選択し得る未検証のサードパーティのアプリレポジトリにアプリを配信してもよい。この場合、エンドユーザは、人気のある有料のアプリがサードパーティのアプリレポジトリにおいて無料で利用可能であり、所望のアプリの元の機能の全てを有するように見えることを見出してもよい。マルウェアペイロードが特定の条件のみで活性化するため、多くのユーザは、悪影響を受けなくてもよい。この場合、アプリの全てのコピーがマルウェアとして識別される必要はない。むしろ、変更されたもののみがフラグを付けられる必要がある。
第3の例示的な攻撃シナリオでは、マルウェア作者は、アプリのような実行可能オブジェクトの他の点で適法な開発者により合法的に雇われてもよい。この場合、ユーザは、マルウェア動作を、他の点で適法のアプリに内密に注入してもよく、特定の条件のみで活性化するようにマルウェアペイロードを構成することにより、その存在をマスクしてもよい。この場合、どのアプリにマルウェア作者が操作したか又はアクセスしたかが明らかにならない可能性があるため、どのアプリが影響を受けるかを識別することは困難になる可能性がある。
前述のことは、この明細書のシステム及び方法が有用に実施され得る非限定的な例により提供されている。
この明細書の例によれば、他の点で適法になり得る(しかし、必ずしも適法であるとは限らない)実行可能オブジェクトにおいてマルウェアペイロードを識別するシステム及び方法が提供される。一例では、レピュテーションクライアントは、実行可能オブジェクトを識別可能なサブルーチンに解析し、ファジーフィンガープリントのような擬似固有の識別子を各サブルーチンに割り当てる。この明細書では、“サブルーチン”は、いずれかのプログラミングサブルーチン、ルーチン、プロシージャ、関数、メソッド、クラス、オブジェクト、モジュール、又は実行可能命令を含むコードの同様の識別可能な部分を含んでもよい。サブルーチンは、明確なプロシージャにおける明確に規定された入口点及び出口点を有する必要はなくてもよい点に留意すべきである。マルウェア作者は、この明細書の開示を実現するシステムに対する設計変更として、頻繁に実行されるプロシージャ内に希に実行される悪意のあるコードを埋め込むことを試みてもよい。従って、或る場合には、明確に規定されたプロシージャの別の分岐は、その実行頻度が別々に評価され得るようなプロシージャとして別々に識別されてもよいことが予期される。
各サブルーチンが識別されて識別子を割り当てられると、レピュテーションクライアントは、実行可能オブジェクトをレピュテーションサーバに渡し、或いはローカル分析を実行し、実行可能オブジェクトは能動的又は受動的に分析される。分析は、集中型のレポジトリで行われてもよく、多くの現実の世界のユースケースに分散されてもよい。有利には、データは、粒度のサブルーチンレベルのコードの実行について複数の個々のクライアントから集約されてもよい。サブルーチンは、どのくらい頻繁にサブルーチンが実行されたかに基づいてランク又はスコアを提供される。サブルーチンがユーザからの注目すべき逆効果又は苦情なしに頻繁に実行された場合、これは、あまり疑わしくないとしてフラグが付けられてもよい。サブルーチンが希に実行され、特に実行が“奇妙な”動作又はユーザの苦情の報告により付随される場合、サブルーチンは疑わしいとしてフラグが付けられてもよい。疑わしいサブルーチンは、検疫、洗浄、又は或る場合には逆コンパイル及び人間のオペレータによる詳細な分析のような更なる詳細な分析を受けてもよい。有利には、サブルーチンは、その識別子によりいずれかの実行可能オブジェクトにおいて識別されてもよい。従って、マルウェアの識別及びマルウェア動作は、特定の実行可能オブジェクトの識別から分離されてもよい。
図1は、この明細書の1つ以上の例による分散レピュテーション環境のネットワークレベルの図である。この例では、複数のユーザ132は、複数のクライアントデバイス130を動作させる。各クライアントデバイスは、インターネット、イントラネット、WAN、LAN、企業ネットワーク、セキュリティ保護されたネットワーク等のようなネットワーク120に接続されてもよい点に留意すべきである。マルウェア作者170はまた、クライアントデバイス130-4を介してネットワーク120に接続する。アプリストア180が提供され、ネットワーク120に通信可能に結合される。レピュテーションサーバ110は、ネットワーク120に接続し、レピュテーションデータベース140に通信可能に結合される。この実施例では、レピュテーションデータベース140は、レピュテーションサーバ110に直接接続されたものとして開示されているが、レピュテーションデータベース140がサードパーティにより提供されてもよいこと、複数のデバイスに分散されてもよいこと、例えばアプリケーションプログラミングインタフェース(API:application programming interface)を介してアクセス可能でもよいことを含み、他の構成も可能であることが分かる。
一例では、ユーザ132は、クライアントデバイス130を動作させる。“クライアントデバイス”は、非限定的な例として、コンピュータ、パーソナルデジタルアシスタント(PDA:personal digital assistant)、ラップトップ若しくは電子ノートブック、セルラ電話、IP電話、iPhone(登録商標)、iPad(登録商標)、Microsoft Surface(登録商標)、Android(登録商標)電話、Google Nexus(登録商標)、又は命令を実行可能な他のデバイス、コンポーネント、エレメント若しくはオブジェクトを含み、いずれかの種類のノード、ユーザデバイスを含んでもよい。“ユーザ”は、クライアントデバイスを動作させること、使用すること、又はインタフェースすることが可能ないずれかの人、エンティティ、ソフトウェア、又はデバイスを含んでもよい。或るクライアントデバイス130は、例えば、遠隔制御のデバイス、センサ又は埋め込みシステムの場合、人間のユーザ相互作用なしに動作してもよいことが、ここで明白に予期される。例えば、クライアントデバイス130-5は、埋め込みシステム、遠隔センサ、ネットワークコントローラ、又は人間のユーザにより通常は動作されない他のデバイスでもよい。クライアントデバイス130-5の場合、ユーザ132は、クライアントデバイス130-5にデータを送信し、或いはクライアントデバイス130-5からデータを受信する、制御される埋め込みオペレーティングシステム又は外部システムでもよい。
或る場合には、複数のレピュテーションサーバ110を有すること、又は複数の種類のクライアントデバイス130を別々に扱うようにレピュテーションサーバ110を構成することが有利になってもよい。例えば、Microsoft Windows 7で実行可能なマルウェアペイロードは、前述の他のデバイスで実行可能でない可能性がある。むしろ、マルウェアペイロードは、特に目標を定めた特定のアーキテクチャに作用する必要があってもよい。しかし、この明細書は、単一のマルウェアペイロードが複数のクライアントデバイス130のプラットフォームに目標を定め得る状況を明確に予期する。例えば、マルウェアペイロードは、Java(登録商標)のようなクロスプラットフォーム言語で実現可能でもよく、複数のプラットフォームに共通のセキュリティ脆弱性を利用することが可能でもよい。
一例では、ユーザ132-1は、クライアントデバイス130-1を動作させ、クライアントデバイス130-1は、Android電話でもよい。この例では、多数の他のユーザもまた、同様に構成されたAndroid電話を動作させてもよく、実行可能オブジェクトを受信するアプリストア180にアクセスしてもよい。マルウェア作者170は、Android電話に目標を定めたマルウェアを生成したいと思ってもよく、前述の例示的な方法の1つ又は他の適切な方法によりこれを行ってもよい。
レピュテーションサーバ110は、例えば、アプリストア180のオペレータ又はサードパーティのセキュリティプロバイダにより運用されてもよい。更に、レピュテーションデータベースは、レピュテーションサーバ110のオペレータにより運用されてもよく、サードパーティにより提供されてもよい。一般論として、この明細書に開示されるエンティティは、具体的な構成に応じて別のエンティティでもよく、別のエンティティでなくてもよい。
レピュテーションサーバ110は、アプリストア180を介して配信される実行可能オブジェクト又はいずれかの適切な手段により配信される他の実行可能オブジェクトのレピュテーションを提供するように構成されてもよい。この明細書を通じて、“レピュテーション(reputation)”は、実行可能オブジェクト又はサブルーチンがマルウェアであるか否か或いはマルウェアを含むか否かの判断に関する信頼レベルを個々に或いは併せて表すいずれかの1つ以上のデータを含んでもよい。更に、この明細書の文脈において、レピュテーションは、全体の実行可能オブジェクトではなく、サブルーチン又はサブルーチンのグループに割り当てられてもよい。
図2は、この明細書の1つ以上の例による共通サブルーチンを含む複数のサブルーチンを含む複数の実行可能オブジェクトのブロック図である。この例では、実行可能オブジェクト210、220及び230は、複数のサブルーチンをそれぞれ含む。この例では、実行可能オブジェクト210は、サブルーチンA、B、C、D、E、F、G、及びHを含む。グラフの下に示すように、サブルーチンCは頻繁に実行される。サブルーチンE、F、及びHは、適度に頻繁に実行される。サブルーチンBは、希から適度に頻繁に実行される。サブルーチンA及びGは、希に実行される。
実行可能オブジェクト220には、サブルーチンI、J、K、C、D、L、F、M、及びNがある。特に、サブルーチンC及びDは、実行可能オブジェクト210と共通である。実行可能オブジェクト210のように、サブルーチンCは頻繁に実行される。サブルーチンI、J、F、及びMは、適度に頻繁に実行される。サブルーチンNは、希に実行される。サブルーチンLは決して実行されない。
実行可能オブジェクト230には、サブルーチンO、P、Q、F、C、R、及びSがある。同様に、サブルーチンCは非常に頻繁に実行される。サブルーチンFも同様に適度に頻繁に実行され、サブルーチンSも同様である。サブルーチンO、P、及びQは、希に実行される。サブルーチンRは、決して実行されない。
前述の例では、サブルーチンCは、頻繁に実行されて多くのアプリケーションに現れるため、比較的高い信頼度で高いレピュテーション(潜在的に適法であることを示す)を受け取ってもよい。サブルーチンFも、多くのアプリケーションに現れて適度に頻繁に実行されるため、比較的高いレピュテーションを受け取ってもよい。この明細書の文脈において、“高いレピュテーション”は、実行可能オブジェクト又はサブルーチンが適法であること及び/又はマルウェアがないことを高い信頼度まで示すいずれかのレピュテーションを含んでもよい。“低いレピュテーション”は、実行可能オブジェクト又はサブルーチンが適法であること及び/又はマルウェアがないことの低い信頼度に対応し、或いは逆に、実行可能オブジェクト又はサブルーチンがマルウェアに感染されている高い信頼度に対応する。“高いレピュテーション”及び“低いレピュテーション”の概念は、ここでは、1つ以上のレピュテーション尺度における少なくとも2つの反対の点を表すために開示されており、ここで特に明記しない限り、簡単な2値のレピュテーションの分類を意味することを意図するものではない。
サブルーチンCとは異なり、サブルーチンDは、希に実行されるものとして1つより多くのアプリケーションに現れるため、比較的疑わしくてもよい。従って、サブルーチンDは、人間のオペレータによる更なる分析のためにフラグが付けられてもよい。これは、例えば、逆コンパイル、シミュレーション、及び他の詳細な分析を含んでもよい。詳細な分析の後にサブルーチンDが希に必要な機能を備えた適法なサブルーチンであることが分かった場合、実行可能オブジェクトの一部としてオブジェクトDに直面した他のクライアントデバイスが、安全に実行可能であることを認識できるように、高いレピュテーションを手動で割り当てられてもよい。
決して実行されないサブルーチンL及びRもまた、比較的低いレピュテーションを割り当てられ、更なる詳細な分析又は人間の分析のためにフラグが付けられてもよい。更なる分析において、サブルーチンLがマルウェアを含むこと、及びサブルーチンRが維持されていない“死んだ(dead)”コード又はもはや有用でない“死んだ”コードを含むことが分かってもよい。この場合、双方のサブルーチンは、比較的低いレピュテーションスコアを受け取ってもよく、レピュテーションの更に微調整された制御が利用可能な或る実施例では、これらは、異なる種類のレピュテーションスコアを受け取ってもよい(例えば、サブルーチンRは、“排除”としてラベルが付けられてもよい)。例えば、サブルーチンLは、悪意のあるコードとしてフラグが付けられてもよい。サブルーチンRは、悪意がないが、依然として潜在的なセキュリティリスクがあるものとして識別する異なるフラグを受け取ってもよい。この理由は、使用されていないコード又は維持されていないコードは、マルウェア作者の攻撃ベクトルを含む可能性があるからである。従って、検疫、無効化、報告(例えば、ソフトウェア脆弱性の潜在的な源として)、又はサブルーチンRからのクライアントの保護を行うことが依然として望ましい可能性がある。
他の例では、実行可能オブジェクト210は、非常に高い全体レピュテーションを有してもよい。例えば、この理由は、評判の良いソフトウェアベンダにより提供された広く使用されるソフトウェアであり、実質的にマルウェアに関するユーザの苦情なしにかなりの時間の間に使用されているからである。この場合、サブルーチンA-Hの全ては、実行可能オブジェクト210から高いレピュテーションを継承してもよい。そのレピュテーションは、これらのサブルーチンが希に実行されるもの(実行可能オブジェクト220のサブルーチンD等)であっても、220及び230のような他の実行可能オブジェクトへのこれらのサブルーチンに従ってもよい。従って、この例では、サブルーチンDは、マルウェア動作を能動的に表し始めない限り、高いレピュテーションを有し続ける。
図3は、この明細書の1つ以上の例によるクライアントデバイス130のブロック図である。クライアントデバイス130は、メモリエレメント320に通信可能に結合されたプロセッサ310により制御される。例では、プロセッサ310は、バス370を介して他のシステムエレメントに通信可能に結合される。これらのエレメントは、非限定的な例として、ネットワークインタフェース340と、或る場合にはメモリエレメント320の一種でもよい記憶装置350と、ユーザインタフェース360とを含んでもよい。前述のエレメントのいずれかは、ハードウェア、ソフトウェア、ファームウェア、又はこれらのいずれかの組み合わせで実現されてもよいことを明確に意図する。
プロセッサ310は、例えば、実行可能ソフトウェア又はファームウェア命令を介して、クライアントデバイス130を制御するように構成される。“プロセッサ”は、非限定的な例として、マイクロプロセッサ、デジタルシグナルプロセッサ、フィールドプログラマブルゲートアレイ、プログラマブルロジックアレイ、特定用途向け集積回路、又は仮想マシンプロセッサを含み、ハードウェア、ソフトウェア、又はプログラム可能ロジックを提供するファームウェアのいずれかの組み合わせを含んでもよい。
メモリ320は、或る実施例では、比較的低い待ち時間の揮発性メモリでもよく、メインメモリ、キャッシュ、オンチップメモリ、L1メモリ、L2メモリ等を含んでもよい。この実施例では、プロセッサ310は、メモリ320との直接メモリアクセス構成で示されているが、他の実施例では、メモリ320は、システムバス370、他のバス、又は他の手段を介してプロセッサ310と通信してもよい点に留意すべきである。更に、この例では、メモリ320及び記憶装置350は、物理的又は概念的に別のデバイスとして示されているが、或る実施例では、メモリ320及び記憶装置350は、別のメモリエリアに分割されてもよく分割されなくてもよい物理的デバイスを共有してもよい。従って、ここに開示された構成は単なる例であり、限定ではないことが分かる。むしろ、メモリ及び記憶装置が別に言及される場合であっても、特に明記しない限り、単一の物理的又は論理的デバイスに具現されてもよいことを明確に意図する。
この例では、ネットワークインタフェース340は、アナログであれ、デジタルであれ、混合の信号であれ、クライアントデバイス130を他のコンピューティングデバイスに通信可能に結合するように構成されたいずれかの通信媒体を含む。ネットワークインタフェース340は、非限定的な例として、Wi-Fi、Ethernet、Firewire、光ファイバ、USB、シリアルインタフェース、赤外線、セルラネットワーク、デジタルPCSネットワーク、2Gデータネットワーク、3Gデータネットワーク、4G WiMAX、又は4G LTEデータネットワークを含んでもよい。
或る実施例では、ユーザインタフェース360は、クライアントデバイス130と相互作用する際にユーザを支援するために提供されてもよい。“ユーザインタフェース”は、リアルタイムであってもリアルタイムでなくても、ユーザがクライアントデバイス130と相互作用することを可能にするように構成されたハードウェア、ソフトウェア、及びファームウェアのいずれかの組み合わせを含んでもよい。例では、ユーザインタフェース360は、非限定的な例として、キーボード、マウス、ディスプレイモニタ、スピーカ、マイクロフォン、結合された入出力デバイスとして動作してもよい接触式ディスプレイ、及びカメラを含んでもよい。ユーザインタフェース360は、ユーザからの入力又は確認を求めるリアルタイムダイアログボックスを含み、グラフィカルユーザインタフェースのようなソフトウェアサービスを含んでもよい。
記憶装置350は、メモリ320の一種でもよい不揮発性メモリ媒体の例として開示されている。或る実施例では、メモリ320及び記憶装置350は、別のデバイスでもよく、メモリ320は、比較的低い待ち時間の揮発性メモリデバイスでもよく、記憶装置350は、比較的高い待ち時間の不揮発性メモリデバイスでもよい。記憶装置350はまた、ハードドライブ、ソリッドステートドライブ、外部記憶装置、RAID(redundant array of independent disks)、ネットワーク接続記憶装置、光記憶装置、テープドライブ、バックアップシステム、又は前述のいずれかの組み合わせのような他のデバイスでもよい。多くの他の構成も可能であり、この明細書の広い範囲内に含まれることを意図する。
一例では、メモリ320は、ここに記載のレピュテーションクライアント322を提供するように動作可能な実行可能命令を記憶している。メモリ320はまた、実行アプリ324のような実行状態の実行可能オブジェクトを有してもよい。記憶装置350はまた、停止状態又は静的状態でもよい実行可能オブジェクトを含んでもよい。レピュテーションクライアントエンジン322は、ここに開示された方法に従って、実行アプリ324(メモリ320内)及び記憶されたアプリ352(記憶装置350で静止中のデータ)の双方を分析するように構成されてもよい。或る実施例では、レピュテーションクライアントエンジン322は、実行のために(例えば、記憶されたアプリ352の一部として)記憶装置350からメモリ320にロードされた実行可能命令により提供されてもよい。命令は、例えば、図4の方法を実行することにより、プロセッサ310に対してここに記載のクライアントレピュテーションサービスを提供するように命令するように構成されてもよい。更に他の実施例では、レピュテーションクライアントエンジン322は、ハイパーバイザ内に提供されてもよく、仮想マシンに提供されてもよく、他の適切な仮想化プラットフォームに提供されてもよく、図4の方法のような適切な方法を実行するように構成された専用又は特殊目的のハードウェア、ソフトウェア、及び/又はファームウェアのいずれかの組み合わせとして提供されてもよい。同じ実施例又は他の実施例では、レピュテーションクライアントエンジン322は、クライアントデバイス130の残りからの適切な分離を提供するために、専用メモリで実行してもよく、別のプロセッサ又は他の信頼を受けた実行環境で実行してもよい。これは、マルウェア又はソフトウェアによるレピュテーションクライアント322の悪意のある操作又は偶発的な操作の双方を回避するのに役立ってもよい。
図4は、この明細書の1つ以上の例によるレピュテーションクライアントエンジンを提供する例示的な方法のフローチャートである。図3では、レピュテーションクライアント322は、クライアントデバイス130で実行するものとして開示されているが、レピュテーションクライアントは、レピュテーションサーバ110又は他のデバイスで実行してもよい点に留意すべきである。特定の実施例では、ここに開示されたステップはまた、複数のデバイスの間に分割されてもよい。例えば、クライアントデバイス130のバッテリ又は処理能力を保持するために、ここに開示されたステップのいくつかはクライアントデバイス130で実行されてもよく、他のものはレピュテーションサーバ110にオフロードされてもよい。
この例では、レピュテーションクライアント322は、クライアントデバイス130で実行し、“リアクティブ(reactive)”スクリーニングモデルを表す。このモデルでは、実行可能オブジェクトは、既存のレピュテーションなしに複数のクライアントデバイス130に展開されてもよい。実行可能オブジェクトがクライアントデバイス130で実行されると、実行可能オブジェクトのレピュテーションを更新するように実行プロファイルが構築される。他の実施例では、レピュテーションサーバ110及びクライアントデバイス130の双方は、図4の方法を実行してもよく、レピュテーションサーバ110は、基礎の識別を提供するために静的な分析を実行し、クライアントデバイス130は、レピュテーションを割り当てるために、動的な分析を実行する。
多くの他の組み合わせが、当業者に思い浮かび、これらは、この明細書の広い範囲内に含まれることを意図する。図4の方法及びこの明細書の他の方法のステップは、例のみとして特定の順序で開示されているが、取られるステップの順序は、別に明記される場合又は1つのステップが他のステップに続かなければならないことをこの開示の文脈が明白に明らかにする場合を除き、任意に再配置されてもよい点に更に留意すべきである。更に、1つのステップが明確又は必然的に他のものに続く場合、第2のステップが第1のステップの後に直接的に又は直ちに生じなければならないこと、介入するステップが生じなければならないこと、又は第2のステップが第1のステップの直接の結果、中間の結果、連続した結果でなければならないこと、又は第2のステップが第1のステップなしに生じることができないことを意味することを意図するものではない。
この例では、ブロック410において、レピュテーションクライアント322は、まず、例えば、アプリを含み、クライアントデバイス130での分析に利用可能な全ての実行可能オブジェクトを選択してもよい。選択ステップ410はまた、少なくとも1つの特性、イベント又はコンテキストに基づいて少なくとも1つの実行可能オブジェクトを選択すること(例えば、インストールされる前のダウンロードアプリを選択すること)を有してもよい。これは、実行アプリ324、記憶されたアプリ352、又はユーザが記憶装置350に記憶することを望むいずれかの実行可能オブジェクトのうち1つ又は全てを含んでもよい。選択はまた、例えば、常駐アプリのデータベースを生成又は更新することを含んでもよく、各実行可能オブジェクトの初期の全体レピュテーションを含んでもよい。初期のレピュテーションは、一例では“ゼロ”の状態に初期化されてもよく、他の非限定的な例ではレピュテーションサーバ110から受信してもよい。カタログ化もまた、個々のサブルーチンのアプリレピュテーションを生成して関連付けるためにメモリ空間又は構造を提供することを含んでもよい。
ブロック420において、各実行可能オブジェクトは、個々のサブルーチンに解析される。これは、例えば、非限定的な例として、関数のフッキング入口点(hooking entry point)を介して、全てのEIPが記録される完全な実行トレースを介して、又はメモリページへのアクセスの記録を介して、実行可能オブジェクトの実行プロファイルを表すフィールドテレメトリ(field telemetry)を収集することを含んでもよい。後者は、一例では、IntelのTMSL(trusted memory services layer)、又はDeepSAFE若しくはDeepDefenderを含むMcAfee, Inc.から入手可能な商品により提供されてもよい。個々のサブルーチンを解析することは、関数の標準的なコンパイラスケルトンを介して、逆コンパイル後のコール(呼び出し)フローグラフの分析を介して、又は他の適切な方法を介して、1回より多く見つかったコード部分を識別することを更に有してもよい。
解析への静的な手法は、MOV BP,SPにより後続されるPUSH BPのような、サブルーチンの入口点で一般的に実行される命令を識別することを含んでもよい。サブルーチンの終わりも同様に、RETにより後続されるPOP BPのような、サブルーチンの終わりに一般的に見つかる命令を介して識別されてもよい。他の例では、レピュテーションクライアント322は、実行可能オブジェクトを逆コンパイルし、フローグラフを再構成してもよい。
更なる動的な手法は、CPU分岐(CALL、RET、JMP命令)を監視すること、又は戻りアドレスのスタックを監視することを含んでもよい。Intelプロセッサのような特定のプロセッサ内に構築されたコールフローを再構成する際に支援するための分岐トレース及びブレークポイント(ハードウェア及びソフトウェア)のような機構も存在する。しかし、前述のものの全ては、非限定的な例のみとして開示されており、サブルーチンを解析及び識別する多くの他の可能な方法が存在することが認識されるべきであり、これらは、この明細書の広い範囲に含まれることを意図する。
解析はまた、分析のために実行可能オブジェクトの変更されたコピーを生成することを含んでもよい。この場合、特定のサブルーチンは、サブルーチンが実行される毎に更新される頻度カウンタ(又はカウントを行うルーチンへの呼び出し)を注入するように変更されてもよい。
各サブルーチンが識別されると、ブロック430において、各サブルーチンは、フィンガープリントされ、これは、前述の擬似固有の識別子を割り当てられることを意味する。これは、例えば、各サブルーチンの暗号ハッシュを計算することを含んでもよい。特に、暗号ハッシュは、サブルーチンが厳密に同一である場合にのみマッチし、これは、同じコンパイラオプションでコンパイルされた共通のコードの多くのユニットの場合でもよい。SHA2又はSHA3のような現代のハッシュは、ほとんどの衝突を回避するのに適しており、このことは、ハッシュ手法の擬似固有の性質を真に固有にするのに役立つ。従って、この明細書で使用されるときに“擬似固有”は、使用されるアプリケーションの目的で十分にほぼ固有であり、真に固有である必要はないが、真に固有でもよく、統計的に極めて低い衝突確率により特徴付けられる識別子を示す。
しかし、強力なハッシュは、異なるコンパイラオプションで同じソースコードを単にコンパイルしたことを含み、ささいな変更を除いて同一であるコードを識別しない。一例では、実質的に同一であるがわずかに異なるサブルーチンのマッチングを改善するために、“ファジーハッシュ(fuzzy hashing)”又は“ファジーフィンガープリント(fuzzy fingerprinting)”が使用されてもよい。例えば、テキスト文字列により良くマッチさせるために、テキスト文字列は全て大文字又は全て小文字に変換されてもよい。Intel/AMD x32/x64コードにマッチさせるために、メモリ参照は、例えばゼロ又は連番で除去及び置換され、CPUオペコードのみがハッシュされるように残してもよい。例えば、ADD AX,[2345]により後続されるMOV AX,[1234]の代わりに、ファジーフィンガープリントは、ADD AX,[1]により後続されるMOV AX,[0]をハッシュする。これらの手法及び同様の手法は、わずかに変更されたコード部分のマッチングを改善し得る。
例えば、CTPH(context-triggered piecewise hashes)を使用するSSDEEPのような他のファジーハッシュ技術も使用されてもよい。異なるサブルーチンにある共通の部分列の辞書も構築されてもよく、サブルーチンは、共通の部分列のサイズ及び頻度に基づいてマッチされてもよい。
サブルーチンの識別を更にロバストにするために、プロセスとの複数のアクティブなマルウェア干渉の可能性を回避するために、改変のないフィンガープリント(tamper-free fingerprinting)を実行することが有利になり得る。これは、例えば、非限定的な例として、ハイパーバイザのような信頼を受けた実行環境(TEE:trusted execution environment)内、OSカーネル内、或いはIntel Secure Guard Extension SGX内、Intel vPro内、安全なエレメント若しくはファームウェア内でハッシュ又はフィンガープリントを実行することにより実現されてもよい。ハッシュステップを強化する他の方法は、レピュテーションサーバ110のような他の信頼を受けたコンピュータへの安全なネットワーク接続を介してハッシュするオブジェクトを送信することを含んでもよい。或る実施例では、全体のレピュテーションクライアント322は、TEEに配置されてもよい。
ここに開示されたフィンガープリント技術は、非限定的な例のみとして与えられている点に留意すべきであり、サブルーチンをフィンガープリントするいずれか適切な技術がこの明細書の広い範囲に含まれるべきであることを意図する。
ブロック440において、レピュテーションクライアントは、既知のレピュテーションを扱う。これらの既知のレピュテーションは、この方法の前の繰り返しの結果でもよく、レピュテーションサーバ110から受信されてもよい。この扱いは、非限定的な例として、既知の又は前に計算されたレピュテーションスコアを特定のサブルーチン又は実行可能オブジェクトに割り当てることを含んでもよい。マルウェアとして印が付けられた実行可能オブジェクトでは、このオブジェクトは、検疫、削除、無効化、又はその他に措置が行われてもよい。マルウェアを含む他の点で適法な実行可能オブジェクトでは、例えば、実行可能オブジェクトから原因となるサブルーチンをリンク解除すること、センシティブなリソースへのアクセスをブロックするように権限を再構成すること、悪意のある動作を除去したサブルーチンの“洗浄(scrubbed)”されたバージョンとサブルーチンを置換すること、実行することを妨げるシミュレーションされたデータをサブルーチンに提供すること、又は有害な行為を犯すことからサブルーチンを妨げることを含む措置ステップが行われてもよい。例えば、ユーザが特定の郵便番号内にいることが分かった場合にのみサブルーチンが活性化する場合、サブルーチンは、リストにない誤った郵便番号を絶えず供給されてもよい。この方法が十分な粒度で定められている場合、これは、ユーザの所望の機能を実行するために適法なGPSデータにそうでなければアクセスする必要がある場合であっても行われてもよい。これらの場合、誤った地理的データは、全体としての実行可能オブジェクトではなく、影響を受けたサブルーチンにのみ供給されてもよい。
ブロック450において、頻度スコアは、識別されたサブルーチンに割り当てられる。頻度は、使用中にサブルーチンが実行された回数を含んでもよく、また実行可能オブジェクト内でのサブルーチンへの呼び出しの数の静的な分析を含んでもよい。従って、ここで、頻度が複数の要因を含んでもよく、これらの複数の要因の組み合わせから導出してもよいことが明白に予期される。レピュテーションは、異なる頻度要因の重みを含んでもよいことが更に予期される。例えば、サブルーチンが実際に実行される回数は、サブルーチンへの静的な呼び出しの数より比較的重要でもよい。従って、一例のレピュテーションアルゴリズムは、実際に実行された合計回数及び静的な呼び出しの合計数への加重平均を割り当てることを含んでもよい。他の例のレピュテーションアルゴリズムでは、2つの要因が別々にトラッキングされ、信頼レベルは、一方又は双方がそれぞれの閾値より上又は下であるか否かに基づいてもよい。更に他の例では、サブルーチンが現れる異なるアプリケーションの数は、サブルーチンの他の信頼指標を提供してもよい。例えば、サブルーチンが多くの異なるアプリケーションに現れ、全てのアプリケーションに渡って非常に希に実行される場合、悪意のあるサブルーチンとしてフラグが付けられ、更なる人間の分析を受けてもよい。他の例では、多くの異なるアプリケーションに現れ、全てのアプリケーションにわたって頻繁に実行されるサブルーチンは、あまり悪意のあるものではないとしたレピュテーションを受け取ってもよい。ユーザの苦情の頻度及び重大性は、特に、特定のサブルーチンの実行に相互に関係している場合には、この明細書で考慮される頻度要因になってもよい。特定の実施例では、レピュテーションクライアント322は、生の頻度スコアのみを提供してもよく、他の実施例では、レピュテーションクライアント322は、頻度スコアに基づいてレピュテーションスコアを計算してもよい点に留意すべきである。
或る実施例では、頻度スコアの計算はまた、特別な設備又は機器を含んでもよい。例えば、特定のデバイスは、例えば、Intel TMSLライブラリ、ブレークポイント、又はCPU分岐履歴を含む、プロセッサ又はメモリの監視のための適切なハードウェアのサポートを備えてもよい。他の例では、頻度データは、コードカバレッジテレメトリ(code coverage telemetry)を介して収集される。この例では、頻度データは、クライアントデバイス130から収集されてもよく、非限定的な例として、仮想化環境内、サンドボックス若しくはハイパーバイザ内又はエミュレータ内を含む隔離された環境での事前スクリーニングの間に収集されてもよい。これは、実行可能オブジェクトを目標のシステムから隔離してもよく、このことは、実行可能オブジェクトがまだレピュテーションスコアを有さない場合に特に有用になり得る。一実施例では、隔離された環境は、レピュテーションサーバ110に直接結合されてもよく、これらのレピュテーションを生成するために未知のアプリでの分析を実行してもよい。隔離された環境での実行は、シミュレーションされたプライベートユーザデータ又はユーザ入力を提供することにより強化されてもよく、このことは、マルウェア動作を識別するのに役立ってもよい。このようなシミュレーションの例は、2012年12月21日に出願された“User-Driven Emulation of Applications”という名称の同時係属の米国出願13/723,495に提供されており、これを参照により援用する。例えば、隔離された環境では、実行可能オブジェクトは、位置データ、連絡先リスト、キーストローク又は履歴書を含むシミュレーションされたプライベートユーザデータを提供されてもよい。シミュレーションされたプライベートユーザデータはまた、実行可能オブジェクトが銀行、金融、医療又はソーシャルネットワーキングのサイト又はリソースへのアクセスのような“スパイ行為”を試み得るシミュレーションされたバックグラウンドタスクを含んでもよい。
移動デバイスのバッテリを保持するために、頻度計算は、デバイスが外部電源にプラグ接続されている場合に限定されてもよい。
更に他の例では、頻度スコアは、コードの複数の“リーフ”部分から、加えて(又はその代わりに)コールフローグラフの選択された分岐(1つの高いレベルのサブルーチンから呼び出されたリーフの集合)に関連付けられてもよい。これは、親ルーチン及びその子の双方の更なる階層的な頻度トラッキングを提供してもよい。これは、ダイナミックリンクライブラリ又は共有オブジェクトファイルへの呼び出しを行う実行可能ファイルのような複数のコンポーネントを含むソフトウェアのレピュテーションを計算するのに役立ってもよい。例では、実行可能オブジェクト及び全てのライブラリ並びにこれらの機能及びエクスポートは、頻度に考慮されてもよい。
ブロック460において、頻度スコアは、レピュテーションサーバ110に提供される。しかし、生の頻度スコアの提供は、ここでは非限定的な例のみとして開示されており、或る実施例では、ブロック450は、実際のレピュテーションスコアの計算を含んでもよい点に留意すべきである。この場合、レピュテーションは厳密に内部で使用されてもよく、レピュテーションサーバ110への転送のために計算されてもよい。
ブロック460において、計算された頻度スコア(又はレピュテーションスコア)は、他のデバイスから受信した他のスコアと集約するために、レピュテーションサーバ110に提供されてもよい。
特定の実施例では、この方法は、更なる実行可能オブジェクトの選択のために、或いは既存の実行可能オブジェクトで収集されたデータの改良のために、ブロック410に戻ってもよい。
図5は、この明細書の1つ以上の例によるレピュテーションサーバ110のブロック図である。この例では、レピュテーションサーバ110は、プロセッサ510により制御される。メモリ520は、プロセッサ510に通信可能に結合される。レピュテーションサーバ110の他のシステムコンポーネントは、システムバス570を介してプロセッサ510に接続する。レピュテーションサーバ110はまた、記憶装置550と、ネットワークインタフェース540とを含んでもよい。プロセッサ510は、図3のプロセッサ310と同様のものでもよい。同様に、メモリ520は、メモリ320と同様のものでもよく、記憶装置550は、記憶装置350と同様のものでもよく、ネットワークインタフェース540は、ネットワークインタフェース340と同様のものでもよい。
この例では、ネットワークインタフェース540は、レピュテーションサーバ110をネットワーク120に通信可能に結合するように構成されてもよい。或る場合には、記憶装置550は、レピュテーションデータベース140を含んでもよく、他の場合には、レピュテーションデータベース140は、別々に提供されてもよい。
メモリ520は、レピュテーションサーバソフトウェア522を記憶してもよい。或る実施例では、レピュテーションサーバエンジン522は、実行のために記憶装置550からメモリ520にロードされた実行可能命令により提供されてもよい。命令は、プロセッサ510に対して、例えば図6の方法を実行することにより、ここに記載のクライアントサーバサービスを提供するように命令するように構成されてもよい。更に他の実施例では、レピュテーションサーバエンジン522は、ハイパーバイザ内に提供されてもよく、仮想マシンに提供されてもよく、他の適切な仮想化プラットフォームに提供されてもよく、図6の方法のような適切な方法を実行するように構成された専用又は特殊目的のハードウェア、ソフトウェア、及び/又はファームウェアのいずれかの組み合わせとして提供されてもよい。同じ実施例又は他の実施例では、レピュテーションサーバエンジン522は、レピュテーションサーバ110の残りからの良好な分離を提供するために、専用メモリで動作してもよく、別のプロセッサ又は他の信頼を受けた実行環境で実行してもよい。
図6は、この明細書の1つ以上の例によるレピュテーションサーバエンジンを提供する方法のフローチャートである。この例によれば、ブロック610において、レピュテーションサーバ110は、1つ以上のクライアントデバイス130からデータを受信する。データは、例えば、実行可能オブジェクト又はサブルーチンの頻度スコア又はレピュテーションスコアを含んでもよい。
ブロック620において、マスターカタログ(例では、十分な実行可能オブジェクト及びサブルーチンをカバーする)は、例えば、レピュテーションデータベース140に含まれるように更新されてもよい。更新は、マスターアプリカタログに以前にないアプリ又はサブルーチンを追加すること、又はその他にクライアントデバイス130から受信した実行可能オブジェクト及びサブルーチンについてのデータを保持するようにマスターカタログを用意することを含んでもよい。
ブロック630において、実行可能オブジェクト及びサブルーチンは、レピュテーションデータベース140の既存の実行可能オブジェクト及びサブルーチンに相互参照されてもよく、これらがマッチするものとして識別されることを可能にする。ブロック640において、レピュテーションスコアは、頻度に基づいて計算され、レピュテーションデータベース140は、新たなレピュテーションスコアで更新されてもよい。前述のように、或る場合には、クライアントデバイス130は、ローカルでレピュテーションスコアを計算していてもよい。この場合、“グローバル”レピュテーションスコアは、クライアントデバイスにより提供されたレピュテーションスコアに基づいて計算されてもよい。他の実施例では、クライアントデバイス130により提供されたレピュテーションスコアは、レピュテーションサーバ110により計算されたグローバルレピュテーションスコアを優先して破棄されてもよい。レピュテーションサーバ110でレピュテーションスコアを計算する多くのアルゴリズムが可能であり、特許請求の範囲を含むこの明細書の範囲は、明記しない限りいずれかの特定のアルゴリズムに限定されることを意図するものではないことが認識されるべきである。
或る実施例では、レピュテーションスコアはまた、対応する開発者又はチームのレピュテーションを考慮してもよい。例えば、会社を退職した開発者、疑わしい開発者、逮捕された開発者、悪意のあるソフトウェア組織との繋がりが知られている開発者、又は他に疑わしい個人的なレピュテーションを有する開発者は、開発したコードに更なる精査を認めてもよい。或る場合には、ソフトウェア開発会社からの協力が有利になり得る。同様の考慮は、非限定的な例として、外部ライブラリ、下請け、及びオープンソースプロジェクトのようなコードのサードパーティに当てはまってもよい。例えば、CVS(concurrent versioning system)からの確証記録は、どの開発者がどのサブルーチンを任されているかを決定するために使用されてもよい。頻度及びレピュテーションデータはまた、APIを介してソフトウェア開発チームに提供し戻されてもよく、このことは、会社が開発プロセスを改善して自己の開発プロセスに更に大きい見識を得ることに役立ってもよい。
ブロック650において、サブルーチン又は実行可能オブジェクトの特定のクラスは、低い頻度に基づくレピュテーションスコアを有することに基づいて“疑わしい”として指定されてもよい。これらは、例えば人間のオペレータによる更なる詳細な分析に指定されてもよい。人間のオペレータからの詳細な分析が、悪意のあるコードを含むものとしてこれらのサブルーチン及び実行可能オブジェクトを明らかにした場合、これらは、マルウェアとしてフラグが付けられてもよく、措置ステップが行われてもよい。
ブロック660において、既知のオブジェクトのレピュテーションデータは、クライアントデバイス130に配信し戻されてもよい。レピュテーション情報は、APIを介してネットワークを介したサービスとして提供されてもよい。或る実施例では、更なるサブルーチン及び実行可能オブジェクトの処理のために、実行はブロック610に戻ってもよい。
前述のことは、当業者がこの開示の態様をより良く理解し得るように、複数の実施例の特徴を概説している。当業者は、ここに紹介された実施例の同じ目的を実行し、及び/又は同じ利点を実現する他の処理及び構成を設計又は変更する基礎として、この開示を容易に使用し得ることを認識するべきである。当業者はまた、このような等価な構成がこの開示の要旨及び範囲を逸脱しないこと、この開示の要旨及び範囲から逸脱することなく様々な変更、置換及び代替を行い得ることも認識するべきである。
この開示の特定の実施例は、システムオンチップ(SOC:system on chip)中央処理装置(CPU:central processing unit)パッケージを容易に含んでもよい。SOCは、コンピュータ又は他の電子システムのコンポーネントを単一のチップに統合する集積回路を表す。これは、デジタル、アナログ、混合の信号、及び無線周波数機能を含んでもよい。これらの全ては、単一のチップ基板に提供されてもよい。他の実施例は、複数のチップが単一の電子パッケージ内に位置し、電子パッケージを通じて相互に密に相互作用するように構成されたマルチチップモジュール(MCM:multi-chip-module)を含んでもよい。様々な他の実施例では、デジタル信号処理機能は、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)、及び他の半導体チップ内の1つ以上のシリコンコアに実現されてもよい。
例示的な実現では、ここに概説した処理動作の少なくとも一部はまた、ソフトウェアで実現されてもよい。或る実施例では、これらの特徴の1つ以上は、開示された図面のエレメントの外部に提供されたハードウェアに実現されてもよく、意図した機能を実現するためにいずれか適切な方式で統合されてもよい。様々なコンポーネントは、ここに概説した動作を実現するために協調し得るソフトウェア(又は往復動作するソフトウェア(reciprocating software))を含んでもよい。更に他の実施例では、これらのエレメントは、この動作を容易にするいずれか適切なアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インタフェース、又はオブジェクトを含んでもよい。
更に、記載のマイクロプロセッサに関連するコンポーネントのいくつかは、除去されてもよく、他に統合されてもよい。一般的な意味では、図面に示す構成は、表現において論理的になり得るが、物理的なアーキテクチャは様々な並び替え、組み合わせ、及び/又はこれらのエレメントのハイブリッドを含んでもよい。ここに概説した動作目的を実現するために、数え切れないほどの可能な設計構成が使用可能である点に留意することは避けられない。従って、関連するインフラストラクチャは、無数の代替構成、設計選択肢、デバイスの可能性、ハードウェア構成、ソフトウェア実装、設備オプション等を有する。
いずれか適切に構成されたプロセッサコンポーネントは、ここに詳細に説明した動作を実現するために、データに関連するいずれかの種類の命令を実行することができる。ここに開示されたいずれかのプロセッサは、エレメント又は物品(例えば、データ)を1つの状態又は物から他の状態又は物に変換してもよい。他の例では、ここに概説したいくつかの動作は、固定のロジック又はプログラム可能ロジック(例えば、プロセッサにより実行されるソフトウェア及び/又はコンピュータ命令)で実現されてもよく、ここで識別されたエレメントは、何らかの種類のプログラム可能プロセッサ、プログラム可能デジタルロジック(例えば、フィールドプログラマブルゲートアレイ(FPGA)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM))、デジタルロジックを含むASIC、ソフトウェア、コード、電子命令、フラッシュメモリ、光ディスク、CD-ROM、DVD ROM、磁気若しくは光学カード、電子命令を記憶するのに適した他の種類の機械読み取り可能媒体、又はこれらのいずれか適切な組み合わせでもよい。動作中に、プロセッサは、必要な場合には特定のニーズに基づいて、いずれか適切な種類の過渡的でない記憶媒体(例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フィールドプログラマブルゲートアレイ(FPGA)、消去可能プログラム可能読み取り専用メモリ(EPROM)、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)等)、ソフトウェア、ハードウェア、又は他の適切なコンポーネント、デバイス、エレメント若しくはオブジェクトに情報を記憶してもよい。更に、プロセッサにおいてトラッキング、送信、受信、又は記憶される情報は、特定のニーズ及び実現に基づいて、いずれかのデータベース、レジスタ、テーブル、キャッシュ、キュー、制御リスト又は記憶構造に提供されてもよい。これらの全ては、いずれか適切な時間枠に参照されてもよい。ここで説明したメモリアイテムのいずれかは、広い用語‘メモリ’の中に含まれるものとして解釈されるべきである。同様に、ここに記載の潜在的な処理エレメント、モジュール及び機械は、広い用語‘マイクロプロセッサ’又は‘プロセッサ’の中に含まれるものとして解釈されるべきである。
ここに記載の機能の全部又は一部を実現するコンピュータプログラムロジックは、ソースコード形式、コンピュータ実行可能形式、及び様々な中間形式(例えば、アセンブラ、コンパイラ、リンカ又はロケータにより生成された形式)を含むが、これらに限定されない様々な形式で具現される。例では、ソースコードは、様々なオペレーティングシステム又はオペレーティング環境で使用されるオブジェクトコード、アセンブリ言語、又はOpenCL、Fortran、C、C++、JAVA(登録商標)、Python、Perl、JavaScript(登録商標)若しくはHTMLのようなハイレベル言語のような様々なプログラミング言語で実現された一連のコンピュータプログラム命令を含む。ソースコードは、様々なデータ構造及び通信メッセージを規定して使用してもよい。ソースコードは、(例えば、インタープリタを介して)コンピュータ実行可能形式になってもよく、ソースコードは、(例えば、翻訳器、アセンブラ、又はコンパイラを介して)コンピュータ実行可能形式に変換されてもよい。
前述の実施例の説明では、コンデンサ、バッファ、グラフィックエレメント、相互接続ボード、クロック、DDR、カメラセンサ、ディバイダ、インダクタ、抵抗、増幅器、スイッチ、デジタルコア、トランジスタ、及び/又は他のコンポーネントは、特定の回路のニーズに対応するために、容易に交換、置換又は変更され得る。更に、補足的な電子デバイス、ハードウェア、過渡的でないソフトウェア等の使用は、この開示の教示を実現するための同等に実行可能な選択肢を提供する点に留意すべきである。
一例では、図面のいずれかの数の電気回路は、関連する電子デバイスの基板上に実現されてもよい。基板は、電子デバイスの内部電子システムの様々なコンポーネントを保持し、他の周辺機器のためのコネクタを更に提供することができる一般的な回路ボードでもよい。より具体的には、基板は、システムの他のコンポーネントが電気的に通信することができる電気接続を提供してもよい。いずれか適切なプロセッサ(デジタルシグナルプロセッサ、マイクロプロセッサ、サポートするチップセット等)、メモリエレメント等は、特定の構成上のニーズ、処理需要、コンピュータ設計等に基づいて基板に適切に結合され得る。外部記憶装置、更なるセンサ、オーディオ/ビデオ表示のためのコントローラ、及び周辺デバイスのような他のコンポーネントは、プラグインカードとして、或いはケーブルを介して基板に接続されてもよく、基板自体に統合されてもよい。他の例では、図面の電気回路は、スタンドアローンモジュール(例えば、特定のアプリケーション又は機能を実行するように構成されたコンポーネント及び回路に関連するデバイス)として実現されてもよく、電子デバイスのアプリケーション特有のハードウェアへのプラグインモジュールとして具現されてもよい。
ここに提供された複数の例を用いて、2つ、3つ、4つ又はそれ以上の電気コンポーネントに関して相互作用が記載されることがある点に留意すべきである。しかし、これは、明瞭性及び例示のみの目的で行われている。システムは、いずれか適切な方式で統合されてもよいことを認識するべきである。同様の設計選択肢の中で、図面の示されたコンポーネント、モジュール及びエレメントのいずれかは、様々な可能な構成で組み合わされてもよく、これらの全てはこの明細書の広い範囲内にあることは明らかである。特定の場合には、限られた数の電気エレメントを参照することによってのみ、所与の一式のフローの機能の1つ以上を説明することが容易である場合がある。図面の電気回路及びその教示は、容易に拡張可能であり、多数のコンポーネント及び更に複雑/高度な配置及び構成に対応可能であることが認識されるべきである。従って、提供される例は、多数の他のアーキテクチャに潜在的に適用されるため、範囲を限定するものであるべきでなく、電気回路の広い教示を抑制するものであるべきではない。
複数の他の変更、置換、変形、代替及び修正は、当業者に明らかになり、この開示は、特許請求の範囲内に入るこのような変更、置換、変形、代替及び修正を全て含むことを意図する。米国特許商標庁(USPTO)を支援するため、更に、特許請求の範囲を解釈する際にこの出願に対して発行されたいずれかの特許のいずれかの読者を支援するため、出願人は、出願人が(a) “手段”又は“ステップ”という用語が特定の請求項で特に使用されない限り、出願日において存在するU.S.C.セクション112の第6段落(6)を特許請求の範囲のいずれかが引き起こすことを意図するものではなく、(b)明細書のいずれかの言及によって、そうでなければ特許請求の範囲に反映されない方法でこの明細書を限定することを意図するものではない。
<例示的な実施例の実現>
非限定的な例として、例1:実行可能オブジェクトの頻度に基づく分類を実行する装置であって、メモリに通信可能に結合されたプロセッサと、ネットワークインタフェースと、プロセッサに動作可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを各サブルーチンに割り当てるように動作可能なレピュテーションクライアントエンジンとを有する装置が開示される。
例2:レピュテーションクライアントエンジンは、ネットワークインタフェースに実行頻度スコアを提供し、ネットワークインタフェースで実行可能オブジェクトのレピュテーションスコアを受信するように更に動作可能である、例1に記載のレピュテーションクライアントが開示される。
例3:実行頻度スコアを各サブルーチンに割り当てることは、実行可能オブジェクトを実行し、サブルーチンへの呼び出しを記録することを更に有する、例1又は2に記載のレピュテーションクライアントが開示される。
例4:レピュテーションクライアントエンジンは、隔離された環境で実行可能オブジェクトを実行するように更に動作可能である、例1〜3のいずれかに記載のレピュテーションクライアントが開示される。
例5:実行可能オブジェクトを複数のサブルーチンに解析することは、頻度カウンタをサブルーチンに注入するように実行可能オブジェクトのコピーを変更することを更に有する、例1〜4のいずれかに記載のレピュテーションクライアントが開示される。
例6:例1〜5のいずれかに記載のレピュテーションクライアントエンジンを提供するようにプロセッサに対して命令するように動作可能な実行可能命令を記憶した1つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
例7:メモリに通信可能に結合されたプロセッサと、ネットワークインタフェースと、プロセッサに通信可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てるように動作可能なレピュテーションサーバエンジンとを有するレピュテーションサーバが開示される。
例8:レピュテーションサーバエンジンは、複数のサブルーチンのレピュテーションスコアに少なくとも部分的に基づいて、実行可能オブジェクトのレピュテーションスコアを計算し、ネットワークインタフェースを介してレピュテーションスコアの少なくとも1つを複数のレピュテーションクライアントに配信するように更に動作可能である、例7に記載のレピュテーションサーバが開示される。
例9:レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを更に有する、例8又は9に記載のレピュテーションサーバが開示される。
例10:実行可能オブジェクトを複数のサブルーチンに解析することは、複数のサブルーチンに関するデータをレピュテーションクライアントから受信することを更に有する、例8〜9のいずれかに記載のレピュテーションサーバが開示される。
例11:レピュテーションスコアを各サブルーチンに割り当てることは、各サブルーチンの実行頻度スコアをレピュテーションクライアントから受信することを更に有する、例8〜10のいずれかに記載のレピュテーションサーバが開示される。
例12:レピュテーションスコアを各サブルーチンに割り当てることは、擬似固有のフィンガープリントを各サブルーチンに割り当て、マッチするサブルーチンの頻度又はレピュテーションスコアについてレピュテーションデータベースに問い合わせるために、擬似固有のフィンガープリントを使用することを更に有する、例8〜11のいずれかに記載のレピュテーションサーバが開示される。
例13:レピュテーションスコアを各サブルーチンに割り当てることは、複数の実行可能オブジェクトの間の実行頻度を有するサブルーチンの実行頻度スコアを受信することを更に有する、例8〜12のいずれかに記載のレピュテーションサーバが開示される。
例14:レピュテーションサーバエンジンは、隔離された環境内で実行可能オブジェクトを実行し、この実行頻度に基づいてサブルーチン頻度スコアを割り当てるように更に動作可能である、例8〜13のいずれかに記載のレピュテーションサーバが開示される。
例15:レピュテーションスコアを各サブルーチンに割り当てることは、実行可能オブジェクトを静的に分析することを更に有する、例8〜14のいずれかに記載のレピュテーションサーバが開示される。
例16:レピュテーションサーバエンジンは、更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けるように更に動作可能である、例8〜15のいずれかに記載のレピュテーションサーバが開示される。
例17:実行可能オブジェクトのレピュテーションは、複数のサブルーチンのレピュテーションに少なくとも部分的に基づく、例8〜16のいずれかに記載のレピュテーションサーバが開示される。
例18:レピュテーションサーバエンジンは、実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを複数のサブルーチンに割り当てるように更に動作可能である、例8〜17のいずれかに記載のレピュテーションサーバが開示される。
例19:レピュテーションサーバエンジンは、擬似固有のフィンガープリントを少なくとも1つのサブルーチンに割り当て、複数の実行可能オブジェクトの間でサブルーチンの実行頻度スコアを計算し、レピュテーションスコアを実行頻度スコアに関連付けるように更に動作可能である、例8〜18のいずれかに記載のレピュテーションサーバが開示される。
例20:擬似固有のフィンガープリントをサブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、例9に記載のレピュテーションサーバが開示される。
例21:レピュテーションサーバエンジンは、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別するように更に動作可能である、例8〜20のいずれかに記載のレピュテーションサーバが開示される。
例22:レピュテーションサーバエンジンは、低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別するように更に動作可能である、例8〜21のいずれかに記載のレピュテーションサーバが開示される。
例23:例8〜22のいずれかに記載のレピュテーションサーバエンジンを提供するように動作可能な実行可能命令を記憶した1つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
例24:実行可能オブジェクトのレピュテーションを計算する方法であり、コンピューティングデバイスで実行可能な方法であって、実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを各サブルーチンに割り当て、実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当て、サブルーチンのレピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てることを有する方法が開示される。
例25:レピュテーションスコアを実行可能オブジェクトに割り当てることは、擬似固有の識別子をサブルーチンに割り当て、前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つけ、サブルーチンの実行頻度を集約することを更に有する、例24に記載の方法が開示される。
例26:レピュテーションサーバエンジンを提供する方法であって、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てることを有する方法が開示される。
例27:レピュテーションを実行可能オブジェクトに割り当て、実行可能オブジェクトのレピュテーションは、サブルーチンのレピュテーションに少なくとも部分的に基づくことを更に有する、例26に記載の方法が開示される。
例28:更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けることを更に有する、例26又は27に記載の方法が開示される。
例29:レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを有する、例26〜28のいずれかに記載の方法が開示される。
例30:レピュテーションスコアを各サブルーチンに割り当てるように動作可能な命令は、実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアをサブルーチンに割り当てるように更に動作可能である、例26〜29のいずれかに記載の方法が開示される。
例31:各サブルーチンのレピュテーションスコアを割り当てるように動作可能な命令は、擬似固有のフィンガープリントをサブルーチンに割り当て、複数の実行可能オブジェクトの間でサブルーチンの実行頻度スコアを計算し、レピュテーションスコアを実行頻度スコアに関連付けるように更に動作可能である、例26〜30のいずれかに記載の方法が開示される。
例32:擬似固有のフィンガープリントをサブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、例31に記載の方法が開示される。
例33:更なる詳細な分析のために低いレピュテーションスコアを有するサブルーチンにフラグを付けることを更に有する、例26〜32のいずれかに記載の方法が開示される。
例34:実行頻度スコアを各サブルーチンに割り当て、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別することを更に有する、例26〜33のいずれかに記載の方法が開示される。
例35:低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別することを更に有する、例34に記載の方法が開示される。
例36:隔離された環境で実行可能オブジェクトを実行することを更に有する、例26〜34のいずれかに記載の方法が開示される。
例37:例26〜36のいずれかに記載の方法を実行する手段を有する装置が開示される。
例38:手段は、プロセッサ及びメモリを有する、例37に記載の装置が開示される。
例39:メモリは、実行された場合、装置に対して例36〜36のいずれかに記載の方法を実行させる機械読み取り可能命令を有する、例37又は38に記載の装置が開示される。
例40:装置は、コンピューティングシステムである、例37〜39のいずれかに記載の装置が開示される。
例41:プロセッサに対して例26〜36のいずれかに記載の方法を実行するように命令するように動作可能な実行可能命令を記憶した1つ以上の過渡的でないコンピュータ読み取り可能媒体が開示される。
例42:実行可能オブジェクトを複数のサブルーチンに解析する手段と、実行頻度スコアを各サブルーチンに割り当てる手段と、実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当てる手段と、サブルーチンのレピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てる手段とを有するコンピューティングデバイスが開示される。
例43:レピュテーションスコアを実行可能オブジェクトに割り当てる手段は、擬似固有の識別子をサブルーチンに割り当てる手段と、前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つける手段と、サブルーチンの実行頻度を集約する手段とを更に有する、例42に記載のコンピューティングデバイスが開示される。
例44:手段のそれぞれは、過渡的でないコンピュータ読み取り可能媒体に記憶された実行可能命令を有する、例42又は43に記載のコンピューティングデバイスが開示される。

Claims (45)

  1. 実行可能オブジェクトの頻度に基づく分類を実行するレピュテーションクライアントであって、
    メモリに通信可能に結合されたプロセッサと、
    ネットワークインタフェースと、
    前記プロセッサに通信可能に結合され、複数の実行可能オブジェクトを複数のサブルーチンに解析し、実行頻度スコアを前記サブルーチンに割り当てるように動作可能であり、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨り、前記ネットワークインタフェースを介して前記実行頻度スコアをレピュテーションサーバに提供し、前記ネットワークインタフェースを介して実行可能オブジェクトのレピュテーションスコアを受信するように動作可能であり、前記レピュテーションスコアは、前記実行可能オブジェクトのサブルーチンの頻度スコアに少なくとも部分的に基づくレピュテーションクライアントエンジンと
    を有するレピュテーションクライアント
  2. 実行頻度スコアを各サブルーチンに割り当てることは、前記実行可能オブジェクトを実行し、前記サブルーチンへの呼び出しを記録することを更に有する、請求項1に記載のレピュテーションクライアント。
  3. 前記レピュテーションクライアントエンジンは、隔離された環境で前記実行可能オブジェクトを実行するように更に動作可能である、請求項1に記載のレピュテーションクライアント。
  4. 前記実行可能オブジェクトを複数のサブルーチンに解析することは、頻度カウンタを前記サブルーチンに注入するように前記実行可能オブジェクトのコピーを変更することを更に有する、請求項1に記載のレピュテーションクライアント。
  5. 請求項1ないしのうちいずれか1項に記載のレピュテーションクライアントエンジンを提供するようにプロセッサに対して命令するように動作可能なコンピュータプログラム。
  6. 請求項に記載のコンピュータプログラムを記憶した1つ以上のコンピュータ読み取り可能媒体。
  7. メモリに通信可能に結合されたプロセッサと、
    ネットワークインタフェースと、
    前記プロセッサに通信可能に結合され、実行可能オブジェクトを複数のサブルーチンに解析し、レピュテーションスコアを各サブルーチンに割り当てるように動作可能なレピュテーションサーバエンジンと
    を有し、
    前記レピュテーションサーバエンジンは、ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別するように更に動作可能であるレピュテーションサーバ。
  8. 前記レピュテーションサーバエンジンは、前記複数のサブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいて、前記実行可能オブジェクトのレピュテーションスコアを計算し、前記ネットワークインタフェースを介して前記レピュテーションスコアの少なくとも1つを複数のレピュテーションクライアントに配信するように更に動作可能である、請求項に記載のレピュテーションサーバ。
  9. レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを更に有する、請求項に記載のレピュテーションサーバ。
  10. 前記実行可能オブジェクトを複数のサブルーチンに解析することは、前記複数のサブルーチンに関するデータをレピュテーションクライアントから受信することを更に有する、請求項に記載のレピュテーションサーバ。
  11. レピュテーションスコアを各サブルーチンに割り当てることは、各サブルーチンの実行頻度スコアをレピュテーションクライアントから受信することを更に有する、請求項に記載のレピュテーションサーバ。
  12. レピュテーションスコアを各サブルーチンに割り当てることは、
    擬似固有のフィンガープリントを各サブルーチンに割り当て、
    マッチするサブルーチンの頻度又はレピュテーションスコアについてレピュテーションデータベースに問い合わせるために、前記擬似固有のフィンガープリントを使用することを更に有する、請求項に記載のレピュテーションサーバ。
  13. レピュテーションスコアを各サブルーチンに割り当てることは、複数の実行可能オブジェクトの間の実行頻度を有する前記サブルーチンの実行頻度スコアを受信することを更に有する、請求項に記載のレピュテーションサーバ。
  14. 前記レピュテーションサーバエンジンは、隔離された環境内で前記実行可能オブジェクトを実行し、これらの実行頻度に基づいてサブルーチン頻度スコアを割り当てるように更に動作可能である、請求項に記載のレピュテーションサーバ。
  15. レピュテーションスコアを各サブルーチンに割り当てることは、前記実行可能オブジェクトを静的に分析することを更に有する、請求項に記載のレピュテーションサーバ。
  16. 前記レピュテーションサーバエンジンは、更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けるように更に動作可能である、請求項に記載のレピュテーションサーバ。
  17. 前記実行可能オブジェクトのレピュテーションは、前記複数のサブルーチンのレピュテーションに少なくとも部分的に基づく、請求項に記載のレピュテーションサーバ。
  18. 前記レピュテーションサーバエンジンは、前記実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを前記複数のサブルーチンに割り当てるように更に動作可能である、請求項に記載のレピュテーションサーバ。
  19. 前記レピュテーションサーバエンジンは、
    擬似固有のフィンガープリントを少なくとも1つのサブルーチンに割り当て、
    複数の実行可能オブジェクトの間で前記サブルーチンの実行頻度スコアを計算し、
    前記レピュテーションスコアを前記実行頻度スコアに関連付けるように更に動作可能である、請求項に記載のレピュテーションサーバ。
  20. 擬似固有のフィンガープリントを前記サブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、請求項19に記載のレピュテーションサーバ。
  21. 前記レピュテーションサーバエンジンは、低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別するように更に動作可能である、請求項に記載のレピュテーションサーバ。
  22. 請求項ないし21のうちいずれか1項に記載のレピュテーションサーバエンジンを提供するように動作可能なコンピュータプログラム。
  23. 請求項22に記載のコンピュータプログラムを記憶した少なくとも1つのコンピュータ読み取り可能記憶媒体。
  24. 実行可能オブジェクトのレピュテーションを計算する方法であり、コンピューティングデバイスで実行可能な方法であって、
    実行可能オブジェクトを複数のサブルーチンに解析し、
    実行頻度スコアを前記サブルーチンに割り当て、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨り、
    前記実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当て、
    前記サブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを実行可能オブジェクトに割り当てることを有する方法。
  25. レピュテーションスコアを前記実行可能オブジェクトに割り当てることは、
    擬似固有の識別子をサブルーチンに割り当て、
    前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つけ、
    前記サブルーチンの前記実行頻度を集約することを更に有する、請求項24に記載の方法。
  26. レピュテーションサーバエンジンを提供する方法であって、
    実行可能オブジェクトを複数のサブルーチンに解析し、
    レピュテーションスコアを各サブルーチンに割り当て
    ゼロの実行頻度スコアを有するサブルーチンをセキュリティリスクとして識別することを有する方法。
  27. レピュテーションを前記実行可能オブジェクトに割り当て、前記実行可能オブジェクトの前記レピュテーションは、前記サブルーチンの前記レピュテーションに少なくとも部分的に基づくことを更に有する、請求項26に記載の方法。
  28. 更なる詳細な分析のために低いレピュテーションスコアを有する実行可能オブジェクトにフラグを付けることを更に有する、請求項27に記載の方法。
  29. レピュテーションスコアを各サブルーチンに割り当てることは、実行頻度スコアを各サブルーチンに割り当てることを有する、請求項26に記載の方法。
  30. レピュテーションスコアを各サブルーチンに割り当てるように動作可能な命令は、前記実行可能オブジェクトが高いレピュテーションスコアを有すると決定し、高いレピュテーションスコアを前記サブルーチンに割り当てるように更に動作可能である、請求項26に記載の方法。
  31. 各サブルーチンのレピュテーションスコアを割り当てるように動作可能な命令は、
    擬似固有のフィンガープリントを前記サブルーチンに割り当て、
    複数の実行可能オブジェクトの間で前記サブルーチンの実行頻度スコアを計算し、
    前記レピュテーションスコアを前記実行頻度スコアに関連付けるように更に動作可能である、請求項26に記載の方法。
  32. 擬似固有のフィンガープリントを前記サブルーチンに割り当てることは、ファジーフィンガープリントを計算することを有する、請求項31に記載の方法。
  33. 更なる詳細な分析のために低いレピュテーションスコアを有するサブルーチンにフラグを付けることを更に有する、請求項26に記載の方法。
  34. 実行頻度スコアを各サブルーチンに割り当てることを更に有する、請求項26に記載の方法。
  35. 低い実行頻度スコアを有するサブルーチンを疑わしいものとして識別することを更に有する、請求項34に記載の方法。
  36. 隔離された環境で前記実行可能オブジェクトを実行することを更に有する、請求項26に記載の方法。
  37. 請求項26ないし36のうちいずれか1項に記載の方法を実行する手段を有する装置。
  38. 前記手段は、プロセッサ及びメモリを有する、請求項37に記載の装置。
  39. 前記メモリは、実行された場合、前記装置に対して請求項26ないし36のうちいずれか1項に記載の方法を実行させる機械読み取り可能命令を有する、請求項38に記載の装置。
  40. 前記装置は、コンピューティングシステムである、請求項38に記載の装置。
  41. プロセッサに対して請求項26ないし36のいずれか1項に記載の方法を実行するように命令するように動作可能なコンピュータプログラム。
  42. 請求項41に記載のコンピュータプログラムを記憶した1つ以上のコンピュータ読み取り可能媒体。
  43. 実行可能オブジェクトを複数のサブルーチンに解析する手段と、
    実行頻度スコアを前記サブルーチンに割り当てる手段であり、或るサブルーチンの実行頻度スコアは、複数の実行可能オブジェクトに跨る手段と、
    前記実行頻度スコアに少なくとも部分的に基づいてレピュテーションスコアを各サブルーチンに割り当てる手段と、
    前記サブルーチンの前記レピュテーションスコアに少なくとも部分的に基づいてレピュテーションスコアを前記実行可能オブジェクトに割り当てる手段と
    を有するコンピューティングデバイス。
  44. レピュテーションスコアを前記実行可能オブジェクトに割り当てる手段は、
    擬似固有の識別子をサブルーチンに割り当てる手段と、
    前に計算された実行頻度を有する同じ擬似固有の識別子を有するサブルーチンを見つける手段と、
    前記サブルーチンの前記実行頻度を集約する手段と
    を更に有する、請求項43に記載のコンピューティングデバイス。
  45. 前記手段のそれぞれは、過渡的でないコンピュータ読み取り可能媒体に記憶された実行可能命令を有する、請求項43又は44に記載のコンピューティングデバイス。
JP2016542965A 2013-12-27 2013-12-27 頻度に基づくレピュテーション Active JP6326502B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077935 WO2015099756A1 (en) 2013-12-27 2013-12-27 Frequency-based reputation

Publications (2)

Publication Number Publication Date
JP2017505947A JP2017505947A (ja) 2017-02-23
JP6326502B2 true JP6326502B2 (ja) 2018-05-16

Family

ID=53479414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016542965A Active JP6326502B2 (ja) 2013-12-27 2013-12-27 頻度に基づくレピュテーション

Country Status (6)

Country Link
US (1) US10044739B2 (ja)
EP (1) EP3087525B1 (ja)
JP (1) JP6326502B2 (ja)
KR (1) KR101846757B1 (ja)
CN (1) CN105793863A (ja)
WO (1) WO2015099756A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3087525B1 (en) 2013-12-27 2020-07-15 McAfee, LLC Frequency-based reputation
US10503897B1 (en) * 2016-07-13 2019-12-10 Cybereason Detecting and stopping ransomware
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
CN106411871A (zh) * 2016-09-20 2017-02-15 东软集团股份有限公司 构建应用信誉库的方法及装置
US10783246B2 (en) * 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
US10873588B2 (en) * 2017-08-01 2020-12-22 Pc Matic, Inc. System, method, and apparatus for computer security
US11487868B2 (en) * 2017-08-01 2022-11-01 Pc Matic, Inc. System, method, and apparatus for computer security
US10867039B2 (en) * 2017-10-19 2020-12-15 AO Kaspersky Lab System and method of detecting a malicious file
US10992701B2 (en) * 2018-11-20 2021-04-27 Bank Of America Corporation Systems and methods for dynamic targeting of secure repurposed cross-channel electronic communications
US11381597B2 (en) * 2019-07-19 2022-07-05 Mcafee, Llc Expedition of web phishing detection for suspicious sites
JP7243834B2 (ja) * 2019-08-08 2023-03-22 日本電気株式会社 ソフトウェア解析装置、ソフトウェア解析方法及びプログラム
US11411992B2 (en) 2019-11-07 2022-08-09 Mcafee, Llc Visual detection of phishing websites via headless browser
US20240037215A1 (en) * 2020-08-19 2024-02-01 Nec Corporation Program analysis device, program analysis method, and computer-readable medium

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
JP3992136B2 (ja) 2001-12-17 2007-10-17 学校法人金沢工業大学 ウイルス検出方法および装置
GB2396227B (en) * 2002-12-12 2006-02-08 Messagelabs Ltd Method of and system for heuristically detecting viruses in executable code
US8010685B2 (en) * 2004-11-09 2011-08-30 Cisco Technology, Inc. Method and apparatus for content classification
US8312536B2 (en) * 2006-12-29 2012-11-13 Symantec Corporation Hygiene-based computer security
US8219980B2 (en) * 2007-01-10 2012-07-10 International Business Machines Corporation Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data
US8185930B2 (en) * 2007-11-06 2012-05-22 Mcafee, Inc. Adjusting filter or classification control settings
US8301605B2 (en) * 2007-12-17 2012-10-30 International Business Machines Corporation Managing maintenance tasks for computer programs
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection
US8413239B2 (en) * 2009-02-22 2013-04-02 Zscaler, Inc. Web security via response injection
JP5585303B2 (ja) * 2010-08-25 2014-09-10 日本電気株式会社 ライブラリ実行管理システム、ライブラリ実行管理方法およびプログラム
US9235586B2 (en) 2010-09-13 2016-01-12 Microsoft Technology Licensing, Llc Reputation checking obtained files
KR101060639B1 (ko) 2010-12-21 2011-08-31 한국인터넷진흥원 자바스크립트 난독화 강도 분석을 통한 악성 의심 웹사이트 탐지 시스템 및 그 탐지방법
US8332415B1 (en) 2011-03-16 2012-12-11 Google Inc. Determining spam in information collected by a source
US20130097659A1 (en) * 2011-10-17 2013-04-18 Mcafee, Inc. System and method for whitelisting applications in a mobile network environment
US9058486B2 (en) * 2011-10-18 2015-06-16 Mcafee, Inc. User behavioral risk assessment
US20130304900A1 (en) 2012-05-14 2013-11-14 Sap Ag Reputation management using evolving reputation scores
US20140095778A1 (en) * 2012-09-28 2014-04-03 Jaewoong Chung Methods, systems and apparatus to cache code in non-volatile memory
EP3087525B1 (en) 2013-12-27 2020-07-15 McAfee, LLC Frequency-based reputation

Also Published As

Publication number Publication date
US20170006049A1 (en) 2017-01-05
US10044739B2 (en) 2018-08-07
EP3087525B1 (en) 2020-07-15
CN105793863A (zh) 2016-07-20
KR20160077168A (ko) 2016-07-01
KR101846757B1 (ko) 2018-05-28
EP3087525A4 (en) 2017-05-17
JP2017505947A (ja) 2017-02-23
EP3087525A1 (en) 2016-11-02
WO2015099756A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
JP6326502B2 (ja) 頻度に基づくレピュテーション
Or-Meir et al. Dynamic malware analysis in the modern era—A state of the art survey
US10050993B2 (en) Non-invasive whitelisting
US20190238563A1 (en) Managed software remediation
US20200042720A1 (en) Pre-launch process vulnerability assessment
Abawajy et al. Identifying cyber threats to mobile-IoT applications in edge computing paradigm
US11089038B2 (en) Safe sharing of sensitive data
US9330258B1 (en) Systems and methods for identifying uniform resource locators that link to potentially malicious resources
US9934380B2 (en) Execution profiling detection of malicious objects
CN106687979B (zh) 交叉视图恶意软件检测
US8869284B1 (en) Systems and methods for evaluating application trustworthiness
US9870466B2 (en) Hardware-enforced code paths
Wang et al. Beyond the virus: A first look at coronavirus-themed mobile malware
US20170279819A1 (en) Systems and methods for obtaining information about security threats on endpoint devices
Ravi et al. Android malware detection with classification based on hybrid analysis and N-gram feature extraction
Kaczmarek et al. Operating system security by integrity checking and recovery using write‐protected storage
MAMGAIN DROIDANALYZER: EFFICIENT FRAMEWORK FOR ANDROID MALWARE DETECTION
Beunder Correlating features of malicious software to increase insight in attribution

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R150 Certificate of patent or registration of utility model

Ref document number: 6326502

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250