ネットワークトラフィックの分析において、Wiresharkは欠かせないツールです。しかし、大量のパケットデータの中から必要な情報を見つけ出すには、適切なフィルタリング技術が重要です。この記事では、Wiresharkのフィルタリング方法を詳しく解説します。
いつも使っていないとやり方を忘れてしまいがちなので、備忘録をいう意味も込めてまとめておきます。
Wiresharkとは
Wiresharkは、LAN上に流れているパケットを「見える化」するパケットキャプチャツールです1。ネットワーク上を流れるパケットをリアルタイムにキャプチャして解析できる、オープンソースのプロトコルアナライザとして、世界中で広く利用されています2。主な特徴
- 無料で利用可能
- Windows、macOS、Linuxなど、様々なプラットフォームで動作
- 直感的なGUIベースのインターフェース
- 数百種類のプロトコルに対応
- 高度なフィルタリング機能を搭載
ダウンロードはこちら。
フィルタの基本設定
Wiresharkでフィルタを使用するには、主に以下の3つの方法があります。
- 画面上部のフィルタボックスに直接入力する方法
- パケットを右クリックしてフィルタを適用する方法
- パケット詳細画面からドラッグ&ドロップ
今回は、一番上のフィルタボックスに直接入力する方法を紹介します。
以下の図の赤枠に直接フィルタ設定をします。
プロトコルベースのフィルタリング
ネットワークトラフィックを効率的に分析するには、プロトコルごとのフィルタリングが有効です。
基本的なプロトコルフィルタ
tcp # TCPトラフィックのみ表示
http # HTTPトラフィックのみ表示
icmp # ICMPパケットのみ表示
dns # DNS通信のみ表示
IPアドレスとポート番号によるフィルタリング
特定のホストやサービスに関連する通信を分析する際に便利です。IPアドレスフィルタ
ip.src == 192.168.1.1 # 送信元IPアドレス
ip.dst == 192.168.1.2 # 宛先IPアドレス
ip.addr == 192.168.1.1 # 送信元または宛先IPアドレス
ポート番号フィルタ
tcp.port == 80 # 特定のポート番号
tcp.srcport == 443 # 送信元ポート
tcp.dstport == 8080 # 宛先ポート
TCPフラグを使用した高度なフィルタリング
TCPコネクションの状態を分析する際に役立ちます。フラグフィルタの例
tcp.flags.syn == 1 # SYNパケット
tcp.flags.fin == 1 # FINパケット
tcp.flags.reset == 1 # RESETパケット
複合条件を使用したフィルタリング
より詳細な分析のために、複数の条件を組み合わせることができます。論理演算子の使用例
ip.src == 192.168.1.1 && tcp # 特定IPからのTCP通信
http.host == "example.com" # 特定ドメインへの通信
!(tcp.port == 80 || tcp.port == 443) # 80番と443番以外のポート
高度なフィルタリングテクニック
TCPストリームの追跡や特定の通信セッションの分析に使用します。
tcp.stream eq 1 # 特定のTCPストリーム
ip.addr eq 192.168.1.1 && ip.addr eq 192.168.1.2 # 特定のホスト間の通信
まとめ
Wiresharkのフィルタ機能を使いこなすことで、ネットワークトラフィックの分析作業を大幅に効率化できます。基本的なプロトコルフィルタから、複雑な条件を組み合わせた高度なフィルタまで、状況に応じて適切なフィルタを選択することが重要です。これらのフィルタリング技術を習得することで、より正確で迅速なネットワーク分析が可能になります。
コメント