背景

自从换了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模拟 image.png

2、这里选择Linux image.png

3、这里选择导入ubuntu镜像,然后一直下一步,直到完成。 image.png

4、然后启动并安装ubuntu

0x01 全英文安装即可 image.png image.png 0x02 DHCP自动获取IP image.png 0x03 这里可以替换成国内的镜像源,安装完成后再替换也可以 image.png 0x04 这里是磁盘分区,默认给了多少就会显示多少 image.png 0x05 格式化警告,选择continue image.png 0x06 创建用户名密码 image.png 0x07 这里选择SSH安装,方便后面通过ssh连接,空格勾选安装,然后点Done image.png 0x08 然后一直Done下一步,直到系统完成安装。系统安装完成后,需要选择Reboot重启,重启时,要将镜像ISO推出。 image.png 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

image.png

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前面,要不然会使用默认配置。|

image.png

0x05 测试gdb

image.png

6、安装seccomp-tools(查沙盒)

sudo apt install gcc ruby-dev
sudo gem install seccomp-tools

image.png

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

image.png

12、安装 zstd

预防报错(extract脚本在解压的时候用到了zstd解压命令)提前安装

sudo apt-get install zstd

四、至此Mac上的Pwn环境部署完成