ネットワーク管理やセキュリティ調査の現場において、膨大なパケットキャプチャデータから異常を見つけ出す作業は非常に困難を極めます。
パケットを一つずつ詳細に確認する手法は確実ですが、トラフィックの全体像を直感的に把握するには不向きな側面があります。
そこで活用したい機能が、Wiresharkに標準搭載されている「I/Oグラフ」です。
この機能を使用することで、ネットワーク上の通信量を時系列でグラフ化し、パケットの増減や特定の通信傾向を視覚的に捉えることが可能になります。
本記事では、I/Oグラフの基本的な使い方から、高度なフィルタリングを用いた高度なトラフィック解析手法までを詳しく解説します。
WiresharkのI/Oグラフとは
WiresharkのI/Oグラフは、キャプチャされたパケットの密度を時間軸に沿って描画する強力なツールです。
通常、Wiresharkのメイン画面ではパケットが到着した順番に並びますが、これだけでは「いつ、どの程度の負荷がかかったか」を判断するのは容易ではありません。
I/Oグラフを利用することで、特定のプロトコルの割合や、エラーパケットの発生タイミングを即座に特定できます。
これは、ネットワークのボトルネック調査や、サイバー攻撃によるトラフィック急増の検知において非常に重要な役割を果たします。
特に、大規模な環境でのログ解析やトラブルシューティングにおいては、まず全体を俯瞰するためにこの機能から調査を開始することが推奨されます。
I/Oグラフの基本的な表示方法
まずは、Wiresharkでキャプチャ済み、あるいはキャプチャ中のデータからグラフを表示する手順を確認しましょう。
グラフウィンドウの起動手順
Wiresharkの上部メニューバーから「統計(Statistics)」を選択してください。
ドロップダウンメニューの中に表示される「I/Oグラフ(I/O Graphs)」をクリックします。
これにより、新しいウィンドウが立ち上がり、現在のキャプチャデータに基づいたデフォルトの折れ線グラフが表示されます。
もしデータが表示されない場合は、キャプチャファイルが空でないか、あるいは時間軸のスケールが適切であるかを確認してください。
デフォルト設定の理解
初期状態では、すべてのトラフィック(All packets)が黒色のラインで表示されます。
グラフの横軸は「時間(秒)」を表し、縦軸は「単位時間あたりのパケット数(Packets/Tick)」を意味します。
下部の設定パネルでは、表示するグラフの項目を追加したり、色の変更を行ったりすることができます。
まずはこの基本画面で、通信に不自然なスパイク(突発的な上昇)がないかを観察することから解析が始まります。
高度なフィルタリングを活用した詳細解析
I/Oグラフの真価は、複数のフィルタを適用して異なる種類のトラフィックを同時に比較できる点にあります。
特定のプロトコルの可視化
例えば、ネットワーク全体の中でHTTP通信とDNS通信がどのような割合で発生しているかを調べたい場合があります。
このようなときは、グラフ設定の「Display Filter」列に、Wiresharkで常用されるフィルタ式を入力します。
以下の表は、I/Oグラフでよく活用される代表的なフィルタ式の例です。
| 解析対象 | フィルタ式(Display Filter) | 用途 |
|---|---|---|
| HTTPトラフィック | http | Web閲覧に伴う通信量の把握 |
| DNSクエリと応答 | dns | 名前解決の頻度と異常検知 |
| TCP再送パケット | tcp.analysis.retransmission | ネットワークの不安定さの特定 |
| TLSハンドシェイク | tls.handshake.type == 1 | 暗号化通信の開始セッション数 |
これらのフィルタを個別のグラフ項目として登録することで、複数の通信プロトコルをレイヤー化して比較表示することが可能になります。
エラーパケットと再送のトラッキング
通信の遅延が発生している原因を探る際、パケットロスや再送の有無を確認することは不可欠です。
I/Oグラフで tcp.analysis.flags をフィルタとして使用すると、異常な挙動を示すTCPパケットのみをグラフ化できます。
特定の時間帯に再送パケットが集中している場合、その時間帯に物理層のトラブルやネットワーク機器の輻輳が発生していた可能性が高いと推測できます。
この可視化により、何万行もあるパケットリストの中から問題の箇所を探し出す手間を大幅に削減できます。
ネットワークパフォーマンスの診断
I/Oグラフは、単にパケット数をカウントするだけでなく、ビットレートなどのパフォーマンス指標を可視化するためにも使われます。
帯域幅の使用状況を把握する
ネットワークの帯域をどの程度消費しているかを確認するには、縦軸の単位を変更する必要があります。
グラフウィンドウの「Y軸(Y-axis)」の設定で、単位を「Bits/Tick」に変更してください。
これにより、パケット数ではなく「bps(bits per second)」に近い形式でスループットを確認できるようになります。
特定のバックアップ処理やファイル転送が帯域を圧迫していないかを確認する際に非常に便利です。
遅延(レイテンシ)の特定
応答時間に問題がある場合は、高度な計算式を利用したグラフ作成が役立ちます。
Y軸の「Calc(計算)」オプションで「AVG(平均)」を選択し、フィールドに tcp.analysis.ack_rtt を指定してみてください。
これにより、TCPのラウンドトリップタイム(RTT)の推移がグラフ化されます。
特定のタイミングでRTTが急上昇していれば、その時間帯にネットワークの遅延が発生していたことが一目で判明します。
セキュリティ分析への応用
セキュリティエンジニアにとって、I/Oグラフは攻撃の兆候を掴むための強力な武器となります。
異常なトラフィックパターンの検出
DDoS攻撃やポートスキャンが発生した場合、トラフィックの形状に顕著な特徴が現れます。
短時間に同一の宛先ポートに対してSYNパケットが大量送信されている場合、グラフは垂直に近い立ち上がりを見せます。
このような挙動を検知するために、以下のフィルタを活用した監視用グラフを作成しておくと効果的です。
# SYNフラグのみが立っているTCPパケットを抽出
tcp.flags.syn == 1 && tcp.flags.ack == 0
このフィルタを適用したグラフが定常状態を超えて急増した場合は、外部からのスキャン攻撃やマルウェアによる拡散活動を疑う必要があります。
特定ホスト間の通信量比較
特定のサーバが過剰な通信を行っていないかを調査する場合、ホストごとのグラフを作成します。
例えば、ip.src == 192.168.1.50 と ip.dst == 192.168.1.50 の2つのグラフを色分けして表示します。
これにより、そのサーバが「送信」と「受信」のどちらで負荷をかけているのかを明確に区別できます。
データの持ち出し(エクスフィルトレーション)が行われている場合、通常では見られない大量の送信トラフィックが継続的に発生する様子を観測できるでしょう。
I/Oグラフの高度なカスタマイズ設定
より精密な解析を行うためには、グラフの描画パラメータを最適化する必要があります。
インターバルとスケールの調整
デフォルトでは「Tick interval」が1秒に設定されていますが、これは分析の細かさに直結します。
数時間におよぶキャプチャデータを解析する場合は、インターバルを1分や10分に広げることで、全体のトレンドが見やすくなります。
逆に、ミリ秒単位で発生するマイクロバーストを調査する場合は、インターバルを0.1秒や0.01秒に縮小します。
調査対象の事象がどの程度の時間スケールで発生しているかに合わせて、この値を柔軟に変更することが解析のコツです。
Y軸の単位と項目の変更
Y軸のスケールを「Linear(線形)」から「Logarithmic(対数)」に変更することも可能です。
少量のトラフィックと大量のトラフィックが混在している環境では、対数スケールを使用することで、微小な変化と大きなスパイクを同時に確認しやすくなります。
また、グラフのスタイルを「Line(折れ線)」から「Bar(棒グラフ)」や「FBar(塗りつぶし棒グラフ)」に変更することで、視認性をさらに向上させることもできます。
実践的な解析ワークフロー
ここで、実際のトラブルシューティングにおける一般的な流れを整理します。
- まずはデフォルトのグラフで、全トラフィックに異常なスパイクがないかを確認する。
- TCP再送フィルタを適用し、通信品質の低下が発生している時間帯を絞り込む。
- 問題の時間帯において、どのIPアドレスが最も帯域を消費しているかをフィルタで切り分ける。
- 特定のプロトコル(HTTPやDNSなど)に絞り込み、上位レイヤーでのエラーがないかを確認する。
- グラフ上で異常が見られたポイントをクリックし、メイン画面のパケット詳細と突き合わせる。
このように、「俯瞰から詳細へ」というアプローチを機械的に実行できるのが、I/Oグラフを利用する最大のメリットです。
グラフ上の任意の場所をマウスでクリックすると、Wiresharkのメインウィンドウがその時間帯のパケットまで自動的にジャンプする機能も非常に便利です。
まとめ
WiresharkのI/Oグラフは、複雑なネットワークトラフィックを「見える化」するための強力なツールです。
単なる通信量の確認に留まらず、高度なフィルタリングや計算機能を組み合わせることで、パフォーマンスの劣化やセキュリティインシデントの兆候を迅速に特定できます。
パケット解析のスキルを一段階引き上げるためには、パケットリストを追うだけでなく、このグラフ機能を使いこなすことが欠かせません。
日頃から正常時のトラフィックパターンをI/Oグラフで把握しておくことで、いざ異常が発生した際の早期発見に繋がります。
本記事で紹介したフィルタや設定方法を参考に、ぜひ日々の運用や調査業務に役立ててください。
