Wireshark によるネットワーク分析

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

はじめに

この実験では、業界標準のネットワークプロトコルアナライザである Wireshark を使用して、ネットワーク分析の手法を学びます。この強力なツールを使用すると、ネットワークトラフィックをパケットレベルで調査でき、トラブルシューティングやセキュリティ分析に役立つ貴重な洞察を得ることができます。

ネットワークパケットのキャプチャ、フィルタリング、および解釈に関する実践的なスキルを習得します。ハンズオン形式の演習を通じて、さまざまなプロトコルがどのように通信しているかを理解し、潜在的なネットワーク問題を特定する方法を学びます。

Wireshark のインストール

このステップでは、Ubuntu システムに Wireshark をインストールします。Wireshark は、ネットワークトラフィックをキャプチャして対話的に閲覧できるネットワークプロトコルアナライザです。Ubuntu のデフォルトリポジトリで提供されているため、初心者でも簡単にインストールできます。

  1. まず、ターミナルを開きます。デスクトップにある Xfce Terminal を探して開いてください。このターミナルで、Wireshark のインストールと設定に必要なすべてのコマンドを実行します。
Xfce Terminal ウィンドウを開く

注意:無料ユーザーはインターネットに接続できないため、実験環境には Wireshark が事前にインストールされています。リストの 5 番目(Wireshark がインストールされているか確認する)までスキップしてください。Pro プランにアップグレードすると、Wireshark のインストールを自分で練習できます。

Pro ユーザーのみ
  1. ソフトウェアをインストールする前に、パッケージリストを更新するのが良い習慣です。これにより、最新バージョンの Wireshark をインストールできるようになります。次のコマンドを実行してください:
sudo apt update
  1. 次に、Wireshark 本体をインストールします。-y フラグを使用すると、インストール中の確認プロンプトに自動的に「yes」と回答するため、プロセスがスムーズに進みます:
sudo apt install wireshark -y
  1. インストール中に、スーパーユーザー(root)以外のユーザーにパケットキャプチャを許可するかどうかを尋ねる重要なセキュリティプロンプトが表示されます。これは重要な設定の選択です。「Yes」を選択すると、Wireshark を実行するために root 権限が必要なくなるため、日常的な使用においてより安全です。矢印キーを使用して「Yes」を選択し、Enter キーを押します。
Wireshark インストールプロンプト
  1. インストールが完了したら、Wireshark が正しくインストールされたか確認しましょう。バージョン確認を行うことで、インストールが成功したことと、実行中のバージョンを確認できます:
wireshark --version
  1. ネットワークトラフィックをキャプチャするには、適切な権限を設定する必要があります。これには、現在のユーザーを wireshark グループに追加し、Dumpcap(Wireshark のパケットキャプチャツール)に適切な権限を設定する作業が含まれます。

まず、wireshark グループが存在するか確認します(通常はインストール中に作成されます):

getent group wireshark

何らかの理由でグループが存在しない場合は、次のように作成します:

sudo groupadd wireshark

以下のコマンドは、Wireshark 自体は通常ユーザーとして実行しつつ、Dumpcap を昇格した権限で実行できるように設定するもので、セキュリティ上のベストプラクティスです:

sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 4755 /usr/bin/dumpcap
sudo gpasswd -a $USER wireshark

これらのコマンドを実行した後、グループの変更を反映させるために、一度ログアウトしてから再度ログインする必要があります。これで Wireshark のインストールと設定が完了し、ネットワークトラフィックの分析を開始する準備が整いました!

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

Wireshark のインストールが完了したので、実際にネットワークトラフィックをキャプチャしてみましょう。これは、ネットワーク上で行われているすべての会話を録音するためにマイクを設置するようなものだと考えてください。コンピュータがオンラインでデータを送受信するたびに、データは「パケット」と呼ばれる小さな断片に分割されます。Wireshark を使用すると、これらのパケットを表示して分析できます。

  1. ターミナルで wireshark と入力して Enter キーを押し、Wireshark を起動します。これにより、パケットキャプチャを行うためのグラフィカルインターフェースが立ち上がります。

  2. Wireshark が開くと、ネットワークインターフェース(コンピュータがネットワークと通信するために使用する接続点)のリストが表示されます。「eth0」や「eth1」という名前のインターフェースを探してください。これらは通常、有線イーサネット接続です。WiFi を使用している場合は「wlan0」が表示されることもあります。

Wireshark インターフェース選択
  1. アクティブなインターフェース(パケット数がカウントアップされているもの)をダブルクリックして、キャプチャを開始します。メインウィンドウにパケットのライブストリームが表示されます。各行は、現在発生している個別のネットワーク通信を表しています。
Wireshark パケットキャプチャウィンドウ
  1. キャプチャ対象となる簡単なネットワークアクティビティを発生させてみましょう。新しいターミナルウィンドウを開き、以下を入力します:

    curl http://example.com

    このコマンドは example.com のホームページを取得し、Wireshark がキャプチャ可能な HTTP パケット(Web トラフィック)を生成します。実行後すぐに、Wireshark に新しいパケットが表示されるのが確認できるはずです。

  2. いくつかのパケットが表示されたら(5〜10 秒程度で十分です)、上部にある赤い「Stop」ボタンをクリックします。これによりキャプチャが停止し、新しいパケットが次々と届くのを気にせずに、パケットをじっくり調査できるようになります。

  3. おめでとうございます!初めてのネットワークトラフィックのキャプチャに成功しました。各行は、送信元/送信先アドレス、プロトコルタイプ、タイミングなどの詳細を含むパケットを表しています。3 つのメインパネルには、パケットリスト(概要)、パケット詳細(技術的な内訳)、およびパケット生データ(16 進数表示)が表示されています。

  4. 作業を保存するには、File > Save を選択し、/home/labex ディレクトリに myfirstcapture.pcapng という名前で保存します。.pcapng 形式は、将来の分析のためにすべてのパケット詳細を保持します。

ネットワークキャプチャファイルの保存

この基本的なキャプチャプロセスは、ネットワーク分析の基礎となります。次のステップでは、これらのパケットをフィルタリングして解釈し、ネットワークの動作を理解したり問題を解決したりする方法を学びます。

パケットデータの解析

キャプチャしたネットワークトラフィックを、ステップバイステップで調査してみましょう。これはデジタルな会話を読み解くようなものです。コンピュータが通信に使用する「言語」を解釈する方法を学びます。

  1. キャプチャファイルを開く:
    Wireshark を起動し、File > Open から保存したキャプチャファイル(myfirstcapture.pcapng)を開くか、ファイルをダブルクリックします。このファイルには、以前に記録したすべてのネットワークトラフィックが含まれており、電話の録音記録のような役割を果たします。

  2. パケットリストの理解:
    上部のペインには、キャプチャされたすべてのパケットが時系列で表示されます。各行は 1 つのネットワークメッセージを表し、以下の情報が表示されます:

    • 送信者(Source IP)
    • 受信者(Destination IP)
    • 通信の種類(Protocol)
    • 簡単な概要(Info)
  3. パケット詳細の調査:
    パケットをクリックすると、中央のペインにプロトコルレイヤー(階層)ごとの内部構造が表示されます:

    • Frame(フレーム): 物理的なネットワークの詳細
    • Ethernet(イーサネット): ハードウェアアドレス(MAC アドレス)
    • IP: インターネットルーティング情報
    • TCP/UDP: トランスポート層の詳細
    • Application data: アプリケーションデータ(HTTP など)
  4. HTTP トラフィックのフィルタリング:
    上部のフィルタバーに http と入力して Enter キーを押します。これにより、電話の通話記録からテキストメッセージだけを探すように、Web トラフィックだけを抽出できます。HTTP は、Web ブラウザがサーバーと通信するために使用するプロトコルです。

Wireshark HTTP パケットフィルタ
  1. Web リクエストの特定:
    Info 列に「GET」と表示されているパケットを探します。これは、ブラウザが Web ページを要求していることを表しています。1 つクリックして詳細を確認してください:
    • 要求された正確な URL
    • 通信先の Web サイト
    • リクエストに関する技術的な詳細
HTTP GET パケットの詳細
  1. HTTP ヘッダーの分析:
    「Hypertext Transfer Protocol」セクションを展開して、以下を確認します:

    • リクエストメソッド(GET/POST)
    • 要求されたリソース(/index.html)
    • ブラウザ情報(User-Agent)
    • クッキー(Cookies)やその他のメタデータ
  2. サーバーレスポンスの確認:
    「HTTP/1.1 200 OK」というパケットを探します。これは Web ページが正常に配信されたことを示しています。以下の点に注目してください:

    • レスポンスコード(200=成功、404=未検出)
    • サーバーの種類(Apache/Nginx など)
    • コンテンツタイプ(HTML、画像など)
HTTP サーバーの正常なレスポンスパケット
  1. Web コンテンツの表示:
    正常なレスポンスパケット内で、「Line-based text data」セクションを確認すると、実際の Web ページの内容が表示されます。ここには、サーバーがブラウザに送信した HTML コードが含まれています。

この分析により、ネットワーク上で行われている隠れた会話が明らかになります。これらのパターンを理解することで、トラブルシューティング、不審なアクティビティの特定、およびアプリケーションがどのように通信しているかの把握が可能になります。

フィルタの使用

Wireshark の真の力は、大量のネットワークデータから必要な情報を素早くフィルタリングして分析できる能力にあります。このステップでは、特定の種類のトラフィックに焦点を当てるためのフィルタの使い方を学びます。フィルタは、ネットワークパケットの海の中から探しているものを正確に見つけ出すための検索キーワードのようなものだと考えてください。

  1. Wireshark でキャプチャファイルを開いた状態で、簡単な表示フィルタを使ってみましょう。フィルタバーはメインツールバーのすぐ下にあります。

    • TCP トラフィック(最も一般的な転送プロトコル)のみを表示するには、フィルタバーに tcp と入力して Enter キーを押します。これにより、TCP 以外のすべてのパケットが非表示になります。
    • 特定の IP アドレスとの通信を表示するには、ip.addr == 93.184.215.14 と入力します(これは example.com の IP アドレスですが、キャプチャ内に見える任意の IP アドレスに置き換えることができます)。二重等号(==)は「完全に一致する」ことを意味します。
    Wireshark TCP フィルタの例
    • すべての HTTP GET リクエスト(最も一般的な Web リクエストの種類)を表示するには、http.request.method == "GET" と入力します。これにより、どの Web ページが要求されているかを確認しやすくなります。
  2. 次に、複数の条件を組み合わせて、より複雑なフィルタを作成してみましょう。特に example.com 宛ての HTTP GET リクエストを探します。

    • フィルタバーに次のように入力します:http.request.method == "GET" && http.host contains "example.com"
    • && は「かつ(AND)」を意味し、両方の条件が真である必要があります。
    • contains 演算子を使用すると、ドメイン名に "example.com" が含まれるものを照合できます。
    Wireshark HTTP GET フィルタ
    • このフィルタは、"example.com" を含むドメインへのすべての GET リクエストを表示します。これは特定の Web サイトへのトラフィックを監視する際に非常に便利です。
  3. 特定のフィルタを繰り返し使用することが多いため、Wireshark ではフィルタを保存できます。作成した HTTP GET フィルタを保存してみましょう。

    • フィルタバーの横にあるプラス記号("+")をクリックします。フィルタ管理ウィンドウが開きます。
    • フィルタに「HTTP GETs」という名前を付けて「Save」をクリックします。覚えやすい説明的な名前を付けてください。
    • これで、フィルタバーの横にあるブックマークアイコン(保存済みフィルタリスト)から選択するだけで、いつでもこのフィルタを素早く適用できるようになります。
  4. 最後に、ドキュメント作成やさらなる分析のために、調査結果の一部をエクスポートしてみましょう。

    • Statistics > HTTP > Requests を選択して、すべての HTTP リクエストの概要を表示します。
    • 「Save as」をクリックして、リストをファイルに書き出します。
    • 保存場所として /home/labex を選択し、ファイル名を http_requests.txt として保存します。
    HTTP リクエストリストのエクスポート

このようにフィルタを使用することで、膨大なネットワークデータの中から重要な情報を素早く選別できます。これは、特定の種類のトラフィックを瞬時に表示できる超強力な虫眼鏡を持っているようなものです。フィルタをマスターすれば、ネットワークのトラブルシューティングやセキュリティイベントの分析にかかる時間を大幅に短縮できます。

まとめ

この実験では、Wireshark を使用したネットワーク分析の基礎を学びました。Wireshark のインストール、ネットワークトラフィックのキャプチャ、パケットデータの解析、および特定のトラフィックを抽出するためのフィルタの適用といった不可欠なスキルを習得しました。

これらの核となる能力は、サイバーセキュリティやネットワーク管理の強固な基盤となります。Wireshark は、ネットワークのトラブルシューティング、トラフィックパターンの監視、および潜在的なセキュリティ脅威の特定に役立つ強力なツールです。今後も練習を重ね、ネットワーク分析の専門知識をさらに深めていってください。