回顾项目-用PySpark和KMeans挖掘海量Web日志中的攻击模式

现在想起这个项目, 当时的我真是个天才, 对机器学习和深度学习分类出来的恶意模型, 进行自动分类, 再也不用一条一条分析日志了


详细步骤

  1. 数据源:
    • 原始流量日志。
  2. 初级检测 (深度学习):
    • 原始数据首先经过一个深度学习模型进行快速筛选。
    • 输出包括:所有流量的预测结果、仅恶意流量、以及初步报告。
  3. 综合检测 (混合模型):
    • 原始数据被一个更复杂的模型处理,该模型融合了机器学习 + 传统规则 + 深度学习的预测结果。
    • 这是系统的主力检测环节,产出更精确的综合性结果。
  4. 无监督聚类与模式发现:
    • 综合检测后的恶意流量,会进入一个聚类分析流程(这与您之前提供的PySpark代码高度吻合)。
    • 目的是将相似的攻击自动归类,发现未知的攻击模式。
  5. 行为分析 (扫描与爬虫检测):
    • 这是一个并行的分析流水线,它不只看单条请求,而是分析连续流量特征
    • 专门用于识别大规模扫描、爬虫、以及特定时间段内的恶意活动。
  6. 人工校验与模型优化:
    • 聚类结果会由安全分析师进行人工校验
    • 校验结果(manual_report)和修正集(rec)会反哺给模型,形成一个闭环,让模型越来越准。
  7. 最终报告:
    • 系统最终产出两类核心报告:给技术分析师的聚类报告和给管理层的态势感知报告

项目结构与流程总结

一、 项目概述

本项目旨在构建一个智能化的恶意流量检测与分析系统。该系统不仅能识别已知的攻击模式,更核心的是具备增量学习和自我演进的能力,能够应对不断变种的恶意流量。项目通过结合机器学习(聚类分析)和数据挖掘(关联规则)技术,实现从海量流量中自动化地发现新攻击模式、提取检测规则,并最终反哺检测引擎,形成一个闭环优化的生态系统。

同时,项目还深入到连续流量行为分析层面,通过定义攻击生命周期的不同阶段,从宏观和动态的视角对扫描、注入、Webshell、僵尸网络等复杂攻击行为进行态势感知和深度识别。

二、 核心流程与方法论

项目的核心流程可概括为一个**“发现-分析-提取-增强”**的闭环。

  1. 模式发现 (聚类分析)

    • 挑战: 恶意流量的Payload(攻击载荷)会不断产生变体,但其核心模式通常在一定范围内。
    • 方法: 首先,利用 word2vec 模型将文本化的流量数据转换为高维向量。然后,采用 Kmeans 等聚类算法对这些向量进行无监督聚类。
    • 产出: 将海量的、看似杂乱的恶意流量划分为若干个高度内聚的类别。每个类别代表一种或一类相似的攻击模式集合。
  2. 规则提取 (关联性分析)

    • 目标: 从每个聚类簇中,自动化地提取出能够精确描述该类攻击的“最小特征集”或“频繁项规则”。
    • 方法: 在每个聚类簇内部,应用频繁项挖掘算法(如Apriori或FP-Growth),找出Payload中频繁出现的组合模式。
    • 产出: 一系列高置信度的攻击规则,可直接用于检测。
  3. 引擎增强与模型迭代

    • 流程: 将新提取的频繁项规则加入到现有的检测引擎中,提高检测系统的覆盖面和准确率。
    • 闭环: 同时,将每个簇中的典型攻击样本回传给上游的分析模型,作为新的训练数据,从而增强模型对新变种的识别能力,完成一次增量更新

三、 当前进展与数据洞察

1. 流量态势分析:
对约 6xxx万 条总流量的初步分析显示:

  • 恶意流量总量为 3xx万,整体占比为 5.34%
  • 不同节点(如S1, S4, S7)的恶意流量占比存在显著差异(从2.99%到7.65%不等),表明攻击流量在网络中分布不均,可能存在重点攻击目标或来源。

2. 恶意流量构成分析 (以S1, S7节点为例):

  • SQL注入是绝对主流的攻击类型,在S1和S7节点的恶意流量中占比分别高达 57.7%52.7%
  • Struct2漏洞XSS攻击 同样占据重要比例,是需要重点关注的攻击向量。
  • 该数据明确了当前分析和防御的优先级。

3. 聚类效果验证:
已成功将流量样本聚类成50个类别,初步观察显示,各类内部的流量样本在攻击手法上表现出高度相似性,证明了**“word2vec + Kmeans”**技术路径在自动化发现攻击模式上的有效性。

四、 连续流量行为分析 (重点分析方向)

为实现更深层次的威胁识别,项目将分析视角从“单条流量”扩展到“连续行为”,并定义了两类特征集:

  • 单条特征集 (静态特征): Payload的静态特点,用于识别攻击类型(如SQL注入、Webshell)。
  • 统计特征集 (动态特征): 基于时间序列、流量大小、响应码分布等统计数据,用于识别攻击所处的阶段(如扫描、利用、潜伏、通信)。

各攻击类型的分析计划如下:

攻击类型 攻击阶段划分 当前分析基础 下一步工作计划
SQL注入 1. 攻击尝试2. 攻击成功 - 以 sqlmap 攻击流程为蓝本。- 识别到攻击成功时Response长度会发生显著变化。 - 深入分析 sqlmap: 研究其在盲注、注入点判断、数据库指纹识别等成功判定上的具体实现方式和流量特征。
Webshell 1. 上传尝试2. 上传成功3. 客户端连接4. Webshell通信 - 已有初步特征分析。 - 搭建靶机复现: 利用“中国菜刀”等多种工具实施攻击,捕捉并分析完整的攻击流量。- 细化研究: 重点分析“上传漏洞发掘”及不同工具(菜刀、御剑等)在“Webshell通信”阶段的流量差异。
HTTP僵尸网络 1. 病毒植入2. 病毒激活3. 连接C&C服务器4. C&C通信5. 发起攻击 - 已有理论框架和参考资料。 - 搭建靶机复现: 在实验室环境中模拟完整的Botnet生命周期,理解各阶段产生的流量特征。- 分析已有流量: 结合复现经验,对现有流量数据池进行特征挖掘。
CMS漏洞利用 - (根据具体漏洞) - 已有理论框架。 - 构建漏洞知识库: 收集公开的CMS漏洞信息,整理其攻击载荷(Exploit)和产生的流量特征,形成一个可用于检测的特征库。
扫描/爬虫 - (行为单一) - 已有理论框架。 - 细化统计特征: 通过分析连接频率、请求间隔方差、User-Agent一致性、响应码分布(如大量404)等来精确识别。

五、 总结

本项目核心优势在于将机器学习的自动化模式发现能力与专家知识驱动的行为分析相结合,构建了一个能够自我演进的智能检测体系。当前项目已在数据分析和技术验证上取得初步成果,后续工作的关键在于深入复现和分析各类攻击的完整生命周期,将行为阶段识别的“动态特征”与Payload分析的“静态特征”有效融合,从而实现对高级、持续性网络攻击的精准感知与防御。