目录
- 1. 相关资料
- 2. 数据集概况
- 3. Transparent Computing (TC) Data Annotation Stack (DAS)
-
- 3.1. 背景
- 3.2. 依赖环境
-
- 3.3. 文件结构和内容
- 3.4. 运行数据注释框架
- 3.5. 添加数据
- 3.6. 添加新数据
- 3.7. 从压缩文件添加数据
- 3.8. 为已有数据加载注释
- 3.9. Grafana使用指南
- 4. 你可能遇到的一些问题及解决方案
-
- 4.1. elasticsearch启动失败
- 4.2. 导入数据脚本运行报错
-
- 4.2.1 JAVA命令报错
- 4.2.2 JAVA报错
- 4.2.3. log4j报错
1. 相关资料
对于数据集的介绍不再赘述,参考绿盟的文章:AISecOps:从DARPA TC项目看终端攻防
数据集地址:engagement5(是谷歌云盘,需要科学上网)
2. 数据集概况
engagement5 包含四个文件夹和三个文件,其具体内容如下:
文件 | 内容 |
---|---|
Data | 原始数据(已压缩),包含 cadets、clearscope、fivedirections、marple、strarc、theia、trace 五个部分共超300G的数据,每个部分代表了一种采集系统捕获到的审计日志 |
Ground_Truth | TA5.1的攻击报告,详细描述了每次攻击的时间目标过程等 |
Schema | 一个溯源图构建工具CDM(已停止更新) |
Tools | 可视化工具ELG(elasticsearch+logstash+grafana),docker环境。内含数据解压工具importers,具体使用方法见根目录下的 README.md |
Engagement-5-Event-Log.md | 整个过程的日志,按照日期为单位,记录了每天发生的事,如收集系统的崩溃和修复 |
README.md | 包含了整个数据集的基本信息和可视化方法,接下来会详细介绍 |
README.pdf | README的 pdf 版,内容同上 |
3. Transparent Computing (TC) Data Annotation Stack (DAS)
3.1. 背景
??TC DAS由 “ELG” 框架实现(基于ELK技术栈),包含开源工具Elasticsearch、Logstsash和Grafana。这些工具结合在一起提供了一个完全集成的平台,用于处理大量数据,为这些数据添加上下文并提供了一种在数据来源的上下文中查看数据的方式。
3.2. 依赖环境
Docker Engine version 17.05+ Docker Compose version 1.12.0+
3.3. 文件结构和内容
docker-compose.yml :一个总的配置文件,用于设置初始配置、启动、管理 DASgrafana_var_data : 用于 Docker 中的Grafana容器挂载到本地的存储路径。会保存Grafana接口使用和存储的所有数据。elasticsearch :一个目录,包含 Elasticsearch 的配置和 Docker 挂载到本地的数据存储路径。logstash :一个目录,包含 logstash 服务的基础配置以及传送数据到 Elasticsearch 的管道设置。logstash/config/logstash.yml : logstash 的基础配置文件logstash/pipeline/logstash.conf :logstash输入设置的配置文件,允许CDM数据被DAS使用。
env.grafana :grafana在运行时使用的环境变量
3.4. 运行数据注释框架
在包含
docker-compose up -d
??启动并运行后,在浏览器中访问
3.5. 添加数据
??该工具预装了来自三次主机攻击的数据。此注释数据旨在在添加自己的注释数据或导入其他注释数据之前演示此平台的功能。
3.6. 添加新数据
??导入新数据是使用 Logstash 的输入插件功能实现的。Logstash提供的导入功能允许使用几乎任何格式的事件数据,并将其转换为存储在 Elasticsearch 中。我们已经预先配置了 Logstash ,以接收来自 log4j 的事件数据作为输出,同时也支持从文件中读取。
3.7. 从压缩文件添加数据
这个数据集的压缩数据下载下来是以
- 找到压缩文件
.bin.gz 的目录 - 使用命令
./import.sh [directory] [avro file] [host] [port] -v 启动/imports/from_file/ 目录下的import.sh 文件。各参数含义如下[directory] :压缩文件的路径[avro file] :AVRO 模式的启用,用于将序列化的数据反序列化为适当的JSON格式的。这个功能由TCCDMDatum.avsc 提供的,位于与脚本相同的目录中。[host] :部署 DAS 容器的主机地址[port] :Logstash 接收数据的端口,默认4721
比如:
./import.sh /.../tc_data_delivery/ /.../TCCDMDatum.avsc 0.0.0.0 4712 -v
??这里的
3.8. 为已有数据加载注释
(这个脚本谷歌云盘已经没有了,不知道弃用了还是丢失了)
??如果你当前存的是纯数据,你希望同步别人对于数据的标注,可以使用TC DAS的预先配置的API密钥从
./import_annotations.py -ga [host-1]:3000 -gb [host-2]:3000 -bk eyJrIjoiU0Z4bWdTNjBTaDFHY3oxU21CZFVoaHRWSmF6RThQTG4iLCJuIjoiS0VZIiwiaWQiOjF9 -ak eyJrIjoiU0Z4bWdTNjBTaDFHY3oxU21CZFVoaHRWSmF6RThQTG4iLCJuIjoiS0VZIiwiaWQiOjF9 --verbose
3.9. Grafana使用指南
创建注释 :“Add Annotations” 面板的设计目的是便于根据Ground Truth文件输入为数据添加注释。通过浏览上面的图表,可以为屏幕上的条目添加注释。审阅注释 :“Review Annotations”仪表板旨在允许用户审阅现有注释,并尝试从所提供的数据中得出有意义的结论。详细事件查看器 :"Timeslice Viewer"面板显示在特定时间戳发生的所有事件的详细JSON数据。
4. 你可能遇到的一些问题及解决方案
4.1. elasticsearch启动失败
执行
是由于你文件路径没有给写入权限,而配置文件里挂载了
例如,我的所有文件都位于
chmod -R 777 /app/TC_Data_Visualization_Tool
4.2. 导入数据脚本运行报错
4.2.1 JAVA命令报错
导入数据的脚本
此时随便运行一个
根据提示的命令随便选一个安装,我安装的是第二个。
4.2.2 JAVA报错
如果遇到如下报错:
是由于文件名导致,数据集的路径不能有中文,最好空格也别要吧。改完路径之后有遇到如下错误:
这个报错是由于将string的IP转换成int时遇到了错误,但是换成别的ip也报错。但是为什么会把IP转成INT呢?
所以我就解压了
这里接收了四个参数,分别是输入的文件路径、解压工具
这其实就是调用java包的命令,但是仔细分析可以发现,传递的参数顺序和java文件内部的处理顺序不一样。那是不是可以单独拎出来放外面执行呢?答案是肯定的。我们把这个命令复制出来,参数按照java里面的顺序给,就能正常运行了。
java -Dlog4j.debug=true -cp .:tc-das-importer-1.0-SNAPSHOT-jar-with-dependencies.jar main.java.com.bbn.tc.DASImporter /media/ycl/MyDisk/DarpaTC/Data/cadets/ /app/TC_Data_Visualization_Tool/importers/from_file/TCCDMDatum.avsc 127.0.0.1 4712 -v
4.2.3. log4j报错
socket连接失败,是由于4712端口没有开放导致的,由于系统差异方法不同,就不赘述了,最好把