Analyzing Network Flow Data with Netflow
Parse NetFlow v9 and IPFIX records to detect volumetric anomalies, port scanning, data exfiltration, and C2 beaconing
What Is This
The "Analyzing Network Flow Data with Netflow" skill empowers security professionals and network analysts to parse, interpret, and evaluate NetFlow v9 and IPFIX network flow records for security monitoring and threat detection. Leveraging the Python netflow library, this skill enables efficient decoding of raw network flow data, building of traffic baselines, and application of statistical analysis to identify abnormal patterns indicative of malicious activities. Typical use cases include detection of volumetric anomalies, port scanning, data exfiltration, and command-and-control (C2) beaconing behaviors within enterprise or cloud environments.
NetFlow is a network protocol developed by Cisco for collecting IP traffic information and monitoring network flow. IPFIX (IP Flow Information Export) is an IETF standard based on NetFlow version 9, offering extensible and vendor-neutral flow export. Both formats are widely used in network security operations centers (SOCs) for continuous monitoring, forensic analysis, and automated alerting.
Why Use It
Monitoring raw packet data is resource-intensive and impractical at scale. Flow data provides a high-level summary of communications between endpoints, revealing who talked to whom, for how long, how often, and with what data volume. Analyzing these records is crucial for:
- Detecting volumetric anomalies: Spotting sudden surges in traffic that may indicate denial-of-service attacks or data leaks.
- Identifying port scanning: Recognizing when an entity is systematically probing the network for open ports, a common precursor to exploitation.
- Catching data exfiltration: Flagging unusual outbound flows to unfamiliar destinations, especially with large byte counts.
- Uncovering C2 beaconing: Detecting hosts communicating at regular intervals with remote servers, often symptomatic of malware or advanced persistent threats (APTs).
- Baseline establishment: Understanding typical network behavior to distinguish legitimate from suspicious activity.
By leveraging NetFlow and IPFIX data, analysts can efficiently triage incidents, tune detection rules, and validate the effectiveness of network security controls.
How to Use It
The following steps guide you through practical usage of this skill using the Python netflow library. Ensure that you have Python 3.8 or higher installed and the necessary permissions for collecting and analyzing flow data.
1. Install the Required
Dependencies
Install the netflow Python library:
pip install netflow2. Collect Network Flow
Data
You can collect NetFlow or IPFIX data from network devices that export flow records, or use the built-in collector provided by the netflow library for testing.
Start a collector on UDP port 9995:
python -m netflow.collector -p 9995Configure your network devices (such as routers or firewalls) to export NetFlow v9 or IPFIX records to the IP address and port of your collection system.
3. Parse Captured Flow
Data
Once data is collected, parse the flow records for analysis. Here is an example of how to parse a NetFlow packet in Python:
from netflow import parse_packet
with open('flow_sample.dat', 'rb') as f:
packet = f.read()
flows = parse_packet(packet)
for flow in flows:
print(flow)This will output dictionaries representing each flow with keys for source and destination IPs, ports, protocol, byte and packet counts, timestamps, and more.
4. Analyze Flows for Security
Events
Apply statistical and pattern-based analysis to identify suspicious activity:
a. Detecting Volumetric Anomalies
Identify flows with unusually high byte counts:
THRESHOLD = 10 * 1024 * 1024 # 10 MB
suspicious_flows = [f for f in flows if f['bytes'] > THRESHOLD]b. Detecting Port Scanning
Look for a single source IP connecting to many destination ports in a short window:
from collections import defaultdict
scan_tracker = defaultdict(set)
for flow in flows:
key = (flow['src_addr'], flow['dst_addr'])
scan_tracker[key].add(flow['dst_port'])
for (src, dst), ports in scan_tracker.items():
if len(ports) > 20: # Threshold for scan
print(f"Possible port scan from {src} to {dst}")c. Identifying C2 Beaconing
Detect periodic flows by analyzing intervals between connections:
import numpy as np
def check_beaconing(times):
intervals = np.diff(sorted(times))
return np.std(intervals) < 1 # Low variance suggests periodicity
connection_times = defaultdict(list)
for flow in flows:
connection_times[flow['src_addr']].append(flow['start_time'])
for src, times in connection_times.items():
if len(times) > 5 and check_beaconing(times):
print(f"Possible beaconing detected from {src}")5. Build Traffic
Baselines
Aggregate historical flow data to model typical behavior, which helps in identifying deviations. Techniques can include calculating average flow sizes, usual communication peers, and typical active hours.
When to Use It
- During security investigations requiring flow-level network analysis
- While developing detection rules or threat hunting queries targeting network-based threats
- When SOC analysts need structured methods for flow data analysis
- For validating monitoring coverage of attack techniques such as lateral movement, exfiltration, or scanning
- In red or blue teaming exercises to emulate or detect adversarial behaviors
Important Notes
- Ensure you have explicit authorization to collect and analyze flow data in production or lab environments.
- NetFlow and IPFIX do not capture payloads, only metadata - supplement with packet capture if full content is required.
- Results depend on the fidelity and retention of flow data - insufficient sampling or short retention may impair detection.
- Tune thresholds and detection logic to your environment to minimize false positives.
- Follow organizational policies and legal requirements regarding network monitoring and data privacy.
By mastering this skill, you can significantly enhance your ability to uncover and respond to advanced network threats using flow data analysis.
More Skills You Might Like
Explore similar skills to enhance your workflow
Linkerd Patterns
Production patterns for Linkerd service mesh - the lightweight, security-first service mesh for Kubernetes
Adopt
argument-hint: "[focus: full | gdds | adrs | stories | infra]"
Hard Predict Future
A Claude Code skill for hard predict future workflows and automation
SAP Abap
Develop ABAP programs on SAP systems with modern syntax and best practices
Javascript Sdk
Javascript SDK automation and integration for building and consuming JS-based APIs
Configuring Multi-Factor Authentication with Duo
Deploy Cisco Duo multi-factor authentication across enterprise applications, VPN, RDP, and SSH access points