はじめに
この実験では、Wireshark のキャプチャフィルタを使用して、特定の条件に基づいてネットワークトラフィックを選択的にキャプチャする方法を学びます。キャプチャフィルタは、関連するデータに集中し、関係のないトラフィックを除外することができる強力なツールであり、分析をより効率的に行うことができます。
様々なキャプチャフィルタ式を探索し、実際のシナリオに適用します。この実践的な経験を通じて、ネットワークのトラブルシューティングやセキュリティ分析のスキルが向上します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Wireshark のキャプチャフィルタを使用して、特定の条件に基づいてネットワークトラフィックを選択的にキャプチャする方法を学びます。キャプチャフィルタは、関連するデータに集中し、関係のないトラフィックを除外することができる強力なツールであり、分析をより効率的に行うことができます。
様々なキャプチャフィルタ式を探索し、実際のシナリオに適用します。この実践的な経験を通じて、ネットワークのトラブルシューティングやセキュリティ分析のスキルが向上します。
ネットワーク分析の世界では、大量のデータを扱うことが圧倒的に困難になることがあります。そこで役立つのが、Wireshark のキャプチャフィルタです。キャプチャフィルタを使用すると、特定の条件に一致するパケットのみを収集することができます。これにより、分析する必要のあるデータ量が大幅に削減されます。キャプチャフィルタは表示フィルタとは異なることに注意することが重要です。表示フィルタは、すでにキャプチャされたパケットをフィルタリングするために使用されますが、キャプチャフィルタはパケットキャプチャの過程で機能します。
キャプチャフィルタは、Berkeley Packet Filter (BPF) 構文を使用します。BPF は、Wireshark のようなアプリケーションがネットワークパケットを処理する前に、それらをフィルタリングするために設計された特殊な言語です。これらのフィルタを適用することで、いくつかの重要な目標を達成することができます。
Wireshark のキャプチャフィルタは、libpcap フィルタ言語に基づく特定の構文を使用します。いくつかの一般的な要素を見てみましょう。
host
:この要素は、IP アドレスまたはホスト名に基づいてトラフィックをフィルタリングします。たとえば、フィルタ host 192.168.0.2
を使用すると、Wireshark は指定された IP アドレスへの、またはそこからのすべてのトラフィックをキャプチャします。net
:これは、ネットワークアドレスとサブネットマスクに基づいてトラフィックをフィルタリングします。たとえば、フィルタ net 10.0.0.0/24
は、10.0.0.0/24 ネットワークからのトラフィックをキャプチャします。port
:これは、ポート番号に基づいてトラフィックをフィルタリングします。たとえば、port 80
は HTTP トラフィックをキャプチャするために使用されます。なぜなら、HTTP は通常ポート 80 を使用するからです。protocol
:これは、プロトコルに基づいてトラフィックをフィルタリングします。たとえば、tcp
はすべての TCP トラフィックをキャプチャし、udp
はすべての UDP トラフィックをキャプチャします。これらの要素は、論理演算子を使用して組み合わせることができます。
and
または &&
:この演算子を使用すると、パケットをキャプチャするには両方の条件が真でなければなりません。or
または ||
:この演算子を使用すると、パケットをキャプチャするにはいずれかの条件が真であればよいです。not
または !
:この演算子は条件を否定します。したがって、not tcp
を使用すると、すべての非 TCP トラフィックがキャプチャされます。では、学んだことを実践してみましょう。以下の手順に従って、Wireshark を開き、基本的なキャプチャフィルタを適用します。
まず、ターミナルを開く必要があります。デスクトップのタスクバーにあるターミナルアイコンをクリックするか、Ctrl+Alt+T
を押すことで開くことができます。
ターミナルが開いたら、以下のコマンドを入力して Wireshark を起動します。
wireshark
Wireshark が開くと、メインの起動画面が表示されます。この画面には、システム上のすべての利用可能なネットワークインターフェイスが表示されます。
Wireshark ウィンドウの上部にある「Capture Filter:」入力フィールドを探します。ここにキャプチャフィルタを入力します。
フィルタボックスに tcp
と入力します。これにより、Wireshark に対して TCP パケットのみをキャプチャするよう指示しています。
インターフェイスのリストから、any
とラベル付けされたものを選択します。any
を選択すると、Wireshark はすべてのネットワークインターフェイスでパケットをキャプチャします。
青いサメのヒレの Start
ボタンをクリックします。これにより、適用したフィルタでパケットキャプチャプロセスが開始されます。
Wireshark を約 10 - 15 秒間実行します。この間、いくつかの TCP パケットがキャプチャされます。メインウィンドウにパケットが表示され始めるはずです。
キャプチャを停止するには、ツールバーの赤い四角の Stop
ボタンをクリックします。
次に、キャプチャしたパケットを後で分析するために保存します。メニューバーで File
> Save As
をクリックします。
ファイル保存ダイアログで、ディレクトリ /home/labex/project
に移動します。
ファイル名として step1.pcapng
を入力し、Save
をクリックします。
これで、基本的なキャプチャフィルタを適用して TCP パケットのみを収集し、結果を後で分析するために保存することに成功しました。
このステップでは、特定のネットワークトラフィックのキャプチャに焦点を当てます。具体的には、ポート 80 の HTTP トラフィックをキャプチャするために、より具体的なキャプチャフィルタを適用する方法を学びます。ポート 80 の HTTP トラフィックは、暗号化されていないウェブ通信に使用されるため、インターネット上で非常に一般的です。フィルタを設定した後、スクリプトを使用してテストトラフィックを生成します。これにより、実際のシナリオでフィルタがどのように機能するかを確認できます。
まず、ポート 80 用のフィルタを使用して新しいキャプチャを設定しましょう。新しいキャプチャを開始する前に、以前のキャプチャが開いていないことを確認する必要があります。
以前のキャプチャがまだ開いている場合は、File
> Close
をクリックするか、パケットリストの右上隅にある Close this capture file
ボタン (X) をクリックして閉じます。このステップは重要です。複数のキャプチャが開いていると混乱を招き、新しいキャプチャの精度に影響を与える可能性があります。
以前のキャプチャを閉じると、利用可能なインターフェイスが表示される Wireshark のウェルカム画面が表示されます。この画面で新しいキャプチャの設定を開始します。
今回は、キャプチャフィルタを設定するためにより詳細な方法を使用します。Capture Options
ボタンをクリックするか (またはメニューで Capture
> Options
を選択します)。Capture Options
ダイアログでは、Wireshark がパケットをキャプチャする方法をより詳細に制御でき、キャプチャフィルタの設定も可能です。
Capture Options
ダイアログでは、インターフェイスのリストと下部に Capture Filter
入力ボックスが表示されます。インターフェイスはシステム上で利用可能なネットワーク接続を表し、Capture Filter
ボックスにはキャプチャしたいパケットの条件を指定します。
Capture Filter
ボックスをクリックし、フィルタ port 80
を入力します。このフィルタは、ポート 80 を使用するすべてのトラフィック (TCP と UDP の両方) をキャプチャします。ポート 80 は一般的に HTTP 通信に使用されるため、このフィルタを使用することで、Wireshark に対してこのポートの HTTP トラフィックに関連するパケットのみをキャプチャするよう指示しています。
あるいは、Capture Filter:
ボタンをクリックして、保存されたフィルタブックマークから選択することもできます。頻繁に使用する一連のフィルタがある場合、これは便利です。
フィルタ選択ダイアログでは、事前定義されたフィルタから選択するか、新しいフィルタを作成することができます。現時点では、フィルタボックスに直接 port 80
を入力しましょう。これにより、関心のある特定のトラフィックをキャプチャすることが保証されます。
インターフェイス any
が選択されていることを確認し、Start
ボタンをクリックして、フィルタに一致するパケットのキャプチャを開始します。any
を選択すると、Wireshark はすべての利用可能なネットワークインターフェイスからパケットをキャプチャします。
Wireshark がポート 80 のトラフィックをキャプチャしているので、フィルタの動作を確認するためにテストトラフィックを生成しましょう。これにより、フィルタが期待どおりに機能していることを確認できます。
タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+T
を押して、新しいターミナルウィンドウを開きます。ターミナルでは、テストトラフィックを生成するためのコマンドを実行します。
新しいターミナルで、プロジェクトディレクトリに移動します。
cd /home/labex/project
このコマンドは、現在の作業ディレクトリを、トラフィックを生成するためのスクリプトが保存されているプロジェクトディレクトリに変更します。
事前に作成されたスクリプトを実行して、シミュレートされた HTTP トラフィックを生成します。
./simulate_traffic.sh
このスクリプトは、ポート 80 で待機する簡単なサーバーを作成し、それにいくつかのデータを送信して、実際の HTTP トラフィックをシミュレートするように設計されています。
次のような出力が表示されるはずです。
Netcat server listening on port 80...
Sending data to port 80...
Please check the Wireshark output for the data sent to port 80.
この出力は、スクリプトが正常に動作しており、データがポート 80 に送信されていることを示しています。
このスクリプトは、ポート 80 で待機する簡単なサーバーを作成し、それに「Hello, Wireshark!」という短いメッセージを送信します。フィルタが正常に機能している場合、このメッセージは Wireshark によってキャプチャされます。
Wireshark ウィンドウに戻ります。スクリプトによって生成されたパケットが表示されるはずです。これらのパケットは、先ほど生成したテストトラフィックの結果です。
これらのパケットは、キャプチャフィルタに一致するポート 80 での通信を示すはずです。これにより、フィルタが期待どおりに機能していることが確認されます。
パケットリストには、少なくとも 3 つのパケットが表示されるはずです。
パケットの 1 つをクリックして、中央のペインに詳細を表示します。矢印アイコンをクリックすると、セクションを展開できます。これにより、パケットのヘッダーやデータなど、異なる部分を表示できます。
ツールバーの赤い四角の Stop
ボタンをクリックして、キャプチャを停止します。新しいパケットが追加されることなく、キャプチャされたパケットの分析を開始できるように、キャプチャを停止することは重要です。
メニューバーで File
> Save As
をクリックして、キャプチャされたパケットを保存します。パケットを保存することで、後でさらに分析するために参照することができます。
ファイル保存ダイアログで、ディレクトリ /home/labex/project
に移動します。これは、キャプチャされたパケットを保存したいディレクトリです。
ファイル名として step2.pcapng
を入力し、Save
をクリックします。.pcapng
ファイル形式は、ネットワークパケットキャプチャを保存するための一般的な形式です。
これで、ポート 80 のトラフィックのみを収集するために特定のキャプチャフィルタを適用し、このフィルタに一致する実際のトラフィックを観察することに成功しました。
このステップでは、すでにキャプチャしたトラフィックを分析するために表示フィルタを使用する方法を学びます。始める前に、キャプチャフィルタと表示フィルタの違いを理解することが重要です。キャプチャフィルタは、そもそもどのトラフィックを収集するかを決定するために使用されます。一方、表示フィルタを使用すると、すでにキャプチャされたパケットの特定の部分に焦点を当てることができます。これらは、キャプチャされたデータの虫眼鏡のようなもので、関心のある詳細を絞り込むのに役立ちます。
キャプチャフィルタと表示フィルタの違いを詳しく見てみましょう。
次に、以前にキャプチャしたパケットを含むファイルを開きましょう。
ファイル (File)
> 開く (Open)
をクリックします。これは、多くのソフトウェアアプリケーションでファイルにアクセスする一般的な方法です。/home/labex/project
ディレクトリに移動します。ここにキャプチャされたファイルが保存されています。step2.pcapng
ファイルを選択し、開く (Open)
をクリックします。 .pcapng
ファイル形式は、ネットワークパケットデータを保存するためによく使用されます。次に、キャプチャされたパケットに表示フィルタを適用します。
Wireshark ウィンドウの上部にある表示フィルタツールバーを見つけます。これは、以前に使用したキャプチャフィルタとは異なります。アクティブなときは、薄い緑色の背景になっています。表示フィルタツールバーは、特定のパケットを表示するためのフィルタ式を入力する場所です。
表示フィルタフィールドに tcp
と入力し、Enter キーを押すか、右矢印ボタンをクリックします。 tcp
と入力することで、TCP プロトコルを使用するパケットのみを表示するように Wireshark に指示しています。これにより、TCP パケットのみが表示され、他のプロトコルパケットが存在する場合はフィルタリングされます。
新しいキャプチャを必要とせずに、パケットがすぐに表示でフィルタリングされることに注意してください。これは、表示フィルタを使用する利点の 1 つです。トラフィックを再度キャプチャしなくても、キャプチャされたデータのさまざまな側面をすばやく分析できます。
次に、より具体的な表示フィルタを試してみましょう。フィルタバーの右側にある X
ボタンをクリックして、現在のフィルタをクリアします。これにより、以前のフィルタが削除され、キャプチャされたすべてのパケットが再度表示されます。
次のフィルタを入力して、「Wireshark」という単語を含むパケットを表示します。
frame contains "Wireshark"
このフィルタは、パケットのフレームデータで「Wireshark」という単語を検索します。
Enter キーを押すか、右矢印をクリックしてフィルタを適用します。
これで、「Wireshark」というテキストを含むパケットのみが表示されるはずです。これは、"Hello, Wireshark!" メッセージを含む 1 つまたは 2 つのパケットである可能性があります。これは、表示フィルタを使用して、キャプチャされたパケット内の特定の情報を見つける方法を示しています。
パケットリストでこれらのパケットの 1 つをクリックすると、中央のペインにその詳細が表示されます。 "Data" セクションを探してください。 "Hello, Wireshark!" テキストが表示されるはずです。これにより、パケットの内容をより詳細に調べることができます。
表示フィルタを使用してトラフィックを分析したので、見つかった内容を文書化する簡単なレポートを作成しましょう。
frame contains "Wireshark"
フィルタに一致するパケットの数をカウントします。この数は、Wireshark ウィンドウの下部にあるステータスバーに表示され、「Displayed: X of Y packets」のように表示されます。この数は、「Wireshark」という単語を含むパケットの数を表します。
タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+T
を押して、ターミナルウィンドウを開きます。ターミナルは、コンピューターでコマンドを実行できる強力なツールです。
ターミナルで、パケット数情報を含むレポートファイルを作成します。
echo "Number of packets matching the filter expression: 1" > /home/labex/project/report.txt
注:上記のコマンドの 1
を、フィルタに一致する実際に観測されたパケット数に置き換えてください。この数は、スクリプトの実行方法によって異なる場合があります。
これで、表示フィルタを適用してキャプチャされたネットワークトラフィックを分析し、調査結果をレポートファイルに文書化することに成功しました。
この実験では、Wireshark のキャプチャフィルタを使用して、特定の基準に従ってネットワークトラフィックを選択的にキャプチャし、分析する方法を学びました。Berkeley Packet Filter 言語に基づくキャプチャフィルタの基本構文を理解し、実際のキャプチャ中に適用することや、キャプチャフィルタと表示フィルタを区別するなどの重要なスキルを練習しました。
これらのスキルは、ネットワークの問題やセキュリティインシデントを扱うネットワーク管理者、セキュリティアナリスト、および IT 専門家にとって非常に重要です。キャプチャフィルタを習得することで、関連するトラフィックに焦点を当てることができ、より効率的なネットワーク分析が可能になります。ネットワーク分析のスキルを向上させるにつれて、これらのスキルを基に、複雑な環境で高度なトラフィック選択を行うための複雑なフィルタを作成することができます。