web-dev-qa-db-ja.com

実行可能で悪意のあるコードをPDF、JPEG、MP3などに挿入する方法

  1. 実行可能コードをPDFやJPEGなどのファイルに挿入することが一般的に可能かどうか、またはアプリケーションに何らかのセキュリティホールが必要かどうかを知りたいですか?

  2. もしそうなら、どうすればそれができるでしょうか?

悪意のあるコードを含むPDFを開くと人々が感染するという話をよく耳にします。

47
JohnnyFromBF

アプリケーションにセキュリティホールが存在する必要があります。

非常にシンプルで一般的な.txtファイルと同じように考えてください。16進ビューアまたは適切に設計されたテキストパッドエディタで開いた場合、ファイルの内容のみが表示され、問題ありません。

次に、単に内容を表示するのではなく、どういうわけかファイルを処理することを考えます。たとえば、ファイルを読み取り、その値を解釈します。正しく行われないと、ファイル内のバイトが実行される可能性があります。

たとえば、ファイル全体を読み込んで表示するようにアプリを設計したが、どういうわけか、プログラム内に256バイトのみを保持する変数があるとします。これにより、アプリが予期するよりも多くのバイトを読み取る(およびメモリに書き込む)可能性があります。そして、想像してみてください、あなたのアプリの中にコマンドがあるでしょうメモリにNNNNを配置し、そこにあるものを実行するためにジャンプ、しかしそのメモリ位置はあなたのプログラムが予期しないデータで書かれたので、あなたは'そこにあるべきではないいくつかのコードを実行し、あなたのファイルからロードされました...

これはバッファオーバーフロー攻撃でした。

アプリがデータを正しくロードしなかった場合、pdf、jpg、mp3などでも同じことが起こります。

別の可能性:他の理由で、アプリ(または一部のDLLロードしてデータを読み取る)は、データを読み取るのではなく、データの一部を実行します。コマンドが何であるかがわかっている場合この動作をトリガーする(またはデータ)、それらのコマンドをデータファイル(pdfファイルなど)内に配置して、アプリが実行できるようにします。

PDFウイルス:このサイトをお読みください: http://lwn.net/2001/0809/a/Adobe-pdf-vul.php PDFファイルを使用して拡散する1つのウイルスについて少し知るため。

32
woliveirajr

コードを実行する方法には、意図的と非意図的の2つがあります。

意図的な実行とは、ファイルがアプリケーションによって読み取られ、アプリケーションがファイルの内容に基づいて何かを実行することです。ファイルの読み取りは、ファイルの解析と呼ばれます。

意図しない実行とは、パーサーが読み取りを許可されていないものを読み取ったときに、中断するのではなく、実行を継続することです。パーサーに何かを実行させることができれば、悪意のある何かを実行させる可能性があるため、この意図しない実行は脆弱性です。

あなたの質問に答えるには:

  1. 一般的に可能ですか?それはすべて、ファイル形式とそれを読み取るアプリケーションに依存します。実行可能ファイルを許可するように設計されているファイルもあれば、そうでないファイルもあります。一部のアプリケーションはコードの実行を許可し、他のアプリケーションは許可しません。アプリケーションがそれをサポートしていない場合、実行するには脆弱性が存在する必要があります。

  2. それはすべてファイル形式に依存しますが、ファイルパーサーロジックの欠陥を見つけることによって通常です。

16
Steve

PDF、Word文書などの主な問題は、現在の標準でマクロと実行可能コードが許可されていることです。 (私の意見では、これは致命的な欠陥ですが、メールはテキストのみにするのが好きです...)

コードを実行する方法を提供するため、通常は攻撃の対象となるのはそのマクロ実行ステージです。攻撃者は、存在するコントロールを回避する方法を理解する必要があります。これは、バッファオーバーフローまたは他の攻撃メカニズムである可能性があります。

8
Rory Alsop

答えに同意しません ""アプリケーションにセキュリティホールがあるはずです "

通常は正しくありません。ほとんどの違反は、ファイルへのアクセス(ファイルを提供/所有するだけでなく)や、実行可能コードまたはそれとのリンク(既知で信頼されているもの)であるより大きな画像など、実際とは異なるものにアクセスしていると人々に思わせることから生じます)悪意のある意図などでリンクされているサイトの説明.

私は読むことをお勧めします: