基于Ubuntu搭建Pwn调试环境
作者:互联网
Pwn环境配置
本文演示使用干净的Vmware下安装的的 Ubuntu 18.04 LTS镜像 配置以下Pwn环境:
- OS(系统)配置
- VMware Tools
- net-tools
- open-vm-tools
- 更换软件源
- vim
- 开启root账户权限
- 其它环境配置
- git
- gcc
- python3-pip
- python3
- qemu
- gdb-multiarch
- Pwn工具
- pwn-tools
- pwndbg、peda、gef
- seccomp-tools
- LibcSearcher
- patchelf
- ARM PWN
- gcc-arm-linux-gnueabi
- gcc-aarch64-linux-gnu
- MIPS PWN
- gcc-mips-linux-gnu
- gcc-mipsel-linux-gnu
- gcc-mips64-linux-gnuabi64
- gcc-mips64el-linux-gnuabi64
为了一些命令可以让大家通用,所以都会加上sudo等权限语句,这样即便你不使用root账户或挑选任何一个小节直接观看和执行命令都是没有问题的
Ubuntu 18.04是一个常用的版本,即便是更高的版本以下安装方式都是可用的。
我当前用的是Ubuntu18.04.6目前使用的是glibc2.27版本,还是主流的PWN Pwn题中的版本,所以选了这个
# 查看glibc版本
ldd --version
Ubuntu OS配置
需要下载操作系统和虚拟机的小伙伴一定要认准官网啊,毕竟大家可是搞安全的,要专业!(๑•̀ㅂ•́)و✧
Ubuntu官网:https://ubuntu.com/
VMware Workstation:https://www.vmware.com/
安装Vmware Tools
VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序。
选中当前操Ubuntu虚拟机,点击菜单栏虚拟机-> 安装 Vmware Tools
然后打开一个终端,将当前用户临时切换为root账户
# 临时切换root用户权限
sudo su
# vmware-tools被放在/media/用户/VMware Tools目录下,使用命令将其进行解压,然后输出到/tmp目录下,因为media目录下是只读的
tar -zxvf /media/用户名/VMware\ Tools/VMwareTools-xx.x.xx-xxxxx.tar.gz -C /tmp
# 切换到解压后的vmware-tools目录下
cd /tmp/vmware-tools-distrib/
# 执行vmware-install.pl文件
./vmware-install.pl
# 提示是否要安装open-vm-tools[Do you still want to proceed with this installation?] 这里选择yes
yes
# 安装完成后重启系统
reboot
安装net-tools
Linux网络基础工具。构成Linux操作系统NET-3网络分布的基础程序集。
net-tools提供了基本的网络相关操作,如ifconfig,而Ubuntu默认没有安装net-tools,所以这里安装一下
# 临时切换到root权限
sudo su
# 更新软件索引并安装net-tools工具
apt update && apt install net-tools
安装完成后,可以执行一下ifconfig命令来验证是否安装成功
安装open-vm-tools
open-vm-tools 是VMwareTools 的开源实现,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能。
open-vm-tools提供VMware 虚拟机文件复制、复制粘贴功能
# 更新软件索引并移除系统中安装过的open-vm-tools
sudo apt update && apt autoremove open-vm-tools
# 安装open-vm-tools --安装过程中一路默认回车即可
sudo apt install open-vm-tools-desktop
# 安装完成后,重启系统
reboot
重启后,可自由 宿主机<->虚拟机 拖拽文件、复制粘贴等快捷键
替换软件源
软件源是指linux系统在线安装的软件包的来源,是操作系统官方发布的软件安装包的一个集合,即应用程序安装仓库。
这里官方源真的太慢了老是安装软件失败,还是换成阿里云的Ubuntu软件源吧
# 临时切换root权限
sudo su
# 备份apt软件源
cp /etc/apt/sources.list /etc/apt/sources.list.old
# 编辑sources.list文件
vi /etc/apt/sources.list
命令模式下使用dG即可清空文件中的所有内容,然后将以下内容复制到vi中,Ubuntu中粘贴快捷键为ctrl + shift + v
# 阿里源
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
然后使用:wq进行保存并退出操作
# 执行该命令验证一下源更换是否成功
apt update
可以看到包含阿里云的地址,表示更换源成功
安装vim
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。
Ubuntu系统默认带了vi编辑器,但是vim更好用所以安装vim
# 临时切换到root权限
sudo su
# 安装
apt update && apt install vim
选择Y即可
开启root账户
Root,也称为根用户,是Unix(如Solaris、AIX、BSD)和类UNIX系统(如Linux、QNX等),及Android和iOS移动设备系统中的唯一的超级用户,
开启Ubuntu root权限 -> Ubuntu默认禁用root账户,只能临时使用root权限,这样不方便我们个人使用所以开启root账户
首先重置root密码
# 重置root账户密码
sudo passwd root
# 输入当前用户密码
# [sudo] password for xxx:
# 输入要设置的root账户密码
# Enter new UNIX password:
# 重新输入root账户密码
# Retype new UNIX password:
提示passwd: password updated successfully 表示密码修改完成
打开/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件,文件末尾增加两行:
# 临时切换root权限
sudo su
# 使用vim编辑器打开该文件
vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
# 将以下内容追加到文件中
greeter-show-manual-login=true
all-guest=false
然后:wq 退出即可
# 编辑gdm-autologin文件 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-autologin
然后:wq保存退出即可
# 编辑gdm-password 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-password
然后:wq保存退出即可
# 编辑.profile文件
vim /root/.profile
# 将原来的 mesg n || true注释掉,然后替换成tty -s&&mesg n || true
# 如果没有mesg n || true,那么就在文件末尾添加tty -s&&mesg n || true
tty -s&&mesg n || true
然后:wq保存退出即可
重启系统,即可使用root账户登录,点Not listed,Username 输入 root,Password输入账户密码即可
此时再次打开的终端就是root权限的了,这是因为我们当前登录的用户是root
其它环境配置
安装git
Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的一切事务。
平常使用的最多的功能是可以拉取github、gitee等开源社区的项目
# 更新软件索引并安装git工具
sudo apt update && apt install git
检查以下安装是否成功
# git检查版本命令 用来验证安装是否成功
git --version
有类似这样的输出表示安装成功
安装gcc
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。
对于个人用户或开发者而言主要可以用来编译一些c语言代码,自己想要编写一些demo的时候需要gcc进行编译
# 使用root权限安装gcc
sudo apt update && apt install gcc
# 安装完成后使用命令验证安装是否成功
gcc --version
安装python3-pip
pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。
python包管理工具
# 安装pip
sudo apt update && apt install python3-pip
# 安装完成后使用命令验证安装是否成功
pip3 --version
安装python3
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
python运行环境,这就不用解释了吧,运行python代码的
# 安装python
sudo apt update && apt install python3
# 安装完成后使用命令验证安装是否成功
python3 --version
安装qemu
Qemu可以看成一款虚拟机,他可以模拟很多CPU架构。
QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛
# 安装qemu
sudo apt update && sudo apt install qemu-user qemu-system
# 安装完成后使用命令验证安装是否成功
qemu-system-x86_64 --version
安装gdb-multiarch
用作gdb客户端进行调试,是任何架构的通用客户端
# 安装gdb-multiarch
sudo apt update && sudo apt install gdb-multiarch
# 安装完成后使用命令验证安装是否成功
gdb-multiarch --version
Pwn工具
在主目录下创建一个存放pwn工具的目录,如env,这样就能将工具文件统一进行管理
# 在主目录下创建Env(envirment)文件夹
mkdir ~/Env
安装pwntools
pwntools是一个CTF框架和漏洞利用开发库,用Python开发,旨在让使用者简单快速的编写exploit。
pwntools有两种安装方法,一种是git项目后安装,另一种是pip直接安装。这里我们把pwntools git下来,但是用pip安装,因为后续的工具需要pwntools项目包里的脚本,pip安装不会出错。安装过程时间较长,保持网络状态良好
# clone git仓库源码
git clone https://github.com/Gallopsled/pwntools.git
sudo apt update && apt install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
pip3 list | grep pwntools
安装pwndbg、peda、gef
pwndbg是一个gdb的插件,在ctf中pwn题目中使用非常方便,尤其是对堆的查看,有很多独有的指令。
peda一款实用的GDB插件 增强gdb的显示:在调试过程中着色并显示反汇编代码,寄存器和内存信息。
gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。gef做为gdb的一个插件,方便快速调试使用。
# 拉取代码 -> 如果拉取不下来的话,可以先把这三个项目frok到自己的github仓库,然后使用ssh拉取即可
# -> 或者使用代理网络等
git clone https://github.com/pwndbg/pwndbg.git
git clone https://github.com/longld/peda.git
git clone https://github.com/hugsy/gef.git
# 切换到pwndbg目录下
cd ~/tools/pwndbg
# 安装
./setup.sh
# 安装依赖插件
pip3 install keystone-engine ropper keystone-engine
# 可以通过编辑gdbinit挂载插件
vim ~/.gdbinit
# 这个根据自己的目录来就可以了
source /root/Env/pwndbg/gdbinit.py
#source /root/Env/peda/peda.py
#source /root/Env/gef/gef.py
#选中任意一个脚本后,输入gdb即可使用
gdb
选择其中任何一个插件后,然后将其它两个插件注释掉就好了,比如想使用pwndbg的时候:
使用peda:
使用gef:
安装seccomp-tools
seccomp-tools可以分析程序的seccomp状态,哪些被系统被禁用了安装
该项目旨在(但不限于)分析CTF pwn挑战中的seccomp沙盒。有些特性可能是特定于ctf的,但对于分析真实情况下的seccomp仍然有用
# 安装seccomp-tools
gem install seccomp-tools
# 安装完成后检查安装是否成功
seccomp-tools --version
安装LibcSearcher
LibcSearcher是针对pwn做的python库,在做pwn题时寻找libc版本非常好用,使用方式也非常简单
这是针对CTF比赛所做的小工具,在泄露了Libc中的某一个函数地址后,常常为不知道对方所使用的操作系统及libc的版本而苦恼,常规方法就是挨个把常见的Libc.so从系统里拿出来,与泄露的地址对比一下最后12位(LibcSearcher自带libc-database)
# 克隆代码
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
# 安装
python3 setup.py develop
# 查看是否安装成功
pip3 list | grep LibcSearcher
安装patchelf
patchelf 是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH
这个真的是非常滴好用,因为在做题的时候无法避免会出现多版本libc题的情况,但是如果按照libc版本重装多个虚拟机的话实在是太费劲了,patchelf就可以直接修改题目所需的libc
# 更新索引并安装patchelf
sudo apt update && apt install patchelf
# 验证安装是否成功
patchelf --version
安装ARM PWN
基于ARM架构的PWN
ARM软件包 -> 具备ARM交叉编译gcc与ARM程序动态链接库
安装gcc-arm-linux-gnueabi
适用于 Arm Cortex-A 系列芯片,针对 32 位芯片,使用的是 glibc 库。可以用来编译 u-boot、linux kernel 以及应用程序。
# 安装gcc-arm-linux-gnueabi
sudo apt update && apt install gcc-arm-linux-gnueabi
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
arm-linux-gnueabi
有以下内容说明安装成功
安装gcc-aarch64-linux-gnu
适用于 Arm Cortex-A 系列芯片,针对 64 位芯片,使用的是 glibc 库。可以用来编译 u-boot、linux kernel 以及应用程序。
# 安装gcc-aarch64-linux-gnu
sudo apt update && apt install gcc-aarch64-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
aarch64-linux-gnu
有以下内容说明安装成功
安装MIPS PWN
基于MIPS架构的PWN
具备MIPS交叉编译gcc与MIPS程序动态链接库
安装gcc-mips-linux-gnu
这是一个依赖包,为mips架构提供默认的GNU C交叉编译器。
# 安装gcc-mips-linux-gnu
sudo apt update && apt install gcc-mips-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips-linux-gnu-
有以下内容说明安装成功
安装gcc-mipsel-linux-gnu
这是一个为mipsel架构提供默认GNU C交叉编译器的依赖包。
# 安装gcc-mipsel-linux-gnu
sudo apt update && apt install gcc-mipsel-linux-gnu
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mipsel-linux-gnu
有以下内容说明安装成功
安装gcc-mips64-linux-gnuabi64
这是一个依赖包,为mips64架构提供默认的GNU C交叉编译器。
# 安装gcc-mips64-linux-gnuabi64
sudo apt update && apt install gcc-mips64-linux-gnuabi64
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips64-linux-gnuabi64
有以下内容说明安装成功
安装gcc-mips64el-linux-gnuabi64
这是一个依赖包,为mips64el架构提供默认的GNU C交叉编译器。
# 安装gcc-mips64el-linux-gnuabi64
sudo apt update && apt install gcc-mips64el-linux-gnuabi64
# 输入Y继续安装
Y
# 输入以下内容然后按下tab键盘进行补全
mips64el-linux-gnuabi64
有以下内容说明安装成功
标签:gcc,root,Ubuntu,apt,tools,linux,Pwn,安装,调试 来源: https://www.cnblogs.com/erosion2020/p/16285910.html