Video Screencast Help

Changeup に起きた変化

Created: 23 Aug 2013 07:55:17 GMT • Updated: 23 Aug 2013 07:55:54 GMT • Translations available: English
Masaki Suenaga's picture
0 0 Votes
Login to vote

シマンテックは長い間、W32.Changeup シリーズのワームに対する取り組みを続けており、このブログでも今までに何度となくお伝えしてきました(参照 1参照 2)。
 

image1_10.png

図 1. W32.Changeup.C の発生状況
 

W32.Changeup は Microsoft Visual Basic 6.0 で記述されており、そのプログラムコードのうち感染機能を担う部分が、不明瞭化されてはいるものの、プログラムファイル中で見えているという特徴があります。ところが、W32.Changeup の歴史で初めて、ファイルのプログラムコード中で感染機能の部分が見えない新しい亜種が発見されました。

プログラムファイルはネイティブコード(Intel X86 のコード)で作成されており、起動オブジェクトは 'Form605' に設定されています。
 

image2_5.png

図 2. X86 命令で書かれたプログラムファイルの起動コードが見える
 

このコードを実行すると、一度プログラムが実行されたメモリは完全に上書きされます。
 

image3_5.png

図 3. プログラム中の起動コードがメモリに
 

置き換えられるプログラムも Visual Basic 6.0 で作成されていますが、これは P コード(擬似コード)で作成されており、起動オブジェクトは 'Sub Main' です。

メモリ上のプログラムは純粋な W32.Changeup であり、不明瞭化されていません。接続先のドメイン名を除いて文字列はまったく暗号化されておらず、冗長な文字列連結もありません。
 

image4_1.png

図 4. ベア文字列がグローバル変数文字列 Me(204) と Me(860) にコピーされる
 

この例でグローバル変数にコピーされるのは、'connect' と 'CreateToolhelp32Snapshot' というベア文字列です。このような純粋な形の W32.Changeup は、長らくお目に掛かっていません。作成者は、プログラムファイルで見えなくなるので、もう文字列を隠す必要もないと考えたようです。もちろん、冗長な文字列結合や無意味な API 呼び出しなど、他の不明瞭化方法もメモリ上では必要ありません。

W32.Changeup は以前と同じように機能しますが、ポリモーフィズムに関しては例外です。1 つ前の世代の W32.Changeup は強力なポリモーフィズムの機能を備えていました。ダミーのフォーム名などとして使われる 3 つのランダムな文字列を置き換え、プログラムファイル中では新しいランダムな文字列で出現するため、複数の相違がある新しいファイルが生成されていました。たとえば、Visual Basic のフォームとモジュールを作成するそのような文字列がどこに置かれていても、この置き換えはファイルに影響します。ウイルス定義でこのような可変文字列を網羅したとしても、サンプルから派生した亜種を検出することはできません。セキュリティの専門家がポリモーフィックワームに特に注目してきたのも、これが理由です。

最新版の W32.Changeup は、この強力なポリモーフィズム機能を捨て去っています。自身をコピーするときに、文書ファイルや画像、動画に偽装するために、プログラムファイルの resource セクションでアイコンを変更するだけです。
 

image5_2.png

図 5. W32.Changeup が偽装のために使うアイコン(低画質である点に注意)
 

シマンテックは、これらのファイルを W32.Changeup!gen44 として検出します。

 

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。