Wiresharkのインストール、設定、およびネットワークトラフィックの解析

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

はじめに

この実験では、強力なネットワークプロトコルアナライザーであるWiresharkのインストールと設定方法を学びます。Wiresharkを使用すると、ネットワークトラフィックをリアルタイムで調査できるため、ネットワークのトラブルシューティングやセキュリティ調査において非常に重要です。

この実験を終える頃には、システム上でネットワークパケットをキャプチャおよび解析できるようになり、この不可欠なツールに関する実践的なスキルを身につけることができます。

Wiresharkのインストール

このステップでは、UbuntuシステムにWiresharkをインストールします。Wiresharkは、ネットワークトラフィックのキャプチャと解析を可能にする強力なネットワークプロトコルアナライザーです。ネットワークセキュリティやトラフィック解析に関心がある人にとって、これは非常に重要なツールです。幸いなことに、WiresharkはUbuntuのリポジトリで提供されているため、Ubuntuのパッケージ管理システムを使用して簡単にインストールできます。

まず、パッケージリポジトリの情報を更新しましょう。パッケージリポジトリは、Ubuntuシステムで利用可能なすべてのソフトウェアのカタログのようなものです。これを更新することで、最新のソフトウェアバージョンにアクセスできるようになります。これを行うには、ターミナルを開く必要があります。タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+Tを押すことでターミナルを開くことができます。ターミナルが開いたら、次のコマンドを入力します。

sudo apt update

sudoコマンドは、管理者権限でコマンドを実行するために使用されます。aptはUbuntuのパッケージ管理ツールであり、updateはパッケージリポジトリの情報を更新するためのコマンドです。このコマンドを実行すると、以下のような出力が表示されるはずです。

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,234 kB]
...
Reading package lists... Done

この出力は、システムがリポジトリから利用可能なパッケージに関する最新情報を取得していることを示しています。

パッケージリポジトリが更新されたので、aptパッケージマネージャーを使用してWiresharkをインストールできます。ターミナルで次のコマンドを実行します。

sudo apt install wireshark -y

installコマンドは、指定されたパッケージ(この場合はwireshark)をインストールするようにaptに指示します。-yオプションは、インストールプロセス中に表示されるすべてのプロンプトに対して自動的に「yes」と答えるために使用されます。

インストールプロセス中に、スーパーユーザー以外のユーザーによるパケットキャプチャを許可するかどうかを尋ねる設定ダイアログが表示されます。スーパーユーザー以外のユーザーにパケットキャプチャを許可することは、常に管理者権限を使用せずにWiresharkを実行したい場合に便利です。矢印キーを使用して「Yes」を選択(またはyを押す)し、Enterキーを押して選択を確定します。

Wireshark設定ダイアログ

注: このプロンプトを見逃した場合や、後でこの設定を変更する必要がある場合は、次のコマンドを使用してWiresharkを再設定できます。

sudo dpkg-reconfigure wireshark-common

dpkg-reconfigureコマンドは、すでにインストールされているパッケージを再設定するために使用されます。

インストールが完了すると、インストールが成功したことを示す出力が表示されます。Wiresharkが正しくインストールされたことを確認するために、バージョンを確認できます。ターミナルで次のコマンドを実行します。

wireshark --version

このコマンドは、Wiresharkにバージョン情報を表示するように指示します。以下のような出力が表示されるはずです。

Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)

Copyright 1998-2022 Gerald Combs <gerald@wireshark.org> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with Qt 5.15.3, with libpcap, with GLib 2.72.0, with zlib 1.2.11,
with SMI 0.4.8, with c-ares 1.18.1, with Lua 5.2.4, with GnuTLS 3.7.3 and PKCS #11
support, with Gcrypt 1.9.4, with MIT Kerberos, with MaxMind DB resolver,
with nghttp2 1.43.0, with brotli, with LZ4, with Zstandard, with Snappy,
with libxml2 2.9.13, with libssh 0.9.6, with NGHTTP3 0.7.0, with NGTCP2 0.8.0.

これで、システムにWiresharkがインストールされました。

Wiresharkのキャプチャ権限の設定

このステップでは、Wiresharkがネットワークパケットをキャプチャするために必要な権限を設定します。初心者の方は、なぜこれを行う必要があるのか疑問に思うかもしれません。デフォルトでは、パケットキャプチャにはroot権限が必要です。これは、ネットワークパケットをキャプチャすると機密情報が漏洩する可能性があるため、セキュリティ対策として行われています。しかし、セキュリティの観点から見ると、Wiresharkをrootとして実行することは推奨されません。Wiresharkに脆弱性があった場合、rootとして実行されていると、攻撃者がシステム全体へのアクセス権を取得する可能性があるからです。そのため、通常のユーザーアカウントで安全にパケットをキャプチャできるようにWiresharkを設定します。

まず、システムにwiresharkグループが存在するかどうかを確認する必要があります。wiresharkグループは、パケットキャプチャの権限を管理するために使用する特別なグループです。このグループが存在するかどうかを確認するために、getentコマンドを使用します。getentは、グループデータベースなど、さまざまなシステムデータベースからエントリを取得するユーティリティです。ターミナルで次のコマンドを実行します。

getent group wireshark

出力が表示されない場合は、グループがまだ存在しないため、作成する必要があります。groupaddコマンドを使用してwiresharkグループを作成します。groupaddコマンドは、システムに新しいグループを作成するために使用されます。次のコマンドを実行します。

sudo groupadd wireshark

sudoコマンドは、groupaddコマンドを管理者権限で実行するために使用されます。最近sudoを使用していない場合は、パスワードの入力を求められます。

次に、パケットキャプチャバイナリ(dumpcap)に適切な権限を与える必要があります。dumpcapは、Wiresharkのために実際にパケットをキャプチャするコンポーネントです。dumpcapバイナリのグループ所有権をwiresharkグループに変更します。これにより、dumpcapバイナリがwiresharkグループに関連付けられ、このグループを通じて権限を管理できるようになります。次のコマンドを実行します。

sudo chgrp wireshark /usr/bin/dumpcap

chgrpコマンドは、ファイルやディレクトリのグループ所有権を変更するために使用されます。この場合、/usr/bin/dumpcapバイナリのグループ所有権をwiresharkグループに変更しています。

グループ所有権を変更した後、dumpcapバイナリに必要な権限を設定します。chmodコマンドを使用して権限を設定します。chmodコマンドは、ファイルやディレクトリの権限を変更するために使用されます。次のコマンドを実行します。

sudo chmod 4755 /usr/bin/dumpcap

このコマンドは、バイナリにsetuidビットを設定します。setuidビットにより、誰が実行しても所有者(root)の権限でバイナリを実行できるようになります。4755という権限は次のように分解できます。

  • 4 - setuidビットを設定します。つまり、バイナリが実行されると、所有者(root)の権限で実行されます。
  • 7 - 所有者(root)は読み取り、書き込み、実行権限を持ちます。これにより、所有者はバイナリを読み取り、変更し、実行できます。
  • 5 - グループは読み取りおよび実行権限を持ちます。これにより、wiresharkグループのメンバーはバイナリを読み取り、実行できます。
  • 5 - その他は読み取りおよび実行権限を持ちます。これにより、システムの他のユーザーもバイナリを読み取り、実行できます。

最後に、現在のユーザーをwiresharkグループに追加する必要があります。ユーザーをwiresharkグループに追加することで、ユーザーはdumpcapバイナリを使用するために必要な権限を持つようになります。gpasswdコマンドを使用してユーザーをグループに追加します。gpasswdコマンドは、/etc/groupおよび/etc/gshadowファイルを管理するために使用されます。次のコマンドを実行します。

sudo gpasswd -a $USER wireshark

$USER変数は、現在のユーザーのユーザー名を含むシェル変数です。ユーザーがグループに追加されたことを示す出力が表示されるはずです。

Adding user labex to group wireshark

これらの変更を有効にするには、ログアウトして再度ログインするか、システムを再起動する必要があります。ただし、この実験では、更新されたグループメンバーシップで新しいシェルを開始するというより簡単な方法を使用できます。newgrpコマンドを使用して、wiresharkグループを有効にした新しいシェルを開始します。newgrpコマンドは、現在のグループIDを変更するために使用されます。次のコマンドを実行します。

newgrp wireshark

このコマンドは、完全にログアウトすることなく、wiresharkグループを有効にした新しいシェルを開始します。

ユーザーがwiresharkグループの一部になったことを確認しましょう。groupsコマンドを使用して、ユーザーが属しているすべてのグループをリスト表示します。次のコマンドを実行します。

groups

グループの中にwiresharkが表示されているはずです。

wireshark sudo ssl-cert labex public

これで、ユーザーがwiresharkグループの一部となり、dumpcapバイナリが適切な権限を持つようになったため、Wiresharkはroot権限を必要とせずにパケットをキャプチャできるようになります。

Wiresharkの起動

このステップでは、Wiresharkを起動し、その初期インターフェースに慣れます。Wiresharkはネットワークトラフィック解析のための強力なツールであり、グラフィカルユーザーインターフェース(GUI)が付属しています。このGUIを使用してソフトウェアと対話し、ネットワークトラフィックを解析します。

まず、LabEx VMのデスクトップ環境にいることを確認してください。適切な場所にいる場合、画面の上部または下部にアイコンとタスクバーがあるデスクトップが表示されます。これが、Wiresharkでの作業を開始する出発点です。

Wiresharkを起動するには2つの方法があります。自分にとって最も便利な方法を選択してください。

  1. 画面の左上隅にある「アプリケーション」メニューをクリックします。次に、メニューを移動して「インターネット」または「ネットワーク」カテゴリを探します。適切なカテゴリに入ったら、「Wireshark」を探して選択します。これは、グラフィカルインターフェースを使用してプログラムを開始する簡単な方法です。

    アプリケーションメニュー内のWireshark

  2. または、ターミナルを使用することもできます。ターミナルウィンドウを開き、次のコマンドを入力します。

    wireshark
    

    ターミナル内のWireshark

このコマンドは、Wiresharkアプリケーションを開始するようにシステムに指示します。このコマンドを実行すると、Wiresharkが起動し、メインウィンドウが画面に表示されます。最初に表示されるのは「Welcome to Wireshark」画面です。この画面には、ネットワークトラフィックのキャプチャに使用できる利用可能なネットワークインターフェースのリストが表示されます。また、以前にWiresharkを使用したことがあり、保存されたファイルがある場合は、最近開いたキャプチャファイルも表示されます。

Wiresharkスタート画面

ウェルカム画面には、いくつかの重要なオプションがあります。

  1. リストからネットワークインターフェースを選択できます。インターフェースを選択すると、Wiresharkはそのネットワークからパケットのキャプチャを即座に開始します。これが、ネットワークトラフィックに関するデータの収集を開始する方法です。
  2. 以前に保存したキャプチャファイルがある場合は、この画面から開くことができます。これは、過去に収集したデータを解析したい場合に便利です。
  3. この画面からアクセスできるさまざまなツールや設定もあります。これらのツールと設定は、Wiresharkでのエクスペリエンスをカスタマイズし、より高度な解析を実行するのに役立ちます。

この初期画面を少し時間をかけて探索してください。各ネットワークインターフェースには、検出されたパケットに関する統計情報が表示されていることに気づくでしょう。これらの統計情報は、どのインターフェースがアクティブにネットワークトラフィックを通過させているかを素早く把握するのに役立ちます。

次に、Wiresharkのメインインターフェース要素を見てみましょう。

  • メニューバー: ウィンドウ上部にあるこのバーから、Wiresharkが提供するすべての機能にアクセスできます。キャプチャファイルの保存、設定の変更、ヘルプへのアクセスなど、さまざまなタスクを実行するために使用できます。
  • ツールバー: ツールバーを使用すると、よく使用される機能に素早くアクセスできます。たとえば、パケットキャプチャの開始と停止、フィルタの適用、ファイルの保存などをワンクリックで行うことができます。
  • インターフェースリスト: このリストには、システム上の利用可能なすべてのネットワークインターフェースが表示されます。このリストを使用して、パケットをキャプチャするインターフェースを選択します。
  • ディスプレイフィルタバー: このバーを使用すると、メインウィンドウに表示されるパケットをフィルタリングできます。IPアドレス、プロトコル、ポート番号などのさまざまな基準を使用して、関心のあるパケットに絞り込むことができます。このフィルタの使用方法については、次のステップで説明します。

今のところ、Wiresharkを実行したままにしておいてください。次のステップでは、それを使用してネットワークトラフィックをキャプチャおよび解析します。

ネットワークトラフィックのキャプチャと解析

このステップでは、ネットワークトラフィックをキャプチャし、Wiresharkインターフェースを探索します。ネットワークパケットの解析方法を理解することは、ネットワークセキュリティやトラブルシューティングに関心がある人にとって不可欠です。このセクションを終える頃には、キャプチャの開始方法、Wiresharkインターフェースの理解、トラフィックの生成、パケットのフィルタリング、パケット詳細の検査、およびキャプチャの停止方法を習得しているはずです。

キャプチャの開始

Wiresharkを開くと、ウェルカム画面が表示されます。この画面で、トラフィックをキャプチャしたいネットワークインターフェースを見つけるのが目標です。ほとんどの場合、eth0インターフェースを使用します。eth0が利用できない場合は、別の有効なインターフェース(例: eth1wlan0)を選択できます。

パケットのキャプチャを開始するには、eth0インターフェースをダブルクリックするだけです。この操作により、そのインターフェースでのパケットキャプチャが即座に開始され、メインのWiresharkキャプチャウィンドウに移動します。

または、最初にインターフェースを選択してから、ツールバーにある青いサメのヒレのアイコンで表される「Start capturing packets」ボタンをクリックすることもできます。キャプチャを開始することは、ネットワークトラフィックを解析するための最初のステップであり、Wiresharkが選択したインターフェースを流れるデータを収集できるようにします。

Wiresharkインターフェースの理解

パケットキャプチャが開始されると、メインのWiresharkインターフェースが表示されます。このインターフェースは3つのメインペインに分かれており、それぞれが異なる目的を果たします。

Wiresharkメインインターフェース

  1. パケットリストペイン(上部): このペインには、Wiresharkがキャプチャしたすべてのパケットのリストが表示されます。リストの各エントリは、以下を含むパケットに関する基本情報を提供します。

    • パケット番号: キャプチャ内の各パケットの一意の識別子。
    • 時間: パケットがキャプチャされた時間。
    • 送信元IPアドレス: パケットを送信したデバイスのIPアドレス。
    • 宛先IPアドレス: パケットの宛先であるデバイスのIPアドレス。
    • プロトコル: TCP、UDP、ICMPなど、パケットによって使用されるネットワークプロトコル。
    • 長さ: バイト単位のパケットサイズ。
    • 情報: パケットの目的の簡単な説明。パケットが何をしているかを素早く理解するのに役立ちます。
  2. パケット詳細ペイン(中央): 上部のペインでパケットを選択すると、この領域に選択したパケットに関する詳細情報が階層形式で表示されます。各セクションの横にある矢印をクリックして展開すると、パケットの構造と内容に関するより詳細な情報を確認できます。

  3. パケットバイトペイン(下部): このペインには、16進数とASCII形式の両方で生のパケットデータが表示されます。パケット詳細ペインで異なるフィールドを選択すると、対応するバイトがこのペインで強調表示されます。これにより、パケット内で実際に送信されているデータを確認できます。

ネットワークトラフィックの生成

解析する意味のあるデータを得るために、ネットワークトラフィックを生成する必要があります。Wiresharkを実行したまま、新しいターミナルウィンドウを開きます。ターミナルで、pingコマンドを使用してGoogleのサーバーにICMPエコー要求パケットを送信します。

次のコマンドを実行します。

ping -c 5 google.com

: 無料ユーザーはインターネットに接続できません。Proにアップグレードして、フルエクスペリエンスをお楽しみください。

-c 5オプションは、pingコマンドに5つのICMPエコー要求パケットを送信するように指示します。このコマンドを実行すると、以下のような出力が表示されるはずです。

PING google.com (142.250.180.238) 56(84) bytes of data.
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=1 ttl=118 time=15.6 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=2 ttl=118 time=16.5 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=3 ttl=118 time=15.9 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=4 ttl=118 time=16.2 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=5 ttl=118 time=15.7 ms

--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 15.629/15.986/16.520/0.324 ms

次に、Wiresharkに戻ります。pingコマンドの実行中にキャプチャされたICMPパケットが表示されているはずです。これらのパケットを使用して、さらに解析を行います。

キャプチャの停止

キャプチャしたパケットの解析が完了したら、キャプチャを停止する必要があります。これを行うには、ツールバーにある赤い四角形で表される「Stop capturing packets」ボタンをクリックします。または、「Capture」メニューに移動して「Stop」を選択することもできます。

これで、Wiresharkを使用して基本的なネットワークトラフィックを正常にキャプチャおよび解析できました!これはネットワーク解析とセキュリティにおける基本的なスキルであり、この知識を基にして、より複雑なネットワークシナリオを解析できるようになります。

パケットのフィルタリング

Wiresharkは選択したインターフェース上のすべてのトラフィックをキャプチャするため、すぐに大量のデータになり、管理が困難になる可能性があります。フィルタはWiresharkの強力なツールであり、特定の種類のトラフィックに集中できるようにします。

Wiresharkフィルタバー

先ほど生成したICMP pingパケットをフィルタリングするには、Wiresharkウィンドウの上部を見てください。フィルタ式を入力できるフィルタバーがあります。フィルタバーに次のように入力します。

icmp

フィルタ式を入力したら、Enterキーを押すか、フィルタフィールドの横にある「Apply」ボタン(右矢印アイコン)をクリックします。パケットリストが更新され、ICMPパケットのみが表示されます。先ほど実行したpingコマンドに対応する「Echo (ping) request」と「Echo (ping) reply」メッセージのペアが表示されるはずです。フィルタリングは、関心のあるトラフィックを分離し、解析プロセスをより管理しやすくするのに役立ちます。

パケット詳細の検査

ICMPパケットをフィルタリングしたので、ICMP要求パケットの1つを詳しく見てみましょう。パケットリスト内のICMP要求パケットの1つをクリックします。パケット詳細ペインでは、各セクションの横にある矢印をクリックして、さまざまなプロトコルレイヤーを展開できます。

Wiresharkパケット詳細

  1. Frame: このセクションでは、フレーム長やフレームチェックシーケンスなど、フレームまたはパケット全体に関する情報を提供します。
  2. Ethernet: 送信元および宛先MACアドレスなどのレイヤー2(データリンク)情報が含まれています。
  3. Internet Protocol Version 4: これはレイヤー3(ネットワーク)情報です。このセクションを展開すると、次のような詳細が表示されます。
    • 送信元IPアドレス: パケットを送信したデバイスのIPアドレス。
    • 宛先IPアドレス: パケットの宛先であるデバイスのIPアドレス。
    • Time to Live (TTL): ネットワーク内でのパケットの寿命を制限する値。
    • プロトコル: 今回の場合のICMPなど、IPパケット内で使用されるプロトコル。
  4. Internet Control Message Protocol: このセクションにはICMPプロトコル情報が表示されます。これを展開すると、次のようなICMPメッセージ固有の詳細が表示されます。
    • Type(要求は8、応答は0): パケットが要求か応答かを示します。
    • Code: ICMPメッセージに関する追加情報を提供します。
    • Checksum: ICMPメッセージの整合性を検証するために使用されます。
    • Identifier: 要求と応答を照合するのに役立ちます。
    • Sequence number: ICMPパケットのシーケンシャル番号。

まとめ

この実験では、強力なネットワーク解析ツールであるWiresharkのインストールと設定方法を学びました。非rootユーザーが安全にパケットをキャプチャできるように権限を設定し、アプリケーションを起動し、実際のネットワークトラフィックをキャプチャしました。また、インターフェースを探索し、特定のトラフィックタイプに対してフィルタを適用し、さまざまなプロトコルレイヤーにわたってパケット詳細を調査しました。

これらのスキルは、ネットワーク解析とトラブルシューティングの強固な基盤となります。Wiresharkを使用することで、ネットワーク通信を検査し、接続の問題を診断し、プロトコルの動作を解析し、ネットワークトラフィック内のセキュリティ上の懸念を特定できるようになりました。