Tshark でパケットをキャプチャする

Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Wireshark のコマンドライン版である Tshark を使用して、ネットワークパケットをキャプチャし分析する方法を学びます。インターフェースの選択、パケットキャプチャの開始、プロトコルのフィルタリング、および出力の保存技術などの基本的なスキルを練習します。

この実践的な演習では、Tshark のインストール、パーミッションの設定、および効果的なネットワーク監視のための基本的なコマンド操作をカバーしています。これらの基本的なパケット分析スキルは、ネットワークのトラブルシューティングやセキュリティ調査に役立ちます。


Skills Graph

Tshark のインストール

このステップでは、Wireshark とともに提供される強力なコマンドラインネットワークプロトコルアナライザーである Tshark をインストールします。Tshark は Wireshark のターミナル版で、グラフィカルインターフェースなしでコマンドラインから直接ネットワークトラフィックをキャプチャし分析することができます。これは、リモートサーバーで作業する場合や、キーボードベースのワークフローを好む場合に特に便利です。

  1. まず、パッケージリストを更新して、Tshark の最新バージョンを取得できるようにします。これは、Linux システムに新しいソフトウェアをインストールする前の良い習慣です。

    sudo apt update
  2. 次のコマンドを使用して Tshark をインストールします。-y フラグは、インストール中のすべてのプロンプトを自動的に承認します。

    sudo apt install -y tshark

    インストール中に、一般ユーザーにパケットキャプチャを許可するかどうかのプロンプトが表示される場合があります。これは重要なセキュリティ上の考慮事項です。「はい」を選択すると、一般ユーザーがパケットキャプチャを実行できるようになり、これがこの実験で必要な設定です。

  3. インストールが完了したら、Tshark のバージョンを確認することで、正しくインストールされたことを検証します。このコマンドは、インストールパスがシステムに正しく設定されていることも確認します。

    tshark --version

    次のような出力が表示されるはずです。

    TShark (Wireshark) 3.6.12 (Git v3.6.12 packaged as 3.6.12-1~ubuntu20.04.0)
  4. Tshark が root 権限なしでパケットをキャプチャできるようにするため(root 権限は不便でセキュリティ上も好ましくない)、ユーザーを wireshark グループに追加する必要があります。このグループにはパケットキャプチャに必要な権限があります。

    sudo usermod -aG wireshark $USER

    注意:通常、このグループの変更を有効にするには、ログアウトして再度ログインする必要がありますが、この実験環境では変更が即座に反映されます。実際のシステムでは、セッションを再起動する必要があります。

インターフェースの選択

このステップでは、Tshark を使用してパケットキャプチャ用のネットワークインターフェースを特定し、選択します。ネットワークインターフェースは、コンピュータとネットワークの接続ポイントであり、ネットワークトラフィックを監視するには正しいインターフェースを選択する必要があります。これらをコンピュータへの「ドア」のように考えると、ネットワークトラフィックが通ってくる正しいドアを選ぶ必要があります。

  1. まず、システム上のすべての利用可能なネットワークインターフェースをリストアップします。

    tshark -D

    このコマンドは、コンピュータがパケットキャプチャに使用できるすべてのネットワークインターフェースを表示します。出力は通常次のようになります。

    1. eth0
    2. any (Pseudo-device that captures on all interfaces)
    3. lo (Loopback)

    各インターフェースは異なる目的を持っています。eth0 は通常有線 Ethernet 接続を指し、wlan0 は利用可能な場合の無線接続を指します。

  2. 出力を注意深く調べて、アクティブなネットワークインターフェースを特定します。ほとんどの実用的な目的では、次のインターフェースを使用することになります。

    • Ethernet 接続の場合は eth0(実験室や仮想マシンで一般的)
    • コンピュータが WiFi を持っている場合は wlan0(無線接続)
    • すべてのインターフェースで同時にキャプチャする場合は any(便利ですが、ノイズが多くなる可能性があります)
  3. この実験では、仮想環境で一般的に利用可能な eth0 インターフェースを使用します。続行する前に、次のコマンドを実行して、このインターフェースが存在し、アクティブであることを確認しましょう。

    ip link show eth0

    このコマンドは、eth0 インターフェースに関する詳細情報を表示します。インターフェースが存在し、その現在の状態(UP/DOWN)を示す出力が表示されるはずです。コマンドがエラーを返す場合は、インターフェースがシステム上で利用できない可能性があります。

  4. では、インターフェースの選択をクイックなパケットキャプチャでテストしましょう。次のコマンドを実行して、eth0 インターフェースから正確に 5 つのパケットをキャプチャします。

    tshark -i eth0 -c 5

    -i フラグは使用するインターフェースを指定し、-c 5 は Tshark に 5 つのパケットをキャプチャした後に停止するよう指示します。これは、長時間のキャプチャを行う前に、インターフェースの選択が機能することを確認する良い方法です。パケットがキャプチャされると、ターミナルに表示されます。

パケットキャプチャの開始

このステップでは、前のステップで選択したインターフェースを使用して、Tshark を用いたライブのネットワークトラフィックのキャプチャを開始します。パケットキャプチャは、選択したインターフェースを通過するすべてのネットワーク通信を監視および調査できるため、ネットワーク分析の基本となります。特定のネットワークチャネルで行われているすべての会話を録音するためにマイクをセットアップするようなものです。

  1. まず、作業を行う正しいディレクトリにいることを確認します。

    cd ~/project

    これにより、キャプチャしたすべてのパケットファイルが正しい場所に保存され、作業スペースが整理されます。

  2. 次のコマンドを使用して、選択したインターフェース(eth0)で基本的なパケットキャプチャを開始します。

    tshark -i eth0

    -i フラグは、Tshark にどのインターフェースを監視するかを指示します(この場合は eth0)。このコマンドは、eth0 インターフェース上のすべてのパケットのキャプチャを開始し、それらをターミナルにリアルタイムで表示します。各行は、ソース、宛先、プロトコル、その他の特性に関する詳細を含む単一のネットワークパケットを表します。

  3. 約 30 秒間キャプチャを実行して、いくつかのトラフィックを収集します。次のような出力が表示されます。

    1 0.000000000 192.168.1.2 → 192.168.1.1 TCP 74 55922 → 80 [SYN] Seq=0 Win=64240 Len=0
    2 0.000123456 192.168.1.1 → 192.168.1.2 TCP 74 80 → 55922 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0

    この例は、2 つのデバイス間の TCP ハンドシェイクを示しています。最初の行は接続を開始する SYN パケットを示し、2 番目の行は応答(SYN - ACK)を示しています。

  4. キャプチャを停止するには、ターミナルで Ctrl+C を押します。このキーボードショートカットは、Tshark に割り込み信号を送信します。その後、ツールは次のようなキャプチャ統計情報を表示します。

    ^C123 packets captured

    この要約は、セッション中にキャプチャされたパケットの数を示しています。

  5. より制御されたキャプチャを行うには、キャプチャするパケットの正確な数を指定することができます(例えば、50 個のパケット)。

    tshark -i eth0 -c 50

    -c フラグは「count」の略で、指定された数のパケットをキャプチャした後に Tshark を自動的に停止させます。これは、連続的なキャプチャではなく、ネットワークトラフィックのサンプルのみが必要な場合に便利です。

プロトコルでフィルタリング

このステップでは、Tshark を使用して特定のプロトコルでネットワークトラフィックをフィルタリングする方法を学びます。ネットワークは同時に多様な種類のトラフィックを流すため、プロトコルフィルタリングは不可欠です。フィルタリングすることで、関心のある特定のプロトコルに焦点を当て、関係のないパケットを無視することができ、分析をより効率的に行うことができます。

  1. まず、作業を行う正しいディレクトリにいることを確認します。これにより、プロジェクトファイルが整理されます。

    cd ~/project
  2. 多くの一般的なサービス(ウェブブラウジング(HTTP/HTTPS)やセキュアシェル(SSH)など)で使用される TCP トラフィックから始めましょう。次のコマンドは、20 個の TCP パケットをキャプチャします。

    tshark -i eth0 -f "tcp" -c 20

    -f フラグはキャプチャフィルタを指定し、-c はキャプチャするパケットの数を制限します。

  3. 次に、DNS ルックアップや VoIP サービスなどの軽量通信に使用される UDP トラフィックのキャプチャを試してみましょう。このコマンドは、10 個の UDP パケットをキャプチャします。

    tshark -i eth0 -f "udp" -c 10
  4. ネットワーク診断ツール(ping など)で使用される ICMP パケットの場合、次のコマンドを使用して 5 個のパケットをキャプチャします。

    tshark -i eth0 -f "icmp" -c 5
  5. フィルタを組み合わせて、複数のプロトコルを同時にキャプチャすることができます。この例では、DNS トラフィック(UDP ポート 53)と HTTP トラフィック(TCP ポート 80)の両方をキャプチャし、合計 15 個のパケットを取得します。

    tshark -i eth0 -f "port 53 or port 80" -c 15
  6. キャプチャ後により詳細なフィルタリングを行うには、-Y オプションを使用して表示フィルタを適用します。このコマンドは 30 個のパケットをキャプチャしますが、出力には HTTP または DNS トラフィックのみを表示します。

    tshark -i eth0 -c 30 -Y "http or dns"

    表示フィルタはキャプチャ後に処理されるため、記録される内容に影響を与えることなく、より複雑なフィルタリングを行うことができます。

キャプチャ出力の保存

このステップでは、キャプチャしたネットワークトラフィックをファイルに保存し、後で分析できるようにする方法を学びます。パケットキャプチャを保存することは、後でネットワーク活動を確認したり、チームメンバーと調査結果を共有したり、ライブトラフィックを再度キャプチャすることなく詳細な分析を行ったりすることができるため、非常に重要です。PCAP(Packet CAPture)形式は、ほとんどのネットワーク分析ツールで使用される標準的なファイル形式です。

  1. まず、キャプチャファイルを保存したい正しいディレクトリにいることを確認します。プロジェクトディレクトリは、作業を整理するのに適した場所です。

    cd ~/project
  2. キャプチャしたパケットを保存する基本的なコマンドでは、-w フラグを使用して出力ファイルを指定します。この例では、インターフェース eth0 から 50 個のパケットをキャプチャし、PCAP 形式で保存します。

    tshark -i eth0 -c 50 -w capture.pcap

    .pcap 拡張子は重要です。これは、ほとんどのネットワーク分析ツールで開くことができる標準的なパケットキャプチャファイルであることを示します。

  3. より適切な整理のために、キャプチャ用の専用ディレクトリを作成することができます。このコマンドは、まず 'captures' ディレクトリが存在しない場合は作成し、次に HTTP トラフィック(ポート 80)のみをキャプチャし、説明的なファイル名で保存します。

    mkdir -p captures && tshark -i eth0 -c 30 -w captures/http_traffic.pcap -f "port 80"
  4. 保存したキャプチャファイルを確認するには、-r(read)オプションを使用します。これにより、ライブキャプチャと同じようにパケットがターミナルに表示されます。

    tshark -r capture.pcap
  5. より高度なワークフローでは、まずすべてのトラフィックをキャプチャし、後で特定のプロトコルを抽出することができます。この例では、100 個のパケットをキャプチャし、次に DNS トラフィックのみを新しいファイルにフィルタリングします。

    tshark -i eth0 -c 100 -w full_capture.pcap \
      && tshark -r full_capture.pcap -Y "dns" -w dns_only.pcap
  6. 最後に、保存したキャプチャをサイズとともに一覧表示することで、それらを確認します。これにより、ファイルが作成されたことを確認でき、キャプチャされたデータ量の目安がわかります。

    ls -lh *.pcap

    -lh オプションを使用すると、ファイルサイズがバイトではなく人間が読みやすい形式(KB、MB)で表示されるため、出力が読みやすくなります。

まとめ

この実験では、ネットワークパケット分析のために Tshark をインストールし、設定する方法を学びました。そのプロセスには、apt を使った Tshark のインストール、パッケージリストの更新、tshark --version でインストールを確認することが含まれていました。

また、tshark -D を使ってネットワークインターフェースを特定し、トラフィックキャプチャに適したインターフェースを選択する練習も行いました。これらの基本的なスキルは、将来の演習でより高度なネットワークプロトコル分析を行うための準備となります。