Internet Watch logo
記事検索
バックナンバー
(10)Web閲覧だけで感染するウイルス対策を考える
[2004/1/9]
(9)セキュリティ修正パッチ適用のススメ(後編)
[2003/12/19]
(8)セキュリティ修正パッチ適用のススメ(前編)
[2003/12/12]
(7)人間の対策はできているか
[2003/12/5]
(6)サービスの取捨選択を
[2003/11/28]
(5)モバイルPCの危険
[2003/11/12]
(4)LAN内部からの汚染をさせない工夫〜穴になりやすい無線LAN
[2003/10/29]
(3)汚染エリア・クリーンエリア、切り分けのススメ
[2003/10/24]
(2)パーソナルファイアウォールのススメ
[2003/10/15]
(1)Blasterの教訓からウイルス対策を考える
[2003/10/10]

新しいウイルス対策を考える

(1)Blasterの教訓からウイルス対策を考える

TEXT:大和 哲

 今年の8月お盆期間前後にWindows RPCのセキュリティホールを利用するBlasterウイルスや、その亜種ウイルスが流行しインターネットに混乱をきたしたのは記憶に新しいが、また、同じような(あるいはそれ以上に)被害の出るウイルスが流行する可能性が非常に高まっている。というのも、Blasterウイルスが利用したのとほぼ同様のセキュリティホールMS03-039がWindowsに見つかったためだ。

 この新しい欠陥の内容自体は、8月に猛威を振るったBlasterやその亜種ウイルスが利用したセキュリティホール(MS03-026)に近いもので、ウイルスが作られれば、Blasterと同等かそれ以上の混乱を巻き起こす可能性が懸念されている(8月の騒ぎで皆心構えができていて、それほど大きな混乱はないという可能性もあるが)。

 このセキュリティホール「MS03-39」は、Windows 2003 Server/XP/2000/NT4にあり、「緊急」で修正を要するものとマイクロソフトから指定されている。具体的な内容としては、DCOMアクティブ化メッセージを処理するRPCSSに存在する3つの脆弱性で、以下のような外部からのPCへの攻撃が可能になる。

  • ネットワークに接続したマシンに任意のコードをLocal System権限で実行させる
  • Dos(Denial of Service/サービス拒否)攻撃を行なう

 しかも、今回さらに問題なのは学術研究サイトだけでなく、中国などのスクリプトキディ(公開されたスクリプトなどを流用してウイルスなどの攻撃的なプログラムを作る低級なハッカー)によく使われているサイトにも、このOSの弱点を悪用するプログラムのサンプルが転載されてしまっていることだ。警察庁などが「大規模ウイルス発生の恐れ」としているのは、このような現象から判断していると考えられる。

 ちなみに、公開されているサンプルプログラムは、筆者が確認したところ、Windows 2000 SP4(英語版)に「MS03-026」パッチを適用したシステムに対して、バイナリデータを流し、ネットワーク越しのマシンにユーザー名「e」・パスワード「asd321」を作る、というデモになっている。おそらくシステム権限で他のあらゆる種類のコマンドが実行可能になりそうなものだった。

 内容的には、「MS03-039」の3つの欠陥の中から、「\\short\share\longの形の長すぎる文字列をコマンドとしてRPCを利用しようとすると、システムが長さをチェックできず、文字列バッファあふれ(バッファオーバーフロー)を起こす」というものを利用している。

 このサンプルプログラムを実際のウイルスプログラムにするには、ウイルス作者は、ネットワーク上のほかのPCへの感染の実行部分や、Windows起動と同時にウイルスが常に起動するようにする仕掛け、あるいは(必須ではないが、もしそのような動作をさせたいならば)特定の日にパソコン内のデータを全て消去するなど、破壊的活動を行なうルーチンを追加する必要がある。

 とはいえ、マイクロソフトから公表されたセキュリティホール情報だけからウイルスを作り上げるよりは、遥かに簡単にウイルスを作れる状況にあると言ってよいだろう。そのため、夏のウイルス騒動か、それ以上の問題が起きる危険がすぐそこに見える、というのが現在の状況だと言っていいだろう。

 なお、このセキュリティホールに関しては、マイクロソフトから各OS用の修正プログラムが提供されている。マイクロソフトは、Windows Updateを利用するか、マイクロソフトから実行形式の修正パッチプログラムをダウンロードして適用するよう呼びかけている。Windows NT 4.0などは既にサポートが終了しているが、Windows NT 4.0の修正パッチも提供されている。また、Windows XP Home/XP Proの場合は、修正パッチ導入前にSP1(Sp1a)が適用されている必要がある。

□脆弱性「MS03-039」に関する情報(マイクロソフト)
http://www.microsoft.com/japan/technet/security/bulletin/MS03-039ov.asp


Blaster/Welchiaの反省から考えるウイルス対策

 そもそも、前回、Blasterやその亜種がなぜ、社会を混乱させるまでに流行したのか。その原因と対策を考えて、これから登場するかもしれないウイルスに対抗する手段としよう。Blasterは、これまで流行したウイルスとは、違う特徴を持っている。

  • ネットワークに接続しているだけでウイルスに感染する

 ユーザーのアクションを全く必要としない、というのはこれまでのウイルスにはあまりなかった特徴だ。現在までWindowsでは、多くが、メールにファイルが添付される「メールウイルス」であったためユーザーの油断があったかもしれない。また、このBlasterと同様に、ユーザーアクションを必要としないウイルスには「Slammer」があった。Slammerと比較すると、Blasterには以下のような特徴がある。

  • DCOM RPCという、多くのWindowsで動いているサービスのセキュリティホールが狙われた(Slammerの場合はSQLServer、MSDE――デスクトップエンジンなど、多くのWindowsで動いているわけではないサービスが狙われた)

  • マイクロソフトからセキュリティ修正パッチがリリースされてからウイルス発生まで1カ月弱しかなく、多くのPCでセキュリティホールが空いたままになっていた

  • 感染したPCが多かったこともあり、ネットにつないだとたん、あっという間に感染してしまう

 ウイルスプログラムとして、Blasterタイプとメールウイルスのどちらがスマートか、また対策が面倒か、と考えると、これは圧倒的にBlasterタイプのウイルスだ。

 メール添付型のウイルス、さらにさかのぼって実行ファイルに追加されるタイプのウイルスなどでは、ウイルスがPC内に入ったからといって必ず感染するわけではなかった。感染するには、プログラムがなんらかの手段で「実行」されなくてはならないからだ。したがって、PCがウイルスに入ってから実際に感染動作に移るまでの間に、ファイルスキャンなどの方法で、ウイルスが実行されるまでに駆除することができたのだ。

 しかし、Blasterの場合はこのウイルス対策ソフトの使用に頼った「それさえしておけばなんとかなる」というものではなくなってしまった。なぜなら、Blasterは、これまで見てきたとおり、「感染経路をデータが通った時点で、すでにPCがウイルスに感染している」からだ。


ネットに繋いでいるだけで感染する仕組み

 Blasterウイルスの特徴とその仕組みを考え、類似のウイルスにかからないための工夫を考えてみよう。Blasterウイルスの一番の特徴は「ネットに接続しているだけでウイルスに感染する」だが、その仕組みはこうなっている。

【Blasterの動作の仕組み】

 Blasterウイルスは、Windows NT系OSの持っている「RPC DCOMサービス」の欠陥を悪用している。

 DCOMとは、簡単に言うと他のPC上でプログラムを実行させるための手段で、RPC(Remote Procedure Call)という、ネットワークを使ってデータを送ることで、遠隔地にあるPCにネットワーク越しのプログラムを実行させることができる仕組みを利用している。

 PCのネットワークインターフェイスは内部で「ポート」と呼ばれる番号が作られている。このポートの何番には何、というふうにポートとサービスが関連付けられている。たとえば、Windows XP/2000のファイルやプリンタの共有をする「CIFS」はTCPとUDPのそれぞれ445番、もし、Webサーバーを動かしているなら「HTTP」はTCPの80番という具合だ。

 このDCOM RPCを実現するためのRPC サービスプログラムは、TCPの135番で、データの入力を待っている。

ポートの概念図。ポートには0〜65535までの番号がふられており、サービスはポートにデータが入力されるのを待っている

 通常PCは、TCPポート135番にデータが送られると、そのデータの正当性をチェックして、正しい権限を持った命令のみを実行する。しかし、「RPCインターフェイスのバッファオーバーランによりコードが実行される」セキュリティホールのために、ここに特定のデータを入れると、正当性チェックに失敗し、かつこの作業のために使われる領域(バッファ)からデータが溢れ出してしまい、このコードが実行されてしまうのだ。

 このコード中に、ウイルスプログラムの中身である「Windowsコマンドの実行を行ない、tftpコマンドなどを使ってウイルス本体を取り込み、そしてウイルスプログラムを実行する」というような命令が入っているために、Windowsはウイルスプログラムを読み込むと、そのままウイルスに感染してしまい、ウイルスの意のままに操られてしまうのだ。

BlasterウイルスはRPCサービスのセキュリティホールをついて、バッファからウイルスプログラム入りのデータをあふれさせて、PCを感染させる


予防にはインバウンドポートのコントロールが有効

 以上述べてきた仕組みを考えると、このタイプのウイルスにはこれまでにはない、いくつかの特徴があることがわかる。以下に挙げるような特徴はメールウイルスなどにはない特徴だ。

  • 外部からPCのポートへのデータ転送を待ち受けるサービスを利用している
  • そのサービスのセキュリティホールを利用している。

 外部からのデータの受け口があり、かつ、その受け口に欠陥があってはじめて、ウイルスの入り口として利用可能となるのだ。

 これを逆に言えば、この手のウイルスへの感染予防には以下のような対策を施せば良いことになる。

  • サービスを提供しているソフトの欠陥自体を修正する
  • 外部からの危険なデータの流入を遮断する
  • サービスにアクセスできないようにポートを隠す・ふさぐ
  • サービスを止めてしまう

 この中でも、比較的簡単で、効果が大きいのが「ポート隠し」「ポート塞ぎ」だ。インターネット上の他のPCから、ポートが見えない、あるいは使えなければウイルスも感染しようがない。

 また、こうしたウイルス感染の予防には、ソフトの欠陥を修正するというのも1手段なのだが、Windows Updateによってワンタッチでできるものの、タイミング次第では新しいものを適用する機会を逃してしまう可能性がある。つまり、常にタイムリーに手を打たなくてはいけないのだが、ポート隠し、ポート塞ぎなら、一度やってしまえばとくにアップデートなどせずにずっと有効だ、というメリットもある。

 ただし、注意しなければいけないのは、ポートを全く塞いでしまうということは、そのポートを使うアプリケーションを使えなくしてしまう、ということでもある。きめ細かいポートの制御ができない、単純なON/OFFしかできないような場合は、そのポートを塞ぐべきかどうか、よく吟味しなければならないだろう。

 そもそも、先述した通り、RPCのように他のサービスがこれを使っている場合もあり得るので、これらがアクセスできないようになってしまっては意味がない。

 たとえば、RPCは、身近なところでは、Active Directoryにも使われている。ということは、RPCサービスで使うポートを塞ぐ・見えなくする場合、上手に考えてそうしないと、Active Directoryが使えない、というようなことにもなってしまいかねない。


外部からの感染を防ぐために、ルータ設定を見直す

 Active Directoryに限らず、ファイル共有、プリンタ共有など、Windowsのネットワークには、自分のネットワーク(たとえば、職場ならその職場、自宅なら自宅)の外、特にインターネットから利用するようなことはあまりない。それなら外部であるインターネットとの接続口でルータなりファイアウォールをかませてやればいい、ということになる。少なくともインターネットから、ネットワーク内部のパソコンがBlasterタイプのウイルスに感染させられることはないはずだ。

 Blasterタイプウイルスの感染予防策その1としては、まずネットワーク内部のPCが、インターネットからBlasterタイプのウイルスに感染しないように、ルータのポートフォワード機能を見直そう。現在は家庭でも、フレッツなどでPPPoEを使うために、ブロードバンドルータを導入している場合が多いはずだ。

 ブロードバンドルータには外部からのネットワークをどのように内部に転送するか、設定する、ポートフォワード設定などのアクセス制御機能を持っている。そこで、それを使ってウイルスの侵入を防ぐわけだ。

 どのような設定ならよいのかいうと、たとえば、普通、工場出荷状態のルータでは、単純にNATやIPマスカレードを使って、インターネットからの接続を割り振っている。この場合、普通、外部から見えるポートはない(製品によっては、Webに使われるTCP80番ポートやtelnetに使われるTCP25番がルータ自身のネットワークインターフェースにフォワードされている場合があるが)。

 ただ、これだけでは、通常、(FTPを除いては)全ての通信が手元のPC(クライアント)がサーバーにデータを取りに行く、という方向でしか通信できない。メッセンジャーや、ネットワークゲーム、P2P技術を使ったソフトなどサーバーからPCへ呼びかけ、通信というプロセスが必要になる用途には、それようにインターネットからPCのポートを叩けるように、ポートフォワーディング、いわゆる「ポートを開ける」設定が必要になる。

 ここで、利用するソフトそれぞれに合わせて必要なだけポートを開けておくのが正しい設定のやり方だ。これならば、そのポートでデータを受け取りソフトにセキュリティホールがない限り、安全だ。少なくとも、今回のBlasterウイルス騒動のように意識しないサービスのセキュリティホールを突かれて感染する、というようなことにはならない。現在市販されている多くのルータでは、主要なアプリケーションなどではワンタッチでネット内の特定のPCにポートを開けられるようになっている。設定自体はそれほど面倒ではないはずだ。

筆者の仕事場のインターネット接続に利用しているBBルータ「BRL-04FM」の設定画面。ここではインターネットラジオ「peercast」を利用するためにTCP/UDPポートの7144番を「siogohan」に振り向ける設定にしている。このように不要なポートを使わず、必要なポートだけ外部から叩けるようにするのが、ルータ設定の基本だ

 問題となるのは、ポート全開の状態でDMZ領域にPCが接続されていたり、全ポートが特定のPCに転送されていたり、というような場合だ。どうも、「それほど面倒でもない」はずの設定なのだが、アプリケーションに応じて毎回ポートを開けるのが面倒なのか、このような設定をしている場合があるようだ。

 しかし、これではネットワークの1台がインターネット上に放置されているのと同じ状態で、しかもこのマシンからはネットワーク内部のマシンが見える、というウイルス感染には最悪の環境ができてしまう。ルータがこのような設定になっていないかどうかを見直そう。

 実際、筆者はお盆のBlasterウイルス騒ぎでは、ネットワークゲームのヘビープレイヤーが、ゲームの用のマシンをDMZ領域に置いてプレイしていたため(しかも、部屋内には3台のPCがあった)、Blasterウイルスに感染したゲーム用マシンから、部屋内の3台のPC全てがウイルス感染した、という例を聞いた。

 なお、(予防としてはあまり意味がないが)、既にウイルスの流行が確認されている場合、アウトバウンドのアクセス制御を行ない、ウイルスが使うポートを塞いでしまえば、万一、自分のネットワーク内にウイルスが入ってしまった場合、他のネットへ波及するのを防ぐことができる。会社のネットワーク管理者であれば、もしウイルスの流行を聞いたら、すばやくこのあたりの設定をできるようにしておくのも、危機管理の手段としては考えておく必要があるのではないだろうか。

 ルータでアクセス制御を正しく行なえば、外部のネットワークから内部のマシンが感染させられるのは防ぐことはできる。しかし、ウイルスの感染ルートはこれだけではない。

 たとえば、なにかの都合で持ち運んでいるノートPCをネットワークに接続したら、実はこれがウイルス感染していて、ネットワーク中のPCに感染させてしまう、ということがありうる。いわば、内部からのウイルス感染で、このような場合にはルータによるポート遮断は無力だ。内部感染の場合、ネットワークへの出入り口を管理するような「壁」を作ることができない。

 あるいは、たとえば、Air H"や@FreeDなどPHSを使ったモバイル通信では、ルータなどを経由せずに、直接インターネットに接続するため、ルータを経由しないでインターネットに接続することになる。つまり、ルータでの予防自体ができないことになる。

 となれば、ウイルス感染を防ぐには、個々のマシンにウイルス対策をしておかなくてはならない。

 そこで、筆者はBlasterウイルスのもうひとつの対策として、パーソナルファイアウォールの利用を勧めたい。そこで次回は、そのあたりについて取り上げていきたい。

(2003/10/09)
関連情報

関連記事
爆発的流行の兆し? Blasterウイルス対策マニュアル(2003/08/13)
Windowsの重大な脆弱性を攻撃するウイルスを危険度を上げて警告(2003/10/12)
WindowsのRPCに任意のコードを実行されてしまう深刻な脆弱性(2003/07/17)


大和 哲
1968年生まれ東京都出身。88年8月、Oh!X(日本ソフトバンク)にて「我ら電脳遊戯民」を執筆。以来、パソコン誌にて初歩のプログラミング、HTML、CGI、インターネットプロトコルなどの解説記事、インターネット関連のQ&A、ゲーム分析記事などを書く。兼業テクニカルライター。ホームページはこちら
(イラスト : 高橋哲史)

- ページの先頭へ-

Internet Watch ホームページ
Copyright (c) 2003 impress corporation All rights reserved.