web-dev-qa-db-ja.com

Webサイトにアクセスするだけでウイルスを取得するにはどうすればよいですか?

重複の可能性:
コンピュータはWebブラウザを介してマルウェアに感染する可能性がありますか?

ウェブサイトにアクセスするだけでウイルスに感染することはよくあることです。しかし、 how これは可能ですか?

これらのウイルスは、Windows、Mac、およびLinuxユーザーを攻撃しますか、それともMac/Linuxユーザーは免疫がありますか?

Windowsで.exeをダウンロードして実行することでウイルスを取得できることは明らかですが、 how Webサイトにアクセスするだけでウイルスを取得できますか?

ウイルスはJavaScriptでプログラムされていますか? (ローカルで実行されるプログラミング言語であるため、理にかなっています。)その場合、どのJavaScript関数が一般的に使用されていますか?

47
Janet Jacobs

ウェブサイトにアクセスするだけでウイルスに感染することはよくあることです。誰がこれがどのように可能であるかを説明できますか?

括弧内の例。ブラウザー(IE)、JavaScriptインタープリター、またはプラグイン(フラッシュやJavaなど)にバグがあります。このバグはコードの実行につながります-その部分は非常に複雑になる可能性がありますが、解放後使用のバグと ヒープ操作 がしばしば含まれます。

次に、いくつかのシェルコードを実行します。シェルコードは、ブラウザーの保護をすべてエスケープする必要があります。V8/ Chromeのバグの場合、ChromeのサンドボックスをエスケープしてDEPとASLRを無効にする必要があります。 IEの場合、DEPとASLRをクリアしてから、低整合性モードを解除する必要があります。 Javaの場合...何もする必要はありません-あなたはすべて黄金です(そのため、Javaバグが大量に発生しています。)

あなたのマシンで任意のコードを実行しているので(管理者として実行していないのですが)、インターネットからファイルをダウンロードして実行し、マシンにマルウェアをドロップすることができます。

ウイルスはJavaScriptでプログラムされていますか? (ローカルで実行されるプログラミング言語であるため、理にかなっています。)その場合、どのJavaScript関数が一般的に使用されていますか?

特に-いいえ。 JavaScriptは、人々がブラウザのバグを見つけるために使用する攻撃ベクトルです。また、Flash、Java、Silverlightを攻撃経路として使用することもできます。 JavaScriptの場合、ブラウザのバグをトリガーするためにJavaScriptを記述し、最終的にウイルスはインターネットから駆除されます。

24
Tom Ritter

残念ながら、逆に、これが発生する可能性のある方法はいくつもあります。

ブラウザーのような「読み取りデバイス」が自分のシステムを積極的に操作する(そして害を及ぼす)可能性があることに驚かれるのは絶対に正しいことです。本を読んでも銀行口座が枯渇することはありませんし、新聞を開いても子供には害はありません。なぜウェブサイトを開くことでそれ以上のことができるのでしょうか。

この問題は、インターネットからの外部データが常に悪意のある意図で作成されていると想定する必要がある場合に発生し、何らかの形でシステムによって実行される可能性があります。

コマンドラインに座ってwget http://evil.com/hitme.phpと入力すると、wget HTTPクライアントは要求のバイナリダンプをディスクに書き込むだけで、何も問題が発生していません(おそらくディスクがいっぱいになることを除きます)。しかし、ブラウザにアドレスを入力すると、ブラウザは自由に実行できます-ハードディスクをフォーマットしたり、クレジットカードの詳細を送信したりします。それはあなた次第です信頼あなたのブラウザはそれをしないようにします。ほとんどのブラウザは確かにそれらの悪いことをしないように試みますが、私たち、 ユーザーは、ブラウザがこれまで以上に「巧妙なトリック」を実行し、自動動作を実行できることを要求していますインターネットからの指示に基づいて。私たちの要求は、JavaScriptやFlashのようなクライアント側のコード実行テクノロジーの作成につながりました。これは任意、外部、信頼できない、悪意のあるコードをダウンロードして実行します。

これらのテクノロジーを思いついた人々がすぐにリンチされなかった理由は、a)バニーが画面上で踊るようにしたこと、およびb)悪意のある任意のコードが操作されないように十分な安全チェックをデザインに組み込んだと主張したことですローカルシステム(たとえば、ローカルディスクの読み取り/書き込み、クリップボードの読み取り/書き込み、他のタブのフォームフィールドの読み取り/書き込みを許可しない)。

残念ながら、「最初にすべてを許可してから、考えられるいくつかの悪い点をパッチでカバーする」という設計アプローチには根本的な欠陥があり、現在、クライアント側の便利な機能を使用できる新しい方法の終わりのない流れに直面しています。私たちのシステムを侵害するために使用されます。

適度に安全な唯一の方法は、ブラウザでJavaScriptとプラグインを無効にすることです。 1995年のように安全です。

14
Kerrek SB

これらの回答で実際に回避されている点、私は本当に我が家を打ち負かしたいのは、これです:Webページからウイルスを取得できる理由は、実行している一部のソフトウェアにバグ-セキュリティの脆弱性

ソフトウェアを作成するプロセスのすべてのステップで、Flashの作成者。あなたのブラウザの;お使いのオペレーティングシステムのランダムな、悪意のあるコードがインターネットから実行する方法を理解できないことを確認しようとしました。残念ながら、これを行うのはhardです。 本当に難しい

したがって、すべての人間のように、このソフトウェアの開発者は間違いを犯しがちです。HTMLを</pで終了すると、HTMLパーサーは誤ってスタックの1バイトを上書きします。誤って signed intではなくunsigned intを使用 。 JavaScript JITコンパイラが誤って配列インデックスをnullポインタに逆参照しようとします。これらすべての脆弱性に加えて数百万以上の脆弱性は、セキュリティに関する知識の不足、見落とし、または単なる単純なミスのために、常にソフトウェアで発生します。ソフトウェアは単純にway複雑すぎてすべてを把握できません。

このため、オペレーティングシステムには、脆弱性が見つかった場合でもシステムへの損傷を防ぐための組み込みメカニズムがあります。あなたのOSはおそらく [〜#〜] dep [〜#〜][〜#〜] aslr [〜#〜] を持っています。プログラムには、コンパイラによって さまざまな保護 を追加できます。ブラウザーはより低い特権で実行されます。プログラムは 自動分析 および テスト を介して実行され、これらの脆弱性の多くを捕捉できます。

私のポイントは、誰もこれを許可しないですが、完全に安全な金庫を設計することは不可能であるように、完全に安全なソフトウェアを設計することは不可能です。十分な時間、知識、お金、インセンティブを持つ人は、いつでもそれを解き放つ方法を見つけるでしょう。 this安全の問題は、ハッカーがそのコピーをクラックすると、部屋を離れることなく世界中の他のコピーを簡単に開くことができることです。

あなたの特定の質問

Windowsで.exeをダウンロードして実行することでウイルスを取得できることは明らかですが、Webサイトにアクセスするだけでウイルスを取得するにはどうすればよいですか?

ブラウザは常にコードを実行しています(コードで構成されています)。 Webページをダウンロードするとき、そのコードは任意のデータ(ピクセル、文字など)をダウンロードして表示します。

コードもデータです(プロセッサレベル)。

コードはデータなので、ブラウザーがデータを実行しようとすると(ファイルの拡張子や形式に関係なく)、実際に実行される可能性があります(正しく作成されている場合)。

通常、ブラウザは、ダウンロードしたランダムなデータを実行しようとするほど愚かではありません。ただし、これは発生する可能性があります。

これを行う1つの方法は、データが読み取られたときに、「リーク」してブラウザの実行可能プログラムを構成するデータを上書きするようにデータを形成することです。これには、ブラウザにバグがあることが必要です(この場合、最も一般的なのは バッファオーバーラン を許可することです)。

また、ブラウザはWebページ上でプログラムを実行します。ご指摘のとおり、Javascriptはそのようなタイプのコードの1つです。しかし、数十があります。 ActiveX、Flash、アドオン、グリースモンキースクリプトなどはすべて、Webページにアクセスしているときに実行しているコードです。このコードには、セキュリティ違反を引き起こすバグが含まれている可能性があります。

これらのウイルスは、Windows、Mac、Linuxの両方のユーザーを攻撃しますか、それともMac/Linuxユーザーは免疫力がありますか?

私たちが使用しているプラ​​ットフォームでは、データをコードとして扱うプロセッサを使用しているため、完全にバグの影響を受けません。これは単に、既存のコンピュータアーキテクチャが機能する方法です。

この神話の理由は、MacとLinuxの採用率がWindowsマシン(デスクトップレベル)に比べてはるかに低いためです。そのため、これらのマシンのデスクトップソフトウェアは、ウイルスメーカーのターゲットとして一般的ではありません。

ウイルスは、魔法や偶然の進化によって発生しません(生物学的ウイルスのように)。これは、個人または開発者のチームによって作成されたソフトウェアです。また、通常のソフトウェアベンダーが行うのと同じように、最大​​の市場シェアをターゲットにしたいと考えています。

1つのウイルスが複数のプラットフォームをターゲットにできるかどうかについては、すべてのブラウザは異なるコードを実行しているため、異なるバグがあります(異なるプラットフォームの同じブラウザでも)。しかし、プラットフォーム間で共有されるいくつかのコードライブラリがあります。そのようなライブラリにバグが含まれている場合、エクスプロイトが複数のプラットフォームに存在する可能性があります。

ただし、行われた攻撃の種類によっては、Intel Mac以外のウイルス向けに作成されたウイルスmightはIntel Macでは機能しません。プロセッサが異なるため、その逆も同様です。プロセッサーが異なれば、コードを表すデータのフォーマットも異なります。

ただし、仮想マシンやスクリプト言語について話している場合、攻撃はプラットフォームに依存しない場合があります。それが次の質問につながります...

ウイルスはJavaScriptでプログラムされていますか?

一部のウイルスはそうです。上で述べた情報(バッファオーバーランエクスプロイトについて)は通常、JavaScriptの外部での攻撃として使用されますが、Javascriptインタープリターでエクスプロイトを攻撃するように作成されたウイルスにも同様に適用できます。

Javascriptには、バッファオーバーランを超える運用レベルで、独自のエクスプロイトセットもあります。ソフトウェアを攻撃する方法はたくさんあります。ソフトウェアが大きいほど(コード行)、受け取る可能性が高いユーザー入力の種類(この場合はコードの種類)が多くなり、バグが増える可能性があります。

また、実行中のソフトウェア(サーバーを実行しているソフトウェアなど)の露出が多いほど、攻撃に対して脆弱になります。

一般に、これは Attack Surface と呼ばれます。

一般的なエクスプロイト

Microsoftには一般的なエクスプロイトタイプのニーモニックがあり、それらはすべて独自の興味深いプロパティと、攻撃可能なさまざまなレベルのソフトウェアを持っています- [〜#〜] stride [〜#〜] は、 :

Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege

これらのいくつかは、他のものよりもJavaScriptに基づく攻撃で使用される可能性が高く、一部はサーバー上で、一部はデータファイル(画像など)で使用されます。

しかし、セキュリティは大きく進化している分野です。情報が多すぎて、すべての質問に完全に答えることはできません。

この用語は "Drive By Download" と呼ばれます。

これは素晴らしい例です Webサイトにアクセスする以外に何もせずにそれがどのように発生するかを示します。

シュナイダー氏によると、同社の研究チームは、悪意のあるサイトを指すiframeを挿入しているページでJavaScriptの断片を発見したという。綿密な調査の結果、これは未知の(0日)IEのエクスプロイトを使用しており、完全にパッチされたバージョンのブラウザをクラッシュさせ、悪意のあるコードを実行する可能性がありました。0日間は短命でしたが、マイクロソフトが間もなく脆弱性の詳細をリリースしたため。

シェルコードをさらに分析したところ、既知の悪質なサーバーを指すクリアテキストのURLが判明しました。これは、既知のiepeers.dllの脆弱性、MS10-018を悪用したものとしてM86のリポジトリに格納されていました。

7
Moab

トリックは、ウイルス作成者/セキュリティ専門家がブラウザの抜け穴を見つけることです。簡単に言えば、彼らはブラウザのセキュリティに穴を見つけ、この穴を使ってシステムに何かをすることができます。 Adobe Flashに穴があり、特定のコードで悪用される場合があります。これらのセキュリティホールを引き起こす可能性のあるJavaScript文字列もあります。

それでも、ブラウザーを最新の状態に保つと、Webサイトにアクセスするだけで感染する可能性は非常に低くなります(ファイルをダウンロードして実行することは別の話です!)

3
Roger Far

Webサイトにアクセスして感染するウイルスのようなウイルスは、訪問システムの欠陥を悪用します。たとえば、ブラウザーまたはプラグインのプログラミングに欠陥があり、画像が(偶然にもブラウザー開発者の観点から)訪問先のコンピューターで任意のコマンドを実行できるようになっている可能性があります。

そのため、おそらくすべてのオペレーティングシステムが潜在的な被害者ですが、ウイルス作成者は通常、規模の経済に基づいて攻撃を組み立てます。これが、WindowsとInternet Explorerがより頻繁に標的とされる理由です。

ブラウザまたはプラグインの一部がウイルスの標的になっている可能性があります。上記のウイルスによる画像は実際の例です。 Flashは一般的なターゲットです。ブラウザのJavaScriptエンジンもそうです。うまくいかない可能性のあるさまざまなことがたくさんあります。

あなたの最善の策は、高品質のウイルススキャナーを実行することです。 Eset でNOD32を使用しました。また、本当であるには余りにも良い場合は、何かをクリックしないでください。 Firefoxでは NoScript を使用し、 AdBlock を使用します。

2
Bill Sempf

これらのウイルスは、Windows、Mac、およびLinuxユーザーを攻撃しますか、それともMac/Linuxユーザーは免疫がありますか?

Webサイトがブラウザーのセキュリティを侵害した場合、コンピューター上のyoに属するものに悪用される可能性があります。ただし、その特権を昇格させて管理アクセスを取得できる場合、システム上のあらゆるものに干渉する可能性があります。

Unixマシン(Linux、Mac、BSDなど)では、Windowsよりも管理者権限を取得するのが難しいと長い間考えられてきました。ただし、最近の(Windows Vistaでの)マイクロソフトによるセキュリティ機能の刷新により、Windowsは以前よりもはるかに安全になった可能性があります-または、少なくとも、それはあなたが信じていることです。

1
jpaugh