天天看點

暗渡陳倉:用低消耗裝置進行破解和滲透測試3.1.2 基于Linux方案的選擇

<b>3.1.2 基于linux方案的選擇</b>

毫不奇怪,作為最受歡迎的開源作業系統,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的特點性能

備注     好——非常輕量

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的特點

備注

      極好——所有的東西都是定制化編譯

portage

好——桌面版本更好

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

預設情況,所有東西都需要從源碼建構,可以提供極好的性能,但是包安裝通常是很耗時間的

安裝gentoo是一個非常增長見識,但有時可能令人受挫的工作。如果你有一些linux方面的經驗,并且想要學習到更多關于linux的知識,我強烈推薦你至少安裝一次gentoo,甚至可以在一些老的、不用的硬體上安裝。gentoo通常是分階段安裝的。首先,安裝一個非常基礎的系統;第二步,安裝标準的建構工具。除了編譯器和make,gentoo使用一個強大的包管理工具——portage;第三步, portage用來安裝構成完整的gentoo系統的各種軟體包。如果一個包在倉庫裡,可以通過portage很容易地建構,使用指令emerge &lt;package-name&gt;。如果一個包無法從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的特點

備注     優秀——基于gentoo

差——目前還沒有太多使用者

同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的特點

備注     一般

沒有标準工具

一個用于建構嵌入式linux系統的工具系統,非傳統意義上的發行版本

使用erlang/otp的nerves項目

erlang是一種使用otp庫來建構可擴充的軟實時系統的程式設計語言,nerves項目使用buildroot建構的linux核心,并使用erlang交叉編譯工具建立用于beaglebone black的固件鏡像。雖然nerves也許能用于建立滲透測試裝置,但它似乎并不是一個建構滲透測試作業系統基礎的最佳方案。nerves項目的特點如表3.6所示。

表3.6 nerves項目的特點

備注     未知

差——項目才剛起步

用于建立軟實時系統的系統

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的特點

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的特點

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的特點

備注     好——支援armv7的硬體浮點

aptitude/dpkg

極好

根據canonical所說,ubuntu是世界上最受歡迎的linux發行版本。由于某些個人的努力,能夠很好地支援beagles

由于它太受歡迎了,ubuntu有極好的軟體倉庫支援。ubuntu包管理器apt(advanced packing

tool),是一個極其簡單易用的工具。安裝一個新的軟體包隻需要在shell中輸入sudo apt-get

install &lt;package name&gt;。更新系統的所有軟體包也一件極其簡單的事情,使用sudo apt-get update &amp;&amp; sudo apt-get upgrade更新本地倉庫資訊,然後安裝可用更新。如果不确定軟體包的名稱,或者認為一個工具可能被包含在另一個軟體包裡,可以通過執行apt-cache search &lt;package or utility name&gt;來找到正确的軟體包名。還有圖形化或基于文本的前端界面讓軟體包管理更容易。

雖然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發行版的必備要素之後,再深入讨論這個問題。

繼續閱讀