ほとんどのアンチウイルスには、数十万または数百万ものマルウェアシグネチャが含まれていますが、多くのファイルを妥当な短時間で高い検出率でスキャンしています。リアルタイムスキャナーでさえ、コンピューターの速度を著しく低下させることはありませんが、脅威に対する強力な保護を提供します。スキャナーはどのようにしてこの種のパフォーマンスを達成できますか?
幅広い質問になる可能性があることは承知していますが、これに関する一般的な考えを知りたかったのです。
よく似た例が 20の質問 ゲームで、目標は一見無関係な一見20のyes/noの質問をすることで任意のオブジェクトを識別することです。ゲームの背後にある考え方は、各回答はオブジェクトの半分を排除するため、20のバイナリ機能のみを持つ2 ^ 20(1,048,576)オブジェクトを記述することは理論的に可能であるということです。
別の例えは、 視覚皮質 が視覚情報を処理する方法です。脳には、無数の画像を検出して分類するための非常にシンプルで高速なハードウェアがあります。 6層のニューロン(ニューロンの数は1億4,000万個と推定されています)のみを使用して、次第に複雑な特徴を抽出し、次の層に渡します。レイヤーは相互にやり取りして相互にやり取りし、メモリーに対して検証できる抽象的な概念を生成します。
ウイルス対策エンジンは、既知のマルウェアの多くの機能を定義ファイルに格納し、新しいファイルをスキャンするときに、それらの機能の抽出と分類(マッチング)を最適化します。機能を保存すると、検出がより堅牢になるため、マルウェアの小さな変更が検出を妨げることはありません。特徴抽出も並行して行われるため、リソースが完全に利用されます。
ほとんどの機能は人間が設計したものですが、ファイルの最後にnullバイトがある、ファイルサイズと印刷可能なテキストサイズの比率など、それ自体では意味をなさない機能もあります。これらの無意味な機能や直感的でない機能は、膨大な量のファイルをデータマイニングすることによってランダムに生成およびテストされます。最後に、ファイルは機能の組み合わせによって記述および分類されます。補足として、Stack Exchangeでクローズされる質問の最良の予測子は、質問の最初の文字が小文字であるかどうかです。
そのため、新しいファイルがスキャンされると、そのファイルはますます細かいカテゴリに分類され、その後、少数の署名セットと照合されます。各ステップでは、多数のクリーンファイルを除外し、次に抽出する他の機能を指定します。最初のステップはコンピューティングリソースの点では非常に小さいですが、後で実行する必要があるより高価なステップを決定します。
少数のディスク読み取りとCPUサイクルのみを使用することにより、エンジンはファイルタイプを判別できます。それがJARファイルであるとしましょう。この情報を使用して、JARファイルの機能の収集を開始します。署名されている場合、スキャンは中止されます。関数をインポートしていない場合、スキャンは中止されます(ここでは簡略化しています)。トリッキーな機能を使用していますか?次に、より多くの特徴を抽出する必要があります。既知の脆弱な機能を使用していますか?次に、既知のJavaエクスプロイトシグネチャを確認します。
オンアクセススキャンの背後には同じ原理がありますが、ゲートキーパーのようにも機能します。したがって、プロセスによって実行される各アクション(通常はAPI呼び出し)がチェックされ、許可または拒否されます。同様に、疑わしい各アクションは、より多くのフィルターとより多くのチェックをトリガーします。チェック中、プロセスまたはスレッドは操作が完了するのを待っていますが、プロセス全体がアクティブに中断される場合があります。これはかなりのオーバーヘッドのように見えるかもしれませんが、特定のアクションが確認されると、後でキャッシュされて非常に迅速に実行されるか、まったく実行されません。その結果、マシンのパフォーマンスが数パーセント低下するのと同様に、パフォーマンスが低下します。 20のAV製品のPCMarkスコアを確認してください ここ 。
そのため、速度の最適化は、スキャンされたファイルの圧倒的多数を構成する見た目がきれいなファイルに対して実行される作業が非常に少ないことに起因しています。重量物を持ち上げる作業は、マルウェアのように見える疑わしいファイルに対してのみ行われます。そのため、AVはプロセスをエミュレートしたり、分析のためにクラウドに送信したりするのに数秒かかることさえあります。
魔法はプログレッシブ分類にあります。
マルウェアシグネチャは、悪意のあるコードの存在を示す一意の値です。簡単に言うと、ウイルス対策プログラムがコンピューターをスキャンすると、ファイルの署名(ハッシュなど)が計算され、その署名/ハッシュが既知の不正な署名のリストと比較されます。
ファイルの単一のハッシュを計算し、それを数百万のハッシュのリストと比較することは、特定のファイルで各マルウェアのシグネチャを探すよりもはるかに簡単です。
署名は、ファイル内の一連のバイトを表す場合があります。また、ファイルまたはそのセクションの暗号化ハッシュにすることもできます。各AVベンダーは、少し異なる方法でそれを行います。
通常、ウイルス対策ソフトウェアスキャンの「パフォーマンスと深度」の設定があります。これらのスキャンは基本的に、ファイルが安全かどうかを判断する前に処理するコードの量を調べています。
アンチウイルス技術は、シグネチャベースだけではない、改良された最新のテクノロジーになっていることに注意してください。これらの手法とパフォーマンスへの影響を軽減するための最適化の組み合わせにより、AVは以前よりもかなり高速になっています。
保証されています。プライマリOSドライブに対して最も詳細な検査でAVを実行すると、ファイルが処理されるときにパフォーマンスが低下します。これは通常、CPUパフォーマンスの低下ではなく、ディスクドライブパフォーマンスの低下です(SSDには明らかにメリットがあります)。
AVで使用されるいくつかの時間節約テクニック
さらに、一般的なAVソリューションによる静的検出に使用されるその他の手法:
お役に立てば幸いです。
さらに読む: Wikipedia