メタモルフィックコードとは、実行されると、ある解釈の下で自身のコードと論理的に等価なバージョンを出力するコードである。これはクワインに似ているが、クワインのソースコードはそれ自身の出力と完全に等価であるという点が異なる。また、メタモルフィックコードは通常、自身のソースコードではなくマシンコードを出力する。
メタモルフィックコードを利用したマルウェアを「メタモルフィック型マルウェア」、ウイルスを「メタモルフィック型ウイルス」という。
概要 メタモルフィックコードは、アンチウイルスソフトウェアのパターン認識を回避するためにコンピュータウイルスによって使用される。メタモルフィックウイルスは多くの場合、自身のバイナリコードを一時的な表現に変換し、自身の一時的な表現を編集してから、編集された形式を再びマシンコードに変換する。この手順はウイルス自体を使用して行われるため、メタモルフィックエンジン自体も変更を受け、ウイルスのどの部分も同じままにはならない。これは、ポリモルフィックエンジンが自身のコードを書き換えることができないポリモルフィックコードとは異なる。
メタモルフィックコードは、一部のウイルスが新しいファイルに感染しようとする際に使用され、その結果、次の世代は現在の世代とは全く異なる外観となる。突然変異したコードは(使用される解釈の下で)全く同じことを行うが、子ウイルスのバイナリ表現は通常、親ウイルスのものとは完全に異なる。突然変異は、NOP命令の挿入(ブルートフォース)、使用するレジスタの変更、ジャンプによるフロー制御の変更、機械語命令の等価なものへの変更、または独立した命令の並べ替えなどの技術を使用して達成される。
メタモルフィズムは、ヒューリスティック分析からウイルスを保護するものではない。
また、メタモルフィックコードは、ウイルスが2つ以上の異なるオペレーティングシステム(WindowsやLinuxなど)、あるいは異なるコンピュータ・アーキテクチャの実行可能ファイルに感染する能力があることを意味する場合もある。多くの場合、ウイルスは自身の中に複数のウイルスを保持することでこれを行う。そして、ウイルスの先頭部分は、実行される予定のすべてのプラットフォームの正しいマシンコードに変換されるようにコーディングされる。これは主に、ターゲットプラットフォームが不明なリモートエクスプロイトインジェクションコードで使用される。
メタモルフィックウイルス
Simile ZMist Lacrimae
関連項目
自己書き換えコード 不思議の環 ポリモルフィックコード コンピュータウイルスとワームの年表
脚注
外部リンク Hunting for Metamorphic