大家好,
今天我们将学习如何将傅里叶频率分析应用于网络安全领域。这个工具能够帮助我们在数据集中发现模式,相比时域分析要简单得多。
和上次一样,不用担心,我会在最后的"参考资料与更多信息"部分留下我的 GitHub 链接,方便大家复制代码。
免责声明!! 请记住,您要解决的问题可能与我展示的略有不同,也许时域工具更适合您的情况。在复制 GitHub 代码之前,请先进行自己的分析以获得最佳结果。
执行摘要
使用傅里叶变换进行检测工程与威胁狩猎。对带有和不带有抖动的 C2 信标进行技术分析。
什么是频率分析?为什么它很重要?
"在网络安全中,频率分析用于检测异常、发现隐藏模式以及分析加密或混淆的数据。它通过研究字符、数据包或访问模式的频率来帮助识别异常网络流量、检测恶意软件通信以及破解弱加密。
例如,在入侵检测系统 (IDS) 中,分析数据包频率可以揭示拒绝服务 (DDoS) 攻击,而监控登录尝试可以帮助检测暴力破解攻击。
此外,频率分析还用于密码分析,通过分析字母或字节分布来破解简单密码。通过利用统计模式,网络安全专业人员可以增强威胁检测并降低安全风险。"
它允许我们计算数据的"分箱"并按频率进行聚合。换句话说,就是某件事情发生的频率是多少?C2 信标是每小时、每 24 小时还是每分钟回连一次?只要它是周期信号,具体频率并不重要。
这就是频率分析的核心——检测周期性模式。
这是否意味着我们检测到的所有内容都是恶意的?不是的。请记住,这只是一个检测周期性模式的工具。如何解释数据完全取决于您和您的使用场景,这正是需要领域专业知识的地方。
频率分析
傅里叶变换
我们很幸运,因为法国数学家和物理学家约瑟夫·傅里叶 (Joseph Fourier) 创建了傅里叶变换,它可以将复杂信号分解为更简单的正弦分量。
但是等等...这与网络安全有什么关系?目前还没有关系!但让我快速介绍一下它的工作原理。
与傅里叶相关的关键概念:
傅里叶级数 - 将周期函数表示为正弦和余弦的和 傅里叶变换 (FT) - 将时域信号转换为其频域表示 快速傅里叶变换 (FFT) - 计算傅里叶变换的高效算法 应用 - 用于信号处理、图像分析、音频压缩 (MP3)、医学成像 (MRI) 和物理学
我们对快速傅里叶变换感兴趣,因为前两者只是第三个的理论基础,而最后一个主要应用于不同领域。
使用傅里叶变换检测 C2 信标
为什么是 C2 信标?
因为它们是周期性的。我不关心攻击者是每毫秒 ping 一次(这很容易检测,因为它会产生大量噪音)还是每周 ping 一次以保持隐蔽。记住,我们关心的是周期性——只要它发生两次或更多次,就是我们可以检测到的频率。
你绝对可以使用这个工具来检测 DDoS 攻击、隐蔽的密码喷洒攻击等等。
我们需要什么来检测这个?
NumPy - 包含 fft
模块来执行快速傅里叶变换 (FFT)Matplotlib - 用于创建可视化 Pandas - 用于数学运算和处理数据框
我将这个过程分解为 3 个简单步骤
第一步
收集要分析的 C2 信标数据。这可能包括 NetFlow 日志、代理日志、防火墙日志、WAF 日志、IDS 原始数据等。
我在这里提供了一个带有"假数据"的示例,并绘制了图表。
蓝色图表:您的网络流量数据 红色图表:隐藏在您网络中的 C2 信标。您不需要绘制这个,因为我们要找到它,但为了教学目的,我在这里展示了它 绿色图表:蓝色和红色信号组合(为了学习目的,放大了信标的振幅) 底部图表:绿色信号的 FFT,显示红色和绿色分量如何使信标易于检测(大尖峰)
这个示例的主要目的是说明信标活动,因此放大了振幅以便于理解。
但是,如果您想用自己的数据来做这个呢?让我们继续步骤 2 和 3
第二步
当您获得日志时,将它们添加到 Pandas DataFrame 中,并提取您认为必要的任何属性,如时间戳、振幅、连接目标、数据包数量等。
这将帮助您构建自己的绿色图表,这对于识别模式至关重要。
第三步
您的信号需要被采样。
采样是将连续信号(如模拟音频波形)通过定期测量其振幅转换为离散信号的过程。这些离散点称为样本,采集它们的速率称为采样率(以赫兹,Hz 为单位)。
为什么采样在傅里叶分析中很重要?
傅里叶分析将信号分解为其频率分量。在处理数字信号时,采样确保我们能够准确地分析和重建频域中的信号。
奈奎斯特 - 香农采样定理 - 该定理指出,为了避免信息丢失(混叠),采样率必须至少是信号中最高频率的两倍。
如果我们采样太慢(欠采样),高频分量将折叠到较低频率中,导致混叠(失真) 如果我们以或高于奈奎斯特率采样,我们可以完美地重建原始信号
这意味着,您的采样将取决于您要查找的频率
您需要根据要查找的内容进行一些数学计算。让我通过一个示例来指导您,以便您可以将其适应到您的使用场景中。
C2 信标 - 1 小时周期性
信标频率
信标每小时发生一次 = 每 3600 秒 1 个周期
信标信号的频率:
fbeacon=36001 Hz≈0.00028 Hz
奈奎斯特采样率 (Nyquist Sampling Rate)
fs≥2×0.00028≈0.00056 Hz
要正确检测这个信标,采样率必须至少为:
fs≥2×0.00028≈0.00056 Hz
转换为更直观的单位
0.000561≈1800 秒/样本=30 分钟/样本 - 因此,您需要至少每 30 分钟采集一个样本才能可靠地检测到信标。
0.00056 Hz 的采样频率意味着:
10.00056≈1800 秒/样本=30
选择实际采样率
奈奎斯特率 (Nyquist Rate)(最小值):每 30 分钟 1 个样本
更好的采样(提高准确性):每 10-15 分钟 1 个样本
高分辨率检测:每 5 分钟或更短时间 1 个样本
如果 C2 存在"抖动"怎么办?
如果您还在阅读,恭喜!这意味着您对发现信标非常感兴趣,所以您可能已经意识到,到目前为止...一切都相当理论化。
在现实世界中,真正的威胁行为者不会精确地每小时 ping 一次;他们会使用"抖动"。抖动是指信标信号在时间和幅度上的"随机性",这意味着:"也许我现在每 23 小时 ping 一次,或者每 25 小时 ping 一次,或者以非常强的信号 ping,或者以微弱的信号 ping",在随机的时间间隔内,使其更加隐蔽。
我创建了另一个示例来说明这个问题:抖动示例
蓝色图表:您的网络流量数据 红色图表:隐藏在您网络中的 C2 信标。这次,我在时间和幅度上都添加了一些抖动。这个信标每 20-29 小时 ping 一次 绿色图表:蓝色 + 红色信号组合。为了学习目的,放大了信标的幅度 底部图表:绿色信号的 FFT。我们可以看到红色和绿色信号如何轻松检测到我们的信标(大尖峰)
现在,我们可以看到完全相同的情况,但这次我们的红色信号(信标)在幅度和周期性方面都有抖动。它将在 20 到 29 小时之间 ping 回,并且幅度也有一个修饰符使其更加随机。
通过分析,我们可以看到仍然有一个尖峰,但检测起来要困难得多。它被标记为信标应该出现的预期频率。
请注意,这个示例中的信标幅度仍然比我们的原始信号大得多,即便如此,也很难找到。那么,我们能做什么呢?
滑动窗口 (Sliding Window)
为什么要使用窗口?:抖动信号可能具有非平稳成分,这意味着周期性模式可能会随时间漂移或变化。
这里提供了一个实现示例:滑动窗口代码。
您可以将时间序列划分为重叠窗口(例如,每个窗口 10-20 个间隔),以更好地捕捉抖动信号的"本质"。
等等,为什么应用滑动窗口技术不一定更好?
在这个示例中,我创建了一个 1 周的窗口,每天重叠并持续移动。它有效地在每个窗口内执行微小的 FFT,然后在最后聚合它们。
那么为什么这种技术不一定更好呢?因为这取决于您要查找的内容!
我修改了脚本,通过暴力尝试不同的窗口大小来猜测哪个对我们来说是最优的。您可以在这里找到代码:傅里叶最优窗口代码
这个测试表明,对于我的情况,70 小时的窗口大小是检测信标的最优选择,回想起来,这听起来很合理。请记住,我的信标以正态分布的方式每 20-29 小时 ping 一次。
如果我手动计算,确保在我们的窗口大小内始终获得至少 2 个,最好是 3 个样本所需的最短时间是 3 天,大约 70 小时。
与不使用窗口技术相比,这**提高了大约 15-20%**的幅度,在我们的示例中帮助更有效地检测信标。
总结
本文快速概述了如何使用傅里叶变换检测 C2 信标,相比在时域中实现相同目标,这种方法确实大大简化了工作流程。
虽然我没有深入进行数学证明或详细演示来帮助您完全理解这些概念,但如果您感兴趣,我在下面列出了一些相关资源。
所有这些结果都来自我的实证测试,它们表明对抗抖动并非不可能,只是需要更复杂的方法。
这些概念大多来自信号处理领域而非网络安全本身,但我希望通过这个示例向您展示了它们的价值。当然,要着眼大局——C2 信标只是开始。在许多有趣的场景中,这种工具都能大放异彩。
最后,如果您有基于代码的检测管道,可以在 Jupyter Lab 中创建规则;如果只是定期导出数据,也可以用于威胁狩猎。归根结底,我们是在寻找那些大的尖峰,因此需要调整阈值并分析 FFT 图中前 3 或前 5 个最大的尖峰,以判断其是否具有恶意性。
如果您对此感兴趣并想深入学习,可以考虑参加 SEC595:网络安全专业人员的应用数据科学与 AI/机器学习课程!
参考资料与更多有用信息
我的 GitHub,包含本文中解释的完整代码 - 此处 第一个傅里叶示例,包含假数据和 rfft Python 代码 - 此处 包含时间和幅度抖动的傅里叶 Python 代码 - 此处 应用滑动窗口技术的傅里叶 Python 代码 - 此处 傅里叶最优窗口计算 Python 代码 - 此处 Pandas 教程 - 此处 Pandas 视频教程 - 此处 傅里叶附加资源 - 可视化解释 - 此处
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...