ubuntu 安装clang_Angora的安装与使用

Angora是由Peng Chen等人开发并维护的一款灰盒模糊测试器。其相关论文《Angora: Efficient Fuzzing by Principled Search》发表在了安全领域顶级会议S&P2018,该工具目前已在GitHub上开源。本文主要结合GitHub主页的技术文档和笔者实际安装经历,介绍一下笔者的Angora安装使用经历。

安装环境

Ubuntu 64位16.04.4

当前工作目录为/root

安装步骤

1.下载Angora

git clone https://github.com/AngoraFuzzer/Angora

下载完成后,Angora目录路径为/root/Angora。

2.安装LLVM

在Angora目录下运行:

PREFIX=/path-to-install ./build/install_llvm.sh

其中path-to-install为clang+llvm的安装路径,不妨设为/root/,运行成功后,clang+llvm被安装至目录/root/clang+llvm。

注意到,install_llvm.sh的安装方法是通过wget下载llvm的压缩包后自动安装,可能会由于网络问题出现无法下载的情况,因此,可以通过手动点击该链接下载压缩包clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz,并存放在root目录下,之后将install_llvm.sh中的wget那一行语句删除,在root目录下运行:

PREFIX=/path-to-install ./Angora/build/install_llvm.sh

即可安装成功。

3.安装Rust

直接在/root目录下运行:

curl https://sh.rustup.rs -sSf | sh

之后按照提示运行:

source $HOME/.cargo/env

其中$HOME为.cargo的所在目录,这里为/root。

4.设置环境变量

在root目录下运行:

export PATH=/path-to-clang/bin:$PATH
export LD_LIBRARY_PATH=/path-to-clang/lib:$LD_LIBRARY_PATH

这里我们运行的命令应为:

export PATH=/root/clang+llvm/bin:$PATH
export LD_LIBRARY_PATH=/root/clang+llvm/lib:$LD_LIBRARY_PATH

5.建立Angora

在Angora目录下运行:

./build/build.sh

即可成功编译并安装Angora。

6.对CPU进行设置

运行:

echo core | sudo tee /proc/sys/kernel/core_pattern

7.测试是否能成功运行

在Angora/tests/目录下运行:

./test.sh mini

进行测试,显示无错误信息后测试成功

使用Angora对GNU Binutils 2.32进行测试

GNU Binutils 2.32是常用的评估漏洞挖掘工具效率的Benchmark软件,我们将其安装在/root/binutils-2.32/

1.通过./configure配置Make所需环境变量

在Binutils 2.32所在目录下依次运行:

CC=/path/to/angora/bin/angora-clang 
CXX=/path/to/angora/bin/angora-clang++ 
LD=/path/to/angora/bin/angora-clang 
PREFIX=/path/to/target/directory 
./configure --disable-shared

这里,我们实际运行的命令为:

CC=/root/Angora/bin/angora-clang CXX=/root/Angora/bin/angora-clang++ LD=/root/Angora/bin/angora-clang PREFIX=/root/binutils-2.32 ./configure --disable-shared

成功配置并生成Makefile文件。

2.对Binutils进行污点跟踪编译

在Binutils 2.32所在目录下运行:

USE_TRACK=1 make -j
make install

编译安装完成后,在binutils目录下生成了被污点跟踪技术插桩编译产生的可执行文件objdump等。

创建target目录,在/root/目录下建立文件夹/target,在/root/target/目录下分别建立文件夹/fast及/taint,将binutils目录下的可执行文件objdump、readelf等复制到/root/target/taint/目录下,并重命名为objdump.taint、readelf.taint等。

3.对Binutils进行快速编译

在Binutils 2.32所在目录下运行:

make clean
USE_FAST=1 make -j
make install

编译安装完成后,在binutils目录下生成了快速编译产生的可执行文件objdump等,与2类似,将binutils目录下的可执行文件objdump、readelf等复制到/root/target/fast/目录下,并重命名为objdump.fast、readelf.fast等。

4.对objdump -d进行测试

在/root/目录下建立种子文件夹/input/,放入ELF可执行文件,作为种子对objdump进行测试,这里我们选取AFL提供的ELF文件格式的初始种子。

在Angora目录下运行:

./angora_fuzzer -i input -o output -t path/to/taint/program -- path/to/fast/program [argv]

这里我们实际运行命令为:

./angora_fuzzer -I /root/input -o /root/output -t /root/target/taint/objdump.taint -- /root/target/fast/objdump.fast -d @@

注意,与AFL相类似,在命令行参数后要加上@@。同时,输出目录不能是已经存在的目录,若在运行此命令前已创建了/root/output文件夹,则无法进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值