初心者向けのウイルス分析-Virus.Win32.MTVを分析します

マルウェアを分析するだけでなく、このトピックに関する別の記事を書く時間もようやく見つかりました。 始めましょう。 今日は、2000年に検出されたVirus.Win32.MTV.4608.aウイルスを分析します。 ウイルスの検出日は気にしないでください-そのような制限があってもウイルスの分析は決して干渉しません。 vx.netlux.orgで入手できます。



必要なツール:任意の逆アセンブラーまたはデバッガー。



そのため、テストファイルを逆アセンブラまたはデバッガにロードします。 分析用の非常に優れたコードが表示されます-パッケージ化、難読化、アンチデバッグなし-すべてが明確です。 すぐにラインに打たれた:「著作権1989-2000 Borland Inc. Borland C ++ランタイムライブラリ」。これは、ウイルスが記述されたコンパイラの言語とバージョンを定義します。 このウイルスの機能の分析を最も詳細な方法で直接始めます。 プログラムは次の場所から開始します。



00401000> MOV ESI、Virus.004032A8

00401005 MOV ECX、2D

0040100A> MOV AL、BYTE PTR DS:[ESI]

0040100C XOR AL、3

0040100E MOV BYTE PTR DS:[ESI]、AL

00401010 INC ESI

00401011 ^ LOOPD SHORT Virus.0040100A



このループは、サイズが0x2Dバイトの0x004032A8にある文字列定数を復号化します。 復号化後、これを取得します。

画像






次に、次のコードが実行されます。

画像






プログラムがディスク上の場所を決定し、読み取り用に独自のファイルを開き、サイズを見つけて、特別に割り当てられたメモリ領域にロードすることは簡単にわかります。 なんで? さらに理解します。 そして今、私たちは、プログラムに有害なイベントが発生した場合、メッセージボックスを表示し、Windowsをシャットダウンすることに注意します。

画像






ここで、次の場所に注目しましょう。



004010CD CMP EAX、1200

004010D2 JEウイルス。004011D2



ここで、プログラムはその物理サイズを定数0x1200と比較し、この操作に応じて、さまざまな方法で実行を継続します。 現在のファイルのサイズも0x1200です。 プログラムのこのインスタンスがウイルスのソースファイルであると想定することができ、これは後で確認されます。 ファイルサイズが0x1200と異なる場合に実行する内容を確認します。

画像






最初に、プログラムは一時ファイルを作成し、次のサイクルでメモリ領域を復号化します。



00401152> MOV AL、BYTE PTR DS:[ESI]

00401154 XOR AL、3

00401156 MOV BYTE PTR DS:[ESI]、AL

00401158 INC ESI

00401159 ^ LOOPD SHORT Virus.00401152



暗号化は単純なバイトXORです。 プログラムはどのメモリ領域を復号化しますか? この領域は、プログラムが以前に現在の実行可能ファイルの内容を書き留めたバッファであり、復号化は0x1200のオフセットで始まります。 あなたは何が起こっているのか推測していませんか? さらに調べます。この後、プログラムは復号化されたデータを一時ファイルに書き込み、実行のために一時ファイルを起動して、現在のコマンドラインパラメーターを渡します。 このプログラムは実行可能ファイルに最も原始的な方法で感染し、その内容を暗号化し、受信した暗号化データを感染したプログラムの代わりに書き込まれた独自のファイルのオーバーレイにダンプすることを確信できます。 また、ウイルスは、起動されるとオーバーレイを解読し、一時ファイルに保存して、実行のために元のプログラムを起動します。 シンプルで陳腐。

次に、次に何が起こるかを確認します。

画像






次に、プログラムは別のスレッドを開始し、元のプログラムと作成されたスレッドの両方の完了を待ちます。 作成されたスレッドはどうなりますか?

画像






プログラムは、グローバル識別子「MTV-2」の存在を確認することにより、ウイルスコピーがシステムで既に実行されているかどうかを判断します-存在する場合、ウイルスのコピーが既に実行されていることを意味します。 彼女が何をしているのか見てみましょう:

画像






予想どおり、これは、見つかったすべての実行可能ファイルに感染するディスク上のフォルダーを再帰的にトラバースする機能です。 ここで2つの点に興味がありました。 最初-スリープ機能によるWinAPIの遅延により、わずか5秒後に次のファイルの処理に進みます。 その結果、ウイルスはすべてのファイルを非常にゆっくりとソートし、タスクのリストで常にハングします。 さて、次のコード:



004013C6 PUSH Virus.004032D6

004013CB CALL JMPおよびKERNEL32.GetSystemTime

004013D0 CMP WORD PTR DS:[4032DC]、0D

004013D8 JNZ SHORT Virus_Wi.004013E6

004013DA PUSH Virus.004031A6

004013DF CALL JMPおよびKERNEL32.DeleteFileA



今日が任意の月の13日目である場合、この関数は見つかったすべてのファイルを削除します...これは、このウイルスのすべての貧弱な機能が終了する場所です。



結論:今日、私たちは使いやすく、書くのが速いウイルスを分解しました。その作成は特別な知識を必要とせず、ほとんどの初心者プログラマーに可能です。 さらに、ウイルスの機能も非常に劣っています。 プログラマーは創造性を切望していないことがわかります。すべてが迅速な結果を目指していました。 しかし...私はこのウイルスが一般的にどのような目的で意図されているのかを完全に理解することはできませんか? それにもかかわらず、10年以上にわたり、マルウェアはその開発において大きな一歩を踏み出しました。



All Articles