パケットキャプチャとは
パケットキャプチャ端末が持っているNICを通過するパケットをソフトウェア的に傍受してキャプチャする。
キャプチャを行う環境構築
・時刻合わせ
時刻がずれているとパケットの突合せが大変。
・キャッシュクリア
ARPキャッシュ、DNSキャッシュ、HTTPプロキシキャッシュなど
キャッシュはNW上のトラフィックを減らす機能、
パケットキャプチャ時にクリアしないと本来のパケットシーケンスにならない。
WinPcap
Wireshark使用に必要なツール
パケットをキャプチャするのに必要なアーキテクチャ(デバイスドライバや、ライブラリの集まり)
NPF、packet.dll、wpcap.dll
プロミスキャス
ONにすると自分と関係ないパケットもキャプチャする。
名前解決機能
・MACアドレス機能
パケットのMACアドレスのOUI(ベンダー識別子)をベンダー名に変換する。
・ネットワーク名解決
IPアドレスをホスト名に変換する
・トランスポート層解決
パケットのポート番号をサービス名に変換する
キャプチャフィルタ
メリットはキャプチャするパケットの量が減る。
負荷の軽減につながる。
リモートデスクトップ(RDP)でHTTPサーバーにアクセスし、クライアントからくるパケットをキャプチャしたい場合に、
RDPのパケットは不要。
キャプチャフィルタの基本構文
[プロトコル名][ディレクション][タイプ][値]
例)
ether src 00:00:00:00:00:00 送信元MACアドレスが「:.」のイーサネットフレーム
ether host 00:00:00:00:00:00 送信元MACアドレスか宛先MACアドレスが「:.」のイーサネットフレーム
arp ARPフレーム
ip src host 192.168.0.1 送信元IPアドレスが「192.168.0.1」のIPv4アドレス
ip net 192.168.0.0/24 /24のセグメントのIPアドレスのパケット
tcp src port 53 送信元ポート番号が「53」のTCPセグメント
論理演算も使える
not port 3389 ポート番号が「3389」以外のTCpセグメント/UDPデータグラム
表示フィルタ
キャプチャしたデータの中から画面上に表示するデータをフィルタする機能
・基本構文
[フィールド名][リレーション][値]
フィールド名について
eth.addr MACアドレス
arp ARPフレーム
ip IPv4アドレス
ipv6 IPv6アドレス
tcp TCpセグメント
tcp.port TCPのポート番号
リレーションについて
eq ==
ne !=
gt >
lt <
ge >=
le <=
contains 含む
matches に合致する
論理演算も使える
調査したいパケットのヘルプ機能は書式タブ
パケットの表示に関わる機能
・時刻表示の切り替え
・パケットのマーク機能
・自動スクロール
・列の編集(OSI参照モデルの階層)
問題が特定のレイヤーにあるとわかっている場合
レイヤー2プロトコルの解析
送信側の物理層はデータから信号に変換する時に符号化を行っている。
L2の代表プロトコル
有線LAN→Ethernet
無線LAN→IEEE802.11
Ethernetの規格の見分け方
[帯域幅]BASE-[ケーブルの種類]
【帯域幅】通信規格の帯域幅を表している
[ケーブルの種類]
T UTPケーブル
S 光シングルケーブル
L 光マルチケーブル
C 同軸ケーブル
Ethernetプロトコルの詳細
Ethernetネットワークを流れるパケットの事を「Ethernetフレーム」という
ethernet 2 フレームフォーマット
[プリアンブル][src/dst MACアドレス][タイプ][ペイロード][FCS]
[Ethernetヘッダー]
[src/dst MACアドレス][タイプ]の二つをまとめた呼称
[プリアンブル]
これからEthernetフレームを送る合図を意味する64bit(8Byte)の特別なビットパターン
Wiresharkではキャプチャできない。
[src/dst MACアドレス]
MACアドレスは端末を表す48bitの識別ID
[タイプ]
L3でどんなプロトコルを利用しているか表す16bitの識別子
[ペイロード]
上位層のデータそのもの
データサイズはデフォルトで46バイトから1500バイトと決められている。
足りなければ、パディング(詰め物)、多ければ、分割
Ethernetフレームに入るデータの最大サイズをMTUと呼ぶ。
FCS(Frame check sequence)は、Ethernetペイロードが壊れていないかどうかを確認するためにある32bitのフィールド
送信側でチェックサム計算(CRC)を行っている。その後パケットに付与。
受信側で同様の計算を行う。突合。
[MACアドレス]
各ノードの端末IDを表す。
48bitで構成される。
16進数で表記される。
・IG(Individual/Group)ビット
MACアドレスが1:1のためのユニキャストアドレスか、1:n通信のマルチキャストアドレスかを表してる。
・UL(unique/Local)ビット
MACアドレスがグローバルアドレスかローカルアドレスかを表している。
WireSharkでは「LG bit」と表記される。
・OUI(ベンダー識別子)
先頭24bit
IEEEが割り当てる。
・L2スイッチの役割
送信元MACアドレスと自分自身のポート番号を管理している。
Ethernetフレームの転送先を切り替え、通信の効率化を図っている。(L2スイッチング機能)
送信元MACアドレスとポート番号を管理するテーブルをMACアドレステーブルという。
VLANを実装。
1台のL2スイッチを仮想的に複数のL2スイッチにみせかける技術。
ポートVLAN/タグVLANの違い
・ポートVLAN
VLANの数だけポートとケーブルが必要
・タグVLAN
VLANの数に関係なく、1ポート、1ケーブルだけで済む
ARP
MACアドレスはNICのROMに書き込まれていている物理的なアドレス
L3で使用するOSで設定する論理的なアドレスの事をIPアドレスという。
この2つのアドレスを紐づけるプロトコルがARP