mcpField
P
performing-network-forensics-with-wireshark

performing-network-forensics-with-wireshark

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

performing-network-forensics-with-wireshark について

Wiresharkなどを使うセキュリティインシデント調査向けのネットワークフォレンジックガイドです。PCAPの確認から不審な通信の特定、ファイル抽出、調査結果の記録までを扱います。

主な機能

  1. 01PCAPと通信統計の確認
  2. 02不審な接続やプロトコルの絞り込み
  3. 03HTTP・SMBファイルの抽出
  4. 04TCPセッションの再構築
  5. 05ネットワークフォレンジック報告書の作成

活用シーン

  1. 01マルウェアのC2通信調査
  2. 02データ流出の検知と再構築
  3. 03ネットワーク内の横展開の追跡
  4. 04Webアプリケーション攻撃の再構築

インストール

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

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

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

同梱ファイル

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

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

詳細

Wireshark によるネットワークフォレンジック

使用する場面

  • セキュリティインシデントで取得したネットワークトラフィック(PCAP ファイル)を分析する場合
  • キャプチャしたトラフィック内のコマンド&コントロール(C2)通信を特定する場合
  • パケットキャプチャからデータ流出の活動を再構成する場合
  • マルウェア分析でネットワーク上の侵害指標を特定する場合
  • ネットワーク経由で転送されたファイル、認証情報、アーティファクトを抽出する場合

前提条件

  • パケット分析用の Wireshark または tshark がインストールされていること
  • ネットワークキャプチャから取得した PCAP/PCAPNG ファイル(tcpdump、Wireshark、ネットワーク TAP)
  • アーティファクトを自動抽出する NetworkMiner
  • 大容量のキャプチャファイルに対応できる十分な RAM(1GB 以上の PCAP には 8GB 以上の RAM が必要です)
  • TCP/IP、HTTP、DNS、TLS プロトコルに関する理解
  • IP の位置情報を調べるための GeoIP データベース

ワークフロー

ステップ 1:キャプチャファイルの準備と検証
# Install Wireshark and tshark
sudo apt-get install wireshark tshark

# Verify the PCAP file
capinfos /cases/case-2024-001/network/capture.pcap

# Output includes: file type, packet count, capture duration, data size
# Example output:
# File name:           capture.pcap
# File type:           Wireshark/tcpdump/... - pcap
# Number of packets:   1,245,678
# File size:           856 MB
# Data size:           823 MB
# Capture duration:    3600.123456 seconds
# First packet time:   2024-01-15 14:00:00.000000
# Last packet time:    2024-01-15 15:00:00.123456

# Hash the PCAP for integrity
sha256sum /cases/case-2024-001/network/capture.pcap \
   > /cases/case-2024-001/network/pcap_hash.txt

# Get a protocol hierarchy statistics overview
tshark -r /cases/case-2024-001/network/capture.pcap -q -z io,phs
ステップ 2:不審なトラフィックのフィルタリングと特定
# Extract conversation statistics
tshark -r /cases/case-2024-001/network/capture.pcap -q -z conv,tcp

# Find top talkers by bytes transferred
tshark -r /cases/case-2024-001/network/capture.pcap -q -z endpoints,ip \
   | sort -t$'\t' -k3 -rn | head -20

# Filter for DNS queries (potential C2 or exfiltration)
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "dns.qr == 0" \
   -T fields -e frame.time -e ip.src -e dns.qry.name \
   > /cases/case-2024-001/analysis/dns_queries.txt

# Find DNS queries to unusual TLDs or long domain names (DNS tunneling)
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "dns.qr == 0 && dns.qry.name matches \"[a-z0-9]{30,}\"" \
   -T fields -e frame.time -e ip.src -e dns.qry.name \
   > /cases/case-2024-001/analysis/suspicious_dns.txt

# Filter HTTP traffic
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "http.request" \
   -T fields -e frame.time -e ip.src -e ip.dst -e http.request.method \
   -e http.host -e http.request.uri -e http.user_agent \
   > /cases/case-2024-001/analysis/http_requests.txt

# Find connections to known malicious ports
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "tcp.dstport == 4444 || tcp.dstport == 8080 || tcp.dstport == 1337 || tcp.dstport == 6667" \
   -T fields -e frame.time -e ip.src -e ip.dst -e tcp.dstport \
   > /cases/case-2024-001/analysis/suspicious_ports.txt

# Detect beaconing patterns (regular interval connections)
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "ip.dst == 185.0.0.1" \
   -T fields -e frame.time_epoch \
   > /tmp/beacon_times.txt
ステップ 3:トラフィックからファイルとオブジェクトを抽出
# Export HTTP objects (files transferred over HTTP)
tshark -r /cases/case-2024-001/network/capture.pcap \
   --export-objects http,/cases/case-2024-001/analysis/http_objects/

# Export SMB objects
tshark -r /cases/case-2024-001/network/capture.pcap \
   --export-objects smb,/cases/case-2024-001/analysis/smb_objects/

# Export DICOM objects (medical imaging)
tshark -r /cases/case-2024-001/network/capture.pcap \
   --export-objects dicom,/cases/case-2024-001/analysis/dicom_objects/

# Export FTP data transfers
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "ftp-data" \
   -T fields -e ftp-data.data \
   --export-objects ftp-data,/cases/case-2024-001/analysis/ftp_objects/

# Hash all extracted objects
find /cases/case-2024-001/analysis/http_objects/ -type f -exec sha256sum {} \; \
   > /cases/case-2024-001/analysis/extracted_file_hashes.txt

# Check extracted file hashes against VirusTotal
while read hash filepath; do
   echo "Checking $filepath ($hash)"
   curl -s "https://www.virustotal.com/api/v3/files/$hash" \
      -H "x-apikey: YOUR_API_KEY" | python3 -c "
import json,sys
data=json.load(sys.stdin)
if 'data' in data:
   stats=data['data']['attributes']['last_analysis_stats']
   print(f'  Malicious: {stats[\"malicious\"]}, Undetected: {stats[\"undetected\"]}')
else:
   print('  Not found on VT')
"
done < /cases/case-2024-001/analysis/extracted_file_hashes.txt
ステップ 4:TCP ストリームとセッションの再構成
# Follow a specific TCP stream (stream index 42)
tshark -r /cases/case-2024-001/network/capture.pcap \
   -q -z "follow,tcp,ascii,42" \
   > /cases/case-2024-001/analysis/stream_42.txt

# Extract all HTTP request-response pairs for a suspicious host
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "http && ip.addr == 185.0.0.1" \
   -T fields -e frame.time -e http.request.method -e http.host \
   -e http.request.uri -e http.response.code -e http.content_length \
   > /cases/case-2024-001/analysis/suspicious_http.txt

# Extract TLS/SSL certificate information
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "tls.handshake.type == 11" \
   -T fields -e ip.dst -e tls.handshake.certificate \
   > /cases/case-2024-001/analysis/tls_certs.txt

# Extract TLS SNI (Server Name Indication) values
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "tls.handshake.extensions_server_name" \
   -T fields -e frame.time -e ip.src -e ip.dst \
   -e tls.handshake.extensions_server_name \
   > /cases/case-2024-001/analysis/tls_sni.txt

# Extract credentials from unencrypted protocols
tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "ftp.request.command == \"USER\" || ftp.request.command == \"PASS\"" \
   -T fields -e frame.time -e ip.src -e ftp.request.command -e ftp.request.arg

tshark -r /cases/case-2024-001/network/capture.pcap \
   -Y "http.authorization" \
   -T fields -e frame.time -e ip.src -e http.host -e http.authorization
ステップ 5:NetworkMiner による自動分析
# Install NetworkMiner (Mono required on Linux)
sudo apt-get install mono-complete
wget https://www.netresec.com/?download=NetworkMiner -O NetworkMiner.zip
unzip NetworkMiner.zip -d /opt/NetworkMiner/

# Run NetworkMiner
mono /opt/NetworkMiner/NetworkMiner.exe /cases/case-2024-001/network/capture.pcap

# NetworkMiner automatically extracts:
# - Host inventory (OS fingerprinting, open ports)
# - Files transferred over HTTP, FTP, SMB, TFTP
# - Images from web traffic
# - Credentials (plaintext and NTLM hashes)
# - DNS records
# - Session parameters
# - Anomalies and alerts
ステップ 6:ネットワークフォレンジックレポートの作成
# Compile findings
cat << 'EOF' > /cases/case-2024-001/analysis/network_forensics_report.txt
NETWORK FORENSICS ANALYSIS REPORT
===================================
Case: 2024-001
Capture File: capture.pcap (856 MB, 1,245,678 packets)
Capture Period: 2024-01-15 14:00 to 15:00 UTC
Analyst: [Examiner Name]

TRAFFIC OVERVIEW:
  Total packets: 1,245,678
  Unique source IPs: 45
  Unique destination IPs: 234
  Protocols: TCP (78%), UDP (18%), ICMP (2%), Other (2%)

C2 COMMUNICATION:
  Destination: 185.0.0.1:443
  Beaconing interval: ~60 seconds
  Total connections: 58
  Data transferred: 4.2 MB outbound, 12.3 MB inbound
  TLS SNI: update-service.malware-c2.com

EXFILTRATION:
  Method: HTTPS POST to 185.0.0.1
  Volume: 4.2 MB over 45 minutes
  Files: 3 ZIP archives extracted from HTTP objects

DNS TUNNELING:
  Suspicious queries to: data.evil-dns.com
  Average subdomain length: 45 characters
  Query count: 1,234 (normal baseline: 50)
EOF

主要な概念

概念説明
PCAP/PCAPNG生のネットワークトラフィックを保存するパケットキャプチャファイル形式
TCP ストリーム2 つのエンドポイント間の双方向通信全体
ディープパケットインスペクションヘッダー情報にとどまらないパケットペイロードの内容分析
ビーコニングマルウェアから C2 サーバーへの一定間隔でのコールバック
DNS トンネリングDNS クエリ内にデータをエンコードして密かに流出させる手法
TLS/SNI暗号化された接続先のホスト名を明らかにするサーバー名表示
ネットワークフローエンドポイント間の通信(IP、ポート、バイト数、継続時間)の概要
プロトコル階層キャプチャに含まれるプロトコルの統計的な内訳

ツールとシステム

ツール目的
Wireshark詳細なプロトコル解析機能を備えた GUI ベースのパケットアナライザー
tsharkスクリプトによる分析に使う Wireshark のコマンドライン版
NetworkMinerネットワークフォレンジック分析とファイル抽出の自動化
tcpdumpコマンドラインのパケットキャプチャユーティリティ
zeek (Bro)構造化された接続ログを生成するネットワークセキュリティモニター
ngrepパケット内容のパターンマッチングを行うネットワーク grep
capinfosPCAP ファイルの統計情報とメタデータを表示するユーティリティ
mergecap複数の PCAP ファイルを 1 つのキャプチャに結合

よくあるシナリオ

シナリオ 1:マルウェアの C2 通信分析 Wireshark に PCAP を読み込み、外部 IP へのビーコニングパターンを特定し、TLS 証明書に自己署名または不審な発行者がないか調べ、エンコードされたコマンドを含む HTTP POST データを抽出し、C2 IP を脅威インテリジェンスフィードと照合します。

シナリオ 2:データ流出の検知 トラフィック統計を分析して通常より大きな送信転送を特定し、DNS トンネリングの兆候がないか DNS クエリの長さを調べ、外部サーバーへの FTP および HTTP ファイルアップロードを追跡し、パケットデータから流出したファイルを再構成します。

シナリオ 3:企業ネットワーク内でのラテラルムーブメント 内部ホスト間の SMB、RDP、WMI、PSExec トラフィックをフィルタリングし、複数のシステムにまたがる認証情報の使用パターンを特定し、ネットワーク内での攻撃者の侵入経路を追跡して、Windows イベントログの認証イベントと照合します。

シナリオ 4:Web アプリケーション攻撃の再構成 Web サーバー宛ての HTTP トラフィックをフィルタリングし、SQL インジェクション、XSS、ディレクトリトラバーサルの試みを特定し、エクスプロイトが成功した TCP ストリームを追跡し、アップロードされた Web シェルまたはペイロードを抽出して、インシデントレポート用に攻撃の連鎖を記録します。

出力形式

Network Forensics Summary:
  Capture: capture.pcap
  Duration: 1 hour (14:00-15:00 UTC, 2024-01-15)
  Packets: 1,245,678 | Size: 856 MB

  Top Suspicious Connections:
    192.168.1.50 -> 185.0.0.1:443   (C2, 58 connections, 4.2MB out)
    192.168.1.50 -> 10.0.0.25:445   (SMB lateral movement)
    192.168.1.50 -> 10.0.0.30:3389  (RDP lateral movement)

  Extracted Artifacts:
    Files:        23 (3 malicious per VT)
    Credentials:  2 plaintext FTP logins
    DNS Queries:  1,234 suspicious (possible tunneling)
    TLS Certs:    5 self-signed certificates

  IOCs Identified:
    IPs:     185.0.0.1, 203.0.113.50
    Domains: update-service.malware-c2.com, data.evil-dns.com
    Hashes:  3 file hashes flagged as malware

コメント