内部ウイルススキャナー



昨年、私はある奇妙なことに 、あるアンチウィルス会社のウィルススキャナーの実装に取り​​組みました。

この投稿は、習得した知識の絞り込みであり、奇妙なアンチウイルススキャナーの内部構造についてhabrasocietyに伝えています。

スキャンエンジンまたはスキャナーは、ウイルス対策パッケージの基盤です。 スキャナはパッケージのいくつかのプログラムで使用されるため、ウイルス対策のバックエンドであり、通常はDLLとして表示されます。

この場合のグラフィカルシェルは、エンジンの結果を表示するための美しいラッパーです。 すべての有用な作業は、バックエンドのエンジンによって行われます。





ウイルスソフトウェアの場所





名前から明らかなように、エンジンはマルウェアのすべての可能な場所をスキャンするために使用されます。







スキャンの種類。



スキャンは、 署名ヒューリスティックの 2つの主なタイプに分けられます。



署名ベースのスキャン。


別の名前はハッシュスキャンです。 スキャナーは、ファイルの署名を辞書と比較してファイルをチェックします。

通常、ウイルス対策シグネチャは、 既知のウイルスの本体から生成されたMD5ハッシュ(16バイト)です。

そのため、ハッシュが署名データベースで見つかった場合、ファイルは感染していると見なされます。 マルウェア検出をローカライズするために、ハッシュはPEヘッダーに基づいてexeファイルに対してのみ計算できます。

このタイプのスキャンを使用すると、誤検知( ヒューリスティックスキャンが行うこと)なしに、高い確率で攻撃のタイプを判別できます。

ハッシュスキャンの欠点には、データベースにない新しいウイルスを検出できないことが含まれます。 署名データベースの定期的な更新を必要とする多型または暗号化されたウイルスに対する脆弱性。

ハッシュスキャンのもう1つの弱点は、検証の速度です。 ムーアの法則がなければ、合理的な時間内に最新のコンピューターがこれほど多くの署名でスキャンを完了できなかったでしょう。



ヒューリスティックスキャン




既知の特性(ヒューリスティック)に基づくウイルスの検出に基づく方法。 たとえば、MBRに入るブートウイルスを検出するために、ウイルス対策は2つの方法でブートレコードを検討できます。WinAPIReadFile関数を使用する方法と、ダイレクトディスクアクセスドライバー(DDAドライバー)を使用する方法です。 そして、両方のバッファーを比較します。 バッファが異なる場合、高い確率で

ウイルスは起動可能であるだけでなく、WinAPI呼び出しも置き換えることができます。

これはルートキットの一般的な方法です。

ヒューリスティックスキャンの別の例としては、レジストリおよびシステムディレクトリでのウイルスの痕跡の検索があります。 原則として、ウイルスは特定のファイルやレジストリエントリのセットを作成し、それによってそれらを識別します。

上記のマルウェアの場所の種類、つまり、トレースのスキャン、Cookieのスキャン、およびブートディスクレコードのチェックも、ヒューリスティックスキャンの装いになります。



スキャナーのコンポーネントとアクセサリー





ドライブダイレクトアクセスドライバー


ルートキットをバイパスするために必要です。 感染したシステムでは、ルートキットが使用されます

彼の存在の痕跡に気付くために。 これを行う最良の方法は、API関数呼び出しをオーバーライドすることです。

特に、ファイルを操作する場合:CreateFile、ReadFileなど。 ウイルス対策プログラムがシステムをスキャンすると、

これらの関数を呼び出すと、ルートキットはそのような呼び出しがそれを参照するときにFALSEを返すことができます。 これを回避するには、

スキャナーには、WinAPIを使用せずに、ディスクからセクターごとに直接読み取るためのモジュールが含まれています。



ブラックリストとホワイトリスト


それらは、実際に悪意のない発見をフィルタリングするために使用されます。 したがって、アンチウイルスは、 検知が発生した場合に危険を警告しません。

最新のウイルス対策ソフトウェアは、平均で500万の署名からデータベースを保存します。 さらに、非常に多くの場合、単一のウイルスに対して、多数の署名が存在する場合があります。 数千のシステムファイルのうち、署名に適したファイルが存在する可能性があります。 そして、これはアンチウイルスがそれを削除するか、隔離に移動することを脅かし、それはシステムクラッシュを全く引き起こす可能性があります。

誤検知を最小限に抑えることは、ウイルス対策会社の最優先事項です。

最も権威のあるウイルス対策テストであるウイルス速報に合格するには、単一の誤検知を与えることなく、ウイルス対策が100%の検出結果を表示する必要があります。

ホワイトリスト-システムに害を及ぼさないが、スキャナによって何らかの形で検出されるファイルのリストが含まれます。

ブラックリスト-弊社が信頼するウイルスのリストが含まれています(システムに害を与えません)。



アンパッカー、デコーダー


ウイルス検出の許容レベルを実現するために、スキャナーは、exeパッカー(UPXなど)で暗号化されたexeエンコーダーを処理する必要があります。 次に、ハッシュを計算する前に、スキャナーはファイルが暗号化されていることを検出し、最初にデコーダーに接続します。次に、これに基づいてハッシュが計算され、データベース内のハッシュと比較されます。

アーカイブの2番目のタイプは、よく知られているzip、rar、7zなどです。 アンチウイルスは、これらのアーカイブを解凍し、コンテンツをスキャンすることもできるはずです。

3番目のタイプは、 NTFS ADS (NTFS Alternative Data Streams)の圧縮解除です。 NTFSファイルシステムでは、実行可能ファイルを通常のファイル、たとえばテキストファイルに偽装できます。 このファイルの代替ストリームは、ウイルスを直接参照します。



ユースケース





ウイルス対策ソフトウェアは、システムのフルスキャンだけでなく、そのような場合にもエンジンを使用します。




All Articles