AttacKG:从网络威胁情报报告构建技术知识图谱

文章摘要

网络攻击越来越复杂和多样化,使得攻击检测越来越具有挑战性。为了打击这些攻击,安全从业者积极总结并以网络威胁情报(CTI)报告的形式交流他们对组织间攻击的知识。然而,由于以自然语言文本编写的CTI报告不是用于自动分析的,因此报告的使用需要繁琐的手动威胁情报恢复工作。此外,单个报告通常仅涵盖攻击模式的有限方面(例如,技术),因此不足以提供具有多种变体的攻击的全面视图。

在本文中,我们提出AttacKG从CTI报告中自动提取结构化攻击行为图,并识别相关的攻击技术。然后,我们汇总报告中的威胁情报,以收集不同方面的技术,并将攻击行为图增强为技术知识图(TKG)。

在我们对来自不同情报来源的真实世界CTI报告的评估中,AttacKG有效地识别了28262种攻击技术和8393种独特的妥协指标。为了进一步验证AttacKG在提取威胁情报方面的准确性,我们在16个手动标记的CTI报告上运行AttacKG。实验结果表明,AttacKG以0.887、0.896和0.789的F1分数准确识别攻击相关实体、依赖性和技术,这优于最先进的方法。此外,我们的TKG直接受益于建立在攻击技术之上的下游安全实践,例如先进的持续威胁检测和网络攻击重建。

相关资源

  • 文章地址:AttacKG: Constructing Technique Knowledge Graph from Cyber Threat Intelligence Reports.-学术范
  • 源码地址:https://github.com/li-zhenyuan/Knowledge-enhanced-Attack-Graph.
  • 数据集及模型地址:https://drive.google.com/drive/folders/1zVGPpN-i-BLlpFqQERscFGb45PkhfkUm
  • Spacy网站:English · spaCy Models Documentation

环境搭建

源码git clone下载(或者下载zip文档)

git clone https://github.com/li-zhenyuan/Knowledge-enhanced-Attack-Graph.git

虚拟环境配置

笔者使用的MiniConda构建虚拟环境(同Anaconda)

conda create -n AttacKG python=3.8

构建好后进入环境

conda activate AttacKG

如果直接使用

pip install -r requirements.txt

可能会出现两个问题:一个是模块依赖冲突的问题,二是网络访问不可达的问题。如下:

WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)'))': /msg-systems/coreferee/raw/master/models/coreferee_model_en.zip
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /msg-systems/coreferee/raw/master/models/coreferee_model_en.zip (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)')))
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tensorflow-gpu 2.10.0 requires numpy>=1.20, but you have numpy 1.19.2 which is incompatible.
dglgo 0.0.2 requires pydantic>=1.9.0, but you have pydantic 1.8.2 which is incompatible.
pandas 1.5.0 requires numpy>=1.20.3; python_version < "3.10", but you have numpy 1.19.2 which is incompatible.

安装Python模块

先安装一下基础模块

pip install scipy joblib scikit-learn Pygments pandas psutil

解决依赖冲突问题

因为源码中requirment.txt的模块会跟现有环境冲突,所以笔者重新配了一下各个模块的版本

absl-py==1.0.0
astunparse==1.6.3
beautifulsoup4==4.10.0
blis==0.7.8
bs4==0.0.1
cachetools==5.0.0
catalogue==2.0.6
certifi==2021.10.8
cffi==1.15.0
chardet==4.0.0
charset-normalizer==2.0.12
click==8.0.4
coreferee==1.3.1
#coreferee-model-en @ https://github.com/msg-systems/coreferee/raw/master/models/coreferee_model_en.zip
cryptography==36.0.1
cycler==0.11.0
cymem==2.0.6
flatbuffers==2.0
fonttools==4.30.0
gast==0.4.0
google-auth==2.6.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.44.0
h5py==2.10.0
idna==3.3
importlib-metadata==4.11.2
jarowinkler==1.0.1
Jinja2==3.0.3
joblib==1.1.0
keras==2.10.0
Keras-Preprocessing==1.1.2
kiwisolver==1.3.2
langcodes==3.3.0
Levenshtein==0.18.1
libclang==13.0.0
lxml==4.8.0
Markdown==3.3.6
MarkupSafe==2.1.0
matplotlib==3.5.1
murmurhash==1.0.6
networkx==2.7.1
nltk==3.7
numpy==1.20.3
oauthlib==3.2.0
opt-einsum==3.3.0
packaging==21.3
pathy==0.6.1
pdfminer.six==20211012
pdfplumber==0.6.0
Pillow==9.0.1
preshed==3.0.6
protobuf==3.19.4
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.21
pydantic==1.9.0
pyparsing==3.0.7
python-dateutil==2.8.2
rapidfuzz==2.0.6
regex==2022.3.2
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
simplejson==3.17.6
six==1.16.0
smart-open==5.2.1
soupsieve==2.3.1
spacy==3.4.0
spacy-legacy==3.0.10
spacy-loggers==1.0.3
srsly==2.4.5
tensorboard==2.10.1
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow-estimator==2.10.0
tensorflow-gpu==2.10.0
tensorflow-io-gcs-filesystem==0.27.0
termcolor==1.1.0
tf-estimator-nightly==2.8.0.dev2021122109
thinc==8.1.0
tqdm==4.63.0
typer==0.4.2
typing-extensions==4.1.1
urllib3==1.26.8
Wand==0.6.7
wasabi==0.9.1
Werkzeug==2.0.3
wrapt==1.14.0
XlsxWriter==3.0.3
zipp==3.7.0

保存上面的内容为新的requirement.txt

选择Pycharm加载的conda环境

pip install requirement.txt #修改后的requirement.txt


解决网络访问问题

直接下载coreferee_model_en.zip

https://github.com/msg-systems/coreferee/raw/master/models/coreferee_model_en.zip

解压后在conda环境里本地安装

cd coreferee_model_en
pip install -e .

手动安装一下 en_core_web_sm-3.4.1语言模型(当前最新版)

https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1-py3-none-any.whl

pip install en_core_web_sm-3.4.1-py3-none-any.whl

模型安装

下载模型new_cti.model.zip,并解压到论文源码目录

https://drive.google.com/drive/folders/1zVGPpN-i-BLlpFqQERscFGb45PkhfkUm

模板安装

手动下载templates.zip

https://drive.google.com/drive/folders/1zVGPpN-i-BLlpFqQERscFGb45PkhfkUm

解压到论文源码文件夹下,即可。

成功运行

然后就可以执行README.md文件中的Sample

# Generating attack graph for CTI report
python main.py -M attackGraphGeneration -R "./Dataset/Evaluation/Frankenstein Campaign.txt" -O ./output.pdf

# Identifing techniques in CTI report
python main.py -M techniqueIdentification -T ./templates -R "./Dataset/Evaluation/Frankenstein Campaign.txt" -O ./output.pdf

AttacKG: Constructing Technique Knowledge Graph from Cyber Threat Intelligence Reports 源码复现相关推荐

  1. AttacKG: Constructing Technique Knowledge Graph from Cyber Threat Intelligence Reports代码复现

    文章目录 1. 配置环境 1.1 使用conda安装Python3.8环境 1.2 下载文件 1.2.1 快速下载GitHub文件 1.2.2 下载依赖文件 1.2 修改requirements.tx ...

  2. A Practical Approach to Constructing a Knowledge Graph for Cybersecurity 阅读笔记

    A Practical Approach to Constructing a Knowledge Graph for Cybersecurity 阅读笔记 Article Background Pur ...

  3. [论文阅读] (07) RAID2020 Cyber Threat Intelligence Modeling Based on Heterogeneous GCN

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  4. 带你读AI论文丨RAID2020 Cyber Threat Intelligence Modeling GCN

    摘要:本文提出了基于异构信息网络(HIN, Heterogeneous Information Network)的网络威胁情报框架--HINTI,旨在建模异构IOCs之间的相互依赖关系,以量化其相关性 ...

  5. C语言实现Graph图的算法(附完整源码)

    C语言实现Graph图的算法 C语言实现Graph图的算法完整源码(定义,实现) C语言实现Graph图的算法完整源码(定义,实现) #ifndef _GRAPH_H #define _GRAPH_H ...

  6. [Darkweb Cyber Threat Intelligence Mining]暗网威胁情报挖掘 - 1

    1 简介 最近,漏洞利用工具包,恶意软件,僵尸网络租用,教程和其他黑客产品的在线市场一直在发展,而这个市场曾经是一个难以渗透的专有市场,其购买者主要是西方政府[95] 现在,更广泛的人群更容易使用. ...

  7. C语言实现图形ADT(Graph ADT)接口COMP2521(附完整源码)

    C语言实现图形ADT接口COMP2521 GraphRep结构体定义 Edge(边)定义 实现以下6个接口 完整头文件 完整源文件 GraphRep结构体定义 typedef struct Graph ...

  8. 《knowledge graph embedding:a survey of approaches and applications》论文阅读

    发表于TKDE 2017. knowledge graph embedding:a survey of approaches and applications abstract 1. introduc ...

  9. RelExt: Relation Extraction using Deep Learning approaches for Cybersecurity Knowledge Graph 阅读笔记

    RelExt: Relation Extraction using Deep Learning approaches for Cybersecurity Knowledge Graph Improve ...

最新文章

  1. 免费!!3天,吃透JVM!(限时领)
  2. asp.net MVC2 初探四
  3. linux客户端设置eth0为dhcp,如何设置Linux客户端以使用通过dhcp提供的ntp信息?
  4. LTE 中的RV版本
  5. 听说你想去大厂看学妹,带你看看字节跳动后端开发面试长啥样?
  6. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。
  7. 有向图最长路径算法_算法数据结构 | 三个步骤完成强连通分量分解的Kosaraju算法...
  8. 第二节:简易安装 和 快速入门Vue.js
  9. 【.Net】C#实现多线程的方式:使用Parallel类
  10. Unity iOS XCode
  11. 软件安全实验——栈溢出漏洞利用
  12. 安装软件提示需要重启电脑的处理方法
  13. 大数据hadoop讲解
  14. 常见的输入、输出、存储设备
  15. 大数据处理中心什么意思_什么是数据处理中心或数据中心
  16. [Unity]摘录笔记UnityShader(重写SurfaceShader)
  17. 【Mysql面试宝典】快速搞定Mysql表操作
  18. MATLAB生成exe脱离matlab运行可执行程序
  19. C语言实现数据结构之归并排序
  20. java 工资管理系统_Java工资管理系统

热门文章

  1. 手撸spring源码分析IOC实现原理
  2. 表格与合并之Excel如何快速合并多个表格数据
  3. 【Python2】使用python中的turtle模块学习海龟绘图(有趣的python初体验)(最全最详细的turtle介绍使用)
  4. 基于PP-TSM+BMN+LSTM实现足球精彩时刻剪辑_副本1
  5. yaahp使用教程_如何用yaahp进行大量备选方案/评价对象的综合评价?
  6. excel设定备选值
  7. 浅谈深度学习:基于对LSTM项目`LSTM Neural Network for Time Series Prediction`的理解与回顾
  8. 九宫格图片怎么操作?这里有你想要的方法
  9. 汇编“从键盘输入一串字符,分别统计其中字母、数字和其
  10. Unity制作翻页系统