1. 程式人生 > 其它 >基於Ubuntu搭建Pwn除錯環境

基於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

有以下內容說明安裝成功