11

EICAR テスト ウイルスは、ウイルス対策プログラムの機能をテストするために使用されます。ウイルスとして検知するには、

ウイルス対策プログラムには、テスト ウイルスのウイルス定義が必要です。

また

ヒューリスティックはそれを疑わしいパターンとして検出し、ウイルスとして検出します。

(私は、AV プログラムがダウンロード中にファイルを削除するのを見たことがありますが、ウイルスを EICAR テスト ウイルスとして識別せずに.なの?)

4

1 に答える 1

33

IMHO、テストウイルスのポイントは、エンドユーザーがAVソフトウェアがオンになっていることを確認し、ウイルス識別の効果を確認できるように、無害であることがわかっていて、ウイルスとして受け入れられるものを用意することです。AVソフトウェアのファイアドリルを考えてみてください。

ほとんどの人がそれに署名していると思いますが、それを直接認識します。

実際のEICARテストのビットパターンに、疑わしいアクティビティのオペコードのような匂いがするビットパターンが含まれていても驚かないでしょうが、そうであるかどうかはわかりません。そうである場合は、単純なヒューリスティックウイルス認識機能の有効なテストである可能性があります。ただし、EICARテストは長い間行われているため、それをキャッシュするヒューリスティックは、現在野生のものを捕まえるのに十分ではないと思います。

EICARを認識することが、「AVがインストールされ、スキャンする予定のものをスキャンする」よりも強力な主張の証拠になるとは思いません。また、AVシステムを開発する場合、それについてより強力な主張をしようとはしません。

アップデート:

実際のEICARテストウイルスは次の文字列です。

X5O!P%@ AP [4 \ PZX54(P ^)7CC)7} $ EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$ H + H *

これは(ウィキペディアの記事によると)慎重に作成され、いくつかの興味深い特性を備えています。

まず、印刷可能なASCII文字のみで構成されています。多くの場合、最後に空白や改行が含まれますが、認識や機能には影響しません。

これは2番目のプロパティを発生させます:それは実際には8086CPU用の実行可能プログラムです。拡張子が.COMのファイルに(メモ帳などを介して)保存でき、MSDOS、MSDOSのほとんどのクローン、さらにはWindowsコマンドプロンプトのMSDOS互換モード(Vistaを含む)で実行できます。ただし、64ビットWindowsでは、16ビットリアルモードとの互換性が優先されなくなったと判断されたため、そうではありません。)

実行すると、文字列「EICAR-STANDARD-ANTIVIRUS-TEST-FILE!」が出力として生成されます。その後、終了します。

なぜ彼らはこの努力に行きましたか?どうやら、研究者たちは、実際のウイルスを捕獲して実際の感染の危険を冒すことなくライブスキャナーをテストできるようにするために、安全に実行できることがわかっているプログラムを望んでいたようです。彼らはまた、それが従来の手段と非従来の手段の両方で簡単に配布できることを望んでいました。x86リアルモード命令セットの有用なサブセットがあり、すべてのバイトが印刷可能なASCII文字でもあるという制限を満たしていることが判明したため、両方の目標を達成しました。

wikiの記事には、プログラムが実際にどのように機能するかについてのブローバイブローの説明へのリンクがあります。これも興味深い読み物です。複雑さを増すのは、コンソールに印刷するか、DOSリアルモードでプログラムを終了する唯一の方法は、オペコード(0xCD)が印刷可能な7ビットASCII文字ではないソフトウェア割り込み命令を発行することであるという事実です。さらに、2つの割り込みにはそれぞれ1バイトの即時パラメータが必要であり、そのうちの1つはスペース文字である必要があります。自主ルールはスペースを許可しないことであったため、プログラムの最後の4バイトすべて(文字列の「H + H *」)は、命令ポインターがそこに到達して実行する前に、その場で変更されます。

XPボックスのコマンドプロンプトでDEBUGコマンドを使用してEICAR.COMを逆アセンブルおよびダンプすると、次のように表示されます。

0C32:0100 58 POP AX
0C32:0101 354F21 XOR AX、214F
0C32:010450プッシュAX
0C32:0105254041およびAX、4140
0C32:010850プッシュAX
0C32:0109 5B POP BX
0C32:010A 345C XOR AL、5C
0C32:010C 50 PUSH AX
0C32:010D 5A POP DX
0C32:010E 58 POP AX
0C32:010F 353428 XOR AX、2834
0C32:0112 50 PUSH AX
0C32:0113 5E POP SI
0C32:0114 2937 SUB [BX]、SI
0C32:0116 43 INC BX
0C32:0117 43 INC BX
0C32:0118 2937 SUB [BX]、SI
0C32:011A 7D24 JGE 0140

0C32:0110 45 49 43 41 EICA
0C32:0120 52 2D 53 54 41 4E 44 41-52 44 2D 41 4E 54 4956R-標準-ANTIV
0C32:0130 49 52 55 53 2D 54 45 53-54 2D 46 49 4C 45 21 24 IRUS-TEST-FILE!$

0C32:0140 48 DEC AX
0C32:0141 2B482A SUB CX、[BX + SI + 2A]

までの命令を実行した後JGE 0140、最後の2つの命令は次のように変更されました。

0C32:0140 CD21 INT 21
0C32:0142 CD20 INT 20

ほとんどのDOSシステムコールは、実行する関数を指定するorレジスタINT 21の値を使用してディスパッチされました。この場合、は0x09です。これは、オフセット0x011Cで始まり、ドル記号で終わる文字列を印刷する文字列印刷関数です。(純粋なDOSでは、別のトリックでドル記号を出力する必要がありました。)呼び出しは、そのポイントを超える余分なバイトを実行する前にプロセスを終了します。AHAXAHINT 20

自己変更コードは初期のウイルストリックでしたが、ここでは、文字列で使用できるバイト値の制限を維持するために使用されます。最新のシステムでは、COMファイルを実行しているMSDOS互換モードでデータ実行保護機能が適用されている場合、データ実行保護機能が変更をキャッチする可能性があります。

于 2009-03-17T08:37:18.900 に答える