使用msticpy进行时间序列分析与异常可视化
msticpy Microsoft Threat Intelligence Security Tools 项目地址: https://gitcode.com/gh_mirrors/ms/msticpy
概述
时间序列分析是安全分析中的重要技术手段,能够帮助安全团队发现异常行为模式。msticpy项目提供了一套完整的时间序列分析工具链,本文将详细介绍如何使用msticpy进行时间序列数据的获取、分析和可视化。
环境准备
在开始之前,需要确保已安装msticpy及其相关依赖:
%pip install --upgrade msticpy[timeseries]
如需使用Azure Sentinel相关功能,还需安装额外依赖:
%pip install --upgrade msticpy[timeseries, azsentinel]
时间序列数据获取
使用LogAnalytics查询提供程序
msticpy通过QueryProvider连接LogAnalytics数据环境:
from msticpy.data.data_providers import QueryProvider
# 读取工作区配置
ws_config = WorkspaceConfig()
# 认证连接
qry_prov = QueryProvider(data_environment="LogAnalytics")
qry_prov.connect(connection_str=ws_config.code_connect_str)
查询时间序列数据
msticpy提供了专门的时间序列查询方法,可以列出所有相关查询:
queries = qry_prov.list_queries()
for query in queries:
if "timeseries" in query:
print(query)
常用查询包括获取时间序列数据、分解时间序列等。
执行时间序列查询
通过get_timeseries_data
方法获取原始时间序列数据:
time_series_data = qry_prov.MultiDataSource.get_timeseries_data(
start="2020-02-09 00:00:00.000000",
end="2020-03-10 00:00:00.000000",
table="CommonSecurityLog",
timestampcolumn="TimeGenerated",
aggregatecolumn="SentBytes",
groupbycolumn="DeviceVendor",
aggregatefunction="sum(SentBytes)",
where_clause='|where DeviceVendor=="Palo Alto Networks"'
)
时间序列分析与异常检测
使用KQL内置函数分解时间序列
KQL提供了series_decompose
函数,可以自动分解时间序列:
time_series_baseline = qry_prov.MultiDataSource.get_timeseries_decompose(
start=start,
end=end,
table="CommonSecurityLog",
timestampcolumn="TimeGenerated",
aggregatecolumn="SentBytes",
groupbycolumn="DeviceVendor",
aggregatefunction="sum(SentBytes)",
where_clause='|where DeviceVendor=="Palo Alto Networks"'
)
使用STL方法进行分解
msticpy提供了timeseries_anomalies_stl
函数,基于STL(Seasonal-Trend decomposition using LOESS)方法:
from msticpy.analysis.timeseries import timeseries_anomalies_stl
# 假设df是包含时间戳和数值的两列DataFrame
result = timeseries_anomalies_stl(
data=df,
seasonal=7, # 季节性周期
period=24 # 数据周期(如小时数据为24)
)
STL方法参数说明:
seasonal
: 季节性平滑器长度,必须为奇数trend
: 趋势平滑器长度,通常为seasonal的150%low_pass
: 低通估计窗口长度
异常可视化
msticpy提供了强大的可视化功能:
from msticpy.vis.timeseries import display_timeseries_anomalies
display_timeseries_anomalies(
data=result, # STL分析结果
y="value", # 值列名
time_column="time", # 时间列名
anomalies=result[result["is_anomaly"]], # 异常点
title="时间序列异常检测"
)
可视化功能支持:
- 交互式图表(缩放、平移等)
- 多组件显示(原始数据、趋势、季节性等)
- 异常点高亮显示
- 图表导出为PNG
实际应用案例
在安全分析中,时间序列分析可用于:
- 检测异常登录行为
- 识别数据外泄模式
- 发现网络流量异常
- 监控系统资源异常使用
例如,分析Palo Alto防火墙日志中的数据传输量,可以建立正常流量模式,并检测异常的数据外泄行为。
总结
msticpy提供了一套完整的时间序列分析工具链,从数据获取、分析到可视化,帮助安全分析师高效地发现异常行为模式。通过结合KQL内置函数和STL等统计方法,可以应对各种复杂的安全分析场景。
对于安全团队来说,掌握时间序列分析技术能够显著提升威胁检测能力,特别是在发现未知威胁和异常行为模式方面具有独特优势。
msticpy Microsoft Threat Intelligence Security Tools 项目地址: https://gitcode.com/gh_mirrors/ms/msticpy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考