Tshark を使用したネットワークトラフィック分析

WiresharkWiresharkBeginner
今すぐ練習

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

はじめに

この実験では、強力なネットワークプロトコルアナライザーである Wireshark のコマンドラインインターフェースである tshark の使い方を学びます。tshark を習得することで、ネットワーク分析のワークフローを合理化し、タスクを自動化し、ネットワークトラフィックに対するより深い洞察を得ることができます。

この実験では、さまざまなコマンドラインオプションと実践的なシナリオを紹介します。ネットワークキャプチャを効率的に分析し、ネットワーク関連の問題をトラブルシューティングするスキルを身につけることができます。コマンドライン方式は、特に大きなキャプチャファイルや自動分析において、グラフィカルインターフェースに比べて大きな利点があります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/installation -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} wireshark/packet_capture -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} wireshark/display_filters -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} wireshark/export_packets -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} wireshark/packet_analysis -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} wireshark/commandline_usage -.-> lab-415942{{"Tshark を使用したネットワークトラフィック分析"}} end

Tshark を使ったネットワークトラフィックの理解とキャプチャ

このステップでは、Tshark を使ったネットワークトラフィック分析の世界に飛び込みます。まず、Tshark とは何か、なぜネットワーク分析にとって価値のあるツールなのかを学びます。次に、システム上のネットワークインターフェースを特定する方法を理解します。これは、トラフィックをどこからキャプチャするかを知るために重要です。最後に、Wireshark のコマンドラインインターフェースである Tshark を使ってネットワークトラフィックをキャプチャする方法を見ていきます。

Tshark とは何か?

Tshark は本質的に Wireshark のコマンドラインバージョンです。Wireshark は視覚的な検査に最適なグラフィカルインターフェースを持っていますが、Tshark はグラフィカルディスプレイを必要とせずに同じコア機能を提供します。Tshark を使うと、ネットワークからパケットをキャプチャすることができます。パケットは、ネットワークを介してデータを運ぶ小さな封筒のようなものです。また、これらのパケットに関する詳細情報、例えばパケットの送信元、宛先、および運ばれているデータの種類などを表示することもできます。キャプチャしたデータをファイルに保存し、後で分析することができます。このツールはいくつかのシナリオで特に有用です。

  • 自動ネットワーク監視:定期的に Tshark を実行するスクリプトを設定し、異常なネットワーク活動をチェックすることができます。
  • 大きなキャプチャファイルの効率的な分析:コマンドラインツールであるため、いくつかのグラフィカルな代替手段よりも大量のデータを迅速に処理することができます。
  • グラフィカルインターフェースのないサーバーでの実行:サーバーはしばしばグラフィカルディスプレイを持っていないため、Tshark をコマンドラインから直接実行することができます。
  • ネットワーク分析のスクリプトへの統合:独自のスクリプト内で Tshark コマンドを使用して、カスタムのネットワーク分析タスクを実行することができます。

Tshark のインストール

Tshark を使用する前に、システムにインストールされていることを確認する必要があります。apt パッケージマネージャーを使用するシステム(Ubuntu など)に Tshark をインストールするには、ターミナルで次のコマンドを実行します。sudo 部分は管理者権限を付与し、apt install はパッケージをインストールするために使用され、-y はすべてのプロンプトに自動的に「はい」と回答し、tshark はインストールしたいパッケージです。

sudo apt install -y tshark

ネットワークインターフェースの特定

ネットワークトラフィックのキャプチャを開始する前に、監視するネットワークインターフェースを知る必要があります。ネットワークインターフェースは、コンピュータがネットワークに接続するためのドアのようなものです。システム上のすべての利用可能なネットワークインターフェースをリストするには、次のコマンドを実行します。

tshark -D

このコマンドは、システム上のすべてのネットワークインターフェースのリストを表示します。出力は次のようになります。

1. eth0
2. eth1
3. lo (ループバック)
4. any (すべてのインターフェースでキャプチャする疑似デバイス)

この実験では、any インターフェースを使用します。これは、利用可能なすべてのネットワークインターフェースから一度にトラフィックをキャプチャできる特殊な疑似デバイスです。

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

使用するインターフェースがわかったので、ネットワークトラフィックのキャプチャを開始しましょう。Tshark でトラフィックをキャプチャする基本的な構文は次のとおりです。

tshark -i <interface> -w <output_file>

各部分の意味は次のとおりです。

  • -i <interface>: このオプションは、トラフィックをキャプチャするネットワークインターフェースを指定します。<interface> を実際のインターフェースの名前、例えば eth0any で置き換えることができます。
  • -w <output_file>: このオプションは、キャプチャしたパケットを保存するファイルの場所と名前を指定します。

まず、キャプチャしたファイルを保存するディレクトリを作成しましょう。mkdir -p コマンドは、ディレクトリが存在しない場合に作成します。ここでは /home/labex/project/captures に作成します。

mkdir -p /home/labex/project/captures

では、キャプチャを開始しましょう。any インターフェースを使用し、キャプチャしたパケットを /home/labex/project ディレクトリ内の capture.pcapng という名前のファイルに保存します。

tshark -i any -w /home/labex/project/capture.pcapng

このコマンドを実行すると、Tshark がパケットのキャプチャを開始したことを示す出力が表示されます。出力は次のようになります。

Capturing on 'any'

実際に意味のあるトラフィックをキャプチャするには、トラフィックを生成する必要があります。新しいターミナルタブを開き、次のコマンドを実行します。curl コマンドは、サーバーからデータを転送するために使用されます。ここでは、https://www.example.com というウェブサイトにアクセスしようとしています。

curl https://www.example.com

トラフィックを生成した後、Tshark が実行されているターミナルに戻り、Ctrl + C を押してキャプチャを停止します。キャプチャされたパケットの数を示すメッセージが表示されます。次のようになるかもしれません。

Capturing on 'any'
164 packets captured

キャプチャファイルの確認

キャプチャファイルが正常に作成されたことを確認するために、ls -l コマンドを使用することができます。このコマンドは、ディレクトリ内のファイルをリストし、それらに関する詳細情報を表示します。キャプチャファイルを確認するには、次のコマンドを実行します。

ls -l /home/labex/project/capture.pcapng

次のような出力が表示されるはずです。

-rw-r--r-- 1 labex labex 24680 Jan 27 12:34 /home/labex/project/capture.pcapng

では、キャプチャした内容を簡単に見てみましょう。再び Tshark を使用しますが、今回は -r オプションを使用します。-r オプションは、キャプチャファイルを読み取るために使用されます。出力を head - 10 コマンドにパイプし、ファイル内の最初の 10 個のパケットを表示します。

tshark -r /home/labex/project/capture.pcapng | head -10

このコマンドは、タイムスタンプ(パケットがキャプチャされた時刻)、送信元と宛先のアドレス(パケットの送信元と宛先)、および使用されたプロトコルを含む詳細なパケット情報を表示します。

Tshark を使ったネットワークトラフィックのフィルタリング

このステップでは、ネットワークトラフィックのキャプチャにフィルタを適用する方法を探っていきます。ネットワークトラフィックを扱う際、キャプチャファイルは非常に大きく、大量のデータで満たされていることがあります。フィルタリングにより、私たちが関心のある特定の種類のパケットに焦点を当てることができます。これは、大きなキャプチャファイルをより効率的に分析し、関連するトラフィックパターンを特定するために重要です。

表示フィルタの理解

Tshark は、キャプチャファイルから表示または処理するパケットを選択するために表示フィルタを使用します。これらのフィルタは、Tshark にどのパケットを見たいかを伝える方法と考えてください。これらは、プロトコルフィールドに基づいて一致条件を定義するための特定の構文を使用します。たとえば、Tshark に特定のプロトコルに属するパケットや特定の IP アドレスを持つパケットのみを表示するように指示することができます。表示フィルタを適用する基本的な構文は次のとおりです。

tshark -r "<filter_expression>" < input_file > -Y

このコマンドの構成要素を分解してみましょう。

  • -r <input_file>: このコマンドの部分は、Tshark が読み取るキャプチャファイルを指定します。これは、Tshark にネットワークトラフィックデータの場所を教えるようなものです。
  • -Y "<filter_expression>": これは、適用したい表示フィルタを指定します。フィルタ式は、どのパケットを選択するかを定義する一連のルールです。

一般的な表示フィルタの例

以下は、使用できるいくつかの有用なフィルタ式です。これらの例は、プロトコル、IP アドレス、ポート、HTTP メソッド、DNS クエリなど、パケットフィルタリングのさまざまな側面をカバーしています。

  • プロトコルでフィルタリング:tcp, udp, icmp, http, dns。たとえば、tcp を使用すると、Tshark は TCP プロトコルを使用するパケットのみを表示します。
  • IP アドレスでフィルタリング:ip.addr == 192.168.1.1。このフィルタは、送信元または宛先の IP アドレスが 192.168.1.1 であるパケットのみを表示します。
  • ポートでフィルタリング:tcp.port == 80 または tcp.port == 443。これらのフィルタは、TCP ポート 80 または 443 を使用するパケットを表示します。ポート 80 は一般的に HTTP トラフィックに使用され、ポート 443 は HTTPS トラフィックに使用されます。
  • HTTP メソッドでフィルタリング:http.request.method == "GET"。このフィルタは、GET メソッドを使用する HTTP リクエストのみを表示します。
  • DNS クエリでフィルタリング:dns.qry.name contains "example.com"。このフィルタは、クエリ名に文字列 "example.com" が含まれる DNS パケットを表示します。
  • フィルタの組み合わせ:tcp.port == 80 and http.request.method == "POST"。このフィルタは 2 つの条件を組み合わせています。TCP ポート 80 を使用し、HTTP POST リクエストを持つパケットのみを表示します。

キャプチャにフィルタを適用する

キャプチャファイルから HTTPS トラフィック(TCP ポート 443)をフィルタリングすることから始めましょう。次のコマンドを使用します。

tshark -r /home/labex/project/capture.pcapng -Y "tcp.port == 443"

このコマンドを実行すると、Tshark はキャプチャファイル /home/labex/project/capture.pcapng を読み取り、フィルタ tcp.port == 443 を適用します。結果として、通常 HTTPS トラフィックに使用される TCP ポート 443 を使用するパケットのみが表示されるはずです。出力には、送信元と宛先の IP アドレス、ポート番号、パケットフラグなど、これらのパケットに関する詳細が含まれます。出力の例は次のようになります。

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  3   0.023789 192.168.1.100 → 93.184.216.34 TCP 66 43210 → 443 [ACK] Seq=1 Ack=1 Win=64240 Len=0
  ...

DNS トラフィックを探すために別のフィルタを試してみましょう。次のコマンドを使用します。

tshark -r /home/labex/project/capture.pcapng -Y "dns"

このコマンドは、キャプチャ内の DNS パケットのみを表示します。出力には、クエリ名や応答 IP アドレスなどの詳細を含む DNS クエリと応答が表示されます。出力の例は次のようになります。

  8   0.034567 192.168.1.100 → 8.8.8.8 DNS 82 Standard query 0x1234 A example.com
  9   0.056789 8.8.8.8 → 192.168.1.100 DNS 98 Standard query response 0x1234 A example.com A 93.184.216.34

パケットの種類別のカウント

フィルタを使用して特定の種類のパケットをカウントすることもできます。これは、キャプチャファイル内のトラフィックの概要を把握するのに役立ちます。たとえば、TCP パケットの数をカウントするには、次のコマンドを使用できます。

tshark -r /home/labex/project/capture.pcapng -Y "tcp" | wc -l

このコマンドでは、tshark がキャプチャファイルを読み取り、フィルタ tcp を適用します。tshark の出力は、パイプ (|) を介して wc -l コマンドに渡され、出力の行数をカウントします。各行がパケットを表すため、これによりキャプチャファイル内の TCP パケットの数がわかります。

HTTPS パケットの数をカウントし、結果をファイルに保存しましょう。次のコマンドを使用します。

tshark -r /home/labex/project/capture.pcapng -Y "tcp.port == 443" | wc -l > /home/labex/project/filtered_packet_count.txt

このコマンドは前のコマンドと似ていますが、カウントを表示するだけでなく、出力を filtered_packet_count.txt という名前のファイルにリダイレクト (>) します。結果を次のコマンドで表示できます。

cat /home/labex/project/filtered_packet_count.txt

出力には、フィルタに一致するパケットの数が表示されます。たとえば、

42

特定のフィールドの抽出

Tshark は、-T fields-e オプションを使用して、パケットから特定のフィールドを抽出することができます。これは、パケットから特定の情報、たとえば HTTP リクエストのホスト、メソッド、URI のみに関心がある場合に便利です。次は例のコマンドです。

tshark -r /home/labex/project/capture.pcapng -Y "http" -T fields -e http.host -e http.request.method -e http.request.uri

このコマンドでは、tshark がキャプチャファイルを読み取り、フィルタ http を適用して HTTP パケットのみを選択し、次に -T fields オプションを使用してフィールドを抽出することを指定します。-e オプションは、抽出するフィールドを指定するために使用されます。この場合、http.hosthttp.request.methodhttp.request.uri フィールドを抽出しています。出力は次のようになるかもしれません。

example.com	GET	/index.html
example.com	GET	/images/logo.png

Tshark を使ったネットワークトラフィックの分析とエクスポート

このステップでは、Tshark を使ってネットワークトラフィックをさまざまな形式でエクスポートし、基本的なトラフィック分析を行う方法に焦点を当てます。これらのスキルは、キャプチャしたデータを同僚と共有したり、他のツールで使用したりすることができるため、非常に重要です。このセクションの終わりまでに、さまざまなファイル形式を扱い、ネットワークトラフィックから有益な情報を抽出できるようになります。

キャプチャファイル形式の理解

有名なネットワークプロトコルアナライザーである Wireshark は、いくつかのキャプチャファイル形式をサポートしています。各形式には独自の特徴があり、後でデータをどのように使用できるかを決定するため、理解することが重要です。

  • pcapng:これは Wireshark が使用するデフォルトの形式です。複数のインターフェースをサポートし、高度な機能を備えています。複雑なネットワークシナリオをキャプチャする必要がある場合に最適な選択肢です。
  • pcap:古典的な形式です。古いツールと互換性がありますが、pcapng と比較すると機能が少ないです。レガシーシステムで作業する必要がある場合は、この形式が最適な選択肢になるかもしれません。
  • csv:カンマ区切り値です。この形式は、データをスプレッドシートにインポートしてさらに分析する場合に非常に便利です。
  • json:JavaScript Object Notation です。プログラミング言語で簡単に解析できるため、プログラムによる分析に最適です。
  • text:人間が読めるプレーンテキスト形式です。特別なツールを使用せずにデータをすぐに表示したい場合に便利です。

さまざまなファイル形式へのエクスポート

キャプチャファイルの形式を変更するには、Tshark の -F オプションを使用できます。一般的なコマンド構造は次のとおりです。

tshark -r <input_file> -F <format> -w <output_file>

ここで、-r は入力ファイルを指定し、-F は出力形式を設定し、-w は出力ファイルを定義します。

例を挙げて、キャプチャを pcap 形式にエクスポートしてみましょう。

tshark -r /home/labex/project/capture.pcapng -F pcap -w /home/labex/project/export.pcap

このコマンドが正常に実行されると、画面には何も出力されません。エクスポートが成功したことを確認するには、ls コマンドを使用してエクスポートされたファイルの詳細をリストできます。

ls -l /home/labex/project/export.pcap

次のような出力が表示されるはずです。

-rw-r--r-- 1 labex labex 22468 Jan 27 12:45 /home/labex/project/export.pcap

プロトコル統計の分析

Tshark はファイルのエクスポートだけでなく、キャプチャされたトラフィックに関するさまざまな統計を生成するのにも役立ちます。これらの統計分析オプションのいくつかを探ってみましょう。

プロトコル階層統計

キャプチャ内でさまざまなプロトコルがどのように分布しているかを確認したい場合は、次のコマンドを使用できます。

tshark -r /home/labex/project/capture.pcapng -z io,phs

-z オプションは統計の種類を指定するために使用されます。この場合、io,phs はプロトコル階層統計を表します。出力には、プロトコルの階層と各プロトコルのパケットの割合が表示されます。

Protocol Hierarchy Statistics
|
+ Ethernet
  + Internet Protocol Version 4
    + Transmission Control Protocol
      + Transport Layer Security
        + Hypertext Transfer Protocol Secure
    + User Datagram Protocol
      + Domain Name System

会話統計

ネットワーク内のエンドポイント間の会話を分析するには、次のコマンドを使用できます。

tshark -r /home/labex/project/capture.pcapng -z conv,tcp

このコマンドは TCP 会話に焦点を当てています。関与するエンドポイント、交換されたパケットの数、転送された総バイト数などの統計が表示されます。

TCP Conversations
                                               |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                               | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
192.168.1.100:43210 <-> 93.184.216.34:443          24   18765      18    4532      42    23297       0.000000000        8.2345

HTTP リクエスト統計

キャプチャに HTTP トラフィックが含まれている場合は、次のコマンドを使用して HTTP リクエストを分析できます。

tshark -r /home/labex/project/capture.pcapng -z http,tree

このコマンドは、HTTP リクエストを URI ごとに整理し、各 URI のリクエスト数を表示します。

HTTP/Requests:
 /index.html                                    1 requests
 /images/logo.png                               2 requests

さまざまなテキスト形式へのエクスポート

バイナリ形式以外に、Tshark はデータをテキスト形式にエクスポートすることもできます。テキスト形式は分析がしやすいことが多いです。

CSV へのエクスポート

キャプチャから特定のフィールドを CSV ファイルにエクスポートするには、次のコマンドを使用できます。

tshark -r /home/labex/project/capture.pcapng -T fields -e frame.number -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -E header=y -E separator=, > /home/labex/project/tcp_summary.csv

ここで、-T fields は特定のフィールドをエクスポートすることを指定します。-e オプションは、エクスポートしたいフィールド、たとえばフレーム番号、送信元と宛先の IP アドレス、送信元と宛先の TCP ポートを定義するために使用されます。-E header=y は CSV ファイルにヘッダーを追加し、-E separator=, は区切り文字をカンマに設定します。

CSV エクスポートの確認

データを CSV ファイルにエクスポートした後、head コマンドを使用してファイルの最初の数行をすぐに表示できます。

head -5 /home/labex/project/tcp_summary.csv

出力は次のようになるかもしれません。

frame.number,ip.src,ip.dst,tcp.srcport,tcp.dstport
1,192.168.1.100,93.184.216.34,43210,443
2,93.184.216.34,192.168.1.100,443,43210
3,192.168.1.100,93.184.216.34,43210,443
...

Tshark の高度なテクニックとパイプの使用

このステップでは、Tshark の高度なテクニックを学びます。これらのテクニックは、ネットワークトラフィックデータに対して複雑な操作を行うことができるため、ネットワーク分析において非常に重要です。具体的には、標準入力 (stdin) からネットワークトラフィックを読み取る方法と、パイプを使用して Tshark を他のコマンドラインツールと組み合わせる方法を学びます。これらのスキルを習得することで、強力なネットワーク分析ワークフローを作成でき、大量のネットワークデータを扱う際に時間と労力を節約できます。

Linux のパイプと標準入力の理解

Linux オペレーティングシステムでは、パイプ (|) は非常に便利な機能です。パイプは 2 つのコマンド間の橋渡しとして機能し、あるコマンドの出力を別のコマンドの入力として送ることができます。これにより、複数のコマンドを連鎖させて、より複雑なタスクを実行することができます。標準入力 (stdin) は、プログラムが入力として読み取るデータストリームです。多くのコマンドラインツールで - 記号を使用すると、入力をファイルではなく stdin から取得するようにツールに指示することになります。これにより、データの処理方法に柔軟性が増します。

標準入力からネットワークトラフィックを読み取る

Tshark は、-r - オプションを使用して標準入力からキャプチャデータを読み取ることができます。この機能は、他のコマンドからのデータを処理したい場合や、キャプチャをリアルタイムでフィルタリングする必要があるシナリオで非常に便利です。ファイルから直接読み取る代わりに、データを Tshark にパイプで送ることができます。

標準入力からネットワークトラフィックを読み取る基本的な構文は次のとおりです。

cat <input_file> | tshark -r -

キャプチャファイルでこれを試してみましょう。次のコマンドは、キャプチャファイルを読み取り、すべてのパケットを表示します。これは tshark -r capture.pcapng を実行するのと同様です。

cat /home/labex/project/capture.pcapng | tshark -r -

出力には、キャプチャ内のすべてのパケットが次のように表示されます。

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  ...

標準入力でのフィルタリング

標準入力から読み取る際にもフィルタを適用することができます。これにより、特定の種類のネットワークトラフィックに焦点を当てることができます。

cat /home/labex/project/capture.pcapng | tshark -r - -Y "tcp.port == 80"

このコマンドは、キャプチャ内の HTTP トラフィック (TCP ポート 80) のみを表示します。フィルタを使用することで、関心のあるデータをすぐに抽出することができます。

ネットワーク分析のためのパイプラインの作成

ネットワークキャプチャデータに対して複数の操作を行う、より複雑なパイプラインを作成してみましょう。このパイプラインは以下の操作を行います。

  1. キャプチャファイルを読み取る
  2. DNS トラフィックをフィルタリングする
  3. DNS クエリ名のみを抽出する
  4. アルファベット順にソートする
  5. 重複を削除する
  6. 結果をファイルに保存する
cat /home/labex/project/capture.pcapng | tshark -r - -Y "dns" -T fields -e dns.qry.name | sort | uniq > /home/labex/project/dns_queries.txt

次のコマンドを実行して結果を確認しましょう。

cat /home/labex/project/dns_queries.txt

出力には、キャプチャ内の一意の DNS クエリ名がソートされたリストが次のように表示されます。

example.com
www.example.com

Tshark と他のツールの組み合わせ

Tshark は、他のコマンドラインツールと組み合わせることで、より強力な分析を行うことができます。

grep を使ったパケット種類のカウント

cat /home/labex/project/capture.pcapng | tshark -r - | grep TCP | wc -l > /home/labex/project/tcp_count.txt

このパイプラインは、キャプチャ内の TCP パケットの数をカウントします。grep を使用して TCP パケットを見つけ、wc -l を使用してカウントすることで、キャプチャ内の TCP トラフィックの量をすぐに把握することができます。

sed を使った HTTP ユーザーエージェントの抽出

cat /home/labex/project/capture.pcapng | tshark -r - -Y "http.user_agent" -T fields -e http.user_agent | sed 's/,/\n/g' > /home/labex/project/user_agents.txt

これは、すべての HTTP ユーザーエージェント文字列を抽出し、コンマを改行に置き換えます。これにより、出力が読みやすくなり、分析が容易になります。

標準入力からの出力をファイルに保存する

標準入力を使用した Tshark 分析の完全な出力をファイルに保存してみましょう。これにより、後でデータを確認することができます。

cat /home/labex/project/capture.pcapng | tshark -r - > /home/labex/project/stdin_output.txt

次のコマンドを実行して内容を確認しましょう。

head -5 /home/labex/project/stdin_output.txt

これにより、分析の最初の 5 行が次のように表示されるはずです。

  1   0.000000 192.168.1.100 → 93.184.216.34 TCP 74 43210 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
  2   0.023456 93.184.216.34 → 192.168.1.100 TCP 74 443 → 43210 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=128 SACK_PERM=1
  3   0.023789 192.168.1.100 → 93.184.216.34 TCP 66 43210 → 443 [ACK] Seq=1 Ack=1 Win=64240 Len=0
  4   0.024012 192.168.1.100 → 93.184.216.34 TLSv1.2 192 Client Hello
  5   0.045678 93.184.216.34 → 192.168.1.100 TLSv1.2 1023 Server Hello, Certificate, Server Key Exchange, Server Hello Done

まとめ

この実験では、ネットワークトラフィック分析に Wireshark のコマンドラインインターフェース (tshark) を効果的に使用する方法を学びました。まず、tshark の基本概念を理解し、ネットワークインターフェースからネットワークトラフィックをキャプチャする方法を学びました。次に、特定のトラフィックタイプに焦点を当てるためのフィルタの適用方法を探りました。これは、大きなキャプチャファイルを扱う際に非常に重要です。

また、共有やさらなる分析のために、ネットワークトラフィックをさまざまな形式でエクスポートする方法も学びました。さらに、ネットワークトラフィックの構成を理解するために、tshark の統計分析機能を探りました。最後に、標準入力からトラフィックを読み取ったり、tshark を他のコマンドラインツールと組み合わせて分析パイプラインを作成するなど、より複雑なテクニックに挑戦しました。これらのスキルは、大きなファイルの処理、自動化分析、リモートサーバーでの分析、繰り返し可能なワークフローの作成などのシナリオにおいて、グラフィカルな Wireshark インターフェースに比べて利点があります。これらのテクニックを習得することで、さまざまなネットワーキング環境でより効率的に作業するためのネットワークトラブルシューティングとセキュリティ分析の能力が向上しました。