SSブログ

Computer Virus(月刊ASCII 1988年11月号5) [月刊アスキー廃棄(スクラップ)]

この号には前号Computer Virus(月刊ASCII 1988年10月号5)の続きでコンピュータウイルスについてのレポートがあった。
なお、ウイルス記事はウイルス,ソフトウェア(月刊ASCII 1988年8月号3)が初めてでこの記事が3回目である。
ASCII1988(11)d01Virus_W520.jpg
コンピュータ・ウイルスの定義
 コンピュータ・ウイルスが何物なのか,まず,そのあたりから話を進めよう。実在論争が加熱している欧米でも,ウイルスの明確な。定義はないようだ。どのような動作をして,その結果,どのような被害を与えるプログラムをコンピュータ・ウイルスと呼ぶのか,いきなり定義をしてみようと思う.無謀な試みだが,ウイルスの実体が明らかになっていないだけに,一部の報道では,その意味を拡大解釈している側面もあるような気がする.こうした拡大解釈は,対象の絞り込みを困難にしてしまい,ウイルスの撲滅に際して混乱を招きかねない.ユーザーの意図しないイリーガルな動作をするプログラムの総称をウイルスと認定してしまうには,まだ時期尚早だ.明らかに悪意で作られた“真性ウイルス”が存在することは,認めざるを得ない.しかし,その実体はまだ解明されつくしていないのだ。
 ある日,コンピュータが不安定な動作をして,プログラムやファイルを破壊してしまう.こうした現象は,年季を積んだユーザーであれば一度や二度は経験している.また,他人に仕掛けられたウイットに富んだメッセージ・プログラムに驚いたユーザーも,多いことだろう.これらの経験は,コンピュータ・ウィルスという造語が生まれていなければ,言い方は悪いが,もっと平静に受け入れられる事態であるはずだ。
 われわれが留意しておきたいのは,例えば,あるプログラマが平和のメッセージを全世界のユーザーに送ろうと考えて、メッセージ自体をほかのフロッピーディスクやシステムにコピーするプログラムを開発した場合だ彼のプログラムは勝手にコピーを繰り返して広範なユーザーに行き渡り,あるユーザーのところでは,偶然に同じメモリを利用しているプログラムを破壊してしまうかもしれない.これを,ウイルスと呼ぶのか,それとも,従来からあった単なるメッセージ・プログラムと片付けて,同じメモリエリアを使っていたのだから仕方ないとあきらめるのか。こうした判断が,コンピュータ・ウイルスというプログラムにはつきまとうような気がする.もちろん,プログラムやシステムを破壊してやろう,という意図のもとに作られたプログラムもあるだろう.それを特定していくことが,今後の重要な課題であることに間違いはない.さっそく無謀な試みをしてみよう.
 欧米で喧伝されているコンピュータ・ウィルスの多くは,以下に示す3点の特徴を持っている.
(1) アプリケーション・ソフトやOSなどのプログラムに組み込まれていて,自分自身やその分身を,ほかのアプリケーション・ソフトトやOSにコピーする.いわゆる自己増殖性がある。
(2) ウイルス本体やその分身は,自己増殖過程で特定のメモリエリアにコピーされるために,同じエリアを使っているプログラムに遭遇すると,オーバーライトしてしまう結果,そのプログラムを破壊するか,正常に動作しない状態にしてしまうことがある.いわゆる破壊行為を伴うことがある.
(3) これらすべての処理は,ユーザーが意図していないレベルで行われる.
 これ以外にも,細かい症状が報告されているが,大同小異なので割愛する.この定義はおおまかなもので,合致しないコンピュータ・ウイルスがあるかもしれない.ただし,自己増殖するという点は,必要最低限の条件として挙げておくべきだろう.自己増殖は,ユーザーが自覚していないレベルで行われる処理だから,定義から削除することはできない.しかし,破壊行為を伴うという点については,「メッセージを表示するだけで破壊行為は伴わないというコンピュータ・ウイルスもある.そうなると,ほかのプログラムの動作に影響を与えない限り(そんな確証は得られるかどうかは分からないが),これをウイルスの定義に入れることは難しいかもしれない.
 どちらにしても,こうした定義には多少の問題が残る。前述のように,開発者が破壊を目的としていないのに,破壊してしまう場合があるからだ。しかし,意図しているか,いないかという見当は,なかなか付けられないのが世の常だ。ともあれ,自己増殖という要素が,“ユーザーの意図していないメモリエリアの侵食”であることを考慮すると,自己増殖自体を破壊行為と見なすことが可能かもしれない。

34年前はウイルスの定義から語らなければならなかったのか。いくらユーザが望んでいない動作と言ってもOSやアプリが起動時に「Merry Christmas」と表示するものまでウイルスとは言えないし、バグをウイルスと言えない。ユーザに知られずネットにアクセスするような動作をすると言ってもブラウザが先読みしたりしてもウイルスとは言えない。線引きは微妙だが、ユーザが害を受けたと主張するならばそれはウイルスと言っても良いと思う。ただPC-9801のneko.comという常駐ソフトがあったが、そのワークエリアを他の常駐ソフトがPC-9801,MS-DOSの未使用エリアを利用すると被り誤動作したことでマスコミ関係者がneko.comはウイルスだと言ったことがあった(ググってもでてこない。私の記憶のみ)。それはneko.comのreadmeテキストには使用上の注意があったのにそれを読んでいないという批判をされたという記憶がある。当時はなんでもかんでもウイルスだと騒いだいたかもしれない。
悪名高いウイルス
 前回の本稿でも明らかなように,欧米で報告されている悪性ウイルスには、名前が冠せられ,ユーザーに警告が発せられている.
 代表的なところでは,AmigaのSCAウイルスと,その改良型であるByte Banditウイルス,MacintoshのScoresウイルス,Sneakウイルス,nVIRウイルスなどである.IBM PCにもDOSのブートブロックに自らをコピーしていくブートブロック・ウイルスというタイプがあるが,固有の名前は編集部ではつかんでいない。これら悪性ウイルスのうち,もっとも研究・解析が進んでいるのが,Byte BanditウイルスとScoresウイルス,そしてnVIRウイルスである。
 編集部では,これらのうち,SCAウイルスとnVIRウイルスを入手した.対応しているAmigaとMacintoshは、どちらも独特のシステム環境を持つマシンであるため,MS-DOSユーザーにとってはウイルスの典型例にならないかもしれないが,今回は,欧米でもまだ完全な解析報告が公開されていないnVIRウイルスの詳細をレポートする.

ウイルスの発生と研究ではMacが先行していたのか。昔は、ウイルスの数も少なかったのでウイルスの解析記事があったことは記憶にある。確か技術評論社の「ざべ(The BA
SIC)」でウイルスの開発記事があたはずだが、雑誌は処分してしまって確かめようがない。

Macintoshで猛威をふるうnVIRウイルス
 編集部が入手したnVIRウイルスは,Macintosh(以後,Macと省略)用のプログラムに感染・増殖して,システムやアプリケーションを破壊する.国内への侵入経路は,海外のデータベースからダウンロードしたPDS(パブリック・ドメイン・ソフトウェア)が感染母体となって,ユーザー間のコピーによって増殖しているらしい.
 nVIRウイルスは、いたってシンプルな構造を持っている.だから,あらかじめ設定した時間に活動を開始するような複雑な機能(一部では,こうしたウイルスを時限爆弾:Time Bombと呼ぶ)はなく,特定のアプリケーションだけに感染するといった指向性もない.欧米では典型的なコンピュータ・ウイルスである.
 nVIRウイルスは,ひとたび感染すると,“nVIR"と呼ばれるこのウイルスに固有のリソース(囲み記事を参照)をシステム・ファイルや,アプリケーション・ファイルに次々とコピーしていく.nVIRという名前は,ウイルスが他のファイルにコピーするリソース名に由来している。
 ウイルスの仕組みを簡単に説明すると,次のようになる(図Aを参照).ちなみに,このメカニズムは,ほとんどのウイルスに共通している。
 まず初めに,nVIRウイルスに感染したアプリケーションが,正常なシステム環境下で実行される.すると,アプリケーション内のウイルスも同時に実行され使用中のシステム・ファイルに感染する(図A-1を参照).
 その結果,次のシステム起動時から,システム・ファイル内のウイルスもメモリに常駐する(図A-2を参照).この状態で,なんらかのアプリケーションが起動されると,ウイルスはアプリケーション内のnVIRというリソースの有無を確認する.そして,もしnVIRリソースが発見できなかった場合は,アプリケーションに自らのプログラムコードを含んだnVIRリソースをコピーする(図A-3を参照).
 以上の繰り返しによって,nVIRウイルスは自己増殖を続ける.

自己増殖=破壊行為?
 このタイプのウイルスでは、ファイルにリソースをコピーするという行為自体が,破壊につながりかねない危険性を含んでいるため,自己増殖=破壊行為という非常に効率的(?)な活動をしていることになる.第1の直接的な被害は,ディスクの使用量の増加である.
 さらに,ウイルスが活動し続けると受けるであろう被害と,nVIRウイルスの詳細については後述することにして,その前に,MacのOS環境をMS-DOSとの比較で簡単に理解していただきたい.
 前述のシステム・ファイルの最小限の構成は,Systemと呼ばれるファイルと,Finderと呼ばれる2つのファイルである.SystemファイルとSystemファイルは,MS-DOSのMSDOS.SYS,I0.SYSに,Finderは,COMMAND.COMに,それぞれ相当するものと考えると理解しやすい.Macで発見されているウイルスの多くは,感染に際してSystemファイルとFinderファイルを最初に狙うようだ。

nVIRウイルスの実態は?
 さっそく、nVIRにメスを入れてみよう。まず、図1を見ていただきたい。これはnVIRウイルスに感染したFinderファイルと正常なFinderファイルをResEdit(注1)で開いているところである.左側の正常なFinderファイルには見られないnVIRというリソースが,右側の感染しているFinderファイルには存在していることが分かる.このnVIRには,ID=1からnまでの数があって,nは感染の度合によって不定である。1度目の感染では、ID=1からID=7までの7個のnVIRリソースが作られるが,その後は時によって異なる数が与えられるようだ.nVIRのID=1(図2を参照)には,ウイルスの本体にあたるプログラムが存在している.ちなみに,nVIRというタイプのリソースが存在しているだけでは,そこに制御が移されないため,ウイルスは活動しない.
 図3に示したのは,同じFinderファイルのCODEリソースを比較しているところである。感染しているFinderファイルにはID=256というリソースがあるが(図の右側のウィンドウ),正常なFinderファイルには,そのようなリソースはない.図4を見ると,このCODEリソース中にnVIRという文字列が存在していることが分かる.
 実は,このCODEリソースにはnVIRのID=1と同様のコードが存在している.つまり,ウイルス本体が格納されていることになる.この本体が,Finderファイルの起動時にSystemファイルを探し出してnVIRをコピーし,正常なSystemファイルには存在しないID=32というINITリソースをSystemファイル中に作成する.しかし,単にアプリケーションのCODEリソースをINITリソースに加えただけでは,そのCODEリソースがプログラムコードとして実行されることはない.このためウイルスは,アプリケーションが本来持っているID=0のCODEリソースに手を加え,自ら付け加えたCODEリソースに制御を移すように改変してしまう.
 Systemファイルに作られたINIT ID=32というリソースは,CODEリソースのID=256と同様の内容になっている.INITリソースの場合は,その他のリソースに手を加えなくても,そのままプログラムコードとして実行されるため,ウイルスにしてみると,アプリケーションに感染するときのように,本来持っているリソースに手を加える必要がないしわけだ.
 それ以後に,このSystemファイル下で起動したアプリケーションには,Finderファイルに作られたのと同じID=256のCODEリソースとnVIRリソースが作成される.以上のようなプロセスを踏んで,nVIRウイルスは自己増殖をしていく。ちなみに,解説中でFinderと記した部分を,そのままアプリケーション・プログラムに置き換えれば,感染する相手はアプリケーションということになる.


ASCII1988(11)d02Virus図A-1_W520.jpg
ASCII1988(11)d03Virus図A-2_W520.jpg
ASCII1988(11)d03Virus図A-3_W520.jpg
ASCII1988(11)d04Virus図1_W520.jpg
ASCII1988(11)d04Virus図2_W520.jpg
ASCII1988(11)d05Virus図3_W520.jpg
ASCII1988(11)d05Virus図4_W520.jpg
解説を読んでもファイルがどのように書き変わるのかは分かったが、それだけだった。

臨床実験の結果は?
 編集部では臨床実験として,nVIRウイルスに感染しているSystemファイル下で,感染していないTeachTextというエディタ・プログラムを起動してみた。すると、1度目の起動でTeachTextは感染し,正常時に約19Kbytesあったファイルのサイズが,約23Kbytesと約4Kbytesも増えた.次に,感染「したばかりのTeachTextを,正常なSystemファイル下で起動したところ,1度目でSystemファイルに感染し,約258Kbytesだったファイルのサイズが約262Kbytesに増えてしまった.この状態から再起動を行ったところ,今度はFinderファイルに感染し,同様に約4Kbytesほどファイルのサイズが肥大した。

最悪の被害はプログラムの破壊!
 前述のように最初の実害は,ファイルサイズの肥大ということになる.ある日,気づくとシステム・ファイルの容量が2倍になっているわけだ。そして,もっと深刻な第2の被害は,アプリケーションが必要としないリソースが勝手に加えられることや,本来持っているリソースにも改変が加えられて、正常に動作しないアプリケーション・プログラムが出てくるというものである.
 また,CODEリソースのID=0が改変されるために,感染してしまったアプリケーションから,nVIRによって追加されたリソースだけを抜き出した場合は,そのアプリケーション(または,システム・ファイル)を正常に起動することが不可能になってしまう.

感染を未然に防ぐ方法はあるのか?
 nVIRウイルスで注目されるのは(つまり弱点は),Systemファイルに作成されるものはINITリソースだけで,アプリケーションでINITリソースを持たないものには,CODEリソースが作成されるという点である.つまり,アプリケーションに作成されたCODEリソースは,常にSystemファイルを狙い,INITリソースを作成しようと試みるわけだ.
 この点に注目すれば,nVIRウイルスに感染しているアプリケーションが,外部から正常なSystemファイルを汚染する瞬間を捕捉することが,十分に可能であることが分かる.具体的には、データベースを通じて,無料で配布されている「Vaccin」というワクチン・プログラムを使用していれば,nVIRウイルス。が汚染を開始したところで,警告をしてくれる.場合によっては,システム・エラーが発生してMacはハングする.それでも結果的には,nVIRウイルスの侵入を食い止めることになる.Vaccinを持っていない場合の対処方法は,ちょっと難しい.
 nVIRウイルスは、感染したアプリケーシションが起動するたびに,SystemファイルにnVIRリソースを付加しようとするので,Systemファイルが常に更新されるという特徴が現れる.また,Macは,システム起動時に必ずFinderファイルを立ち上げるため,感染の結果Finderファイルに作成されたCODEリソースによって,ファイル作成日が更新されてしまう.こうした特徴に注意すれば、アプリケーションを起動する前にSystemファイルの日付を見れば,感染したファイルの最終変更日時(Last Modified)が,起動直後の時間になっていることに気づくはずだ.SystemファイルのLast Modifiedの日付に気をつけていれば,ユーザーは,nVIRウイルスが侵入していることに気づくことができる.しかし,それだけでは未然に防ぐというわけにはいかない.
 また,nVIRウイルスは,Robert J.Woodheadが開発したワクチン・プログラム「Interferon」(Ver.1.2以上)を使って発見し,同時に汚染されたファイルの削除も行える.Interferonは,その他のワクチン・プログラムと同様に,データベースのPDSライブラリを通じて,無料で配布されている.

nVIRウイルスのプログラムを公開するべきか?
 編集部では,nVIRウイルスのプログラムリストを抽出することにも成功した.本来であれば,プログラムリストも掲載したいところだが,今回はあえて公開を控えることにしたいまだに,全貌を完全に把握していない点,どのような影響が出てくるか判断できない点などを考慮すると、読者諸氏の理解も得られると思う.同種のウイルス開発のヒントにでもなると,その影響は計りしれない.こうした悪性ウイルスの開発者には,仮に愉快犯であったとしても怒りを禁じ得ない.こうしたプログラムを開発して,いったいどのようなメリットがあるのだろうか。仮に,プログラミングの研究だとしたら,もっと有効なユーティリティの開発に時間を費やす方が,あらゆる点で生産的ではないだろうか.・これ以上のレポートは,悪性ウイルスの開発者の虚栄心をくすぐるだけのような気がする.ウイルス開発者の多くは,アセンブリコードのハッカーとして名声を博そうとしているかもしれないが,ウイルス開発者たちには、米国のAmiga UserInternational誌がいみじくも吐露している言葉を献上したい.「Why go to all that trouble just to prove to the world that you're a prat?」(自分がアホだということを証明するために,どうしてこんな騒ぎを起こすんだ?).
 もし、読者諸氏の中で,Macに限らず,ウィルスに感染したプログラムをお持ちの方は,編集部まで御一報されたい.ウイルスの傾向と対策を知ることによって,いつ感染するかと気に病むような事態だけは回避しなければいけない.


注1 ResEdit…リソース・エディタの略.リソースを追加/変更/削除することができるツール.そのリソースタイプに最適なエディット環境を提供する機能を持つ。
34年前はパソコン通信を使う先進的なユーザ以外はなかなかウイルスに感染しなかった。ただ、コピーソフトを使っている人の中にはもらったコピーソフトがウイルスに感染していたことがあり、それで伝染した。いわゆる接触感染だ。そのたとえで言えば、インターネット時代にソフトをダウンロードして感染するのは飛沫感染で、ネットサーフィンして感染するのは空気感染と例えられると思う。

コラム記事をスクラップする。
MacのOS環境とMS-DOS
 Macのファイルは,TYPEとCreatorという12種類の識別子を持つ(図を参照)。これらの識別子は,4文字の英数記号で表され,MS-DOSの拡張子と,似た性格を持つ.
 TYPEは,そのファイルの種別を表し,通常の実行形式のファイルならば,APPLというTYPEを持つINITやcdev,RDEVといったTYPEのファイルは,System Folderに入れておくだけで、自動的に読み込まれ,実行される.こうしたシステムの仕様を利用して,プログラムをメモリに常駐させることができる.
 これはMS-DOSで,デバイスドライバファイル(日本語入力FPなど)をCONFIG.SYSに登録しておくことで,利用可能になることと似ている.これらのタイプのファイルは,ウイルスプログラムに頻繁に利用される.「ちなみに,INITタイプのファイルは、システムのイニシャライズを行うプログラムで、cdevは,仮想デバイスとして扱われるデスクアクセサリ(DA)の一つであるコントロールパネルから利用できるモジュールプログラム,そしてRDEVは、デバイスドライバの一種である。
 Creatorは、そのファイルが何に属するかを表しており,アプリケーション・プログラムには,各々固有のCreatorが付けられている.例えば,あるワープロソフトのCreatorが,MSWDであるとすると,そのワープロで作成された文書ファイルのCreatorは、MSWDとなる。
 TYPEとCreatorには,INITファイルなどのように,システムに対して特別な意味を持つものがある.特に,TYPEがZSYSで,CreatorがMACSとなっているものは,システムに直属のファイルであることを示し,Scrapbookなどが代表的なものである.システムに直属のファイルも、ウイルス・プログラムのターゲットになることが多い。
 Macのファイルは,データフォークとリソースフォークの両方,あるいは片方から構成される.これは、MS-DOSとは大きく異なる部分である。
 データフォークは、まったく自由なフォーマットからなる純粋なデータの集合体である.そのデータを利用するアプリケーションに,データフォーマットは一任されている.
 リソースフォークは、プログラムを構成するコードの集合体である.アプリケーションプログラムは,最低1つ以上のリソースを持つことになる.リソースは、4文字からなるリソースタイプに分類されており,リソースタイプには,システム全体に共通で特定の意味を持つものと,そのアプリケーションに固有のものの2種類がある.リソースは1つのファイル内に,同じタイプのものが複数存在することが可能で、IDナンバーで管理される.同一のアプリケーション内でも,リソース間の参照は、リソースタイプとIDを用いて,OSを介して行わなければならない。例えば,CODEというタイプのリソースは、実際に実行されるプログラムコードであり,FONTは、画面に表示される文字の形状を保持しているリソースである.
 また,リソースには,システム全体で共通に使用するシステムリソース(System resource)があり,ウィンドウやボタン類,カーソルの形状などは,特にアプリケーション内のリソースで定義されていなくても,システムリソースが使用されるようになっている.もし,アプリケーション内で,システムリソースとして用意されているものと,それ以外のものを使い分ける場合には、そのシステムリソースと同一のIDを用いて定義する.
 ファイルタイプは,前述のように,そのファイルの種別を表しているだけであり,そのファイルの種別に適合した内容を保証しているわけではない、実行形式のアプリケーション・プログラムではなくても,なんらかの形でプログラムとして利用されるTYPEのファイルには,そのタイプに最低限必要とされるリソースがある.そうしたリソースが,すべてそろっているかどうかは,プログラムの作者が保証しなければいけない。言い換えれば,必要なリソースさえそろっていれば,他にどのようなリソースがあろうと,システムは関知しないわけだ。こうした隙を狙っているのがコンピュータ・ウイルスというわけである.プログラムとしての意味を持つのは,あくまでリソースであることを頭に置いておくと,本文の理解が早まる.


ASCII1988(11)d02Virusコラム図_W344.jpg
Macユーザじゃなかったのでリソースフォークという用語は全く知らなかった。この点MS-DOSのファイルは自由だな、拡張子だけだから偽装し放題だよな。
Macのウイルスの近況
 Macのウイルスの近況について,簡単に触れておこう。
 現在,その存在が知られている代表的なウイルスには,次のようなものがある.
(1)Scoresウイルス…このタイプのものは,System FolderにSCORESという見えないRDEVタイプのファイルを作成し,アプリケーションやシステム関連のファイルを破壊する.感染したアプリケーションは,その時々によって出現する症状が異なるが,使用中にSystem Errorが続発したり,正常に起動できなくなったりする.もっとも増殖性が強く,症状も顕著であると言われている.
 System Folderとは、本文中で触れているシステム関連ファイルが収められた特定のディレクトリのことである.このフォルダに収められているいくつかのタイプのファイルは,起動時に自動的に実行される.
 RDEVタイプのファイルとは,システム起動時に,実行されるファイルに該当する。
(2)Sneakウイルス…詳細は不明だが,Scoresウイルスと同様に,System Folder内のSystemファイルに(ScrapbookやNote Pad Fileなど)に自らのプログラムコードをコピーし,ファイルタイプをZSYSからINITに変更してしまう.このウイルスによる実害が,どのようなものかは不明。ちなみに,sneakとは“こそこそと隠れる”などの意味を持つ.
(3)nVIRウイルス…今回,編集部が入手したウイルス,シンプルな構成で、感染症状が顕著に出ない、その半面,通常にMacをオペレーションしているときに,異常に気がつくことは難しい。
 ここに名前を挙げたウイルスは,すべて悪性と認識されており,一度ハードディスクドライブなどの大容量記憶メディアに感染したら,取り除くことは非常に困難である.ワクチン・プログラムやResEditなどを用いて,感染したファイルからウイルスのリソースを取り除き,書き換えられてしまったリソースを正しいリソースと取り替えるなどの手段で,取り除くことは可能である.もっとも無難な対処方法は,ハードディスクをいったんフォーマットして,各アプリケーションをフロッピーディスク上で検査し,再度,ハードディスクにインストールすることだ。

ウイルスの進化はMacが早かったようだ。コラム記事を読むとその後のウイルスと同じくらい悪性だった。


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。