关于 detecting-beaconing-patterns-with-zeek
面向 SOC 分析师和威胁猎手的 Zeek 连接日志分析技能,通过统计源与目标 IP 对之间的连接时间间隔,标记可能的信标通信。
主要功能
- 01使用 ZAT 解析 Zeek conn.log
- 02按 IP 对分组连接
- 03计算连接时间间隔
- 04标记低波动时间模式
适用场景
- 01调查疑似信标通信
- 02编写检测规则或猎杀查询
- 03检查监控覆盖情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-beaconing-patterns-with-zeek安装后在 Claude Code 中输入/detecting-beaconing-patterns-with-zeek确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
使用 Zeek 检测信标模式
何时使用
- 在调查需要检测 Zeek 信标模式的安全事件时
- 在为该领域构建检测规则或威胁狩猎查询时
- 当 SOC 分析师需要针对此类分析的结构化流程时
- 在验证相关攻击技术的安全监控覆盖范围时
前提条件
- 熟悉安全运营概念和工具
- 可访问测试或实验环境以安全执行
- 已安装 Python 3.8+ 及所需依赖
- 对任何测试活动拥有适当授权
操作说明
使用 ZAT(Zeek Analysis Tools)加载 Zeek conn.log 数据,按源/目的对连接进行分组,并计算时间统计信息以识别信标。
from zat.log_to_dataframe import LogToDataFrame
import numpy as np
log_to_df = LogToDataFrame()
conn_df = log_to_df.create_dataframe('/path/to/conn.log')
# Group by src/dst pair and calculate inter-arrival time
for (src, dst), group in conn_df.groupby(['id.orig_h', 'id.resp_h']):
times = group['ts'].sort_values()
intervals = times.diff().dt.total_seconds().dropna()
if len(intervals) > 10:
std_dev = np.std(intervals)
mean_interval = np.mean(intervals)
# Low std_dev relative to mean = likely beaconing
关键分析步骤:
- 使用 ZAT LogToDataFrame 将 Zeek conn.log 解析为 DataFrame
- 按源 IP 和目的 IP 对连接进行分组
- 计算连续连接之间的到达时间间隔
- 计算标准差和变异系数
- 将变异系数较低的对标记为潜在信标
示例
from zat.log_to_dataframe import LogToDataFrame
log_to_df = LogToDataFrame()
df = log_to_df.create_dataframe('conn.log')
print(df[['id.orig_h', 'id.resp_h', 'ts', 'duration']].head())
评论
支持 Markdown