使用msticpy进行时间序列分析与异常可视化

使用msticpy进行时间序列分析与异常可视化

msticpy Microsoft Threat Intelligence Security Tools msticpy 项目地址: 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

实际应用案例

在安全分析中,时间序列分析可用于:

  1. 检测异常登录行为
  2. 识别数据外泄模式
  3. 发现网络流量异常
  4. 监控系统资源异常使用

例如,分析Palo Alto防火墙日志中的数据传输量,可以建立正常流量模式,并检测异常的数据外泄行为。

总结

msticpy提供了一套完整的时间序列分析工具链,从数据获取、分析到可视化,帮助安全分析师高效地发现异常行为模式。通过结合KQL内置函数和STL等统计方法,可以应对各种复杂的安全分析场景。

对于安全团队来说,掌握时间序列分析技术能够显著提升威胁检测能力,特别是在发现未知威胁和异常行为模式方面具有独特优势。

msticpy Microsoft Threat Intelligence Security Tools msticpy 项目地址: https://gitcode.com/gh_mirrors/ms/msticpy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞翰烽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值