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

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

はじめに

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

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

Wiresharkのインストール

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

  1. まず、ターミナルを開きましょう。デスクトップ上の「Xfce Terminal」を探して開いてください。ターミナルは、Wiresharkのインストールや設定を行うためのすべてのコマンドを実行する場所です。

Xfceターミナルウィンドウを開く

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

Proユーザー向け
  1. ソフトウェアをインストールする前に、パッケージリストを更新することをお勧めします。これにより、Wiresharkの最新バージョンを確実にインストールできます。以下のコマンドを実行してください。
sudo apt update
  1. 次に、Wireshark本体をインストールします。-yフラグを付けると、インストール中のプロンプトに対して自動的に「yes」と回答するため、プロセスがスムーズに進みます。
sudo apt install wireshark -y
  1. インストール中に、スーパーユーザー以外のユーザーによるパケットキャプチャを許可するかどうかを尋ねる重要なセキュリティプロンプトが表示されます。これは重要な設定の選択です。「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/labexmyfirstcapture.pcapng という名前で保存します。.pcapng形式は、将来の解析のためにすべてのパケット詳細を保持します。

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

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

パケットデータの解析

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

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

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

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

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

Wireshark HTTPパケットフィルタ

  1. Webリクエストを特定する:
    Info列に「GET」と表示されているパケットを探します。これらはブラウザがWebページを要求していることを表しています。クリックすると以下を確認できます。
    • 要求された正確なURL
    • どのWebサイトにアクセスしたか
    • リクエストに関する技術的な詳細

HTTP GETパケットの詳細

  1. HTTPヘッダーを解析する:
    「Hypertext Transfer Protocol」セクションを展開して以下を確認します。

    • リクエストメソッド(GET/POST)
    • 要求されたリソース(/index.html)
    • ブラウザ情報
    • Cookieおよびその他のメタデータ
  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 == x.x.x.x と入力し、x.x.x.x をキャプチャ内のアドレスやDNSルックアップの結果に置き換えます。example.com の現在のアドレスを知るには、ターミナルで dig example.com +short を実行し、表示されたIPのいずれかを使用してください。93.184.215.14 という値はこのラボテキスト内のプレースホルダーに過ぎず、実際のアドレスは時間とともに変化します。等号2つ(==)は「完全に一致」を意味します。

    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. 特定のフィルタを繰り返し使用する場合は、保存しておくことができます。HTTP GETフィルタを保存してみましょう。

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

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

    HTTPリクエストリストのエクスポート

このようにフィルタを使用することで、大量のネットワークデータを素早く選別し、重要な部分に集中することができます。これは、特定の種類のネットワークトラフィックを即座に表示できる、超高性能な拡大鏡を持っているようなものです。フィルタをマスターすれば、ネットワークの問題をトラブルシューティングしたり、セキュリティイベントを解析したりする際に、何時間もの時間を節約できます。

まとめ

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

これらのコアコンピテンシーは、サイバーセキュリティやネットワーク管理の強固な基盤となります。Wiresharkは、ネットワークのトラブルシューティング、トラフィックパターンの監視、潜在的なセキュリティ脅威の特定を行うための強力なツールです。今後も練習を続け、ネットワーク解析の専門知識をさらに深めていきましょう。