查看原文
其他

开源流量分析系统 Apache Spot 概述

绿盟科技研究通讯 绿盟科技研究通讯 2021-03-12


1. Apache Spot 是什么?

Apache Spot 是一个基于网络流量和数据包分析,通过独特的机器学习方法,发现潜在安全威胁和未知网络攻击能力的开源方案。目前 Apache Spot 已支持对 Netflow、sflow、DNS、Proxy 的网络流量分析,主要依靠 HDFS、Hive 提供存储能力,Spark 提供计算能力,基于 LDA 算法提供无监督式机器学习能力,最终依赖 Jupyter 提供图形化交互能力。

该项目由 Intel 和 Cloudera 向 Apache 基金会贡献,目前尚处于孵化阶段,最新发布版本为 Apache Spot 1.0。

2. Apache Spot 能做什么?

Apache Spot 采集的数据包括网络流量、DNS 和 Proxy 数据包,其中网络流量又划分为外部流量(Perimeter Flows)和内部流量(Internal Flows)。利用这些数据可以做到:

 

  • 外部流量

    隐蔽扫描识别 Stealthy Scanning

    旁路攻击检测 Side-Channel Data Escapes

    反射攻击检测 Reflection Attacks

    异常数据流发现 Unusual Data Flows

    信标行为发现 Beaconing

  • 外部流量 + DNS

    DNS隧道检测 DNS Tunneling

    DNS隐蔽信道识别 Convert DNS Channels

    内部DNS探测 Internal DNS Recon

  • 外部流量 + DNS + Proxy

    跨站脚本攻击检测 Cross site scripting(XSS)

    C&C主机发现 Command and Control

    URL混淆检测 URL obfuscation

    异常的POST数据发现 Unusual Data POSTs

  • 外部流量 + DNS + Proxy + 内部流量

    横向移动检测 Lateral Movement

    完整的威胁可见性 Complete Threat Visibility

3. Apache Spot 是怎么做的?

Apache Spot 利用开源且被优化过的解码器接入二进制网络流量数据和数据包,利用机器学习的方法(主要是 LDA 算法)从网络流量中分离出可疑流量,以及特征化独特的网络流量行为。经过上下文增强、噪声过滤、白名单和启发式算法等等一系列手段,最终产生少量且准确的安全威胁事件呈现给用户。


4. Apache Spot 关键特性

  • 识别可疑DNS数据包 (Suspicious DNS Packets)

    利用深度包检测技术(Deep-packet Inspection)对DNS流量进行画像,经过可视化、正则化以及模式匹配处理,向安全分析师呈现出DNS流量数据中最有可能是威胁的部分。

  • 威胁应急响应 (Threat Incident and Response)

    给定一个IP地址,Apache Spot能够将跟该IP相关的所有数据按时间序列整合在一起,便于运维人员对威胁事件进行响应。

  • 可疑网络连接发现 (Suspicious Connects)

    通过机器学习的方法对在网络上进行通信的机器及其通信模式建立相应的模型,数十条原始数据在经过一系列处理后,仅剩余几百条,这些剩余的数据就是最有可能是威胁的部分。


  • 故事板(Storyboard)

    安全分析师对威胁事件完成调查后,可以通过故事板去表现事件的来龙去脉,也就是说在故事板中,我们可以了解到攻击者是什么时候攻入系统的?都拿下了哪些机器?怎么拿下的?


  • 开放数据模型 (Open Data Models)

    为了让威胁检测模型的开发过程更加简单高效,保证个人、企业、社区输出的检测模型的兼容性,Apache Spot 对网络、终端、用户等相关数据进行了标准化定义,规范了这些数据在逻辑层以及物理层的形态。简而言之,开放数据模型保障了不同的开发者在用同一种“语言”在进行威胁检测模型的开发。

  • 协作 (Collaboration)

    Apache Spot 平台运行于Hadoop大数据平台之上,通过其定义的开放数据模型,使得个人、企业、社区开发者的产出可以无缝衔接。正如攻击者可以利用其它攻击者制作的攻击工具一样,防护方也能够使用其它防护者制作的防护工具。


5. Apache Spot 系统介绍

1系统架构

Apache Spot项目使用Hadoop大数据生态的各种组件构建其数据分析平台。从数据采集、预处理到存储,从数据分析、结果呈现到交互操作,还集成了大量的开源软件来构建平台的能力。

2组件视图

  • spot-setup 系统配置、初始化

  • spot-ingest 数据采集

  • spot-ml 机器学习数据分析

  • spot-oa 用户交互界面

3数据流视图

下图详细呈现了Apache Spot整个平台的主要数据流,数据从数据源(左上)起始,先经过数据采集器进行解析处理,而后由流式处理组件完成入库,存储到HDFS中。之后,机器学习组件负责对数据进行分析计算,并将计算结果入库存储。分析结果最终通过用户界面呈现出来(右下)。

4服务视图

上图是Apache Spot推荐的集群部署下,各个节点上部署的服务。其中:

Master 节点作为大数据平台的主节点,主要负责提供数据存储、检索及资源管理服务;

Cloudera Manager节点作为大数据平台的管理节点,也是Apache Spot平台的管理入口;

Worker 节点作为大数据平台的计算节点,主要负责提供数据分析能力;

Edge 节点作为大数据平台的数据采集节点,主要负责从网络环境中采集数据。

6. Apache Spot 组件介绍

1配置组件 Spot-Setup

Spot-Setup 包含一系列脚本,分别用于初始化系统 HDFS 中的文件路径和 Hive 数据表结构,以及初始化系统配置。


2数据采集组件 Spot-Ingest


>>>>

2.1 架构视图

>>>>

2.2 内部模块

  • Spot-Collector

    该模块负责在后台监控文件系统指定路径下,由网络工具产生的新文件,或者先前产生的已有数据文件,通过指定解析工具(如nfdump,tshark)转换为可读格式,并以原始格式存储到 HDFS 用于取证,以 avro-parquet 格式存储到 Hive 中以做 SQL 检索。

    其中:

    文件 > 1MB 的将文件名称和在HDFS中的存储路径交给kafka;

    文件 < 1MB 的将其 Data Event 交给 Kafka,之后由 Spark Streaming处理(当前版本中仅 Proxy 数据由 Spark Streaming 处理)。

  • Kafka

    Kafka 负责存储由 Collector 采集到的数据,以供 Spot Workers 解析处理。每个数据采集实例都会创建一个新的 Topic,当前版本包含三个采集实例,分别是 Flow, DNS, Proxy。每个 Topic 的 Partition 数量取决于 Spot Worker 的数量。

  • Spot Workers

    Sport Worker 运行在后台,从指定的 Topic 的 Partitions, 以及 Hive 表中读取、解析数据,并将结果存储到 Hive 中,以供 Spot-ml 组件读取消费。

    当前版本中存在两种类型的 Spot Worker:

    A:Python 多线程实现,通过预置的解析器处理数据;

    B:Spark-Streaming Workers 实现,通过 Spark-Streaming Context 从 kafka 中读取并处理数据。


3机器学习组件 Spot-ML

Spot-ML 负责从采集到的 netflow、dns、proxy 数据中分析可疑连接,通过对一系列网络事件的分析来生成最不可能和最可疑的事件列表。它利用主体建模(Topic Model)来发现正常和异常的网络行为;将关联到某个 IP 的日志集合视作一个文档,利用 LDA (Latent Dirichlet Allocation ) 算法从中发现隐藏的语义结构。Spot-ML 为每个 IP 地址的网络行为建立概率模型,每一条网络日志都会被该模型进行评分,将其中得分较低的网络事件标记为“可疑”以作进一步分析。

LDA 算法是一个用于离散数据建模分析的生成概率模型,基于三层贝叶斯模型,适用于分析类似语料库的数据。在该模型中,文档中的每个单词均由一组潜在的主题混合而成。利用聚合、离散手段将网络流量中每一条网络日志转换为一个个单词。通过这种方法,可以将文档关联到 IP 地址,单词关联到网络日志(网络日志可关联到某个 IP),主题关联到网络活动画像。


4交互组件 Spot-OA

Spot-OA 基于 IPython、D3JS、jQuery、Bootstrap、ReactJS技术向用户提供数据处理、转换以及数据可视化的能力。当前版本主要通过 Suspicious、Threat Investigation、Story Board 三个视图页面提供针对 Flow、DNS、Proxy 事件的可视化分析能力。此外,通过 Ingest Summary Notebook 视图页面,提供了解指定时间段内数据采集情况的能力。


>>>>

4.1 Suspicious 简介

Suspicious 视图页面用于呈现 Spot-ML 发现的可疑活动,主要由四个面板组成。

Suspicious 面板以数据列表的形式展现 Spot-ML 发现的可疑活动;Network View 面板以可视化的形式表现这些可疑活动;Details 面板用于挖掘某个可疑活动更为细节的信息。Notebook  面板提供一种专家能力,通过人为介入的方式修正或改善机器学习模型。

Netflow Suspicious:

DNS Suspicious:

 Proxy Suspicious:

>>>>

4.2 Threat Investigation 简介

Threat Investigation 视图页面是分析结果展示在 Storyboard 之前的最后一步,安全分析师在这个页面对即将展示的分析结果进行最后一步核查。


>>>>

4.3 Storyboard 简介

Storyboard 视图页面用于呈现系统最终的分析结果,供用户掌握高风险的安全威胁事件以及更进一步的信息。

Netflow Story Board:

DNS Story Board:

Proxy Story Board:

 

>>>>

4.4 Ingest Summary 简介

Ingest Summary 用于了解系统的数据采集情况,可以查看采集的数据类型在指定时间段的数据量分布详情。

7. Apache Spot 环境&部署

1基础环境

  • CDH 5.7+

  • Spark 2.1.0

  • YARN

  • Hive

  • IMPALA

  • KAFKA

  • SPARK(YARN)

  • Zookeeper


2Docker 部署

下载镜像:

> docker pull apachespot/spot-demo

启动镜像:

> docker run -it -p 8889:8889 apachespot/spot-demo

访问地址:

http://localhost:8889/files/ui/flow/suspicious.html#date=2016-07-08


3单机部署

Apache Spot 项目 1.0 版本的成熟度还比较低,部署过程中需要人工安装、编译、配置若干基础组件,才能保证 Spot 组件的正常运行。又因为 Spot 当前的说明文档不够完善,对依赖的组件版本缺乏明确的说明,导致在部署过程中会浪费一些时间。

部署安装的大致流程为:

1. Hadoop 大数据环境部署

2. Spot-setup 初始化配置

3. Spot-Ingest 组件配置数据采集

4. Spot-Ml 组件编译、部署

5. Spot-OA 组件构建、部署


4集群部署

Apache Spot 各组件推荐部署位置,结合 5.4 服务视图查看:

Component

Node

spot-setup

Edge Server (Gateway)

spot-ingest

Edge Server (Gateway)

spot-ml

YARN Node Manager

spot-oa

Node with Cloudera Manager


8. Apache Spot 数据采集


1Proxy 数据采集

将 Spot-Ingest 组件部署到 Proxy 服务器上,通过编辑数据采集组件配置文件($SPOT_INGEST_HOME/ingest_conf.json)指定待采集 Proxy 服务器的日志路径来完成 Proxy 数据的采集。

2Flow 数据采集

Spot-Ingest 依赖 spot-nfdump 解析流量数据包,可通过 nfdump 工具包中的 nfcapd 将接受 netflow 数据并保存到指定的文件。

nfcapd 接收流量的方式示例:

> nfcapd -b 0.0.0.0 -p 515 -4 -t 60 -w -D -l /data/spot/flow

注:绿盟 IPS 可产生 netflow 流量数据,在【系统】-> 【系统配置】—> 【NETFLOW配置】页面配置接收流量的地址即可。

3DNS 数据采集

Spot-Ingest 依赖 tshark 解析 DNS 数据包。

使用 tshark 抓取 DNS 数据包保存为 pcap 文件示例:

> tshark -i em1 -b filesize:2 -w dns-dump.pcap udp port 53

使用 tcpdump 抓取 DNS 数据包保存为 pcap 文件示例:

> tcpdump -i eth1 -nt udp dst port 53 -s 0 -G 5 -w "dns-dump_%Y%m%d%H%M%S".pcap -Z root


参考链接:

[1] Apache Spot Homepage (https://spot. apache.org/)

[2] Apache Spot Docker Homepage(https://hub. docker. com/r/apachespot/spot-demo/)

[3] Apache Spot Open Data Model 1(https://spot. incubator.apache.org/project-components/open-data-models/)

[4] Apache Spot Open Data model 2(https://github. com/apache/incubator-spot/blob/SPOT-181_ODM/docs/open-data-model.md)

[5] Splunk Common Information Model(http ://docs.splunk.com/ Documentation /CIM/ latest/ User/Overview)


内容编辑:绿盟科技  潘钧康    责任编辑:肖晴

期回顾

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。

关于我们


绿盟科技研究通讯由绿盟科技创新中心负责运营,绿盟科技创新中心是绿盟科技的前沿技术研究部门。包括云安全实验室、安全大数据分析实验室和物联网安全实验室。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。

绿盟科技创新中心作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。

我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。

长按上方二维码,即可关注我们

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存