Windows のトロイを発見する

このサイトは基本的に Linux ユーザー向けに書いているのですけど、ネットワークがらみの話が多いので、他のOSユーザーもよく見てくれているようです(Mac ユーザーはあまり見てないけど(T_T))。ありがたいこっちゃ。たしかに自分ちも、Linux, FreeBSD が基幹を担っているとはいえ、娯楽系端末はたしかに Windows。こないだ買ったノートも Me 入れてるし。会社の開発は NT だし。で、実際、どんなにセキュリティ固めても Windows の存在自体セキュリティホールだったりもするので、Windows に関してもちっとは書いとこうかな、というわけ。そんな詳しくないけど。

IIS とかについては一般的なことしか知らないので、あくまで端末としてのお話に限定するので悪しからず。主にトロイ関係で。生でADSLモデムやCATVモデムに繋いでるヒトにも多少役に立つでしょう。ホストがいたずらされてないかチェックの手順を書いてみましょ。


■ お手軽コース ■

ウィルス、バックドアの発見にはウィルス駆除関係ツールを導入するのが定石。有名どころにはほぼ確実だが、必ずしも完璧ではないことに注意!発見できない場合もある。また、常に最新のウィルス定義ファイル(メーカーによって呼び名は違う)を取り込んでおかないと意味がない。最近のウィルスやワームなどはレジストリをいじくるのが多いので、定義ファイルをとりこむたびに再起動させられるので腹が立つのもイケナイ。ついサボってやられたりする。

どれを入れるかは勝手。一応、自分は以下のを使ってます。他は知らん。

  • Sophos Anti Virus
    これは Linux に入れている。タダだから、他にないからという理由。バージョンアップが早いので結構大変。タダでバージョンアップするにはその度にサインアップしなければならない。まあ、Linux ホストには気を使ってるので、気休め程度。


  • Norton Anti Virus
    まあ、これでいいんでないの、というカンジ。ウィルス定義のダウンロードがらみでセキュリティホールが見つかったことがあるが、大きな問題ではなかった。


  • McAfee ウィルススキャン
    シェアNo1 というフレコミにのせられて導入したが、よく考えたら最初から勝手にバンドルされてることが多いからなのだと気づく。もう遅い、あまり使いやすくない。
いま一度、「発見できない場合もある」これを忘れないように!


■ 気合いコース ■

気合は要るが定期的に行うとよいことを挙げてみる。またこれはウィルス駆除ツールだけでは心配な時にも有効。

◎ネットワーク利用状況確認

スタートメニュー --> コマンドプロンプト

C:\>netstat -a

と打つ。以下はあるホスト(Windows NT4.0 ホスト名:hoge)で実行したものである。これで、通信状況が確認できる。不正な通信やバックドアが仕掛けられていれば確認できる。
C:\>netstat -a 

実行結果

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    hoge:80               0.0.0.0:0              LISTENING
  TCP    hoge:135              0.0.0.0:0              LISTENING
  TCP    hoge:135              0.0.0.0:0              LISTENING
  TCP    hoge:500              0.0.0.0:0              LISTENING
  TCP    hoge:1026             0.0.0.0:0              LISTENING
  TCP    hoge:1028             0.0.0.0:0              LISTENING
  TCP    hoge:1029             0.0.0.0:0              LISTENING
  TCP    hoge:1037             0.0.0.0:0              LISTENING
  TCP    hoge:1038             0.0.0.0:0              LISTENING
  TCP    hoge:2425             0.0.0.0:0              LISTENING
  TCP    hoge:2766             0.0.0.0:0              LISTENING
  TCP    hoge:2989             0.0.0.0:0              LISTENING
  TCP    hoge:2990             0.0.0.0:0              LISTENING
  TCP    hoge:2992             0.0.0.0:0              LISTENING
  TCP    hoge:3328             0.0.0.0:0              LISTENING
  TCP    hoge:bnews            0.0.0.0:0              LISTENING
  TCP    hoge:137              0.0.0.0:0              LISTENING
  TCP    hoge:138              0.0.0.0:0              LISTENING
  TCP    hoge:nbsession        0.0.0.0:0              LISTENING
  TCP    hoge:pop3             0.0.0.0:0              LISTENING
  TCP    hoge:1025             0.0.0.0:0              LISTENING
  TCP    hoge:1025             localhost:1026         ESTABLISHED
  TCP    hoge:1026             localhost:1025         ESTABLISHED
  TCP    hoge:1027             0.0.0.0:0              LISTENING
  TCP    hoge:1027             localhost:1029         ESTABLISHED
  TCP    hoge:1029             localhost:1027         ESTABLISHED
  TCP    hoge:1036             0.0.0.0:0              LISTENING
  TCP    hoge:1036             localhost:1038         ESTABLISHED
  TCP    hoge:1038             localhost:1036         ESTABLISHED
  TCP    hoge:2797             0.0.0.0:0              LISTENING
  TCP    hoge:2952             0.0.0.0:0              LISTENING
  TCP    hoge:137              0.0.0.0:0              LISTENING
  TCP    hoge:138              0.0.0.0:0              LISTENING
  TCP    hoge:nbsession        0.0.0.0:0              LISTENING
  TCP    hoge:1308             0.0.0.0:0              LISTENING
  TCP    hoge:1308             XXXXXXXXX:nbsession    ESTABLISHED
  TCP    hoge:2766             XXXXXXXXX:5902         ESTABLISHED
  TCP    hoge:2989             www.geocities.co.jp:80  CLOSE_WAIT
  TCP    hoge:2990             www.geocities.co.jp:80  CLOSE_WAIT
  TCP    hoge:2992             XXX.XXX.XXX.XXX:80     ESTABLISHED
  UDP    hoge:135              *:*                    
  UDP    hoge:sytek            *:*                    
  UDP    hoge:2425             *:*                    
  UDP    hoge:rscs0            *:*                    
  UDP    hoge:nbname           *:*                    
  UDP    hoge:nbdatagram       *:*                    
  UDP    hoge:2797             *:*                    
  UDP    hoge:2952             *:*                    
  UDP    hoge:nbname           *:*                    
  UDP    hoge:nbdatagram       *:*                    
さて、上の結果からいろいろなことが分かるのだが、話を簡単にするため、ここではトロイの木馬が仕掛けられていないかどうかだけに注目する。注目するのは Local Address の hoge:XXXXX の XXXXX 部分。これはこのホストが他との通信に使う(鯖の場合は「待ち受けている」)ポートを表している。この中に不審なものがないか片っ端から調べる。ただし、Foreign Address が localhost あるいは心当たりのあるものについては対象外にしてよい。

でもいちいち調べながら見ていくのは大変なので、できれば健康な Windows での実行結果があれば、それと比較できて多少楽になる。なければ仕方ない。ちなみに上の結果出した Windows は健康である(たぶん...でも自分のじゃないからなあ)のでこれを使えばよい。おいおい、トロイのデフォルトポートがいくつかあるじゃん!と思った方。スルドイですな。そうです。この環境では正規のツールや駆除ツールが監視のために使っているのですが、それをトロイとどうやって見分けるか。そこが難しい。というわけで、楽にチェックする方法〜!。

つまりクラッカーと同じことをすればよいのです。ポートスキャンです。これでへんなモノが引っかかってこなければよいのです(でも netstat 結果を読むのも大切なんだかんね)。


◎ポートスキャン

★ツール(ポートスキャナー)

Linux では nmap が一番です。当然愛用してますが、ここでは Windows のを紹介。ウチでは Super Scan を使ってます。なんといっても使いやすいです。 FOUNDSTONE  ここ から入手。

インストールは言うなりになっていればよいでしょう。使い方は省略。対象ホスト自身上で実行してもよし。絶対他人のホストに向けないように!最近はそれしきで捕まるかもよ。

これで見知らぬサービス(これはよく調べること!自分が知らないだけで問題ないものもある。例えば、駆除ツールのメール監視サービスとか。焦らずじっくり調べるように。)が発見されたら、取るべき道は2つある(ホント?)

1.気持ち悪いので、開き直って一気にシステム再インストールする。

2.トロイを特定し、所定の削除法で削除する。

2.について、トロイがデフォルトのポート番号を使用している場合には種類を特定しやすいが、そうでない場合は種類がわかりにくい。駆除ツールが発見してくれればなんてことはないが、そうでない場合、種類がわからなければ削除しようにも発見できない。また、運良く発見できても、手動で削除せねばならない場合、実は高性能なトロイはそれぞれ削除方法をややこしくして削除しにくく工夫されているので、初心者の場合はややツライものがある(そんなことは言ってられない訳だが...)。

ただし、駆除ツールの定義ファイルがバージョンアップされて、いきなり発見可能になる場合もあるので、ネットワークに繋がず気長に待つ、という手もある。その間、他のホストからウィルス関連のWEBサイトをマメにチェックし、情報を得る。


◎じかに探す

思いきり力技だが、そういうのもアリかもしれない。流行ってるトロイを調べて探しまくるのです(ヤだなー)。現実的には駆除ツールとポートスキャンでも特定できないとき、というところ。




以上、めんどくさいかもしれないけど、HDDをまっさらにされたくなければそれ位やってよいでしょ、ということで。


トップページ