攻击溯源图是描述攻击者攻击行为相关的上下文信息,利用攻击溯源信息来挖掘攻击相关的线索是当前研究的热点。研究人员发现依靠系统监控日志数据构造具有较强抽象表达能力的溯源图进行因果关系分析,能有效表达威胁事件的起因、攻击路径和攻击影响,为威胁发现和取证分析提供较高的检测效率和稳健性。
关于终端溯源的工作学术上已有不少研究工作[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模块
reporter模块是SPADE的核心模块,它接收来自不同源的数据。从数据中提取有效的实体关推断实体之间的关系,构建有效的溯源图。同时也支持按用户自定义的模式构建溯源图。
filter模块
Filter模块主要用于对reporter构建的溯源图进行剪枝,通过分析可以看到终端日志非常庞大,存在明显的依赖爆炸问题。但是具体的Filter的原理在其发表的论文中并没有特别详细的介绍。
存储模块
SPADE内置了neo4j图数据,也支持关系型数据的存储,同时也支持前面提到的文本格式的存储。
查询模块
支持针对溯源图的查询,查询语文是其自定义的。
三. 终端溯源系统搭建
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 运行问题日志
SPADE reporter支持ProcMon,该模块是对接微软的ProcMon工具的。Process Monitor一款微软的系统监视软件,下载即可用。打开ProcMon自动会采集相关数据,数据量非常大十多分钟就9个G的文档。当然该工具功能比较强大可以加一些过滤。
SPADE与ProcMon联动过程:
启动ProcMon采集相关数据(这里可以执行相关模拟攻击的操作)
关闭ProcMon
保存ProcMon的日志,这里只能手动保存,同时SPADE只支持XML格式。
在SPADE 控制器中配置ProMon reporter的路径:
Add reporter ProcMon input=xxx(ProcMon日志的路径)
对ProcMon的支持并不是很友好,但是SPADE还支持DSL管道数据,Graphviz与JSON格式配置。
SPADE支持多种输出形式,支持neo4j图数据,关系数据、文本,文本类型有Graphviz、Prov以及JSON。
SPADE的安装包里已内置了neo4j图数据。
首先需要配置SPADE的存储方式:
spade startspade control-> add storage Neo4j database=spade.graph
进入SPADE目录:
n
sudo vim lib/neo4j-community-4.1.1/conf/neo4j.confdbms.directories.data = spade.graphdbms.connector.http.listen_address=0.0.0.0:7474dbms.connector.bolt.listen_address=0.0.0.0:7687
为了方便启动neo4j,我们同样为neo4j设置环境变量:
sudo vim /etc/profileExport PATH=$PATH:/home/alston/SPADE/lib/neo4j-community-4.1.1/binsource /etc/profile启动neo4j:spade stopalston@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
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。
关于我们
绿盟科技研究通讯由绿盟科技创新研究院负责运营,绿盟科技创新研究院是绿盟科技的前沿技术研究部门,包括星云实验室、天枢实验室和孵化中心。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。
绿盟科技创新研究院作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。
我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。
长按上方二维码,即可关注我
还没有评论,来说两句吧...