ポリモルフィックコード
From Wikipedia, the free encyclopedia
ポリモルフィックコード(英: Polymorphic code)とは、本来のアルゴリズムを保ったまま変化していくコード(プログラム)である。この技法はコンピュータウイルス、シェルコード、ワームが自身の存在を隠すために使われる。
アンチウイルスソフトウェアや侵入検知システムの多くは、ファイルやコンピュータネットワーク上のパケットを調べ、悪意あるコードがないか調べる。これにおける検出方法はもっぱらパターンマッチであるため、ポリモルフィック手法によりコードを絶えず変化させることで、検出を難しくすることができる。
ポリモルフィックコードを実現する手段としてよく使われるのは暗号である。しかし、コード全体を暗号化してしまうと実行不可能となるので、それはできない。したがって、一部のコードは暗号化せずに残しておく。アンチウイルスソフトウェアは、その暗号化されない一部分をターゲットとして探索する。
悪意あるプログラマは、暗号化できない復号エンジン部をウイルスやワームが伝播するたびに書き換えることでセキュリティソフトウェアから逃れようとする。また、アンチウイルスソフトウェア側もマルウェアを確実に検出するため、復号エンジン部の突然変異によっても変化しないパターンを見つけ出そうとする。
ポリモルフィックコードを利用したマルウェアを「ポリモルフィック型マルウェア」、ウイルスを「ポリモルフィック型ウイルス」という。
世界初のポリモルフィックコード方式のウイルスを作ったのは Mark Washburn である。そのウイルス 1260 は1990年に書かれた。もっとよく知られているポリモルフィックコード方式のウイルスとしては、1992年にブルガリアのクラッカー Dark Avenger(en:Dark Avenger)が作った、ミューテーションエンジン(Dark Avenger Mutation Engineを略してDAME、あるいはMtEと略される)がある。MtEの著しい特徴は、それ自身は厳密にはウイルスではなく、他のウイルスにとりつき、そのウイルスのコードを暗号化する「エンジン」である点である。