特定のノード間の通信だけフィルタリング

WireShark を使うときにフィルタリングすることで
より情報を見やすくできます
今回も右クリックメニューです
右クリックして
Conversation Filter で
Ethernet
IP
TCP
UDP
PN-CBA
の中から、利用可能なものが選べます
ちなみに、もっと詳しく割り振りをするなら
Statictics > Conversation List
から選ぶと
Ethernet
FDDI
Fiber Channel
IPx
IPv4
IPv6
JXTA
NCP
RSVP
SCTP
TCP
Token Ring
UDP
USB
WLAN
から選べます

3way ハンドシェイク

firefox のデフォルトのホームは
start,.ubuntu.com
ここには Google の検索窓のほか
ヘルプ(htlp.ubuntu.com)
ショップ(shop.ubuntu.com)
コミュニティ(www.ubuntu.com)
があります
これを wireshark でキャプチャすると
start.ubuntu.com
ww.google.com
help.ubuntu.com
shop.ubuntu.com
www.ubuntu.com
というたくさんのレスポンスがでるということです
で、今回の題名にある 3wayハンドシェイクですが
1、SYNフラグの立ったTCPパケット(SYNパケット)を送信
2、SYN ACKパケットが返る
3、また ACKパケットを返して接続完了
というものです
TCP関連の話では必ず出るので、覚えておきましょう

時間問い合わせプロトコル

NTPサーバーは
Network Time Protocol serverのことをいいます
PCの時間を正確にするために
最近ではほとんどのOSで標準でNTPクライアントを動作させます
このため、ネット接続してあるマシンが時間がずれないのは
これが理由です
ちなみに、Windows と Ubuntu Mac では
デフォルトのタイムサーバーが違うため
wireshark で通信内容を取得すれば、OSを判別することもできます

IPv6 と DNSプロトコル

インターネットで通信を行うには
相手のIPアドレスが必須
URLからIPアドレスを引くためのシステムがDNS
これこそが現代のインターネットの根幹ともいえるものです
ちなみに、世界のルートDNSサーバーは
13台だけで
これが DDos攻撃でダウンすると、世界規模でのブラックアウト
つまりネット遮断が引き起こされます
DNSは、クライアントがルートサーバーから純に問い合わせていきます
基本的な動作は
URLをDNSサーバーにきく > IPアドレスを教えてもらう
です
サンプルをみてみると
DNSパケットの
Info のところで
query AAAA ntp.ubuntu.com
となっていますが
この
AAAA レコードは IPv6 で使われます
でもブロードバンドルーターがIPv6 対応していないと
無意味ですが…
最近のOSはubuntu でも Windows7 でもデフォルト設定で
IPv6を使っていますが
これはもうすぐ IPv4が枯渇するのが理由と思われます
でも、まだ正式には対応されていないため
もしトラフィックを抑えたいなら IPv6 は切っておく方がよさそうです

ARPのやりとり

さらに続いて wireshark でのサンプルでの解析実験です
今回は ARPについて
ARP は
Address Resolution Protocol の略
イーサーネットで通信するには
相手のMACアドレスを知らないとダメ
この流れが No10 と No11 に載っています
ちなみに、no10 の
Source(送信元)が
CadmusCo_46:2c::20
No11 は
Source(送信元)が
Sumitomo_f6:85:f3
となっているけど、これは
Wiresharkが自動的に MACアドレスの
ベンダーID前半6桁をベンダー名に変換しているためです
全部数字にしたいなら
View > Name Resolution で
Enable for MC layer のチェックを外して
Ctrl + r
で再度読み込みします
Info にかかれている
Who has 192.168.77.1 ? tell 192.168.77.27

そのままの意味で
192.168.77.17 を持っていたら
192.168.77.27 へ教えて
と言う意味です
これに対して
192.168.77.1 is at 00:0b:a2:f6:85:f3
という答えが帰っています
意味は
192.168.77.1 は 00:0b:a2:f6:85:f3
という意味です
英語ができるようになると、そのまま理解できるようになりそうです
ほとんどのメッセージは英語だし
英語を使うと基本的にwebページの文字化けはしませんので
ちなみに、ARPスプーフィングという手法があり
これを使うことで、無理やり押し付けてしまう手法も存在します

プロトコルから探るには

引き続き、サンプルを元にした解析の実践です
参考書籍として Hacker Japan (ハッカー ジャパン) 2012年 05月号
を使います

Source (送信元)の
192.168.77.27 はPC本体なので気にもしないのですが
No3 から見ていくと
Destination(送信先)が
IGMP で224.0.0.22
NDMS で224.0.0.251
へ送信しています
これについてですが
224.0.0.x は
マルチキャストアドレスで
複数のノードグループに対して一斉送信するときに使うもの
そして、このときに使っている IGMP は
Internet Group Management Protocol の略で
MDNSは
Multicast DNS の略
MDNSは Apple のBonjour や
Linux の Avahi などのネットワーククライアントで
使われるので、こういった情報から使用しているOSを探ることもできます
ちなみに、今回のサンプルにはなかったのですが
LLMNR
NBNS
というプロトコルがあると
Windows7 以降のOSの可能性が高いようです

サンプルを使ってパケット解析の勉強

今回も wireshark を使っての解析の実践となります
今回の参考書籍はHacker Japan (ハッカー ジャパン) 2012年 05月号

サンプルがダウンロードできますので、これを使います
リンクはこちら
ダウンロードしたファイルを解凍し
wireshark で読み込みます
読み込むのは
022.pcap
です
本だけだとちょっとわかりにくいので、
頭の整理をかねてメモです
アウトプッとすると、結構まとめられます
No1 をみると
Source は 0.0.0.0
Destination は 255。255。255。255
つまり、ブロードキャスト
Protocol は DHCP
DHCPを使う場合
クライアントは最初はIPを持っていないから、0.0.0.0
になります
書籍の解説部分を全体画面でみると、こんなかんじ
wireshark.png
ちなみに、分かる人には
No1 と No2 のパケット解析の結果から
ネットワークのサブネット 192.168.77.0/24
gateway と DNS server が 192.168.77.1
ということがわかるようです
おそらくNo2 の結果から
Source 192.168.77.1
Destination 192.168.77.27
であることから
IPは 192.168.77.0 ~ 192.168.77.255
のどれかになりますし
ルーターが
192.168.77.1
となっているので、この場合デフォルトゲートウェイが
192.168.77.1
DNSは大抵は同じ番号になるので
これも
192.168.77.1
となると思われます

IPヘッダーについて

引き続き Wireshark 関連になります
IP、つまり Internet Protocol に燗するものなので
Internet Protocol version4
の行を選びます
+を押せばより詳細な情報を得られます
ちなみに、私の環境だと、こんなかんじ
packet.png
IPヘッダーでもっとも重要なのは
送信元(Source のところ)

発信先(Destination のところ)
のIPアドレス
1つ下の階層のイーサネットフレームヘッダーでは
送信先と送信元は
MACアドレスでした
つまり、実際にパケットを目的地に送るにはIPアドレスを
MACアドレスに変換する必要があるようです

パケットリストペイン

Wireshark そのもののインストールは難しくはないのですが
問題は、通常は使わないようなツールなので、理解しにくいということです
しかし、使えるようになると、いろいろとできます
まず、wireshark は1行が1つのパケットを示していて
色分けされています
色の意味は
view > coloring rules
で見ることができます
一番つかわれているHTTPは緑です
項目を解説すると
一番左から
No
パケット番号
Time
開始から何秒後にキャプチャしたかという経過時間
Source
パケットの発信元
Destination
パケットの送信先
Protocol
プロトコルの名前(たいていはTCP)
Lenght
パケットの長さ
Info
その他の情報
Noは、TIme に近いところに表示されるので少し見にくいかもしれません
今回は、ダウンロードしたファイルから
解析をしてみました
パケットをクリックすると
詳細情報が別のダイアログで表示されます
どのパケットでも上2行は同じ文句から始まります
Frame で始まる行は
イーサネットフレームについての情報を示します
パケットは
厳密に言うと
イーサネットを流れるデータの塊がフレーム
その中にあるIPが扱う塊がデータグラム
さらにその中にあるTCPやUDPの塊がセグメントとなります
ちなみに、+ボタンを押すと
より詳しい情報がみれます
Frame なら
送受信の時間
前のパケットとの時間差
パケット番号や長さが見れます
このFrame の行は
パケットリストペインの詳しいバージョンで
ここは Wireshark がパケットについて記録している部分になります
続いて
Internet II の行です
これはイーサネットフレームヘッダーの情報になります
そして3行目の
Internet Protocol Version 4
のところはIPデータグラムになります
User Datagram Protocol は
UDPセグメント
その下はアプリケーションのプロトコルになります
今回なら
Bootstanp Protocolで送られてきた内容になります

パケット解析の勉強

とりあえずインストールはできたので、次は実行環境です
とはいっても、今回は hacker japan でデータを提供してくれているので
これを使わせていただきます
ダウンロード先は
Hacker Japan Online
ここからダウンロードした
hj2012-05-pcap.zip を解凍し
その中にある
022.pcap
を使用します