ウイルス対策プログラムはどのようにしてEICARテストウイルスを検出しますか?

StackOverflow https://stackoverflow.com/questions/653396

  •  19-08-2019
  •  | 
  •  

質問

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

ウイルス対策プログラムにテストウイルスのウイルス定義が含まれている場合

または

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

(ダウンロード中にAVプログラムがファイルを削除する場合がありますが、ウイルスをEICARテストウイルスとして識別しません。疑わしいオブジェクトとして-ウイルス名、詳細などではありませんか?)

役に立ちましたか?

解決

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

ほとんどの人が署名を持っていると想像し、それをそのように直接認識します。

実際のEICARテストのビットパターンに、疑わしいアクティビティのオペコードのような臭いのあるビットパターンが含まれていても驚かないでしょうが、そうであるかどうかはわかりません。存在する場合、単純なヒューリスティックウイルス認識エンジンの有効なテストである可能性があります。ただし、EICARテストは long の期間にわたって行われているため、これをキャッシュするヒューリスティックは、今のところ野生のものをキャッチするのに十分ではないことも想像できます。

EICARを認識することは、<!> quot; AVがインストールされ、スキャンするはずだったものをスキャンする<!> quot;よりも強力な主張の証拠になるとは思わないでしょう。また、AVシステムを開発する場合、強い主張をしようとしないでください。

更新:

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

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

これは、いくつかの興味深いプロパティを持つように( Wikipediaの記事に従って)慎重に作成されました。 。

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

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

実行すると、出力として文字列<!> quot; EICAR-STANDARD-ANTIVIRUS-TEST-FILE!<!> quot;終了します。

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

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

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システムコールは、実行する機能を指定するINT 21またはAHレジスタの値を持つAXを介してディスパッチされました。この場合、INT 20は0x09です。これは、オフセット0x011Cで始まる文字列を印刷する文字列印刷関数です。ドル記号。 (純粋なDOSでは別のトリックでドル記号を印刷する必要がありました。)<=>呼び出しは、そのポイントを超える余分なバイトを実行する前にプロセスを終了します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top