JP2501771B2 - 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置 - Google Patents

不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置

Info

Publication number
JP2501771B2
JP2501771B2 JP5332235A JP33223593A JP2501771B2 JP 2501771 B2 JP2501771 B2 JP 2501771B2 JP 5332235 A JP5332235 A JP 5332235A JP 33223593 A JP33223593 A JP 33223593A JP 2501771 B2 JP2501771 B2 JP 2501771B2
Authority
JP
Japan
Prior art keywords
probability
signature
false positive
candidate
software entity
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.)
Expired - Lifetime
Application number
JP5332235A
Other languages
English (en)
Other versions
JPH06250861A (ja
Inventor
ジェフリー・オーウェン・ケパート
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06250861A publication Critical patent/JPH06250861A/ja
Application granted granted Critical
Publication of JP2501771B2 publication Critical patent/JP2501771B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は全般的にディジタル・デ
ータ・プロセッサに関し、具体的にはディジタル・デー
タ・プロセッサの動作保全性を提供するための方法及び
装置に関する。
【0002】
【従来の技術】コンピュータ・ウィルスはそれ自体の1
つのバージョン、おそらくは進化したバージョンを含む
ように他のプログラムを修正することによって他のプロ
グラムに感染させることのできるプログラムであるとフ
レデリック・ビー・コーエン(Frederick B. Cohen)によ
り定義されている(A Short Course on Computer Viruse
s、p.11)。
【0003】本明細書では、コンピュータ・ウィルスは
コンピュータ・プログラムに付加する能力を有するコン
ピュータ命令又はコンピュータ・コードの実行可能な組
合せを指すものとする。ウィルス・コードがその後に実
行されると、ウィルスを宿したコンピュータの動作に有
害な結果をもたらす可能性がある。一部のウィルスはそ
れを構成するコードを修正する能力を有し、このためウ
ィルスの識別及び除去の作業が厄介になる。
【0004】もう1つの不所望なタイプのソフトウェア
・エンティティはトロイの木馬として知られるものであ
る。トロイの木馬とは、望ましいコードの1ブロックに
故意に隠された不所望のコード・ブロックである。
【0005】コンピュータ・ウィルス及び他の不所望の
ソフトウェア・エンティティを検出するために広く使用
されている方法はスキャナとして知られるものである。
スキャナは実行可能ファイル、ブート・レコード、メモ
リ及び実行可能コードが隠されている可能性のある他の
区域を既知の不所望のソフトウェア・エンティティが存
在するかどうか探索する。通常は、専門家が特定の不所
望のソフトウェア・エンティティを詳細に検査し、得ら
れた情報を使用してどこでその不所望のソフトウエア・
エンティティが発生しようともそれを検出する方法を作
り出す。コンピュータ・ウィルス、トロイの木馬及び他
のいくつかのタイプの不所望のソフトウェア・エンティ
ティの場合、典型的に使用される検出方法はそのエンテ
ィティ内にあるシグネチャと称する1つ又は複数の短い
バイト・シーケンスの存在について探索するものであ
る。シグネチャは、適当なスキャナと共に使用された場
合にエンティティが存在すれば高い確率でそれを検出す
るが、偽肯定として知られる偽警告を与えることがほと
んどないように注意して選定されなければならない。低
い偽肯定率の要求はコンピュータ上で通常実行されるプ
ログラムにシグネチャの現れる可能性が低いことを要求
することになる。通常そのエンティティが2進機械コー
ドの形である場合、専門家がその2進機械コードをアセ
ンブラ・コードなど人間に可読なフォーマットに変換し
た後に人間に可読なコードを分析することによってシグ
ネチャを選択する。そのエンティティがコンピュータ・
ウィルスである場合、専門家は通常ウィルスのインスタ
ンスが変わると実質的に変化する可能性が十分にあるコ
ード部分を破棄する。その後、専門家はそのエンティテ
ィのコードのうち正常で正当なプログラムに現れる可能
性が低いと思われる1つ又は複数のセクションを選択
し、2進機械コード中の対応するバイト群を識別してシ
グネチャを作る。また専門家はこの選択を行う際に、コ
ンピュータ・ウィルス、トロイの木馬又は他のタイプの
不所望のソフトウェア・エンティティのいずれであろう
と、問題のエンティティのタイプにとって典型的である
ように見える命令シーケンスの影響を受ける可能性があ
る。
【0006】しかし、新しいウィルスや既知のウィルス
の新しい変形が現れる速度が加速しているので、専門家
にとって負担が重くなる。さらに、ウィルス・スキャン
の効力はあるウィルスが全世界のコンピュータ群に初め
て導入されてからそのウィルスを認識できるシグネチャ
がコンピュータ群のかなりの部分に配布されるまでの時
間遅延によって損なわれる。
【0007】
【発明が解決しようとする課題】本発明の目的はコンピ
ュータ・ウィルス・シグネチャを抽出し評価するための
コンピュータで実施される自動手順を提供することであ
る。
【0008】本発明のもう1つの目的はウィルスの機械
コードからシグネチャを自動的に抽出し、抽出されたシ
グネチャのウィルスの後続のインスタンスを識別するた
めの確率的な有効性を評価するためのコンピュータで実
施される統計的技法を提供することである。
【0009】本発明のもう1つの目的は手動又は他の手
順によって事前に選択されたコンピュータ・ウィルス・
シグネチャを自動的に評価するためのコンピュータで実
施される統計的技法を提供することである。
【0010】
【課題を解決するための手段】前記及びその他の問題
は、コンピュータ・ウィルスの機械コードからシグネチ
ャを自動的に抽出するためのまた他の何らかの手段によ
って以前に選択されたウィルス・シグネチャを評価する
ための統計的方法によって克服され、本発明の目的が達
成される。結果として得られるシグネチャは偽肯定を起
こす可能性が非常に低く、既知のウィルスの新しい変形
を捕捉するのに十分な柔軟性を有する。
【0011】本発明に従って動作するコンピュータ・ウ
ィルス抽出評価機構はウィルス・コードの変動に対して
堅牢であり、ウィルスのシグネチャを含む部分に含まれ
るコードの多少の変動をも許容する。これは所与のシグ
ネチャに正確にではなく近似的に一致するバイト列を認
識することによって達成される。バイトの列とシグネチ
ャの間の一定の量の不一致だけが許容されるので、偽肯
定の生成が防止される。ユーザは堅牢さと認識精度の間
のトレードオフを定めることが出来る。
【0012】本発明によれば、ディジタル・データ・プ
ロセッサを動作させてコンピュータ・ウィルスの有効な
シグネチャを得る方法が提供される。この方法はコンピ
ュータ・ウィルスの少なくとも1部分をディジタル・デ
ータ・プロセッサに入力する第1ステップを含む。この
少なくとも1部分はコンピュータ・ウィルスのインスタ
ンスが変わっても実質的に不変のままに留まる可能性が
高いコンピュータ・ウィルスのバイト・シーケンスを含
み、この部分からコンピュータ・ウィルス・シグネチャ
の候補が引き出される。第2ステップでは、ディジタル
・データ・プロセッサを用いて上記のバイト・シーケン
スから一義的nグラムのリストを構築する。この一義的n
グラムはそれぞれ1乃至ある選択された最大数の順次バ
イトからなる。第3ステップでは、一義的nグラムのそれ
ぞれについて、本明細書でコンピュータ・プログラムの
本体と称する複数のコンピュータ・プログラムから得ら
れたバイト・シーケンス内で、一義的nグラムの発生す
る確率を推定する。これは通常ディジタル・データ・プ
ロセッサ上で実行される。
【0013】1つ又は複数の一義的nグラムからなる各ウ
ィルス・シグネチャ候補について、第4ステップで、本
体から得られたバイト・シーケンス内でウィルス・シグ
ネチャ候補が発生する確率を推定する。本明細書では、
これをシグネチャ候補の偽肯定確率と称する。第5ステ
ップで、1つ又は複数の最適シグネチャ候補を有効なも
のとして選択する。シグネチャのメリットは偽肯定確率
の低下に伴って増加し、他の判断基準に依存する可能性
もある。シグネチャを有効なものとして受け入れること
ができるのは、その推定偽肯定確率が閾値確率より低い
場合だけである。閾値確率は、過剰の偽肯定を生じるシ
グネチャを拒絶するのに十分な低さであるが、少なくと
も一部のシグネチャ候補が確実に受け入れられるに十分
な高さになるように選択される。
【0014】コンピュータ・ウィルス・シグネチャ評価
モードで動作する際、入力ステップは1つ又は複数のウ
ィルス・シグネチャ候補を入力するステップを含む。1
つ又は複数のウィルス・シグネチャ候補はそれぞれコン
ピュータ・ウィルスの少なくとも1部分を含み、この少
なくとも1部分には、コンピュータ・ウィルスの機械コ
ード命令を表すバイトのシーケンスが含まれる。
【0015】コンピュータ・ウィルス・シグネチャ抽出
モードで動作する際、入力ステップはコンピュータ・ウ
ィルスの少なくとも1つのインスタンスを生成する初期
ステップと、コンピュータ・ウィルスのインスタンスが
変わっても不変のまま留まる少なくとも1部分を識別す
るためにその少なくとも1つのインスタンスを評価する
初期ステップとを含む。通常この不変部分には、コンピ
ュータ・ウィルスの機械コード命令を表すバイト・シー
ケンスが含まれる。
【0016】
【実施例】図1は本発明の教示を実施するのに適したデ
ータ処理システム10のブロック図である。システム・バ
ス12は中央演算処理装置(CPU) 14と他の多数のシステム
・バス・ユニットの間でアドレス、データ及び制御信号
を運ぶための複数の信号線からなる。RAM 16はシステム
・バス12に結合され、CPU 14にプログラム命令記憶域と
作業用メモリを提供する。端末制御サブシステム18はシ
ステム・バス12に結合され、表示装置20、通常はCRTモ
ニタに出力を提供し、手動入力装置22、通常はキーボー
ドから入力を受け取る。手動入力はマウスなどのポイン
ティング装置から供給することもできる。ハード・ディ
スク制御サブシステム24は回転式固定ディスク又はハー
ド・ディスク26とシステム・バス12を両方向に結合す
る。ハード・ディスク制御サブシステム24とハード・デ
ィスク26はCPU命令及びデータ用の大容量記憶域を提供
する。フロッピ・ディスク制御サブシステム28は1つ又
は複数のフロッピ・ディスク駆動装置30とシステム・バ
ス12を両方向に結合する。フロッピ・ディスク駆動装置
30は取外し可能のフロッピ・ディスク30aと共に動作す
る。
【0017】図1に示した構成要素はパーソナル・コン
ピュータ、ポータブル・コンピュータ、ワークステーシ
ョン、ミニコンピュータ、メインフレーム・コンピュー
タ又はスーパーコンピュータ中で実施できる。従って、
システム・バス12の構造やそのバスに結合されるCPU 14
の数などデータ処理システム10の物理実施態様の詳細は
本発明の動作にとって重要でなく、以下でこれ以上詳細
に説明することはしない。
【0018】図2は本発明の方法及び装置によってコン
ピュータ・ウィルスのシグネチャ抽出前に実行される前
処理ステップを示す流れ図である。この前処理ステップ
の最終目標はコンピュータ・ウィルスのうち、コンピュ
ータ・ウィルスのインスタンスが変わっても不変のまま
留まる可能性の高いセクションを識別することである。
従って、これらのセクションから引き出される候補シグ
ネチャはウィルスが存在する時に必ずそのウィルスを識
別する可能性が高い。
【0019】ブロックAで、通常はホストの(感染した)
実行可能プログラムに埋め込まれたコンピュータ・ウィ
ルスの1つ又は複数のサンプルが与えられる。オプショ
ンとして、ブロックBで、感染したホスト・プログラム
を走行させ、特別に設計された犠牲プログラム(デコイ
と称する)を故意に感染させるように試みることによっ
て、そのウィルスの1つ又は複数の追加サンプルを生成
する。ブロックBはこの手順によってウィルスがうっか
り拡散しないように、専用の隔離されたシステム上で実
行することが好ましい。別法として、ブロックBをホス
ト・コンピュータのレジスタ、記憶装置及びファイル・
システムのアーキテクチャのモデルを含む仮想計算機内
で実行することもできる。ブロックBでウィルスの追加
サンプルを生成した場合又はブロックAで複数のサンプ
ルが与えられた場合、ブロックCで、そのウィルスのう
ちウィルスのインスタンス同士の間で変化が観察された
セクションを選別して除く。この手順を図4に示す。図4
では、ウィルスの変動部分と不変部分がウィルスの3つ
のインスタンスを比較することによって識別される。図
4では、各バイトが16進表現で示され、不変部分が識別
されている。不変バイト・シーケンスの長さは例示的な
ものである。実際には、不変バイト・シーケンスはしば
しば5バイトをかなり超え、通常は1つのウィルス内に複
数のそのような部分が現れる。ブロックCで識別された
不変バイト・シーケンスの各バイトにマークが付され、
次の処理のためブロックDに渡される。実質的に類似の
区域が存在しない場合は、かなり洗練された自己変化ウ
ィルスの存在を示す可能性があり、警告メッセージを生
成してユーザに表示すべきである。ブロックBを使用せ
ず、ブロックAで1つのサンプルしか与えられない場合、
ブロックCで行うべき作業はなく、ウィルス全体が不変
としてマークされ、ブロックDに渡される。
【0020】ブロックB及びブロックCを使用したかどう
かにかかわらず、ブロックDでは、仮に不変として分類
された1つ又は複数のウィルス・セクションが存在す
る。しかし、ブロックB及びブロックCを使用した場合で
も、潜在的な変形のすべてが捕捉されてはいない可能性
がある。ブロックDでは、ヒューリスティックスを用い
て、ウィルスの不変セクションのうち、本質的にウィル
スのインスタンス同士の間で変化する可能性の低い部分
を識別する。具体的に言うと、機械命令を表すウィルス
のコード部分(アドレスを表すバイトという例外はあり
得る)は通常は不変である。例えば数値定数、文字列、
画面イメージ、計算用の作業区域、アドレスなど、ウィ
ルスのデータ部分はやはり不変である場合も多いが、ウ
ィルスがそれ自体を複製する時にウィルス自体によって
修正されたり、ウィルスがウィルス・スキャナを回避す
るのを助けるため故意にウィルスを修正する人間によっ
て修正される可能性がはるかに高い。
【0021】図2に戻って、ブロックDで、不変コード部
分と不変データ部分を互いに分離し、不変コード部分だ
けを次の処理のために保持する。この時点で、ウィルス
・シグネチャの選択源となる1つ又は複数の不変機械コ
ード・バイト・シーケンスが存在する。この1組の候補
ウィルス・シグネチャはこれらのバイト・シーケンス内
に見出されるすべての可能なS個のバイトの連続ブロッ
クである。ただし、Sはユーザによって指定されるある
いは本発明の方法によって決定されるシグネチャ長であ
る。通常Sは約12バイト乃至36バイトの範囲の値であ
る。
【0022】前に選択されたシグネチャを評価しようと
する場合、この1組の候補シグネチャは前に選択された
シグネチャを含んでいる。抽出の場合でも評価の場合で
も、考察中のウィルス(又はウィルス・シグネチャ)が複
数存在し得る。従って各ウィルスにどの候補シグネチャ
が属するかに関する記録を維持する。
【0023】一般に、図3の流れ図に関して以下で説明
する技法では各候補シグネチャがランダムに選択された
プログラムの機械コード内のランダムに選択されたバイ
トのブロックと正確に一致する又は指定された個数のも
しくは指定されたパターンの不一致を含んで一致する確
率を推定する。抽出の場合は、すべての候補シグネチャ
のうちで最低の値であり且つ所定の閾値より小さい推定
偽肯定確率を有する1つ又は複数のシグネチャが選択さ
れる。他の選択判断基準を適用することもできる。評価
の場合は、あるシグネチャの推定偽肯定確率が所定の閾
値より小さい場合、そのシグネチャが以後使用できるも
のとして承認される。過去に作成されたすべてのプログ
ラム又は今後作成されるすべてのプログラムに対してシ
グネチャを検査することは技術的に不可能なので、確率
推定はウィルス・スキャナを使用する特定のハードウェ
ア及びオペレーティング・システム上で一般的に使用さ
れているソフトウェア・プログラムの本体に基づくこと
が好ましい。この本体を使用して存在するプログラムの
部分集合から可能なプログラムのはるかに大きい集合に
外挿する。
【0024】[抽出/評価手順の説明] 第1ステップで、ユーザは(a)評価しようとするウィルス
・シグネチャのリストを含むファイルあるいは(b) 1つ
又は複数のウィルス・シグネチャの抽出源となる不変ウ
ィルス・コードの1つ又は複数の部分をそれぞれ含む1つ
又は複数のファイルを供給する。入力ファイル32(図1の
IF)は手動入力、他の記憶媒体からのファイルのコピー
又は同一の物理装置上で以前に実行された他のソフトウ
ェア・プログラムによるファイルの自動作成によって、
ハード・ディスク26又はフロッピ・ディスク30aに記憶
することができる。
【0025】さらに、考察中のコンピュータ・ウィルス
の目標となる特定のハードウェア及びオペレーティング
・システム上で一般に使用されるソフトウェア・プログ
ラムの本体を供給する。例えば、DOS(ディスク・オペレ
ーティング・システム)で走るIBM PC及び互換機に影響
するウィルスの場合、本体は複数の実行可能プログラム
(通常は拡張子.COM又は.EXEを有するファイルとして記
憶される)を含む。本発明の好ましい実施例では、プロ
グラムの本体34(図1のCP)はハード・ディスク26などこ
の方法を実行するコンピュータ・システムがアクセスで
きる記憶装置に記憶される。以下で詳細に説明する代替
実施態様では、本体を他の場所に記憶できる。この場
合、本体の正しく要約されたバージョンを含むファイル
がこの方法を実行するコンピュータ・システムがアクセ
スできる記憶装置に記憶される。このファイルをnグラ
ム確率のテーブルと称し、以下で詳細に説明する。
【0026】最後に、ユーザは通常は入力装置22を介し
て適当なコマンドを発行することによって以下で説明す
る方法をデータ処理システム10上で実行させる。本発明
の方法を実施するコンピュータ・プログラムはハード・
ディスク26又はフロッピ・ディスク30aに記憶でき、ユ
ーザによるこのプログラムの呼出しに応答して、ディス
クからRAM 16にロードされる。その後、CPU 14がプログ
ラムを実行する。ユーザがパラメータ自体又はパラメー
タを含む入力ファイルの名前を手動入力することによっ
て、この方法に入力パラメータを供給する必要がある場
合もある。これらの入力パラメータには、例えば前に述
べた確率推定用の所定の閾値や入力ファイル32のファイ
ル名が含まれる。
【0027】本発明の方法を実行するデータ処理システ
ム10はウィルス・スキャナ・プログラムが使用する1つ
又は複数の有効なウィルス・シグネチャを生成するシス
テムと同一のシステムである必要はない。
【0028】次に図3を参照して本発明の方法のステッ
プを全般的に説明する。
【0029】ブロックAで、入力ファイル32のデータに
含まれるn≦選択された最大長を満たすすべてのnグラム
からリストが形成される。nグラムとは、n個の連続する
バイトのインスタンスであり、nは1(ユニグラム)から任
意の大きさの値までである。入力ファイル32は抽出モー
ドでの実行時にはウィルス・コードのセクションからな
り、評価モードでの実行時には候補シグネチャからな
る。抽出モードと評価モードのどちらを実行するのかは
入力パラメータによって制御できるが、入力ファイル32
の形態に基づいて自動的に判断することもできる。
【0030】ブロックBで、プログラムの本体34内の各n
グラムのインスタンスの数を数え、単純な数値計算を使
用することによってnグラムのリスト中のすべてのnグラ
ムについて確率を推定する。
【0031】ブロックC1で、候補シグネチャごとに完全
一致の確率を推定し、ブロックC2で、指定された1組の
不完全一致又はファジイ一致(例えば不一致が指定され
たものとして、シグネチャ又はその連続する断片との一
致)の確率を推定する。
【0032】ブロックDで、推定された完全一致確率と
ファジイ一致確率を組み合わせて各候補シグネチャの総
合評価を得る。
【0033】ブロックEで、候補シグネチャのある部分
集合に関する結果を報告する。この出力報告は表示装置
20に表示することもでき、操作員が後で再検討できるよ
うにハード・ディスク26上又はフロッピ・ディスク30a
上のファイルに記憶することもできる。また、この報告
をウィルス・スキャナなどこの報告を利用する他のソフ
トウェア・プログラムに入力として供給することもでき
る。
【0034】次に前述のブロックA乃至Eを詳細に説明す
る。
【0035】[必要なnグラムのリストの作成(図3、ブロ
ックA)] 抽出モードでは、通常1つ又は複数のウィルスのそれぞ
れからのウィルス・コード(2進機械コード)の1つ又は複
数のセクションが存在する。必須ではないがこれらのセ
クションから大きなデータ区域を除外して、機械命令を
表す部分だけを残すことが望ましい。図2の流れ図の説
明で述べたように、これは専門家により又は何らかの自
動手順によって実施できる。不変部分、通常はコードを
得るためにどんな手段を使用するかは本発明の以下の説
明に特に関係ない。
【0036】nグラムを抽出しこれをnグラム・テーブル
36(図1のNGT)に入れるのに適した手順の1つは下記の擬
似コードで表される。
【0037】 手順:Build_Ngram_List(抽出モード) For each ウィルス For each ウィルス・コード・セクション For i=1 to length_of_section For n=1 to nMax If (i+n−1<セクション長) nグラム=セクションのバイトiからバイトi+n−1まで If (nグラムがnグラム・テーブル内にない) nグラムをnグラム・テーブルに記憶する
【0038】nグラム・テーブル36は例えばRAM 16内又
はハード・ディスク26もしくはフロッピ・ディスク30a
上に記憶されるファイル内で維持される。セクション長
はウィルス・コードの所与のセクションのバイト単位に
よる長さを表し、nMaxはnグラムのバイト単位による選
択された最大長を表す。nMaxの典型的な値は3乃至8の範
囲内にある。
【0039】評価モードでは、手順は各ウィルスごとに
1つ又は複数の候補シグネチャの所与のリストから始ま
る。このリストは人間の専門家により又は適当な手順に
よって生成したものでよい。評価モードでは、nグラム
の集合体は概念上は抽出モードの場合と同じであり、各
候補シグネチャがウィルス・コードの1セクションであ
るかのように扱われる。nグラムを抽出し、これをnグラ
ム・テーブル36に入れるのに適した手順の1つは下記の
擬似コードで表される。
【0040】 手順:Build_Ngram_List(評価モード) For each ウィルス For each 候補シグネチャ For i=1 to シグネチャ長 For n=1 to nMax If (i+n−l<シグネチャ長) nグラム=シグネチャのバイトiからバイトi+n−1まで If (nグラムが有効且つnグラムがnグラム・テーブル内にない) nグラムをnグラム・テーブルに記憶する
【0041】nグラムが無効になる唯一の条件はワイル
ドカードが含まれる場合であり、その場合、ワイルドカ
ードはどうでもよいバイトとみなされる。例えば、ある
シグネチャの第iバイトがワイルドカードである場合、
どんなバイトもその第iバイトに一致するとみなされる
ことを意味する。ワイルドカードが一部のウィルス・シ
グネチャに含まれるのは以下で説明するようにウィルス
の変動に対する堅牢さを高めるためである。
【0042】[nグラム確率の推定(図3、ブロックB)] すべてのnグラムのリストを取得し、そのリストをnグラ
ム・テーブル36に記憶した後、次のステップで、各nグ
ラムが本体からランダムに選択されたnバイト・シーケ
ンスと正確に一致する確率を推定する。この抽出/評価
手順では、2つの推定方法のいずれかを使用する。
【0043】[推定方法1] nグラム確率推定のための本発明の好ましい手法では、n
グラム・テーブル36にリストされたnグラムだけを求め
て、プログラムの本体34全体を探索する。この方法で
は、プログラムの本体34内での各nグラムの発生頻度を
数え、その発生頻度をnグラム・テーブル36に挿入す
る。
【0044】具体的に言うと、nグラム統計を集めるた
めの方法は下記の通りである。 (a) nグラム・テーブル36内のnグラムB1B2..Bnのそれぞ
れについて、プログラムの本体34内でのそのnグラムの
発生回数f(B1B2...Bn)を記録する(これはハッシュ・テ
ーブルを使用して効率的に実施できる)。 (b) nグラム・テーブル36に長さnのnグラムの数Tnを記
録する。
【0045】ユニグラム(n=1)の場合、単純に観察され
た頻度を推定確率とみなす。即ちp(B1)=f(B1)/T1であ
る。n≧2の場合、推定確率は観察された頻度と、より短
いnグラムを互いに組み合わせることによって計算され
た確率との加重平均によって与えられる。2つの(n−1)
グラム確率と1つの(n−2)グラム確率を組み合わせて1つ
のnグラム確率を形成するのに使用される好ましい方法
は次の通りである。
【数2】
【0046】従って、nグラム確率を計算する方法は下
記によって与えられる。手順:Calculate n-grams
【数3】 上式で、αf(B1B2...Bn)はB1B2...Bnの発生がプログラ
ムの本体34内にどのように現れるかに依存するヒューリ
スティック加重関数である。m=0の時にαm=0、m≧1の
時にαm=1になる加重関数αmが実際に良好に機能する
ことが判っている。n=2の場合に数式3を適用するため
に0グラム確率を1と定義する。実際には、まずユニグラ
ム(n=1)とバイグラム(n=2)の確率を表にし、その後こ
れらを使用してトライグラム(n=3)の確率を決定する。
次に、バイグラムとトライグラムを使用して4グラムの
確率を決定し、以下同様にして、最後に(nMax−1)グラ
ムと(nMax−2)グラムの確率からnMaxグラム確率を決定
する。
【0047】[推定方法2] 第2の手法では、図6に示す事前計算されたnグラム確率
のテーブル50を参照し、結果をnグラム・テーブルに置
く。この事前計算されたテーブルはどの1組のウィルス
・コード部分又は候補シグネチャにも使用され、プログ
ラムの本体34を一回通過して、各nグラム(n≦nMaxのそ
れぞれについて)がプログラムの本体34内に現れる回数
を決定し、プログラムの本体34内の長さnのnグラムの総
数で割ることによって構築される。しかし、事前計算さ
れたnグラム確率のテーブル50はその本体に絶対に現れ
ないnグラムを省略したとしてもnMax>2の場合に実行不
可能なほどに大きくなる可能性がある。
【0048】この問題に対する解決策の1つがnグラムの
選択された部分集合を記憶し、残りをより短いnグラム
から組み立てることである。適当な部分集合の1つは最
も一般的なK個のnグラムである。もう1つの適当な部分
集合は数式2に従って2つの(n−1)グラムと1つの(n−2)
グラムを組み合わせることによって推定された頻度から
所定の量を超えて逸脱する測定頻度を有するnグラムの
集合である。
【0049】後者の場合、数式2を繰返し適用してまず
ユニグラムとバイグラムの確率を使用してトライグラム
を推定し、次にバイグラムとトライグラムを使用して4
グラムを推定し、以下同様にして、最後に(nMax−1)グ
ラムと(nMax−2)グラムの確率からnMaxグラム確率を推
定する。各段階で、数式2によって頻度が低く推定され
たnグラムだけが事前計算されたnグラム確率のテーブル
50に含まれる。計算量はかなり多いが、1回実行するだ
けでよい。ただし、新しいコンパイラでコンパイルされ
た人気のある新プログラムの本体への追加を考慮に入れ
ると、周期的な更新が可能性である。
【0050】事前計算されたnグラム確率のテーブル50
の内容を決定するための本発明の好ましい方法は下記の
ステップを含む。1.プログラムの本体34内でのモノグラ
ム及びバイグラムのすべての発生の回数(絶対頻度)を数
え、それぞれをT_1又はT_2で割ってモノグラムとバイグ
ラムのそれぞれの相対頻度を得る。モノグラムの頻度と
バイグラムの頻度をすべて事前計算されたnグラム確率
のテーブルに記憶する。2.k=3からkの選択された最大
値までについて最初の(k−1)バイトが事前計算されたn
グラム・テーブル内の(k−1)グラムとなる各kグラムの
相対頻度を決定する(この条件はすべてのトライグラム
にあてはまるが、k>3の場合には必ずしもあてはまらな
い)。この観察された相対頻度を(k−1)グラムと(k−2)
グラムを使用して数式2から得られた推定頻度で割る。
この量の対数の絶対値が選択された閾値を超える場合、
このkグラムとその測定された絶対頻度を事前計算され
たnグラム確率のテーブル50に記憶する。
【0051】これは事前計算されたnグラム確率のテー
ブル50の内容を導出するのに適した複数の方法のうちの
1つにすぎないことに留意されたい。
【0052】一般に、推定方法1は推定方法2よりも必要
な記憶域が少なく精度が高いが、ウィルス・コード又は
シグネチャの新しいセクションが提示されるたびに本体
全体を探索するので、実行に要する時間がかなり長くな
る可能性がある。
【0053】[候補シグネチャ確率の推定(図3、ブロッ
クC)] 応用例によっては、候補シグネチャと本体(又はそれに
匹敵する寸法のプログラムの統計的に類似の集合)に含
まれるバイト列の間の完全一致又は部分一致(通常は断
片又は不一致)の確率を推定することが望ましいことが
ある。しかし、部分不一致計算は計算コストが高くなる
可能性があり、抽出モードでは、候補シグネチャの集合
が非常に大きくなる可能性がある。従って、CPU 14の速
度によっては、完全一致確率だけを使用して候補シグネ
チャの集合を刈り込むことが望ましい場合がある。これ
が完全一致計算ブロック(C1)からファジイ一致計算ブロ
ック(C2)に向かう矢印の理由である。例えば、n個の最
低完全一致確率を有する候補シグネチャをその後の断片
確率及び不一致確率の計算のために選択することができ
る。
【0054】評価モードでは、候補ウィルス・シグネチ
ャのリストが既に存在している。各候補シグネチャの確
率推定に適した手順は下記の擬似コードによって与えら
れる。
【0055】 手順:X_Probability_Evaluation_Mode For each ウィルス For each シグネチャ≡B1B2...BS px(シグネチャ)=X_Probability(シグネチャ)を記憶する
【0056】ただし、XはExact Match(完全一致)、Frag
ment(断片)、Mismatch(不一致)及び以下でさらに説明す
る指示された確率計算の代替実施態様を記述する何らか
の事前に未決定の修飾子を表す。
【0057】抽出モードでは、候補シグネチャのリスト
をウィルス・コードのセクションから構築しなければな
らない。適当な方法の1つでは、所望のシグネチャ長Sを
選択し、各ウィルス・コード・セクション内のS個のバ
イトの連続ブロックのそれぞれを候補として扱う。この
場合、各候補シグネチャの確率推定に適した手順は下記
の擬似コードによって与えられる。
【0058】 手順:X_Probability_Extraction_Mode For each ウィルス For each ウィルス・コード・セクション For i = 1 to (セクション長−S+1) For j = 1 to S Bj=バイトi+j−1 候補シグネチャ=B1B2...BS px(シグネチャ)=X_Probability(B1B2...BS)を記憶する
【0059】別法として、Sをユーザ指定の確率閾値を
満足する最短の長さに調節することもできる。
【0060】次に、提示されたシグネチャが体に含まれ
るバイト列と完全に一致する確率を推定する問題を論
じ、その後2種類の部分一致、即ち断片と不一致につい
て論ずる。
【0061】[所与のシグネチャに対する完全一致の確
率] 所与のシグネチャに関する完全一致確率p
Exact-Match(シグネチャ)を計算するには、まずワイル
ドカードで置換すべきバイトがあるかどうかを判定しな
ければならない。一部のプロセッサ・アーキテクチャで
は、プログラム(この場合はウィルス)のインスタンスの
間で潜在的に変化し得るアドレスを含む命令が存在す
る。本発明の教示をワイルドカードを許容するウィルス
・スキャナと共に使用することを意図する場合、この潜
在的な可変バイトをワイルドカードによって識別し置換
することができる。既存の又はこのステップで導入され
たワイルドカードの位置を完全一致確率計算で使用す
る。下記の擬似コードは完全一致確率の決定に適した実
施態様を記述したものである。
【0062】 手順:Exact_Match_Probability(シグネチャ) 望むならば、シグネチャ内の潜在的な可変バイトをワイルドカードで置換する。 W=シグネチャ内のワイルドカードの数 ワイルドカード位置のリスト: P≡(P1,P2...,Pw);PiPjを形成する。 for i < j PExact-Match(シグネチャ)= Calculate_Sequence_Probability(シグネチャ;P) Calculate_Sequence_Probability(シグネチャ;P)は位
置P≡(P1P2...,PW)にワイルドカードを有するバイト・
シーケンスB1B2...BSが見つかる確率p(B1B2...BS;P)を
推定する手順である。整数Pi≦Sは単調増加の順になっ
ており、0≦W=ワイルドカードの数≦Sである。
【0063】下記の擬似コードで記述される本発明の好
ましい実施態様では、シグネチャをワイルドカードを含
まない連続ブロックのバイトに分離する。これらの連続
ブロックの確率を乗算してそのシグネチャの完全一致確
率を近似する。
【0064】 手順:Calculate_Sequence_Probability(バイト・シーケンス;P) P0=−1 Pk+1=S + 1 p(バイト・シーケンス;P)=1 For j = 0 to K バイト・ブロック= バイト・シーケンス内のバイトPj+1からバイトPj+1−1まで p(バイト・シーケンス;P)=p(バイト・シーケンス;P)* Calculate_Block_Probability(バイト・ブロック)
【0065】Calculate_Block_Probability(バイト・ブ
ロック)は本体内のワイルドカードのない連続ブロック
のバイトB1B2...BKの確率p(B1B2...BK)を推定する手順
である。好ましい実施態様は次の通りである。
【0066】手順:Calculate_Block_Probability(バイ
ト・ブロック)
【数4】
【0067】条件K>nMaxが発生するのは、ワイルドカ
ードのないブロックの長さがnグラム・テーブル36に集
められたnグラムの最大寸法を超える時である。
【0068】[断片] ウィルス・スキャナが既知のウィルスのわずかに変更さ
れたバージョンを検出できるようにするため、一部のウ
ィルス・スキャナはスキャン中に長さSのシグネチャ内
のFバイトの連続ブロックが発見された時、ユーザに警
告する。この種の可能な断片は(S−F+1)個ある。各断
片の最初の数バイトの確率が所与の閾値未満であること
を必要とするなど他の判断基準を用いると、断片の総数
を減らして、有効な断片のより小さな部分集合にするこ
とができる。この場合に考察中の量はその部分集合内の
断片が、本体内で又はそれに匹敵する寸法のプログラム
の統計的に類似の集合中で発見されない確率である。こ
の確率の簡単に計算できる上限は個々の断片の確率の和
であることを示すことができる。推定確率ではなくこの
推定上限を使用すると、精度は多少低下するが、一般的
にこれで十分であり、正確な計算より計算コストが低く
なる。
【0069】従って、特定の候補シグネチャB1B2...BS
について下記の擬似コードが総合断片確率(実際にはそ
の上限)を推定する手順を提供する。
【0070】 手順:Fragment_Probability(シグネチャ) 望むならば、シグネチャ内の潜在的な可変バイトをワイルドカードで置換する。 PFragment(シグネチャ)=0 For i = 1 to (S−F+1) 断片=バイトiからバイト(i+F−1)まで If (断片が有効な断片である) W=断片内のワイルドカードの数 断片内のワイルドカードの位置のリスト: p≡(P1,P2...,PW);Pi<Pj for i < j を形成する p(断片)=Calculate_Sequence_Probability(断片;P) pFragment(シグネチャ)=pFragment(シグネチャ)+p(断片)
【0071】上記の手順は完全一致の場合の手順に類似
しているが、可能な断片の所望の部分集合内のすべての
断片について繰返しがされること及び総合断片確率が個
々の断片確率の累計であることが異なる。
【0072】[不一致] 既知のウィルスの変更されたバージョンを検出するため
のもう1つの方法では、あるバイトの列がシグネチャに
ほぼ一致する時にユーザに警告する。正確に言うと、列
内の多くともMバイトを除くすべてのバイトがシグネチ
ャ内の対応する位置のバイトと一致する時である。この
場合、候補シグネチャB1B2...BSに対する不一致がM個以
下のシグネチャが見つかる確率を推定する必要がある。
M不一致確率に対する妥当な近似は可能な不一致位置の
組合せ数のすべての確率を加算することによって得られ
る。例えば、Sバイト(ワイルドカードは含まない)の所
与の列のうちせいぜい2バイトが不一致である確率は次
式で近似される。
【数5】
【0073】ただし、XiとXjはそれぞれ本明細書で位置
i及びjでの可変位置ワイルドカードと称するものを表
す。合計はi及びjの可能なすべての位置に対して行われ
る。
【0074】候補シグネチャB1B2...BS内に既にワイル
ドカードが存在する場合(本明細書では、これを固定位
置ワイルドカードと称する)、状況はわずかに複雑にな
る。固定位置ワイルドカードの数Wが許容される不一致
の数Mを超える場合、そのシグネチャはM不一致に関して
無効であり、それ以上の計算は不要である。W=Mの場
合、M不一致確率は完全一致確率と同一であり、その推
定は既に説明済みである。W<Mの場合は、M−W個の可変
位置ワイルドカードをW固定位置ワイルドカードに追加
する。M−W個の可変位置の可能な集合の組合せ数のすべ
ての確率を加算して、M不一致確率を得る。下記の擬似
コードはpMismatch(B1B2...BS;M)と表される総合不一
致確率を推定するための本発明の好ましい手順を提供す
る。
【0075】 手順:Mismatch_Probability(シグネチャ;M) 望むならば、シグネチャ内の潜在的な可変バイトをワイルドカードで置換する。 W=ワイルドカードの数 m=M−W If (m<0) エラー: 停止 −− ワイルドカードの数が許容される不一致を超えた Else if (m=0) For i=1 to S+1 For j=i to S+1 Q(0,i,j)=Exact_Match_Probability(BiBi+1...Bj-1) pMismatch(シグネチャ;M)=Q(0,1,S+1) Else if (m>0) For i=1 to S+1−m For j=i+m to S+1 Q(m,i,j)=0 For k=i to k=j−m If (kがどの固定位置ワイルドカードの指標でもない) Q(m,i,j)= Q(m,i,j)+Q(0,i,k)* Q(m−1,k+1,j) pMismatch(シグネチャ;M)=Q(m,1,S+1)
【0076】m=0の時は、手順Exact_Match_Probabilit
yを使用して、候補シグネチャの全関連サブシーケンス
の完全一致確率Q(0,i,j)を計算することに留意された
い。Q(0,1,S+1)即ちシグネチャ全体からなるサブシ
ーケンスの確率だけが必要である。しかし、i≠1且つj
≠S+lの確率Q(0,i,j)はm>0の場合の計算に有用で
あり、その計算で使用するために保存する。
【0077】可変位置ワイルドカードの数mが非0の時、
m個の可変位置ワイルドカードを有するシグネチャの全
関連サブシーケンスの確率Q(m,i,j)はm−1個の可変位
置ワイルドカードを有するシグネチャと可変位置ワイル
ドカードのないシグネチャのサブシーケンスの確率(k番
目のバイトが固定位置ワイルドカードでないすべてのk
について、Q(m−1,k+1,j)とQ(0,i,k))によって表
すことができる。やはり、この段階では確率Q(m,1,S
+1)だけが必要であるがi≠1且つj≠S+lの確率Q(m,
i,j)はmをm+1で置換した時の計算に有用であり、その
計算で使用するために保存する。
【0078】実際には、まずM=Wの場合、手順Mismatch
_Probabilityを呼び出すことが最も効率的になるはずで
ある。これによって完全一致確率が得られることに留意
されたい。その後、M=W+1についてMismatch_Probabil
ityを呼び出し、次にM=W+2など、以下同様にして、シ
グネチャ長Sの所定の関数pMismatch(シグネチャ;M)の
所定の関数又は他の判断基準によって与えられるMの値
までMismatch_Probabilityを呼び出す。
【0079】[結果の組合せと報告(図3、ブロックD及び
ブロックE)] 実際には、完全一致、断片及び不一致の確率推定は一般
に絶対尺度ではいくぶん不正確であるが、十分に大きい
nMaxの場合、確率推定と実際の確率の間によい相関があ
る。
【0080】応用例によっては、様々な確率推定の結果
を組み合わせて最終的な使用可能な結果を得る方法がい
くつかあり得る。ある方法では、3つの確率(とおそらく
は不一致の数M)のなんらかの組合せに基づいてシグネチ
ャにスコアを割り当て、次に所定の閾値を使用してその
シグネチャの受入れ又は拒絶を行う。
【0081】シグネチャを完全一致だけを許容するウィ
ルス・スキャナと共に使用しようとする場合、スコアの
適当な選択肢は完全一致確率だけになるはずである。こ
の場合、シグネチャはそのスコアが何らかの閾値より低
い場合は受け入れられ、そうでない場合は拒絶される。
【0082】ウィルス・スキャナが断片及び不一致を許
容する場合、スコアの適当な選択肢は断片確率と不一致
確率の和になるはずである。その結果、断片又は不一致
のいずれかの確率がわずかに過大評価される。というの
は、これらの確率が完全に独立ではないからである。し
かし、本発明の目的では、この技法は妥当な近似を提供
する。この場合も、閾値を使用してシグネチャの受入れ
又は拒絶を行うことができる。
【0083】さらに洗練された戦略も、本発明の教示の
範囲に含まれる。例えば、断片確率とM不一致確率を別
々に断片閾値又はM不一致閾値と比較する。断片スコア
は許容できるがM不一致スコアは許容できない場合、ウ
ィルス・スキャナは断片の一致を許容するが、M不一致
は許容せず、逆も同様である。
【0084】さらに、ある所定のMの値についてM不一致
スコアを完全に拒絶するのではなく、所与のシグネチャ
について、M不一致確率が所与の閾値よりも低くなる最
大のMを手順に決定させることも本発明の教示の範囲に
含まれる。この手法では、このステップと前に説明した
不一致計算の間での何度かの相互作用が必要である。
【0085】閾値確率を使用する場合、適当な閾値を選
択するための現時点で好ましい手法を図5の流れ図に示
し、以下で説明する。まずブロックAで、プログラムの
本体34を3つの構成要素即ちプローブ・セット、トレー
ニング・セット及びテスト・セットに分解する。これは
本体34内のプログラムにこの3つのセットのうちの1つを
ランダムに割り当てることによって実行できる。プロー
ブ・セットは比較的小さくすることができ、トレーニン
グ・セットとテスト・セットはそれより大きく、寸法が
互いにほぼ匹敵することが好ましい。ブロックBで、複
数(好ましくは数千個以上)のバイト列をプローブ・セッ
トからランダムに選択する。このバイト列はそれぞれ典
型的なシグネチャ長Sに匹敵する長さを有する。ブロッ
クCで、トレーニング・セットを本体であるかのように
扱い、上記で詳細に説明した1組の手順を使用して、各
シグネチャの完全一致確率と典型的な1組のファジイ一
致確率を推定する。ブロックDで、テスト・セット内で
の各シグネチャの頻度とそのシグネチャに対する適当な
ファジイ一致をカウントする。
【0086】ブロックEで、プローブ・セット内の各シ
グネチャごとに完全一致及び所望のすべてのタイプのフ
ァジイ一致(例えば、断片、1不一致、2不一致など)に関
して、推定確率(トレーニング・セットから得られた値)
対測定相対頻度(テスト・セットから得られた値)のリス
トを作る。各一致タイプの妥当な確率閾値を確立するた
め、ブロックFで、次の計算を実行する。まず、多数(通
常は数十個)の密な間隔の確率閾値T(i)のそれぞれにつ
いて、テスト・セット内に1回以上現れた推定確率がT
(i)より低いシグネチャの総数Sbad(T)を数える。次に、
指定された確率閾値T(i)のそれぞれについて、推定確率
がTより低いシグネチャの総数Stotal(T)を数える。閾値
Tの偽肯定確率はFP(T)=Sbad(T)/Stotal(T)によって与
えられる。
【0087】その後、テスト・セット内に一度も現れな
かったプローブ・セット内のシグネチャ(よい(good)シ
グネチャと称する)の総数Sgoodを数える。次に、Tのそ
れぞれについて、推定確率がTより低いよいシグネチャ
の割合GoodSigs(T)を計算する。ブロックGで、偽肯定確
率FP(T)は許容できるほどに小さい(通常は1%未満)が閾
値GoodSigs(T)によって受け入れられると期待されるシ
グネチャの割合がウィルス・コード内のどこかで有効な
シグネチャを発見できることを実質上保証するのに十分
なほど大きい(即ち5%乃至25%又はそれ以上である)閾
値Tが(セット判断基準を使用して自動的に又はユーザに
よって)選択される。
【0088】各一致タイプについて妥当な確率閾値を確
立するため、ブロックFで、推定確率が指定された閾値
より低く、テスト・セットに1回以上現れたシグネチャ
の比率を計算する。これによって、その閾値の偽肯定確
率が得られる。ブロックGで、許容できるほど小さい偽
肯定確率を与えるが多数のシグネチャを排除しない閾値
を選択する。
【0089】存在する又は存在し得るプログラムの数が
本体34内のプログラムの数をかなり上回るという事実を
考慮に入れると、閾値確率を1/10又は1/100に減らすこ
とが望ましい可能性がある。実際には、ウィルス・コー
ドは現代のソフトウェア・アプリケーションの大半が記
述される高水準言語ではなく、アセンブラで記述される
傾向を有するので、これは慎重になりすぎる可能性があ
る。従って、本体自体から取ったプローブの調査に基づ
く閾値の選択は幾分非典型的なソフトウェアであるウィ
ルスに関して悲観的になりすぎる可能性がある。実際に
は、10乃至100の安全率を見込まない時でも、本発明の
手順によって偽肯定を生じるシグネチャが得られること
はまれである。
【0090】評価モードでは、各候補シグネチャ(おそ
らく潜在的可変バイト位置へのワイルドカードの自動挿
入によって変更されている)がその完全一致確率、M不一
致確率、断片確率、M自体及びそのシグネチャが有効な
シグネチャとして受け入れられたかどうかの指示と共に
報告される。
【0091】評価モードでは、各ウィルスごとに最高の
スコアを有する1つ又は複数の候補シグネチャが選択さ
れる可能性がある。この場合、スコアがMの値の大きさ
を反映し、選択されたシグネチャが可能な最大量の変化
を捕捉するようになっていることが好ましい。具体的な
選択判断基準の詳細がどうであれ、評価モードに関して
上記で説明したのと同じ情報が報告される。
【0092】最終結果として、候補ウィルス・シグネチ
ャの発生の推定確率が閾値確率より低い場合に、1つ又
は複数の有効なウィルス・シグネチャが生成され又は受
け入れられる。この場合、閾値確率は後でウィルス・ス
キャナでそれを使用する際にあまりに多くの偽肯定を生
じる可能性の高いシグネチャを拒絶するのに十分なほど
低いが、少なくとも幾つかの候補シグネチャを受け入れ
るのに十分なほど高い値を有する。
【0093】一般に、完全一致確率、断片確率及びM不
一致確率には、別々の閾値(Mごとに異なる閾値)が存在
することに留意されたい。スキャナと共に使用するため
に受け入れられるには、シグネチャは閾値より低い推定
偽肯定確率を有する必要がある。スキャナの性質によっ
ては、完全一致閾値を満足するが、断片又はM不一致あ
るいはその両方の閾値を満足しないシグネチャを受け入
れることができる。この場合は、シグネチャ・データベ
ース内で適当なフォーマットを使用してそのシグネチャ
に関して断片又は不一致を使用してはならないことをス
キャナに伝える。不一致の場合、M不一致の推定偽肯定
確率がM不一致閾値より低くなるようにMを調節すること
ができる。
【0094】閾値を満たすことに加えて、他の判断基準
が存在する。まず、推定偽肯定確率はすべての候補シグ
ネチャのうちで最低の確率でなければならない。この判
断基準をMをできる限り大きく保つという要望とトレー
ドオフを行うことができる。
【0095】さらに、十分に変わったバイト・シーケン
スから始まるシグネチャを優先的に選択するようにバイ
アスをかけるなど他の判断基準を利用することが望まし
い場合もある。
【0096】一例として、以下に本発明の好ましい技法
のステップを示す。 1.最初の2バイトが所与の閾値よりも一般的である候補
シグネチャをすべて破棄する。 2.残りの候補シグネチャのすべてについて、完全一致確
率を評価する。 3.完全一致閾値より高い完全一致偽肯定確率を有する候
補シグネチャをすべて破棄する。 4.最も低い推定確率を有するn(通常は約10乃至20)個の
候補シグネチャを保存する。 5.残りの各候補シグネチャiについて、断片偽肯定確率f
ragiを評価する。 6.残りの各候補シグネチャiについて、M不一致偽肯定確
率がM不一致確率閾値を超えるかどうかも評価する。超
える場合は、Mi=m−1にセットする。Miの最大値はシグ
ネチャの長さSの線形関数に制限することが好ましい。 7.特定のウィルスVに対応するすべての候補シグネチャ
について、Mの値が最大のシグネチャを最適シグネチャ
として選択する。同じ値を有するものがある場合は、最
も低いM不一致偽肯定確率を有するシグネチャを選択す
る。 8.各ウィルスごとに最適シグネチャをMの値、断片が受
け入れられる(即ち、断片偽肯定確率が断片閾値より低
い)か否か及び他の適当な情報と共に、シグネチャ・デ
ータベースに記録する。
【0097】この技法には、多数の可能な変形が存在す
る。上記に記載の技法は特定のウィルス・スキャナ用に
最適化されている。
【0098】先に指摘したように、シグネチャ報告は通
常は表示装置20に表示されあるいは他のソフトウェア・
プログラム、具体的にはウィルス・スキャナによる使用
に適したフォーマットで記憶媒体上のファイルに書き込
まれる。
【0099】図1のデータ処理システム10に関して本発
明の方法を説明したので、次に図6のウィルス抽出評価
システム38を参照する。入力ファイル32、プログラムの
本体34及びnグラム・テーブル36は図1と同様に機能し、
図1と同じ番号を付けてある。nグラム・プロセッサ40は
スイッチ42に接続された入力を有し、抽出モードではウ
ィルス・コードのセクション32aを評価モードでは候補
シグネチャ32bを受け取る。nグラム・プロセッサ40は手
順Build_Ngram_List(抽出モード)及びBuild_Ngram_List
(評価モード)に従って動作する。LOS 44は抽出モードで
はlength_of_section情報を供給し、評価モードではlen
gth_of_signature情報を供給する。LOS 44は通常入力で
あるウィルス・コードのセクション32a又は候補シグネ
チャ32bの形式から決定される内部変数であることに留
意されたい。nMax46は通常は3乃至8の範囲内にある値を
供給する。nグラム・プロセッサ40は一義的nグラムをn
グラム・テーブル36に記憶するため、nグラム・テーブ
ル36に両方向に結合される。
【0100】nグラム・テーブル36の出力にnグラム確率
推定機構48が結合されている。nグラム確率推定機構48
は方法1又は方法2で数式2及び数式3に従って動作する。
方法1で動作する時、nグラム確率推定機構48はnグラム
・テーブル36からnグラムを受け取り、またプログラム
の本体34からバイト列を受け取る。方法2で動作する時
はnグラム確率推定機構48はプログラムの本体34の代わ
りに事前計算されたnグラム確率のテーブル50に結合さ
れる。nグラム確率推定機構48はブロック52からαの値
を受け取り、nグラム・テーブル36に上で説明したf、Tn
及びpの値を供給する。
【0101】ウィルス抽出評価システム38は下記の手順
及び数式に従って動作する候補シグネチャ確率推定機構
54も含む。 X_Probability_Evaluation_Mode、 X_Probability_Extraction_Mode、 Exact_Match_Probability(シグネチャ)、 Calculate_Sequence_Probability(バイト・シーケン
ス;P)、 Calculate_Block_Probability(バイト・ブロック)−(数
式4)、 Fragment_Probability(シグネチャ)、 数式5、 Mismatch_Probability(シグネチャ;M)
【0102】候補シグネチャ確率推定機構54はブロック
56からシグネチャ長(S)を表す入力を受け取り、ブロッ
ク58から許容される不一致の数(M)を表す入力を受け取
る。リストQ及び他の必要な記憶要素は候補シグネチャ
確率推定機構54によって内部で維持される。候補シグネ
チャ確率推定機構54の1出力が候補シグネチャ確率のリ
スト60を提供するメモリに結合され、これにpExact、p
Fragment及びpMismatchの値を供給する。
【0103】候補シグネチャ確率のリスト60の出力に確
率組合せ/有効シグネチャ選択機構62が結合されてい
る。確率組合せ/有効シグネチャ選択機構62は図3のブロ
ックD及びブロックEに従い、必要があれば図5の流れ図
に従って動作する。確率組合せ/有効シグネチャ選択機
構62に閾値ブロック64が結合されている。閾値ブロック
64は確率組合せ/有効シグネチャ選択機構62に現閾値を
供給する。確率組合せ/有効シグネチャ選択機構62の出
力はシグネチャ報告である。この出力は適当な表示装置
に又は例えばウィルス・スキャナ・プログラムに入力す
るためにファイルに供給することができる。
【0104】ブロック70及びブロック72は閾値確率を決
定しようとする場合に使用される。ブロック70は図5の
ブロックE及びブロックFに従って動作し、nグラム確率
推定機構48、候補シグネチャ確率推定機構54及びブロッ
ク72から入力を受け取る。ブロック70は閾値ブロック64
に出力を供給する。nグラム確率推定機構48はプローブ
・セットから取ったバイト・シーケンスを候補シグネチ
ャとして扱い、トレーニング・セットを本体として扱っ
て候補シグネチャ確率推定機構54が確率推定の計算に必
要とする情報を供給する。これらの確率推定はブロック
70に入力される。さらに、nグラム確率推定機構48は同
じバイト・シーケンスを候補シグネチャとして扱い、テ
スト・セットを本体として使用して各候補シグネチャの
頻度を数え、その頻度(f)をブロック70に供給する。ブ
ロック70では、前に図5のブロックE及びブロックFに関
して説明したように、推定確率と数えられた頻度を組み
合わせて、閾値の関数としての偽肯定確率と偽拒絶確率
を計算する。ブロック72は一実施例で、この2つの量を
最小化する必要の間での妥当なトレードオフを行うため
のヒューリスティックを表す。別の実施例では、ブロッ
ク72はユーザの対話入力を表す。後者の実施例の場合、
ユーザは偽肯定曲線と偽拒絶曲線の表示を与えられ、こ
の情報に基づく閾値の選択を入力する。どちらの場合で
も、閾値は確率組合せ/有効シグネチャ選択機構62が使
用できるように閾値ブロック64に記憶される。
【0105】nグラム・プロセッサ40、nグラム確率推定
機構48、候補シグネチャ確率推定機構54、確率組合せ/
有効シグネチャ選択機構62及びブロック70は別々の専用
処理装置として実施することも、本発明の方法に従って
動作する単一処理装置によって実施することもできる。
入力ファイル32、プログラムの本体34、nグラム・テー
ブル36、事前計算されたnグラム確率のテーブル50及び
候補シグネチャ確率のリスト60は別々の記憶装置を用い
て実施することもRAMやディスクなど単一の記憶装置を
用いて実施することもできる。LOS 44、nMax46、ブロッ
ク52、ブロック56、ブロック58及び閾値ブロック64はレ
ジスタを用いて実施することも、記憶装置内の位置とし
て実施することもできる。スイッチ42は物理スイッチ又
は論理スイッチであるものと理解される。
【0106】以上、コンピュータ・ウィルス及び他の不
所望のソフトウェア・エンティティのシグネチャを評価
し抽出するための方法及び装置に関して本発明を説明し
てきたが、本発明の教示が広い応用範囲を有することを
理解されたい。即ち、本発明の教示は考察中のエンティ
ティと総称される物体又は事象を複数の特徴によって特
徴づけることができる分野に適用可能である。効率的な
認識に関してあるいは関連する物体又は事象のクラスへ
と一般化するため、小さな1組の特徴を使用して、物体
又は事象を高い信頼性で認識することができる。本発明
の方法では、典型的に発生する他の物体又は事象の大き
な本体を統計的に特徴づけ、この情報を使用して認識す
べき物体又は事象のシグネチャを決定する。
【0107】本発明の教示から利益を得ることのできる
応用分野には、例えば指紋認識、声紋認識及び網膜パタ
ーン認識がある。本発明の教示は例えばテキスト・ファ
イルを走査して既知のテキスト・シーケンスのインスタ
ンスを検出することなどによる剽窃の検出に使用するこ
ともできる。本発明の教示はコンピュータ・ネットワー
ク上の活動のログ記録を含む様々なタイプの監査記録内
の異常を検出するのに使用することもできる。
【図面の簡単な説明】
【図1】本発明の実施に使用するのに適したコンピュー
タ・システムのブロック図である。
【図2】シグネチャ抽出モードの動作で使用するための
前処理方法を示す流れ図である。
【図3】本発明の統計に基づくコンピュータ・ウィルス
・シグネチャ抽出評価方法の動作を示す流れ図である。
【図4】3つの部分がそれぞれ不変部分と可変部分を含
むコンピュータ・ウィルスの3つのインスタンスの部分
の例を示す図である。
【図5】候補シグネチャの受入れ又は拒絶に使用される
確率閾値を選択する方法を示す流れ図である。
【図6】本発明の方法を実行するのに適したシステムの
ブロック図である。
【符号の説明】
10 データ処理システム 12 システム・バス 14 中央演算処理装置(CPU) 32 入力ファイル(IF) 32a ウィルス・コードのセクション 32b 候補シグネチャ 34 プログラムの本体(CP) 36 nグラム・テーブル(NGT) 38 ウィルス抽出評価システム 40 nグラム・プロセッサ 44 LOS 46 nMax 48 nグラム確率推定機構 50 事前計算されたnグラム確率のテーブル 54 候補シグネチャ確率推定機構 60 候補シグネチャ確率のリスト 62 確率組合せ/有効シグネチャ選択機構 64 閾値ブロック
フロントページの続き (56)参考文献 特開 平3−233629(JP,A) 特開 平3−502263(JP,A) 「MONTHLY The BASI C」1991〜1!通巻92号(1990−12− 18)(株)技術評論社 P.26−P.28 (ウイルスの対策方法の章を参照)

Claims (16)

    (57)【特許請求の範囲】
  1. 【請求項1】ディジタル・データ・プロセッサを動作さ
    せて不所望のソフトウェア・エンティティの有効なシグ
    ネチャを得る方法であって、 不所望のソフトウェア・エンティティのインスタンスが
    変わっても実質的に不変のまま留まる可能性の高い不所
    望のソフトウェア・エンティティの、バイト・シーケン
    スを含む少なくとも1部分をディジタル・データ・プロ
    セッサに入力する入力ステップと、 前記不所望のソフトウェア・エンティティの少なくとも
    1部分から1つ又は複数の候補シグネチャを選択する選択
    ステップと、 それぞれ1乃至ある選択された最大数の順次バイトのバ
    イト・シーケンスで構成された一義的nグラムのリスト
    を前記バイト・シーケンスから構築する構築ステップ
    と、 前記一義的nグラムのそれぞれについてコンピュータ・
    プログラムの本体から得られたバイト・シーケンス内で
    の一義的nグラムの発生確率を推定するために、前記コ
    ンピュータ・プログラムの本体から得られたバイト・シ
    ーケンス内のnグラムの発生頻度を記録し、n=1のユニ
    グラムについては、発生確率を記録された発生頻度をユ
    ニグラムの総数で除した商で与え、n≧2のnグラムにつ
    いては、発生確率を記録された発生頻度及びより短いn
    グラムの組み合わせにより決まる確率の加重平均で与え
    るnグラム発生確率推定ステップと、 1つ又は複数の一義的nグラムで構成される候補シグネチ
    ャのそれぞれについて前記コンピュータ・プログラムの
    本体から得られたバイト・シーケンス内での候補シグネ
    チャの発生の偽肯定確率を推定するために、候補シグネ
    チャ及び前記コンピュータプログラムの本体から得られ
    たバイト・シーケンスの間の完全一致の確率及び部分一
    致の確率を推定し、前記完全一致の確率及び前記部分一
    致の確率を組み合わせて前記偽肯定確率を推定する偽肯
    定確率推定ステップと、 推定された候補シグネチャの偽肯定確率を1組の閾値確
    率と比較する比較ステップとを含み、 前記閾値確率は偽肯定確率が該閾値より低いシグネチャ
    の使用中の偽肯定表示の発生の確率が低下するように選
    択されていることを特徴とする不所望のソフトウェア・
    エンティティの有効なシグネチャを得る方法。
  2. 【請求項2】前記入力ステップは1つ又は複数の不所望
    のソフトウェア・エンティティ・シグネチャを入力する
    ステップを含み、前記1つ又は複数の不所望のソフトウ
    ェア・エンティティシグネチャはそれぞれ不所望のソフ
    トウェア・エンティティの、不所望のソフトウェア・エ
    ンティティのインスタンスが変わっても実質的に不変の
    まま留まる可能性の高いバイト・シーケンスを含む少な
    くとも1部分を含むことを特徴とする、請求項1に記載の
    方法。
  3. 【請求項3】前記入力ステップは不所望のソフトウェア
    ・エンティティの少なくとも1つのインスタンスを得る
    ステップ及び少なくとも1つのインスタンスを評価して
    不所望のソフトウェア・エンティティのインスタンスが
    変わっても実質的に不変のまま留まる可能性の高い少な
    くとも1部分を識別するステップを含むことを特徴とす
    る、請求項1に記載の方法。
  4. 【請求項4】B1乃至Bnが順次発生するバイトであるとし
    て、 【数1】 に従って2つの(n−1)グラム発生確率及び1つの(n−2)グ
    ラム発生確率を組み合わせてnグラム発生確率を形成す
    ることを特徴とする、請求項1に記載の方法。
  5. 【請求項5】前記偽肯定確率推定ステップにおける完全
    一致の確率を推定するステップは不所望のソフトウェア
    ・エンティティのインスタンス間で潜在的に変化する可
    能性のあるすべてのバイトを起こりうる各バイトとの完
    全一致を有するワイルドカード・バイトで置換するステ
    ップを含むことを特徴とする、請求項1に記載の方法。
  6. 【請求項6】前記偽肯定確率推定ステップにおける完全
    一致の確率を推定するステップは候補シグネチャをワイ
    ルドカード・バイトを含まない複数の連続バイト・ブロ
    ックに分離するステップを含み、完全一致の確率は前記
    複数の連続バイト・ブロックの確率を互いに乗算するこ
    とによって得られることを特徴とする、請求項5に記載
    の方法。
  7. 【請求項7】前記偽肯定確率推定ステップにおける部分
    一致の確率を推定するステップは不所望のソフトウェア
    ・エンティティのインスタンス間で変化する可能性のあ
    るすべてのバイトを前記コンピュータ・プログラムの本
    体から得られたバイト・シーケンス内の各バイトとの完
    全一致を有するワイルドカード・バイトで置換するステ
    ップを含むことを特徴とする、請求項1に記載の方法。
  8. 【請求項8】不所望のソフトウェア・エンティティの有
    効なシグネチャを得る装置であって、 不所望のソフトウェア・エンティティのインスタンスが
    変わっても実質的に不変のまま留まる可能性の高い不所
    望のソフトウェア・エンティティの、バイト・シーケン
    スを含む少なくとも1部分を入力する入力手段と、 前記不所望のソフトウェア・エンティティの少なくとも
    1部分から1つ又は複数の候補シグネチャを選択する選択
    手段と、 それぞれ1乃至ある選択された最大数の順次バイトのバ
    イト・シーケンスで構成された一義的nグラムのリスト
    を前記バイト・シーケンスから構築する構築手段と、 前記一義的nグラムのそれぞれについてコンピュータ・
    プログラムの本体から得られたバイト・シーケンス内で
    の一義的nグラムの発生確率を推定するために、前記コ
    ンピュータ・プログラムの本体から得られたバイト・シ
    ーケンス内のnグラムの発生頻度を記録し、n=1のユニ
    グラムについては、発生確率を記録された発生頻度をユ
    ニグラムの総数で除した商で与え、n≧2のnグラムにつ
    いては、発生確率を記録された発生頻度及びより短いn
    グラムの組み合わせにより決まる確率の加重平均で与え
    るnグラム発生確率推定手段と、 1つ又は複数の一義的nグラムで構成される候補シグネチ
    ャのそれぞれについて前記コンピュータ・プログラムの
    本体から得られたバイト・シーケンス内での候補シグネ
    チャの発生の偽肯定確率を推定するために、候補シグネ
    チャ及び前記コンピュータプログラムの本体から得られ
    たバイト・シーケンスの間の完全一致の確率及び部分一
    致の確率を推定し、前記完全一致の確率及び前記部分一
    致の確率を組み合わせて前記偽肯定確率を推定する偽肯
    定確率推定手段と、 推定された候補シグネチャの偽肯定確率を1組の閾値確
    率と比較する比較手段とを含み、 前記閾値確率は偽肯定確率が該閾値より低いシグネチャ
    の使用中の偽肯定表示の発生の確率が低下するように選
    択されていることを特徴とする不所望のソフトウェア・
    エンティティの有効なシグネチャを得る装置。
  9. 【請求項9】前記入力手段は1つ又は複数の不所望のソ
    フトウェア・エンティティ・シグネチャを入力する手段
    を含み、前記1つ又は複数の不所望のソフトウェア・エ
    ンティティシグネチャはそれぞれ不所望のソフトウェア
    ・エンティティの、不所望のソフトウェア・エンティテ
    ィのインスタンスが変わっても実質的に不変のまま留ま
    る可能性の高いバイト・シーケンスを含む少なくとも1
    部分を含むことを特徴とする、請求項8に記載の装置。
  10. 【請求項10】前記入力手段は不所望のソフトウェア・
    エンティティの少なくとも1つのインスタンスを得る手
    段及び少なくとも1つのインスタンスを評価して不所望
    のソフトウェア・エンティティのインスタンスが変わっ
    ても実質的に不変のまま留まる可能性の高い少なくとも
    1部分を識別する手段を含むことを特徴とする、請求項8
    に記載の装置。
  11. 【請求項11】前記偽肯定確率推定手段における完全一
    致の確率を推定する手段は不所望のソフトウェア・エン
    ティティのインスタンス間で潜在的に変化する可能性の
    あるすべてのバイトを起こりうる各バイトとの完全一致
    を有するワイルドカード・バイトで置換する手段を含む
    ことを特徴とする、請求項8に記載の装置。
  12. 【請求項12】前記偽肯定確率推定手段における完全一
    致の確率を推定する手段は候補シグネチャをワイルドカ
    ード・バイトを含まない複数の連続バイト・ブロックに
    分離する手段を含み、完全一致の確率は前記複数の連続
    バイト・ブロックの確率を互いに乗算することによって
    得られることを特徴とする、請求項11に記載の装置。
  13. 【請求項13】前記偽肯定確率推定手段における部分一
    致の確率を推定する手段は不所望のソフトウェア・エン
    ティティのインスタンス間で変化する可能性のあるすべ
    てのバイトを前記コンピュータ・プログラムの本体から
    得られたバイト・シーケンス内の各バイトとの完全一致
    を有するワイルドカード・バイトで置換する手段を含む
    ことを特徴とする、請求項8に記載の装置。
  14. 【請求項14】ディジタル・データ・プロセッサを動作
    させて不所望のソフトウェア・エンティティの有効なシ
    グネチャを得る方法であって、 不所望のソフトウェア・エンティティのインスタンスが
    変わっても実質的に不変のまま留まる可能性の高い不所
    望のソフトウェア・エンティティの、バイト・シーケン
    スを含む少なくとも1部分をディジタル・データ・プロ
    セッサに入力する入力ステップと、 前記不所望のソフトウェア・エンティティの少なくとも
    1部分から1つ又は複数の候補シグネチャを選択する選択
    ステップと、 一義的nグラムのリストを前記バイト・シーケンスから
    構築する構築ステップと、 一義的nグラムのそれぞれについて前記コンピュータ・
    プログラムの本体から得られたバイト・シーケンス内で
    の一義的nグラムの発生の確率を用いて推定するnグラム
    発生確率推定ステップと、 1つ又は複数の一義的nグラムで構成される候補シグネチ
    ャのそれぞれについて前記コンピュータ・プログラムの
    本体から得られたバイト・シーケンス内での候補シグネ
    チャの発生の偽肯定確率を推定する偽肯定確率推定ステ
    ップと、 前記候補シグネチャの推定偽肯定確率を1組の閾値確率
    と比較するステップとを含み、 前記閾値確率は偽肯定確率が該閾値より低いシグネチャ
    の使用中の偽肯定表示の発生の確率が低下するように選
    択されており、 比較ステップは、 所定数のバイトが所定の閾値よりも一層コモンであるよ
    うな候補シグネチャを破棄するステップと、 残りのすべての候補シグネチャについて完全一致確率を
    評価するステップと、 完全一致閾値より高い完全一致偽肯定確率を有するすべ
    ての候補シグネチャを破棄するステップと、 最低の推定確率を有するn個の候補シグネチャを保存す
    るステップと、 残りの各候補シグネチャiについて、断片偽肯定確率fra
    giを評価するステップと、 残りの各候補シグネチャiについて、m=1から始めて、
    偽肯定確率がm不一致閾値を超えるまでmを増分しなが
    ら、m不一致偽肯定確率を評価するステップと、 Mi=m−1にセットするステップと、 特定の不所望のソフトウェア・エンティティに対応する
    すべての候補シグネチャについて、最大値Mを有するシ
    グネチャを最適シグネチャとして選択するステップと、 不所望の各ソフトウェア・エンティティについて、選択
    された最適シグネチャをシグネチャ・データベースに記
    録するステップと を含むことを特徴とする不所望のソフトウェア・エンテ
    ィティの有効なシグネチャを得る方法。
  15. 【請求項15】m不一致偽肯定確率を評価するステップ
    の実行中、Miの最大値がシグネチャの長さの線形関数に
    制限されることを特徴とする、請求項14に記載の方法。
  16. 【請求項16】前記選択ステップで、最大値を有するも
    のが2以上ある場合に、最低のm不一致偽肯定確率を有す
    るシグネチャを選択することを特徴とする、請求項14に
    記載の方法。
JP5332235A 1993-01-19 1993-12-27 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置 Expired - Lifetime JP2501771B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US487193A 1993-01-19 1993-01-19
US004871 1993-01-19

Publications (2)

Publication Number Publication Date
JPH06250861A JPH06250861A (ja) 1994-09-09
JP2501771B2 true JP2501771B2 (ja) 1996-05-29

Family

ID=21712927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5332235A Expired - Lifetime JP2501771B2 (ja) 1993-01-19 1993-12-27 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置

Country Status (2)

Country Link
US (1) US5452442A (ja)
JP (1) JP2501771B2 (ja)

Families Citing this family (240)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US5572590A (en) * 1994-04-12 1996-11-05 International Business Machines Corporation Discrimination of malicious changes to digital information using multiple signatures
US5675711A (en) * 1994-05-13 1997-10-07 International Business Machines Corporation Adaptive statistical regression and classification of data strings, with application to the generic detection of computer viruses
US5752051A (en) * 1994-07-19 1998-05-12 The United States Of America As Represented By The Secretary Of Nsa Language-independent method of generating index terms
US6279128B1 (en) * 1994-12-29 2001-08-21 International Business Machines Corporation Autonomous system for recognition of patterns formed by stored data during computer memory scrubbing
JP4162099B2 (ja) * 1995-06-02 2008-10-08 富士通株式会社 ウィルス感染に対処する機能を持つ装置及びその記憶装置
GB2303947A (en) * 1995-07-31 1997-03-05 Ibm Boot sector virus protection in computer systems
US5889943A (en) * 1995-09-26 1999-03-30 Trend Micro Incorporated Apparatus and method for electronic mail virus detection and elimination
US5623600A (en) * 1995-09-26 1997-04-22 Trend Micro, Incorporated Virus detection and removal apparatus for computer networks
US5854916A (en) * 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
US6857099B1 (en) * 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5951698A (en) * 1996-10-02 1999-09-14 Trend Micro, Incorporated System, apparatus and method for the detection and removal of viruses in macros
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6088801A (en) * 1997-01-10 2000-07-11 Grecsek; Matthew T. Managing the risk of executing a software process using a capabilities assessment and a policy
US6016546A (en) * 1997-07-10 2000-01-18 International Business Machines Corporation Efficient detection of computer viruses and other data traits
US6006329A (en) * 1997-08-11 1999-12-21 Symantec Corporation Detection of computer viruses spanning multiple data streams
US6260172B1 (en) * 1997-09-05 2001-07-10 Nippon Steel Corporation Semiconductor device with logic rewriting and security protection function
US6678822B1 (en) 1997-09-25 2004-01-13 International Business Machines Corporation Method and apparatus for securely transporting an information container from a trusted environment to an unrestricted environment
US6108799A (en) * 1997-11-21 2000-08-22 International Business Machines Corporation Automated sample creation of polymorphic and non-polymorphic marcro viruses
US6021510A (en) * 1997-11-24 2000-02-01 Symantec Corporation Antivirus accelerator
US6029256A (en) * 1997-12-31 2000-02-22 Network Associates, Inc. Method and system for allowing computer programs easy access to features of a virus scanning engine
US6088804A (en) * 1998-01-12 2000-07-11 Motorola, Inc. Adaptive system and method for responding to computer network security attacks
WO1999066383A2 (en) * 1998-06-15 1999-12-23 Dmw Worldwide, Inc. Method and apparatus for assessing the security of a computer system
US6192512B1 (en) 1998-09-24 2001-02-20 International Business Machines Corporation Interpreter with virtualized interface
US6338141B1 (en) 1998-09-30 2002-01-08 Cybersoft, Inc. Method and apparatus for computer virus detection, analysis, and removal in real time
US6711583B2 (en) * 1998-09-30 2004-03-23 International Business Machines Corporation System and method for detecting and repairing document-infecting viruses using dynamic heuristics
IL143573A0 (en) 1998-12-09 2002-04-21 Network Ice Corp A method and apparatus for providing network and computer system security
US6549957B1 (en) 1998-12-22 2003-04-15 International Business Machines Corporation Apparatus for preventing automatic generation of a chain reaction of messages if a prior extracted message is similar to current processed message
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US6658151B2 (en) * 1999-04-08 2003-12-02 Ricoh Co., Ltd. Extracting information from symbolically compressed document images
US6732149B1 (en) * 1999-04-09 2004-05-04 International Business Machines Corporation System and method for hindering undesired transmission or receipt of electronic messages
GB2350449A (en) * 1999-05-27 2000-11-29 Ibm Detecting replication of a computer virus using a counter virus
US7346929B1 (en) 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
US6952776B1 (en) 1999-09-22 2005-10-04 International Business Machines Corporation Method and apparatus for increasing virus detection speed using a database
US6880087B1 (en) * 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
US8006243B2 (en) 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US6954858B1 (en) 1999-12-22 2005-10-11 Kimberly Joyce Welborn Computer virus avoidance system and mechanism
US7921459B2 (en) 2000-04-28 2011-04-05 International Business Machines Corporation System and method for managing security events on a network
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
US7162649B1 (en) 2000-06-30 2007-01-09 Internet Security Systems, Inc. Method and apparatus for network assessment and authentication
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US7178166B1 (en) 2000-09-19 2007-02-13 Internet Security Systems, Inc. Vulnerability assessment and authentication of a computer by a local scanner
US9027121B2 (en) 2000-10-10 2015-05-05 International Business Machines Corporation Method and system for creating a record for one or more computer security incidents
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US7398553B1 (en) * 2000-10-30 2008-07-08 Tread Micro, Inc. Scripting virus scan engine
US7130466B2 (en) 2000-12-21 2006-10-31 Cobion Ag System and method for compiling images from a database and comparing the compiled images with known images
US6738932B1 (en) * 2000-12-22 2004-05-18 Sun Microsystems, Inc. Method and system for identifying software revisions from memory images
US20020147803A1 (en) 2001-01-31 2002-10-10 Dodd Timothy David Method and system for calculating risk in association with a security audit of a computer network
US7302584B2 (en) * 2001-03-16 2007-11-27 Mcafee, Inc. Mechanisms for banning computer programs from use
WO2002093334A2 (en) * 2001-04-06 2002-11-21 Symantec Corporation Temporal access control for computer virus outbreaks
CN1147795C (zh) * 2001-04-29 2004-04-28 北京瑞星科技股份有限公司 检测和清除已知及未知计算机病毒的方法、系统
US7210041B1 (en) * 2001-04-30 2007-04-24 Mcafee, Inc. System and method for identifying a macro virus family using a macro virus definitions database
US7065789B1 (en) 2001-05-22 2006-06-20 Computer Associates Think, Inc. System and method for increasing heuristics suspicion levels in analyzed computer code
US7237264B1 (en) 2001-06-04 2007-06-26 Internet Security Systems, Inc. System and method for preventing network misuse
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US7487544B2 (en) 2001-07-30 2009-02-03 The Trustees Of Columbia University In The City Of New York System and methods for detection of new malicious executables
US7540031B2 (en) * 2001-08-01 2009-05-26 Mcafee, Inc. Wireless architecture with malware scanning component manager and associated API
US6718469B2 (en) * 2001-08-01 2004-04-06 Networks Associates Technology, Inc. System and method for executing computer virus definitions containing general purpose programming language extensions
US6792543B2 (en) 2001-08-01 2004-09-14 Networks Associates Technology, Inc. Virus scanning on thin client devices using programmable assembly language
US7657935B2 (en) 2001-08-16 2010-02-02 The Trustees Of Columbia University In The City Of New York System and methods for detecting malicious email transmission
US20030084326A1 (en) * 2001-10-31 2003-05-01 Richard Paul Tarquini Method, node and computer readable medium for identifying data in a network exploit
KR100427449B1 (ko) * 2001-12-14 2004-04-14 한국전자통신연구원 네트워크 기반 침입탐지시스템의 적응적 규칙 추정에 의한침입탐지방법
US8544087B1 (en) 2001-12-14 2013-09-24 The Trustess Of Columbia University In The City Of New York Methods of unsupervised anomaly detection using a geometric framework
US9306966B2 (en) 2001-12-14 2016-04-05 The Trustees Of Columbia University In The City Of New York Methods of unsupervised anomaly detection using a geometric framework
US7761605B1 (en) 2001-12-20 2010-07-20 Mcafee, Inc. Embedded anti-virus scanner for a network adapter
US8185943B1 (en) 2001-12-20 2012-05-22 Mcafee, Inc. Network adapter firewall system and method
US7401359B2 (en) * 2001-12-21 2008-07-15 Mcafee, Inc. Generating malware definition data for mobile computing devices
US7415726B2 (en) * 2001-12-28 2008-08-19 Mcafee, Inc. Controlling access to suspicious files
AU2003202876A1 (en) 2002-01-04 2003-07-24 Internet Security Systems, Inc. System and method for the managed security control of processes on a computer system
US7225343B1 (en) 2002-01-25 2007-05-29 The Trustees Of Columbia University In The City Of New York System and methods for adaptive model generation for detecting intrusions in computer systems
US7219301B2 (en) * 2002-03-01 2007-05-15 Iparadigms, Llc Systems and methods for conducting a peer review process and evaluating the originality of documents
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7155742B1 (en) 2002-05-16 2006-12-26 Symantec Corporation Countering infections to communications modules
US7367056B1 (en) * 2002-06-04 2008-04-29 Symantec Corporation Countering malicious code infections to computer files that have been infected more than once
US7418729B2 (en) 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
US7380277B2 (en) 2002-07-22 2008-05-27 Symantec Corporation Preventing e-mail propagation of malicious computer code
US7478431B1 (en) * 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
US7331062B2 (en) * 2002-08-30 2008-02-12 Symantec Corporation Method, computer software, and system for providing end to end security protection of an online transaction
US7337471B2 (en) * 2002-10-07 2008-02-26 Symantec Corporation Selective detection of malicious computer code
US7469419B2 (en) * 2002-10-07 2008-12-23 Symantec Corporation Detection of malicious computer code
CN1703722A (zh) * 2002-10-09 2005-11-30 皇家飞利浦电子股份有限公司 图像篡改的定位
US7159149B2 (en) * 2002-10-24 2007-01-02 Symantec Corporation Heuristic detection and termination of fast spreading network worm attacks
US7260847B2 (en) * 2002-10-24 2007-08-21 Symantec Corporation Antivirus scanning in a hard-linked environment
US20040083232A1 (en) * 2002-10-25 2004-04-29 Christopher Ronnewinkel Association learning for automated recommendations
US7134143B2 (en) * 2003-02-04 2006-11-07 Stellenberg Gerald S Method and apparatus for data packet pattern matching
US7249187B2 (en) 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US7941854B2 (en) * 2002-12-05 2011-05-10 International Business Machines Corporation Method and system for responding to a computer intrusion
US7631353B2 (en) * 2002-12-17 2009-12-08 Symantec Corporation Blocking replication of e-mail worms
US7296293B2 (en) 2002-12-31 2007-11-13 Symantec Corporation Using a benevolent worm to assess and correct computer security vulnerabilities
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
US7293290B2 (en) * 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US20040158546A1 (en) * 2003-02-06 2004-08-12 Sobel William E. Integrity checking for software downloaded from untrusted sources
US7246227B2 (en) * 2003-02-10 2007-07-17 Symantec Corporation Efficient scanning of stream based data
US7703000B2 (en) 2003-02-13 2010-04-20 Iparadigms Llc Systems and methods for contextual mark-up of formatted documents
US7203959B2 (en) 2003-03-14 2007-04-10 Symantec Corporation Stream scanning through network proxy servers
US7546638B2 (en) * 2003-03-18 2009-06-09 Symantec Corporation Automated identification and clean-up of malicious computer code
US8261239B2 (en) * 2003-03-25 2012-09-04 International Business Machines Corporation Locating a testable object in a functional testing tool
US7191172B2 (en) * 2003-03-25 2007-03-13 International Business Machines Corporation Fuzzy location of a testable object in a functional testing tool
AU2003233574B9 (en) 2003-05-17 2010-03-25 Microsoft Corporation Mechanism for evaluating security risks
US8271774B1 (en) 2003-08-11 2012-09-18 Symantec Corporation Circumstantial blocking of incoming network traffic containing code
US7739278B1 (en) 2003-08-22 2010-06-15 Symantec Corporation Source independent file attribute tracking
US7644441B2 (en) * 2003-09-26 2010-01-05 Cigital, Inc. Methods for identifying malicious software
EP1668511B1 (en) * 2003-10-03 2014-04-30 Enterasys Networks, Inc. Apparatus and method for dynamic distribution of intrusion signatures
US7657938B2 (en) 2003-10-28 2010-02-02 International Business Machines Corporation Method and system for protecting computer networks by altering unwanted network data traffic
EP1680722A1 (en) * 2003-11-05 2006-07-19 Qinetiq Limited Detection of items stored in a computer system
US7454418B1 (en) * 2003-11-07 2008-11-18 Qiang Wang Fast signature scan
US7870161B2 (en) 2003-11-07 2011-01-11 Qiang Wang Fast signature scan
EP1682990B1 (en) * 2003-11-12 2013-05-29 The Trustees of Columbia University in the City of New York Apparatus method and medium for detecting payload anomaly using n-gram distribution of normal data
US7636716B1 (en) 2003-12-03 2009-12-22 Trend Micro Incorporated Method and architecture for blocking email spams
US8442331B2 (en) 2004-02-15 2013-05-14 Google Inc. Capturing text from rendered documents using supplemental information
US7707039B2 (en) 2004-02-15 2010-04-27 Exbiblio B.V. Automatic modification of web pages
US7370361B2 (en) * 2004-02-06 2008-05-06 Trend Micro Incorporated System and method for securing computers against computer virus
US7812860B2 (en) 2004-04-01 2010-10-12 Exbiblio B.V. Handheld device for capturing text from both a document printed on paper and a document displayed on a dynamic display device
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US8458797B1 (en) 2004-03-25 2013-06-04 Trend Micro Incorporated System and method for securing computers against computer viruses
US7337327B1 (en) 2004-03-30 2008-02-26 Symantec Corporation Using mobility tokens to observe malicious mobile code
US9143638B2 (en) 2004-04-01 2015-09-22 Google Inc. Data capture from rendered documents using handheld device
US20060081714A1 (en) 2004-08-23 2006-04-20 King Martin T Portable scanning device
US7894670B2 (en) 2004-04-01 2011-02-22 Exbiblio B.V. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US7990556B2 (en) 2004-12-03 2011-08-02 Google Inc. Association of a portable scanner with input/output and storage devices
US8146156B2 (en) 2004-04-01 2012-03-27 Google Inc. Archive of text captures from rendered documents
US20060098900A1 (en) 2004-09-27 2006-05-11 King Martin T Secure data gathering from rendered documents
US9116890B2 (en) 2004-04-01 2015-08-25 Google Inc. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US7130981B1 (en) 2004-04-06 2006-10-31 Symantec Corporation Signature driven cache extension for stream based scanning
US8620083B2 (en) 2004-12-03 2013-12-31 Google Inc. Method and system for character recognition
US8489624B2 (en) 2004-05-17 2013-07-16 Google, Inc. Processing techniques for text capture from a rendered document
US8874504B2 (en) 2004-12-03 2014-10-28 Google Inc. Processing techniques for visual capture data from a rendered document
JP4025882B2 (ja) * 2004-04-26 2007-12-26 国立大学法人岩手大学 コンピュータウィルス固有情報抽出装置、コンピュータウィルス固有情報抽出方法及びコンピュータウィルス固有情報抽出プログラム
US7861304B1 (en) * 2004-05-07 2010-12-28 Symantec Corporation Pattern matching using embedded functions
US7472288B1 (en) 2004-05-14 2008-12-30 Trend Micro Incorporated Protection of processes running in a computer system
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US20050262567A1 (en) * 2004-05-19 2005-11-24 Itshak Carmona Systems and methods for computer security
US7370233B1 (en) 2004-05-21 2008-05-06 Symantec Corporation Verification of desired end-state using a virtual machine environment
US7577721B1 (en) * 2004-06-08 2009-08-18 Trend Micro Incorporated Structured peer-to-peer push distribution network
US7448085B1 (en) 2004-07-07 2008-11-04 Trend Micro Incorporated Method and apparatus for detecting malicious content in protected archives
US9154511B1 (en) * 2004-07-13 2015-10-06 Dell Software Inc. Time zero detection of infectious messages
US7343624B1 (en) * 2004-07-13 2008-03-11 Sonicwall, Inc. Managing infectious messages as identified by an attachment
US8346620B2 (en) 2004-07-19 2013-01-01 Google Inc. Automatic modification of web pages
US7441042B1 (en) 2004-08-25 2008-10-21 Symanetc Corporation System and method for correlating network traffic and corresponding file input/output traffic
US7509680B1 (en) 2004-09-01 2009-03-24 Symantec Corporation Detecting computer worms as they arrive at local computers through open network shares
US7690034B1 (en) 2004-09-10 2010-03-30 Symantec Corporation Using behavior blocking mobility tokens to facilitate distributed worm detection
US8495144B1 (en) 2004-10-06 2013-07-23 Trend Micro Incorporated Techniques for identifying spam e-mail
US7313878B2 (en) * 2004-11-05 2008-01-01 Tim Clegg Rotary pop-up envelope
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
WO2006101549A2 (en) 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US20060136374A1 (en) * 2004-12-17 2006-06-22 Microsoft Corporation System and method for utilizing a search engine to prevent contamination
US7343599B2 (en) * 2005-01-03 2008-03-11 Blue Lane Technologies Inc. Network-based patching machine
US8104086B1 (en) 2005-03-03 2012-01-24 Symantec Corporation Heuristically detecting spyware/adware registry activity
US7690038B1 (en) 2005-04-26 2010-03-30 Trend Micro Incorporated Network security system with automatic vulnerability tracking and clean-up mechanisms
US7975303B1 (en) 2005-06-27 2011-07-05 Symantec Corporation Efficient file scanning using input-output hints
US7895654B1 (en) 2005-06-27 2011-02-22 Symantec Corporation Efficient file scanning using secure listing of file modification times
US7716739B1 (en) * 2005-07-20 2010-05-11 Symantec Corporation Subjective and statistical event tracking incident management system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8627099B2 (en) * 2005-08-01 2014-01-07 Mcafee, Inc. System, method and computer program product for removing null values during scanning
US20070115833A1 (en) * 2005-11-21 2007-05-24 Gerald Pepper Varying the position of test information in data units
US8381299B2 (en) 2006-02-28 2013-02-19 The Trustees Of Columbia University In The City Of New York Systems, methods, and media for outputting a dataset based upon anomaly detection
US9009818B2 (en) * 2006-04-06 2015-04-14 Pulse Secure, Llc Malware detection system and method for compressed data on mobile platforms
US7945956B2 (en) * 2006-05-18 2011-05-17 Microsoft Corporation Defining code by its functionality
JP4251652B2 (ja) * 2006-06-09 2009-04-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索装置、検索プログラムおよび検索方法
US8239915B1 (en) 2006-06-30 2012-08-07 Symantec Corporation Endpoint management using trust rating data
US7756535B1 (en) 2006-07-07 2010-07-13 Trend Micro Incorporated Lightweight content filtering system for mobile phones
EP2067119A2 (en) 2006-09-08 2009-06-10 Exbiblio B.V. Optical scanners, such as hand-held optical scanners
US8789172B2 (en) 2006-09-18 2014-07-22 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting attack on a digital processing device
US20080071770A1 (en) * 2006-09-18 2008-03-20 Nokia Corporation Method, Apparatus and Computer Program Product for Viewing a Virtual Database Using Portable Devices
US7788576B1 (en) 2006-10-04 2010-08-31 Trend Micro Incorporated Grouping of documents that contain markup language code
US8510834B2 (en) * 2006-10-09 2013-08-13 Radware, Ltd. Automatic signature propagation network
US7797746B2 (en) * 2006-12-12 2010-09-14 Fortinet, Inc. Detection of undesired computer files in archives
US8023974B1 (en) 2007-02-15 2011-09-20 Trend Micro Incorporated Lightweight SVM-based content filtering system for mobile phones
IL181426A (en) * 2007-02-19 2011-06-30 Deutsche Telekom Ag Automatic removal of signatures for malware
EP1978468A1 (en) * 2007-04-04 2008-10-08 Sap Ag A method and a system for secure execution of workflow tasks in a distributed workflow management system within a decentralized network system
US20090080658A1 (en) * 2007-07-13 2009-03-26 Brent Waters Method and apparatus for encrypting data for fine-grained access control
US8041662B2 (en) * 2007-08-10 2011-10-18 Microsoft Corporation Domain name geometrical classification using character-based n-grams
US8005782B2 (en) * 2007-08-10 2011-08-23 Microsoft Corporation Domain name statistical classification using character-based N-grams
EP2031816B1 (en) * 2007-08-29 2012-02-22 NTT DoCoMo, Inc. Optimal operation of hierarchical peer-to-peer networks
US7949771B1 (en) 2007-09-05 2011-05-24 Trend Micro Incorporated Authentication of unknown parties in secure computer communications
US8638363B2 (en) 2009-02-18 2014-01-28 Google Inc. Automatically capturing information, such as capturing information using a document-aware device
US20090235357A1 (en) * 2008-03-14 2009-09-17 Computer Associates Think, Inc. Method and System for Generating a Malware Sequence File
US8938806B1 (en) 2008-06-26 2015-01-20 Emc Corporation Partial pattern detection with commonality factoring
US9177144B2 (en) * 2008-10-30 2015-11-03 Mcafee, Inc. Structural recognition of malicious code patterns
IL195340A (en) 2008-11-17 2013-06-27 Shlomo Dolev Builds and detects malware signatures for executable codes on your computer
US8447066B2 (en) 2009-03-12 2013-05-21 Google Inc. Performing actions based on capturing information from rendered documents, such as documents under copyright
WO2010105246A2 (en) 2009-03-12 2010-09-16 Exbiblio B.V. Accessing resources based on capturing information from a rendered document
US8321942B1 (en) * 2009-03-12 2012-11-27 Symantec Corporation Selecting malware signatures based on malware diversity
US8881287B1 (en) 2009-03-20 2014-11-04 Symantec Corporation Systems and methods for library function identification in automatic malware signature generation
US8291497B1 (en) * 2009-03-20 2012-10-16 Symantec Corporation Systems and methods for byte-level context diversity-based automatic malware signature generation
DE102009041098A1 (de) * 2009-09-14 2011-03-24 zynamics GmbH Verfahren zur Kennzeichnung eines in einem Computerspeichersystem enthaltenden Computerprogrammabschnitts
JP5301411B2 (ja) * 2009-10-16 2013-09-25 日本電信電話株式会社 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置
US9032517B2 (en) * 2009-10-31 2015-05-12 Hewlett-Packard Development Company, L.P. Malicious code detection
US8356354B2 (en) * 2009-11-23 2013-01-15 Kaspersky Lab, Zao Silent-mode signature testing in anti-malware processing
US9081799B2 (en) 2009-12-04 2015-07-14 Google Inc. Using gestalt information to identify locations in printed information
US9323784B2 (en) 2009-12-09 2016-04-26 Google Inc. Image search using text-based elements within the contents of images
US20110154495A1 (en) * 2009-12-21 2011-06-23 Stranne Odd Wandenor Malware identification and scanning
DE102010008538A1 (de) * 2010-02-18 2011-08-18 zynamics GmbH, 44787 Verfahren und System zum Erkennen einer Schadsoftware
US9544328B1 (en) * 2010-03-31 2017-01-10 Trend Micro Incorporated Methods and apparatus for providing mitigations to particular computers
US9098333B1 (en) 2010-05-07 2015-08-04 Ziften Technologies, Inc. Monitoring computer process resource usage
US8595840B1 (en) 2010-06-01 2013-11-26 Trend Micro Incorporated Detection of computer network data streams from a malware and its variants
US9202049B1 (en) 2010-06-21 2015-12-01 Pulse Secure, Llc Detecting malware on mobile devices
US8555382B2 (en) * 2010-06-22 2013-10-08 Mcafee, Inc. Method and system for automatic invariant byte sequence discovery for generic detection
US8621305B2 (en) * 2010-07-08 2013-12-31 Honeywell International Inc. Methods systems and apparatus for determining whether built-in-test fault codes are indicative of an actual fault condition or a false alarm
KR101452664B1 (ko) 2010-09-03 2014-10-22 아이패러다임스, 엘엘씨 문서 분석 시스템 및 방법
US8838992B1 (en) 2011-04-28 2014-09-16 Trend Micro Incorporated Identification of normal scripts in computer systems
US9092229B2 (en) * 2011-05-06 2015-07-28 George Mason Research Foundation, Inc. Software analysis system and method of use
US8516592B1 (en) 2011-06-13 2013-08-20 Trend Micro Incorporated Wireless hotspot with lightweight anti-malware
US9811664B1 (en) 2011-08-15 2017-11-07 Trend Micro Incorporated Methods and systems for detecting unwanted web contents
US8700913B1 (en) 2011-09-23 2014-04-15 Trend Micro Incorporated Detection of fake antivirus in computers
US9749338B2 (en) * 2011-12-19 2017-08-29 Verizon Patent And Licensing Inc. System security monitoring
US8909628B1 (en) 2012-01-24 2014-12-09 Google Inc. Detecting content scraping
US8726338B2 (en) 2012-02-02 2014-05-13 Juniper Networks, Inc. Dynamic threat protection in mobile networks
KR101337216B1 (ko) * 2012-02-21 2013-12-05 주식회사 안랩 컴퓨터 시스템 및 시그니처검증서버
US9111095B2 (en) 2012-08-29 2015-08-18 The Johns Hopkins University Apparatus and method for identifying similarity via dynamic decimation of token sequence n-grams
US8769679B1 (en) * 2012-12-17 2014-07-01 International Business Machines Corporation Tuning of data loss prevention signature effectiveness
US9122679B1 (en) * 2012-12-28 2015-09-01 Symantec Corporation Method and system for information retrieval effectiveness estimation in e-discovery
US9143517B2 (en) * 2013-01-31 2015-09-22 Hewlett-Packard Development Company, L.P. Threat exchange information protection
US9749336B1 (en) 2013-02-26 2017-08-29 Palo Alto Networks, Inc. Malware domain detection using passive DNS
US9710646B1 (en) 2013-02-26 2017-07-18 Palo Alto Networks, Inc. Malware detection using clustering with malware source information
CN104424435B (zh) * 2013-08-22 2018-12-04 腾讯科技(深圳)有限公司 一种获取病毒特征码的方法及装置
US9251261B2 (en) * 2013-09-30 2016-02-02 Symantec Corporation Method and system for metadata driven testing of malware signatures
US20150220850A1 (en) * 2014-02-06 2015-08-06 SparkCognition, Inc. System and Method for Generation of a Heuristic
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9578053B2 (en) 2014-04-10 2017-02-21 SparkCognition, Inc. Systems and methods for using cognitive fingerprints
US9734450B2 (en) 2014-06-05 2017-08-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Data loss prevention to remove false positives
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9805099B2 (en) * 2014-10-30 2017-10-31 The Johns Hopkins University Apparatus and method for efficient identification of code similarity
US10038706B2 (en) * 2014-10-31 2018-07-31 Verisign, Inc. Systems, devices, and methods for separating malware and background events
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
CN105989283B (zh) 2015-02-06 2019-08-09 阿里巴巴集团控股有限公司 一种识别病毒变种的方法及装置
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
CN105187408A (zh) * 2015-08-17 2015-12-23 北京神州绿盟信息安全科技股份有限公司 网络攻击检测方法和设备
US10169581B2 (en) 2016-08-29 2019-01-01 Trend Micro Incorporated Detecting malicious code in sections of computer files
US10992703B2 (en) * 2019-03-04 2021-04-27 Malwarebytes Inc. Facet whitelisting in anomaly detection
US11222113B1 (en) * 2019-03-25 2022-01-11 Ca, Inc. Automatically generating malware definitions using word-level analysis
US11216558B2 (en) * 2019-09-24 2022-01-04 Quick Heal Technologies Limited Detecting malwares in data streams
US11941121B2 (en) * 2021-12-28 2024-03-26 Uab 360 It Systems and methods for detecting malware using static and dynamic malware models

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084816A (en) * 1987-11-25 1992-01-28 Bell Communications Research, Inc. Real time fault tolerant transaction processing system
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
US5218605A (en) * 1990-01-31 1993-06-08 Hewlett-Packard Company Software modules for testing computer hardware and software
JPH03233629A (ja) * 1990-02-09 1991-10-17 Nec Corp 実行形式ファイルの被破壊チェック方式
US5062045A (en) * 1990-02-23 1991-10-29 International Business Machines Corporation System for maintaining a document and activity selective alterable document history log in a data processing system
US5319776A (en) * 1990-04-19 1994-06-07 Hilgraeve Corporation In transit detection of computer virus with safeguard
JPH0477838A (ja) * 1990-07-13 1992-03-11 Fujitsu Ltd 異常メッセージ検出処理装置
US5200958A (en) * 1990-09-28 1993-04-06 Xerox Corporation Method and apparatus for recording and diagnosing faults in an electronic reprographic printing system
US5255208A (en) * 1991-08-08 1993-10-19 Aeg Westinghouse Transportation Systems, Inc. On-line processor based diagnostic system
US5278901A (en) * 1992-04-30 1994-01-11 International Business Machines Corporation Pattern-oriented intrusion-detection system and method
US5297150A (en) * 1992-06-17 1994-03-22 International Business Machines Corporation Rule-based method for testing of programming segments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
「MONTHLYTheBASIC」1991〜1!通巻92号(1990−12−18)(株)技術評論社P.26−P.28(ウイルスの対策方法の章を参照)

Also Published As

Publication number Publication date
US5452442A (en) 1995-09-19
JPH06250861A (ja) 1994-09-09

Similar Documents

Publication Publication Date Title
JP2501771B2 (ja) 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置
US6952776B1 (en) Method and apparatus for increasing virus detection speed using a database
US5907834A (en) Method and apparatus for detecting a presence of a computer virus
US10019573B2 (en) System and method for detecting executable machine instructions in a data stream
US5440723A (en) Automatic immune system for computers and computer networks
US9117078B1 (en) Malware behavior analysis and policy creation
JP5011987B2 (ja) 認証システムの管理方法
JP5785617B2 (ja) データ・セットを取り扱うための方法及び構成、データ処理プログラム及びコンピュータ・プログラム製品
US9747452B2 (en) Method of generating in-kernel hook point candidates to detect rootkits and the system thereof
US9454658B2 (en) Malware detection using feature analysis
EP3899770B1 (en) System and method for detecting data anomalies by analysing morphologies of known and/or unknown cybersecurity threats
US20160004861A1 (en) System and Method for Detection of Heap Spray Attack
JP2006522395A (ja) マクロと実行可能なスクリプトにおいてマルウェアを検出する方法およびシステム
JP2014239495A (ja) フレームに基づくビデオマッチング
US9756063B1 (en) Identification of host names generated by a domain generation algorithm
Eskandari et al. To incorporate sequential dynamic features in malware detection engines
CN112131249A (zh) 一种攻击意图识别方法及装置
CN112257068A (zh) 一种程序相似性检测方法、装置、电子设备和存储介质
US11068595B1 (en) Generation of file digests for cybersecurity applications
Park et al. Antibot: Clustering common semantic patterns for bot detection
WO2008098495A1 (fr) Procédé et dispositif de détermination d&#39;un fichier objet
KR102318991B1 (ko) 유사도 기반의 악성코드 진단 방법 및 장치
CN108319853B (zh) 病毒特征码处理方法及装置
JP6698952B2 (ja) メール検査装置、メール検査方法およびメール検査プログラム
CN111200576A (zh) 一种基于机器学习实现恶意域名识别的方法