「ポートスキャンと共有サービスへのアタック」

第2回 「ポートスキャンと共有サービスへのアタック」

クラッカーがマシンを攻撃するためには,まず「IPアドレスのスキャニング」を行ってインターネットに接続されているマシンを探し,そして「ポートスキャン」を行い,マシンが提供/利用しているサービスを探して,そこから侵入していく。そのときにいちばん狙われやすいのが「ファイルやプリンタの共有」サービスだ。今回は,ポートスキャンと共有サービスへのアタックについて解説しよう

●クラッカーの手口を理解しよう

 前回は常時接続環境の危険性についての概要を解説した。繰り返しになるが,常時接続はその利便性と引き換えに,「クラッカーによる侵入」という危険にさらされるという点に注意しなければならない。

 セキュリティに対する考え方は人それぞれだが,その中の1つとして自分自身がクラッカー(侵入者)の立場になり,自身の状況(コンピュータの設置状況)を把握するという方法がある。前回にも触れた「ピッキングによる侵入」て考えてみるならば,ピッキングによって鍵が壊される方法をイメージすることで,「どのような鍵が開きやすいのか」,「鍵はどのようにすれば開けられるのか」という知識を身に付ける,ということになる。

 クラッカーにとって必要なのは「鍵に関する知識」ではなく,いかに簡単に「鍵を開けるか」ということだ。インターネットからはさまざまなクラッキングツールが手に入り,それを利用すればコンピュータへの侵入が簡単に行えるからだ。

 ピッキングによる侵入を防ぐために,強固な鍵に付け替えることで安心してしまうことが多い。常時接続環境のセキュリティを高める場合でも,セキュリティ機能のついたブロードバンドルータや,ソフトウェアファイヤーウォールといった製品を購入し,単純にインストールすることで安心してしまうようだ。しかし,どのような鍵であっても,いつかはピッキングの被害に遭わないとも限らない。犯人の手口を知り,どこがセキュリティに強く,どこが弱いのかを考えて,対策を立てることが重要である。まずはクラッカーの侵入方法を知り,どのような攻撃があるのか理解しておくことが大切だ。

 それでは,クラッカーがどのような手口で侵入を試みていくのかを解説していこう。

インターネット上のマシンを探る「スキャニング」

 インターネットに接続すると,それぞれのコンピュータに「グローバルIPアドレス」が割り当てられる。グローバルIPアドレスは,インターネット上の住所もしくは電話番号と考えてもよいだろう。一部の掲示板の書き込み時やチャットなどで表示される「202.232.45.22」といった文字列がそれにあたる。これは通常,割り当てられたグローバルIPアドレスが「202.232.45.22」のユーザーが書き込みをしたことを示している。

 クラッカーがこのアドレスを元に侵入を試みるということは前回でも解説した。まずはスキャニングツールを用い,たとえば,「202.232.0.1〜202.233.10.224」などのある範囲を無作為もしくは作為的に指定し,そこにあるインターネットに接続されたコンピュータを探しだすわけだ(図1)。

図1■スキャニングによるパソコンの特定
図版
「202.232.0.1〜202.233.10.224」などのある範囲を無作為もしくは作為的に指定し,そこにあるインターネットに接続されたコンピュータを探しだす

 スキャンに使われるツールはクラッキングツールとは限らない。ネットワークの管理ツールの中には,こういったスキャニングが実行できるものがあるからだ。

 クラッカーはスキャニングツールを使用し,侵入するコンピュータのグローバルIPアドレスを調べたあと,そのコンピュータのどこが甘いのかを改めてスキャンしていく。家に侵入するのに必ず玄関先のドアから侵入する必要はない。1階の窓でも,2階の窓でもよい。鍵のかかってない窓,ドア,鍵の甘い場所などを探しだせば,侵入できる可能性があるからだ。

 こういった行為は「ポートスキャン」と呼ばれている(図2)。インターネット上のサービスは「ポート番号」というもので判別されており,たとえばWebサーバであればポート80番,TELNETであれば23番など,よく利用されているサービスには,それぞれ固有のポート番号が設定されている。ポート番号というと難しく考えてしまうかもしれないが,窓やドアに置き換えて考えればよいだろう。つまりある住宅の家のドアをノックしていき,どのドアが開いているか,どんな鍵なのかをチェックするのと同じだ。

図2■特定のマシンのサービスを調べる「ポートスキャン」
図版
クラッカーはスキャニングツールを使用し,侵入するコンピュータのグローバルIPアドレスを調べたあと,そのコンピュータのどこが甘いのかを改めてスキャンしていく

 たとえば,クラッカーがスキャンするターゲットを,有名なトロイの木馬である「BackOrifice」のポート番号「31337」などに設定し,「202.232.0.1〜202.233.10.224」のIPアドレス区間をスキャンしたとしよう。もしヒットすれば,そのコンピュータの「グローバルIPアドレス+ポート番号」で接続を試み,侵入するわけだ。

 また,ターゲットのマシンが利用しているOSを特定することも,侵入のための大きな材料になる。相手のコンピュータがWindowsを使用しているのか,Macintoshを使用しているのか,Linuxを使用しているのか。また,そのOSのバージョンはいくつなのか。こういった材料は多ければ多いほどよい。これはそのOS特有のバグなどがあれば,それを利用して簡単に侵入できるからだ。OSの特定はポートスキャンの結果などから憶測することもできるが,「fingerprinting」(フィンガープリンティング)と呼ばれる,データベース化されたOS(指紋)と照合を行うことにより,OSを特定していく方法もある。

マシンのサービスを探る「ポートスキャン」

 では,具体的にポートスキャンについて解説していくが,その前にポート番号について簡単に理解しておく必要がある。

 インターネットに接続されたコンピュータに,グローバルIPアドレスが割り振られているのは前述した通りだ。グローバルIPアドレスでコンピュータを特定することができるが,そこで動いているサービスは不明だ。

 1台のコンピュータでWebサーバとFTPサーバなど,複数のサービスを提供している場合,グローバルIPアドレスだけでは,どのサービスを要求されているか判別することができない。そこでポート番号を用いてサービスを識別する。一般的なポート番号(Well Known Port)としてHTTPは80番,TELNETは23番,FTPは21番,SMTPは25番,POP3は110番などがある。ポート番号は「1〜65535」までの値で指定される。利用されているWell Known Portなどについては,IANA(Internet Assigned Numbers Authority)のWebサイトを参照してほしい。

 たとえばWebサイトの閲覧であれば,

Webサーバに対してポート80番での接続を要求

Webサーバはポート80番への要求を確認し
その要求に答えてデータを返す

受け取ったデータをブラウザで表示

といった流れになる。Webサーバの場合はブラウザが応答を処理しているので分かりにくいかもしれないが,原理は「メールの安全性を考える(その1) 」で解説した「TELNET接続でメールの送受信を行う」の方法と同じだ。サーバ側はサービスを行っているポートを開け,いつ要求が来ても答えられるようになっているわけだ。ここが狙い目となる。つまりクラッカーはそのコンピュータがどのサービスを提供し,どのポートを開けているかをチェックするために,ポートスキャンを行うのだ。もちろん前述したようにOSの特定など,そのほかの情報収集にも役に立つ。

 では実際にポートスキャンを行った結果を見てみることにする。対象のOSは「Windows98 Second Edition」(ファイル共有機能を設定)で,ポートスキャンは,Linux上で動作する代表的なポートスキャナである「nmap v2.53」を使用した。TCP/UDPスキャン,そしてフィンガープリンティングによるOSの推定を行った(リスト1)。

リスト1■nmapによるポートスキャン

# nmap -sT -sU -O 192.168.1.4

Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Interesting ports on (192.168.1.4):
(The 3079 ports scanned but not shown below are in state: closed)
Port State Service
137/udp open netbios-ns
138/udp open netbios-dgm
139/tcp open netbios-ssn

TCP Sequence Prediction: Class=trivial time dependency
Difficulty=1 (Trivial joke)
Remote operating system guess: Windows NT4 / Win95 / Win98

Nmap run completed -- 1 IP address (1 host up) scanned in 9 seconds

 黄色の文字になっているところが,スキャンの結果分かったことである。つまり,開いているポートは

137/udp−netbios-ns
138/udp−netbios-dgm
139/tcp−netbios-ssn

推定されるOSは

WindowsNT4.0/Windows95/Windows98

 ということが分かる。開いているポートの種類から「ファイルおよびプリンタ共有」(NetBIOS)のサービスが開いていることが分かり,OSもWindows系のOSであることが推定された。あとは侵入を試みるということになるだろう。この場合ファイル共有に設定したフォルダにパスワード設定がなければ,特殊なツールを使用せずとも侵入できることになる。

One Point
NetBIOSの問題とは?
 Windowsでは,ファイルやプリンタを共有するために「NetBEUI」というプロトコルが利用されている。NetBEUIはNetBIOSを発展させたもので,Windowsなどで小規模なLANを利用する場合には便利だが,ルータを越えて利用できないなど,大規模なネットワークには向かない。そこで「NetBIOS over TCP/IP」(NBT)というプロトコルが策定されて,特定のLANとLANをWAN経由でも利用できるようになった。しかし,これがWindowsでは逆にセキュリティホールとなってしまうのだ。
 インターネットはWANと異なり,世界中の誰でもが自由にアクセスできるネットワークだ。そこでNBTを利用したアクセスを行っていると,NetBIOSの仕様上,ユーザーの認証が行われないため,クラッカーのマシンがターゲットユーサーのマシンになりすます(スプーフィング)ことができてしまう。このためクラッキングの原因となるわけだ。


ファイル共有を狙った攻撃

 クラッカーはWindowsのファイル共有サービスを,単純に侵入経路として考えるのであればポートスキャンを行わず,それに特化したスキャンツールを使用する。たとえば「Legion v2.1」(以下,Legion)などのツールがそれに当たる。攻撃するためには,Legionを起動して「Enter Stat IP」〜「Enter End IP」でスキャンするIPアドレスの範囲を指定するだけだ(写真1)。あとは「Scan」ボタンをクリックするだけで,自動的にスキャニングを開始し,ファイル共有可能なコンピュータのIPアドレスと共有フォルダ,ドライブを表示してくれる(写真2)。

画面
写真1■スキャニングはIPアドレスを指定してボタンを押すだけで可能だ

画面
写真2■スキャンが完了すると,自動的に共有可能なコンピュータのIPアドレスとフォルダやドライブ名を表示してくれる

 ファイル共有からの侵入が可能なコンピュータは左側のウインドウに表示され,もし共有されている共有フォルダ,ドライブにパスワードが設定してあれば写真3のようなアラートが出るが,パスワードが未設定であれば,共有フォルダ,ドライブをダブルクリックするだけで自動的にマウントしてくれる(写真4)。

画面
写真3■共有設定にパスワードがかけられている場合は,エラーメッセージが表示される

画面
写真4■パスワードが未設定のドライブ,フォルダは自動的にマウントされる

 たったこれだけの手順で簡単に共有することができる。知識も技術も必要ないというのがお分かりいただけるだろう。「共有フォルダ=Cドライブ」に設定してあり,しかも「フルアクセス可能でパスワード未設定」という条件であれば,その被害が大きくなることは容易に想像できる。またいったん共有フォルダ,ドライブをマウントさせてしまえば,標的のコンピュータが接続を切らないかぎり,自由に操ることができる。

 自宅で家庭内ネットワークを構築しているのであれば,このツールを一度試してみるのもよいだろう。いかに簡単に侵入できるかが分かるはずだ。

●NetBIOSへの対策

 前述したポートスキャンの結果などを見ればわかるが,Windowsの場合,まずファイル共有サービス,つまりNetBIOSのポートを塞ぐことで,インターネット経由の侵入を阻止することができる。市販のブロードバンドルータやソフトウェアファイヤーウォールを導入していれば,たいていの場合はすでにポートが閉じられている(フィルタリングされている)可能性が高いが,念のため再度確認しておく必要がある。また,TAやモデムを使用してインターネットに接続しているのであれば,ソフトウェアファイヤーウォールを導入してフィルタリングを行うか,ファイル共有機能の使用を停止するほうがよい。

One Point
ポートスキャンは違法行為か?
 ポートスキャンは本文で解説したとおり,マシンでどのようなサービスが提供されているのかを調べるツールだ。自宅でサーバを立てた場合,apacheやProFTPDなどのツールが正しく動作しているのかを調べるためにもnmapによるポートスキャンは利用される。この観点からみても,ポートスキャン自体は違法行為ではない。
 しかし,実際にプロバイダのサーバなどにポートスキャンをかけることは,不正アクセスへの準備段階と見なされる可能性が高いだろう。本文で紹介したようなポートスキャンやLegionによるファイル共有などは,自分が管理しているネットワーク以外では決して行わないでほしい。


各種のセキュリティホールを使用したスキャニングとアタック

 ここまではWindowsへの一般的な侵入方法として「ファイル共有」について解説したが,クラッカーの侵入方法は,このほかにもさまざまなケースが考えられる。

 たとえばトロイの木馬は,ユーザー気が付かないうちにインストールされてしまう。前回でも解説したが,クラッカーはトロイの木馬が仕掛けられているコンピュータを同様にスキャニングし,すでに仕込まれているコンピュータへの侵入を試みることが多い。もちろん「ソフトウェアのバグを利用した侵入」が可能な場合はそのサービスが動いているかを確認するのだ。そういったスキャニングを行うツールも,各OSごとにあると思ってよいだろう。

 Macintosh用のセキュリティスキャナとして「MacPork 3.0」というものがあるが(写真5),これを使えば標的のコンピュータにトロイの木馬が仕掛けられているか,既知のセキュリティホールが利用できるかを調べることができる。前述したLegionも同様だが,こういったツールはボタン1つ押すだけで,誰でも使用できる。ポートスキャンにしても言えることだが,興味本位でダウンロードしたユーザーが遊び半分で使用することも十分に考えられる。こうしたことも考慮して,セキュリティ対策を行っておく必要がある。

画面
写真5■Macintosh用のセキュリティスキャナ「MacPork 3.0」

画面
写真6■スキャニングするトロイの木馬を選択してスキャンしたり,もしくはすべてのポートをスキャンするこも可能だ

●環境に合わせたセキュリティ対策を立てる

 今回はWindowsを中心にした侵入方法について解説したが,使用しているOSや使用しているソフトなどでその弱点は異なる。複数のOSを使用している場合や,PC UNIXなどでサーバを運営している場合などは,それぞれに必要なセキュリティ対策を立てる必要がある。たとえばLinuxなどのPC UNUXをインストールし,興味本位でサーバを運営している場合などは,そのサービスにセキュリティホールが存在すれば,そこから侵入されてしまう。

 ちまたでは「常時接続で自宅サーバを運営しよう」といった書籍を目にすることも多いが,自宅でサーバを運営するのであれば,なおさらセキュリティに関心を持つ必要があるだろう。

 次回は,実際にルータやソフトウェアファイヤーウォールを使用し,パケットフィルタリングなどのセキュリティ設定方法について解説していく予定だ。