Wireshark でトラフィックをフィルタリングする

WiresharkWiresharkBeginner
今すぐ練習

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

はじめに

この実験では、ネットワーク分析やサイバーセキュリティ調査に欠かせないツールである Wireshark を使用して、ネットワークトラフィックをフィルタリングする方法を学びます。生のパケットをキャプチャし、特定のトラフィックを分離するために表示フィルタを適用し、フィルタリングされた結果をエクスポートしてさらに調査する練習を行います。

この実験では、インターフェイスの選択からトラフィック分析まで、Wireshark の主要な機能を実践的に体験します。これらのスキルは、ネットワークパターンの特定、接続性の問題のトラブルシューティング、ネットワーク通信における潜在的なセキュリティ脅威の検出に役立ちます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") subgraph Lab Skills wireshark/installation -.-> lab-549939{{"Wireshark でトラフィックをフィルタリングする"}} wireshark/interface -.-> lab-549939{{"Wireshark でトラフィックをフィルタリングする"}} wireshark/packet_capture -.-> lab-549939{{"Wireshark でトラフィックをフィルタリングする"}} wireshark/display_filters -.-> lab-549939{{"Wireshark でトラフィックをフィルタリングする"}} wireshark/export_packets -.-> lab-549939{{"Wireshark でトラフィックをフィルタリングする"}} end

Wireshark のインストール

このステップでは、ネットワークトラフィックをリアルタイムで調査できる強力なネットワークプロトコルアナライザである Wireshark をインストールします。これはネットワーク通信の顕微鏡のようなもので、ネットワークを流れるパケットをキャプチャし、読みやすい形式で表示します。

始める前に、Wireshark はネットワークデータをキャプチャするために特別な権限が必要であることを理解することが重要です。そのため、LabEx 仮想マシン (VM) で正常に動作するように注意深く設定します。

  1. まず、パッケージリストを更新する必要があります。これにより、システムが最新の利用可能なソフトウェアバージョンを認識するようになります。

    sudo apt update
  2. 次に、このコマンドで Wireshark をインストールします。-y フラグはインストールを自動的に確認します。

    sudo apt install -y wireshark
  3. インストール中に、Wireshark は非スーパーユーザーアクセスについて尋ねます。通常のユーザーがパケットをキャプチャできるように、debconf (Debian 設定システム) を使用して事前にこれを設定します。

    echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
  4. 次に、ユーザーを 'wireshark' グループに追加します。これにより、root アクセスを必要とせずに必要な権限が付与されます。

    sudo usermod -aG wireshark $USER
  5. バージョンを確認することで、インストールが正常に行われたことを検証しましょう。これにより、Wireshark が正しくインストールされていることが確認できます。

    wireshark --version

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

    Wireshark 3.6.8 (Git v3.6.8 packaged as 3.6.8-1~ubuntu20.04.0)
  6. グループメンバーシップの変更には、新しいログインセッションが必要です。通常のシステムではログアウトして再ログインする必要がありますが、LabEx では、変更を有効にするために新しいターミナルタブを開くだけです。

Wireshark のようなネットワーク監視ツールはネットワークインターフェイスにアクセスするために特別な権限が必要ですが、常に root アクセスを必要とせずに安全に使用したいため、これらの設定手順は重要です。

ネットワークインターフェイスの選択

このステップでは、Wireshark でパケットキャプチャを行うためのネットワークインターフェイスを識別して選択する方法を学びます。ネットワークインターフェイスは、コンピュータとネットワークの接続ポイントです。ネットワークトラフィックがコンピュータに出入りする「ドア」のようなものです。各インターフェイスには一意の名前と特性があり、キャプチャできるトラフィックの種類が決まります。

  1. まず、Wireshark の組み込みコマンドを使用して、システム上の利用可能なすべてのネットワークインターフェイスをリストアップしましょう。これにより、選択する前にすべての可能なキャプチャポイントを確認できます。

    wireshark -D

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

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

    出力には番号付きのインターフェイス名が表示されます。'eth0' は通常、物理的な Ethernet ポートであり、'lo' は内部のループバックトラフィック用です。

  2. より詳細なインターフェイス情報を取得するには、Linux の ip コマンドを使用します。これにより、名前だけでなく、現在の動作状態も表示されます。

    ip link show

    これにより、すべてのネットワークインターフェイスとその現在の状態 (UP/DOWN) が表示されます。トラフィックをキャプチャするには、インターフェイスが UP 状態である必要があります。

  3. この実験環境では、Linux システムの主な Ethernet インターフェイスである eth0 インターフェイスを使用します。使用する前に、その状態を確認してアクティブであることを確認しましょう。

    ip link show eth0

    出力に「state UP」が表示されていることを確認して、インターフェイスがアクティブであることを確認します。DOWN と表示されている場合は、続行する前に接続のトラブルシューティングを行う必要があります。

  4. 次に、Wireshark のターミナルバージョン (tshark) を使用して、このインターフェイスでのパケットキャプチャをテストしましょう。この簡単なテストは、完全な GUI を使用する前にすべてが正常に動作することを確認するのに役立ちます。

    sudo tshark -i eth0 -c 5

    このコマンドは、eth0 インターフェイスから 5 つのパケットをキャプチャし (-i でインターフェイスを指定、-c でパケット数を設定)、ターミナルに表示します。パケットキャプチャには root 権限が必要なため、sudo が必要です。

  5. より高度なフィルタリングを行うために、後のステップで使用する GUI モードで Wireshark を起動するには、次のコマンドを実行します。

    wireshark &

    Wireshark の GUI では、メインウィンドウに利用可能なインターフェイスのリストが表示されます。アンパサンド (&) は、Wireshark をバックグラウンドで実行し、ターミナルを引き続き使用できるようにします。

リアルタイムトラフィックのキャプチャ

このステップでは、Wireshark を使用してリアルタイムのネットワークトラフィックをキャプチャする方法を学びます。パケットキャプチャは、ネットワークトラフィックを傍受して記録するプロセスで、ネットワーク通信をリアルタイムで分析することができます。これは、ネットワークのトラブルシューティングやセキュリティ分析において基本的な操作です。

  1. まず、ターミナルから GUI モードで Wireshark を起動します。& 記号はコマンドをバックグラウンドで実行するため、ターミナルを引き続き使用できます。

    wireshark &
  2. Wireshark が開くと、利用可能なネットワークインターフェイスのリストが表示されます。これらは、マシン上の物理的および仮想的なネットワーク接続を表しています。前のステップで特定した eth0(通常は主な Ethernet インターフェイス)をダブルクリックして選択します。

  3. Wireshark はすぐにこのインターフェイス上のすべてのネットワークトラフィックのキャプチャを開始します。メインウィンドウはパケットを 3 つのセクションで表示します:パケットリスト(概要)、パケット詳細(プロトコルの分解)、およびパケットバイト(16 進数の生データ)。パケットはキャプチャされるとリアルタイムで表示されます。

  4. キャプチャ用のテストトラフィックを生成するには、新しいターミナルを開き、簡単な ping コマンドを実行します。これは Google の DNS サーバー (8.8.8.8) に ICMP エコー要求を送信します。

    ping -c 4 8.8.8.8
  5. Wireshark では、ここでキャプチャに ICMP パケットが表示されるはずです。これらは ping 要求と応答を表しています。各パケットの行には重要なメタデータが表示されます:

    • パケット番号(キャプチャ内の順序)
    • タイムスタンプ(キャプチャされた時刻)
    • 送信元と宛先の IP アドレス
    • プロトコル(この場合は ICMP)
    • パケットの長さ(バイト)
    • パケット内容の簡単な情報
  6. キャプチャを終了するには、ツールバーの赤い四角の「停止」ボタンをクリックします。これにより表示が固定され、キャプチャされたパケットを調べることができます。

  7. キャプチャを後で分析するために保存するには:

    • 「ファイル」→「名前を付けて保存」をクリックします。
    • ファイル名を ping_capture.pcapng(.pcapng は Wireshark のキャプチャ形式)とします。
    • アクセスしやすいように ~/project ディレクトリに保存します。
  8. コマンドラインでのキャプチャ(自動化やリモートシステムで役立ちます)には、Wireshark のコマンドラインバージョンである tshark を使用できます。このコマンドは eth0 から正確に 10 個のパケットをキャプチャして保存します。

    sudo tshark -i eth0 -w ~/project/cli_capture.pcap -c 10

    -w フラグは出力ファイルを指定し、-c はパケット数を制限します。

表示フィルタの適用

このステップでは、Wireshark の表示フィルタを使用して特定のネットワークトラフィックに焦点を当てる方法を学びます。表示フィルタは、あなたが指定した条件に一致するパケットのみを表示することで、キャプチャしたパケットの分析を支援します。これは、数千のパケットの中からあなたが興味を持っている正確なネットワーク通信をすばやく見つけるための検索用語のようなものです。

  1. まず、以前に保存したキャプチャファイルを Wireshark で開きます。

    wireshark ~/project/ping_capture.pcapng &

    このコマンドは、Wireshark をバックグラウンドで開き (&)、保存したパケットキャプチャを読み込みます。.pcapng ファイルには、以前に記録したすべてのネットワークトラフィックが含まれています。

  2. ICMP トラフィック(ping パケット)をフィルタリングするには、上部のフィルタバーに以下を入力します。

    icmp

    Enter キーを押すと、表示には ICMP パケットのみが表示されます。ICMP は ping コマンドで使用されるプロトコルです。このフィルタを使用すると、ping に関連するネットワークアクティビティを他のトラフィックから分離することができます。

  3. 特定の IP アドレス(例えば 8.8.8.8)への、または特定の IP アドレスからのトラフィックをフィルタリングするには、以下を入力します。

    ip.addr == 8.8.8.8

    このフィルタは、8.8.8.8 が送信元または宛先の IP アドレスとして表示されるすべてのパケットを表示します。二重等号 (==) は、Wireshark フィルタで完全一致を指定するために使用されます。

  4. 論理演算子を使用してフィルタを組み合わせることができます。

    icmp && ip.addr == 8.8.8.8

    これは、8.8.8.8 を関与する ICMP パケットのみを表示します。&& 演算子は「AND」を意味するため、パケットが表示されるには両方の条件が true である必要があります。

  5. その他の有用なフィルタの例をいくつか紹介します。

    • HTTP トラフィック:http(ウェブ閲覧アクティビティを表示)
    • DNS クエリ:dns(ドメイン名の照会を表示)
    • 特定の送信元からのトラフィック:ip.src == 192.168.1.1(この IP アドレスから発信されたパケットを表示)
    • 特定の宛先へのトラフィック:ip.dst == 8.8.8.8(この IP アドレスに送信されたパケットを表示)
  6. フィルタリングしたビューを保存するには、以下の手順を行います。

    • 「ファイル」→「指定されたパケットをエクスポート」をクリックします。
    • 「表示されているもの」を選択し、~/project ディレクトリに filtered_ping.pcapng として保存します。

    これにより、フィルタリングされたパケットのみを含む新しいキャプチャファイルが作成されます。これは、特定のトラフィックパターンを共有したり、さらに分析するために便利です。

  7. コマンドラインでのフィルタリング(tshark を使用)するには、以下のコマンドを実行します。

    tshark -r ~/project/ping_capture.pcapng -Y "icmp" -w ~/project/tshark_filtered.pcap

    この代替方法では、Wireshark のコマンドラインバージョン(tshark)を使用して、グラフィカルインターフェイスを開かずにパケットをフィルタリングして保存します。-Y フラグは、Wireshark GUI で使用したのと同様のフィルタ式を指定します。

フィルタリングされたデータのエクスポート

このステップでは、分析やレポート作成のために、Wireshark からフィルタリングされたパケットデータをさまざまな形式でエクスポートする方法を学びます。データをエクスポートすることで、同僚と調査結果を共有したり、他の分析ツールにデータをインポートすることができます。

  1. まず、Wireshark でフィルタリングされたキャプチャファイルを開きます。これは、前のステップでパケットをキャプチャしてフィルタリングしていることを前提としています。

    wireshark ~/project/filtered_ping.pcapng &
  2. Wireshark のネイティブ形式で、表示されているすべてのパケット(フィルタ適用後)をエクスポートするには、以下の手順を行います。

    • メニューバーで「ファイル」→「指定されたパケットをエクスポート」をクリックします。
    • 現在のフィルタに一致するパケットのみをエクスポートするために、「表示されているもの」が選択されていることを確認します。
    • 後で分析するために、~/project ディレクトリに exported_packets.pcapng として保存します。
  3. Wireshark のコマンドラインツール tshark を使用すると、さまざまな形式でデータをエクスポートできます。以下は一般的な例です。

    • CSV 形式(スプレッドシート分析に便利)でエクスポートする場合:

      tshark -r ~/project/filtered_ping.pcapng -T fields -e frame.number -e ip.src -e ip.dst -E header=y -E separator=, > ~/project/packet_data.csv

      これは、パケット番号、送信元と宛先の IP アドレスを列ヘッダー付きでエクスポートします。

    • 詳細なテキスト出力でエクスポートする場合:

      tshark -r ~/project/filtered_ping.pcapng -V > ~/project/packet_details.txt

      これは、Wireshark のインターフェイスと同様に、完全なパケット詳細を表示します。

  4. JSON 形式は、プログラムによる分析に便利です。すべてのパケットデータを JSON としてエクスポートするには:

    tshark -r ~/project/filtered_ping.pcapng -T json > ~/project/packets.json
  5. エクスポート後、以下のコマンドですべてのファイルが正しく作成されたことを確認します。

    ls -lh ~/project/*.pcapng ~/project/*.csv ~/project/*.txt ~/project/*.json
  6. PCAPNG ファイルにエクスポートされたパケットの数をすばやく確認するには:

    capinfos ~/project/exported_packets.pcapng | grep "Number of packets"

    これにより、パケット数を表示することで、フィルタが期待どおりに機能したことを確認できます。

まとめ

この実験では、実践的な演習を通じて、Wireshark を使用してネットワークトラフィックをフィルタリングする方法を学びました。主要な手順には、Wireshark のインストール、ユーザー権限の設定、ネットワークインターフェイスの特定、および eth0 インターフェイスでのリアルタイムトラフィックのキャプチャが含まれていました。

また、特定のパケットを分析するための表示フィルタの適用と、フィルタリングされたデータのエクスポートの練習も行いました。これらのスキルは、Wireshark の強力なフィルタリング機能を使用した効率的なネットワークトラフィック分析の基礎を提供します。