Wireshark と Tshark によるパケット解析

WiresharkBeginner
オンラインで実践に進む

はじめに

この実験では、Wireshark とそのコマンドライン版である Tshark を使用して、ネットワークパケット解析の基礎を学びます。まずネットワークインターフェースの確認から始め、次にライブネットワークトラフィックのキャプチャに進みます。さらに、Tshark コマンドラインツールと Wireshark グラフィカルユーザーインターフェースの両方を使用して、既存のパケットキャプチャファイルの読み込み、フィルタリング、解析の方法を学習します。この実験は、ネットワークトラブルシューティングやサイバーセキュリティにおいて極めて重要なスキルであるパケット解析の基礎的な理解を提供します。

インストールの確認とネットワークインターフェースの一覧表示

この実験環境では、Tshark と Wireshark はあらかじめインストールされています。最初の手順として、インストールが正しく行われていることを確認し、パケットキャプチャに使用可能なネットワークインターフェースを特定します。ネットワークインターフェースとは、コンピューターがネットワークに接続するためのハードウェアまたは仮想デバイスのことです。

  1. まず、Tshark のバージョンを確認して、正しくインストールされていることを検証します。このコマンドは、ツールがシステムのパスで利用可能であることを確認します。

    tshark --version
    

    Tshark と Wireshark のバージョン番号が表示されるはずです。

    TShark (Wireshark) 4.2.x (Git v4.2.x packaged as 4.2.x-1)
    ...
    
  2. 次に、パケットキャプチャに使用できるネットワークインターフェースを知る必要があります。-Dフラグを使用して、利用可能なすべてのインターフェースを一覧表示します。

    tshark -D
    

    出力には、インターフェースが番号と名前で一覧表示されます。

    1. eth0
    2. any (すべてのインターフェースでキャプチャする疑似デバイス)
    3. lo (ループバック)
    4. ...
    
    • eth0は通常、仮想マシンやサーバーで一般的な主要なイーサネットインターフェースです。ライブキャプチャにはこれを使用します。
    • loはループバックインターフェースで、同じマシン内でのネットワーク通信に使用されます。
    • anyは、すべてのインターフェースからのトラフィックを一度にキャプチャできるようにする特別な疑似デバイスです。

インストールを確認し、eth0インターフェースを特定したので、パケットのキャプチャを開始する準備が整いました。

基本的なパケットキャプチャの実行

ネットワークインターフェースを特定したので、ライブパケットキャプチャを実行できます。この演習では、eth0インターフェースから少数のパケットをキャプチャして、Tshark がどのように動作するかを確認します。これは、リアルタイムのネットワークアクティビティを監視するための基本的なスキルです。

  1. キャプチャを開始するには、-iフラグでインターフェースを、-c(カウント)フラグでキャプチャするパケット数を指定する必要があります。eth0インターフェースから 10 パケットをキャプチャするには、次のコマンドを実行します。

    tshark -i eth0 -c 10
    
  2. Tshark はパケットのキャプチャを開始し、各パケットの要約をリアルタイムで一行ずつ表示します。出力は以下の例と似ており、パケット番号、タイムスタンプ、送受信元の IP アドレス、プロトコル、および簡単な要約などの情報が表示されます。

     1 0.000000000 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x1a34 AAAA metadata.google.internal
     2 0.000293393 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x1a34 No such name
     3 0.000408893 172.17.0.2 -> 172.17.0.1 DNS 79 Standard query 0x2b1f A metadata.google.internal
     4 0.000564893 172.17.0.1 -> 172.17.0.2 DNS 111 Standard query response 0x2b1f No such name
     ...
    

10 パケットをキャプチャした後、Tshark は自動的に停止します。これで、コマンドラインからライブネットワークトラフィックを正常にキャプチャし、表示することができました。

Tshark によるキャプチャファイルの解析

ライブトラフィックのキャプチャに加えて、保存されたパケットキャプチャファイルを解析することも一般的なタスクです。これらのファイルは通常、.pcap拡張子を持ち、オフライン解析を可能にします。サンプルファイルcapture.pcapがプロジェクトディレクトリに用意されています。

  1. まず、lsコマンドを使用して、カレントディレクトリ(/home/labex/project)にcapture.pcapファイルが存在することを確認します。

    ls -l capture.pcap
    
  2. このファイルからパケットを読み込むには、-r(読み込み)フラグを使用します。ファイルから最初の 10 パケットを表示してみましょう。

    tshark -r capture.pcap -c 10
    
  3. すべてのパケットを手動で調べるのは非効率的です。Tshark では、表示フィルタを使用して、特定の基準に一致するパケットのみを表示できます。-Yフラグを使用して表示フィルタを適用します。ここでは、TCP トラフィックのみをフィルタリングしてみましょう。

    tshark -r capture.pcap -Y "tcp" -c 5
    

    このコマンドはcapture.pcapから読み込み、表示フィルタtcpを適用し、一致する最初の 5 パケットのみを表示します。

  4. 次に、UDP など別のプロトコルでフィルタリングを試みます。

    tshark -r capture.pcap -Y "udp" -c 5
    

    今度は UDP パケットのみが表示されます。表示フィルタは、解析を特定のプロトコル、アドレス、またはポートに集中させるための強力な機能です。

ライブキャプチャのフィルタリングと保存

このステップでは、キャプチャ、フィルタリング、保存を組み合わせます。すべてのトラフィックを保存する代わりに、関心のあるパケットのみを保存するようにキャプチャフィルタを適用できます。これにより、ターゲットを絞ったデータセットを効率的に作成できます。ここでは、DNS トラフィックのみをキャプチャし、新しいファイルに保存します。

  1. キャプチャを保存するには、-w(書き込み)フラグを使用します。キャプチャフィルタを適用するには、-fフラグを使用します。DNS は通常 UDP ポート 53 を使用するため、キャプチャフィルタとして"port 53"を使用します。

    次のコマンドを実行して、10 個の DNS パケットをキャプチャし、dns_traffic.pcapという名前のファイルに保存します。

    tshark -i eth0 -c 10 -f "port 53" -w dns_traffic.pcap
    

    通常のキャプチャとは異なり、このコマンドはパケットを画面に出力しません。代わりに、キャプチャが 10 に達するまで、キャプチャされたパケットの実行中のカウントが表示されます。

  2. キャプチャが完了したら、新しいファイルが作成されたことを確認します。

    ls -l dns_traffic.pcap
    
  3. 次に、新しくフィルタリングされたキャプチャファイルの中身を検査して、意図したトラフィックのみが含まれていることを確認できます。

    tshark -r dns_traffic.pcap
    

    出力には DNS パケット(またはポート 53 のその他のトラフィック)のみが表示され、キャプチャフィルタが正しく機能したことが確認できるはずです。

Wireshark GUI によるパケットの解析

Tshark はコマンドラインでの作業に優れていますが、Wireshark のグラフィカルユーザーインターフェース(GUI)は、詳細なパケット解析のための強力な視覚的環境を提供します。このステップでは、Wireshark GUI を使用してcapture.pcapファイルを検査します。

  1. 以下のコマンドを使用して Wireshark を起動し、capture.pcapファイルを開きます。末尾の&は、アプリケーションをバックグラウンドで実行し、ターミナルを解放します。

    wireshark capture.pcap &
    
  2. Wireshark ウィンドウが開きます。主要なレイアウトに慣れるために時間を取ってください。

    • パケットリストペイン(上部): キャプチャ内のすべてのパケットのリスト。
    • パケット詳細ペイン(中央): 選択したパケットのプロトコルレイヤーの詳細な展開可能なビュー。
    • パケットバイトペイン(下部): 選択したパケットの生データが、16 進数と ASCII で表示されます。
  3. GUI ではフィルタリングが簡単に行えます。ウィンドウ上部にある表示フィルタバー(プレースホルダーテキストとして「表示フィルタを適用...」と表示されている場合があります)を見つけます。このバーにhttpと入力し、Enterキーを押します。

    http
    
  4. パケットリストペインが更新され、キャプチャファイル内の HTTP パケットのみが表示されます。任意のパケットをクリックすると、中央のペインでその詳細を調べることができます。

  5. 確認が終わったら、Wireshark ウィンドウを閉じます。

まとめ

この実験では、Wireshark スイートを使った実践的な経験を積みました。Tshark のインストールを確認し、利用可能なネットワークインターフェースを特定する方法を学びました。tsharkを使用してライブネットワークトラフィックをキャプチャし、既存の.pcapファイルを読み込み、キャプチャフィルタと表示フィルタの両方を適用して特定のプロトコルを分離する練習をしました。さらに、フィルタリングされたキャプチャを新しいファイルに保存する方法についても学びました。最後に、より視覚的なアプローチである Wireshark のグラフィカルユーザーインターフェースを紹介しました。これらのスキルは、ネットワーク管理、トラブルシューティング、セキュリティに関わるすべての人にとって不可欠です。