ヒューリスティック検知とは
ヒューリスティック検知の概要を説明します。
ウイルスの挙動を検知する方法
パターンマッチング以外の検知方法をヒューリスティック検知と呼びます。
ウイルス検知方法として一般的に用いられているのはパターンマッチングです。シグネチャと呼ばれるウイルスのパターンを用意しておき、それに該当するものを排除します。
一方、ヒューリスティック検知はシグネチャを必要としません。設定されたアルゴリズムに従い、検出されたパターンが悪意あるものか、その都度判断します。
従来のパターンマッチングよりも精度が高い
従来のパターンマッチングでは、シグネチャで定義されたウイルスしか検出できません。そのため、既知の脅威にしか対応できないのが弱点です。新しい脅威は発見され次第シグネチャに登録されますが、日々新しいウイルスが誕生しており、対応には限度があります。
一方、ヒューリスティック検知はシグネチャを利用しません。そのため、検知対象のウイルスが既知であるか未知であるかは無関係です。設定されたアルゴリズムを基に、有害だと判断されたものを排除できます。
誤検知を行う可能性がある
ヒューリスティック検知による検知は、アルゴリズムに基づいた推定によって行われます。
そもそもヒューリスティックとは、「ある程度正しい答えを導ける」という意味です。シグネチャで定義されているか否かによって明確にウイルスを検出できるパターンマッチングと比べ、精度が劣ります。
そのため、セキュリティソフトではパターンマッチングとヒューリスティック検知の両方が採用されるのが一般的です。既知のリスクはパターンマッチングで正確に検出し、未知のものはヒューリスティック検知で対応します。
とはいえ、近年はヒューリスティック検知の誤検知も減少しつつあります。ジェネリック検出と呼ばれる精度の高いヒューリスティック検知方法が登場したためです。この方法では、既知の脅威から共通点を探し、それを備えたマルウェアをウイルスとして検出します。
2種類のヒューリスティック検知方法
ヒューリスティック検知は「静的ヒューリスティック検知」と「動的ヒューリスティック検知」に大別されます。それぞれの特徴を見ていきましょう。
静的ヒューリスティック検知
スキャン対象のコード(プログラム)を実行される前に分析し、それがウイルスかどうかを判断する方法です。スタティックヒューリスティックとも呼ばれます。静的ヒューリスティック検知によってウイルスだと判断されたものは、実行される前に排除可能です。
ただし、この段階ではウイルスと断定できないケースもあります。見過ごすわけにはいきませんが、無理にウイルスだと断定してしまうと、誤検出になる恐れがあります。そのため、そのような対象は動的ヒューリスティックで最終的な判断を下します。
動的ヒューリスティック検知
動的ヒューリスティックとは、実際に対象のコードを実行させてウイルスかどうか見極める方法です。ダイナミックヒューリスティックやビヘイビア法とも呼ばれます。
コードを実行させるとはいえ、通常のパソコン環境でそれを行うのはハイリスクです。そのため、通常の動的ヒューリスティックでは、サンドボックスと呼ばれる仮想的な環境でコードを実行します。
そして、サンドボックス内で対象のコードがファイル削除などの攻撃的なふるまいをすれば、ウイルスと判断します。暗号化などのステルス技術を用いたウイルスを検出できるのも特徴です。
一般的に、動的ヒューリスティックは静的ヒューリスティックを補佐する検知方法という位置づけです。動的ヒューリスティックは負荷が大きく、すべての脅威に対して実行するわけにはいきません。
そのため、通常は低負荷の静的ヒューリスティックで検知し、漏れたものだけ動的ヒューリスティックで対処します。
「ヒューリスティック検知」と「振る舞い検知」の違い
ヒューリスティック検知は静的ヒューリスティック検知と動的ヒューリスティック検知に分けられます。このうち、動的ヒューリスティック検知が振る舞い検知です。
ヒューリスティック検知は、シグネチャを使わずにスキャン対象からウイルスの特徴を発見する検知方式の総称です。つまり、対象がウイルスであると判断するための具体的手段がどのようなものであるかは関係ありません。
実際、静的ヒューリスティックはコードの分析、動的ヒューリスティックはコードの実行と、手段が異なります。振る舞い検知は、ヒューリスティック検知を実現するための一つの手段だと考えましょう。
ヒューリスティック検知について詳しく理解しよう!
ヒューリスティック検知とは、パターンマッチング方式を使わずにウイルスを検出する方法です。未知の脅威に対応できるのが強みです。
ヒューリスティック検知は、静的ヒューリスティックと動的ヒューリスティックに大別されます。前者は実行前のコードを分析、後者は実際にコードを実行してウイルスかどうか判断する方法です。後者は振る舞い検知とも呼ばれます。
ぜひ、これらへの理解を深め、セキュリティ対策に役立ててください。