Welcome to SapporoWorks! We create stimulating network programs.
By a demand from user, SapporoWorks evolves.
トップページ| ソフトウエア| シェアウエア登録| セキュリティ情報| 開発情報| ドキュメント|
ドキュメント > ネットワークスニッファVIGILで学ぶ TCP/IP+Ethernet ネットワーク管理講座 > 第2回


--- 出典(ネットワークマガジン)6月号より ---

ネットワークスニファVIGILで学ぶ TCP/IP + Ethernet ネットワーク管理講座

前回はネットワークスニファの概要とEthernetフレームの種類の見分け方について学習した。今回は、前回学習した「利用プロトコルの確認」「実行中のサービスの確認」に引き続き、「ネットワークスニファVIGIL」を使ったネットワーク管理テクニックについて、作者の古谷誠進氏が解説する。



文○古谷誠進 (furuya@sapporoworks.ne.jp)


短期集中連載 第2回

今回の講義内容
1.定期的なPOPの自動確認
2.デフォルトルーティング及びネットマスクの検出
3.攻撃の形跡を確認



POP3サーバとのセッションを見張る

 紙文書による回覧を廃止する目的で社内にメールサーバを構築しても、まったくメッセージを受信しないユーザがいれば、結局は紙文書による回覧が必要になってしまいます。これではせっかく電子メールを導入しても、単に連絡手段が2つになるだけで、効率はむしろ低くなってしまいます。また、新着メッセージを確認するために、従業員が電子メールサーバに頻繁にアクセスするのもネットワーク資源の無駄使いになります。

 インターネット接続を100人単位で共有していれば、POP3の新着メッセージの確認だけでも、相当大きなトラフィックが発生します。回線費用の増加を招きかねませんので、ネットワーク管理者は、ユーザがどれぐらいの頻度、タイミングで新着メッセージを確認しているかなど、電子メールの使用状況を把握しておくべきです。


やってみよう!−POP3サーバとのセッションを見張る



 タスクバーに常駐して、自分宛てのメッセージが届くと知らせてくれるオンラインソフトは数多く公開されており、社内ネットワークにもそのユーザがいるはずです。しかし、一般に使用されている電子メールの受信のプロトコルであるPOP3 とIMAP4は、サーバ側からクライアントにメッセージの到着を通知する機能はありません。つまり、このようなプログラムは、クライアント側から定期的にサーバに接続して、メールボックスの状態を確認しているのです。

 たとえば、POP3では USER とPASSコマンド またはAPOPコマンドで、サーバにログインし、LISTコマンドでメールボックス内のメッセージの数を確認できます。
 新着メッセージの確認プログラムは、POP3では110、IMAP4では143のTCPポートに接続します。新着メッセージを確認しているかどうかを知るには、このポート番号での送受信を調べればよいわけです。

 VIGILでは、送受信されたTCPの通信内容を順番どおりに並べて1つのデータとして扱い、接続元(デフォルト)または接続先のどちらかにツリー状に表示します。個々の通信内容は一覧ウインド(左上)の「端末」のアイコンの下に、「TCP」のアイコンとして、「ポート番号」ごとにまとめられて時系列で表示されます。したがって、POP3なら110、IMAP4なら143のポート番号に注目し、その通信時刻が一定間隔で現れるなら、プログラムが自動的に接続しているのだと推測できます。新着メッセージの確認プログラムの中には、チェック間隔を秒単位で指定できるものもあるようです。あまりにも頻繁に新着メッセージを確認しているようなら、ユーザに注意をうながすべきでしょう。


この画面の場合、約2分に一回の頻度で着信を確認しているようだ




デフォルトゲートウエイ及びネットマスクの検出

 社内のネットワークが単一サブネットでインターネットにも接続されていなければ、パソコンのTCP/IPの設定でデフォルトゲートウエイが間違っていても、通信に支障はありません。しかし、そのままでは、ネットワークが大きくなりもともとあった単一のネットワークを複数のサブネットに分割したとたんに、TCP/IPの設定が正しくないパソコンは、異なるサブネットとの通信ができなくなってしまいます。

 その原因は、TCP/IPで、異なるサブネット間で通信する場合、ルーティングテーブルとサブネットマスクを使うからです。

 ルーティングとは、「線路探索」のことです。通信に先だって、パソコンは宛先IPアドレスとサブネットマスクを使って、宛先IPアドレスが自分の所属しているネットワークと同じなのかどうかを判断します。同じネットワークの場合は、MACアドレスを使って宛先のホストに直接パケットを送信できます。このルーティングを特に「ダイレクト・ルーティング(直接)」と呼びます。
 
 ダイレクトルーティングでは、自分自身のルーティングテーブルを使って、ネットワークごとの経路を選択します。しかし、すべてのネットワークをホスト内のルーティングテーブルに記述するのは大変なので、ルーティング作業を1台のルータに任せてしまうのが一般的です。このルータをデフォルトゲートウエイと呼びます。

 同じネットワークのホスト宛ての通信では、デフォルトゲートウエイを使わずに送信元ホストが直接宛先ホストと通信できます。したがって、送信元ホストのTCP/IP設定でデフォルトゲートウエイが間違っていても、同じサブネット内であれば正しく通信できるのです。

 一方、宛先ホストが送信元ホストと異なるネットワークにあると、MACアドレスを使って、宛先ホストに直接パケットを送信できません。相手のMACアドレスを調べる術がないからです。そこで、ホスト内のルーティングテーブルを参照して経路となるルータを検索し、ルータ宛てにパケットを送信するのです。このルーティングを特に「インダイレクト(間接)ルーティング」と呼びます。

 どちらのルーティング方式でも、実際の通信はARPリクエストによってIPアドレスからMACアドレスを取得しますことは同じです。ダイレクトルーティングとインダイレクトルーティングでは、通信に使われるMACアドレスが異なります。ダイレクトルーティングの場合は宛先IPアドレスのMACアドレスを使って、IPパケットは宛先ホストに直接送信されます。一方インダイレクトルーティングの場合、IPアドレスに対応するMACアドレスにIPパケットを直接送るのではなく、ひとまずルータのMACアドレスにIPパケットを送ります。ルータは届いたパケットを確認し、ダイレクトルーティングで直接送信するのか、再び別のルータに転送するのか決定します。

 ルーティングの用語は独特なので分かりにくいかもしれません。ここで整理しておきましょう。 まず、ルーティングには送信元ホストが直接MACアドレスを解決して送信するダイレクト(直接)ルーティングとインダイレクト(間接)ルーティング の2種類があります。どちらのルーティング方式を使うかは、ルーティングテーブルを見て決めています。

 ルーティングテーブルには@ホストルーティング、Aネットワークルーティング、Bデフォルトルーティングという3種類の項目があります。ホストルーティングとは、特定のホストへ行くための経路は何なのかを指定する項目です。一方、ネットワークルーティングとは、特定のネットワークへ行くための経路は何なのかを指定する項目です。ホストルーティングでもネットワークルーティングでも経路が指定されていない場合は、デフォルトルーティングとして設定されているルータ(デフォルトゲートウエイ)が経路になるわけです。

 ルーティングテーブルのゲートウエイとして自分自身を示すIPアドレスである「127.0.0.1」が登録してあればダイレクトルーティング、そうでなければインダイレクトルーティングになるわけです。 実際のルーティング作業では、まず、送信元ホストがダイレクトルーティングで送信できるかどうか調べます。自分自身で送信できない場合はインダイレクトルーティングになります。ルーティングテーブルにホストルーティングとして送信先のホストへの経路が指定されているか調べます。次に、送信先のネットワークへの経路が指定されているか参照します。それでも経路が指定されていない場合は、デフォルトルーティングとして登録されている項目を調べて、デフォルトゲートウエイに送信を依頼するのです。


ルーティングテーブルの種類
ホストルーティング
(特定のホストへ行くための経路を指定する)
ネットワークルーティング(特定のネットワーク行くための経路を指定する)
デフォルトルーティング(上記に該当しなかった場合の経路を指定する)



デフォルトゲートウエイの推定

 ホストが所属するネットワークが複数のネットワークに接続している場合、ルーティングテーブルにはそれぞれのパケットを中継できるルータを記述します。ただし、ネットワークが上流の1つのネットワークにのみ接続する簡単なネットワーク構成では、デフォルトルーティングだけをルーティングテーブルに指定するのが一般的です。

 DHCPでIPアドレスを自動設定している場合は、DHCPでデフォルトゲートウエイも設定できます。しかし、DHCPを使わず、各ホストのIPアドレスを手動で設定している場合や、DHCPからIPアドレスを取得する設定でも、ホスト側がデフォルトゲートウエイの情報を提供していない場合は別です。社内ネットワークでは問題なく通信できるのに、インターネットとは通信できないという障害が1台のホストのみで起きている場合は、そのホストのデフォルトゲートウエイの設定が間違っている可能性が高いです。

 この設定の間違いをどのように把握すればよいのでしょうか。Windowsは、設定されたデフォルトゲートウエイのMACアドレスを常時把握しようとして、定期的に設定されたルータデフォルトゲートウエイに対してARP リクエストパケットを送出します。そこで、ネットワークのトラフィックを監視して、定期的にあるホストが同じIPアドレスに対してARPリクエストを送出していれば、そのIPアドレスをデフォルトゲートウエイとして設定しているのだろうと推定できるわけです。


サブネットマスクの推定

 ネットワークの通信には、1対1でホスト同士が相互に通信する「ユニキャスト」と、ネットワーク内に存在するすべてのホストに送信する「ブロードキャスト」があります。

 ブロードキャストは、Windows のネットワークでコンピュータの一覧を管理するブラウザ情報の更新などに使用われています。ブロードキャストのパケットは、MACアドレスが「FF-FF-FF-FF-FF-FF」、IPヘッダ内のIPアドレスが、「192.168.0.255」のようになっているのが特徴です。

 ブロードキャストパケットのIPアドレスは、すべてのホストを表すIPアドレスである「255.255.255.255」とサブネットマスクの排他的論理和(XOR)とネットワークアドレスの論理和(OR)です。たとえば、サブネットマスクが「255.255.255.0」、ネットワークアドレスが「192.168.0.0」の場合、「255.255.255.0」とサブネットマスクの排他的論理和=「0.0.0.255」とネットワークアドレスの論理和=「192.168.0.255」がブロードキャストパケットのIPアドレスになります。サブネットマスクが「255.255.0.0」の場合は、「192.168.255.255」になります。したがって、ブロードキャストパケットのIPアドレス(ブロードキャストアドレス)を見ると、送信元ホストに設定されているネットマスクが推定できるわけです。

 サブネットマスクもネットワーク間の通信では大変重要な設定です。たとえば、192.168.0.0(サブネットマスクは、255.255.255.0) と192.168.1.0(サブネットマスクは、255.255.255.0)の2つのネットワークがルータによって接続されているとしましょう。192.168.0.0のネットワークに接続されているホストのサブネットマスクが正しく設定されている場合、192.168.1.100のホストは、同一ネットワーク内にありませんので、ルータ経由で通信することになります。しかし、サブネットマスクが、誤って「255.255.0.0」と設定されている場合、「192.168.0.0」という同一ネットワークのホストだと勘違いをして、存在しない192.168.1.100 宛てのARPリクエストを送出し続けるわけです。




やってみよう!−デフォルトゲートウエイとネットマスクの検出方法


 一覧ウインドウに表示されている、ARPパケットのアイコンを展開して様子を見ることで、デフォルトゲートウエイを検出できます。

 ARPリクエストは、宛先のMACアドレスが自身のARPテーブルに存在しない場合に、IPアドレスでの通信に先だって送信されます。ARPテーブルは通信のたびにキャッシュが更新されます。VIGILの一覧ウインドウには、通信開始時に、通信相手へのARPリクエストが発生し、接続の必要が生じたときに再びARPリクエストが発生する様子が記録されているはずです。

 しかし、特に何も通信していない時でも、定期的に、同じIPアドレスの端末を探すARPリクエストが出ている場合があります。


[08:43:37] ARP要求 where is 192.168.1.2
[08:53:43] ARP要求 where is 192.168.1.2
[08:53:50] ARP要求 where is 192.168.1.2
[08:53:56] ARP要求 where is 192.168.1.2
[08:54:02] ARP要求 where is 192.168.1.2

 当該端末が、192.168.1.2に対して、通信する必要がないのに、上記のようなARPリクエストが、定期的に発生している場合は、デフォルトゲートウエイが間違って設定されている可能性があります。


 次は、ネットマスクの検出方法です。VIGILの一覧ウインドウの各端末の階層下には、それぞれのプロトコルごとにパケットが分類されて表示されます。そのうちの、ブロードキャストのパケットの内容を見ることで、各ホストがブロードキャストアドレスがどのように設定しているかを確認できるのです。特にWindowsでは、定期的にNBNSのブロードキャストのパケットが流れていますので、これを利用するといいでしょう。

 なお、VIGILでは、各パケットの表示形式は、基本的には下記のようになっています。

[時間] 送信元IPアドレス(送信元ポート番号) -> あて先IPアドレス(あて先ポート番号) サイズ
例 [12:10:00] 192.168.1.1(1024) -> 192.168.1.2(80) 80octet

 ブロードキャストのパケットは、下記のようになります。

[12:10:10] 192.168.1.1 -> BROADCAST

 このようなブロードキャストパケットを見つけたら、選択して、表示ウインドウ(右上)を確認してください。ブロードキャストの特徴である、「MAC層」の「送信先ハードウエアアドレス」が 「ff-ff-ff-ff-ff-ff」 になっているのが確認できるはずです。この時、「IPヘッダ」の中の、送信先IPアドレスが、ブロードキャストアドレスです。「192.168.1.255」 や 「192.168.255.2555」 のようにそのホストのIPアドレスの最後の部分が255のような数字になっているはずです。ホストのIPアドレスと比較することで、サブネットマスクを推定できるわけです。

 

ネットワーク内に存在しないデフォルトルータ(192.168.1.2)を指定しているため、定期的にARPパケットで探している






攻撃の形跡を確認

 各種のサービスをインターネットに公開していると、外部から攻撃を受けることは珍しくありません。また、社内向けのサーバが同じ社内ネットワークのホストから攻撃を受けることもあり得ます。ワームなどに感染した端末が次のターゲットを検索している場合もあるでしょう。また、インターネットには各種の脆弱性確認ツール(?)が公開されており、社員が出来心でいたずらをしている場合もあるようです。

 一般に、ネットワークスニファでTCP/IPトラフィックの監視で見つけやすいのは、弱点を抱えたプログラム(スクリプトなど)がHTTP(80)で実行可能であるかどうかのチェックや、Telnet(23)、FTP(21)、POP3 (110)などの一般的サービスに対して不正ログインの試みるものです。

 HTTPサーバの弱点を探すリクエストは、無効なURLの連続送信と、サーバからの「404 Not Found 」の応答を検出することで判別できます。Telnet、FTP、POP3への不正ログインとしては、パスワードを何度も試してみる「ブルートフォースアタック」が有名です。1字間違いなどのログイン失敗はよくあることですが、ユーザー名をいろいろ変えてみたり、パスワードをいろいろ変えてログインを試みているような場合は、明らかに悪意があると考えていいでしょう。

 不正なアクセスは、それぞれのサーバプログラムのログを確認するのが一般的な発見方法です。ただ、その不正アクセスが単一のサービスに対するものなのか、他のサービスも総なめするような不正アクセスなのかは、別のサービスやシステムのログをあわせて調べる必要があります。また、あるホストが、1つのサーバに対してだけでなく、他のサーバにも攻撃しているかも知れません。このような状況を1台のサーバのログの確認だけでは難しいです。

 VIGILは、ホストのリクエストしたログをツリー表示しますので、1つの兆候を発見できれば、同時にそホストによる通信をすべて把握できます。なお、一覧に残されるデータは、TCPのコネクションのうち、何らかのデータがやり取りされたものだけです。たとえば、サービスを提供していないポートへの接続や、単にサーバへの接続を試みてサービスが稼動中かどうかを確認しただけの場合(ポートスキャン)はログとして存在しません。しかし、今、まさに攻撃されている場合は、リアルタイムで状況を把握できるはずです。

 ネットワーク管理者は、セキュリティ診断ツールが不正なリクエストを検出したときにどのようなログが残るのかあらかじめ知っておくべきです。


やってみよう!−攻撃の形跡を知る


 一覧ウインドウにあるホストを表すアイコンのツリーの下にあるTCPのアイコンを展開すると、ポートごとのリクエストが表示できます。80(HTTP)、21(FTP)、23(Telnet)、25(SMTP)、110(POP3)など、一般的なポートの内容を見ることで、不正なアクセスがあったかどうか確認できます。なお、確認のためには、日ごろから正規のリクエストの様子や、アプリケーション層プロトコルの内容を勉強しておくとよいでしょう。

 リアルタイムのコネクションは、一覧ウインドウのタブを「PC」から「RealTime」に切り替えることで表示できます。3ウエイハンドシェークが確立した時点で、このリアルタイムの一覧に1つのアイコンとして表示され、コネクションが切断されるか、一定の時間が経過すると、この一覧から消えます。データの存在するものは、「ホストの一覧」に保存されます。リアルタイムの一覧に、同一のホストから各種のポートに対して多数のコネクションが見つかった場合などは、ポートスキャンを実施しているか、セキュリティの診断ツールが使用されている兆候です。

 

ポート80へのリクエスト内容を見ると、明らかに悪意ある攻撃を確認できる

IISのセキュリティホールを検索している様子





POP3

Post Office Protocol version 3
電子メールの受信用プロトコル

IMAP4

Internet Message Access Protocol version 4
電子メールメッセージを受信したり、サーバ上で操作するためのプロトコル

USER

POP3のコマンド。
ユーザ名を送信する。

PASS

POP3のコマンド。
パスワードを送信する。

APOP

POP3のコマンド。
パスワードをハッシュ値に置き換えることで認証時に平文パスワードを送信しなくて済む。

LIST

POP3のコマンド。
メールサーバ内のメッセージついて。メッセージ番号とサイズを取得する。

デフォルトゲートウエイ

Default Gateway
送信先のネット枠が特定できないときにパケットの転送を任せるルータのこと。

サブネット
IPアドレスのうち、ホストアドレスの一部をネットワークアドレスとして使うことにより作られるネットワークのこと。

ルーティングテーブル

宛先のネットワークと通信するための経路や優先順位の情報。ホストやルータが管理している。

MACアドレス

Media Access Control Address
Ethernetで使われる物理アドレス。16進数、6桁の数値で、上3桁はベンダー固有のID。

ARP

Address Resolution Protocol
IPアドレスに対応するMACアドレスを取得するためのプロトコル

DHCP

Dynamic Host Configuration Protocol
ホストのネットワーク設定に必要な情報をDHCPサーバから自動的に受信するためのプロトコル。

ユニキャスト

unicast
uniは、「単一の」を意味する接頭辞。castは「投げる」の意味。

ブロードキャスト

broadcast
「放送」の意味。

NBNS

NetBIOS Name Service
WINSのRFC名。
Widowsネットワークで使われるNetBIOSのコンピュータ名とIPアドレスの対応を管理する。

ブルートフォースアタック

Brute Force Attack
総当り攻撃、力ずく攻撃のこと。
bruteは英語で「野獣」の意味。アニメ「ポパイ」の主人公のライバルの名前でもある。

3ウエイハンドシェイク

3 way handshake
TCPのコネクション確立時に交わされる@接続元から接続要求−>A接続先からの許可−>B接続元から接続先への接続要求のプロセスのこと。handshakeは英語で握手のこと。
ドキュメント > ネットワークスニッファVIGILで学ぶ TCP/IP+Ethernet ネットワーク管理講座 > 第2回

copyright(c) 1995- SapporoWorks
当サイトはリンクフリーです。リンク時に連絡などは必要有りません。また、どのページにリンクして頂いても構いません。