背景
自从换了mac后,很多安全的环境需要重新搭建。Pwn的环境一直没有在本地去部署,受限于Mac M芯片arm架构的原因,直接在本地环境安装Pwn环境会有一些问题,在最近的二进制安全学习中,终于沉下心来把Pwn的环境部署完成。
一、虚拟机选择
Pwn环境的最佳部署环境是X86的架构下部署,而现在的Mac都是arm架构的,所以这里选择用UTM虚拟机安装Ubuntu来模拟进行模拟。Pwntools官方文档说明在64位Ubuntu LTS 版本(22.04 和 24.04)上运行受到最佳的支持,为了更顺畅的运行,这里选择ubuntu server 22.04,桌面版不推荐。
UTM:https://github.com/utmapp/UTM Ubuntu:https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso
二、UTM安装Ubuntu
1、开始的时候这里选择CPU模拟
2、这里选择Linux
3、这里选择导入ubuntu镜像,然后一直下一步,直到完成。
4、然后启动并安装ubuntu
0x01 全英文安装即可
0x02 DHCP自动获取IP
0x03 这里可以替换成国内的镜像源,安装完成后再替换也可以
0x04 这里是磁盘分区,默认给了多少就会显示多少
0x05 格式化警告,选择continue
0x06 创建用户名密码
0x07 这里选择SSH安装,方便后面通过ssh连接,空格勾选安装,然后点Done
0x08 然后一直Done下一步,直到系统完成安装。系统安装完成后,需要选择Reboot重启,重启时,要将镜像ISO推出。
0x09 等待重启完成后,根据安装过程中显示的IP,可以SSH登录到虚拟机,如果没注意,可以用以下命令进行查看。
ip addr
或者安装net-tools工具,通过ifconfig查看IP。
sudo apt install net-tools
三、正式部署Pwn环境
1、安装pip
sudo apt-get install python3-pip
2、安装必要的依赖
sudo apt install libssl-dev libffi-dev build-essential git vim
3、安装pwntools
pip3 install pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple
4、设置环境变量
pwntools安装完成后,会得到checksec和ROPgedget工具,但在运行checksec时,会提示没有找到,需要先设置一下环境变量,然后运行checksec就可以了。
#查看当前环境变量
echo $PATH
#在~/.bashrc内添加
export PATH=$PATH:/home/用户名/.local/bin
source ~/.bashrc
5、安装gdb插件
mkdir tools
cd tools
0x01 下载 peda
git clone https://github.com/longld/peda.git
0x02 下载Pwngdb
git clone https://github.com/scwuaptx/Pwngdb.git
0x03 下载安装pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg/
./setup.sh
0x04 配置插件
#tools目录下
cp Pwngdb/.gdbinit ~
vim ~/.gdbinit
#打开文件后文件内容修改如下,注释掉第一行,然后添加source ~/tools/pwndgb/gdbinit.py
#一定要在source ~/Pwngdb/angelheap/gdbinit.py前面,要不然会使用默认配置。|
0x05 测试gdb
6、安装seccomp-tools(查沙盒)
sudo apt install gcc ruby-dev
sudo gem install seccomp-tools
7、安装ropper
pip3 install ropper
8、安装qemu(系统内核)
sudo apt-get install qemu-user qemu-system
9、安装glibc-all-in-one
git clone https://github.com/matrix1001/glibc-all-in-one.git
cd glibc-all-in-one
vim update_list
改为#!/usr/bin/python3
0x01 使用方法
#更新最新版本的glibc
./update_list
#查看可下载的glibc
cat list
#根据题目所给的libc,找对应版本的连接器,并下载该连接器
./download 2.23-0ubuntu11.3_amd64
#下载好的libc就在libs目录下
ls libs/2.23-0ubuntu11.3_amd64/
#把ld文件和libc复制到pwn题目录下
#一般来说使用时把标记的ld-2.23.so和libc-2.23.so拷贝在程序目录下即可
#.debug文件用于gdb调试
#在gdb设置setdebugf
10、安装patchelf
sudo apt-get install patchelf
0x01 使用方法
#查看题目原来的libc和ld,“easyheap”为可执行程序 此处为例子
ldd easyheap
#替换libc
patchelf --replace-needed libc.so.6 ./libc-2.23.so ./easyheap
#设置ld文件
patchelf --set-interpreter ./ld-2.23.so ./easyheap
11、安装one_gadget
sudo gem install one_gadget
12、安装 zstd
预防报错(extract脚本在解压的时候用到了zstd解压命令)提前安装
sudo apt-get install zstd
...