risksense/mulval
GitHub: risksense/mulval
MulVAL 是一款基于逻辑推理的企业网络安全分析器,通过整合漏洞扫描数据自动生成多阶段攻击路径图并量化风险。
Stars: 146 | Forks: 38
# MulVAL
###多主机、多阶段漏洞分析工具
要运行 MulVAL,您需要从 http://xsb.sourceforge.net/ 安装 XSB 逻辑引擎
您还需要通过输入 "dot" 来检查系统中是否已经安装了 GraphViz。如果未安装 GraphViz,您需要在 http://www.graphviz.org/ 进行安装
请确保程序 "xsb" 和 "dot" 都位于您的 PATH 中。
####设置
环境变量 MULVALROOT 应指向本包的根文件夹。将 $MULVALROOT/bin 和 $MULVALutils 包含在 PATH 中。输入 "make" 编译所有内容
如果您已经有了输入文件,可以直接运行 MulVAL 攻击图生成器;或者您可以运行适当的 adapter 来创建输入文件,然后运行攻击图生成器。
####直接运行 MulVAL
`graph_gen.sh INPUT_FILE [OPTIONS] `
在 testcases/3host/input.P 中有一个简单的输入文件。此输入对应于 MulVAL 相关出版物 [1,2] 中的 3 主机示例。您可以运行它来检查攻击图生成器是否正常工作:
`graph_gen.sh input.P -v -p`
这将生成一个与论文描述相符的攻击图。请注意,在生成环境中**不应**调用 `-p` 选项,因为它会以指数级速度减慢攻击图的生成过程,而且它的唯一作用就是让攻击图在视觉上更美观(尝试运行上述不带 -p 选项的命令)。
默认情况下,MulVAL 会以文本格式 (AttackGraph.txt) 和 xml 格式 (AttackGraph.xml) 输出攻击图。这些格式的含义是不言自明的。当调用 `-v` 选项时,将通过 GraphViz 在 AttackGraph.pdf 中生成攻击图的可视化表示。如果您设置了环境变量 PDF_READER,程序将使用它自动打开该 pdf 文件。
当指定了适当的选项(见下文)时,MulVAL 还会以 CSV 格式输出攻击图信息:VERTICES.CSV 和 ARCS.CSV。渲染程序可以使用这些 CSV 文件稍后生成攻击图的各种视图(见下文)。
MulVAL 还会在运行程序的文件夹中输出许多其他临时文件。因此,最好在一个单独的文件夹中运行它,以避免造成混乱。
####选项
- 图生成选项:
`-l`:以 .CSV 格式输出攻击图
`-v`:以 .CSV 和 .PDF 格式输出攻击图
`-p`:对攻击图执行深度修剪以改善可视化效果 **(切勿在生产环境中调用)**
- 推理选项:
`-r | --rulefile RULE_FILE`:使用 RULE_FILE 作为交互规则集
`-a | --additional ADDITIONAL_RULE_FILE`:在指定的交互规则集之外使用 ADDITIONAL_RULE_FILE
`-g | --goal ATTACK_GOAL`:指定单一攻击目标
`--cvss`:使用输入文件中包含的 CVSS 信息
`-ma`:使用输入文件中包含的 CVSS 信息,并对输入文件执行分组。使用此选项时,输入文件必须包含分组信息(见下文第二部分)
- 渲染选项:
`--arclabel`:输出弧(arc)的标签
`--reverse`:以相反顺序输出弧
`--nometric`:不显示指标信息
`--simple`:不显示顶点事实标签。*当攻击图变得太大而无法可视化时,请使用此选项。*
`--nopdf`:不生成 pdf。*当您只需要 DOT 文件而不需要 PDF 时,请使用此选项。*
在运行了 `graph_gen.sh` 脚本之后,您还可以调用 `render.sh` 来使用不同的渲染选项。只需在同一目录下发出 `render.sh` 命令即可,
`render.sh [渲染选项]`
####使用 adapter 准备 MulVAL 输入文件
本包包含许多 adapter 程序,用于辅助从企业网络创建 MulVAL 输入文件。需要执行以下几个步骤。
1. 设置一个空的 MySQL 数据库用于存储 NVD 数据,并将数据库连接信息放入您希望运行 MulVAL adapter 的目录下的 config.txt 中。
config.txt 示例:
jdbc:mysql://www.abc.edu:3306/nvd
user_name
password
然后您可以通过输入 "nvd_sync.sh" 来填充 NVD 数据库。这需要根据需要经常执行,以保持本地 MySQL 数据库与 NVD 同步。
2. 将 OVAL/Nessus 报告转换为 Datalog 格式。
* 对于 OVAL:`oval_translate.sh XML_REPORT_FROM_IN_OVAL`
* 第一个参数是 OVAL 扫描结果的 xml 文件。输出将为 oval.P、summ_oval.P 和 grps_oval.P。
* oval.P 是 MulVAL 的原始输入。
* summ_oval.P 是按照 [3] 中概述的方法执行分组后的汇总输入。此输入文件应与 `-ma` 选项一起使用。(grps_oval.P 包含从漏洞组到原始漏洞的映射)
* 对于 NESSUS:`nessus_translate.sh XML_NESSUS_REPORT [FIREWALL_RULES]`
* 第一个参数是 NESSUS 扫描结果的 XML 文件。
* 可选的第二个参数是包含 datalog 格式防火墙规则的文件。例如 `hacl('10.1.2.3', '172.28.2.5', udp, _).` 每行定义一个 hacl。此文件中的所有规则都将写入 `nessus.P` 文件。如果缺少此参数,则将写入默认规则 `hacl(_, _, _, _).`。
* 输出将为 nessus.P、summ_nessus.P 和 grps_nessus.P
* nessus.P 是 MulVAL 的原始输入
* summ_nessus.P 是按照 [3] 中概述的方法执行分组后的汇总输入。此输入文件应与 `-ma` 选项一起使用。(grps_nessus.P 包含从漏洞组到原始漏洞的映射)
3. 创建 hacl tuple
我们假设在同一份扫描报告中的所有机器都可以彼此自由访问。连接信息可以在 MulVAL 输入文件中自定义为 hacl(Host1, Host2, Protocol, Port)。然后需要将所有转换后的输入文件合并为一个单独的输入文件。
4. 创建 MulVAL 攻击图
创建输入文件后,请参阅第一部分的说明来生成攻击图。
####高级用法
1. 创建自定义规则集。
要开发您自己的交互规则,您可以创建新的规则文件(例如 "my_interaction_rules.P"),并使用 `-r` 或 `-a` 选项加载您的规则文件。默认的规则文件可以在本包的 kb/ 文件夹下找到。
在规则文件的开头,您必须声明原始(primitive)和派生(derived)谓词,并对所有派生谓词进行 table 处理。带有原始谓词的事实来自输入,而带有派生谓词的事实由交互规则定义。交互规则使用的每个谓词都必须有 "primitive" 或 "derived" 的声明,否则在评估期间您可能会收到 "undefined predicate"(未定义的谓词)的错误消息,并且攻击图生成可能会失败,同时会有一条警告消息告诉您哪个谓词缺少声明。Tabling 将防止 XSB 推理引擎进入死循环,并通过记录中间结果来提高推理效率。
每个交互规则由 "interaction_rule(Rule, Label)" 引入,其中 Rule 是一个 Datalog 规则,Label 是一些用于解释其含义的纯文本。这些标签将成为攻击图中的注释。
一旦您开发了自己的规则集,就可以通过使用 `graph_gen.sh` 的 `-r RULEFILE` 选项对其进行测试,让它加载 RULEFILE 而不是使用默认规则集。如果您希望将您的规则文件添加到默认规则集中,可以使用 `-a RULEFILE` 选项。
2. 基于 CVSS 和 MulVAL 攻击图计算风险指标
我们引入了一种基于 Wang 等人 [4] 的定量风险评估算法。它结合了 CVSS 指标和攻击图,为企业网络计算概率风险指标。要运行指标程序,请在攻击图输出所在的目录下输入以下命令:
`probAssess.sh`
还有一个可以集成多个步骤的脚本:创建 MulVAL 攻击图、运行风险指标算法并显示带指标的攻击图:
`riskAssess.sh INPUT [OPTIONS]`
它将在输入文件上运行 MulVAL。此脚本将始终使用 -ma(建模工件)选项来生成攻击图。请使用 summ_oval.P(由 oval_translate.sh 生成)或 summ_nessus.P(由 nessus_translate.sh 生成)作为 INPUT。使用 OPTIONS 将任何附加选项传递给 MulVAL 攻击图生成器 (graph_gen.sh)
####参考文献:
[1] Xinming Ou, Wayne F. Boyer, and Miles A.McQueen. A scalable approach to attack graph generation. In 13th ACM Conference on Computer and Communications Security (CCS), 2006.
[2] Xinming Ou, Sudhakar Govindavajhala, and Andrew W. Appel. MulVAL: A logic-based network security analyzer. In 14th USENIX Security Symposium, 2005.
[3] Su Zhang, Xinming Ou, and John Homer. Effective network vulnerability assessment through model abstraction. In Eighth Conference on Detection of Intrusions and Malware & Vulnerability Assessment
(DIMVA), Amsterdam, The Netherlands, 2011.
[4] Lingyu Wang, Tania Islam, Tao Long, Anoop Singhal, and Sushil Jajodia. An attack graph-based probabilistic security metric. In Proceedings of The 22nd Annual IFIP WG 11.3 Working Conference
on Data and Applications Security (DBSEC’08), 2008.
标签:JS文件枚举, Web报告查看器, XXE攻击, 企业安全, 应用安全, 攻击图, 智能健康, 漏洞分析, 网络安全, 网络资产管理, 路径探测, 逻辑推理引擎, 隐私保护