Linux Kernel Exploit Environment



环境配置:

  • 主机MacosX
  • 虚拟机Ubuntu 12.04 x86
  • qemu
  • linux-2.6.32
  • busybox 1.19.4

Qemu

下载Ubuntu-12.04-x86,网址 Ubuntu 12.04.3 LTS (Precise Pangolin)
下载后会提示是否升级14.04,选择否,不更新内核,但是要更新源,即apt-get update
这样可以顺利安装qemu

qemu顺利启动,需要在虚拟机fusion中开启Intel虚拟机化选项

编译linux内核

我们编译的内核版本是linux-2.6.32,因为ubuntu 版本比较低,这样编译的成本低,不会这么多的错误

其中在make阶段了报错:

1.

Kernel Compile Error: gcc: error: elf_i386: No such file or directory

2.

page 名称重复,cd 到drivers/net/igbvf/修改igbvf.h为:

编译busy-box

BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。
使用busy-box主要是因为它集成了常用的工具,并且方便向磁盘中添加文件,可以快速生成.img镜像文件,与Qemu组合起来简单。

使用busy-box的版本为

注意将busybox build为静态文件,因为qemu中不带有任意动态.so库
make error:
make menuconfig时去掉如下选项

启动Qemu

启动qemu之前,我们需要制作一个简易的文件系统:
在busy-box的根目录下建立_install,作为目录

添加在etc中增加inittab文件,内容如下:

增加etc/init.d/rcS文件,内容如下:

上述过程与linux启动相关,/etc/inittabrcS做系统的初始化工作,诸如:加载shell,mount磁盘等等
下面生成.img文件

使用下述命令即可顺利启动:


其中-kernel 指定内核地址,即我们编译好的linux内核
-initrd 指定镜像,即busy-box生成的rootfs.img
-append 是在系统启动后指定的配置

最终配置

我将linux内核文件夹,busy-box文件夹共同放在x86目录下:
我们将该命令简化为shell脚本,这样每次我们执行该sh即可启动Qemu:
boot.sh

其中-m指定内存RAM大小为128M
–nographic 不在qemu界面启动,在命令行启动便于操作
-s 在1234端口打开gdb调试端口,方便gdb连接调试
注意在boot.sh,我指定的是绝对路径,因人而异,上述路径只是在x86目录下生效
在.zshrc设置快捷启动别名:

同样设置busy-box的生成imag的shell脚本:fs.sh

最终效果在本机ssh到ubuntu后,直接可以启动qemu:

参考资料

Linux内核漏洞利用(一)环境配置
Linux 内核漏洞利用教程(一):环境配置

发表评论