Pwn环境搭建——Ubuntu16.04

有点无语,Ubuntu虚拟机崩了,据我估计应该是VMware14的问题。
虚拟机打不开,一直黑屏状态,实在没办法了才删了重新装一遍。
写这篇博客的目的就是记录一下安装的过程和安装中遇到的问题!!!

  前面我的虚拟机是用 VMware12pro建的,然后重新安装了物理机的系统,就把VMware换成VMware14pro了。前一段时间,一个朋友问我遇到过虚拟机黑屏打不开是怎么回事,因为之前也没遇到过,所以我也不知道。直到最近我才遇到了这个问题,因为之前用VMware12建的,不知道是因为在VMware14下打开VMware12的虚拟机导致的(硬件兼容性),还是由于VMware14本身的原因。我在网上搜索了一下,很多用VMware14的人都遇到过这种问题,也找到了一些解决方法,但是我都没成功,所以只能狠心重装了。

Ubuntu基本环境搭建

环境描述:
1、VMware Workstations 12 Pro 下载地址:https://pan.baidu.com/s/11HZr3mv5GX1lCjmv1_ZuIQ
2、Ubuntu16.04 下载地址:https://www.ubuntu.com/download/desktop
3、换源
4、VMware-Tools、aptitude、vim、搜狗输入法、oh-my-zsh等软件的安装

Ubuntu16.04虚拟机的安装

这样的文章很多,我就不写了,写了也没啥意义,还浪费时间。这里粘一个别人写的文章的链接。VMware 12Pro安装Ubuntu16.04

换源

由于Ubuntu官方的源是国外的,所以速度很慢,要把它换成国内的镜像站,那样,不管是更新、还是安装软件,都是比较快的。

官方源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
deb http://cn.archive.ubuntu.com/ubuntu/ xenial universe
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates universe
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial-updates universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
# deb http://archive.canonical.com/ubuntu xenial partner
# deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
# deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

就贴一个官方的,网上搜了下也没搜见完整的官方源,我把注释都去了

源名称 源链接
清华源 https://mirrors.tuna.tsinghua.edu.cn/
网易源 http://mirrors.163.com/
中科大源 http://mirrors.ustc.edu.cn/
阿里源 https://opsx.alibaba.com/mirror/
搜狐源 http://mirrors.sohu.com/
华科大源 http://mirror.hust.edu.cn/
浙大源 http://mirrors.zju.edu.cn/
上海交大源 http://ftp.sjtu.edu.cn/

每个开源镜像站都有介绍不同版本的Linux的源的使用方式,访问上述网址就行了。首先找到/etc/apt下的sources.list,先将其备份一个,然后将上述镜像站的源替换sources.list里的官方源并保存。然后执行下面两条命令:

1
2
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及以上版本,都建议安装这个工具。安装使用如下命令:

1
2
3
4
5
#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

安装完重启就可以进行文件复制,并且可以自适应客户机。安装过程可参考这篇文章
https://jingyan.baidu.com/article/54b6b9c0982f2f2d593b4762.html

安装aptitude(Debian系统的包管理工具)

Ubuntu是基于Debian的一个Linux发行版。

aptitude介绍
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。(百度百科)

安装aptitude很简单,只需一条命令即可

1
sudo apt-get install aptitude

但是我遇到了软件包依赖缺失,导致安装不成功。上网搜了下,说换成官方源可以,就换成官方源试了试,果然成功安装,666。换完源执行以下两条命令:

1
2
sudo apt-get update 更新源
sudo apt-get install aptitude 安装aptitude

安装搜狗输入法

这个也很简单,先下载Linux版的deb包,按照自己所安装系统的位数下载,然后运行下面一条命令:

1
sudo dpkg -i deb包的名字

但是会出错,因为有依赖问题,解决方案可以看这两篇博客
Ubuntu 16.04 LTS安装sogou输入法详解
Ubuntu16.04安装搜狗输入法

安装vim

本来一条命令就可以安装成功,但还是出现了问题,依旧是依赖问题

1
sudo apt-get install vim

参考链接:http://www.cnblogs.com/wangyarui/p/6055369.html
记得还有一个问题,当时也没记录,当时是安装完aptitude,源是官方的,然后没安装成功,换成清华源后安装成功了。

安装zsh与oh-my-zsh

我安装这个是为了看起来更加舒服一点,查了一下,zsh的功能很强大,可以说比普通的bash shell好用多了,有兴趣的可以看看。oh-my-zsh具有各种各样的主题,超好看。我用的是agnoster主题,安装完有乱码,是字体的原因,需要安装powerline字体。一些链接如下:
oh-my-zsh官网

oh-my-zsh源码和主题

powerline字体

安装参考链接

问题
curl: (7) Failed to connect to 127.0.0.1 port 35787: 拒绝连接
这个是由于啥时候设置了代理,取消了就好了,很迷(应该不是我设的)
建议
zsh在root用户和普通用户下都可以设置,但只建议设置普通用户下的

Pwn环境搭建

基本工具

  • gdb+peda+pwndbg、gcc、Pwntools、Binutils
  • Capstone、gcc-multilib、socat、rp++、readelf
  • ROPgaget、libc-database、objdump、file、string、checksec

这么多工具,其实这才是一点点,还有好多工具现在我还不知道。先说一下Pwntools吧。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

1
2
3
4
5
6
7
#安装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常用命令

1
2
3
4
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 的关键所在。

1
2
#安装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)

1
2
3
4
5
#安装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版本。

编译安装法

1
2
3
4
5
6
7
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 --target=$LFS_TGT --disable-nls --disable-werror
make #编译
make install #编译并安装

configure参数可参照这个链接。http://www.jinbuguo.com/linux/glibc-gcc-binutils.html

Pwntools手册提供的方法

1
2
3
4
$ apt-get install software-properties-common
$ apt-add-repository ppa:pwntools/binutils
$ apt-get update
$ apt-get install binutils-$ARCH-linux-gnu # $ARCH代表处理器架构

试了apt-get install binutils-x86_64-linux-gnu,显示找不到安装包。看了pcat大佬的博客知道了在github上有一个pwntools-binutils的项目。

pwntools-binutils安装

1
2
3
4
git clone https://github.com/Gallopsled/pwntools-binutils
cd ubuntu
chmod +x install_all.sh
./install_all.sh arm #your architecture
成功安装 未成功安装
binutils-aarch64-linux-gnu binutils-arm-linux-gnu
binutils-alpha-linux-gnu binutils-avr-linux-gnu
binutils-hppa-linux-gnu binutils-cris-linux-gnu
binutils-m68k-linux-gnu binutils-ia64-linux-gnu
binutils-mips-linux-gnu binutils-mips64-linux-gnu
binutils-powerpc-linux-gnu binutils-msp430-linux-gnu
binutils-powerpc64-linux-gnu binutils-s390-linux-gnu
binutils-sparc-linux-gnu
binutils-vax-linux-gnu
binutils-xscale-linux-gnu
binutils-i386-linux-gnu
binutils-x86_64-linux-gnu

没安装的我在这个网站搜了一下也没搜到。https://packages.ubuntu.com/

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

1
apt-get install python-dev

可能会无法安装,依赖问题,用aptitude替换apt-get进行安装,成功安装。

1
sudo aptitude install python-dev

安装Pwntools

github下载安装

1
2
3
git clone https://github.com/Gallopsled/pwntools
cd pwntools
python setup.py install

pip安装

1
2
3
4
5
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功能:

1
2
>>> 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的版本,如果没有安装可以使用下面一条命令进行安装,也可以编译安装。

1
sudo apt-get install gdb

peda介绍
peda全称是Python Exploit Development Assistance for GDB。PEDA是为GDB设计的一个强大的插件它提供了很多人性化的功能,比如高亮显示反汇编代码、寄存器、内存信息,提高了debug的效率。同时,PEDA还为GDB添加了一些实用新的命令,比如checksec可以查看程序开启了哪些安全机制等等。它是用Python写的一个工具,可以辅助编写exp,运行在Unix/Linux系统上。

1
2
3
4
#安装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安装

1
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

1
2
3
4
#安装Pwndbg
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

这些工具的用法打算另写一篇文章,不然这篇文章实在是太长了。

安装gcc-multilib

gcc-multilib
gcc-multilib是Debian的64位系统下运行32位程序的一个库,装了这个库就可以运行32位的程序了。

1
2
3
#安装命令
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兼容的。我差点忘了,它同时处理英特尔和英特尔。

下载链接

1
2
3
#运行
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,这个反汇编框架之前已经安装过了。

1
2
3
4
5
6
7
8
9
10
11
#方法一
#安装过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

写到这总算告一段落了,如果后期还有更好的工具,我会补充,就先到这吧。

文章目录
  1. Ubuntu基本环境搭建
    1. Ubuntu16.04虚拟机的安装
    2. 换源
    3. 安装open-vm-tools
    4. 安装aptitude(Debian系统的包管理工具)
    5. 安装搜狗输入法
    6. 安装vim
    7. 安装zsh与oh-my-zsh
  2. Pwn环境搭建
    1. 安装pip
    2. 安装git(分布式版本控制系统)
    3. Capstone
    4. 安装Binutils
    5. 安装Python-Dev(Python Development Headers)
    6. 安装Pwntools
    7. gdb+peda+pwndbg安装
    8. 安装gcc-multilib
    9. socat
    10. 安装rp++
    11. 安装ROPgadget
    12. libc