magma测试与安装,使用(含docker配置)

Docker的配置与安装

Docker更改镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://non8v4km.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker下载ubuntu

docker pull ubuntu:<version>, 其中<version>代表的版本,我选的是18.04,即docker pull ubuntu:18.04

docker运行进入容器

在docker1.3.x之后提供了一个新的命令exec用于进入容器,下面我们看一下以下的命令:
开始启动容器: sudo docker run -it ubuntu:18.04 /bin/bash
exit退出容器
查看所有的容器 sudo docker ps -a
停止一个容器:docker stop <容器 ID>
进入一个已经运行的容器 docker exec -it <容器ID> /bin/bash

以下是我进入docekr的命令

  • docker run -itd --name <自己命名的名字> ubuntu:18.04 /bin/bash
  • docker exec -it <容器ID> /bin/bash

通过Dockfile更改docker中ubuntu的apt源

在Dockerfile中添加如下代码

RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean

docker容器中的ubuntu的配置

下载vim:
  • apt-get update
  • apt-get install vim

更改镜像源

vim /etc/apt/sources.list

#  阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

运行magma

运行magma时一定不要加root权限!!!!!!, 在docker下载完成后就可以进行测试

  • 配置captainrc,根据官网,进行配置
  • 进入/path/to/magma/tools/,运行./run.sh
    然后就可以跑通,如果有问题前往官网问题解答,需科学上网

Got permission denied while trying to connect to the Docker daemon socket

将Docker加入权限

github镜像网站的配置

镜像网站加速项目

magma中run.sh的配置,即captainrc的配置

WORKDIR

定义了run.sh的当前实例将存储其输出和瞬态结果的目录的路径,WORKDIR目录具有以下的层次结构

./
|
-- cache: 当前运行的活动的临时存储
|
-- ar: 存档的活动结果(可选压缩包)
|
-- log: docker 构建时和运行时日志
|
-- poc: 收集触发已知错误或新崩溃的测试用例

cachear子文件夹拥有以下的层次结构:

./
|
-- [FUZZER]
|  |
|  -- [TARGET]
|  |  |
|  |  -- [PROGRAM]
|  |  |  |
|  |  |  -- [RUN]
|  |  ...
|  ...
...

每个 [RUN] 目录都会包含此活动的运行时结果:

./
|
-- findings:为模糊测试提供的输出目录
|
-- log:fuzzer的stdout和stderr流,存储在log/current中
|
-- monitor: 包含检测结果的带时间戳的文件
Repeat

指定了每个实验必须重复的次数.如上所述,每个重复都在工作目录层次结构分配了一个本地的RUN序列号

WORKER_MODE

它定义了CPU资源分配的线程

  1. 逻辑核心
  2. 物理核心
  3. 物理插槽(一个CPU端口一个线程)

例如,如果设置有2个CPU插座,每个插座有8个物理内核和16个启用的SMT的线程(逻辑内核):

  1. 2 * 16 = 32 workers
  2. 2 * 8 = 16 workers
  3. 2 workers
WORKERS

定义了使用的最大CPU核心数量

WORKER_POOL

指定分配的cpu分配空间的逻辑核心列表,如果没有被指定,captain工具将会从lscpu的输出中来分配核心数量,分配的依据建立在前面的WORKER_MODE 模式的选择以及分配的WORKERS的数量上,会根据这两个规则做一次筛选.
如果你想要控制分配那些核心,可以在列表中指定(以空格作为分隔符)

lscpu:

CAMPAIGN_WORKERS

指定单一核心分配的线程的数量.在大多数例子中,这个应该不能超过1个(默认值).然而,如果你自定义fuzz的fuzz的配置,并且使用多核心,你可以指定全局的变量来应用这个效果.相反的,你如果要指定特定的fuzz参数,可以看一下下边的fuzz_CAMPAIGN_WORKERS.

POOL

为了避免同步的复杂性和低速度,Magma需要不断的访问存储文件,并且每次运行时将它的内容保存在monitor目录中,这个参数定义了后续轮循中需要等待的时间

CACHE_ON_DISK

为了加速fuzz的进程并且降低 fuzzer/target/instrument 中I/O的阻塞率,Magma默认将缓存的目录挂载为tmfs卷,然而,这可能会导致较高的内存占用,并且需要root权限来装载和卸载卷.要禁用这个行为,只需要定义或者取消这个注释即可.

TMPFS_SIZE

如果 CACHE_ON_DISK没有被定义.并且tmpfs 已经被使用,这个参数会定义安装卷的大小.

NO_ARCHIVE

为了能够更好的移动活动的结果,magma默认在RUN目录存储在ar目录前就进行压缩

你可以选择禁用此项服务

CANARY_MODE

Magma的bug和工具在构建过程中可以以下三种方式来配置:

  1. 不用修复错误(包含bug的错误), 工具能够正常运行,这是默认的模式.
  2. 不用修复包含在内的bug,这对测试模糊测试器是否过度覆盖噪声,或者工具引入新的bug十分有效
  3. 可以修复(不包含bug),这对测试crash是真是假十分有效.
ISAN

Magma 包含一种理想的清理模式,一旦有bug触发就会立刻造成崩溃.这与 AddressSanitizer 在检测到内存安全违规时终止程序的策略相同。

一旦内存占用发生,这个程序就会处于不连贯的状态,可能会导致令人困惑的结果并且有可能误导后续报告的生成

通过Magma的ISan,模糊测试器评价仅限于到达和触发bug的能力,但并不包括检测他的能力.

HARDEN

在运行事件中一些bug可能会导致内存损坏并且不被检测,而我们不希望mmap的数据被破坏. Magma包含了hardened canaries模式.Magma包含一个强化的抗噪模式,当其控制在检测块以外时,mprotect是检测存储区域,具有只读权限.

POC_EXTRACT

这个 captain工具有一个脚本,可以用于对莫乎其生成的自动测试用例的自动分类.这个脚本在每个活动终止后作为后处理步骤来运行.

MAGMA

这个captain工具集依赖于同一目录的其他文件的脚本与工作集.因此,脚本尝试查找当前目录,将其存储在名为MAGMA的局部变量里边,并使用它来引用这些文件.

lscpu 与 tmpfs的名词解释

tmpfs
在平常的工作中,我们需要经常查看Linux服务器的磁盘挂载使用情况,可以使用df命令.此时会看到有一个tmpfs也在挂载.tmpfs实际上就是临时的文件系统,驻留在内存中,可以提供较高的访问速度.可以通过mount -o remount,size=777M tmpfs /dev/shm命令将tmpfs设置为777M

lscpu
使用lscpu可以获取到主机的CPU信息
请添加图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值