web-dev-qa-db-ja.com

JPEG画像で暗号化されていない自己実行コードを検出するにはどうすればよいですか?

自分が実行する悪意のあるコードを含む感染したイメージがあり、イメージビューアをターゲットにしてファイルを開いたときに実行されるとします。また、私のコンピューターが完全にクリーンで、画像内の隠しコードを読み取ることができる別のマルウェアに感染していないとすると、このコードは暗号化できなかったはずです。したがって、実行するには暗号化されていない必要があります。つまり、何らかの形で表示されます。

それを検出するにはどのような方法を使用できますか?

2
pgmank

これは アンチウイルスソフトウェア の簡単なケースです。

ただし、マルウェアを実行可能にするために暗号化を解除する必要があると想定しないでください。 Polymorphic コードはマルウェアに自己復号化をもたらします Metamorphism を使用すると、暗号化されていない開始点が実際に存在する必要があるため、復号化ルーチンの開始時でも確実に実行できます、認識できる一定のパターンはありません。

ウイルス対策ソフトウェアを複雑なプログラムにするような方法と戦うことを試みています。

2
WhiteWinterWolf

このようなコードは、バッファオーバーフローまたはその他のデータからコードへのジャンプトリックを利用する必要があります。そのため、限られた範囲のハードウェアに対してのみ効果があります。したがって、たとえば、ARM用に作成されたJPEG lintチェッカーを仮想化デバイスで実行できます。この悪用は、エミュレートされたCPUに対しては効果がなく、JPEG構造について報告することができます。 ...不正なイメージブロックが含まれているかどうか、またはAPPタグが破損している可能性があります。仮想化されたコードが脆弱な場合でも、エクスプロイトはエミュレートされたアーキテクチャに移植されたライブラリ(libexifなど)をターゲットとしているため、エクスプロイトペイロードは一部のVMでは、破損したデータが含まれているアドレスを確認できる場合があります。

1
LSerni