私の現在の理解では、エクスプロイトキットはシステムのフィンガープリント(情報の収集)を行い、それらの詳細を脆弱性のデータベースと照合して、関連するエクスプロイトの使用を試みます。
JSを使用して、インストールされているFlashのバージョンなどを確認する簡単な方法を確認できますが、これは簡単に防御できます(ユーザーが停止、変更、またはステップオーバーできるのはJavaScriptだけなので)。
エクスプロイトキットのランディングページにたどり着くまでに、ユーザーに関する情報を収集するために他にどのようなテクニックが使用されていますか?
たとえば、使用しているAdobe Readerのバージョンや、私のWebページにアクセスした場合にインストールされているブラウザープラグインはどのようにして検出されますか?
キットは実際よりも複雑だと思われるかもしれません。
キットは特定の脆弱性を利用するように設計されています。 「フィンガープリント」を作成して、最良のエクスプロイトを選択する必要はありません。悪用するように設計されたものを悪用しようとするだけです。一部のキットは、何かが機能するまで一連の方法を次々に試みます。
たとえば、キットはSafariブラウザを利用するように設計できます。ユーザーがヒットすると、エクスプロイトが起動されます。機能するかどうかは、正しいブラウザとバージョンが接続を確立したかどうかによって異なります。そうでなかった場合、一般にユーザーがとにかく見ることができる何も起こりません。
Adobe Readerの例では、キットは特定のバージョンがファイルを読み取っていることを認識する必要はありません。キットは、エクスプロイトを含むPDFファイルを提供します。失敗した場合のコストはどれくらいですか?
一方、キットをさらにターゲットにしたい場合は、はい、必要な特定のマーカーを探します。しかし、それらのマーカーが何であり、その後それらを探す方法は、脆弱性に依存します。ここで列挙するには多すぎます。
ユーザーに関する情報を収集するために使用できる1つの手法は、Flashを使用することです。
Flashは、Javaに非常に似ており、ブラウザの種類を検出して、さらに多くのことができます。
アクションスクリプトコードは多くのことができます。
JavaScriptが有効になっているかどうか、ブラウザーのタイプ、オペレーティングシステム、さらにはSWF(フラッシュファイル)がサンドボックス環境で実行されているかどうかなどを検出します。
攻撃者がフラッシュを使用する方法:
フラッシュファイルを使用して、ユーザー情報を検出します。
ブラウザがchromeの場合、Chromeはサンドボックスが原因でほとんどの場合悪用することができないため、ダミーページにリダイレクトされます。ORエクスプロイトランディングページにリダイレクトされます。
ほとんどの場合、JavaScriptはFlashエクスプロイトでは必要ありませんが、多くのエクスプロイトキットはJavaScriptを使用してHTMLをDOMに書き込みます。
JAR(packed Java)ファイルとXAP(Silverlight dll + XAML)ファイルは同じことを行うことができ、場合によってはFlashよりも多くのことができます。
一般的に、ほとんどのエクスプロイトキットの機能は次のとおりです。
エクスプロイトキットは、ブラウザ情報リークと呼ばれるエクスプロイトも利用します。これを使用して、ブラウザのバージョン、システム情報、プラグインを検出できます。