web-dev-qa-db-ja.com

マルウェアを画像に添付できますか?

私は会社のコンピューターを使用する少数の従業員を持っていますが、これらの人々はあまり技術に精通していません。彼らは電子メールクライアントとメッセージングクライアントを使用しています。

私は彼らが何も考えずに.exeまたは.Zipファイルをクリックしないことを確信しており、それが懸念事項の1つであることはわかっています。

しかし、私はイメージについて考えています。実際、人がテクノロジーをどの程度使いこなせるかに関係なく、私は画像に何か(コードなど)を添付することはセキュリティリスクになると考えています。

他に害を与えるために画像に何を添付することができますか?

画像は「自動的に実行」されるため、セキュリティリスクを引き起こす可能性があると思います。

コンピュータ(もちろん電話やタブレットを含む)が画像を受信できる方法はたくさんあります:

- email
- iMessage (or any other messaging app)
- someone right-clicking and saving an image from a web page
- just viewing a web page of course downloads the image to cache

上記の4つのことに関して、どのような注意が必要ですか?誰かがコードを画像に添付するだけで実行できますか?

コンピューターに対して画像が使用されないようにするにはどうすればよいですか?

画像とiMessageの誰かのiPhoneにコードを添付することはできなかったと思います。 Androidはどうですか?

51
user2143356

他の回答は、主にステガノグラフィック技術を介して画像に任意のコードを添付することについて話しますが、ユーザーがそれを抽出して実行することに共謀する必要があるため、それほど興味深いことではありません。それが目的であれば、ユーザーは悪意のあるコードを直接実行することができます。

画像を表示するときに予期しない任意のコードが実行される可能性があるかどうかに本当に関心があります。そして、はい、既知の欠陥を持つ特定の画像表示実装を標的とする悪意のある画像(または画像であると主張するもの)を攻撃者が作成する可能性があります。たとえば、画像ビューアがバッファを割り当て、単純なwidth * height * bytes_per_pixel計算から必要なバッファサイズを計算する場合、悪意のある画像は、上記の計算をオーバーフローさせるのに十分な大きさを報告し、ビューアにより小さいサイズを割り当てる可能性があります。予想以上にバッファし、データが読み込まれたときにバッファオーバーフロー攻撃を許可します。

具体的な例:

一般に、このようなことは保護するのが困難です。あなたができるいくつかのこと:

75
jamesdlin

はい、バッファオーバーフローを「悪用」する方法があります。

コードを別のスクリプトで実行する必要がある場合があります。理論的には、速記を使用して画像内に隠されたコードを含む複数の画像からウイルスを組み立てることができますが、もっと簡単な方法があります。

基本的に、多くのコンピューターシステムは、イメージがタイプの正確な仕様に準拠していることを期待しており、渡された形式/パラメーターを正しく範囲チェックできませんでした。

外部的には適合しているように見えるが内部的には適合しないように画像を「設計」することにより、画像に隠されたコードがユーザーの権限で実行されることを可能にするスタック破損/バッファオーバーフローをトリガーすることが可能になります。

ただし、これは画像だけに適用されるのではなく、すべてのファイルに適用できることに注意してください。MSWordでの最近のRTFエクスプロイトを見てください。

11
bob

ファイル/プログラム/ファイルの「スラックスペース」にあるものはいつでも非表示にできます。次に、後でスクリプトを実行して、隠しているものを抽出および/またはコンパイルできます...たとえば、悪意のある実行可能ファイル(または小さなスクリプト)をWebサイトの複数の画像に埋め込むことができます。ユーザーがWebサイトにアクセスすると、画像がダウンロードされます。

Slack Spaceの詳細については、こちらをご覧ください: http://www.computerhope.com/jargon/s/slack-space.htm そして、16進エディター( http://mh-nexus.de/en/hxd/ )といじってください。

7
Matthew Peters

ほとんどすべてのファイル形式について、それを読み取るプログラムには、悪意を持って作成されたファイルによって悪用可能ないくつかのバグがある可能性があります。

画像でも発生する可能性があります(発生しました)。しかし、それは一般に、それを読み取る単一の特定のプログラム(またはライブラリ)に限定され、そのようなプログラムすべてを攻撃する一般的な「マルウェアのあるイメージ」ではありません。

プログラムで興味深いことを行おうとすると、テキストファイルでさえ理論的に安全ではありません。ブログのコメント投稿へのSQLインジェクションは、本質的に「テキストに添付されたマルウェア」です。 Pythonに脆弱性があり、悪意のあるテキストデータを送信し、それがUTF-7エンコーディングであると主張し、そのデコーダーのバグを悪用することでクラッシュ(=サービス拒否)を許可し、ベースの攻撃が存在します)繰り返しになりますが、XMLパーサーは悪質なニアテキストデータによって破壊されます。

3
Peteris

はい、画像にマルウェアを隠すことは可能です。それほど一般的な攻撃ではありませんが、最近、マルウェアの作成者がマルウェアを画像内に隠し始めているようです。

マルウェア分析は私のものではありません。さらに情報が必要な場合は、 " Steganography Malware "を検索してください。

1つのアドバイスは、信頼できない/不明なソースからのメールを開かないことです。

1
Ubaidah

プレーンテキストメッセージは、メールクライアントがプレーンテキストのみを読み取っている場合、潜在的に危険なスクリプトや隠しスクリプトが解釈されたり実行されたりすることはありません。これは、メールクライアントへの文字列になります。

1

エクスプロイトはまさにそれ、エクスプロイトです。誰かが、広く使用されているコードに脆弱性を見つけ、その脆弱性が機能するように準備を始めます。たとえば、広く使用されている一部の電子メールクライアントに、特定の状況でバッファオーバーフローを引き起こすバグがあることがわかったとしましょう。十分な形式のデータがバッファに供給されると、スタックにオーバーランします。これで、バッファオーバーフローを引き起こし、いくつかのマルウェアを埋め込み、データの終わりに大量のNOPを埋め込んでから、巧妙な小さなアセンブリルーチンを埋め込んで、スタック。実行時に、イメージバッファーのメモリに既に読み込まれているマルウェアを直接指します。感染するためにユーザーがしなければならないことは、脆弱なアプリケーションに不正な画像が表示されることだけです。これは、非常に特定されたゼロデイエクスプロイトにおけるより一般的な攻撃経路です。

これらの問題に対する救済策は、幸いにも簡単に適用できます。プレーンテキストメッセージのみを許可するようにマシンを構成します。十分にメンテナンスされたソフトウェアのみを使用し、すべてのアップデートを自動的に適用するようにしてください。

1
user3437670

通常、実行可能ファイルをイメージに添付するバインダーと呼ばれるプログラムがあります。画像に含まれるマルウェアはRAT(リモート管理ツール)である傾向があり、これはスキッドがコンピュータにアクセスするために使用するスキッドのものです。通常これは角質バカがこれらのスキッドに話しかけ、スキッドが少女であると偽って画像をダウンロードするように言うウェブサイトでのみ使用されます。個人的には、感染を拡大する方法にはもっと良い方法があると思います。また、ウイルスがFUD(完全に検出されない)であっても、ほとんどのアンチウイルスはこれらの「バインディング」を検出するはずです。

1
Man Person

ここで説明する脆弱性の例があります-JavaScriptが有効になっている場合、Windowsシステムでの完全なコード実行=> SVG SNAF

情報:

同じくコードを分析した別の研究者であるJoshua Yabutは、脆弱なコンピューターでJavaScriptを有効にする必要がある、いわゆる解放後使用のバグを悪用することをArsに語りました。 Yabut氏はさらに、このコードは「Windowsシステムでのリモートコード実行に100%効果的」だと述べた。研究者が追加した悪用コードは、悪用されているFirefoxのバージョンに基づいて、ペイロードのメモリ位置を調整します。バージョンの範囲は41〜50で、バージョン45のESRが最新バージョンのTorブラウザで使用されているバージョンです。調整は、攻撃を開発した人々が攻撃を広範囲にテストして、Firefoxの複数のリリースで動作することを確認したことを示しています。このエクスプロイトは、Windowsオペレーティングシステムの中核部分であるkernel32.dllを直接呼び出します。 ソース

0
user2497