MulVal安装记录
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(已经写过)

浙公网安备 33010602011771号