パケットキャプチャで通信を覗いてみよう

株式会社テイクーワンのM.Yです。

各種のプロトコルについて基礎的な内容ではありますが、私自身、理解できていない部分が多く実際の通信内容がどういったものなのか、イメージできていないと感じていました。そこでWiresharkというソフトを使い実際に流れるパケットを見ることで理解を深めることができたと感じましたので、その方法をご紹介したいと思います。

Wiresharkのインストール

実際にネットワークを流れているデータは、「パケットキャプチャ」と呼ばれるソフトを使って見ることができます。
その中での代表的なのがWiresharkです。これは公式サイト(https://www.wireshark.org/)から無料でダウンロードでき、インストールすると使用可能です。

パケットキャプチャを始める

Wiresharkをインストール・起動出来たら、パケットキャプチャを始めてみます。
[キャプチャ]-[オプション]をクリックした後、パケットキャプチャしたいインタフェースをダブルクリックします。
今回は、私の家のWi-Fiを流れるパケットを見てみようと思うので、Wi-Fiを選択します。

すると、上記画面のようにパケットキャプチャが始まり、それぞれの情報を確認することができます。
すごい勢いでパケットは流れていきますが、停止・開始は左上のボタンから切り替えることができます。
(パケットキャプチャは、PCへの負担が大きいので見る必要がない時は[停止]を押しておくようにします)

データを見る

今回は、例としてHTTP,UDPのデータを見ていきたいと思います。デフォルトでは、すべてのパケットをキャプチャするので必要なものだけに絞り込みます。

絞り込むには、上記の検索フィルタに絞り込みたい内容を入力します。

HTTPのデータを見る

検索フィルタに「http」と入力します。
するとHTTP通信の、GETメソッドを使った通信内容であることや、その要求内容等を見ることができました。

HTTPのレスポンスは左下の詳細ペインのHypertext~~の見出しのところになります。
1行目はリクエストラインと呼ばれ、「[メソッド] [パス] [HTTPのバージョン]」それぞれがスペースで区切られています。今回の例では「GET /image/movie.jpg HTTP/1.1\r¥n」と指定されているのでGETメソッドでパスは/image/movie.jpg、HTTPバージョンは1.1を要求していることを意味します。
2行目以降、空行+¥r¥nまではHTTPヘッダとなります。HTTPヘッダでは「Name: value¥r¥n」という形式で値が設定されます。よってHost:という形で通信先のドメイン名やIPアドレスを指定されているのが見えます、といった風に各種情報を見ることができます。

これが例えばPOSTメソッドを使った、入力フォームである場合はその入力内容が見えてしまいます。
HTTPSであれば暗号化されている通信のためその入力内容が見られることはありません。
セキュリティの話にはなりますが、暗号化されていないHTTPのサイトに注意するのは、このためです。

UDPのデータを見る

次に、検索フィルタに「udp.port==53」と入力します。
そのあとコマンドプロンプトにて「>nslookup aws.amazon.com」と入力してみます。
すると、IPアドレスを含めた情報を返してくれているのが確認できました。

ここでは左下の詳細ペインを見ると、最初の行に表示されているように、フレーム(No.)13534はワイヤ上で94 バイトのデータを持っていました。これは aws.amazon.com の IP アドレスを要求するDNSクエリーをDNSサーバに送信するためのバイト数という意味です。

プロトコルとその通信内容

このようにして、Wiresharkを使って実際にそれぞれのプロトコルを使った通信内容を見てみると、その受け渡しされているデータの詳細が確認できます。
みなさんも気が向いたら、Wiresharkを使って遊んでみてください。

※通信を傍受してその秘密を漏らすことは法律で禁止されていますので、扱いには十分ご注意ください。

前へ

アイコンを使ってOffice資料を作る