NetFlow v9/IPFIX 流量分析实战:用 Python 检测端口扫描、数据外传与 C2 信标(基于 Anthropic-Cybersecurity-Skills)
NetFlow v9/IPFIX 流量分析实战用 Python 检测端口扫描、数据外传与 C2 信标基于 Anthropic-Cybersecurity-Skills【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本篇技术文章围绕 Anthropic-Cybersecurity-Skills 仓库中的 analyzing-network-flow-data-with-netflow 技能展开讲解如何利用 Pythonnetflow库解析 NetFlow v9/IPFIX 流记录构建流量基线并通过统计方法识别端口扫描、数据外传、C2 周期性信标和流量体积异常四类威胁。读完本文你将掌握该技能完整的数据采集、解析、检测与报告生成流程并能直接复现其分析脚本的调用方式与阈值配置。技能定位与框架映射该技能在仓库 index.json 中注册为analyzing-network-flow-data-with-netflow属于cybersecurity领域下的network-security子领域版本 1.0采用 Apache-2.0 许可。其 SKILL.md 头部元数据将其映射到两套安全框架NIST CSF 2.0PR.IR-01基础设施安全、DE.CM-01网络监控、ID.AM-03数据分类、PR.DS-02数据保护传输MITRE ATTCKT1071应用层协议常用于 C2 通信、T1048替代协议外传、T1046网络服务发现对应端口/主机扫描、T1095非应用层协议外传。这种映射方式与仓库 MITRE ATTCK 映射说明 的整体方法一致每个技能都关联具体 ATTCK 技术与战术C2 对应 TA0011、外传对应 TA0010、发现对应 TA0007使 AI Agent 可以按 ATTCK ID 检索相关技能。仓库 coverage-summary 中也列出了 T1046Network Service Discovery、T1071Application Layer Protocol和 T1048Exfiltration Over Alternative Protocol等网络安全类技术的技能覆盖情况。适用场景与前置条件该技能在以下场景中被推荐使用源自 SKILL.md 的 When to Use调查需要分析 NetFlow 网络流量数据的安全事件为该领域构建检测规则或威胁狩猎查询SOC 分析师需要针对此类分析的结构化操作流程验证针对相关攻击技术的监控覆盖度。前置条件Prerequisites要求熟悉网络安全概念与工具具备可安全执行的测试/实验环境Python 3.8 并安装依赖对任何测试活动具备相应授权。数据采集与 NetFlow 解析安装与采集技能的 Instructions 第 1、2 步给出了标准流程pip install netflow python -m netflow.collector -p 9995 -D /tmp/flowsnetflow是用于解析 NetFlow v9 与 IPFIX 记录的 Python 库netflow.collector作为采集模块在 9995 端口NetFlow 默认 UDP 端口接收路由器/交换机导出的流数据-D /tmp/flows指定落盘目录。API 参考文档 进一步给出了两个 CLI 入口python -m netflow.collector -p 9995 -D /tmp/flows # 采集器 python -m netflow.analyzer -f /tmp/flows/*.json # 分析器parse_packet API 与模板持久化SKILL.md 的 Examples 章节给出了最小解析示例import netflow data, _ netflow.parse_packet(raw_bytes, templates{}) for flow in data.flows: print(flow.IPV4_SRC_ADDR, flow.IPV4_DST_ADDR, flow.IN_BYTES)API 参考文档补充了完整的流字段读取方式并强调一个关键细节v9/IPFIX 的模板表templates必须在多次调用之间持久化因为模板记录Template Record只在流记录Flow Record之前按需出现一次import netflow # Parse a raw NetFlow packet packet, templates netflow.parse_packet(raw_bytes, templates{}) # templates must persist between calls for v9/IPFIX for flow in packet.flows: flow.IPV4_SRC_ADDR # Source IP flow.IPV4_DST_ADDR # Destination IP flow.L4_SRC_PORT # Source port flow.L4_DST_PORT # Destination port flow.PROTOCOL # IP protocol (6TCP, 17UDP) flow.IN_BYTES # Bytes transferred flow.IN_PKTS # Packet count flow.TCP_FLAGS # TCP flags bitmask flow.FIRST_SWITCHED # Flow start time flow.LAST_SWITCHED # Flow end timeAPI 参考文档同时列出了 NetFlow v9 字段类型对照表字段名 / 字段 ID / 含义FieldIDDescriptionIN_BYTES1Input bytesIN_PKTS2Input packetsPROTOCOL4IP protocolL4_SRC_PORT7Source portIPV4_SRC_ADDR8Source IPv4L4_DST_PORT11Destination portIPV4_DST_ADDR12Destination IPv4TCP_FLAGS6TCP flagsFIRST_SWITCHED22Flow start sysUpTimeLAST_SWITCHED21Flow end sysUpTime仓库脚本中的解析实现技能的配套脚本 scripts/agent.py 的parse_netflow_capture()函数L23-L51演示了模板持久化的正确实践循环外初始化templates {}每次netflow.parse_packet(data, templates)后用返回的新模板表更新该变量同时把解析出的每条流转换为统一的 JSON 结构字段包括src_ip、dst_ip、src_port、dst_port、protocol、bytes_in、bytes_out、packets、duration由LAST_SWITCHED - FIRST_SWITCHED计算和tcp_flags。读取时以 65535 字节为块L31并在异常时停止读取这与 NetFlow 单包不超过 65535 字节的协议上限一致。对于已经预处理好的 JSON 流数据脚本提供load_flow_data()L15-L20直接加载这也是 SKILL.md 中推荐的主入口路径。构建流量基线检测之前先建立统计基线。build_traffic_baseline()L142-L156遍历全部流记录聚合出三类统计量total_flows流记录总数total_bytes进出字节总量protocol_distribution按 IP 协议号6TCP、17UDP分组的字节分布top_ports出现次数最多的前 20 个目的端口。该基线会随最终报告一起输出帮助分析师判断什么算异常——例如某协议号平时占比极低却突然激增或某端口流量远超历史水平。四类威胁检测算法与阈值API 参考文档汇总了本技能的四个检测算法及其默认阈值PatternMethodThresholdPort scanUnique dst_ports per src-dst pair20 portsNetwork sweepUnique dst_ips per source50 hostsExfiltrationTotal bytes per src-dst pair100MBC2 beaconingInterval jitter ratio0.15下面结合 agent.py 源码逐一说明。端口扫描与网络扫网对应 T1046detect_port_scanning()L54-L83实现两级检测单目标端口扫描按(src_ip, dst_ip)聚合目的端口集合当同一源对同一目标探测的不同端口数 ≥threshold默认 20时产生severity: high的 Port scan detected 告警并附带前 20 个端口的样本ports_sample网络扫网sweep当同一源访问的不同目标主机数 ≥ 50 时产生severity: critical的 Network sweep detected 告警统计unique_targets与total_ports_probed。扫描/扫网阈值可通过 CLI 参数--scan-threshold调整默认 20。数据外传检测对应 T1048/T1095detect_data_exfiltration()L86-L105按(src_ip, dst_ip)对累加bytes_in bytes_out当总量达到byte_threshold默认 100,000,000 字节约 100MB时生成 High-volume data transfer (potential exfiltration) 告警标记severity: critical结果按字节量降序排列。该阈值可通过--byte-threshold调整。C2 信标检测对应 T1071detect_beaconing()L108-L139检测周期性连接的统计特征逻辑如下按(src_ip, dst_ip, dst_port)三元组分组要求连接数 ≥min_connections默认 10计算相邻连接的间隔序列求均值与方差得到标准差计算抖动比jitter ratio 标准差 / 均值即间隔的变异系数。良性业务流量间隔波动大jitter 高而 C2 Beacon 按固定心跳周期回连间隔高度规律jitter 低当jitter 0.15时判定为 Periodic beaconing (potential C2)标记severity: critical输出连接数、平均间隔和抖动比。从源码结构看该实现以流记录在列表中的顺序索引作为时间代理量来估算间隔因此输入数据应按时间有序排列这是使用该检测时的适用前提。流量体积异常SKILL.md 的 Instructions 第 4 步还列出了 volumetric anomalies超出基线阈值的流量尖峰这一检测维度结合上文build_traffic_baseline()输出的协议分布与端口分布将当前窗口的字节量与基线对比即可识别异常尖峰报告中summary汇总各类告警计数便于优先级排序。运行分析 Agent 与报告结构SKILL.md 给出的完整执行命令python scripts/agent.py --flow-file captured_flows.json --output netflow_report.jsonagent.py 的 main() 定义了全部 CLI 参数参数说明默认值--flow-fileJSON 流数据文件必填—--byte-threshold外传检测字节阈值100,000,000--scan-threshold端口扫描唯一端口数阈值20--output报告输出路径netflow_report.json执行流程为加载流数据 → 构建基线 → 端口扫描检测 → 外传检测 → 信标检测 → 生成报告。generate_report()L159-L176输出的 JSON 报告包含timestamp、total_flows、baseline流量基线、port_scans全部扫描告警、exfiltration_candidates按字节量排序最多取前 20 条、beaconing_patterns以及summary中的scan_alerts/exfil_alerts/beacon_alerts计数同时打印一行摘要NETFLOW REPORT: {N} flows, {M} alerts。与仓库内相关技能的衔接该技能不是孤立存在的从仓库结构看它与多个网络流量类技能相互印证analyzing-network-traffic-for-incidents事件调查中的网络流量分析总流程hunting-for-beaconing-with-frequency-analysis 与 hunting-for-command-and-control-beaconing更侧重频率/统计方法层面的信标狩猎可视为本技能 jitter 检测的补充视角implementing-network-traffic-baselining流量基线构建的专门技能与本技能的build_traffic_baseline()呼应hunting-advanced-persistent-threats、detecting-ransomware-precursors-in-network均涉及在 NetFlow 等流数据上发现 APT 前期活动与勒索软件网络前兆。使用限制与注意事项依赖 Python 3.8 与pip install netflow采集端netflow.collector需要路由器/交换机向 9995 端口导出 NetFlow v9/IPFIX或在实验环境中产生测试流量v9/IPFIX 解析要求模板表在多次parse_packet调用间持久化参见 api-reference.md 的明确注释否则模板引用型流记录无法正确解码所有阈值20 端口 / 50 主机 / 100MB / jitter 0.15均为默认经验值用于产生候选告警而非定性结论实际部署时应按网络规模调整--scan-threshold、--byte-threshold支持参数化本技能的检测对象是聚合流记录无法还原会话级细节若需进一步确认 IOC如 C2 域名、载荷特征应结合 analyzing-network-traffic-with-wireshark、performing-network-packet-capture-analysis 等基于 PCAP 的技能做深度取证。小结该技能把 NetFlow v9/IPFIX 分析压缩为一条可复现的流水线采集collector:9995→ 解析parse_packet 模板持久化→ 基线协议/端口/总量分布→ 四类检测扫描 20 端口、扫网 50 主机、外传 100MB、信标 jitter0.15→ JSON 报告并通过 NIST CSF 与 MITRE ATTCK 映射明确其在网络监控DE.CM-01与 C2/外传/发现类技术T1071/T1048/T1046/T1095上的防御定位。配套脚本 scripts/agent.py 与参考文档 references/api-reference.md 提供了可直接复制到 SOC 工作流中的实现细节。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考