web-dev-qa-db-ja.com

アンチウイルスはどのように機能しますか?

それで私は最近ウイルスについて考えていました、そしてアンチウイルスがどれほど正確に追いつくのか疑問に思いましたか?数週間コーディングしていた人が誰かのPCに厄介で厄介なことをする何かを一緒にハッキングする可能性があることを考えると、量だけではハッシュの単純なリストが禁止されるので、アンチウイルスはどのようにそれを行いますか?彼らはプロセス活動を監視し、ウイルスのようなことをするための3つのストライキルールを持っていますか?もしそうなら、それが完全に無害なもの(\ system32でファイルを移動するような)でトリガーされるのを防ぐのは何ですか?

私は少しグーグルをしましたが、通常の場所は特に役に立ちませんでした、そして私はここで重複を見つけることができなかったので、私は尋ねるのが良いと思いました:)

54
Phoshi

This 2002年の記事では、ウイルス対策エンジンの構築について説明しています。

この記事では、開発者/ソフトウェアエンジニアの観点から、ウイルス対策プログラムをゼロから開発するための基本的なアイデア、概念、コンポーネント、およびアプローチについて説明します。アンチウイルスエンジン(以下、AVエンジンと呼びます)の主要な要素に焦点を当て、グラフィカルユーザーインターフェイス、リアルタイムモニター、ファイルシステムドライバー、MicrosoftExchangeなどの特定のアプリケーションソフトウェアのプラグインなどの側面を除外します。マイクロソフトオフィス。単一プラットフォーム(PalmOSやEPOC/Symbian OSなど)で実行/スキャンするAVエンジンも同じ方法で設計できますが、この記事では、はるかに複雑なマルチプラットフォームスキャンエンジンの設計に焦点を当てます。

感染を検出するためのヒューリスティック手法に関する 記事 もあります。また、興味深い読み物です。

17
alex

約1年前、F-Secureの主要な研究者の1人であるMikkoHyyppönenによる講演に参加しました。彼は自動テストネットワークを示しました。そこでは、送信されたすべてのサンプルに対して仮想マシンを作成し、その構造を分析し、実行し、すべてをログに記録し、以前のサンプルと相互参照し、人間が後で確認できるように要約を生成します。人間がウイルスであると判断した場合、システムは自動的に検出シグネチャを生成し、更新を顧客に送信します。他のベンダーも同様のシステムを使用して、署名データベースを最新の状態に保っていると思います。

13
Hirvox

Fromアンチウイルスソフトウェアはどのように機能しますか?(AntivirusWorld):

ウイルス対策ソフトウェアプログラムは、ファイルをスキャンしてコンピュータウイルスやその他の悪意のあるソフトウェア(マルウェア)を特定して排除するために使用できるコンピュータプログラムです。

ウイルス対策ソフトウェアは通常、これを実現するために2つの異なる手法を使用します。

  • ウイルス辞書を使用して既知のウイルスを探すためにファイルを調べる感染を示す可能性のあるコンピュータプログラムからの疑わしい動作を特定する
  • ほとんどの商用アンチウイルスソフトウェアは、ウイルス辞書アプローチに重点を置いて、これらのアプローチの両方を使用しています。

ウイルス辞書アプローチウイルス辞書アプローチでは、ウイルス対策ソフトウェアがファイルを検査するときに、によって識別された既知のウイルスの辞書を参照します。アンチウイルスソフトウェアの作者。ファイル内のコードの一部が辞書で識別されたウイルスと一致する場合、ウイルス対策ソフトウェアはファイルを削除するか、ファイルを隔離して他のプログラムからファイルにアクセスできず、そのウイルスが拡散できないようにするか、または試行します。ファイルからウイルス自体を削除してファイルを修復します。

中長期的に成功するには、ウイルス辞書のアプローチでは、更新されたウイルス辞書エントリを定期的にオンラインでダウンロードする必要があります。新しいウイルスが「野生で」識別されると、市民志向で技術的に傾倒しているユーザーは、感染したファイルをウイルス対策ソフトウェアの作成者に送信できます。作成者は、新しいウイルスに関する情報を辞書に含めます。

辞書ベースのウイルス対策ソフトウェアは通常、コンピュータのオペレーティングシステムがファイルを作成、オープン、およびクローズするときにファイルを検査します。ファイルが電子メールで送信されるとき。このようにして、既知のウイルスを受信するとすぐに検出できます。ソフトウェアは通常、ユーザーのハードディスク上のすべてのファイルを定期的に検査するようにスケジュールすることもできます。

辞書によるアプローチは効果的であると考えられていますが、ウイルスの作成者は、ウイルスの署名と一致しないように、自分の一部を暗号化するか、偽装の方法として自分自身を変更する「ポリモルフィックウイルス」を作成することにより、このようなソフトウェアの一歩先を行くように努めています。辞書で。

疑わしい動作アプローチ対照的に、疑わしい動作アプローチは、既知のウイルスを識別しようとはせず、代わりにすべてのプログラムの動作を監視します。たとえば、あるプログラムが実行可能プログラムにデータを書き込もうとすると、これは疑わしい動作としてフラグが付けられ、ユーザーはこれを警告され、何をすべきかを尋ねられます。

したがって、辞書アプローチとは異なり、疑わしい動作アプローチは、どのウイルス辞書にもまだ存在していない新しいウイルスに対する保護を提供します。ただし、誤検知も多数発生し、ユーザーはすべての警告に対して鈍感になる可能性があります。ユーザーがそのような警告ごとに[同意する]をクリックすると、ウイルス対策ソフトウェアは明らかにそのユーザーには役に立たなくなります。この誤検知の問題に関係なく、他の多くの悪意のないプログラム設計が他の.exeを変更することを選択したため、この問題は過去7年間で特に悪化しました。したがって、最新のウイルス対策ソフトウェアのほとんどは、この手法をますます使用していません。

ウイルスを検出する他の方法一部のアンチウイルスソフトウェアは、制御をに転送する前に、実行されている各新しい実行可能ファイルのコードの先頭をエミュレートしようとします。実行可能。プログラムが自己変更コードを使用しているように見えるか、ウイルスとして表示される場合(すぐに他の実行可能ファイルを見つけようとします)、実行可能ファイルがウイルスに感染していると考えられます。ただし、この方法では多くの誤検知が発生します。

さらに別の検出方法は、サンドボックスを使用することです。サンドボックスはオペレーティングシステムをエミュレートし、このシミュレーションで実行可能ファイルを実行します。プログラムが終了した後、サンドボックスはウイルスを示す可能性のある変更を分析します。パフォーマンスの問題があるため、このタイプの検出は通常、オンデマンドスキャン中にのみ実行されます。

懸念事項

おそらく最も破壊的で広範囲に及ぶコンピュータウイルスであるマクロウイルスは、MicrosoftがMicrosoftOutlookおよびMicrosoftOfficeに関連するセキュリティ上の欠陥を修正する場合、すべてのユーザーがウイルス対策ソフトウェアを購入する必要なしに、はるかに安価かつ効果的に防止できます。ダウンロードしたコードの実行と、ドキュメントマクロが大混乱を広め、破壊する能力。

ユーザー教育は、ウイルス対策ソフトウェアと同じくらい重要です。インターネットから未知のプログラムをダウンロードして実行しないなど、安全なコンピューティング手法についてユーザーをトレーニングするだけで、ウイルス対策ソフトウェアを必要とせずに、ウイルスの拡散を遅らせることができます。

コンピュータユーザーは、常に自分のマシンへの管理者アクセスで実行する必要はありません。それらが単にユーザーモードで実行される場合、一部の種類のウイルスは拡散できません。

ウイルスを検出するための辞書アプローチは、新しいウイルスが継続的に作成されるために不十分なことがよくありますが、疑わしい動作のアプローチは、誤検知の問題のために効果がありません。したがって、アンチウイルスソフトウェアの現在の理解は、コンピュータウイルスを征服することは決してありません。

悪意のあるソフトウェアを暗号化してパックするさまざまな方法があり、既知のウイルスでさえアンチウイルスソフトウェアで検出できなくなります。これらの「カモフラージュされた」ウイルスを検出するには、ファイルを調べる前にファイルを復号化できる強力な解凍エンジンが必要です。残念ながら、多くの一般的なアンチウイルスプログラムにはこれがないため、暗号化されたウイルスを検出できないことがよくあります。

ウイルス対策ソフトウェアを販売している企業は、ウイルスが作成されて拡散し、一般の人々が脅威に慌てることに対して金銭的なインセンティブを持っているようです。

(私はこの記事が好きで、AntivirusWorldからコピーして貼り付けただけです。)

4
joe

フォシ、あなたの質問は非常に興味深いですが、別の質問から始めることをお勧めします。あなたが尋ねた質問への答えがあなたを誤解させる可能性があるので、私はこれを勧めています。

ウイルスとは何だと思いますか、その定義は何であるかを考えることから始めることをお勧めします。

エリートウイルスライターはセキュリティ研究者であり、スクリプトキディではありません。彼らのウイルスの定義は次のとおりです。「ウイルスはそれ自体を増殖させることができるコードの一部です」。それでおしまい。ご覧のとおり、ここに記載されている破壊的な機能はありません。必須のすべてのウイルスは悪である-それはあなたが彼らのソフトウェアを売ることができるようにあなたが専有のアンチウイルスメーカーから得るFUDです。

私見では、ウイルスを外部の邪悪な「エイリアン」としてではなく、ソフトウェアエコシステム全体の一部として扱うのが賢明です。

3
geek

ウイルスを調べる非常に重要な方法の1つは、その逆です。ウイルスはどのようにシステムを危険にさらしますか。これは通常、ソフトウェアの脆弱性によるものです。ウイルス対策ソフトウェアはこれらの脆弱性を認識しており、これらの脆弱性に影響を与えるソフトウェアを探します。いずれにせよ、ウイルスは常に何かをします。したがって、彼らは最善を尽くすために作業プロセスを必要としています。これは既存のものにある場合もあれば、自分で作成する場合もあります。

ただし、MOSTウイルスは同様の方法で機能するため、ウイルススキャナーはそれらを簡単に区別できます。同じ脆弱性を利用するさまざまなウイルスがあります!

http://en.wikipedia.org/wiki/List_of_computer_viruses

1
Pit