ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从零安装 QSYM:源码、Docker、Vagrant 三种方式完整教程

从零安装 QSYM:源码、Docker、Vagrant 三种方式完整教程 从零安装 QSYM源码、Docker、Vagrant 三种方式完整教程【免费下载链接】qsymQSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing项目地址: https://gitcode.com/gh_mirrors/qs/qsymQSYM 是一款面向混合模糊测试Hybrid Fuzzing的实用化符号执行Concolic Execution引擎由美国佐治亚理工学院Georgia Tech的研究团队开发发表于 2018 年 USENIX Security 会议。简单来说QSYM 能配合 AFL 这类覆盖率引导的模糊测试工具在路径探索陷入瓶颈时自动生成新的测试用例显著提升漏洞挖掘效率。本教程将手把手教你通过源码编译、Docker 容器、Vagrant 虚拟机三种方式完成 QSYM 安装无论你是安全研究新手还是资深测试工程师都能找到最适合自己的 QSYM 安装方案。QSYM 安装前的环境准备QSYM 依赖旧版本的 Intel Pin2.14进行动态二进制插桩因此对内核版本较为敏感。官方在 README.md 中注明已在Ubuntu 14.04 64 位与 16.04 64 位系统上完成测试这也是最容易跑通的环境。在开始安装之前有一项必须完成的准备工作关闭 Linux 内核的 ptrace 限制否则 Intel Pin 无法附加到目标进程。执行以下命令echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope 提示该设置在重启后会失效如需永久生效可将kernel.yama.ptrace_scope 0写入/etc/sysctl.d/下的配置文件中。Vagrant 方案里已经自动帮你处理了这一步。方式一源码安装 QSYM通用性最强源码安装适合想深入定制、或者需要在目标机器上离线部署的用户。整个流程可分为克隆仓库、安装依赖、编译安装三步。第一步克隆 QSYM 源码仓库git clone https://gitcode.com/gh_mirrors/qs/qsym cd qsym第二步一键脚本安装系统依赖与 Z3项目提供了自动化的安装脚本 setup.sh它会依次完成初始化并更新 git 子模块内含 Intel Pin、Z3 等第三方组件、安装 gcc-multilib、llvm-dev 等系统依赖、编译 64 位与 32 位两套 Z3 求解器并构建测试目录。./setup.sh⚠️ 注意setup.sh中大量操作需要 root 权限请确保当前用户具备 sudo 权限。编译 Z3 需要几分钟时间请耐心等待。第三步创建虚拟环境并安装 QSYMQSYM 的 Python 部分基于 Python 2官方推荐使用 virtualenv 隔离环境避免与系统 Python 环境互相干扰virtualenv venv source venv/bin/activate pip install .pip install .会调用 setup.py 中自定义的构建流程自动编译 Intel64 与 IA32 两套 Pintool 动态库libqsym.so并将 Intel Pin 运行库一并打包。安装完成后可执行文件会出现在bin/目录下核心模块位于 qsym/ 目录配置文件 qsym/conf.py 负责自动定位 pin.sh 与 libqsym.so 的路径。方式二Docker 安装 QSYM最快配置方法如果不想污染本机环境、或者希望快速拥有一套开箱即用的 QSYMDocker 是最优解。项目自带的 Dockerfile 基于ubuntu:16.04镜像构建时会自动执行setup.sh并完成 pip 安装无需你手动干预任何步骤。快速构建 QSYM Docker 镜像# 关闭 ptrace_scope宿主机与容器都需要 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # 构建镜像 docker build -t qsym ./启动 QSYM 容器由于 QSYM 依赖 Intel Pin 进行进程附加启动容器时必须显式授予SYS_PTRACE能力否则符号执行无法正常工作docker run --cap-addSYS_PTRACE -it qsym /bin/bash进入容器后即可直接使用 QSYM 工具链适合快速验证功能或作为 CI 流水线中的基础镜像。方式三Vagrant 安装 QSYM免折腾的虚拟机方案如果你使用的发行版与 QSYM 兼容性不佳例如新内核导致旧版 Pin 无法运行Vagrant 虚拟机方案是最省心的选择。项目在 vagrant/ 目录中提供了完整的虚拟机配置Vagrantfile基于ubuntu/xenial64即 Ubuntu 16.04镜像默认分配 4 核 CPU 与 16GB 内存。Vagrant 一键搭建步骤cd vagrant vagrant up vagrant sshvagrant up过程会自动完成安装系统依赖与 pip、克隆 QSYM 源码并执行setup.sh、安装 QSYM、编译 AFL 及其 QEMU 模式支持。首次启动需要下载虚拟机镜像耗时较长但之后即可反复使用。 官方在 vagrant/README.md 中说明虚拟机方案还会预编译 64 位 LAVA-M 测试集便于直接复现论文中的实验效果例如./qsym/bin/run_qsym.py单条用例执行与run_qsym_afl.py混合模糊测试。安装后如何验证 QSYM 是否可用无论采用哪种方式都可以用以下命令快速验证安装是否成功cd tests python build.py python -m pytest -n $(nproc)测试集覆盖了 ADD、SUB、DIV、CMP、条件跳转、MMX/SSE 指令等大量 x86 指令语义全部通过即代表 QSYM 的核心执行引擎工作正常。接下来你可以尝试将 QSYM 接入 AFL 做混合模糊测试。以 README.md 中的示例为准需要配置 5 个环境变量AFL_ROOT、INPUT、OUTPUT、AFL_CMDLINE、QSYM_CMDLINE然后分别启动 AFL master、AFL slave 与 QSYM 协同进程核心命令参考 bin/run_qsym_afl.py。QSYM 安装常见问题与排查1. 报错undefined symbol: Z3_is_seq_sortpin.log 中出现这是最常见的坑。原因在于目标程序没有在 QSYM 的虚拟环境venv内编译导致二进制链接到了系统自带的旧版 Z3。解决办法先激活 venv 环境再编译目标程序然后在该环境下运行 QSYM。2. 提示 ptrace_scope 不为 0检查是否执行了echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope。若已执行仍报错请确认当前 shell 与 QSYM 进程在同一命名空间中。3. 新内核上 Pin 运行异常QSYM 依赖旧版 Intel Pin 2.14在新内核上可能无法附加进程。此时优先推荐改用 Docker 或 Vagrant 方案在受控的 Ubuntu 16.04 环境中运行。4. Docker 容器内无法附加目标进程务必在docker run时添加--cap-addSYS_PTRACE参数否则容器内缺少 ptrace 权限。三种 QSYM 安装方式怎么选安装方式上手难度环境隔离适用场景源码安装⭐⭐⭐依赖 venv定制开发、离线部署Docker⭐完全隔离快速试用、CI 集成Vagrant⭐⭐虚拟机隔离内核兼容性差、跑 LAVA 实验总结如果你是第一次接触 QSYM建议从 Docker 方案入手几分钟即可体验混合模糊测试的威力若要在生产环境长期使用源码安装配合 Ubuntu 16.04 是最稳妥的组合而想要复现论文实验、研究 QSYM 与 AFL 协同机制的同学Vagrant 虚拟机则是最省事的全家桶。希望这份 QSYM 安装教程能帮你顺利迈出混合模糊测试的第一步【免费下载链接】qsymQSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing项目地址: https://gitcode.com/gh_mirrors/qs/qsym创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表