暗渡陈仓:用低消耗设备进行破解和渗透测试3.1.2 基于Linux方案的选择

简介:

3.1.2 基于Linux方案的选择

毫不奇怪,作为最受欢迎的开源操作系统,Linux中的一些版本可用于Beagle系列的开放硬件。Linux被认为是一个由程序员为程序员设计的操作系统。Linux以充分发挥硬件性能而闻名,尤其是对于比较低端或者比较老旧的计算机硬件。当然,这并不是说Linux在高端硬件上运行得不够好。Windows用户不久前才脱离32位兼容模式运行应用程序的禁锢,而Linux系统的用户早在2001年就已经可以使用64位操作系统了。事实上,64位的Linux内核在AMD首款AMD64架构处理器发布的2年前就已经就绪了。

你可能会惊讶地发现,有那么多你使用的设备在默默地运行着Linux系统。许多网络设备运行Linux系统,一些定制化的Linux版本(如OpenWrt)专门被设计出来,用于替代商业产品出厂内置的Linux。众所周知,许多智能电视和其他现代化家电都在运行着Linux。在支持的平台种类数量方面,没有任何其他操作系统能与Linux相匹敌。

Linux在黑客用户群体里也是显而易见的赢家。Linux系统上有大量的安全工具。支持多平台的工具都是先在Linux系统上实现,然后才移植到其他操作系统平台上。协作式的开源环境滋养了那些不可或缺的安全工具的成长,例如支持监视模式和数据包注入的全功能的无线网卡驱动。Linux提供给用户很多选择:Linux有各种各样的脚本可用;用户可以从众多图形环境中自由选择,甚至可以完全放弃图形界面使用纯命令行;像文本编辑这样的常见任务,不同喜好的用户都有多个程序可用。

?ngstr?m

听到?ngstr?m这个词的时候,你也许会想到度量单位(10-10m),?ngstr?m是用来描述光的波长(颜色)和像原子、分子这样小东西的尺寸的。?ngstr?m发行版本也是一个不为人知的嵌入式Linux发行版(http://angstrom-distribution.org)。这个Linux发行版的开发者强调说它被叫作?ngstr?m发行版,而不是?ngstr?m Linux。?ngstr?m发行版本的特点总结如表3.1所示。

表3.1 ?ngstr?m发行版的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     好——为Beagle板子优化编译

opkg(和Debian上的dpkg类似)

一般

差——主要面向嵌入式

一般——少量用户形成的社区

用了专用工具

Beagle系列板子原厂内置,但不为普通用户所知

 

?ngstr?m发行版本预装在BeagleBoard.org出厂的每个设备上,从最开始的BeagleBoard到BeagleBone Black(在本书编写时,BeagleBoard.org刚刚宣布,未来发布的产品上可能预装Debian Linux)。如果了解BeagleBoard设计者的背景,以及在2008年最原始版本的BeagleBoard发布时ARM设备的支持情况,你就不会惊讶为什么选择?ngstr?m发行版本作为默认预装的系统了。多数Linux桌面用户可能不熟悉这个发行版本。虽然?ngstr?m发行版预装在所有的Beagle上,为了让读者能更好地了解这个发行版的风格,这里还是简要地说一下构建?ngstr?m发行版的步骤吧。

通常嵌入式系统软件(包括操作系统)是在一台更为强大的桌面系统下构建的。这个过程被称为交叉编译(更多细节将在下一章讨论)。采用交叉编译的最主要原因是:嵌入式设备缺少足够的运算能力,无法在合理的时间内完成软件或者系统的构建。?ngstr?m发行版是由OpenEmbedded软件框架构建的(http://openembedded.org)。OpenEmbeded构建过程中使用BitBake构建工具(http://developer.berlios.de/projects/bitbake)。BitBake允许用户创建自己的“菜谱”,来精确描述软件包的“烹饪”过程,并自动把成功构建所依赖的软件组件包括进来。

构建?ngstr?m的过程非常简单。首先要下载OpenEmbedded BitBake安装设置脚本,根据?ngstr?m发行版官网所述,这些脚本可以从项目的Git仓库获得,命令如下:git clone git://git.angstrom-distribution.org/setup-scripts。?ngstr?m的服务器似乎不是最快最可靠的,如果下载遇到了困难,可以用GitHub代替它。相应的命令是:git clone https://github.com/Angstrom-distribution/setup-scripts 。

脚本下载完,第二步就是构建内核。所有的软件都使用oebb.sh脚本构建。该脚本使用MACHINE环境变量来指定目标架构。这个可以在启动脚本程序中设置,也可以在shell中手动设置。显然在命令行上执行脚本前设置变量更方便些。可以通过在命令前加上VARIABLE=value(变量=值)的形式使环境变量作用于特定的命令(我打赌,Linux新手肯定不知道)。下列命令将配置环境,编译Beagles的软件,更新文件,并构建内核:

 

上述的命令将会执行很长时间。由于脚本的写法问题,OpenEmbedded层也会被下载,尽管它和Beagles没什么关系。一旦内核构建好,最终步骤就是用选择的BitBake“菜谱”去构建文件系统了。例如:MACHINE=beagleboard bash ./oebb.sh bitbake console-image将会构建一个只有命令行的根文件系统。如果用Ubuntu系统作为构建主机,聪明的检查器将会向你“抱怨”找不到makeinfo,这个命令工具包含在texinfo包里。

德州仪器为?ngstr?m做了一些优化调整,以便能在Beagles上获得更好的性能。有一些可以用来构建基于?ngstr?m的嵌入式系统的工具,德州仪器的Jason Krinder创建的BoneScript,是一个可用来方便操作GPIO的Node.js库,集成在Beagles标准?ngstr?m 发行版本中。虽然?ngstr?m允许用户轻松创建嵌入式设备,但它的仓库缺少很多必需品,特别是很多标准桌面应用和渗透测试工具。图3.5所示是一个运行?ngstr?m的BeagleBone Black开发板。

 

图3.5 运行?ngstr?m的BeagleBone Black开发板

Arch Linux

Arch Linux是以简单、轻量、灵活为目标而创建的(http://archlinux.org)。Arch Linux原本是为Intel架构平台开发的,但是目前已经被移植到了ARMv5、ARMv6和ARMv7上(http://archlinuxarm.org)。Arch持续更新并且针对硬件优化,例如,Arch充分利用Beagles上集成在ARMv7 Cortex-A8里的“硬件浮点”数学处理器。Arch的设计理念是让有经验的Linux和Unix用户用得得心应手。Arch的特点总结如表3.2所示。

表3.2 Arch Linux的特点性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     好——非常轻量

Pacman

非常好

差——支持ARM的工具非常少

好——活跃的社区,尤其是桌面版本

简单直接

支持ARMv5、ARMv6和ARMv7

 

http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black上可找到关于将Arch Linux安装到BeagleBone Black的详细介绍。安装包括几个步骤。首先,用fdisk在microSD卡上分2个区。第一个分区保存bootloader,必须是一个至少64MB的FAT16格式的分区。第二个分区格式化为ext4格式,包含根文件系统。第二步,使用mkfs在microSD卡分区上创建文件系统。第三步,从archlinuxarm.org上下载bootloader和根文件系统镜像。第四步,将镜像文件解压到microSD卡上,如果你的系统足够小,以至于可以存放到BeagleBoard或者BeagleBone Black的eMMC上,可以先从microSD卡启动,再向eMMC上安装。这个方案并不适合我们的渗透测试根系统,它占用的空间大于6GB。图3.6所示的是一个BeagleBone Black上运行的Arc Linux屏幕截图。

 

图3.6 BeagleBone Black上运行的Arc Linux

Gentoo

Gentoo是一个强大并且高度定制化的Linux发行版本。一个最与众不同的特点就是几乎所有的东西都是从源码构建而来。因此它能提供高度的定制能力以及相当大的性能改进潜力。从源码构建能充分利用处理器特有功能;通过去除不需要的功能,可执行文件可以更小,更小的可执行文件可以加载得更快,占用更少的内存。Gentoo的特点总结如表3.3所示。

表3.3 Gentoo Linux的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注

      极好——所有的东西都是定制化编译

Portage

好——桌面版本更好

好——桌面版本更好

不同于其他流行的发行版本,但是相当容易

默认情况,所有东西都需要从源码构建,可以提供极好的性能,但是包安装通常是很耗时间的

 

安装Gentoo是一个非常增长见识,但有时可能令人受挫的工作。如果你有一些Linux方面的经验,并且想要学习到更多关于Linux的知识,我强烈推荐你至少安装一次Gentoo,甚至可以在一些老的、不用的硬件上安装。Gentoo通常是分阶段安装的。首先,安装一个非常基础的系统;第二步,安装标准的构建工具。除了编译器和make,Gentoo使用一个强大的包管理工具——Portage;第三步, Portage用来安装构成完整的Gentoo系统的各种软件包。如果一个包在仓库里,可以通过Portage很容易地构建,使用命令emerge <package-name>。如果一个包无法从Gentoo仓库里获取,事情就变得更有趣一些了。

在Beagles上安装Gentoo的过程和安装桌面版是有所不同的。对于新手,在Beagle上安装Gentoo之前,需要一个支持microSD读卡器的桌面Gentoo系统。桌面版的Gentoo电脑用来创建在Beagle上使用的Gentoo系统microSD卡。详细的安装过程可以在http://dev.gentoo.org/armin76/arm/beagleboneblack/install.xml上找到。如同安装桌面版本一样,在Beagles上安装Gentoo比其他Linux发行版本稍微复杂一些。

首先,安装所需的构建工具。第二步,构建交叉编译器。第三步,下载U-boot bootloader(包含补丁的完整版)的副本并构建。第四步,配置并构建内核(包括固件)。第五步,格式化microSD卡,幸运的是有脚本可以完成这个任务。第六步,下载一个基本的根文件系统并写到microSD卡上。第七步,下载Portage快照,并复制到microSD卡的根文件系统里。第八步,配置一系列的选项(root密码、网络、文件系统、hostname、系统服务等)。第九步,将内核和U-boot复制到microSD卡的FAT16格式分区上,最后,Beagle可以从microSD卡启动,后续的其他包就可以安装了。

构建一个Gentoo系统可能会花上几天的时间。对于这种额外付出的回报是获得一个高度优化调校过的系统,也许还能够获得一些在周围技术圈炫耀的资本。大多数常用桌面应用程序可以在Gentoo的仓库里找到,但或许它在渗透测试应用程序方面还略逊于其他的发行版。因为构建应用可能是个费时的过程。鉴于这些原因,Gentoo可能并不是我们打造渗透测试Linux发行版的首选方案。

Sabayon

在现实世界里,Sabayon是一道意大利甜点。Sabayon Linux是Gentoo的衍生版,Sabayon的一个目标是为用户提供一个开箱即用的SOHO服务器功能(NFS、Samba、BitTorrent、Apache等)系统。它还提供了很多解码器,允许用户把电脑作为家庭影院电脑(HTPC)使用。Sabayon的特点如表3.4所示。

表3.4 Sabayon Linux的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     优秀——基于Gentoo

Portage

差——目前还没有太多用户

同Gentoo

是一个为SOHO和家庭影院定制的Gentoo

 

如同它的基础Gentoo一样,Sabayon使用滚动更新,这意味着基于Sabayon的系统可以持续更新而不用等待下一个版本的发布。不同于Gentoo的是,Sabayon提供系统快照,以便于用户可以安装大量软件包而不用从源码构建它们。BeagleBone安装Sabayon的详细说明可以在https://wiki.sabayon.org/index.php?title=Hitchhikers_Guide_to_the_BeagleBone_(and_ARMv7a)找到。不难想到,它的安装过程和Gentoo很像。

Buildroot

Buildroot本质上并不是一个Linux发行版本,而是一套编译完整嵌入式Linux系统的工具系统(http://buildroot.uclibc.org/)。因为它是为了构建嵌入式Linux系统而打造的,所以没有包含完整的软件仓库。这显然不是作为渗透测试系统基础的最佳选择。Buildroot的特点如表3.5所示。

表3.5 Buildroot的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     一般

没有标准工具

一个用于构建嵌入式Linux系统的工具系统,非传统意义上的发行版本

 

使用Erlang/OTP的Nerves项目

Erlang是一种使用OTP库来构建可扩展的软实时系统的编程语言,Nerves项目使用Buildroot构建的Linux内核,并使用Erlang交叉编译工具创建用于BeagleBone Black的固件镜像。虽然Nerves也许能用于创建渗透测试设备,但它似乎并不是一个构建渗透测试操作系统基础的最佳方案。Nerves项目的特点如表3.6所示。

表3.6 Nerves项目的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     未知

差——项目才刚起步

没有标准工具

用于创建软实时系统的系统

 

Fedora

Red Hat Linux是仍在被广泛使用的最老的发行版本之一,在2003年,Red Hat终止了Red Hat Linux的支持,并且从那时开始只支持Red Hat Enterprise Linux(RHEL)。Fedora(原来被叫作Fedora Core)是一个Red Hat的社区版本,它被创建来替代Red Hat Linux满足非企业用户的需要。Fedora项目得到了Red Hat公司部分赞助支持,事实上,RHEL是基于Fedora代码为基础的分支。社区开发Fedora,然后Red Hat选择将其中稳定的功能特性加入到RHEL中。顺便一提,GNU许可要求Red Hat提供RHEL的源代码,即产生了另一个发行版本(没有商业支持)CentOS(http://www.centos.org/)。Fedora的特点如表3.7

所示。

表3.7 Fedora的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     一般

Red Hat 包管理器(RPM)

未知

未知

差——Beagle镜像被发布出来了,然后被撤回了

标准工具

不像桌面版本Fedora支持得那么好

 

Fedora是一个主要面向桌面的Linux发行版本,但是后来出现了其他架构的移植版本,如ARM版(http://fedoraproject.org/en/get-fedora-options#2nd_arches)。如同RHEL和一些其他发行版本一样,Fedora使用Red Hat包管理器(RPM)管理软件包。仓库支持很完善。安装Fedora简单明了。从http://fedoraproject.org/en/get-fedoraoptions#2nd_arches下载镜像文件,写入到microSD卡上,然后就完成了。有一个BeagleBone Black专用镜像,但是在写本书时,因为使用?ngstr?m内核和Fedora根文件系统是一个有问题的组合,所以镜像被撤回了。运行Fedora的BeagleBone Black的截屏如图3.7所示。

 

图3.7 BeagleBone Black上运行的Fedora

Debian

Debian由Ian Murdock在1993年创建(http://www.debian.org/doc/manuals/project-history/)。Debian以Ian和他当时的女友,现在的妻子Debra命名。Debian已经被移植到了大量的架构上,它使用Debian包管理器(dpkg)进行软件包管理。仓库支持很不错,但是很多从它衍生的发行版(如Ubuntu)有着更好的支持。Debian有着大量的衍生版本,这些衍生版本中,Ubuntu是最受欢迎的。Debian的特点如表3.8所示。

表3.8 Debian的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     一般

dpkg——Debian包管理器

差——桌面版本更好

非常好配置

标准工具

良好的社区支持,大部分归功于一些个人付出努力的结果

 

常听到的关于Debian的抱怨是,它不像其他Linux发行版更新得那么频繁。奇怪的是衍生版本通常是持续更新的。Debian对Beagle的支持很好,安装Debian的详细说明可以在http://elinux.org/BeagleBoardDebian上找到。由于它的流行,Beagle上安装Debian很简单,可以通过互联网安装一个最新的镜像,或者安装demo镜像到Beagle上。

为了执行网络安装,首先使用git clone git://github.com/RobertCNelson/netinstall.git下载脚本,然后使用下面的命令下载软件,复制到microSD卡(至少1GB大小)上。

 

安装demo镜像的过程类似,下载demo镜像、解压、校验,然后使用脚本安装到microSD卡上。下列的命令将会执行demo镜像的安装(注意:本书写作时,这是最新的版本;读者也许希望到网上找最新的版本):

 

 

这个系统是命令行版本,如果想安装桌面环境,需要在安装后增加合适的软件包。一个好处是这个的根文件系统足够小,可以安装到BeagleBone Black的eMMC上,并且还有剩余空间容纳一些工具。

Ubuntu

Ubuntu和其衍生版极其受欢迎,Ubuntu已经占领DistroWatch排行榜前列几年了(http://distrowatch.com)。Ubuntu初次发布是在2004年,由Mark Shuttleworth的公司Canonical维护(http://ubuntu.com)。Canonical声称Ubuntu是这个世界上最受欢迎的开源操作系统。Ubuntu是来自南非一个富有哲理的词汇,其含义鼓励人们像一个社区一样在一起工作劳动。与它所基于的Debian不同,Ubuntu每6个月发布一个新版本。很多人认为Ubuntu是初学者最容易使用的Linux发行版本之一。Ubuntu的特点如表3.9所示。

表3.9 Ubuntu的特点

性能

包管理器

桌面应用仓库支持

Hacking应用仓库支持

社区支持

配置

备注     好——支持ARMv7的硬件浮点

Aptitude/dpkg

非常好

非常好

极好

标准工具

根据Canonical所说,Ubuntu是世界上最受欢迎的Linux发行版本。由于某些个人的努力,能够很好地支持Beagles

 

由于它太受欢迎了,Ubuntu有极好的软件仓库支持。Ubuntu包管理器apt(advanced packing tool),是一个极其简单易用的工具。安装一个新的软件包只需要在Shell中输入sudo apt-get install <package name>。更新系统的所有软件包也一件极其简单的事情,使用sudo apt-get update && sudo apt-get upgrade更新本地仓库信息,然后安装可用更新。如果不确定软件包的名称,或者认为一个工具可能被包含在另一个软件包里,可以通过执行apt-cache search <package or utility name>来找到正确的软件包名。还有图形化或基于文本的前端界面让软件包管理更容易。

虽然Linux系统有许多图形窗口化的桌面环境,但多年来两个被广泛使用的、最主要的桌面环境是GNOME和KDE。两个桌面环境都有着自己的追随者。Canonical还开发了它们自己的名为Unity的图形化窗口的桌面环境。毫无意外地,一些KDE和GNOME的“信徒”并不喜欢Unity。Kubuntu提供给喜欢KDE并想使用Ubuntu的用户(http://kubuntu.org)。本书就是在运行LibreOffice和其他一些开源工具的Kubuntu系统上完成的。Ubuntu Gnome则是为那些喜欢Gnome桌面环境的用户(http://ubuntugnome.org)准备的。

Unity、KDE和Gnome对于Beagle那有限的RAM来说都有点太大了。Beagles和低性能桌面电脑通常会使用一个轻量级的窗口系统。当一个轻量级桌面环境被用于一个桌面电脑时,这个发行版本名字是有变化的。如Xubuntu 是一个使用Xfce桌面环境的Ubuntu版本。当在基于ARM架构的硬件系统上运行它的时候,我们会说硬件上跑的是Ubuntu系统,即使使用的不是Unity桌面环境。

在Beagles上运行Ubuntu有多种选择。可以选择主版本、这个版本的变体和某个特定的内核。由于Ubuntu和内核最近的变化,这些选择比初听起来的要麻烦。新的设备,例如BeagleBone Black只支持较新版本的Ubuntu和Kernel,这些版本与从前的有些不兼容。在我们讨论完一个优秀的渗透测试Linux发行版的必备要素之后,再深入讨论这个问题。

相关文章
|
4月前
|
Linux 测试技术
软件测试/测试开发|一文详解Linux grep命令
软件测试/测试开发|一文详解Linux grep命令
57 1
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
43 1
|
4月前
|
存储 网络协议 Java
深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)
在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到网络包的),接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包后要通知到用户进程,如何用户进程接收到并处理这些数据。
|
1月前
|
Linux iOS开发 MacOS
|
2月前
|
测试技术 Linux 数据安全/隐私保护
如何远程访问Linux MeterSphere一站式开源持续测试平台
MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。
|
3月前
|
人工智能 Linux Shell
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
|
3月前
|
安全 Linux 测试技术
深入Kali Linux:高级渗透测试技术详解
深入Kali Linux:高级渗透测试技术详解
174 0
|
3月前
|
测试技术
Appium 并行测试多个设备
Appium 并行测试多个设备
52 0
|
3月前
|
人工智能 算法 测试技术
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】
|
3月前
|
运维 负载均衡 监控
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(02)【4个具体方案】
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(02)【4个具体方案】

热门文章

最新文章