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

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

Virus.Win9x.CIH

検出日 11/20/2002
クラス Virus
プラットフォーム Win9x
説明

技術的な詳細

これはWindows PEファイル(Portable Executable)に感染するWindows95 / 98固有の寄生虫ウイルスで、約1Kバイトの長さです。チェルノブイリとしても知られています。このウイルスは、1998年6月に台湾で現地の大学で勉強していたウィルス作者によって公開された「野生のもの」で発見されました。このウイルスは台湾からウイルスをリリースした地元のインターネットカンファレンスで公開された(誤って?)。 1週間以内に、このウイルスはオーストリア、オーストラリア、イスラエル、英国で発見され、いくつかの国(スイス、スウェーデン、米国、ロシア、チリなど)からも報告されました。

約1ヶ月で、感染したファイルが、世界中のウイルスの流行を引き起こしたいくつかのWebサイト(ゲームソフトウェア配布サイト)に誤って入れられました。 1999年3月26日のウイルスの出現から約1年後、ウイルスコードの「時限爆弾」は、ウイルス感染のために約50万台のコンピュータが損傷したときにコンピュータの災害を引き起こしました。それらの多くは、マザーボードのBIOSを破壊していた(ハードドライブのデータも破損していた)。現在のところ、このような世界的で恐ろしいコンピュータ事件はなかったため、この事件は重要でした。

1986年4月26日に世界に衝撃を与えたチェルノブイリ大惨事の日にウイルスの「爆弾」の日が来るため、すでに「CIH」として知られていたウイルスは「チェルノブイリ」という第2の名前を持っています。

それにもかかわらず、ウィルス作者は、彼の「爆弾」とチェルノブイリ(チェルノブイリについて聞いたことがないかもしれない)とリンクしていない。別の理由から、「爆弾」の日が選ばれたようだ。 1998年4月26日に最初のウイルスバージョン(幸いにも台湾を去っていない)がリリースされたため、1999年4月26日にウイルスが「誕生日」を祝った。

ウイルスの仕組み

ウイルスはWindowsメモリに自身をインストールし、ファイルアクセス呼び出しをフックし、開かれたEXEファイルを感染させます。システムの日付(下記参照)に応じて、ウイルスはトリガルーチンを実行します。ウイルスにはバグがあり、感染したアプリケーションが実行されるとコンピュータが停止することがあります。

ウィルスのトリガルーチンはフラッシュBIOSポートで動作し、フラッシュメモリを "ゴミ"で上書きしようとします。これは、マザーボードとチップセットがフラッシュメモリへの書き込みを許可している場合にのみ可能です。通常、フラッシュメモリへの書き込みはディップスイッチで無効にすることができますが、これはマザーボードの設計によって異なります。残念ながら、DIPスイッチで保護することができない近代的なマザーボードがあります – また、スイッチの位置に注意を払わないものもあり、この保護はまったく効果がありません。他のマザーボードのデザインには、ソフトウェアによって無効化/無効化できる書面による保護機能があります。

トリガルーチンは、インストールされているすべてのハードドライブのデータを上書きします。ウイルスはこれを達成するためにダイレクトディスク書き込みを使用し、MBRとブートセクタを上書きしながら標準的なBIOSウイルス保護をバイパスします。

非常に密接に関連しており、コードのわずかな部分でのみ異なる3つの「オリジナル」ウイルスのバージョンが知られています。彼らは異なる長さ、ウイルスコード内のテキストとトリガーの日付を持っています:

長さのテキストトリガの日付In-The-Wild

4月26日に1003 CIH 1.2 TTIT

4月26日の1010 CIH 1.3 TTIT

1019 CIH 1.4月の26日にTATUNGはい – 多くの報告

技術的な詳細

ファイルを感染させている間、ウイルスはファイル本体に「洞窟」を探します。これらの洞窟は、PEファイル構造の結果です。すべてのファイルセクションは、PEファイルヘッダーで定義された値で整列され、前のセクションの末尾と次のセクションの間にファイルデータの未使用ブロックがあります。ウイルスはこれらの洞窟を探し、その洞窟にコードを書き込みます。その後、ウイルスはセクションのサイズを必要な値だけ増加させます。その結果、ファイルの長さは感染中に増加しません。

十分な大きさの洞窟がある場合、そのコードは1つのセクションに保存されます。そうでなければ、コードをいくつかの部分に分割し、それらをいくつかのセクションの最後に保存します。その結果、ウイルスコードは、感染したファイル内の単一のブロックではなく、断片のセットとして検出される可能性があります。

ウイルスはまた、PEヘッダーの洞窟を探します。長さが184バイト以上の未使用のブロックがある場合、そのスタートアップルーチンがそこに書き込まれます。その後、ウイルスはPEヘッダー内のエントリーアドレスを、ヘッダーに置かれたスタートアップルーチンを指す値でパッチします。これは、 "Win95.Murkry"ウイルスで使用されていたのと同じトリックです。プログラムエントリポイントのアドレスは、ファイルセクションではなく読み込み可能なファイルデータからのファイルヘッダです。これにもかかわらず、感染したプログラムは問題なく実行されます.Windowsは、このような「奇妙な」ファイルに注意を払わず、メモリにファイルヘッダーをロードしてからセクションをファイルし、PEヘッダーのウイルス起動ルーチンに制御を渡します。

ウイルス起動ルーチンが制御を開始すると、PageAllocate VMM呼び出しを使用してメモリブロックが割り当てられ、そこに自身をコピーし、ウイルスコードの他のブロックを探し出し、割り当てられたメモリブロックにコピーします。その後、ウイルスはシステムIFS APIをフックし、制御をホストプログラムに戻します。

ウイルスコードのこの部分で最も興味深い点は、ウイルスがRing3からRing0にジャンプするために非常に複雑なトリックを使用していることです。ウイルスが新たに割り当てられたメモリにジャンプすると、そのコードはRing0ルーチンとして実行され、ファイルシステムコールをフックします(Ring3では、すべてのユーザアプリケーションが実行されます)。

IFS APIウィルス・ハンドラは、1つのファンクション・ファイルのオープンのみを傍受します。 PE .EXEファイルが開かれると、十分な大きさの洞窟があればウイルスが感染します。感染後、ウイルスはファイルの日付をチェックし、トリガールーチンを呼び出します(上記参照)。

このトリガルーチンを実行している間、このウイルスはフラッシュBIOSポートとVxDダイレクトディスクアクセスコール(IOS_SendCommand)に直接アクセスします。

その他の既知のウイルスのバージョン

オリジナルのウイルス作成者は、影響を受けるEXEファイルのウイルスコードをワイルドにリリースしただけでなく、ウイルスソース(アセンブラ)コードもリリースしました。これらのソースコードはパッチが当てられ、再コンパイルされ、新しいウイルスのバージョンが見つかりました。これらのバージョンのほとんどはバグがあり、複製できませんが、他のバージョンは複製できます。それらはすべて元のウイルスに非常に近いですが、いくつかの違いがあります。主な違いは、「爆弾」の日付が変わったことと、新しいウイルスの亜種は、他の日にデータとFlash BIOSを消去するか、このルーチンが呼び出されないことです。

また、「元の」バージョンのウイルスがパッチされているため、他の「爆弾」の日もあります。この理由は、実際にはユーモアがあります。ウイルスは、現在の日と月の数値を2つの定数(2バイト)と比較することで、トリガーの日付をチェックします。これらの定数にパッチを当てることで、ウイルスがコンピュータを破壊する任意の日を選択することができます。


オリジナルへのリンク