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. インストール中に、スーパーユーザー以外のユーザーによるパケットキャプチャを許可するかどうかを尋ねる重要なセキュリティプロンプトが表示されます。これは重要な設定です。「Yes」を選択すると、Wiresharkを実行するたびにroot権限が必要なくなるため、日常的な使用においてより安全です。矢印キーを使用して「Yes」を選択し、Enterキーを押してください。

Wiresharkインストールプロンプト

  1. インストールが完了したら、Wiresharkが正しくインストールされたか確認します。バージョンチェックを行うことで、インストールが成功したことと、実行中のバージョンを確認できます。
wireshark --version
  1. ネットワークトラフィックをキャプチャするには、適切な権限を設定する必要があります。これには、ユーザーを wireshark グループに追加し、Dumpcap(Wiresharkのパケットキャプチャツール)に適切な権限を設定することが含まれます。LabExデスクトップでは、ログアウトして再ログインする必要はありません。代わりに、現在のセッションでWiresharkがパケットをキャプチャできるようにDumpcapを設定します。

まず、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

chmod 4755 コマンドにより、必要なDumpcapの権限が即座に適用されるため、LabExセッションを再起動することなく次のステップに進めます。これで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秒程度で十分です)、上部にある赤い「停止」ボタンをクリックします。これによりキャプチャが一時停止され、新しいパケットが次々と届くことなく、現在のパケットを詳しく調査できます。

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

  4. 作業を保存するには、[ファイル] > [保存] に進み、/home/labexmyfirstcapture.pcapng という名前でファイルを保存します。.pcapng形式は、将来の分析のためにすべてのパケット詳細を保持します。

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

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

パケットデータの分析

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

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

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

    • 送信元(送信元IP)
    • 受信先(宛先IP)
    • 通信の種類(プロトコル)
    • 概要(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アドレスからのトラフィックを表示するには、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. 最後に、ドキュメント作成やさらなる分析のために結果をエクスポートします。

    • [統計] > [HTTP] > [リクエスト] に進み、すべてのHTTPリクエストの概要を確認します。
    • 「名前を付けて保存」をクリックして、リストをファイルにエクスポートします。
    • 保存先として /home/labex を選択し、ファイル名を http_requests.txt として保存します。

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

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

まとめ

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

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