暗渡陈仓:用低消耗设备进行破解和渗透测试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发行版的必备要素之后,再深入讨论这个问题。

相关文章
|
8天前
|
Linux 测试技术
软件测试/测试开发|一文详解Linux grep命令
软件测试/测试开发|一文详解Linux grep命令
60 1
|
8天前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
【Shell 命令集合 网络通讯 】⭐⭐⭐Linux 测试与目标主机之间的网络连接ping 命令 使用指南
50 1
|
8天前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
18 0
|
8天前
|
存储 测试技术
LabVIEW编程开发PCB自动测试设备
LabVIEW编程开发PCB自动测试设备
11 1
|
8天前
|
iOS开发 MacOS Windows
|
8天前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
|
8天前
|
编解码 测试技术 API
模拟手机设备:使用 Playwright 实现移动端自动化测试
本文介绍了使用Python的Playwright库进行移动设备模拟和自动化测试的方法。通过Playwright,开发者能模拟不同设备的硬件和软件特性,如屏幕尺寸、用户代理,以确保网站在移动设备上的表现。示例代码展示了如何模拟iPhone X并访问网站,之后可在此基础上编写测试代码以检验响应式布局和交互功能。Playwright的设备参数注册表支持多种设备,简化了移动端自动化测试的流程。
23 1
|
8天前
|
数据采集 数据管理 测试技术
LabVIEW开发新型电化学性能测试设备
LabVIEW开发新型电化学性能测试设备
18 6
|
8天前
|
数据可视化 搜索推荐 Linux
|
8天前
|
Linux 测试技术 Android开发
测试程序之UART 232/485适用于Android/Linux
测试程序之UART 232/485适用于Android/Linux
22 0