PEファイルから抽出できる機能(ヘッダー、セクション名、文字列、インポート、エクスポートセクションなどからの情報)は、特定の機械学習アルゴリズムをトレーニングして、疑わしいファイルが悪意のあるものかどうかを検出するのに十分ですか?
私は2つの異なる意見に会いました:
最初のオプションは、これらの機能で基本的な検出システムを作成するのに十分であることを示しています。さらに、効率と精度を向上させるために、動作属性(API呼び出しなど)を含めることができます。
しかし、セカンドオピニオンは、これらの機能の多くは冗長であり、冗長な機能はモデルの品質を損なう可能性があるため、これらの属性は多くの場合役に立たないと述べています。
また、マルウェアのサンプルが別のサンプルと類似しているかどうかを検出でき、一方が他方のバリアントであることを示唆しているのではないかと考えています。この種の情報はマルウェアの検出に役立ちますか?
パックされたマルウェアに遭遇した場合、PEファイルから抽出可能な機能とそのインポートされたライブラリ関数はおそらくどこにも行きません。これは、インポートされる関数呼び出しがほとんどないため、ヘッダー情報を変更して、学習したマルウェアのモデルを誤解させる可能性があるためです。
実行可能ファイルがパックされているという事実は、通常のプログラムもそれを行うことができるので、それをマルウェアとして判断するのに十分ではないことに注意してください。
ヘッダーの属性の多くは、実行可能ファイルにまったく影響を与えずに変更でき、それに影響を与えるものでさえ、影響を与える実行可能ファイルの一部を変更することで変更できます(例としてsizeofimage)。いくつかのものを検出するのに役立ちます、まともなコーダーはこれに対して彼らのpeを免除します。
もう1つはシグネチャです。基本的なネイキッドマルウェアを検出できますが、暗号化されたものは簡単にバイパスされます。
あなたの最善の策は、セクションのエントロピーと特性を検出することです。高いエントロピーは、実行可能ファイルがパック/暗号化されている可能性が高いことを意味します。読み取り、書き込み、および実行特性を持つセクションの存在は、ほとんどの場合、実行可能ファイルがパックされていることを意味します。
しかし、何だと思いますか?エントロピーを必要なだけ減らす方法と、読み取り/書き込み/実行セクションなしでpeをパックする方法があります。
ヒューリスティックが攻撃的であるほど、マルウェアを検出する可能性が高くなりますが、多くの誤検知が発生します(すべてのパックされた実行可能ファイルがマルウェアであるとは限りません)。
あなたのケースで「もの」を検出する機械学習システムでの私の経験はマルウェアです。これらのシステムには、マルウェアではないものからマルウェアであるものを学習するための多くのサンプルが必要です。それらは私の経験から多くの誤検知を生成し、最終的には実行可能ファイルの一部をスキャンし、いくつかのルールを適用し、次に他のタイプのヒューリスティックを適用してから機械学習を行うハイブリッドアプローチに従う方が良いです。これはそれぞれに依存します場合。
たとえば、誰かが実行可能ファイルを含む電子メールを送信した場合、実行可能ファイルがマルウェアである可能性は何ですか?システムのリスクを冒しますか?定期的なスキャンまたはsha256sumを行い、サードパーティに確認しますか?または機械学習戦略を適用する