Wireshark チートシート

ハンズオンラボで Wireshark を学ぶ

ハンズオンラボと実世界のシナリオを通じて、Wireshark ネットワークパケット解析を学びます。LabEx は、必須のパケットキャプチャ、表示フィルター、プロトコル解析、ネットワークトラブルシューティング、セキュリティ監視を網羅した包括的な Wireshark コースを提供します。ネットワークトラフィック分析とパケット検査技術を習得しましょう。

キャプチャフィルターとトラフィックキャプチャ

ホストフィルタリング

特定のホストとの間で送受信されるトラフィックをキャプチャします。

# 特定のIPとのトラフィックをキャプチャ
host 192.168.1.100
# 特定の送信元からのトラフィックをキャプチャ
src host 192.168.1.100
# 特定の宛先へのトラフィックをキャプチャ
dst host 192.168.1.100
# サブネットからのトラフィックをキャプチャ
net 192.168.1.0/24
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

Wireshark でhost 192.168.1.100は何をフィルタリングしますか?
192.168.1.100 とのすべてのトラフィック(送受信)
192.168.1.100 からのトラフィックのみ
192.168.1.100 へのトラフィックのみ
192.168.1.100 のポート上のトラフィック

ポートフィルタリング

特定のポート上のトラフィックをキャプチャします。

# HTTPトラフィック (ポート 80)
port 80
# HTTPSトラフィック (ポート 443)
port 443
# SSHトラフィック (ポート 22)
port 22
# DNSトラフィック (ポート 53)
port 53
# ポート範囲
portrange 1000-2000
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

Wireshark でport 80は何をフィルタリングしますか?
HTTP リクエストのみ
HTTP レスポンスのみ
TCP パケットのみ
ポート 80 上のすべてのトラフィック(送信元と宛先の両方)

プロトコルフィルタリング

特定のプロトコルトラフィックをキャプチャします。

# TCPトラフィックのみ
tcp
# UDPトラフィックのみ
udp
# ICMPトラフィックのみ
icmp
# ARPトラフィックのみ
arp

高度なキャプチャフィルター

複数の条件を組み合わせて正確なキャプチャを行います。

# 特定のホストとのHTTPトラフィック
host 192.168.1.100 and port 80
# SSH(ポート22)を除くTCPトラフィック
tcp and not port 22
# 2つのホスト間のトラフィック
host 192.168.1.100 and host 192.168.1.200
# HTTPまたはHTTPSトラフィック
port 80 or port 443
クイズ

ログインしてこのクイズに回答し、学習の進捗を追跡できます

tcp and not port 22は何をキャプチャしますか?
SSH トラフィックのみ
SSH(ポート 22)を除くすべての TCP トラフィック
ポート 22 の UDP トラフィック
すべてのネットワークトラフィック

インターフェイスの選択

キャプチャ対象のネットワークインターフェイスを選択します。

# 利用可能なインターフェイスを一覧表示
tshark -D
# 特定のインターフェイスでキャプチャ
# Ethernetインターフェイス
eth0
# WiFiインターフェイス
wlan0
# ループバックインターフェイス
lo

キャプチャオプション

キャプチャパラメータを設定します。

# キャプチャファイルサイズを制限 (MB)
-a filesize:100
# キャプチャ期間を制限 (秒)
-a duration:300
# 10ファイルでのリングバッファ
-b files:10
# プロミスキャスモード (すべてのトラフィックをキャプチャ)
-p

表示フィルターとパケット解析

基本的な表示フィルター

一般的なプロトコルやトラフィックタイプのための必須フィルター。

# HTTPトラフィックのみを表示
http
# HTTPS/TLSトラフィックのみを表示
tls
# DNSトラフィックのみを表示
dns
# TCPトラフィックのみを表示
tcp
# UDPトラフィックのみを表示
udp
# ICMPトラフィックのみを表示
icmp

IP アドレスフィルタリング

送信元および宛先 IP アドレスでパケットをフィルタリングします。

# 特定のIPからのトラフィック
ip.src == 192.168.1.100
# 特定のIPへのトラフィック
ip.dst == 192.168.1.200
# 2つのIP間のトラフィック
ip.addr == 192.168.1.100
# サブネットからのトラフィック
ip.src_net == 192.168.1.0/24
# 特定のIPを除く
not ip.addr == 192.168.1.1

ポートとプロトコルフィルター

特定のポートとプロトコルの詳細でフィルタリングします。

# 特定のポート上のトラフィック
tcp.port == 80
# 送信元ポートフィルター
tcp.srcport == 443
# 宛先ポートフィルター
tcp.dstport == 22
# ポート範囲
tcp.port >= 1000 and tcp.port <=
2000
# 複数のポート
tcp.port in {80 443 8080}

プロトコル固有の解析

HTTP 解析

HTTP リクエストとレスポンスを解析します。

# HTTP GETリクエスト
http.request.method == "GET"
# HTTP POSTリクエスト
http.request.method == "POST"
# 特定のHTTPステータスコード
http.response.code == 404
# 特定のホストへのHTTPリクエスト
http.host == "example.com"
# 文字列を含むHTTPリクエスト
http contains "login"

DNS 解析

DNS クエリと応答を検査します。

# DNSクエリのみ
dns.flags.response == 0
# DNS応答のみ
dns.flags.response == 1
# 特定のドメインのDNSクエリ
dns.qry.name == "example.com"
# DNS Aレコードクエリ
dns.qry.type == 1
# DNSエラー/失敗
dns.flags.rcode != 0

TCP 解析

TCP 接続の詳細を解析します。

# TCP SYNパケット(接続試行)
tcp.flags.syn == 1
# TCP RSTパケット(接続リセット)
tcp.flags.reset == 1
# TCP再送信
tcp.analysis.retransmission
# TCPウィンドウサイズの問題
tcp.analysis.window_update
# TCP接続確立
tcp.flags.syn == 1 and tcp.flags.ack == 0

TLS/SSL解析

暗号化された接続の詳細を検査します。

# TLSハンドシェイクパケット
tls.handshake
# TLS証明書情報
tls.handshake.certificate
# TLSアラートとエラー
tls.alert
# 特定のTLSバージョン
tls.handshake.version == 0x0303
# TLS Server Name Indication
tls.handshake.extensions_server_name

ネットワークトラブルシューティング

一般的なネットワークの問題を特定します。

# ICMP到達不能メッセージ
icmp.type == 3
# ARPリクエスト/レスポンス
arp.opcode == 1 or arp.opcode == 2
# ブロードキャストトラフィック
eth.dst == ff:ff:ff:ff:ff:ff
# フラグメント化されたパケット
ip.flags.mf == 1
# 大きなパケット(MTU問題の可能性)
frame.len > 1500

時間ベースのフィルタリング

タイムスタンプとタイミングに基づいてフィルタリングします。

# 時間範囲内のパケット
frame.time >= "2024-01-01 10:00:00"
# 過去1時間以内のパケット
frame.time_relative >= -3600
# 応答時間の分析
tcp.time_delta > 1.0
# パケット間隔時間
frame.time_delta > 0.1

統計と解析ツール

プロトコル階層

キャプチャ内のプロトコル分布を表示します。

# アクセス方法: Statistics > Protocol Hierarchy
# 各プロトコルのパーセンテージを表示
# 最も一般的なプロトコルを特定
# トラフィックの概要把握に役立つ
# コマンドライン相当
tshark -r capture.pcap -q -z io,phs

通信 (Conversations)

エンドポイント間の通信を分析します。

# アクセス方法: Statistics > Conversations
# Ethernet通信
# IPv4/IPv6通信
# TCP/UDP通信
# 転送されたバイト数、パケット数を表示
# コマンドライン相当
tshark -r capture.pcap -q -z conv,tcp

I/O グラフ

トラフィックパターンを時間軸で視覚化します。

# アクセス方法: Statistics > I/O Graphs
# 時間経過に伴うトラフィック量
# 1秒あたりのパケット数
# 1秒あたりのバイト数
# 特定のトラフィックに対してフィルターを適用
# トラフィックの急増を特定するのに役立つ

エキスパート情報

潜在的なネットワークの問題を特定します。

# アクセス方法: Analyze > Expert Info
# ネットワーク問題に関する警告
# パケット送信におけるエラー
# パフォーマンスの問題
# セキュリティに関する懸念
# エキスパート情報の深刻度でフィルタリング
tcp.analysis.flags

フローグラフ

エンドポイント間のパケットフローを視覚化します。

# アクセス方法: Statistics > Flow Graph
# パケットシーケンスを表示
# 時間ベースの視覚化
# トラブルシューティングに役立つ
# 通信パターンを特定

応答時間分析

アプリケーションの応答時間を測定します。

# HTTP応答時間
# Statistics > HTTP > Requests
# DNS応答時間
# Statistics > DNS
# TCPサービス応答時間
# Statistics > TCP Stream Graphs > Time Sequence

ファイル操作とエクスポート

キャプチャの保存と読み込み

さまざまな形式でキャプチャファイルを管理します。

# キャプチャファイルを保存
# File > Save As > capture.pcap
# キャプチャファイルを読み込む
# File > Open > existing.pcap
# 複数のキャプチャファイルをマージ
# File > Merge > select files
# フィルタリングされたパケットのみを保存
# File > Export Specified Packets

エクスポートオプション

特定のデータやパケットのサブセットをエクスポートします。

# 選択したパケットをエクスポート
# File > Export Specified Packets
# パケットの詳細をエクスポート
# File > Export Packet Dissections
# HTTPからオブジェクトをエクスポート
# File > Export Objects > HTTP
# SSL/TLSキーをエクスポート
# Edit > Preferences > Protocols > TLS

コマンドラインキャプチャ

tshark を使用して自動化されたキャプチャと分析を実行します。

# ファイルにキャプチャ
tshark -i eth0 -w capture.pcap
# フィルター付きでキャプチャ
tshark -i eth0 -f "port 80" -w http.pcap
# パケットを読み取り、表示
tshark -r capture.pcap
# ファイルに表示フィルターを適用
tshark -r capture.pcap -Y "tcp.port == 80"

バッチ処理

複数のキャプチャファイルを自動的に処理します。

# 複数のファイルをマージ
mergecap -w merged.pcap file1.pcap file2.pcap
# 大きなキャプチャファイルを分割
editcap -c 1000 large.pcap split.pcap
# 時間範囲を抽出
editcap -A "2024-01-01 10:00:00" \
        -B "2024-01-01 11:00:00" \
        input.pcap output.pcap

パフォーマンスと最適化

メモリ管理

大きなキャプチャファイルを効率的に処理します。

# 連続キャプチャのためにリングバッファを使用
-b filesize:100 -b files:10
# パケットキャプチャサイズを制限
-s 96  # 最初の96バイトのみキャプチャ
# データを減らすためにキャプチャフィルターを使用
host 192.168.1.100 and port 80
# 速度向上のためにプロトコルディセクションを無効化
-d tcp.port==80,http

表示の最適化

大規模データセットでの GUI パフォーマンスを向上させます。

# 調整する設定:
# Edit > Preferences > Appearance
# 配色スキームの選択
# フォントサイズや種類の調整
# カラム表示オプションの調整
# 時間表示設定の調整
# View > Time Display Format
# キャプチャ開始からの秒数
# 時刻
# UTC時刻
# tsharkを大規模ファイル分析に使用
tshark -r large.pcap -q -z conv,tcp

効率的な分析ワークフロー

ネットワークトラフィックを分析するためのベストプラクティス。

# 1. キャプチャフィルターから始める
# 関連するトラフィックのみをキャプチャ
# 2. 表示フィルターを段階的に使用する
# 広く始めて、徐々に絞り込む
# 3. 統計情報をまず使用する
# 詳細な分析の前に概要を把握する
# 4. 特定のフローに焦点を当てる
# パケットを右クリック > Follow > TCP Stream

自動化とスクリプト作成

一般的な分析タスクを自動化します。

# カスタム表示フィルターボタンの作成
# View > Display Filter Expression
# シナリオごとにプロファイルを使用
# Edit > Configuration Profiles
# tsharkでスクリプト化
#!/bin/bash
tshark -r $1 -q -z endpoints,tcp | \
grep -v "Filter:" | head -20

インストールとセットアップ

Windows インストール

公式ウェブサイトからダウンロードしてインストールします。

# wireshark.orgからダウンロード
# 管理者としてインストーラーを実行
# インストール中にWinPcap/Npcapを含める
# コマンドラインインストール
(chocolatey)
choco install wireshark
# インストールを確認
wireshark --version

Linux インストール

パッケージマネージャー経由、またはソースからインストールします。

# Ubuntu/Debian
sudo apt update
sudo apt install wireshark
# Red Hat/CentOS/Fedora
sudo yum install wireshark
# または
sudo dnf install wireshark
# ユーザーをwiresharkグループに追加
sudo usermod -a -G wireshark
$USER

macOS インストール

Homebrew または公式インストーラーを使用してインストールします。

# Homebrewを使用
brew install --cask wireshark
# wireshark.orgからダウンロード
# .dmgパッケージをインストール
# コマンドラインツール
brew install wireshark

設定と環境設定

インターフェイス設定

キャプチャインターフェイスとオプションを設定します。

# Edit > Preferences > Capture
# デフォルトのキャプチャインターフェイス
# プロミスキャスモード設定
# バッファサイズの設定
# ライブキャプチャでの自動スクロール
# インターフェイス固有の設定
# Capture > Options > Interface Details

プロトコル設定

プロトコルディセクタとデコードを設定します。

# Edit > Preferences > Protocols
# プロトコルディセクタの有効化/無効化
# ポート割り当ての設定
# 復号化キーの設定 (TLS, WEPなど)
# TCP再アセンブリオプション
# Decode As機能
# Analyze > Decode As

表示設定

ユーザーインターフェイスと表示オプションをカスタマイズします。

# Edit > Preferences > Appearance
# 配色スキームの選択
# フォントサイズと種類
# カラム表示オプション
# 時間表示設定
# View > Time Display Format
# キャプチャ開始からの秒数
# 時刻
# UTC時刻

セキュリティ設定

セキュリティ関連のオプションと復号化を設定します。

# TLS復号化の設定
# Edit > Preferences > Protocols > TLS
# RSAキーリスト
# 事前共有キー
# キーログファイルの位置
# 潜在的に危険な機能の無効化
# Luaスクリプトの実行
# 外部リゾルバ

高度なフィルタリング技術

論理演算子

複数のフィルター条件を組み合わせます。

# AND演算子
tcp.port == 80 and ip.src == 192.168.1.100
# OR演算子
tcp.port == 80 or tcp.port == 443
# NOT演算子
not icmp
# グループ化のための括弧
(tcp.port == 80 or tcp.port == 443) and ip.src ==
192.168.1.0/24

文字列マッチング

パケット内の特定のコンテンツを検索します。

# 文字列を含む (大文字と小文字を区別)
tcp contains "password"
# 文字列を含む (大文字と小文字を区別しない)
tcp matches "(?i)login"
# 正規表現
http.request.uri matches "\.php$"
# バイトシーケンス
eth.src[0:3] == 00:11:22

フィールド比較

パケットフィールドを値や範囲と比較します。

# 等価性
tcp.srcport == 80
# より大きい/より小さい
frame.len > 1000
# 範囲チェック
tcp.port >= 1024 and tcp.port <= 65535
# セットメンバーシップ
tcp.port in {80 443 8080}
# フィールドの存在
tcp.options

高度なパケット分析

特定のパケット特性や異常を特定します。

# 破損したパケット
_ws.malformed
# 重複パケット
frame.number == tcp.analysis.duplicate_ack_num
# 順序が狂ったパケット
tcp.analysis.out_of_order
# TCPウィンドウのスケール問題
tcp.analysis.window_full

一般的なユースケース

ネットワークトラブルシューティング

ネットワーク接続の問題を特定し解決します。

# 接続タイムアウトの検出
tcp.analysis.retransmission and tcp.analysis.rto
# 遅い接続の特定
tcp.time_delta > 1.0
# ネットワーク輻輳の検出
tcp.analysis.window_full
# DNS解決の問題
dns.flags.rcode != 0
# MTU発見の問題
icmp.type == 3 and icmp.code == 4

セキュリティ分析

潜在的なセキュリティ脅威や疑わしいアクティビティを検出します。

# ポートスキャン検出
tcp.flags.syn == 1 and tcp.flags.ack == 0
# 単一IPからの大量接続
# Statistics > Conversations を使用
# 疑わしいDNSクエリ
dns.qry.name contains "dga" or dns.qry.name matches
"^[a-z]{8,}\.com$"
# 疑わしいURLへのHTTP POST
http.request.method == "POST" and http.request.uri
contains "/upload"
# 異常なトラフィックパターン
# I/Oグラフで急増を確認

アプリケーションパフォーマンス

アプリケーションの応答時間を監視および分析します。

# Webアプリケーション分析
http.time > 2.0
# データベース接続監視
tcp.port == 3306 and tcp.analysis.initial_rtt > 0.1
# ファイル転送パフォーマンス
tcp.stream eq X and tcp.analysis.bytes_in_flight
# VoIP品質分析
rtp.jitter > 30 or rtp.marker == 1

プロトコル調査

特定のプロトコルとその動作を深く掘り下げます。

# Eメールトラフィック
tcp.port == 25 or tcp.port == 587 or tcp.port == 993
# FTPファイル転送
ftp-data or ftp.request.command == "RETR"
# SMB/CIFSファイル共有
smb2 or smb
# DHCPリース分析
bootp.option.dhcp == 1 or bootp.option.dhcp == 2

関連リンク