2009-03-17 24 views
10

EICARテストウイルスは、アンチウイルスプログラムの機能をテストするために使用されます。ウイルスとして、それを検出するために、ウイルス対策プログラムはどのようにしてEICARテストウイルスを検出しますか?

は、ウイルス対策プログラムは、ヒューリスティックが疑わしいパターンとしてそれを検出し、ウイルスとして検出テストウイルス

OR

のためのウイルス定義を持っている必要があります。

(私は、AVプログラムがダウンロード中にファイルを削除するが、EICARテストウイルスとしてそのウィルスを識別することはないと考えています。詳細などはありませんか?)

+0

これは少しプログラミングに関連していますか? – user73993

+1

彼はAVシステムを書く方法について考えているのでしょうか?もちろん、彼はそのようなシステムを過ぎ去らせる方法についても考えているかもしれません.... – RBerteig

+1

私はウイルス検出メカニズムと、それらをプログラムに実装する方法について読んでいました。ヒューリスティクスと法医学はプログラミングに関連しているので、私はこれを質問に適した場所と考えていました:) –

答えて

30

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

私は、ほとんどがそのための署名を持っていて、それを直接そのように認識していると思います。

実際のEICARテストのビットパターンに、疑わしいアクティビティのオペコードのような臭いが含まれているビットパターンが含まれていても、私は驚くことはありませんが、その場合はわかりません。そうであれば、単純なヒューリスティックなウイルス認識プログラムの有効なテストかもしれません。しかし、EICARテストでは、の時間が長くての時間だったので、それをキャッシュするヒューリスティックは、現在野生のものを捕まえるのに十分ではないと思います。

EICARを認識することは、「AVがインストールされ、スキャンされる予定のものをスキャンする」よりも重大な主張を証明するものではなく、AVシステムを開発する場合は、それについて主張する。

更新:

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

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

慎重に興味深い性質のカップルを持っている(Wikipedia articleに応じて)作られました。

まず、印刷可能なASCII文字のみで構成されています。最後に空白や改行を含むことが多いが、その認識やその機能には何の影響も与えない。

これは、実際には8086 CPU用の実行可能プログラムです。これは、拡張子.COMのファイルにメモ帳などで保存することができ、MSDOS、MSDOSのほとんどのクローン、WindowsコマンドプロンプトのMSDOS互換モード(Vista、 16ビットリアルモードとの互換性がもはや優先ではないと判断して以来、64ビットWindowsでは使用できません)。

実行すると、文字列「EICAR-STANDARD-ANTIVIRUS-TEST-FILE! "終了します。

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

wikiの記事には、プログラムが実際にどのように動作するかについてのblow-by-blow explanationへのリンクがあります。複雑さを増すことは、コンソールに印刷するか、DOSリアルモードでプログラムを終了する唯一の方法は、opcode(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:0104 50   PUSH AX 
0C32:0105 254041  AND  AX,4140 
0C32:0108 50   PUSH 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 49 56 R-STANDARD-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のシステムコールを実行するための関数を指定するAHまたはAXレジスタの値とINT 21を通じて派遣されました。この場合、AHは0x09です。これはオフセット文字列0x011Cで始まり、ドル記号で終わる文字列を出力する印刷文字列関数です。 (あなたは純粋なDOSで異なるトリックでドル記号を印刷しなければならなかった)。INT 20呼び出しは、そのポイントを過ぎた余分なバイトが実行される前にプロセスを終了させます。

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

+0

すばらしい答え。努力を感謝します。 –

関連する問題