はじめに
この実験 (lab) では、Wireshark の表示フィルタを使用してネットワークトラフィックを分析し、潜在的なセキュリティ上の脅威を見つける方法を学びます。Wireshark は、強力なネットワークプロトコルアナライザであり、ネットワークパケットをキャプチャして分析できます。これは、サイバーセキュリティの専門家にとって非常に重要です。
これらのフィルタを習得することで、特定のトラフィックタイプをすばやく分離して調べることができます。これにより、分析が効率化され、セキュリティインシデントを検出して処理する能力が向上します。
Wireshark の起動とネットワークトラフィックの分析
このステップでは、Wireshark の使用を開始します。まず、Wireshark の起動方法を学びます。次に、ネットワークトラフィックをキャプチャするか、提供されたサンプルファイルを使用して分析を行います。Wireshark のインターフェースを理解することは、パケットデータを表示および分析するのに役立つため、非常に重要です。
Wireshark の起動 (Launching Wireshark)
Wireshark を起動するには、ターミナルウィンドウを開く必要があります。タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+T を押して開くことができます。ターミナルが開いたら、コマンドを使用して Wireshark を起動します。ターミナルで、次のコマンドを入力して Enter キーを押します。
wireshark
このコマンドは、Wireshark アプリケーションを起動するようにシステムに指示します。数秒後、Wireshark が開きます。次に示すウィンドウと同様のウィンドウが表示されます。

ネットワークキャプチャファイルの操作 (Working with Network Capture Files)
この実験 (lab) では、次の 2 つのオプションがあります。
オプション 1: 提供されたサンプルファイルの使用 (Option 1: Use the Provided Sample File)
サンプルキャプチャファイルが /home/labex/project/sample.pcapng に用意されています。このファイルには、分析できるさまざまなネットワークトラフィックが含まれています。このファイルを開くには:
- Wireshark で、[ファイル] > [開く] に移動します (File > Open)。
/home/labex/project/sample.pcapngに移動します。- 「開く (Open)」をクリックします。

ファイルが Wireshark にロードされ、以前にキャプチャされたさまざまなパケットが表示されます。
オプション 2: 独自のトラフィックのキャプチャ (Option 2: Capture Your Own Traffic)
独自のトラフィックをキャプチャする場合は:
Wireshark のメインウィンドウで、利用可能なネットワークインターフェースのリストを探します。
eth1インターフェースを見つけます。この実験 (lab) 環境では、eth1はパケットのキャプチャに使用するメインのネットワークインターフェースです。eth1をダブルクリックします。この操作により、パケットキャプチャプロセスがすぐに開始されます。新しいターミナルを開き、次を実行して、いくつかのネットワークトラフィックを生成します。
curl www.google.com注: 無料ユーザーはインターネットに接続できません。独自のトラフィックをキャプチャするには、プロにアップグレード (Upgrade to a pro) してください。
十分なパケットをキャプチャしたら(少なくとも 20〜30 パケットを目指してください)、Wireshark ツールバーの赤い四角い「停止 (Stop)」ボタンをクリックします。
Wireshark インターフェースの理解 (Understanding the Wireshark Interface)
Wireshark インターフェースは、3 つのメインパネルに分かれており、それぞれに特定の目的があります。
- パケットリスト (Packet List) (上部パネル): このパネルには、キャプチャされたすべてのパケットが受信された順に表示されます。キャプチャされたトラフィックの概要をすばやく把握できます。
- パケット詳細 (Packet Details) (中央パネル): 上部パネルでパケットを選択すると、この中央パネルに、そのパケットの詳細が階層形式で表示されます。パケットの構造が分解され、送信元 IP アドレス、宛先 IP アドレス、プロトコルタイプなどの情報が表示されます。
- パケットバイト (Packet Bytes) (下部パネル): このパネルには、選択したパケットの生のバイトが 16 進形式で表示されます。特に、送信されている正確なデータを確認する必要がある場合に、詳細な分析に役立ちます。
これらのパネルがどのように連携するかを確認するには、上部パネルでさまざまなパケットをクリックします。中央および下部パネルで、対応する詳細と生のバイトが更新されるのがわかります。
基本的な表示フィルタの理解と適用
このステップでは、Wireshark の表示フィルタについて説明します。表示フィルタは、ネットワークトラフィックを分析する上で不可欠なツールです。キャプチャされたすべてのデータをふるいにかける必要がなく、特定の種類のパケットに焦点を当てるのに役立ちます。このセクションを終えるまでに、表示フィルタとは何か、なぜ便利なのか、基本的な表示フィルタを適用して特定の種類のネットワークトラフィックを分離する方法を理解できるようになります。
表示フィルタとは (What Are Display Filters)
ネットワークトラフィックを分析する場合、キャプチャされたすべてのパケットを 1 つずつ確認するのは大変な作業です。通常は、特定の種類のパケットに焦点を当てたいと考えます。そこで、Wireshark の表示フィルタが登場します。表示フィルタを使用すると、特定の条件を満たすパケットのみを表示できます。これにより、無関係なデータに時間を費やすことがなくなるため、分析プロセスがはるかに効率的になります。
Wireshark の表示フィルタは、特別な構文を使用します。この構文を使用すると、プロトコル、IP アドレス、ポート、さらにはパケットの内容など、さまざまな属性に基づいてパケットをフィルタリングできます。この構文を理解することは、表示フィルタを効果的に使用するための鍵となります。
フィルタツールバー (Filter Toolbar)
Wireshark ウィンドウの上部を見てください。テキストフィールドがあることに気付くでしょう。 「表示フィルタを適用... (Apply a display filter...)」と表示されているか、単に「Expression...」と表示されている場合があります。ここに表示フィルタを入力します。フィルタを入力して Enter キーを押すと、Wireshark はそのフィルタを使用して、関連するパケットのみを表示します。

基本的なプロトコルフィルタ (Basic Protocol Filters)
簡単な例から始めましょう。HTTP トラフィックのみを表示したいとします。HTTP は、Web ブラウジングに使用されるプロトコルです。これを行うには、フィルタツールバーにフィルタを入力します。次のフィルタを入力して、Enter キーを押します。
http

このフィルタを適用すると、Wireshark には HTTP パケットのみが表示されます。他のすべてのパケットは一時的に非表示になります。有効なフィルタを適用すると、フィルタバーが緑色に変わることに気付くでしょう。これは、フィルタが正しく機能していることを視覚的に示すものです。
出力には、HTTP トラフィックに関連するパケットのみが表示されるはずです。これには通常、Web リクエスト (Web サイトに情報を要求する場合) とレスポンス (Web サイトが情報を提供する場合) が含まれます。サンプルファイルに HTTP トラフィックが表示されない場合は、TCP、UDP、DNS など、存在する可能性のある別のプロトコルを試すことができます。
tcp
または、ターミナルで curl コマンドを実行して、より多くの HTTP トラフィックを生成してみてください。
curl www.google.com
IP アドレスフィルタ (IP Address Filters)
次に、IP アドレスに基づいてトラフィックをフィルタリングしましょう。IP アドレスは、ネットワーク上のデバイスの一意の識別子のようなものです。まず、パケットリストを見てください。 「送信元 (Source)」と「宛先 (Destination)」というラベルの付いた列が表示されます。これらの列には、パケットを送受信するデバイスの IP アドレスが表示されます。
キャプチャで頻繁に表示される IP アドレスを特定したら (たとえば、192.168.1.1 が表示されるとします)、それを使用してフィルタを作成できます。次のフィルタをフィルタツールバーに入力して、その送信元からのパケットのみを表示します。
ip.src == 192.168.3.131

192.168.3.131 は、実際にキャプチャに表示される IP アドレスに置き換えることができます。このフィルタを適用すると、その送信元 IP アドレスを持つパケットのみが表示されます。
すべてのパケットを再度表示する場合は、現在のフィルタをクリアできます。フィルタバーの右側にある「クリア (Clear)」ボタン (X) をクリックするだけです。
ポートフィルタ (Port Filters)
多くのネットワークサービスは、特定のポートで動作します。ポートは、特定の種類のネットワークトラフィックがデバイスに出入りできるようにするデバイス上のドアのようなものです。たとえば、HTTP は通常ポート 80 を使用します。ポート番号でパケットをフィルタリングするには、次のフィルタを使用できます。
tcp.port == 80
このフィルタは、TCP ポート 80 を使用する送受信パケットの両方を表示します。キャプチャで利用可能なものに応じて、443 (HTTPS) や 53 (DNS) などの他の一般的なポートも試すことができます。
フィルタの組み合わせ (Combining Filters)
and や or などの論理演算子を使用してフィルタを組み合わせることで、フィルタをより強力にすることができます。たとえば、ポート 80 を使用する HTTP トラフィックのみを表示する場合は、次のフィルタを使用できます。
http and tcp.port == 80

さまざまなフィルタの組み合わせを適用し、表示されるパケットがどのように変化するかを観察してみてください。新しいフィルタを試す前に、「クリア (Clear)」ボタンをクリックして前のフィルタをクリアするか、フィルタバーで既存のフィルタを直接変更して、それを基に構築することができます。
高度なフィルタリングテクニック
このステップでは、詳細なネットワークトラフィック分析のために、より洗練されたフィルタを作成する方法について説明します。初心者の方は、なぜ高度なフィルタリングが必要なのか疑問に思うかもしれません。実際のシナリオでは、ネットワークキャプチャファイルは非常に大きく、あらゆる種類のトラフィックで満たされている可能性があります。高度なフィルタリングテクニックは、セキュリティ専門家にとって強力な拡大鏡のようなものです。これらのテクニックは、これらの大きなキャプチャファイル内のデータの海から、疑わしいトラフィックや重要なトラフィックをすばやく見つけ出すのに役立ちます。
複数の条件を持つ複雑なフィルタ (Complex Filters with Multiple Conditions)
Wireshark では、複数の条件を組み合わせて複雑なフィルタを作成できます。これは、トラフィック分析でより正確さを期したい場合に非常に役立ちます。まず、HTTP GET リクエストを見つけるためのフィルタを作成しましょう。
http.request.method == "GET"
このフィルタは、GET リクエストを含む HTTP パケットのみを表示するように設計されています。このフィルタを適用すると、Web サーバーに送信されたリクエストであるパケットが表示されます。このフィルタを使用する理由は、GET リクエストがサーバーからデータを取得するために使用される一般的な HTTP リクエストのタイプであるためです。これらのリクエストを分離することで、ネットワーク内のデータ取得アクティビティに焦点を当てることができます。
サンプルファイルに HTTP GET リクエストが含まれていない場合は、接続試行を示す TCP SYN パケットを見つけるために、次の代替フィルタを試してください。
tcp.flags.syn == 1
次に、フィルタをより具体的にしましょう。ポート条件を追加します。
tcp.port == 80 and http.request.method == "GET"
この新しいフィルタは、標準の HTTP ポート (80) で発生する HTTP GET リクエストのみを表示します。標準の HTTP ポートは、暗号化されていない Web トラフィックに広く使用されています。このポート条件を追加することで、一般的な HTTP 通信チャネルを使用している GET リクエストのみに検索を絞り込んでいます。
パケットサイズに基づくフィルタリング (Filtering Based on Packet Size)
ネットワーク攻撃には、通常とは異なるサイズのパケットが関与することがよくあります。攻撃者は、悪意のあるデータを隠したり、ネットワークの正常な機能を妨害したりするために、大きいパケットまたは小さいパケットを使用する可能性があります。パケットサイズに基づいてフィルタリングするには、特定の構文を使用します。
tcp.len >= 100 and tcp.len <= 500
このフィルタは、ペイロード長が 100〜500 バイトの TCP パケットを表示します。これらの値は、必要に応じて調整できます。たとえば、攻撃に大きなパケットが関与している疑いがある場合は、上限を増やすことができます。パケットサイズに基づいてフィルタリングすることで、攻撃を示す可能性のある異常なトラフィックパターンを特定できます。
特定のコンテンツに基づくフィルタリング (Filtering Based on Specific Content)
パケット内の特定のコンテンツに基づいてトラフィックをフィルタリングすることもできます。これは、特定の Web サイトまたはサービスに関連するトラフィックを探している場合に非常に役立ちます。たとえば、特定の Web サイトに関連する HTTP トラフィックを見つけましょう。
http.host contains "google"

このフィルタは、ホストヘッダーに「google」が含まれる HTTP トラフィックのみを表示します。 「google」は、分析に関心のある任意のドメインに置き換えることができます。HTTP リクエストのホストヘッダーは、クライアントがアクセスしようとしている Web サイトをサーバーに伝えます。ホストヘッダーに基づいてフィルタリングすることで、特定のドメインに関連するトラフィックに焦点を当てることができます。
サンプルファイルにホストヘッダーを持つ HTTP トラフィックがない場合は、次のより一般的なコンテンツフィルタを試してください。
frame contains "http"
テキスト検索のための "contains" 演算子の使用 (Using the "contains" Operator for Text Searching)
contains 演算子は、パケット内の特定のテキスト文字列を検索するための便利なツールです。これにより、パケットデータ内の特定のキーワードを検索できます。
frame contains "password"
このフィルタは、パケットデータ内のどこかに「password」という単語を含むパケットを表示します。これは、起こりうるセキュリティの問題を検出するのに非常に役立ちます。たとえば、パスワードがクリアテキストで送信されている場合 (これは大きなセキュリティリスクです)、このフィルタはそれらのパケットを見つけるのに役立ちます。
または、次のフィルタを試してください。
frame contains "login"

フィルタの否定 (Negating Filters)
特定の種類のトラフィックを除くすべてのトラフィックを表示したい場合があります。そこで、not 演算子の登場です。
not arp
このフィルタは、すべての ARP パケットを非表示にします。ARP (Address Resolution Protocol) は、ローカルネットワーク内の IP アドレスを MAC アドレスにマッピングするために使用されます。場合によっては、ARP トラフィックが非常に一般的になり、分析が煩雑になる可能性があります。 not 演算子を使用することで、このタイプのトラフィックを除外し、他のより関連性の高いパケットに焦点を当てることができます。
フィルタブックマークの保存と適用 (Saving and Applying Filter Bookmarks)
特定のフィルタを頻繁に使用する場合は、毎回入力する必要はありません。ブックマークとして保存できます。手順は次のとおりです。
- フィルタバーにフィルタを入力します。ここに、これまで学習してきたフィルタ式を入力します。
- フィルタバーの右側にある「+」ボタンをクリックします。このボタンは、現在のフィルタをブックマークとして保存するために使用されます。
- フィルタに名前を付けて、「OK」をクリックします。フィルタに名前を付けると、後で簡単に識別できます。
フィルタを保存したら、フィルタドロップダウンメニューでその名前をクリックして適用できます。これにより、時間と労力を節約できます。特に、繰り返し分析を行う場合に便利です。
フィルタリングされたパケットのエクスポート (Exporting Filtered Packets)
トラフィックをフィルタリングして、関心のあるパケットのみを表示した後、これらのパケットのみを新しいファイルに保存したい場合があります。これは、特定の調査結果を同僚と共有したり、さらに分析したりするのに役立ちます。手順は次のとおりです。
- 目的のフィルタを適用します。保存するパケットのみを表示するようにフィルタを設定していることを確認してください。
- [ファイル] > [指定したパケットのエクスポート (File > Export Specified Packets)] をクリックします。このオプションを使用すると、特定のパケットセットをエクスポートできます。
- [パケット範囲 (Packet Range)] セクションで [表示 (Displayed)] が選択されていることを確認します。これにより、現在表示されているパケット (つまり、フィルタに一致するパケット) のみがエクスポートされます。
- ファイル名と場所を選択します。ここで、新しいキャプチャファイルを保存する場所と名前を決定します。
- 「保存 (Save)」をクリックします。これにより、フィルタに一致するパケットのみを含む新しいキャプチャファイルが作成されます。
セキュリティ関連トラフィックの分析
このステップでは、セキュリティ分析のための Wireshark フィルタの使用に焦点を当てます。セキュリティ分析は、ネットワークトラフィック内の潜在的な悪意のあるアクティビティを特定するのに役立つため、サイバーセキュリティの世界では非常に重要です。このセクションを終えるまでに、特定の Wireshark フィルタを使用して、さまざまな種類のセキュリティ脅威を特定できるようになります。
ポートスキャンアクティビティの特定 (Identifying Port Scanning Activities)
ポートスキャンは、攻撃者がターゲットシステムに関する情報を収集するために使用する一般的なテクニックです。攻撃者はこれを使用して、ネットワーク上の開いているポートを見つけ、それを悪用する可能性があります。潜在的なポートスキャンを検出するには、単一のソースから複数のポートへの多数の接続試行を探します。
特定のフィルタを使用して、そのようなアクティビティを特定しましょう。Wireshark で次のフィルタを試してください。
tcp.flags.syn == 1 and tcp.flags.ack == 0
このフィルタは、ACK フラグのない SYN パケットを表示します。TCP 接続では、SYN パケットは接続を開始するために送信される最初のパケットであり、ACK パケットは接続を確認するために使用されます。1 つのソースから異なる宛先ポートへの ACK なしの SYN パケットが多数見られる場合、それはポートスキャンの強力な兆候です。
疑わしい DNS トラフィックの検出 (Detecting Suspicious DNS Traffic)
DNS トンネリングやその他の DNS ベースの攻撃がますます一般的になっています。これらの攻撃は、DNS プロトコルを使用して、データ漏洩やコマンドアンドコントロール (C&C) 通信などの悪意のあるアクティビティを隠蔽します。このような攻撃を検出するには、異常な DNS トラフィックを探す必要があります。
次のフィルタを使用して、DNS クエリを調べます。
dns
このフィルタを適用したら、異常に長いドメイン名や、同じドメインへの大量の DNS リクエストを探します。これらは、データ漏洩または C&C 通信の兆候である可能性があります。
パスワードブルートフォースアタックの特定 (Identifying Password Brute Force Attempts)
パスワードブルートフォースアタックは、攻撃者が SSH や FTP などのサービスへの不正アクセスを取得するための一般的な方法です。ブルートフォースアタックでは、攻撃者は正しいパスワードが見つかるまで、複数のパスワードの組み合わせを試します。
潜在的なブルートフォースパスワードアタックを検出するために、失敗したログイン試行をフィルタリングできます。次のフィルタを使用します。
ftp contains "530" or ssh contains "Failed"
このフィルタは、一般的な失敗応答メッセージを含む FTP および SSH パケットを表示します。同じソースからの複数の失敗が表示される場合は、ブルートフォースアタックを示している可能性があります。
HTTP エラー応答の分析 (Analyzing HTTP Error Responses)
Web アプリケーション攻撃は、多くの場合、HTTP エラー応答を生成します。攻撃者は Web アプリケーションの脆弱性を悪用しようとする可能性があり、これらの試行により、サーバーからエラー応答が発生する可能性があります。
次のフィルタを使用して、これらのエラー応答をフィルタリングします。
http.response.code >= 400
このフィルタは、ステータスコードが 400 以上の HTTP 応答パケットを表示します。これらのステータスコードはすべて、エラー応答を表します。これらのパケットを調べることで、試みられた Web エクスプロイトを特定できます。
クリアテキストの認証情報の検索 (Finding Clear-Text Credentials)
クリアテキストで認証情報を送信することは、重大なセキュリティリスクです。攻撃者がこれらの認証情報を傍受した場合、システムへの不正アクセスを取得する可能性があります。
クリアテキストの認証情報を検出するには、次のフィルタを使用します。
http contains "user" or http contains "pass" or http contains "login"

このフィルタは、ログイン情報が含まれている可能性のある HTTP トラフィックを見つけるのに役立ちます。このフィルタに一致するパケットを注意深く調べて、潜在的なセキュリティリスクを特定します。
練習シナリオ:サンプルトラフィックの分析と新しいトラフィックの生成 (Practice Scenario: Analyzing Sample Traffic and Generating New Traffic)
さまざまなセキュリティに焦点を当てたフィルタを学習したので、知識を実践に移す時が来ました。提供されたサンプルファイルを分析するか、新しいトラフィックを生成して分析することができます。
サンプルファイルの分析 (Analyzing the Sample File)
- 提供されたサンプルファイル (
/home/labex/project/sample.pcapng) を使用している場合は、これまで説明したセキュリティフィルタの一部を適用して、興味深いパターンを特定してみてください。
tcp.flags.syn == 1 and tcp.flags.ack == 0
- スキャン、疑わしい接続、またはその他のセキュリティ上の懸念を示す可能性のあるパターンを探します。
新しいトラフィックの生成と分析 (Generating and Analyzing New Traffic)
- または、新しいターミナルウィンドウを開きます。このウィンドウで、複数のリクエストを含む HTTP トラフィックを生成します。次のコマンドを実行します。
for i in {1..5}; do
curl -I www.google.com
sleep 1
done
これらのコマンドは、www.google.com に 5 つの HTTP HEAD リクエストを送信し、各リクエストの間隔は 1 秒です。
- 次に、Wireshark に移動し、次のフィルタを適用して、すべての HTTP リクエストを見つけます。
http.request
このフィルタは、キャプチャされたトラフィック内のすべての HTTP リクエストを表示します。
これらのパケットを調べて、通常の HTTP トラフィックのパターンを特定します。ヘッダー、リクエストの頻度、その他の詳細に注意してください。
最後に、通常の HTTP ブラウジングと自動スキャンツールを区別できるフィルタを作成してみてください。例:
http.request and !(http.user_agent contains "Mozilla")

このフィルタは、ブラウザのユーザーエージェントを持たない HTTP リクエストを表示します。ほとんどの通常の Web ブラウジングは、ユーザーエージェントに Mozilla を含むブラウザを使用して行われるため、それがないリクエストは、通常のブラウジングではなく、自動化されたツールを示している可能性があります。
これらのセキュリティに焦点を当てたフィルタリングテクニックを練習することで、実際のネットワークキャプチャで疑わしいトラフィックをすばやく特定するために必要なスキルを開発できます。
まとめ
この実験 (Lab) では、ネットワークトラフィック分析と潜在的なセキュリティ脅威の識別のために、Wireshark の表示フィルタを使用する方法を学びました。提供されたサンプルキャプチャファイルを使用するか、ライブネットワークトラフィックをキャプチャして、Wireshark のインターフェースに慣れることから始めました。次に、プロトコル、IP アドレス、およびポートに従って特定のトラフィックタイプを分離するための基本的な表示フィルタを習得しました。また、複数の条件を組み合わせたり、特定のコンテンツを検索したりする、複雑なフィルタリングテクニックでスキルを向上させました。最後に、これらのスキルをセキュリティ分析シナリオに適用して、ポートスキャン、認証情報の漏洩、および潜在的な攻撃などの疑わしいアクティビティを検出しました。
これらの Wireshark フィルタリングスキルは、効率的なネットワークトラブルシューティングとセキュリティ分析に不可欠です。大量のキャプチャから関連するパケットをすばやく分離することで、ネットワークの問題やセキュリティインシデントを特定して対応するために必要な時間を大幅に短縮できます。Wireshark で練習を続けると、ネットワークプロトコルとトラフィックパターンを直感的に理解できるようになり、全体的なサイバーセキュリティ機能が向上します。


