mcpField
A
analyzing-network-traffic-with-wireshark

analyzing-network-traffic-with-wireshark

github.com/mukul975セキュリティ35.2k537 回インストール8 週間前に更新
リポジトリ

analyzing-network-traffic-with-wireshark について

セキュリティ分析担当者やネットワークのトラブルシューティング向けの、Wireshark を使ったトラフィック分析スキルです。Wireshark と tshark によるパケット取得、プロトコル検査、異常調査、証拠のエクスポートを扱います。

主な機能

  1. 01インターフェースとキャプチャフィルターの設定
  2. 02表示フィルターによるトラフィックの絞り込み
  3. 03プロトコルと TCP ストリームの検査
  4. 04ファイルと侵害指標のエクスポート
  5. 05統計とレポートの作成

活用シーン

  1. 01侵入やデータ流出の調査
  2. 02再送や DNS 障害の診断
  3. 03マルウェア通信パターンの確認
  4. 04ファイアウォールと IDS ルールの検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-network-traffic-with-wireshark

インストール後、Claude Code で/analyzing-network-traffic-with-wiresharkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

Wiresharkでネットワークトラフィックを分析する

使用する場面

  • コマンド&コントロール通信、データの持ち出し、ラテラルムーブメントを示すパケットレベルの証拠を調べ、ネットワークへの侵入が疑われる事案を調査する
  • 再送、フラグメンテーション、DNS 名前解決の失敗など、ネットワークパフォーマンスの問題を診断する
  • サンドボックス化されたホストや隔離されたホストのトラフィックをキャプチャし、マルウェアの通信パターンを分析する
  • ネットワークセグメントを実際に通過しているトラフィックを確認し、ファイアウォールルールや IDS ルールを検証する
  • キャプチャしたネットワークセッションから、ファイル、認証情報、侵害の痕跡(IOC)を抽出する

使用しないでください:許可なくネットワーク上のトラフィックをキャプチャする場合、法的権限なくプライベートな通信を傍受する場合、本番環境の監視でフル機能の SIEM プラットフォームの代わりとして使う場合。

前提条件

  • Wireshark 4.0+ と tshark コマンドラインユーティリティがインストールされていること
  • ライブパケットキャプチャを行うための root/sudo 権限、または wireshark グループへの所属
  • 監視対象のセグメントにアクセスできるネットワークインターフェース(物理 NIC、ミラーポート、またはネットワークタップ)
  • パケットキャプチャファイルを保存するための十分なディスク容量(トラフィックの多いギガビットリンクでは、1 分あたり 1 GB が目安です)
  • パケットレベルでの TCP/IP プロトコル、HTTP、DNS、TLS、SMB に関する知識

ワークフロー

ステップ 1:キャプチャ環境を設定する

関連するトラフィックを対象とするように、キャプチャインターフェースとフィルターを設定します。

# List available interfaces
tshark -D

# Start capture on eth0 with a capture filter to limit scope
tshark -i eth0 -f "host 10.10.5.23 and (port 80 or port 443 or port 445)" -w /tmp/capture.pcapng

# Capture with ring buffer to manage disk usage (10 files, 100MB each)
tshark -i eth0 -b filesize:102400 -b files:10 -w /tmp/rolling_capture.pcapng

# Capture on multiple interfaces simultaneously
tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcapng

Wireshark GUI を使用する場合は、開始する前に Capture Options ダイアログでキャプチャフィルターを設定します。

ステップ 2:対象を絞った分析のために表示フィルターを適用する
# Filter HTTP traffic containing suspicious user agents
tshark -r capture.pcapng -Y "http.user_agent contains \"curl\" or http.user_agent contains \"Wget\""

# Find DNS queries to suspicious TLDs
tshark -r capture.pcapng -Y "dns.qry.name contains \".xyz\" or dns.qry.name contains \".top\" or dns.qry.name contains \".tk\""

# Identify TCP retransmissions indicating network issues
tshark -r capture.pcapng -Y "tcp.analysis.retransmission"

# Filter SMB traffic for lateral movement detection
tshark -r capture.pcapng -Y "smb2.cmd == 5 or smb2.cmd == 3" -T fields -e ip.src -e ip.dst -e smb2.filename

# Find cleartext credential transmission
tshark -r capture.pcapng -Y "ftp.request.command == \"PASS\" or http.authbasic"

# Detect beaconing patterns (regular interval connections)
tshark -r capture.pcapng -Y "ip.dst == 203.0.113.50" -T fields -e frame.time_relative -e ip.src -e tcp.dstport
ステップ 3:プロトコル固有の詳細分析を行う
# Follow a TCP stream to reconstruct a conversation
tshark -r capture.pcapng -q -z follow,tcp,ascii,0

# Analyze HTTP request/response pairs
tshark -r capture.pcapng -Y "http" -T fields -e frame.time -e ip.src -e ip.dst -e http.request.method -e http.request.uri -e http.response.code

# Extract DNS query/response statistics
tshark -r capture.pcapng -q -z dns,tree

# Analyze TLS handshakes for weak cipher suites
tshark -r capture.pcapng -Y "tls.handshake.type == 2" -T fields -e ip.src -e ip.dst -e tls.handshake.ciphersuite

# SMB file access enumeration
tshark -r capture.pcapng -Y "smb2" -T fields -e frame.time -e ip.src -e ip.dst -e smb2.filename -e smb2.cmd
ステップ 4:アーティファクトと IOC を抽出する
# Export HTTP objects (files transferred over HTTP)
tshark -r capture.pcapng --export-objects http,/tmp/http_objects/

# Export SMB objects (files transferred over SMB)
tshark -r capture.pcapng --export-objects smb,/tmp/smb_objects/

# Extract all unique destination IPs for threat intelligence lookup
tshark -r capture.pcapng -T fields -e ip.dst | sort -u > unique_dest_ips.txt

# Extract SSL/TLS certificate information
tshark -r capture.pcapng -Y "tls.handshake.type == 11" -T fields -e x509sat.uTF8String -e x509ce.dNSName

# Extract all URLs accessed
tshark -r capture.pcapng -Y "http.request" -T fields -e http.host -e http.request.uri | sort -u > urls.txt

# Hash extracted files for IOC matching
find /tmp/http_objects/ -type f -exec sha256sum {} \; > extracted_file_hashes.txt
ステップ 5:統計分析と異常検知を行う
# Protocol hierarchy statistics
tshark -r capture.pcapng -q -z io,phs

# Conversation statistics sorted by bytes
tshark -r capture.pcapng -q -z conv,tcp -z conv,udp

# Identify top talkers
tshark -r capture.pcapng -q -z endpoints,ip

# IO graph data (packets per second)
tshark -r capture.pcapng -q -z io,stat,1,"COUNT(frame) frame"

# Detect port scanning patterns
tshark -r capture.pcapng -Y "tcp.flags.syn == 1 and tcp.flags.ack == 0" -T fields -e ip.src -e tcp.dstport | sort | uniq -c | sort -rn | head -20
ステップ 6:レポートを生成し、証拠をエクスポートする
# Export filtered packets to a new PCAP for evidence preservation
tshark -r capture.pcapng -Y "ip.addr == 10.10.5.23 and tcp.port == 4444" -w evidence_c2_traffic.pcapng

# Generate packet summary in CSV format
tshark -r capture.pcapng -T fields -E header=y -E separator=, -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len > traffic_summary.csv

# Create PDML (XML) output for programmatic analysis
tshark -r capture.pcapng -T pdml > capture_analysis.xml

# Calculate capture file hash for chain of custody
sha256sum capture.pcapng > capture_hash.txt

主な概念

用語定義
キャプチャフィルター(BPF)キャプチャ時に適用し、記録するパケットを制限する Berkeley Packet Filter 構文です。ファイルサイズを削減し、パフォーマンスを向上させます
表示フィルターキャプチャ済みパケットに適用する Wireshark 固有のフィルター構文です。キャプチャファイルを変更せずに、対象を絞って分析できます
PCAPNG複数のインターフェース、名前解決、注釈、メタデータを 1 つのファイルでサポートする次世代のパケットキャプチャ形式です
TCP ストリーム2 つのエンドポイント間の完全な双方向通信を表す、再構成済みの TCP セグメント列です
プロトコルディセクタ特定のプロトコルのフィールドや構造をデコードし、パケット内容を詳細に検査できる Wireshark のモジュールです
IO グラフキャプチャ期間中のパケットレートまたはバイトレートを時系列で可視化したもので、トラフィックの急増やビーコニングの特定に役立ちます

ツールとシステム

  • Wireshark 4.0+:3,000 以上のプロトコルディセクタ、ストリーム再構成、エクスポート機能を備えた GUI ベースのパケットアナライザー
  • tshark:GUI を使わないキャプチャ、バッチ処理、スクリプト化された分析パイプラインに使える Wireshark のコマンドライン版
  • tcpdump:GUI に依存せず、リモートシステム上ですばやくキャプチャできる軽量なパケットキャプチャツール
  • mergecap:複数のキャプチャファイルを 1 つの PCAP に統合し、一括で分析するための Wireshark ユーティリティ
  • editcap:キャプチャファイルを分割、フィルタリングし、形式を変換するための Wireshark ユーティリティ

よくあるシナリオ

シナリオ:DNS トンネリングによるデータ窃取の疑いを調査する

コンテキスト:SOC チームは、ワークステーション(10.10.3.45)から外部ドメインへの DNS クエリ数が異常に多いことを検知しました。SIEM アラートでは、ベースラインの毎分 15 件に対し、DNS クエリが平均毎分 200 件に達していることが示されました。ワークステーションの VLAN にあるネットワークタップからパケットキャプチャを開始しました。

アプローチ:

  1. tshark -i eth2 -f "host 10.10.3.45 and port 53" -w dns_exfil_investigation.pcapng を使用して、ワークステーションのサブネットのトラフィックをキャプチャします
  2. DNS クエリのパターンを分析します:tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.name contains \"suspect-domain.xyz\"" -T fields -e frame.time -e dns.qry.name
  3. サブドメインラベルを調べ、エンコードされたデータがないか確認します(長い Base64 風のサブドメインはトンネリングを示唆します):tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.type == 16" -T fields -e dns.qry.name -e dns.txt
  4. クエリ名の長さを合計してデータ量を計算し、窃取に使われた帯域幅を推定します
  5. 一意なクエリ名を抽出し、Base64 形式のサブドメインをデコードして、窃取された内容を復元します
  6. 証拠となるパケットを別の PCAP にエクスポートし、証拠保全の連鎖のために SHA-256 ハッシュを生成します

注意点:

  • 忙しいネットワークでフィルターを適用せずにトラフィックをキャプチャし、関連データを収集する前にディスク容量が不足する
  • キャプチャフィルターではなく表示フィルターを使用したために、処理に時間のかかる巨大なファイルが生成される
  • 従来のポート 53 の DNS キャプチャを迂回する暗号化 DNS(DoH/DoT)トラフィックを見落とす
  • フォレンジック証拠のためのパケットキャプチャのハッシュと証拠保全の連鎖に関する文書を作成しない

出力形式

## Traffic Analysis Report

**Case ID**: IR-2024-0847
**Capture File**: dns_exfil_investigation.pcapng
**SHA-256**: a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
**Duration**: 2024-03-15 14:00:00 to 14:45:00 UTC
**Source Interface**: eth2 (VLAN 30 span port)

### Findings

**1. DNS Tunneling Confirmed**
- Source: 10.10.3.45
- Destination DNS: 8.8.8.8 (forwarded to ns1.suspect-domain.xyz)
- Query volume: 9,247 queries in 45 minutes (205/min vs 15/min baseline)
- Average subdomain label length: 63 characters (base64-encoded data)
- Estimated data exfiltrated: ~2.3 MB via TXT record responses

**2. Indicators of Compromise**
- Domain: suspect-domain.xyz (registered 3 days prior)
- Nameserver: ns1.suspect-domain.xyz (203.0.113.50)
- Query pattern: TXT record requests with base64-encoded subdomains
- Response pattern: TXT records containing base64-encoded payloads

コメント