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

WiresharkWiresharkBeginner
今すぐ練習

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

はじめに

この実験(Lab)では、強力なネットワークプロトコルアナライザである Wireshark のインストールと設定方法を学びます。Wireshark を使用すると、ネットワークトラフィックをリアルタイムで検査でき、ネットワークのトラブルシューティングやセキュリティ調査に不可欠です。

この実験(Lab)を終えるまでに、システム上のネットワークパケットをキャプチャして分析できるようになり、この不可欠なツールを実際に体験できます。


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/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/installation -.-> lab-415947{{"Wireshark のインストール、設定、およびネットワークトラフィックの分析"}} wireshark/interface -.-> lab-415947{{"Wireshark のインストール、設定、およびネットワークトラフィックの分析"}} wireshark/packet_capture -.-> lab-415947{{"Wireshark のインストール、設定、およびネットワークトラフィックの分析"}} wireshark/packet_analysis -.-> lab-415947{{"Wireshark のインストール、設定、およびネットワークトラフィックの分析"}} wireshark/commandline_usage -.-> lab-415947{{"Wireshark のインストール、設定、およびネットワークトラフィックの分析"}} end

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

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

Wireshark Configuration Dialog

注: このプロンプトを見逃した場合、または後でこの設定を変更する必要がある場合は、次のコマンドを使用して 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 <[email protected]> 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 グループが存在するかどうかを確認する必要があります。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

これらの変更を有効にするには、ログアウトして再度ログインするか、システムを再起動する必要があります。ただし、この実験(Lab)では、更新されたグループメンバーシップで新しいシェルを起動するという、より簡単なアプローチを使用できます。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 in Applications Menu
  2. または、ターミナルを使用することもできます。ターミナルウィンドウを開き、次のコマンドを入力します。

    wireshark
    Wireshark in Terminal

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

Wireshark Start Screen

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

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

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

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

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

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

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

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

キャプチャの開始

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

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

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

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

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

Wireshark メインインターフェース
  1. Packet List Pane(パケットリストペイン)(上部): このペインには、Wireshark がキャプチャしたすべてのパケットのリストが表示されます。リスト内の各エントリには、パケットに関する基本的な情報が記載されています。

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

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

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

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

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

ping -c 5 google.com

Note: Free users can not connect to the internet. Upgrade to a pro to enjoy the full experience.

-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(エコー(ping)要求)」メッセージと「Echo (ping) reply(エコー(ping)応答)」メッセージのペアが表示されます。フィルタリングは、関心のあるトラフィックを分離し、分析プロセスをより管理しやすくするのに役立ちます。

パケット詳細の検査

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

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

まとめ

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

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