MulVal安装记录

MulVAL 是一种端到端框架和推理系统,可在网络上进行多主机、多阶段漏洞分析MulVAL采用Datalog作为分析元素的建模语言(bug规范、配置描述、推理规则、操作系统权限和特权模型等)。通过在 Datalog 中表达它们的输出并将其馈送到我们的 MulVAL 推理引擎,我们可以轻松地利用现有的漏洞数据库和扫描工具。收集信息后,可以在几秒钟内对拥有数千台机器的网络进行分析

参考(步骤不全):MulVal工具的安装以及配置_mulval安装-CSDN博客

Analyzer主机1 ubuntu24.04

更新配置

sudo apt update && sudo apt upgrade -y

安装jdk等依赖

sudo apt install -y build-essential default-jdk flex bison graphviz texlive-font-utils xutils-dev git

没有C编译器,安装

sudo apt install -y build-essential gcc make

安装XSB(all in one line)

这个不用命令先下载安装包
wget "https://sourceforge.net/projects/xsb/files/xsb/5.0%20%28Green%20Tea%29/XSB-5.0.tar.gz/download" -O XSB-5.0.tar.gz
解压
tar -xzf XSB-5.0.tar.gz
cd XSB/build
./configure (--prefix=/usr/local)
./makexsb
./makexsb install

建立软连接

sudo ln -s /usr/local/xsb-clean /usr/local/xsb

安装XSB依赖库

sudo apt install -y \
libncurses-dev \
libreadline-dev \
libssl-dev \
libgmp-dev \
libx11-dev

安装graphviz工具和mysql

sudo apt-get install graphviz graphviz-doc
sudo apt-get install mysql-server mysql-client

安装MulVal

cd ~/桌面 最好和XSB放一起 git clone https://github.com/risksense/mulval.git

配置环境变量

cd ~/桌面/mulval

export XSB_HOME=/usr/local/xsb
export PATH=$XSB_HOME/bin:$PATH

验证

which xsb 输出应为 /usr/local/xsb/bin/xsb

source ~/.bashrc
make

make后可能会有很多问题,少什么依次安装

sudo apt install openjdk-17-jdk  

MulVAL 是老项目(2015 年左右),用较老的 JDK 兼容性更好(避免 Java 21+ 的严格检查)

可能缺失jar包

cd /home/eddie/桌面/mulval(进入mulval的文件夹内)
cd lib

# dom4j
wget https://repo1.maven.org/maven2/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
# jaxen
wget https://repo1.maven.org/maven2/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar
# MySQL JDBC
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.3.0/mysql-connector-j-8.3.0.jar

更改mulval/src/attack_graph中

mv graphit.tab.c y.tab.cpp
mv graphit.tab.h y.tab.cpp.h
改为
cp graphit.tab.c y.tab.cpp
cp graphit.tab.h y.tab.cpp.h

 

更改src/attack_graph/attack_graph.cpp和attack_graph/graphit.y

两个文件中全文件替换 data.gdata.

src/attack_graph/attack_graph.cpp中
for (Fact *fa = c->factList.gethead(); fa > 0; fa = c->factList.getnext()) {
改为
for (Fact *fa = c->factList.gethead(); fa != nullptr; fa = c->factList.getnext()) {

for (Fact *fa = c->factList.gethead(); fa > 0; fa = c->factList.getnext()) {
改为
for (Fact *fa = c->factList.gethead(); fa != nullptr; fa = c->factList.getnext()) {

graphit.y中
extern graph_data data;
改为
extern graph_data gdata;

src/attack_graph/graphit.y中
YYSTYPE* mylval = &yylval;
改为
extern YYSTYPE* mylval;

graphit.l中

YYSTYPE mylval;
改为
YYSTYPE *mylval = (YYSTYPE *)&yylval;

配置graph_gen.sh的环境变量

nano ~/.bashrc # 或 vim

export MULVALROOT=/home/eddie/桌面/mulval
export PATH=$PATH:$MULVALROOT/bin:$MULVALROOT/utils

source ~/.bashrc 立刻生效

验证

echo $MULVALROOT  # 应输出你的 MulVAL 路径
which graph_gen.sh # 应找到 utils/graph_gen.sh
ls $MULVALROOT/bin/attack_graph # 应存在二进制(已编译)

使用仓库示例测试

mkdir ~/mulval_test
cd ~/mulval_test  
cp $MULVALROOT/testcases/3host/input.P .

graph_gen.sh input.P     (AttackGraph.txt)

attack_graph AttackGraph.txt (可能生成 AttackGraph.ps)

graph_gen.sh input.P -v -p
  -v:用 GraphViz 生成 PDF(AttackGraph.pdf)没有输出pdf应该有eps文件,也可以用
  -p:额外路径信息,调试,可选。
evince AttackGraph.eps  

 

 

 

Scanned Host主机2 (red hat enterprise linux) rhel-8

rhel9.6下载地址:https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/

安装OpenSCAP(RHEL 推荐的 OVAL 扫描引擎)

sudo dnf update -y
dnf groupinstall "Development Tools" -y
dnf install -y wget git openssl-devel python3 python3-pip
(可不安装)sudo dnf install -y wget curl unzip net-tools
dnf install -y openscap openscap-utils scap-security-guide

获取MulVal扫描组件

cd /opt
git clone https://github.com/nclab/mulval.git
export MULVALROOT=/opt/mulval
export PATH=$PATH:$MULVALROOT/bin

 

安装Nessus

cd /tmp

wget https://www.tenable.com/downloads/api/v1/public/pages/nessus/downloads/27364/download?i_agree_to_tenable_license_agreement=true -O Nessus-10.11.1-el9.x86_64.rpm

sudo rpm -ivh Nessus-10.7.3-el9.x86_64.rpm
启动
sudo systemctl enable nessusd
sudo systemctl start nessusd
检查状态
sudo systemctl status nessusd
确认监听端口
ss -lntp | grep 8834

注册:(尽量不要刷新界面,激活码很难找回)

https://<scanner_ip>:8834
获取质询码
/opt/nessus/sbin/nessuscli fetch --challenge
获取激活码
https://zh-cn.tenable.com/products/nessus/nessus-essentials
进入获取离线插件包地址及激活证书,输入前面两个码
https://plugins.nessus.org/v2/offline.php
下载Nessus Plugins和证书
/opt/nessus/sbin/nessuscli fetch --register-offline nessus.license
安装插件包
/opt/nessus/sbin/nessuscli update ./all-2.0.tar.gz
重启nessus
service nessusd restart
然后重新进入网站等待激活,时间较长

接触IP限制(不解除只能扫描16个IP)

https://plugins.nessus.org/v2/plugins.php
service nessusd stop
vi plugin_feed_info.inc
输入
PLUGIN_SET = "202601041845"; 数字改
cp plugin_feed_info.inc /opt/nessus/var/nessus/
rm -rf /opt/nessus/lib/nessus/plugins/plugin_feed_info.inc
service nessusd start

sudo systemctl enable nessusd sudo systemctl start nessusd

操作步骤

在 RHEL 扫描主机上进行漏洞扫描

# 创建扫描目录
mkdir -p /root/scan_results && cd /root/scan_results

# 执行扫描 (针对 RHEL 9 的漏洞扫描)
# 注意:你需要从 Red Hat 官网下载最新的 OVAL 定义文件
wget https://access.redhat.com/security/data/oval/v2/RHEL9/rhel-9.oval.xml.bz2
bunzip2 rhel-9.oval.xml.bz2

# 运行扫描并输出结果为 results.xml
oscap oval eval --results results.xml rhel-9.oval.xml

将原来的l分析主机mulva复制到redhat

cd /opt
复制到##

nano ~/.bashrc
export MULVALROOT=/opt/mulval
export PATH=$PATH:$MULVALROOT/bin

转换结果为 MulVal 格式

cd /root/scan_results
# 使用 MulVal 的 oval_adapter (假设已在 bin 目录)
$MULVALROOT/bin/oval_adapter.sh results.xml

数据传输至分析主机 (Ubuntu)

scp host_vulnerabilities.P eddie@<Ubuntu_IP>:/home/eddie/桌面/mulval/testcase/

在 Ubuntu 分析主机上生成攻击图

graph_gen.sh input.P -v -p(已经写过)
 
 
posted @ 2026-01-04 19:24  Eddie68  阅读(3)  评论(0)    收藏  举报