analyzing-network-traffic-for-incidents について
パケットキャプチャとネットワークメタデータを使ったインシデント調査の手順を示すセキュリティ分析スキルです。C2検知、ラテラルムーブメント、データ持ち出し、証拠の報告を扱います。
主な機能
- 01PCAPとネットワークメタデータの分析
- 02C2ビーコンの検知
- 03ラテラルムーブメントの追跡
- 04データ持ち出しの分析
- 05IOCの抽出と報告
活用シーン
- 01疑わしいC2通信の確認
- 02ネットワークからの転送量の算出
- 03内部システム間の移動の追跡
- 04パケット証拠によるIDS/IPSアラートの検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill analyzing-network-traffic-for-incidentsインストール後、Claude Code で/analyzing-network-traffic-for-incidentsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
インシデントにおけるネットワークトラフィックの分析
使用する場面
- 異常なネットワークトラフィックパターンに関する SIEM アラートを受け、さらに詳しい調査が必要な場合
- C2 ビーコニングが疑われ、パケットレベルの分析による確認が必要な場合
- ネットワーク上の証拠から、データの持ち出し量や宛先を定量化する必要がある場合
- システム間のラテラルムーブメントをネットワーク接続から追跡する必要がある場合
- IDS/IPS アラートを確認または否定するため、パケットレベルでの検証が必要な場合
使用しないでください:プロセスの実行やファイルシステムの痕跡など、ホストベースのフォレンジック分析には使用しないでください。代わりにエンドポイントフォレンジックツールを使用してください。
前提条件
- フルパケットキャプチャ(PCAP)インフラストラクチャ、またはオンデマンドキャプチャ機能(ネットワークタップ、SPAN ポート)
- 分析ワークステーションに Wireshark がインストールされ、適切な表示フィルターの知識があること
- ネットワークメタデータの生成用に Zeek(旧称 Bro)が導入されていること(conn.log、dns.log、http.log、ssl.log)
- トラフィックフロー分析用にネットワーク機器から NetFlow/IPFIX を収集していること
- VLAN の構成、ファイアウォールの設置場所、監視ポイントを示すネットワーク構成図
- 観測されたネットワークインジケーターとの照合に使う脅威インテリジェンスフィード
ワークフロー
ステップ 1:ネットワークトラフィックをキャプチャまたは取得する
調査に関連するトラフィックデータを取得します。
ライブキャプチャ(インシデントが進行中の場合):
# Capture on specific interface filtering by host
tcpdump -i eth0 -w capture.pcap host 10.1.5.42
# Capture C2 traffic to specific external IP
tcpdump -i eth0 -w c2_traffic.pcap host 185.220.101.42
# Capture with rotation (1GB files, keep 10)
tcpdump -i eth0 -w capture_%Y%m%d%H%M.pcap -C 1000 -W 10
既存のインフラストラクチャから取得する場合:
- フルパケットキャプチャアプライアンス(Arkime/Moloch、ExtraHop、Corelight)から PCAP をエクスポートします
- 調査対象期間の Zeek クラスターログを取得します
- 大まかなトラフィック分析用にネットワーク機器から NetFlow データをエクスポートします
ステップ 2:C2 通信を特定する
コマンド&コントロールのトラフィックパターンを検出します。
ビーコニングの検出(Zeek conn.log):
# Extract connections to external IPs with regular intervals
cat conn.log | zeek-cut ts id.orig_h id.resp_h id.resp_p duration orig_bytes resp_bytes \
| awk '$4 ~ /^185\.220/' | sort -t. -k1,1n -k2,2n
Wireshark によるビーコニング分析:
# Filter for traffic to suspected C2 IP
ip.addr == 185.220.101.42
# Filter HTTPS traffic to non-standard ports
tcp.port != 443 && ssl
# Filter DNS queries for suspicious domains
dns.qry.name contains "evil" or dns.qry.name matches "^[a-z0-9]{32}\."
# Filter HTTP POST (common C2 check-in method)
http.request.method == "POST" && ip.dst == 185.220.101.42
特定すべきビーコニングの特徴:
- 接続間隔が一定(例:10~15%のジッターを伴い、60 秒ごとに発生)
- リクエストとレスポンスのパケットサイズが一定
- 正規の CDN やサービスに関連付けられていない外部 IP への HTTPS 通信
- エントロピーの高いサブドメインへの DNS クエリ(DNS トンネリングの兆候)
ステップ 3:ラテラルムーブメントのトラフィックを分析する
内部システム間の攻撃者の移動を追跡します。
Key protocols for lateral movement detection:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SMB (TCP 445): PsExec, file share access, ransomware propagation
RDP (TCP 3389): Remote desktop sessions
WinRM (TCP 5985): PowerShell remoting
WMI (TCP 135): Remote command execution
SSH (TCP 22): Linux lateral movement
DCE/RPC (TCP 135): DCOM-based lateral movement
ラテラルムーブメントを調べる Wireshark フィルター:
# SMB lateral movement
smb2 && ip.src == 10.1.5.42 && ip.dst != 10.1.5.42
# RDP connections from compromised host
tcp.dstport == 3389 && ip.src == 10.1.5.42
# Kerberos ticket requests (potential pass-the-ticket)
kerberos.msg_type == 12 && ip.src == 10.1.5.42
# NTLM authentication (potential pass-the-hash)
ntlmssp.auth.username && ip.src == 10.1.5.42
ステップ 4:データの持ち出しを検出する
ネットワーク外に出ていく不正なデータ転送を特定します。
# Identify large outbound transfers in Zeek conn.log
cat conn.log | zeek-cut ts id.orig_h id.resp_h id.resp_p orig_bytes \
| awk '$5 > 100000000' | sort -t$'\t' -k5 -rn
# DNS tunneling detection (high volume of TXT queries)
cat dns.log | zeek-cut query qtype | grep TXT | cut -f1 \
| rev | cut -d. -f1,2 | rev | sort | uniq -c | sort -rn | head
# Unusual protocol usage (ICMP tunneling, DNS over HTTPS)
cat conn.log | zeek-cut proto id.resp_p orig_bytes | awk '$1 == "icmp" && $3 > 1000'
データの持ち出しを調べる Wireshark フィルター:
# Large HTTP POST uploads
http.request.method == "POST" && tcp.len > 10000
# FTP data transfers
ftp-data && ip.src == 10.0.0.0/8
# DNS with large TXT responses (tunneling)
dns.resp.type == 16 && dns.resp.len > 200
ステップ 5:IOC を抽出して照合する
トラフィック分析からネットワークベースのインジケーターを抽出します。
- 侵害されたホストが通信した外部 IP アドレス
- インシデント対象期間中に DNS で名前解決されたドメイン
- HTTP/HTTPS 経由でアクセスされた URL(SSL インスペクションが導入されている場合)
- TLS 証明書の詳細(サブジェクト、発行者、シリアル番号、JA3/JA3S ハッシュ)
- HTTP リクエストの User-Agent 文字列
- PCAP でキャプチャされたファイル転送(Wireshark の「Export Objects」を使って抽出)
ステップ 6:ネットワークフォレンジックの調査結果を記録する
証拠への参照を含む、構成されたレポートに分析結果をまとめます。
- 各調査結果について、具体的な PCAP ファイル、フレーム番号、タイムスタンプを記載します
- スクリーンショットまたはエクスポートした PDF として、重要な証拠のパケットキャプチャを含めます
- ネットワーク上の活動をインシデントのタイムラインに対応付けます
- ネットワークの調査結果を、エンドポイントフォレンジックで得られたホストベースの証拠と照合します
主な概念
| 用語 | 定義 |
|---|---|
| PCAP(パケットキャプチャ) | オフライン分析用に、ネットワークインターフェースでキャプチャした生のネットワークパケットを保存するファイル形式 |
| ビーコン通信 | 侵害されたホストからC2サーバーへの規則的な周期的ネットワーク接続です。一貫した時間間隔によって識別できます |
| JA3/JA3S | ClientHelloおよびServerHelloのパラメーターに基づくTLSクライアントおよびサーバーのフィンガープリント手法です。アプリケーションごとに固有です |
| NetFlow/IPFIX | パケット全体をキャプチャせずに、ルーターやスイッチが収集するネットワークトラフィックのメタデータ(送信元、宛先、ポート、バイト数、継続時間)です |
| DNSトンネリング | DNSクエリと応答にデータをエンコードし、データを外部へ持ち出す、またはDNSプロトコル経由でC2を維持する手法です |
| ネットワークタップ | ネットワークのパフォーマンスに影響を与えずに監視できるよう、ネットワークトラフィックの完全なコピーを作成するハードウェアデバイスです |
| Zeekログ | 接続、DNS、HTTP、SSLなどを対象に、Zeekネットワーク分析フレームワークが生成する構造化メタデータログです |
ツールとシステム
- Wireshark:パケットレベルでネットワークプロトコルを詳細に検査できるオープンソースのパケットアナライザーです
- Zeek(旧称Bro):ライブトラフィックやキャプチャ済みトラフィックから構造化メタデータログを生成するネットワーク分析フレームワークです
- Arkime(旧称Moloch):大規模なネットワークフォレンジック向けのオープンソースのフルパケットキャプチャおよび検索プラットフォームです
- NetworkMiner:PCAPファイルからファイル、画像、認証情報を抽出するネットワークフォレンジック分析ツールです
- RITA(Real Intelligence Threat Analytics):Zeekログを対象とする、オープンソースのビーコン検出およびDNSトンネリング分析ツールです
よくあるシナリオ
シナリオ:C2のビーコン通信を確認し、外部へ持ち出されたデータ量を算出する
背景:EDRがワークステーション上の不審なプロセスを検出しましたが、外部へ持ち出されたデータ量を特定できません。ネットワークチームから、インシデント発生期間を対象とするフルパケットキャプチャ装置のPCAPが提供されます。
手順:
- PCAPをフィルタリングし、侵害されたホストのIPから外部の宛先へのトラフィックを抽出します
- 接続タイミングのパターンを分析して、C2チャネルを特定します(ビーコン検出)
- C2接続からTLS証明書とJA3ハッシュを抽出し、IOCを作成します
- インシデントの継続期間にC2インフラストラクチャへ転送された合計バイト数を算出します
- 追加のデータ持ち出しチャネル(DNSトンネリング、クラウドストレージへのアップロード)がないか確認します
- WiresharkのExport Objects機能を使用して、転送された暗号化されていないファイルを抽出します
注意点:
- SSL検査なしでC2がHTTPS経由で動作しているにもかかわらず、HTTPトラフィックのみを分析してしまう
- クエリごとのデータ量が少なくても、時間の経過に伴う合計量は大きくなるDNSトンネリングを見逃してしまう
- ネットワークのタイムスタンプをエンドポイントのタイムスタンプと相関させない(タイムゾーンの不一致)
- データ持ち出しに悪用された正規のクラウドサービス(OneDrive、Google Drive、Dropbox)を見落とす
出力形式
NETWORK TRAFFIC ANALYSIS REPORT
=================================
Incident: INC-2025-1547
Analyst: [Name]
Capture Source: Arkime full packet capture
Analysis Period: 2025-11-15 14:00 UTC - 2025-11-15 18:00 UTC
Total PCAP Size: 4.7 GB
C2 COMMUNICATIONS
Source: 10.1.5.42 (WKSTN-042)
Destination: 185.220.101.42:443 (HTTPS)
Beacon Interval: 60 seconds ± 12% jitter
Sessions: 237 connections over 4 hours
JA3 Hash: a0e9f5d64349fb13191bc781f81f42e1
TLS Certificate: CN=update.evil[.]com (self-signed)
Total Data Sent: 147 MB (outbound)
Total Data Recv: 2.3 MB (inbound - commands)
LATERAL MOVEMENT
10.1.5.42 → 10.1.10.15 (SMB, TCP 445) - 14:35 UTC
10.1.5.42 → 10.1.10.20 (RDP, TCP 3389) - 14:42 UTC
10.1.5.42 → 10.1.1.5 (LDAP, TCP 389) - 15:10 UTC
EXFILTRATION SUMMARY
Protocol: HTTPS to C2 server
Volume: 147 MB outbound
Duration: 14:23 UTC - 18:00 UTC
Files Extracted: [list if recoverable from unencrypted channels]
DNS ANALYSIS
Suspicious Queries: 0 DNS tunneling indicators
DGA Detection: 0 algorithmically generated domains
EVIDENCE REFERENCES
PCAP File: INC-2025-1547_capture.pcap (SHA-256: ...)
Zeek Logs: /logs/zeek/2025-11-15/ (conn.log, ssl.log, dns.log)