一. 终端溯源背景介绍
攻击溯源图是描述攻击者攻击行为相关的上下文信息,利用攻击溯源信息来挖掘攻击相关的线索是当前研究的热点。研究人员发现依靠系统监控日志数据构造具有较强抽象表达能力的溯源图进行因果关系分析,能有效表达威胁事件的起因、攻击路径和攻击影响,为威胁发现和取证分析提供较高的检测效率和稳健性。
关于终端溯源的工作学术上已有不少研究工作[1],这里基于SPADE[2]工具以及相关的终端采集工具(windows系统的ProcMon[3],linux系统下的audit[4],camflow[5])搭建一个简单的终端溯源图系统,来实现攻击溯源。
二. SPADE工具简介
SPADE是一个开源的系统,可以实现溯源数据的推理、存储与查询功能。该系统是一种跨平台的溯源系统,可以应用到区块链、在线社交网络与APT溯源调查中。SPADE可以看成一个分布式的溯源调查工具,以溯源图的形式组织系统日志,溯源攻击过程。该工具支持多种操作系统。SPADE系统支持多种应用,本文只专注其在溯源调查上的应用。该团队基于该系统有多篇顶会顶刊的研究成果,同时该工具声称支持了darpa TC项目,即darpa TC数据集有他们的贡献。
SPADE的特性包括:
SPADE提供了一种跨平台的数据收集、过滤、存储和查询服务,支持Linux, Mac OS X, and Windows操作系统,使用操作系统各自的审计功能透明地记录所有数据的溯源信息。
SPADE收集系统审计日志并自动生成溯源图,且不需要对操作系统和应用程序做任何修改。SAPDE主要针对采集器的日志整理得到进行的操作、文件操作等信息。
SPADE支持使用变量、约束、lineage、路径和集合操作符查询本地的provenance记录,同时支持图和关系 (SQL) 查询,并可以使用第三方工具 (如Neoclipse 和SQL Workbench)进行管理。
SPADE的功能架构如图1所示。下面介绍一下SPADE的核心模块。
图1 SPADE系统架构
SPADE支持多种类型的数据,针对windows其支持ProcMon工具采集的日志,linux系统下支持audit、camflow工具采集的日志,同时支持文本数据输入,但输入的格式需要满足其定义的模式要求。
reporter模块是SPADE的核心模块,它接收来自不同源的数据。从数据中提取有效的实体关推断实体之间的关系,构建有效的溯源图。同时也支持按用户自定义的模式构建溯源图。
Filter模块主要用于对reporter构建的溯源图进行剪枝,通过分析可以看到终端日志非常庞大,存在明显的依赖爆炸问题。但是具体的Filter的原理在其发表的论文中并没有特别详细的介绍。
SPADE内置了neo4j图数据,也支持关系型数据的存储,同时也支持前面提到的文本格式的存储。
支持针对溯源图的查询,查询语文是其自定义的。
三. 终端溯源系统搭建
3.1
SPADE安装
Linux系统下的SPADE支持audit工具与camflow工具,其中关于audit日志的方法博客[6]有相关的介绍。本文介绍一下windows10下SPADE系统的安装部署。
由于windows主要是基于ProcMon采集的数据进行处理的,因此需要安装process monitor。SPADE在windows上有两种安装方式基于WSL与cygwin。WSL安装参考[1]。具体情况具体分析,有可能碰到安装问题,windows操作系统上安装WSL的教程比较多这里就不详细介绍。
cywin是一个在windows平台上运行的类UNIX模拟环境。它的安装比较简单直接下载相应的安装包即可,参考博客[7]。在安装的时候需要预安装一些包:
打开cygwin,下载SPADE源代码:
这里需要把java加入到PATH变量中,需要安装JDK,JDK的版本必须是11,12 ,13。最新的JDK版本不支持。
export PATH=$PATH:/cygdrive/c/Program\ Files/Java/jdkXXX/bin
接下来编译安装SPADE:
cd SPADE
./configure
make
有的时候会失败,失败的话查看相关日志。
启动SPADE服务(需要在SPADE/bin目录下):
./spade start
启动成功并不代表安装成功。
开启controler来配置SPADE:
./spade control
结果如图2所示,则表示SPADE安装成功:
图2 SPADE 控制器启动成功
经常会碰到SPADE is not running的问题,具体可以查看相关日志,这里碰到的问题基本是java运行内存不足,如图3所示。
图3 SPADE 运行问题日志
3.2
SPADE与ProcMon联调
SPADE reporter支持ProcMon,该模块是对接微软的ProcMon工具的。Process Monitor一款微软的系统监视软件,下载即可用。打开ProcMon自动会采集相关数据,数据量非常大十多分钟就9个G的文档。当然该工具功能比较强大可以加一些过滤。
SPADE与ProcMon联动过程:
Add reporter ProcMon input=xxx(ProcMon日志的路径)
对ProcMon的支持并不是很友好,但是SPADE还支持DSL管道数据,Graphviz与JSON格式配置。
3.3
效果展示
SPADE支持多种输出形式,支持neo4j图数据,关系数据、文本,文本类型有Graphviz、Prov以及JSON。
SPADE的安装包里已内置了neo4j图数据。
首先需要配置SPADE的存储方式:
spade start
spade control
-> add storage Neo4j database=spade.graph
进入SPADE目录:
n
sudo vim lib/neo4j-community-4.1.1/conf/neo4j.conf
dbms.directories.data = spade.graph
dbms.connector.http.listen_address=0.0.0.0:7474
dbms.connector.bolt.listen_address=0.0.0.0:7687
为了方便启动neo4j,我们同样为neo4j设置环境变量:
sudo vim /etc/profile
Export PATH=$PATH:/home/alston/SPADE/lib/neo4j-community-4.1.1/bin
source /etc/profile
启动neo4j:
spade stop
alston@ubuntu-vm:~/SPADE/lib/neo4j-community-4.1.1$ neo4j start
这里只能先关闭SPADE才能启动neu4j,其他输出类似必须得先关闭SPADE才能有输出结果。最终的效果如下图所示。
图4 neo4j的终端示例
终端溯源调查系统基本搭建完成,用户可以利用neo4j的查询Cypher进行调查,也可以通过接口取图数据进行分析。
四. 结论
SPADE工具是一相对已经成熟。其优势是可以继承多种终端采集工具,如ProcMon,camflow,以及audit等。其部署灵活,有强大的数据压缩机制能把海量的终端数据压缩到能接受的量级,但是中间的数据损失无法评估。同时图的模式是固定,使用者无法进行修改,这降低了该工具的扩展性。此外,该工具无法实现终端实时监控分析功能。
参考文献
1 https://mp.weixin.qq.com/s/cPrgQaTtrZNhe3Iaz6ZN5g
2 https://github.com/ashish-gehani/SPADE
3 https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
4 https://zhuanlan.zhihu.com/p/337289840
5 https://camflow.org/
6https://zhuanlan.zhihu.com/p/524145892
7 https://blog.csdn.net/xiaojin21cen/article/details/125146944
内容编辑:创新研究院 薛见新
责任编辑:创新研究院 陈佛忠
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。