ポリモルフィックコードとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ポリモルフィックコードの意味・解説 

ポリモルフィックコード

(Polymorphic code から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/01/13 15:03 UTC 版)

ナビゲーションに移動 検索に移動

ポリモルフィックコード: Polymorphic code)とは、本来のアルゴリズムを保ったまま変化していくコード(プログラム)である。この技法はコンピュータウイルスシェルコードワームが自身の存在を隠すために使われる。

アンチウイルスソフトウェア侵入検知システムの多くは、ファイルやコンピュータネットワーク上のパケットを調べ、悪意あるコードがないか調べる。これにおける検出方法はもっぱらパターンマッチであるため、ポリモルフィック手法によりコードを絶えず変化させることで、検出を難しくすることができる。

ポリモルフィックコードを実現する手段としてよく使われるのは暗号である。しかし、コード全体を暗号化してしまうと実行不可能となるので、それはできない。したがって、一部のコードは暗号化せずに残しておく。アンチウイルスソフトウェアは、その暗号化されない一部分をターゲットとして探索する。

悪意あるプログラマは、暗号化できない復号エンジン部をウイルスやワームが伝播するたびに書き換えることでセキュリティソフトウェアから逃れようとする。また、アンチウイルスソフトウェア側もマルウェアを確実に検出するため、復号エンジン部の突然変異によっても変化しないパターンを見つけ出そうとする。

世界初のポリモルフィックコード方式のウイルスを作ったのは Mark Washburn である。そのウイルス 1260 は1990年に書かれた。もっとよく知られているポリモルフィックコード方式のウイルスとしては、1992年にブルガリアのクラッカー Dark Avenger(en:Dark Avenger)が作った、ミューテーションエンジン(Dark Avenger Mutation Engineを略してDAME、あるいはMtEと略される)がある。MtEの著しい特徴は、それ自身は厳密にはウイルスではなく、他のウイルスにとりつき、そのウイルスのコードを暗号化する「エンジン」である点である。

以下の擬似コードは、コードの一部が暗号化されているとして、それを復号して実行するコードである。

Start:
GOTO Decryption_Code
Encrypted:
    ...
    暗号化されたコード列
    ...
Decryption_Code:
    A = Encrypted
Loop:
    B = *A
    B = B XOR CryptoKey
    *A = B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    GOTO Encrypted
 CryptoKey:
    何らかの乱数

以下は同じコードを不必要な C という変数を導入して擬装した例である。

Start:
GOTO Decryption_Code
Encrypted:
    ...
    暗号化されたコード列
    ...
Decryption_Code:
    C = C + 1
    A = Encrypted
Loop:
    B = *A
    C = 3214 * A
    B = B XOR CryptoKey
    *A = B
    C = 1
    C = A + B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    C = C^2
    GOTO Encrypted
 CryptoKey:
    何らかの乱数

"Encrypted" 以下の暗号化されたコードを復号して実行したとき、Decryption_Code と CryptoKey の間にあるコードを調べ、変数 C をいじっている部分を削除する。次に暗号化されるとき、C をいじる不要なコードを新たに生成する。一般に、最初は暗号キーとしてゼロを使う。そうすると復号時に何も変化しないため、暗号化されていない通常のコードのままでよい。それを1回実行したときに新たな暗号キーを生成するなどして暗号化する。

他にも、NOP(何もしない)命令を適当に挿入するなどのポリモルフィックな技法がある。

関連項目

参考文献




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ポリモルフィックコード」の関連用語

ポリモルフィックコードのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ポリモルフィックコードのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのポリモルフィックコード (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS