web-dev-qa-db-ja.com

リモートマシンで任意のペイロードはどのように実行されますか?

私はリバースのようなものを実行することを理解していますTCPバインドは、犠牲PCで利用可能なリソースに依存しています...そして、実行している場合、Rubyコマンドラインからのスクリプトは、マシンコードに解釈されて実行されます...

私の質問は、Metasploitなどを介したエクスプロイトを介してマシンコードをリモートマシンに直接ドロップした場合、コードがCPUと一致しない場合はどうなりますか?どのように解釈され、実行されますか?それとも、使用するペイロードを知っている「攻撃者」が原因でしょうか。

高レベルの質問はご容赦ください。私は侵入テストに比較的慣れていません。

3
DawnFreeze

バッファオーバーラン(または同等のもの)を見つけたとすると、マシンコードがリモートマシンの言語と一致しない場合、期待される結果は、オーバーランのあるアプリケーションがクラッシュすることです。

オーバーランは「通常」として動作し、ペイロードのバイナリBLOBでコードを実行しようとします。被害者のシステムは命令を実行しようとしますが、命令はターゲットシステムに対して期待どおりに動作しません。指定された命令は、ターゲットシステムにとってペイロード開発者が意図したものとは異なるものを意味する可能性があります。それでも犠牲システムは実行を試みます。一部の操作は完全に正常に機能する場合があります。一部の操作は不正な命令であり、例外またはクラッシュを引き起こす可能性があります。最終的には、命令の組み合わせにより、実行中のアプリケーションがリカバリできないほど破損するか、不正なコンテキストで有効な命令が完全に実行され、プロセスがクラッシュする可能性があります。

4
atk

Atkの回答にあるように、間違ったバイナリコードを指定するとクラッシュする可能性が高くなります。

ただし、CPUについて妥当な仮定を行うことができます。基本的なx86コードは、ほとんどすべてのデスクトップシステムと互換性があります。また、元のエクスプロイト/オーバーランがx86でのみ実行される特定のソフトウェアにあり、たとえば、ARM多くのモバイルデバイスで使用されているプロセッサではない可能性があります。

1
Peteris