本サービスには一部、Googleの支援により翻訳されたコンテンツが含まれます。Googleは、明示または黙示を問わず、市場性、特定目的への適合性、ならびに非侵害の黙示的保証を含む、翻訳の精度、信頼性、正確性に関連するあらゆる点において保証しません。

Kaspersky Labの本Webサイトは、便宜上、Google Translateを搭載した翻訳ソフトウェアを利用して翻訳されています。正確な翻訳となるよう合理的な努力を払ってはおりますが、自動翻訳の正確性は完全ではなく、翻訳者(人間)による翻訳に代わるものとして意図されているものでもありません。翻訳はKaspersky Labの本Webサイトをご利用の皆様の利便性を図るためのものであり、「翻訳結果をそのまま」ご提供するものです。英語からその他言語への翻訳における精度、信頼性、正確性に関しては、明示または黙示を問わず、いかなる保証もなされません。翻訳ソフトウェアのため、コンテンツの一部(画像、動画、フラッシュ等)は正しく翻訳されない場合があります。

Trojan-Banker.Win9x.Libertine

クラス Trojan-Banker
プラットフォーム Win9x
説明

技術的な詳細

このウイルスは、DOSおよびWin32ファイルの両方に影響を及ぼす、マルチプラットフォームおよび多相感染症です。コード内のテキスト文字列の名前が付けられています。


[Win32.Libertine v1.07b]
Copyright 1998-xxxx by
このウイルスは3つの異なる形式で検出されます。
  • 感染したWin32 PEファイル
  • 感染したDOS COMファイル
  • Win32 PEドロッパー(31672バイトの純粋なウイルスコード)
バグのため、感染したCOMおよびEXEファイルはWindows NTでは実行できませんが、標準のNTまたはDrWatsonエラーメッセージで終了します。これにもかかわらず、ウイルスドロッパーが問題なくNTコンピュータにウイルスを広めることができるので、Win95ではなくWin32という名前を付けます。

Win32とDOSの両方のファイルに感染すると、ウイルスは完全な32Kbコードをファイルの最後に書き込み、ファイルのヘッダーを変更して制御をウイルスルーチンに渡します。エントリルーチンのアドレスは、感染の3つのすべてのケースで異なります。 Win32ドロッパー(C:MYLENE.EXEファイル)を制御して実行すると、感染したWin32およびDOSプログラムの両方でウイルスが実行され、ホストプログラムに制御が戻されます。 C:ドライブのルートディレクトリにドロッパーがない場合、ウイルスは最初に作成して実行します。

これらのドロッパー・アクティベーション・ルーチンは、感染ファイルが非常に短いです。 DOS COMファイルの場合は、単純に約200バイトの作成 – 書き込み – クローズクローズルーチンです。 Win32ファイルの場合、それはより洗練されていますが、非常にばかげて短くなります。

そのため、感染ファイルのウイルスはdropperを作成して実行するだけです。これ以上感染することはなく、すべての感染とペイロードのウイルス機能はWin32ウイルスドロッパーになります。

Dropperの実行

ドロッパーが実行されると、まずウイルスがシステム内にその存在を隠すためにいくつかのトリックを実行します。アクセス違反システムメッセージを防止するために、SetErrorMode KERNEL32関数を使用してウイルスが一般保護違反のエラーメッセージを無効にします。 Windowsは保護違反に関する報告なしにアプリケーションを実行し続けるだけです。

その後、ウィルスは実行されているシステム(Windows95 / 98またはWindows NT)をチェックし、Windows9xの場合は文書化されていないプロセスデータベースにパッチを適用し、NukeProcessとServiceProcessの2つのフラグを設定します。これらのフラグは、少なくとも2つの目的のために設定されています。a)プロセスはCtrl-Alt-Delタスクリストに表示されません。 b)ユーザーがログオフすると、プロセスは終了しません。これらのフラグを有効にするために、ウイルスは「セクシーな」ID引数でそのドロッパーを再実行します。

パッチ適用されたシステム環境下で実行されると、ウイルスは他のルーチン(アンチウイルス対策ルーチン、ペイロード、感染)にジャンプします。

抗ウイルス対策

アンチウィルス保護を無効にするには、ウィルスはターゲットとして1つのアンチウィルス、つまりAPVI(AVPインスペクタ完全性チェッカ(CRCスキャナ))のみを持っています。ウイルスはAVPIファイルを探して開き、特定のコードをスキャンします。このようなコードが見つかった場合、ウイルスはそのコードをNOP命令に置き換えます。異なる効果を引き起こす異なるAVPIバージョンに応じて、AVPIはシステム内の変更を検出しないか、スキャンを直ちに停止して統計ダイアログを表示します。

このウイルスは、システムレジストリを使用してAVPIファイル名を取得します。 HKEY_USERSDefaultSoftwareKasperskyLabAVPIキーを開き、AVPIディレクトリへのパスを取得し、AVPICHCK.DLLを開き、スキャンしてパッチを適用します。重複したパッチを避けるために、ウイルスは、ファイルヘッダにオフセット "0030h"の "kcah"( "ハック"を書いた)IDを保存します。

ウイルスは、AVPIがアクティブであれば終了します。そのために、ウイルスはAVPI32ウィンドウを見つけ、そのスレッドIDを取得し、プロセスを開き、終了します。

感染

感染ルーチンが制御されると、ウイルスはすべてのファイルをスキャンし、インストールされているすべてのハードドライブのすべてのサブディレクトリツリーをC:から開始し、シーケンス内に固定されていないディスク(CD-ROM、リモート、またはその他)があればウイルスは終了します。

ファイルが見つかると、ウイルスはCOMまたはEXEファイル名の拡張子をチェックします。ウイルスはそのようなファイルだけを感染させ、そうでない場合は次のファイルまたはサブディレクトリのエントリを検索します。ファイルが実行可能な拡張子を持つ場合、システムタイマーに応じて確率7/8のウイルスが感染ルーチンにジャンプします。そうでない場合、実行可能でない名前拡張の場合と同様に検索が続行されます。

まず最初に、ウイルスはCOMとEXEファイルを最初の2バイトとマジックMZスタンプと比較して区切ります。 EXEファイルの場合、ウイルスはポータブル実行可能ファイルとウイルスIDスタンプをチェックします。ヘッダーの上部にある「PE」と「IM! PE CheckSumフィールドに入力します。 Portable Executableファイルの最後にコードを追加すると、_Mylene_という名前の新しいセクションが作成され、Entry Pointのアドレスとその他の必要なフィールドが変更されます。その後、ポリモフィックエンジンを実行し、そのコピーを暗号化し、PEファイルの最後に新しく作成したセクションに書き込みます。

COMフ​​ァイルの場合、ウイルスはファイルの最後に自身を書き出しますが、EXEヘッダーをファイルの先頭に追加することによってファイル形式をEXEに変換します。ウイルスはDOSファイルを2度感染させません。内部ファイル形式をチェックし、COMファイルのみに影響します。感染しているとEXE形式になり、ウイルス感染ルーチンによってバイパスされます。このウイルスは、ファイルの最後に "ENUN"という文字列を持つファイルにも感染しません。このIDは、これらのCOMファイルがCRCによって保護されていることを意味するため、ウイルスはそれらを感染させません。このウイルスは、2K未満または60Kを超えるサイズのCOMファイルも感染させません。

感染したCOMファイルの実行

DOS COMファイルに感染すると、ウイルスはそれらをEXE形式に変換します。感染したCOMファイルには、EXEヘッダーがあります。先頭にMZの魔法のスタンプがあり、すべての必要なEXEヘッダーのフィールドがあります。感染したファイルのヘッダーを慎重に調べると、ハッカーのプログラムの起源がすぐにわかります。いくつかのフィールドには、通常のプログラムでは見つからない値があります。最初にHeaderSize(Headerの段落)フィールドはゼロになります。つまり、EXEヘッダーにはバイトがありません(しかし、少なくとも2つの 'M'と 'Z'があります)。 2番目の疑わしいフィールドは-100h(FFF0h)の値が格納された「エントリ時のCS」です。同じEXEヘッダーにこれらのフィールドを両方とも使用すると、DOSは標準のDOS COMファイルとしてそのようなEXEファイルをロードします。0000〜00FFhまでのバイトプログラムのセグメントプレフィックスによって占有され、0100hから割り当てられたメモリの最後までのバイトがファイルイメージ用であり、ファイルの最初のバイトがオフセット0100hに置かれます。 DOS COMファイルの場合、ファイルイメージはセグメント(64K)に重ならない.DOS EXEファイルの場合、ロード可能イメージは空きメモリの1ブロックを満たす任意のサイズにすることができる。

COM-> EXEトリックを使用することにより、ウイルスは感染中にファイルサイズが64Kの制限を超えても機能を失うことなく、任意のサイズのCOMファイルを感染させることができます。ウイルスサイズを覚えておいてください – EXE形式に変換せずに、ウイルスは32Kbを超えるサイズのCOMファイルに感染することはできません。このトリックのもう一つの重要な効果は、ホストプログラムに制御を戻す簡単な方法です。ウイルスは何もしませんが、最初の4Fhバイトのファイルヘッダーを復元してそこにジャンプします。

したがって、ウイルスコードは非常に最初のバイト( "MZ"スタンプ)から最後まで読み込まれ、EXEヘッダーが指すアドレスに制御が渡されます。このウイルスの場合、エントリーコードは、ファイルの最上部の近くにあるアドレス0020hに置かれます。このルーチンは、32ビットのi386命令を使用して、メインのウイルスコード(このオフセットはヘッダの001Chのアドレスに格納されています)のオフセットを取得し、16ビットのセグメント:オフセット形式に変換してそこにジャンプします。エントリールーチンは、書き込み保護されたボリュームへの書き込み中に標準のDOSエラーメッセージを防ぐためにINT 24hをフックしますが、なぜウイルスの著者がここに配置したのですか?

メインのウイルスコードが制御を受け取ると、Windowsの存在がチェックされます。 Windowsが実行されていない場合、またはWindowsのバージョンが4.0より小さい場合(Windows95)、ウイルスは元のホストプログラムバイトをその先頭に復元し、そこで制御を返します。 Windowsが実行されると、ウイルスはC:MYLENE.EXEファイルを作成し、そこにWin32 dropperを書き込み、ファイルを閉じて実行します。ドロッパーは制御を受け、ウイルスは感染レベルに戻ります。

感染したPEファイルの実行

感染したPEファイルが実行されると、ウイルス多形ルーチンは制御を受け、ウイルスコードを解読してメインルーチンにジャンプします。このルーチンは、COMファイルの場合と同じではありません。 Windowsのメモリとリソースで動作する32ビットのプログラムですが、このルーチンの対象はCOMファイルの場合と同じです。ウィルスドロップを作成して実行します。

Windows機能にアクセスするには、ウイルスはPEインポートテーブルを使用してウイルスをインポートするか、Windowsカーネルをスキャンしてアドレスを取得します。ウイルスは第2の方法を選択します:環境(Windows95 / 98またはWindows NT – このウイルスはどちらの場合も正しいオフセットを使用します)に対して注意を払い、KERNEL32のインポートを解析し、CreateFileA、WriteFile、CloseHandleおよびWinExec関数を検索します。感染したPEファイルのウィルス手順は非常に簡単で、それ以上のものは必要ありませんが、これらの4つのエントリだけです。 //ここにWindowsNTの下での拡散を止めるウイルスコードのバグがあります。

その後、感染したDOS COMファイルの場合と同様の方法でC:MYLENE.EXEファイルを作成し、そこにドロッパーのコードを書き込み、このファイルを閉じて実行します。ドロッパーが制御を行い、このPEアルゴリズムブランチアルゴリズムがルートに戻ります。

ペイロード

アンチウイルスと感染ルーチンを呼び出す前に、ウイルスはトリガルーチンを呼び出します。このルーチンは、システム時間カウンターに応じて確率1/8で実行され、Windowsの背景画像(WallPaper)を変更します。ウイルスはシンプルにC:MYLENE.BMPファイルを作成し、そこにMylene Farmer(?)の画像を書き込み、BMP形式に変換してWindows WallPaperイメージとして宣言します:

その間、ウイルスはインストールされたJPEGビューアにシステムレジストリからアクセスします。


HKEY_LOCAL_MACHINESOFTWAREMicrosoftShared ToolsGraphics FiltersImportJPEG
ウイルスは対応するライブラリをメモリにロードし、アドレスを取得してImportGrルーチンを呼び出します。ウイルスはこの変換だけを実行してサイズを縮小します。結果のBMPイメージは160Kファイルなので、ウイルスはコード内に同じイメージの16K JPEGバリアントを保持します。 WallPaperイメージとしてWindows95はBMPフォーマットのみを受け入れるので、ウイルスはJPEGソースをBMPに変換する必要があります。

結果イメージは、同じC:MYLENE.BMPファイルに保存され、Windowsデスクトップの壁紙イメージとして登録されます。


HKEY_CURRENT_USERControlパネルのデスクトップ
この変換の唯一の些細な点は、私がテスト用のコンピュータで必要なものをすべて持っていることですが、ウィルスは自分の壁紙をアップグレードできませんでした。

直接行動だけどメモリ常駐?

各ファイルを感染させる前に、ウイルスは標準のWindows API関数Sleepを呼び出し、その動作を3秒間遅らせます。これはウイルスコードの非常に(おそらく最も重要な)ブロックです。この呼び出しの1つだけが、ウイルスに「メモリ常駐」と表示されます。

この眠気の指導の結果、ウイルスコードは長い間システムメモリに残ります。コンピュータに1000のCOMファイルとEXEファイルがあるとしましょう。ウイルスは3秒間スリープしてから感染するので、50分間(3000秒間)メモリに残ります。

ウイルスはメモリ常駐です。システムメモリに長時間留まり、ウイルス感染ルーチンがアクティブな間に他のアプリケーションが実行される可能性があります。これにもかかわらず、直接アクションウイルス(非メモリ常駐ウイルスのような)です – それは、サブディレクトリツリー内のファイルを検索し、それらを感染させ、イベントは引っ掛かりません。

それでもウイルス作成者は、同じ保守的なDOS方法を実行しようとします.DOS TSRフックINT 21hと同様のWindows VxDフックIFS APIを作成します。これは、現在、常駐Windowsウイルスを作成する最も一般的な決定です。おそらくリバティーンウイルスは準常駐機能を持つ最初のウイルスであり、将来的にはWindows VxDやNTドライバよりもWindowsアプリケーションをデバッグするのがはるかに簡単なような種類のウイルスが増えます。


オリジナルへのリンク