您現在的位置是:首頁 > 棋牌

吃驚,大神級別的駭客教你pwn二進位制安全環境搭建!

  • 由 安界 發表于 棋牌
  • 2023-01-13
簡介安裝使用如下命令:#desktopsudo apt-get install open-vm-toolssudo apt-get install open-vm-tools-desktop#server or headlesssudo apt

映象站怎麼玩

Ubuntu

換源

由於Ubuntu官方的源是國外的,所以速度很慢,要把它換成國內的映象站,那樣,不管是更新、還是安裝軟體,都是比較快的。

網易源http://mirrors。163。com/中科大源http://mirrors。ustc。edu。cn/華科大源http://mirror。hust。edu。cn/浙大源http://mirrors。zju。edu。cn/

每個開源映象站都有介紹不同版本的Linux的源的使用方式,訪問上述網址就行了。首先找到/etc/apt下的sources。list,先將其備份一個,然後將上述映象站的源替換sources。list裡的官方源並儲存。然後執行下面兩條命令:

sudo apt-get update 更新源

sudo apt-get upgrade 更新軟體

安裝open-vm-tools

前面安裝的是VMware提供的VMware Tools,但是不能自適應客戶機也不能進行檔案複製,相當於沒有安裝,哈哈哈。記得之前有一個工具可以替代VMware Tools,名字也想不起來了就上網搜了下,是open-vm-tools。而且當你安裝VMware Tools的時候也會提醒你安裝open-vm-tools。安裝前先將VMware Tools解除安裝。Ubuntu14。04及以上版本,都建議安裝這個工具。安裝使用如下命令:

#desktop

sudo apt-get install open-vm-tools

sudo apt-get install open-vm-tools-desktop

#server or headless

sudo apt-get install open-vm-tools

安裝搜狗輸入法

這個也很簡單,先下載Linux版的deb包,按照自己所安裝系統的位數下載,然後執行下面一條命令:

sudo dpkg -i deb包的名字

安裝vim

本來一條命令就可以安裝成功,但還是出現了問題,依舊是依賴問題

sudo apt-get install vim

Pwn環境搭建

基本工具

· gdb+peda+pwndbg、gcc、Pwntools、Binutils

· Capstone、gcc-multilib、socat、rp++、readelf

· ROPgaget、libc-database、objdump、file、string、checksec

Pwntools是一個CTF框架和漏洞利用開發庫,它使用Python編寫的,由rapid設計並維護,設計這個框架的目的是為了讓使用者簡單快速的編寫exploit。對Pwntools支援最好的是64bits的Ubuntu LTE Realease(12。04、14。04、16。04),所以我選擇了在Ubuntu16。04下安裝這個框架,Python環境是Python2。7。但是絕大多數的功能也支援Debian, Arch, FreeBSD, OSX, 等等。安裝Pwntools成功的前提是安裝了git、pip、Binutils、Capstone、Python-Dev等庫和工具。

安裝pip

pip是Python的一個包管理工具,用於安裝和解除安裝Python的擴充套件模組。如果你使用的Python 2 >=2。7。9或Python 3 >=3。4並且從python。org下載,那麼pip已經安裝了,但是需要升級pip

#安裝pip

sudo apt-get update #更新源

sudo apt-get install python-pip #安裝pip,可能會有依賴問題,記不清了

pip ——version #檢視pip版本,確認是否安裝成功

#升級pip

sudo pip install ——upgrade pip #Linux or MacOS

python -m pip install -U pip #windows

pip常用命令

pip ——help #檢視幫助選單

pip install packageName #安裝新的python包

pip uninstall packageName #解除安裝python包

pip search packageName #尋找python包

安裝git(分散式版本控制系統)

Git是一個開源的分散式版本控制系統,可以有效、高速的處理從很小到非常大的專案版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體(百度百科)。 透過這個工具,我們可以下載和上傳一些開源軟體的原始碼,非常方便。這些程式碼都是儲存在Github上的倉庫中。

Github與Git的區別 Git,開發者將原始碼存入名叫“Git 倉庫”的資料庫中並加以使用。而 GitHub 則是在網路上提供 Git 倉庫的一項服務。也就是說,GitHub 上公開的軟體原始碼全都由 Git 進行管理。理解 Git,是熟練運用 GitHub 的關鍵所在。

#安裝git工具

sudo apt-get install git

Capstone

Capstone介紹 Capstone是一個反彙編框架,它的目標是成為最好的反彙編引擎,它是為安全社群中的研究人員進行二進位制分析和逆向提供服務的。Core (Arm, Arm64, M68K, Mips, PPC, Sparc, SystemZ, X86, X86_64, XCore) + bindings (Python, Java, Ocaml, PowerShell)

#安裝Capstone

git clone http://github。com/aquynh/capstone #下載Capstone原始碼到本地

cd capstone

make #編譯原始檔

sudo make install #編譯並安裝

安裝Binutils

Binutils簡介 GNU Binutils 是一組開發工具,包括聯結器,彙編器和其他用於目標檔案和檔案的工具。包括下列程式: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings 和 strip。下載連結

Ubuntu16。04預設是安裝了Binutils的,所以如果版本太老了可以選擇更新一下。外國架構的組裝(例如,在Mac OS X上裝配Sparc shell)需要安裝跨編譯的binutils版本。

編譯安裝法

wget http://ftp。gnu。org/gnu/binutils/binutils-2。25。1。tar。bz2

tar -xvf binutils-2。25。1。tar。bz2

mkdir -v 。。/binutils-build #binutils官方推薦編譯binutils要和原始碼分離

cd 。。/binutils-build

。。/binutils-2。20/configure ——prefix=/tools

make #編譯

make install #編譯並安裝

pwntools-binutils安裝

git clone https://github。com/Gallopsled/pwntools-binutils

cd ubuntu

chmod +x install_all。sh

。/install_all。sh arm #your architecture

安裝Python-Dev(Python Development Headers)

Python-Dev介紹 python-dev或python-devel稱為是python的開發包,其中包括了一些用C/Java/C#等編寫的python擴充套件在編譯的時候依賴的標頭檔案等資訊。比如我們在編譯一個用C語言編寫的python擴充套件模組時,因為裡面會有#include等這樣的語句,因此我們就需要先安裝python-devel開發包。

一些Pwntools的Python依賴項需要本地擴充套件,所以必須要安裝Python-Dev。

apt-get install python-dev

安裝Pwntools

github下載安裝

git clone https://github。com/Gallopsled/pwntools

cd pwntools

python setup。py install

pip安裝

apt-get update

#可以看到有些前面已經裝過了,這是我複製pwntools手冊上的

apt-get install python2。7 python-pip python-dev git libssl-dev libffi-dev build-essential

pip install ——upgrade pip

pip install ——upgrade pwntools

如果沒報錯,進入python終端,輸入import pwn,然後回車,沒報錯應該就是安裝好了 現在嘗試一下pwntools的asm功能:

>>> pwn。asm(“xor eax,eax”)

‘1\xc0’

如果有正確輸出,即說明這個功能是可以用的,到這裡就算安裝完成。

gdb+peda+pwndbg安裝

gdb介紹 GDB(GNU Debugger)GNU開發的Unix/Linux下的除錯工具。其功能強大,現描述如下: GDB主要幫忙你完成下面四個方面的功能: 1。啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。 2。可讓被除錯的程式在你所指定的調置的斷點處停住。(斷點可以是條件表示式) 3。當程式被停住時,可以檢查此時你的程式中所發生的事。 4。動態的改變你程式的執行環境。 gdb不同於windows下的ollydbg和windbg,它是命令列下的工具,沒有圖形介面,透過輸入命令與它互動,來除錯程式,檢視程式的執行過程,這一點和windbg有點相似。也是很多致力於安全研究、漏洞發現的人的一個神器。

Ubuntu16。04是預設安裝了gdb的,可以使用gdb ——version檢視gdb的版本,如果沒有安裝可以使用下面一條命令進行安裝,也可以編譯安裝。

sudo apt-get install gdb

peda介紹 peda全稱是Python Exploit Development Assistance for GDB。PEDA是為GDB設計的一個強大的外掛它提供了很多人性化的功能,比如高亮顯示反彙編程式碼、暫存器、記憶體資訊,提高了debug的效率。同時,PEDA還為GDB添加了一些實用新的命令,比如checksec可以檢視程式開啟了哪些安全機制等等。它是用Python寫的一個工具,可以輔助編寫exp,執行在Unix/Linux系統上。

#安裝peda

git clone https://github。com/longld/peda。git ~/peda

echo “source ~/peda/peda。py” >> ~/。gdbinit

echo “DONE! debug your program with gdb and enjoy”

peda也可以透過pip安裝

sudo apt-get install pip

pwndbg介紹 Pwndbg是一個Python模組,它直接載入到GDB中,並提供了一套實用工具和一組輔助工具來繞過GDB的所有cruft,並將粗糙的邊緣平滑掉。過去的許多其他專案(如gdbinit、PEDA)和現在(例如GEF)的存在填補了這些空白。它們都提供了優秀的經驗和優秀的特性——但是它們很難擴充套件(有些是未維護的,所有的都是單個100KB、200KB或300KB檔案)。Pwndbg的存在不僅是為了取代它的所有前輩,而且還有一個快速執行的乾淨的實現。

Pwndbg支援最好的環境是: Ubuntu14。04 and GDB7。7 Ubuntu16。04 and GDB7。11

#安裝Pwndbg

git clone https://github。com/pwndbg/pwndbg

cd pwndbg

。/setup。sh

這些工具的用法打算另寫一篇文章,不然這篇文章實在是太長了。

安裝gcc-multilib

gcc-multilib gcc-multilib是Debian的64位系統下執行32位程式的一個庫,裝了這個庫就可以執行32位的程式了。

#安裝命令

sudo apt-get install gcc-multilib 或者

sudo aptitude install gcc-multilib

socat

socat socat是一個多功能的網路工具,名字來由是“ Socket CAT”,可以看作是netcat的加強版,socat是兩個獨立資料通道之間的雙向資料傳輸的繼電器。這些資料通道包含檔案、管道、裝置(終端或調變解調器等)、插座(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客戶端或代理CONNECT。Socat支援廣播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、記錄和程序間通訊的不同模式。多個選項可用於調整socat和其渠道,Socat可以作為TCP中繼(一次性或守護程序),作為一個守護程序基於socksifier,作為一個shell Unix套接字介面,作為IP6的繼電器,或面向TCP的程式重定向到一個序列線。socat的主要特點就是在兩個資料流之間建立通道;且支援眾多協議和連結方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等。(文件英文的看起來太困難,這是別人寫的,也不知道對不對,以後)

Ubuntu16。04下預設安裝有,如果沒有,需要安裝的話,看了別人的文章,好像要下載原始碼編譯安裝。

安裝rp++

rp++ rp++是一種完全用c++編寫的工具,目的是在PE/Elf/Mach-O(不支援FAT二進位制檔案)x86/x64二進位制檔案中找到ROP序列。它是開源的,已經在幾個作業系統上測試過:Debian / Windows 7 / FreeBSD / Mac OSX Lion(10。7。3)。此外,它是x64相容的。我差點忘了,它同時處理英特爾和英特爾。

#執行

chmod +x rp-lin-x64

。/rp-lin-x64

安裝ROPgadget

ROPgadget介紹 這個工具可以讓你在二進位制檔案上搜索的小工具,以方便你的ROP利用。ROPgadget支援x86、x64、ARM、ARM64、PowerPC、SPARC和MIPS體系結構的ELF/PE/Mach-O格式。從版本5開始,ROPgadget有一個新的核心,它是用Python的Capstone disassembly框架編寫的,用於gadget搜尋引擎——舊版本可以在存檔目錄中找到,但它不會被維護。

安裝ROPgadget之前需要先安裝Capstone,這個反彙編框架之前已經安裝過了。

#方法一

#安裝過capstone後,ROPgadget可以作為一個單獨的工具使用

ROPgadget。py

#方法二

#安裝到Python的站點包庫中,並且加入環境變數中

python setup。py install

ROPgadget

#方法三

#用pip安裝

pip install ropgadget

ROPgadget

libc

libc-database介紹 libc是Linux下的ANSI C的函式庫。ANSI C是基本的C語言函式庫,包含了C語言最基本的庫函式。libc-database是github上的一個倉庫,可以進行伺服器上所用函式庫版本的識別。

這裡還有一個更全的,是一個網站。libcdb。com

寫到這總算告一段落了,如果後期還有更好的工具,我會補充,就先到這吧。

Top