系统相关
首页 > 系统相关> > 基于Ubuntu搭建Pwn调试环境

基于Ubuntu搭建Pwn调试环境

作者:互联网

Pwn环境配置

本文演示使用干净的Vmware下安装的的 Ubuntu 18.04 LTS镜像 配置以下Pwn环境:

为了一些命令可以让大家通用,所以都会加上sudo等权限语句,这样即便你不使用root账户或挑选任何一个小节直接观看和执行命令都是没有问题的

Ubuntu 18.04是一个常用的版本,即便是更高的版本以下安装方式都是可用的。

我当前用的是Ubuntu18.04.6目前使用的是glibc2.27版本,还是主流的PWN Pwn题中的版本,所以选了这个

# 查看glibc版本
ldd --version

image-20220518105246251

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

image-20220517155818188

然后打开一个终端,将当前用户临时切换为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

image-20220517162616646

# 切换到解压后的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

image-20220517163335776

安装net-tools

Linux网络基础工具。构成Linux操作系统NET-3网络分布的基础程序集。

net-tools提供了基本的网络相关操作,如ifconfig,而Ubuntu默认没有安装net-tools,所以这里安装一下

# 临时切换到root权限
sudo su

# 更新软件索引并安装net-tools工具
apt update && apt install net-tools

image-20220517170528043

安装完成后,可以执行一下ifconfig命令来验证是否安装成功

image-20220517170740678

安装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

image-20220517171136138

重启后,可自由 宿主机<->虚拟机 拖拽文件、复制粘贴等快捷键

image-20220517164400402

替换软件源

软件源是指linux系统在线安装的软件包的来源,是操作系统官方发布的软件安装包的一个集合,即应用程序安装仓库。

这里官方源真的太慢了老是安装软件失败,还是换成阿里云的Ubuntu软件源吧

# 临时切换root权限
sudo su 

# 备份apt软件源
cp /etc/apt/sources.list /etc/apt/sources.list.old

# 编辑sources.list文件
vi /etc/apt/sources.list

image-20220517171927662

命令模式下使用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

image-20220517172348157

可以看到包含阿里云的地址,表示更换源成功

安装vim

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。

Ubuntu系统默认带了vi编辑器,但是vim更好用所以安装vim

# 临时切换到root权限
sudo su

# 安装
apt update && apt install vim

image-20220517172729392

选择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:

image-20220517154004294

提示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

image-20220517173811667

然后:wq 退出即可

# 编辑gdm-autologin文件 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-autologin

image-20220517174123656

然后:wq保存退出即可

# 编辑gdm-password 然后把标红的那一行注释掉
vim /etc/pam.d/gdm-password

image-20220517174251769

然后:wq保存退出即可

# 编辑.profile文件
vim /root/.profile

image-20220517174419406

# 将原来的 mesg n || true注释掉,然后替换成tty -s&&mesg n || true
# 如果没有mesg n || true,那么就在文件末尾添加tty -s&&mesg n || true
tty -s&&mesg n || true

image-20220517174558975

然后:wq保存退出即可

重启系统,即可使用root账户登录,点Not listed,Username 输入 root,Password输入账户密码即可

image-20220517174831363

image-20220517174924160

image-20220517174948252

此时再次打开的终端就是root权限的了,这是因为我们当前登录的用户是root

image-20220517175115055

其它环境配置

安装git

Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到大型项目的一切事务。

平常使用的最多的功能是可以拉取github、gitee等开源社区的项目

# 更新软件索引并安装git工具
sudo apt update && apt install git

image-20220517175918912

检查以下安装是否成功

# git检查版本命令 用来验证安装是否成功
git --version

image-20220517180023716

有类似这样的输出表示安装成功

安装gcc

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。

对于个人用户或开发者而言主要可以用来编译一些c语言代码,自己想要编写一些demo的时候需要gcc进行编译

# 使用root权限安装gcc
sudo apt update && apt install gcc

# 安装完成后使用命令验证安装是否成功
gcc --version

image-20220517181533203

安装python3-pip

pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。

python包管理工具

# 安装pip
sudo apt update && apt install python3-pip

# 安装完成后使用命令验证安装是否成功
pip3 --version

image-20220517213853047

安装python3

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

python运行环境,这就不用解释了吧,运行python代码的

# 安装python
sudo apt update && apt install python3

# 安装完成后使用命令验证安装是否成功
python3 --version

image-20220517214322640

安装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

image-20220517214713261

安装gdb-multiarch

用作gdb客户端进行调试,是任何架构的通用客户端

# 安装gdb-multiarch
sudo apt update && sudo apt install gdb-multiarch

# 安装完成后使用命令验证安装是否成功
gdb-multiarch --version

image-20220517215209859

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

image-20220518084824767

安装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的时候:

image-20220518103728780

image-20220518104146480

使用peda:

image-20220518104619766

image-20220518104719087

使用gef:

image-20220518104748481

image-20220518104812393

安装seccomp-tools

seccomp-tools可以分析程序的seccomp状态,哪些被系统被禁用了安装

该项目旨在(但不限于)分析CTF pwn挑战中的seccomp沙盒。有些特性可能是特定于ctf的,但对于分析真实情况下的seccomp仍然有用

# 安装seccomp-tools
gem install seccomp-tools

# 安装完成后检查安装是否成功
seccomp-tools --version

image-20220518105956313

安装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

image-20220518111241855

image-20220518111216459

安装patchelf

patchelf 是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH

这个真的是非常滴好用,因为在做题的时候无法避免会出现多版本libc题的情况,但是如果按照libc版本重装多个虚拟机的话实在是太费劲了,patchelf就可以直接修改题目所需的libc

# 更新索引并安装patchelf
sudo apt update && apt install patchelf 

# 验证安装是否成功
patchelf --version

image-20220518111457150

安装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

有以下内容说明安装成功

image-20220518113622872

安装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

有以下内容说明安装成功

image-20220518113746453

安装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-

有以下内容说明安装成功

image-20220518114234351

安装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

有以下内容说明安装成功

image-20220518114412626

安装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

有以下内容说明安装成功

image-20220518114640470

安装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

有以下内容说明安装成功

image-20220518114834781

标签:gcc,root,Ubuntu,apt,tools,linux,Pwn,安装,调试
来源: https://www.cnblogs.com/erosion2020/p/16285910.html