我的Kali版本
配置JAVA环境
Kali 2021.3自带openjdk 11的环境
# 验证openjdk11
java --version
javac --version
能输出版本号则说明环境正常
我在验证javac时没有输出正常版本号,显示找不到命令
运行apt install default-jdk后openjdk自动被升级为17
决定删除重装openjdk11
# 确保删除所有openjdk相关
apt-get remove openjdk-11-jre\nsudo apt-get remove openjdk-11-jre-headless
apt-get remove openjdk-17-jre\nsudo apt-get remove openjdk-17-jre-headless
# 验证系统中没有openjdk了
java --version
javac --version
# 安装openjdk11
apt install openjdk-11-jdk openjdk-11-jre -y
# 验证安装成功
java --version
javac --version
配置flex和bison
虽然MulVAL安装文档中没有提示要用到,但不安装会导致编译错误
apt install flex
apt install bison
安装XSB
cd 你的安装目录 我安装在了opt目录下
wget http://xsb.sourceforge.net/downloads/XSB.tar.gz
tar xzvf XSB.tar.gz
cd ./XSB/build
./configure # 检查配置
./makexsb # 编译安装
配置xsb的环境变量
vim ~/.zshrc
将 export PATH=$PATH:/path/to/XSB/bin 添加到文件最末一行
# !!注意修改/path/to/XSB为你的电脑上XSB的实际路径
# :wq 保存文件
source ~/.zshrc
安装Graphviz
apt install graphviz graphviz-doc -y
配置MySQL
Kali自带了mariaDB,没有必要按照其他教程那样再去配置MySQL
但是Kali好像只安装了mariaDB-server或mariaDB-client中的一个,为了避免错误,直接两个都安装上
apt install mariadb-server mariadb-client -y
# 默认mariadb是关闭的,需要启动一下
systemctl start mysql
mysql -uroot -p
# 输入你自己的密码,默认密码为空
# ctrl+Z退出
安装MulVAL
cd 你的安装目录
我把XSB和mulval 都放在opt下的xsb文件夹下了 (命名套路非常迷惑了,别管!
# 用git 直接clone或者登录github先下载压缩包后解压都行,目前的MulVAL版本是1.2.1
git clone https://github.com/risksense/mulval.git mulval
# 设置临时变量,记得替换/path/to为你的安装目录
cd mulval
export MULVALROOT=/path/to/mulval
export PATH=$PATH:$MULVALROOT/bin:$MULVALROOT/utils
# 编译测试
make
此时出现第一个bug
../../bin/xxx 不是目录
解决方法:
mkdir bin
mkdir bin/adapter
mkdir bin/metrics
再次make 又报错
找不到graphit.tab.h文件
解决办法:选其中一个执行
法一:
cd mulval/src/attack_graph
vim Makefile
将图示部分的两个mv 改为cp
法二:
cd mulval/src/attack_graph
bison -d /home/tools/mulval-1.2.1/src/attack_graph/graphit.y
make clean # 清理编译缓存
make # 编译
再次报错 (我真的会谢!!
collect2: error: ld returned 1 exit status
解决办法:
vim src/attack_graph/graphit.l
原来的第5行为YYSTYPE* mylval;
在前面加上 extern 即可
修改后的第5行为:extern YYSTYPE* mylval;
再再再次编译
make clean # 清理编译缓存
make # 编译
这次终于没有报错了!
测试MulVAL
cd testcases
graph_gen.sh 3host/input.P -v -p
测试成功!
在testcases里 能看到生成的文件