最近のウイルス対策ソフトは様々な技術を利用しているため、以外と簡単にマルウェアを処理することができます。特に、適切なエミュレータ方式のスキャンエンジンを使用すれば、エントリポイント難読化(EPO)という手口を使うマルウェアも含めて、「攻撃用コードを暗号化するポリモーフィック型」と「攻撃用コードを変化させるメタモーフィック型」双方の大半のマルウェアに対応可能です。ところが「W32/Zmist」(別名「Mistfall」)のように、ロード遅延とランダムなコードブロック挿入を行うマルウェアだと、コードエミュレータは最適な対策といえません。今回は、よく知られている検出回避策を使用しているのですが、実際のウイルス検査ではなかなか発見できない事例として、「W32/Xpaj」の亜種を取り上げ、その感染方法を解説します。
W32/Xpajの亜種は、コードブロックをランダムに挿入する方法でファイルに感染します。W32/Xpajは、ファイル本来のエントリポイントは変更しません。その代わり、異なる機能を持つコードブロックをいくつか作成し、感染ファイルのコードセクション全体のランダムな場所に書き込みを行います。この感染方法はW32/Zmistと似ていますが、W32/Xpajはコード挿入でなくコード置換を行います。
コードの復号は、無条件ジャンプ命令でつながった多くのコードブロックで処理を行います。復号モジュールが動き出すと、制御権を握り、以下のような様々な作業を実行します。
- 感染アプリケーションの元々の状態を保存し、W32/Xpajの使用する全レジスタ値を記録する
- W32/Xpaj本体の置かれているメモリーの保護フラグを変更する
- W32/Xpaj本体を復号する
- 復号済みのW32/Xpaj本体へジャンプする(他の処理も行う)
各作業は、個別のコードブロックや、組み合わされた一つの大きなブロックで実行されます。
復号処理が終わると、制御権は復号モジュールと通常異なるセクションにあるW32/Xpaj本体へと戻ります。ここでW32/Xpajは、相対ジャンプ命令ではなくレジスタを使用するジャンプ命令を行います。レジスタベースのジャンプ処理を利用し、厳重に暗号化した本体コードや関数横取りといった手法を組み合わせることで、このマルウェアは、より対策が難しくなっています。
W32/Xpajは、感染処理中に作ったコードブロックのいずれかの先頭を指す「call」命令を大量に探し出して置換し、少なくとも1回は確実に実行される環境を作成します。
ポリモーフィックコードブロックの書き込む場所に規則性がないため、解析するサンプルによってはコードエミュレータがW32/Xpajのコードにたどり着けないことがあります。W32/Xpajの仕掛けたコードを全て見つけることはできず、感染ファイルを見逃す可能性があるということです。このようなサンプルの存在は、一部のウイルス対策ソフトベンダーにとって予想外の脅威といえるでしょう。その一方で、W32/Xpajが制御権を獲得できない場合もあります。実際に出回っているサンプルとしては、以下の例があげられます。
- 4843998e3564ac1a1e137149bc3ce28e
- 8e4260d0a29c0133bad3bc0e39057456
- db4fff8a4a21e9c824cde3ebd151fbf2
W32/Xpajは、本体の復号中に何百万回もの繰り返し処理を生成することがあります。動的コード変換にきちんと対応していないコードエミュレータは、このような処理で失敗する可能性が非常に大きくあります。W32/Xpajは自分自身を感染ファイルと一体化させ、プログラム制御フローの構成要素になります。W32/Xpajが復号モジュールと置き換えた元々の関数は、エンコードしてW32/Xpaj本体と同じセクションに保存します。
W32/Xpajの亜種は、本体の入ったセクションの実効サイズが150Kバイト増えています。強力な難読化が施してあり、遠隔サーバーから新たな命令を受け取る機能も備えています。
- tooratios.com(82.98.235.66)
- abdulahuy.com(82.98.235.66)
ベルギーでホスティングされていた上記サーバーでは、以下のファイルを使って命令を送っていました。
- hxxp://abdulahuy.com/{blocked}/stamm.dat
興味深いことに、このマルウェアの作成者は、W32/Xpajの活動を監視するためのログ記録機能を組み込んでいました。W32/Xpajに感染したファイルは、活動報告と感染パソコンの情報(OSのバージョン、適用されているサービスパック、IPアドレスなど)を、上記サーバーに送信する仕様になっています。
なおマカフィーは、すでにArtemisテクノロジーによる検出により、このマルウェアへの対応を強化しており、マカフィーの全ての製品でこの脅威を防ぐことができます。
※本ページの内容はMcAfee Blogの抄訳です。
原文:W32/Xpaj: Know Your Polymorphic Enemy