web-dev-qa-db-ja.com

コードインジェクションを検出するために、解釈されたコードの長い行をスキャンしますか?

https://security.stackexchange.com/a/11935/35886 が述べているように、コードインジェクションに対する最善の保護はそれを防ぐことですが、SO =またはここでは次のようになります

「php/Perlなどのコードの長い行」を見つけて、それが何をするのか知りたいです。

次に、これらのコードインジェクションの多くは、一見しただけではわかりにくいため、(エンコードされ、場合によっては暗号化される以外に)非常に長いコード行になる傾向があることに気付きました。

長いコード行のコードベースの自動スキャンが、インタープリター言語のコードインジェクションブロックを検出するための安価なメカニズムを提供できるかどうかを考えていました。

n文字より長いコード行をスキャンした場合、クイック検索ではヒットと誤検知の相関関係は明らかになりませんでした。

難読化されたコードだけでなく、不適切に記述されたコードもそのようなシステムによって検出されることは承知していますが、IDSでこのような単純な手法の使用法は知られていますか?

一般的なホスティングプロバイダーの場合、これは、すべてのクライアントファイルをスキャンして長すぎる行を探すのは実用的ではない(または合法でさえありませんか?)。しかし、悪意のあるテーマやその他のタイプによって何らかの注入を受ける可能性のあるブログなどのホスティング業者は、その利益を得る可能性があります。それとも私はここで間違っていますか?

1
Samuel

多くのマルウェア対策「ヒューリスティック」エンジンがこの種の処理を実行します。コードのチャンク、またはPE全体のエントロピーをチェックします。多くのマルウェアは、実際には長く存在するように難読化されています。この種の検出の問題は、賢い攻撃者ではうまく機能しないことです。

たとえば、エクスプロイトを作成するときは、すべてをランダム化して物事を小さくし、他のファイルに永続的なコードを作成することは決してありません。代わりに、信頼できるエクスプロイトを作成し、ボックスにアクセスする必要があるときにトリガーします。

したがって、はい、これはマルウェアなどで機能します。いいえ、人間の攻撃者は表示されません。ただし、実行中のメモリでこれを実行できる場合は、それは確かに役立ちます。

1
Stolas