天天看點

暗渡陳倉:用低功耗裝置進行破解和滲透測試

暗渡陳倉:用低功耗裝置進行破解和滲透測試

資訊安全技術叢書

暗渡陳倉:用低功耗裝置進行

破解和滲透測試

hacking and penetration testing with low power devices

[美]菲利普·布勒斯特拉(philip polstra)著

桑勝田 翁 睿 阮 鵬 譯

圖書在版編目(cip)資料

暗渡陳倉:用低功耗裝置進行破解和滲透測試/(美)菲利普·布勒斯特拉(philip polstra)著;桑勝田,翁睿,阮鵬譯. —北京:機械工業出版社,2016.10

(資訊安全技術叢書)

書名原文:hacking and penetration testing with low power devices

isbn 978-7-111-54879-9

i.?暗… ii.①菲… ②桑… ③翁… ④阮… iii. 計算機網絡-安全技術 iv. tp393.08

中國版本圖書館cip資料核字(2016)第223714号

本書版權登記号:圖字:01-2015-0857

hacking and penetration testing with low power devices 

philip polstra

isbn: 978-0-12-800751-8 

copyright ? 2015 by elsevier inc. all rights reserved.

authorized simplified chinese translation edition published by the proprietor.

copyright ? 2016 by elsevier (singapore) pte ltd. all rights reserved.

printed in china by china machine press under special arrangement with elsevier (singapore) pte ltd. this edition is authorized for sale in china only, excluding hong kong sar, macau sar and taiwan. unauthorized export of this edition is a violation of the copyright act. violation of this law is subject to civil and criminal penalties.

本書簡體中文版由elsevier(singapore)pte ltd.授權機械工業出版社在中國大陸境内獨家出版和發行。本版僅限在中國境内(不包括香港、澳門特别行政區及台灣地區)出版及标價銷售。未經許可之出口,視為違反著作權法,将受法律之制裁。

本書封底貼有elsevier防僞标簽,無标簽者不得銷售。

暗渡陳倉:用低功耗裝置進行破解和滲透測試

出版發行:機械工業出版社(北京市西城區百萬莊大街22号 郵政編碼:100037)

責任編輯:陳佳媛 責任校對:董紀麗

印  刷: 版  次:2016年10月第1版第1次印刷

開  本:186mm×240mm 1/16 印  張:13.25

書  号:isbn 978-7-111-54879-9 定  價:69.00元

凡購本書,如有缺頁、倒頁、脫頁,由本社發行部調換

客服熱線:(010)88379426 88361066 投稿熱線:(010)88379604

購書熱線:(010)68326294 88379649 68995259 讀者信箱:[email protected]

版權所有·侵權必究

封底無防僞标均為盜版

本書法律顧問:北京大成律師事務所 韓光/鄒曉東

foreword?推 薦 序

親愛的讀者,在這篇序文中,我首先要提醒你當心此刻你手中所拿的這本書威力巨大!這本書不僅是一本教材,它定義了一個決定性的時刻。從此,無論是公司、組織還是各行各業的人都要重新審視它們的網絡安全狀況。長久以來,我們一直說服自己,線上互動的風險十分有限,風險僅當具有ip位址,并進行網際網路連接配接時才存在。可是,從此刻起一切都變了!作者為我們揭露了無情的現實——沒有實體安全就沒有線上安全。本書展示了那些常見的小裝置、小裝置以及各種計算機外設如何成為滲透網絡的工具。本書通過示範攻擊網絡的裝置如何飛向目标,證明了天空也不再是攻擊禁區。這些裝置并不是未來的幻想,甚至也不是darpa才有的高大上裝備。作者将全面展示如何利用廉價的零件和這本書來建構自己的網絡武器。曾經隻有國家才能擁有這種力量的網絡戰黃金時代已經一去不複返了。感謝作者的辛勤努力,他把這種專業知識和技術傳授給了普通大衆!應該讓每一位cio、ceo(确切說,任何頭銜帶“c”的上司)都看到這本書,以便讓他們意識到身處其中的威脅。我曾經說過:“如果我能騙過你的前台接待員,就不必勞神去搞你的防火牆了。”這不,作者以淺顯易懂的方式精彩地展現了如何輕松做到這一點。

這不是一本為那些害怕發現漏洞(或審視其目前的資訊安全政策和流程)的人準備的書!這本書是為這樣的人準備的,他們敢于提問:“為什麼那個電源插座上邊帶了一個網線?”也從不怕提出:“這是幹什麼用的?”這不是一本打發陰雨的星期天下午的休閑讀物,而是需要拿着電烙鐵、開着筆記本電腦,旁邊再放點Ok繃以備不測的書籍!前進吧,讀者,去領略把滑鼠變成武器、把玩具機器人變得比“終結者”更恐怖的美妙奇境吧!

我是認真的,這是本了不起的書,我從中學到了真正不同尋常的東西!

閱讀愉快!

jayson e. street

譯 者 序?the translator’s words

2001年,我在handhelds.org上第一次看到ipaq掌上電腦,h3630螢幕上顯示着企鵝圖示和linux核心啟動資訊,當時眼前一亮,隐約覺得這樣的嵌入式裝置會有很多非正常的、有趣的(或許還是有用的)玩法。去年一個深冬的下午,在安天微電子與嵌入式安全研發中心,我和同僚正在做某個智能裝置的拆解和固件提取,望着工作台上被肢解得七零八落的各種智能手機、4g網卡,突然感慨,這些主頻上億赫茲,記憶體數億位元組的裝置,每個都是一個小宇宙,蘊藏着驚人的能量……

philip polstra博士的這本書展示了小型嵌入式系統的奇妙應用。作為安全專家,他向我們展示了這些工作在安全研究應用中的非凡作用;作為硬體極客,他帶我們感受了有趣的diy過程。是以,無論是尋求實用技術的工程師還是從興趣出發的玩家,都會發現本書内容具有足夠的吸引力。

早在2009年我就接觸和應用過beagleboard,還曾基于beagleboard制作了便攜式u盤殺毒和擦除器,是以對于書中的很多想法和做法頗感心有戚戚焉。讀完這本書,我還是不由得感歎作者在beagleboard應用方面的豐富經驗,以及本書對軟硬體介紹的系統性和全面性。書中每部分的決策考量與實作方法又都與實際的滲透測試應用密切結合,娓娓道來,也足見作者軟硬體功力深厚,實踐經驗豐富。

本書翻譯工作得到了很多人的支援和幫助。除了我之外,翁睿和阮鵬也參與了本書的翻譯工作。感謝華章公司吳怡編輯的細緻耐心指導。由于經驗不足,能力有限,翻譯的不當之處還請讀者批評指正。

桑勝田([email protected]

安天微電子與嵌入式安全研發中心總經理

acknowledgements?緻  謝

首先,我要感謝我的妻子和孩子讓我花時間寫這本書——也被稱為“爸爸的又一篇學位論文”。如果沒有他們的支援,就不可能完成這本書。

感謝技術編輯vivek ramachandran給予我資訊安全和寫作上的寶貴建議,我對他能在百忙之中同意做這本書的技術編輯而感激不盡。

感謝和我一起創作的搭檔t.j. o’connor和jayson street,感謝他們在這本書構思之中提供的建議和對我的鼓勵。

最後,要感謝高檔安全會議的組織者們,是他們提供了論壇,讓我能與他人分享資訊安全方面點點滴滴的奇思妙想。特别要感謝44con會議的 steve lord和adrian from,grrcon 會議的chris和 jaime payne允許我這個當初一文不名的毛頭小子登台演講,後來又給予我特殊的關照,讓我多次在他們的會議上發言。

作?者?簡?介?about the author

philip polstra博士(他的夥伴稱他為phil博士)是世界著名的硬體黑客。他在全球多個國際會議上展示過研究成果,包括:def con、 blackhat、44con、grrcon、makerfaire、forensecure以及一些其他的頂級會議。polstra博士是著名的usb驗證專家,在這方面發表了多篇文章。

在美國中西部的一所私立大學擔任教授和專職黑客期間,polstra博士開發了數字驗證和道德黑客學位課程。他目前在布魯斯伯格大學教授計算機科學和數字驗證。除了教學之外,他還以咨詢的方式提供訓練和進行滲透測試。工作之外,他在駕駛飛機、制造飛行器、鼓搗電子方面也很有名氣。通路他的部落格http://polstra.org可以了解他最近的活動,也可以在推特上關注他:@ ppolstra。

contents?目  錄

推薦序

譯者序

緻謝

作者簡介

第1章 初識deck  1

1.1 引子  1

1.2 deck  2

1.2.1 運作deck的裝置  3

1.2.2 滲透測試工具集  3

1.2.3 操作模式  5

1.3 本章小結  9

第2章 認識beagle系統闆  10

2.1 引子  10

2.2 德州儀器公司的裝置  11

2.2.1 beagleboard-xm  11

2.2.2 beaglebone  13

2.2.3 beaglebone black  16

2.3 本章小結  18

第3章 安裝一個基礎作業系統  20

3.1 引子  20

3.1.1 非linux選擇  20

3.1.2 基于linux方案的選擇  23

3.2 滲透測試linux發行版本所需的功能特性  32

3.3 基于ubuntu方案的選項  33

3.3.1 ubuntu變種  33

3.3.2 核心的選擇  34

3.4 建立一個microsd卡  34

3.5 本章小結  35

3.6 本章附錄:深入分析安裝腳本  35

第4章 打造工具箱  44

4.1 引子  44

4.2 添加圖形桌面環境  44

4.3 以簡單方式添加工具  50

4.3.1 使用軟體倉庫  50

4.3.2 使用軟體包  53

4.4 以複雜方式添加工具  57

4.4.1 本地編譯  58

4.4.2 簡單的交叉編譯  58

4.4.3 基于eclipse的交叉編譯  59

4.4.4 自動化源碼建構  66

4.4.5 安裝python工具  69

4.4.6 安裝ruby  70

4.5 入門級工具集  70

4.5.1 無線破解  70

4.5.2 密碼破解  72

4.5.3 掃描器  73

4.5.4 python工具  73

4.5.5 metasploit  74

4.6 本章小結  76

第5章 為deck供電  77

5.1 引子  77

5.2 電源需求  78

5.3 電源  80

5.3.1 市電供電  81

5.3.2 usb供電  82

5.3.3 電池供電  83

5.3.4 太陽能供電  85

5.4 降低功耗  86

5.5 使用單個攻擊機的滲透測試  88

5.5.1 連上無線  89

5.5.2 看看能找到什麼  91

5.5.3 尋找漏洞  93

5.5.4 漏洞利用  95

5.5.5 攻擊密碼  98

5.5.6 檢測其他安全問題  101

5.6 本章小結  101

第6章 輸入和輸出裝置  102

6.1 引子  102

6.2 顯示方式的選擇  102

6.2.1 傳統顯示器  103

6.2.2 直接連接配接的顯示裝置  103

6.3 鍵盤和滑鼠  105

6.4 ieee 802.11無線  105

6.5 ieee 802.15.4無線  106

6.6 網絡集線器和交換機  107

6.7 beaglebone cape擴充闆  108

6.7.1 xbee mini-cape  109

6.7.2 xbee cape  112

6.8 用單個遠端攻擊機進行的滲透測試  118

6.8.1 連上無線網絡  118

6.8.2 看看能找到什麼  123

6.8.3 尋找漏洞  125

6.8.4 漏洞利用  127

6.8.5 攻擊密碼并檢測其他安全問題  128

6.9 本章小結  128

第7章 組建機器戰隊  129

7.1 引子  129

7.2 使用ieee 802.15.4組網  130

7.2.1 點對多點網絡  130

7.2.2 網狀網絡  132

7.3 配置ieee 802.15.4貓  133

7.3.1 系列xbee貓的配置  135

7.3.2 系列xbee貓的配置  136

7.4 簡單的遠端控制方式  140

7.5 用python遠端控制  141

7.6 降低能耗  156

7.7 提高安全性  158

7.8 擴大控制範圍  161

7.8.1 ieee 802.15.4路由器  161

7.8.2 ieee 802.15.4網關  161

7.9 用多個攻擊機進行滲透測試  161

7.9.1 phil’s fun and edutainment公司介紹  162

7.9.2 規劃攻擊  162

7.9.3 配置裝置  163

7.9.4 執行測試攻擊  164

7.10 本章小結  174

第8章 隐藏機器戰隊  175

8.1 引子  175

8.2 隐藏裝置  176

8.2.1 把裝置藏到自然界物體裡  176

8.2.2 在建築的裡邊和周圍隐藏裝置  177

8.2.3 用玩具和裝飾物隐藏裝置  182

8.3 安裝裝置  185

8.3.1 最初的安裝  186

8.3.2 維護裝置  188

8.3.3 移除裝置  188

8.4 本章小結  188

第9章 增加空中支援  189

9.1 引子  189

9.2 建構airdeck  189

9.2.1 選擇飛行平台  190

9.2.2 單一路由功能方案  191

9.2.3 全功能的攻擊機和路由器  192

9.3 使用空中攻擊機  193

9.3.1 單路由功能的使用  193

9.3.2 使用airdeck  194

9.3.3 節約電能  194

9.4 其他飛行器  196

9.4.1 四旋翼直升機  197

9.4.2 進一步改進飛行器  197

9.5 本章小結  198

第10章 展望未來  199

10.1 引子  199

10.2 deck系統的最新進展  199

10.3 關于cape的想法  200

10.4 deck向其他平台的移植  200

10.5 用單片機實作超低功耗  201

10.6 結束語  201

第1章

初識deck

本章内容:

deck——一種定制的linux發行版

幾款運作linux的小型計算機系統闆

标準滲透測試工具集

滲透測試的桌上型電腦

投置機——從内部攻擊

攻擊機——用多個裝置從遠處攻擊

1.1 引子

我們生活在一個日益數字化的世界,這個世界裡聯網裝置不斷增加。為了在全球一體化的經濟中保持競争力,世界各地的業務一刻也離不開計算機、平闆電腦、智能手機以及其他數字裝置。并且越來越多的業務與網際網路密切相關。新連接配接到網際網路的裝置,不出幾分鐘就可能遭到惡意個人或組織的攻擊。是以,對資訊安全(information security,infosec)專業人才的需求十分強勁,其中滲透測試人員(penetration testers, pentester)尤其搶手。

既然正在讀這本書,想必你已經知道滲透測試意味着什麼。滲透測試是受客戶委托所進行的得到授權的黑客活動,目的是查明客戶的數字安全系統被滲透的難度,以及如何改進客戶的安全态勢。對滲透測試的需求引出了一些專用linux發行版的産生。迄今為止,這些定制linux發行版無一例外地運作在基于intel(或amd)處理器的桌上型電腦或筆記本上,由單個滲透測試員操作使用。

打消顧慮

在開始本章的正題之前,這裡先給讀者建立一下信心。本書假設讀者了解滲透測試的一般概念,并且了解linux的使用,除此之外,閱讀本書并不需要其他額外基礎。讀者不必是出類拔萃的黑客(當然如果您是這樣的精英,那就更棒了!)或者資深linux使用者或系統管理者。特别強調的是,讀者不需要有硬體基礎。雖然本書為動手定制電路闆之類的讀者提供了大量資訊,但書中所說的全部物品都可以直接買到成品。

如果是初次接觸硬體黑客的概念,讀者可以酌情挑戰不同的難度級别。若選擇實用主義的保險路線,完全可以購買商品化的成品beaglebone “馬夾”——?cape(直接插到beaglebone上的擴充闆,詳見http://beagleboard.org/cape);如果決定深入學習相應的技能,那麼可以按照本書後續的講解,給買來的xbee擴充卡(例如,adafruit 擴充卡,見http://www.adafruit.com/products/126)焊接上4根導線,自己制作一個迷你cape。甚至對于想要自己動手刻蝕專用印刷電路闆的進階讀者,本書也提供了相應的資訊。是以說,要進行本書所介紹的滲透測試,既可以完全避開硬體制作,也可以一切都自己動手制作,無論采用哪種方式都不會影響滲透測試的威力!

1.2 deck

deck是本書所介紹的linux發行版,它給滲透測試員提供了一種運作在基于arm的低功耗系統上的作業系統,進而打破了傳統的滲透測試模式。運作該系統的硬體是由非盈利組織beaglebone.org基金會開發的(下一章将詳細介紹,如果想要快速了解,可以參考http://beagleboard.org/getting%20started)。運作deck的裝置更易于隐藏并且可以采用電池供電。本書成稿時deck系統已經包含1600個軟體包,成為非常适合于滲透測試的系統。deck系統極度靈活,完全适用于傳統的桌上型電腦、投置機,以及遠端破解攻擊機。

名字的含義

deck

如果讀者也是科幻小說愛好者,可能已經将deck名字的由來猜得差不多了。這裡deck既用來指本書介紹的定制linux發行版,也指運作deck系統的裝置。在1984年威廉·吉布森的經典科幻小說《神經浪遊者》(《neuromancer》)中,網絡牛仔使用的連接配接到網際網路的計算機終端被稱為“punch deck”。吉布森描繪了其中所有裝置都連接配接到網際網路的未來世界。在本書作者心中,那些beagle闆子以及類似的小型、低功耗、廉價的裝置代表着滲透測試的未來。把這個系統稱作deck算是向吉布森緻敬吧。此外,beaglebone的大小與一副撲克牌差不多。

1.2.1 運作deck的裝置

圖1.1中的裝置都在運作deck系統。在本書寫作時,deck能夠運作在beagle家族的三種裝置上:beagleboardxm、beaglebone和beaglebone black。下一章将對這些系統闆進行充分的介紹。讀者可以參考beagleboard網站(http://beagleboard.org)得到進一步的資訊。在此,我們僅需知道它們是基于運作頻率高達1ghz的arm cortex-a8處理器的系統闆就行了。盡管它們具有桌上型電腦的性能,但是它們的功耗隻相當于intel或amd計算機的一個零頭。即使在驅動7寸觸摸屏(例如http://elinux.org/beagleboard:beaglebone_lcd7)和外部無線網卡時,一個10w(2a,5v)的電源也足夠了。與此相比,那些筆記本和桌上型電腦的功率瓦數則高達3位數甚至4位數。

1.2.2 滲透測試工具集

deck包含大量的滲透測試工具。設計理念是每個可能會用到的工具都應該包含進來,以確定在使用時無須下載下傳額外的軟體包。在滲透測試行動中給攻擊機安裝新的軟體包很困難,輕則要費很大勁,重則完全沒法裝。一些面向桌上型電腦的滲透測試linux發行版經常帶有許多不常用的陳舊軟體包。deck中的每個軟體包都是經過精心評估才包含進來的,引入一個新軟體包所導緻的任何備援部分都會被剔除掉。這裡将介紹一些比較常用的軟體工具。

現在,無線網絡應用十分普遍,是以許多滲透測試都從破解無線網絡開始。是以deck系統包含了aircrack-ng套件。airodump-ng工具用來捕包和分析,捕獲的資料包可以轉給aircrack-ng進行解密。圖1.2和圖1.3分别給出了airodump-ng和aircrack-ng的截屏。關于aircrack-ng元件使用的更多細節将在後續章節介紹。

圖1.2 使用airodump-ng捕獲和分析無線資料包

圖1.3 用aircrack-ng成功破解

即使在使用者不使用無線網的情況下,aircrack-ng元件也很有用,它可以用來檢測和破解使用者網絡中可能存在的非法私接的無線ap(access point,接入點)。deck中還包含了一個叫作fern wifi cracker的無線破解工具,它是那種可以用滑鼠來操作的易用工具。圖1.4給出了使用fern成功破解的截圖。滲透測試新手可能覺得fern十分好用。由于互動性操作的特點,aircrack-ng和fern都不适用于我們的無人值守的破解攻擊機。是以,deck收錄了scapy python(http://www.secdev.org/projects/scapy/)工具。

圖1.4 使用fern成功破解

不管是有線網絡資料包還是無線網絡資料包,對于滲透測試人員,它們都有重要價值。deck包含了wireshark(http://www.wireshark.org/),用來抓包和對資料包進行分析。deck也提供了一個稱作nmap(http://nmap.org/)的标準網絡映射工具,用于發現目标網絡上的服務和主機。metasploit(http://www.metasploit.com/)是包含一組漏洞掃描器和漏洞利用架構的工具,也是标準版本deck的元件之一。上述工具見圖1.5。

metasploit是由rapid 7(http://www.rapid7.com/)維護的很流行的工具,有大量關于它的書籍、教育訓練課程、視訊教程。offensive security還釋出了一本線上圖書《metasploit unleashed》(http://www.offensive-security.com/metasploit-unleashed/main_page),這是可以免費獲得的學習資料(當然我們鼓勵讀者向hackers for charity捐贈)。metasploit号稱是個架構并且帶有大量的漏洞,這些漏洞可用于從幾百個攻擊載荷中選擇要傳送的載荷。metasploit能在腳本中運作,也能開啟互動操作的控制台,還可以通過web界面操作。本書不會全面介紹metasploit,建議對其不了解的讀者進一步學習這個了不起的工具。

圖1.5 wireshark、nmap、nikto和metasploit

破解使用者密碼經常是滲透測試的工作之一。deck帶有若幹線上密碼破解器、離線密碼破解器,以及密碼字典。其中一個稱作hydra的線上密碼破解工具如圖1.6所示。此外還有大量的其他工具被內建在deck中,其中不容忽視的是一組python庫。這些工具包中的有些元件将在本書後面的執行個體分析中重點說明。

圖1.6 hydra線上密碼破解器

1.2.3 操作模式

deck的強項之一就是它既能作為傳統的圖形使用者界面的桌面系統使用,又能用于滲透行動的投置機,而且還能作為破解攻擊機的系統。在這幾種應用模式之間切換完全無需任何軟體改動。這個特性極大地增加了滲透測試的靈活性。操作員可以攜帶多個相同的deck裝置到達滲透測試地點,現場酌情選擇合适的電源或其他選項(比如無線網卡、802.15.4貓等)。而不需要按照滲透測試工作站、投置機或攻擊機分别準備裝置,如果那樣的話,有可能到現場才發現有些類型的裝置根本用不上。

deck作為桌面系統

deck于2012年9月在倫敦召開的44con大會上首次亮相。當時它隻能運作在beagleboard-xm上,展示了兩種配置。第一種是作為以顯示器、鍵盤、滑鼠操作的桌面系統。另一種是帶有7寸觸摸屏和緊湊型演講鍵鼠外設的配置。我在44con大會上說這樣的裝置可以輕松放進孩子的午餐盒中。會後我回到家看到巴斯光年便當盒,于是就發明了滲透測試餐盒。之是以選擇巴斯光年是因為,使用這個強大的滲透測試餐盒,你将在破解中超越極限,所向披靡!圖1.7展示了這些裝置。

自2012年9月釋出以來,先後制作了幾種桌面配置的deck系統。其中一種帶有7寸觸摸屏、alfa無線網卡(顫音搖杆被替換成了5db天線)、一個rfid讀卡器,這些都裝到視訊遊戲吉他中。這個綽号為“haxtar”的系統看起來像個玩具,很容易被當作沒有任何危害的東西讓人放松警惕。實際上,它是一個強大的便攜式滲透測試系統。由于配有背帶甚至可以站着使用,用一個無線演講鍵鼠組合作為輸入裝置。haxtar裡邊還有充足的空間可以容納802.15.4子產品和藍牙。haxtar如圖1.7所示。

2013年4月,beagleboard組織釋出了新的闆子——beaglebone black(bbb)版。這個新系統的處理能力和beagleboard-xm(bb-xm)相當,但價格隻有bb-xm的三分之一。與最初的beaglebone不同,beaglebone black帶有hdmi輸出,很适合作為桌面系統使用。兩個版本的beaglebone都和beagleboard-xm一樣能直接連接配接到觸摸屏。由于最初的beaglebone計算能力不如beagleboard-xm或beaglebone black,是以不太建議用它作為桌面系統。圖1.7給出了一個運作桌面系統的beaglebone black闆。

機緣巧合

deck系統的由來

在各種場合經常有人問deck系統的創意源自何處。在開發deck系統之前,我做了大量關于usb大容量儲存設備驗證方面的工作。在此過程中,我有幸于2011年9月在倫敦召開的44con會議上示範了基于單片機的袖珍usb存儲驗證拷貝器。當時所采用的單片機的一個局限就是它不支援高速usb。這意味所開發的裝置很适合拷貝u盤,但對于像移動硬碟這樣的大容量存儲媒體則太慢了。是以我想重新開發支援高速usb的驗證系統。

幸運的是,在2011年夏天底特律的maker faire盛會上,我展示基于單片機的裝置。碰巧我的展台緊挨着beagleboard.org基金會jason kridner的展台。當時beagleboard-xm剛釋出,那兩天展覽上,jason正在做十分吸引人的示範。那是我第一次聽說beagleboard,但是一下子就看到了這款小闆子的巨大潛力,于是就把它記在心裡以備将來在項目中使用。

當決定把我的usb工具更新到支援高速usb時,beagleboard-xm自然成為最佳方案。于是就開始研究beagleboard-xm。很快我意識到,這麼強的硬體隻用來做驗證的拷貝器實在太浪費了。我決定用它開發一個滲透測試工具。在這之前我一直在做自己的linux發行版。這個滲透測試的工具的制作讓我如癡如醉,以至于都把驗證功能的事抛在腦後了。後來驗證功能被做成了一個叫作4deck的子產品,2012年9月與deck 1.0同時釋出。

deck用作投置機

這裡所說的投置機(dropbox)是指在滲透測試中可以被植入到目标組織中的小型硬體裝置。理想情況下,這些裝置成本應該足夠低廉,是以偶爾丢幾個不至于太心疼。可是那些商品化的投置機售價高達1000美元,甚至更高,即使弄丢一個也是有重大經濟損失。除了價格太高之外,許多商品化的投置機還有一些其他局限。

許多低成本的裝置要麼利用目标網絡回傳資料,要麼需要将實體裝置取回來提取所采集的資料。用目标網絡回傳資料可能會導緻投置機暴露。對于那種隻能将資料存在内置存儲器的投置機,則滲透測試員隻能等到拿回來才能獲得資料。而且一旦裝置被發現,那就連裝置帶資訊都損失了。反複去現場接觸投置機也會增加被發現的風險。

高端的商業投置機使用4g/gsm蜂窩網絡提取資料。這倒是具有不占用目标網絡帶寬的優勢,但也有缺點。在一些國家,4g/gsm服務很貴,還有可能信号覆寫不好,甚至在滲透測試的地點根本就沒信号。還有一些國家的法律法規使得投置機難以獲得4g/gsm服務。即使在法律法規不那麼嚴的地方,管理衆多的賬戶和對應的sim卡也很快就成了管理者的噩夢。使用4g/gsm時,為了節約通信費所采用的資料緩存和資料壓縮也會帶來額外的複雜性。

許多投置機的另一個限制是它們缺少标準的滲透測試工具。部分原因是它們存儲容量有限,并且計算能力不足,無法運作像metasploit這樣的強大工具。deck則截然不同,它擁有桌面滲透測試系統所具有的全部工具。

用運作deck作業系統的beaglebone制作的投置機完全沒有上述限制。beaglebone體積小,能用電池供電,這就使它易于隐藏。報價45美元一個,beaglebone black足夠便宜,偶爾損失一個不至于太心疼。配備ieee 802.15.4無線通信後,投置機無需4g/gsm服務就能向遠在一英裡(約1.6公裡)的地方傳輸資料。如前文所述,deck系統具有其他投置機所不具備的大量的工具軟體。

deck作為破解攻擊機

一提到投置機,人們往往想到的是利用社會工程活動突破目标的保安,把裝置藏到目标設施中去。在傳統滲透測試模型中,測試員可能用一個或幾個投置機收集資料并且執行一些簡單指令,但是主體工作是在他的筆記本電腦上進行的。本書給出一種新的工作模型,在這種模型下,破解活動是分布在多個裝置上進行的,這些裝置我們稱作破解攻擊機,它們接受滲透測試員控制台發出的指令,并且将結果回報回控制台。

投置機和破解攻擊機之間的界限似乎不那麼清晰。确實如此,隻要具有ieee 802.15.4連接配接,運作deck的投置機也可以像攻擊機那樣接受指令。由于低功耗的優勢,運作deck系統的裝置能用電池供電,是以有可能被放到目标系統的安保半徑之外工作。進而無需社會工程活動進入客戶的環境内部,進而大大降低了人員被懷疑的可能性。

說到這裡,你已經完全可以帶着一組帶有ieee 802.15.4貓的beaglebone這樣的小裝置去進行滲透測試了,但是好處還不止于此。體積小、重量輕還能催生出許多有趣又有用的其他潛在用法。例如圖1.8中的dalek desktop defender的玩具裡面帶有一個破解攻擊機。(也可以算作投置機吧?)玩具内部有足夠空間容納beaglebone、alfa無線網卡和ieee 802.15.4貓。被稱為airdeck的無人機載攻擊機也出現在了圖1.8中。當無法實體接近目标時,airdeck可用來做初始偵查或降落在房頂上進行滲透測試。

使用攻擊機的另一個好處是可以增加測試員和客戶環境的距離。車停在别人辦公室外邊,上邊聳立着高增益定向天線,在車裡一坐一整天,這樣的行為顯得相當可疑。相比之下,要是能坐在客戶所在街道另一端酒店的遊泳池邊就能進行滲透測試則太惬意了。使用攻擊機的另一個好處是它們能每天24小時地為你工作。而在傳統滲透測試模型中,夜間休息時工作基本上不會有什麼進展。本書的後續章節會給出關于制作和使用攻擊機的全部細節。

破解攻擊機創意的由來

deck系統名字的由來是我被問到最多的問題,而其次經常被問及的就是我是如何想到破解攻擊機的。實話實說,答案是有一天我在家裡的工作室看到了一些閑置零件,我注意到其中有幾個ieee 802.15.4(xbee)擴充卡。這些xbee無線子產品最初是我為某個為期13天的單片機課程項目準備的,這是我所工作的大學的課程。最終這些東西沒有用上,剛好我的工作台上還有幾個多餘的早期版本的beaglebone。

deck系統本來是為beagleboard-xm(bb-xm)而設計的,但我知道它能不做任何改動而運作在beaglebone上。原始版的beaglebone的處理器稍微慢一些,并且隻有bb-xm一半大小的記憶體,也沒有内置視訊輸出口。當時xbee對于我來說還是新奇的東西,于是我把xbee接到beaglebone上,想用這些被我閑置的硬體做些有用的東西,并且找點有趣的事拿xbee練練手。在我制作第一個破解攻擊機的時候,我意識到了用攻擊機進行滲透測試有巨大的潛力。

我認為能把一組攻擊機、電池以及其他附件都放到一個背包中是個絕妙的主意。我經常帶着全部家當乘飛機去參加會議,它們包括多達8個帶有完整電池和附件的攻擊機、一部筆記本電腦,以及一部平闆電腦,這些統統裝到一個小旅行包或一個手提箱中。輕松配置裝置并滿足滲透測試需求,我覺得這真的是很強的功能。而且,一個額外的好處是這些裝置實際上又價格低廉,特别是當功能更強、價格卻隻有beaglebone一半的beaglebone black闆子釋出後。

1.3 本章小結

本章對一種為滲透測試定制的linux發行版——deck進行了簡要介紹,它運作在beagleboard和beaglebone家族的arm裝置上。deck是包含有1600多個軟體包的強大的、完整的作業系統。運作deck的裝置無需做軟體改動就可以用作桌面系統、投置機或攻擊機。配備了ieee 802.15.4無線的攻擊機可以在一英裡遠的距離上接受指令。運作deck的裝置可以呈現不同的外觀,包括裸的計算機系統闆、隐藏了功能的普通辦公用品,或者無線遙控飛機。

下一章将更仔細地審視beagleboard和beaglebone家族的裝置。我将分析它們的曆史、差異和功能,并且将讨論它們的基本操作方法。

第2章

認識beagle系統闆

開放硬體

beagleboard-xm——開放硬體的桌上型電腦替代品

beaglebone——威力遠超單片機的單闆計算機

beaglebone black——兩個世界的最佳選擇

2.1 引子

設想一下某天你突發靈感,想要對某種日常必須使用的裝置做某方面的改進。可是,大多數裝置都是有專利和版權保護的,更糟糕的是,在美國分析某個産品的工作原理是違法的,這叫作逆向工程。許多公司都在最終使用者許可協定中加入了相應的條款,以阻止對其産品的逆向工程。考慮到法律問題,你還是忘掉你的創新吧,讓本可以更好的生活一如從前,得過且過吧。

總有一些人,包括本書作者,覺得這樣的情況是無法忍受的。想象一下,有一個美好世界,在那兒針對任何裝置都能得到想了解的任何事情;在那兒所有的設計都有詳細的文檔說明,能夠随意地用來對裝置進行改進或修改;在這個理想國度,一個設計甚至可以整個引用另一個設計,而完全不用擔心會攤上官司。這就是開放硬體(有時也稱作開源硬體)的世界。

開放硬體更利于整個社會的快速進步。已經存在像arduino(http://arduino.cc)、開源3-d列印機(例如:http://reprap.org),甚至開源衛星這樣的開放原型平台。開放一個硬體的設計為更多人參與進來改進它創造了機會。雖聽起來違背直覺,但實際上設計和制造開放硬體的公司也能盈利。隻要看一下arduino的數目龐大的項目和強有力的社群支援,就能知道開源項目會有多成功了。開放硬體設計能夠更好地展示各種元器件的功能。

2.2 德州儀器公司的裝置

一定程度上是為了展示和推廣公司的晶片,德州儀器(ti)允許某些員工開發和推廣使用ti公司産品的開放硬體計算機闆(詳細内容請參考http://beagleboard.org/about)。這些計算機系統闆是由叫作beagleboard.org基金會的美國非盈利公司開發的。本書成稿之時,兩位ti的員工為beagleboard.org基金會做了大量的努力——jason kridner擔任社群的管理者,gerald coley負責硬體設計。

2.2.1 beagleboard-xm

beagleboard.org開發的最早的闆子叫作beagleboard,于2008年7月釋出,現在還能買到。這個闆子基于ti公司720mhz的omap3530 cortex-a8處理器,配備256mb ram、256mb閃存、hdmi視訊和s-video視訊輸出、usb on-the-go接口、usb host接口、sd卡插槽、rs-232接口,以及立體聲音頻輸出口。這個75mm×75mm的計算機闆标價125美元。

2010年9月更新的闆子命名為beagleboard-xm,被稱作售價149美元的、能當作桌上型電腦的系統闆(見圖2.1)。這裡根據《beagleboard-xm系統參考手冊》來總結一下它的特點,完整的手冊可從http://circuitco.com/support/index.php?title=beagleboard-xm#rev_c2

取得。

德州儀器号稱beagleboard-xm所采用的1ghz的dm3730處理器是數字媒體處理器(詳見http://www.ti.com/product/dm3730)。這個處理器帶有neon simd協處理器,能夠顯著加速多媒體應用和數學計算(http://www.arm.com/products/processors/technologies/neon.php)。這個處理器采用層疊封裝(pop,package-on-package),512mb的ram晶片被裝到處理器晶片的上邊。這個處理器足以運作全功能的linux系統和标準的滲透測試工具。圖2.2和圖2.3是beagleboard-xm的照片。

  

圖2.2 beagleboard-xm的正面 圖2.3 beagleboard-xm的背面

beagleboard-xm的電源管理和音頻是由德州儀器的tps65950晶片實作的,電源和音頻結合到一片內建電路上似乎很怪異,這是因為該晶片設計目标是配套嵌入式應用處理器使用,在這樣的應用場合降低晶片個數是重要的目标。有了tps65950,beagleboard-xm就能通過usb otg連接配接pc來供電。但當使用多種外設以及lcd觸摸屏時不推薦這種供電方式,因為pc的usb口提供的功率有可能不夠。當使用大功率usb外設時,可以用y形usb電纜、帶外部供電的usb集線器,或者外部5v(2a)的電源供電。

beagleboard-xm有4個usb 2.0 host接口,當使用直流電源口而不是usb otg接口供電時,每一個usb host接口能提供高達500ma的供電能力。《system reference manual》推薦當所有的裝置都工作起來時,要使用3a的電源供電。根據作者的經驗,驅動1w alfa無線網卡工作時,2a的電源足夠了。這些host接口完全支援usb 2.0的三種速度(低速、全速、高速)。

在視訊輸出方面,beagleboard-xm提供s-video、經hdmi插座輸出的dvi-d,以及lcd觸摸屏三種方式。s-video可用來連接配接ntsc(預設制式)或pal制式的電視。闆子可以配置成向s-video和dvi-d輸出不同的顯示内容。闆上的标準hdmi插座可以連接配接數字顯示器或電視。除了電纜裡沒有音頻信号,dvi-d協定實際上和hdmi是相同的。enhanced display id(edid)或者display data channel(ddc2b)用來正确識别所連接配接顯示器的視訊配置。建議在給beagleboard-xm上電前連接配接好顯示器,以避免電湧沖擊,這種沖擊有可能損壞闆子,而且這樣也能讓系統正确識别顯示器。beagleboard-xm上一對0.05英寸2×10的插針可以連接配接lcd螢幕,比如像上一章餐盒計算機上的7寸觸摸屏(http://elinux.org/beagleboard:beaglebone_lcd7)。

beagleboard-xm帶有一個microsd卡槽,支援高容量microsd卡。這主要用來容納作業系統,當然也可以買一個更大容量的卡來存儲資料,這就省去了連接配接usb大容量儲存設備了(不說别的,大容量存儲至少會增加電源負擔)。買microsd卡的時候,多花點錢買個class 10的絕對是值得的。class 4的或class 6的用起來明顯感覺對性能有影響。beagleboard-xm與microsd的通信采用4位寬,20mhz的時鐘。

beagleboard-xm配備2個按鍵和6個led友善使用者互動。一個按鍵用于熱複位,另一個便于使用者自定義。5個綠色led的功能如下:前2個分别表示闆子上電和usb集線器上電;後3個可由i2c或gpio程式設計控制。還有一個紅色的會在直流電源輸入偏離5v時點亮,表明過壓或欠壓。雖然處理器和大部分電路都工作在3.3v,但5v對于usb電路工作是必需的。

beagleboard-xm帶有內建的快速以太網(100mbps)接口。以太網口由smsc lan9514晶片實作,它還包括usb集線器用來實作4個usb host接口。需要注意一件很重要的事情,這個晶片每次啟動産生不同的mac位址,這很可能導緻使用dhcp的時候得到不同ip位址。

beagleboard-xm上還有一些其他的在破解和滲透測試中不太會用到的接口。一個jtag接口用于闆子測試和調試。還有一個db9 rs-232序列槽用來連接配接一些老的裝置或者用作串行控制台。還可以通過闆上的一個專用連接配接器連接配接一個攝像頭子產品。有幾個擴充口引出了gpio和其他功能。

強烈推薦給beagleboard-xm闆子配上外殼保護,比如像圖2.4那樣的外殼。從special computing(http://specialcomp.com)提供的簡單亞克力外殼到esawdust(http://www.esawdust.com/product/encl-dh-xm/)的金屬殼,有多種外殼可供選擇。至少要用帶有銅柱的亞克力片(或其他不導電材料)保護一下,以防在導體上帶電檢修時短路。

2.2.2 beaglebone

beaglebone于2011年萬聖節(10月31日)釋出(http://beagleboard.org/products/beaglebone)。2009年arduino duemilanove(http://arduino.cc)釋出之後,很多人開始對用微控制器搭建自己的電子裝置感興趣。可能有人不熟悉arduino,它是另一個開源硬體項目。這個闆子售價不到35美元,釋出後,很快就圍繞它形成了一個社群。通過可以接插擴充闆(shield)的硬體和帶有大量功能庫、易于使用的程式設計環境,arduino把單片機引入到了非技術群體。雖然可以用基于16mhz 8位avr單片機的arduino做很多事情,但一些項目需要更強的計算能力,這正是beaglebone大顯身手的地方。

beaglebone可以看作是一個威力大大加強的“類arduino”闆。很多arduino那 16mhz 8位單片機無能為力的情況,德州儀器的主頻達720mhz的32位cortex-a8處理器則遊刃有餘。除了提升通用計算和數學處理的能力之外,beaglebone還能運作完整的作業系統(arduino的處理能力隻夠運作一個裝載到其中的程式)。與arduino類似,它也被設計成能夠使用擴充闆。每個闆子的擴充插針的布局不一樣。beaglebone的擴充闆叫作“馬夾”——cape,它們經常在以太網口的地方開個豁口,樣子很像一個馬夾,這個稱呼顯得尤為形象。beaglebone如圖2.5和圖2.6所示。

圖2.5 beaglebone的正面 圖2.6 beaglebone的背面

以下資訊來自于《beaglebone system reference manual》,該手冊可以從http://circuitco.com/support/index.php?title?beaglebone#rev_a6a擷取。與beagleboard-xm相似,beaglebone也采用cortex-a8處理器,但晶片封裝不同,運作速度稍慢。最大的好處是beagleboard-xm能運作的作業系統和軟體它都能運作。要知道,beagleboard誕生至今,已有大量的作業系統和軟體可用。

beaglebone載有256mb ddr2記憶體,隻有beagleboard-xm記憶體量的一半,這在運作某些大軟體(例如metasploit架構)時可能會有問題。但這與arduino 2k 的ram相比還是很有優勢的。beaglebone的闆名、版本和序列号等資訊都存儲在32kb(早期版本是4kb)闆上的eeprom中。其餘大部分剩餘eeprom空間留給作業系統和應用軟體使用。巧合的是arduino也有32kb以flash實作的非易失存儲,它用來存儲bootloader和唯一的程式。

beaglebone可由5v直流電源或usb供電。beaglebone使用了ti公司的tps65127b電源管理晶片。需要注意,當通過usb口供電時,為了確定闆子運作和usb外設工作的電力充足,cpu速度被限制在了500mhz。推薦使用5±0.1v,1a的直流電源供電。

beaglebone相對于arduino的另一個強項在usb方面,它帶有一個usb集線器,允許使用一條usb線帶起多個usb裝置。當beaglebone連接配接到pc時,上位機會檢測到一個調試序列槽、一個jtag端口和一個usb0端口,這個usb0端口直接連到beaglebone處理器上。當采用直流電源供電時,usb host端口能提供500ma,5v供電能力。當采用usb供電時,則usb host端口隻能使用低功耗的裝置,例如鍵盤滑鼠等。

與beagleboard-xm一樣,beaglebone也有一個microsd插槽,因為beaglebone沒有內置存儲,是以用microsd卡來存儲作業系統和其他檔案。microsd卡的讀寫是4位的(這是sd卡的标準)。beaglebone支援3.3v的microsd卡,包括高容量卡。arduino沒有内置sd卡存儲支援,如果不介意占用幾個gpio,有一些擴充闆可以提供sd卡支援。

比起arduino,beaglebone的另一個優勢是内建快速以太網。與beagleboard-xm不同,以太網是由專用的網絡晶片實作的,而不是用usb實作的。采用的晶片是smsc lan8710a。因為這個不同,beaglebone每次啟動都會報告相同的mac位址,會通過dhcp獲得相同的ip位址。

擴充cape被通過46針的插頭連接配接到beaglebone上,最多可以同時堆疊4個cape,隻要它們互相之間不沖突。難以想象有什麼樣的項目是beaglebone實作不了的。它有66個可用的gpio(而arduino隻有14個)。一個需要注意的要點是,beaglebone的gpio是3.3v的,而不是5v。beaglebone支援一個帶有背光的全功能lcd觸摸屏。通過擴充插座上的處理器引腳,還可以擴充出一個額外的sd/mmc卡接口。

在嵌入式電子系統中有兩種常用的串行外設互聯标準:spi和i2c。beaglebone完全支援這兩種标準,它有2路spi和2路i2c接口。每一路都可以連接配接多個裝置。其中第二路i2c必須小心使用,因為它被beaglebone用來識别和配置擴充cape(後面會有詳細說明)。arduino隻有1路spi和1路i2c接口。

擴充插座上引出了4路序列槽,在破解攻擊機應用中,可以用其中的一個連接配接ieee 802.15.4無線。beaglebone還支援2路can總線,這是一種在汽車上常用的低速但高可靠性的總線,在其他環境中也有應用。

定時器、模數轉換器(adc)、脈寬調制器(pwm)進一步提高了beaglebone的擴充能力。4路定時器信号被輸出到擴充插頭上,這些定時器對于周期性工作或重新開機cape上的元件很有用。beaglebone提供了7路每秒100 000次采樣的adc,可用來連接配接一組老式的模拟傳感器。adc是1.8v的,必須小心使用,因為這些信号直接連在處理器上。pwm可調節輸出信号的占空比,常用來驅動步進電機或用來調節led的亮度。

雖然沒有制作cape的統一規則,但有一些最大化相容性的推薦标準。為了使一款cape能夠被beagle産品經銷商出售,闆上至少要有一個eeprom,beaglebone以此來識别這個cape。前邊所說的第2路i2c總線用于和eeprom通信。需要2個跳線或撥碼開關來設定eeprom的i2c位址,使eeprom互相不幹擾,進而使系統支援多達4個堆疊的cape。

像beagleboard-xm的情況一樣,也強烈建議為beaglebone配上保護外殼。有一些像special computing(http://specialcomp.com)和adafruit industries(http://adafruit.com)這樣廠商出售外殼。根據使用不同cape的情況,優化的外殼方案也不同。如果beaglebone闆子不是嵌入到其他東西裡工作,至少要用銅柱固定上亞克力闆或其他絕緣闆以防短路。如果自己設計制作外殼,一定要使用最小的銅柱,因為闆上的某些表貼原件離安裝孔很近,很容易被碰壞。

到這裡,讀者應該明白為什麼beaglebone在這些鐵杆硬體玩家中如此流行了吧。通過本書你會看到,beaglebone還是一個功能強大、體積小巧的計算機系統,而接下來要介紹的新推出的更新版——beaglebone black則更勝一籌。

2.2.3 beaglebone black

雖然beaglebone在推出時已經很具有颠覆性了,但随着技術的進步,後來又釋出了一個更強大的版本,價格卻降到原來的一半(相比于之前的89美元,它隻要45美元),被稱作beaglebone black版(縮寫成bbb)。原始版本釋出不到18個月,beaglebone black于2013年4月23日推出。成本下降主要得益于晶片數的壓縮和大批量生産。圖2.7和圖2.8是beaglebone black。

除了價格更低,新版beaglebone還有一些改進。處理器速度從720mhz提升到了1ghz;ram從256mb翻倍到了512mb。beaglebone black使用ddr3記憶體,如今ddr3比原版beaglebone所使用的ddr2要便宜。這裡給出的beaglebone black的資訊摘自《beaglebone black system reference manual》,手冊可以從https://github.com/circuitco/beaglebone-black/blob/master/bbb_srm.pdf下載下傳。

圖2.7 beaglebone black正面 圖2.8 beaglebone black背面

為什麼不用……

開源硬體的能力是有高下之分的

在世界各地的會議上做關于deck的演講時,經常有人問我“為什麼不使用某某開源闆子?”,這裡的“某某闆子”通常是樹莓派(raspberry pi),碰巧它還不是開源的。簡短的回答是樹莓派不适合我們的情況,詳細的解釋請看下文。

樹莓派沒有beaglebone black功能強。實際上,即使是比樹莓派更早的beaglebone也要比它強。beaglebone black使用1ghz的現代cortex-a8處理器,樹莓派使用的是隻有700mhz的bcm2835晶片。樹莓派缺少運作像metasploit這樣強力滲透測試工具所需的處理能力。德州儀器自由地釋出他們處理器晶片的資訊,而broadcom卻要求簽署nda才能得到應用他們晶片的細節。broadcom的晶片使用支援不夠好的陳舊arm6指令集。這限制了樹莓派所能使用的作業系統。特别地,樹莓派不能使用ubuntu。像下一章介紹的,deck是基于ubuntu的。

樹莓派也沒有beagle家族成熟。最早版本的beagleboard在2008年就已經傳遞了。beaglebone到使用者手裡的時間比樹莓派早了足足半年。甚至樹莓派項目啟動一年後,批量購買都還成問題。相比之下,beaglebone black釋出後一周我就買了好幾塊闆子,根本不用等幾個月才能拿到。

盡管建構滲透測試硬體時價格并不是主要問題,但用樹莓派建構完整系統則要比使用beaglebone black貴得多。當外殼、usb電纜、電源,以及擴充闆都配齊時,兩個闆子本身報價的差異立即就消失殆盡了。另外,當買多個beaglebone時,多數經銷商都會提供折扣。

樹莓派提供最多17個gpio線(僅比arduino多一點),而beaglebone闆可以提供66個gpio線。樹莓派采用的是很脆弱的插針,需要購買一個排線來連接配接其他硬體,相比之下beaglebone則使用堅固的插針,可以在闆上直接擴充cape。beaglebone很易于實作緊湊(并且更可靠)的設計。

盡管樹莓派的處理能力低,但它卻比beaglebone需要更多的電能。因為運作的軟體不一樣,很難給出有意義的電能比較。據說,根據經驗測試(例如2013年5月19日釋出的題為《樹莓派(b型)功耗,低壓測試》的文章,http://www.youtube.com/watch?v=4a_ocg9uzbo),樹莓派消耗的功率是beaglebone的150%~200%。既然我們要建構電池供電的裝置,beaglebone black在同類産品中穩拔頭籌。

說到這兒,顯然樹莓派并不是建構滲透測試的理想選擇。本書成稿時,幾個把deck移植到其他arm系統的實驗正在進行中。這将評估是否要把這些平台納入官方支援。這些移植的最新進展參見官方網站(http://philpolstra.com)和我的部落格(http://polstra.org)。

beaglebone black帶有2gb的emmc非易失存儲(本書寫作時,正在讨論在後續版本擴充到4gb)。随機安裝的angstrom linux系統安裝在emmc中(宣布不久後新闆出廠的預裝系統将是debian linux)。相比于microsd的4位接口,emmc的接口是8位。由于闆載emmc的配置是已知的,可以最大限度根據其參數優化性能,而不用像microsd卡那樣,隻有卡插入後才能确定參數。出于這些原因,使用emmc存儲根檔案系統時能夠獲得巨大的性能提升。不幸的是deck系統高達6gb多的根檔案系統太大了,無法存儲在emmc上。

beaglebone black一個最明顯的變化是增加了microhdmi插座輸出hdmi視訊信号。hdmi支援是由nxp tda19988 hdmi成幀器實作的。beaglebone black支援高達1920×1080的視訊分辨率。beaglebone black預設使用edid報告的最高分辨率。正因這個原因,在beaglebone black系統啟動前連接配接并且打開顯示器是很必要的。與beagleboard-xm不同,該接口支援包括音頻在内完整的hdmi規範。隻有consumer electronics association(cea)标準中的分辨率下才支援音頻,因為所有高清電視都支援這些分辨率,是以為beaglebone black找到顯示器完全不成問題。

然而,不像增加hdmi插座那麼明顯的變化是,beaglebone black也比原版更省電了。壓縮掉了幾個晶片導緻所需的電流大大降低(差不多30%)。結果,基于beaglebone black的電池驅動的破解攻擊機能夠比基于舊版beaglebone的運作更長的時間。

beagleboard.org團隊盡可能讓新版beaglebone相容原版。購買cape時,一定要確定是beaglebone black相容的,可以到http://elinux.org/beagleboard:beaglebone_capes檢查相容性。增加emmc和hdmi導緻幾個原來在擴充口上可用的引腳,現在被beaglebone自己占用了。用到這些被emmc和hdmi占用引腳的cape則必須把相關的功能關掉才能工作。在我們的應用中這不是問題,因為deck系統太大不能放到emmc中,并且對于破解攻擊機,hdmi輸出并不需要。兩個beaglebone版本之間還有一些其他的差異,但都跟我們的滲透測試關系不大。關于這些差異的詳細情況可以參考《system reference manual》。

如前所述,beaglebone black應該配上外殼或把它裝到絕緣的材料裡保護起來,以防短路。adafruit(http://www.adafruit.com/category/75)出售小的亞克力外殼和能容納一個beaglebone加上幾個cape的大外殼。大多數像special computing(https://specialcomp.com/beaglebone/)這樣的其他beaglebone商家也都有簡單的亞克力外殼出售,價格差不多10美元。圖2.9和圖2.10展示了special computing的外殼。原版beaglebone的外殼如果用電鑽或類似的工具開個microhdmi插座的槽,也能用在新版beaglebone上。如果讀者想自己制作外殼,一定小心别用太大的銅柱,因為這有可能會碰壞靠近安裝孔的元器件。

圖2.9 裝上special computing外殼的 圖2.10 裝上special computing外殼的

beaglebone black正面 beaglebone black背面

2.3 本章小結

表2.1給出了beaglebone black、原版beaglebone和beagleboard-xm的差異。這些資訊來自http://beagleboard.org/products的圖表。

通過閱讀本章,讀者了解了來自beagleboard.org的幾款開放硬體小計算機系統闆。149美元的beagleboard-xm可以用來建構外形緊湊、能源高效的滲透測試桌面系統。最新的beaglebone black隻要45美元,卻擁有幾乎與beagleboard-xm同樣的性能。無論作為滲透測試的桌面機還是攻擊機都很适用。至此,已經介紹了deck系統和它運作所依賴的硬體,下一章将深入到安裝基礎作業系統的詳細過程中去。

表2.1 beaglebone black、原版beaglebone和beagleboard-xm的比較

beaglebone black beaglebone beagleboard-xm

處理器 am3358

arm cortex-a8 am3358

arm cortex-a8 dm3730

arm cortex-a8

最大cpu速度 1ghz 720mhz 1ghz

模拟引腳 7 7 0

數字引腳(電壓) 65(3.3v) 65(3.3v) 53(1.8v)

記憶體 512mb ddr3 256mb ddr2 512mb lpddr

usb hs usb client/host hs usb client/host 4 口hs usb hub,

usb otg

視訊 microhdmi、cape cape dvi-d、s-video

音頻 通過hdmi輸出 cape 3.5mm插座

支援的接口 4xuart、8xpwm、lcd、gpmc、mmc1、2xspi、2xi2c、a/d轉換器、2xcan總線、4個定時器 4xuart、8xpwm、lcd、gpmc、mmc1、2xspi、2xi2c、a/d轉換器、2xcan總線、4個定時器、ftdi usb轉序列槽、通過usb 的jtag mcbsp、dss、i2c、uart、lcd、mcspi、pwm、jtag、camera接口

報價 45美元 89美元 149美元

第3章

安裝一個基礎作業系統

beagle系統闆可用的作業系統

滲透測試的linux發行版所需的功能特性

ubuntu方案

新核心的變化

裝置樹

制作beagle可用的microsd系統卡

3.1 引子

正如前一章學到的,beagleboard.org從2008年就已經開始發售開放硬體的開發闆。本章将簡要地考察beagleboard.org網站上列出的一些作業系統方案。在對這些可用的系統有了基本的感性認識之後,讨論了滲透測試的linux發行版應該具備的特性。在選出合适的基礎作業系統後,将讨論一些細節以及近期的核心變化對我們的決策産生的影響。最後,詳細說明如何制作一張含有所選系統的microsd卡,并将它安裝到beagles上,以此作為本章的結尾。

3.1.1 非linux選擇

坦誠一點說,由于我們期望做出一些有黑客樂趣的,并且可以用于滲透測試的東西,是以幾乎可以肯定,我們的終極選擇一定是某個linux版本。即便如此,出于完備性的考慮,這裡仍想簡短地介紹一下beagles可用的一些非linux系統方案,并以此證明這些開發闆的超強的通用性。

windows ce

你可能認為無法在一個開放硬體上運作一個專有作業系統,但是在這兒,真的做到了。如我們所知,beagleboard-xm和beaglebone比很多運作windows xp的裝置擁有更強的計算能力,你也許會疑惑為什麼不運作一個完整版本的windows而是windows ce(通常被稱為wince,官方稱謂是windows embedded compact。)答案是windows ce能夠通過闆級支援包(bps)運作在arm架構的裝置上,而桌面版的windows是不相容arm架構的。adeneo(adeneo embedded)以德州儀器(texas instruments)提供的标準bsp為基礎,建立了beagleboard-xm的bsp(http://www.adeneo-embedded.com/en/products/boardsupport-packages/beagleboard)。根據beagleboard.org網站上的評論,人們更喜歡在beagles上運作一些其他的東西(http://beagleboard.org/project/wince7+bsp+for+beagleboard-xm/)。如圖3.1所示,windows ce運作在使用7寸chipsee液晶屏的beaglebone black上。

qnx

beagle系列開發闆可以運作qnx neutrino 實時作業系統(rtos)(http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html)。實時作業系統是用于那些系統響應時間确定、響應時間盡可能短的嵌入式裝置的。一個典型的實時作業系統是輕量級的,并且通過對中斷和定時器的支援來與硬體緊密結合。qnx的實時作業系統是一個以微核心設計為特色的系統。這家公司提供了幾個參考設計以展示qnx neutrino(http://www.qnx.com/products/reference-design/ti-reference-design.html)的相容性。圖3.2是運作在beagleboard上的qnx智能節能系統參考設計。

圖3.1 windows ce運作在使用7寸chipsee 圖3.2 運作在beagleboard上的qnx智能

液晶屏的beaglebone black上 節能系統參考設計

freebsd

freebsd是基于伯克利軟體發行版(bsd)的unix。linux則基于system v(sysv)版本unix的,system v是另一個主要的unix分支。這兩種unix系統的差異足以讓使用者郁悶。bsd和sysv有很多一樣的指令,但是指令參數經常是不一緻的。一些安全社群認為bsd系統比sysv系統更安全。如果你是這種說法的支援者的話,很幸運,beagle系列開發闆可以運作freebsd(http://beagleboard.org/project/freebsd/)。圖3.3所示的是一個運作着fressbsd的bealge相容開發闆。

圖3.3 bealge相容開發闆運作的freebsd

starterware

starterware是一種什麼樣的作業系統?從技術角度來講,它根本不算是一個作業系統。對于一些應用來說,一個完整的作業系統是不必要的。脫離作業系統可以讓更多的性能用于應用本身,但這通常是有代價的。你可以想象一個作業系統就像一個漂亮的界面,能夠把你從繁雜醜陋的硬體細節中拯救出來。例如,你可以把一個要存儲的檔案交給作業系統,它會決定使用哪個硬碟扇區,建立一個目錄入口點,并且和硬碟控制器進行通信。德州儀器的starterware提供了一個功能集合庫,這個庫提供諸如usb、圖形、spi、gpio、中斷和網絡支援,省得那些想要開發裸機應用程式的人一切從頭做起。

android

雖然android最初是給行動電話開發的,但現在它也成了一種應用廣泛的嵌入式作業系統。德州儀器為幾個android版本提供了開發工具包(http://www.ti.com/tool/androidsdk-sitara)。circuitco公司在他們的網站上提供了安裝android的教程(http://circuitco.com/support/index.php?title=android)。或許讀者知道,android是基于linux核心的,很多指令在android和linux系統上都可以使用。閑話少說,接下來就讨論那些可以用于beagleboard.org開發闆的、種類繁多的linux系統吧。圖3.4展現了一個配有chipsee觸控屏的beaglebone black運作android的示例。

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

備注 好——非常輕量

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

備注 優秀——基于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 <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發行版的必備要素之後,再深入讨論這個問題。

3.2 滲透測試linux發行版本所需的功能特性

現在我們對beagles上可用的系統已經有所了解,順理成章地,我們該問自己什麼功能特性應該是适合的滲透測試linux發行版本必備的。被選擇的發行版本應該提供良好的性能和社群支援,軟體包倉庫要包含絕大多數我們想要使用的工具,容易配置,并且工作可靠。

怎麼才能實作良好的性能?所有beagles系統闆都使用armv7 cortex a8處理器,這些晶片支援“硬體浮點”數學處理器。運作一個能夠相容老的arm架構的支援“軟浮點”系統如同在i7處理器的機器上運作windows 98。良好的性能起始于一個好的基礎,這裡,它意味着一個支援“硬體浮點”運算的核心。在這個基礎上,進一步地需要建構一個有效的檔案系統,優化的驅動以及隻開啟必需的服務。

等着我們的将是一番艱苦卓絕的奮鬥,因為不可能一帆風順,這是作為技術開拓者必須經曆的。這也是要選擇一個擁有良好社群支援的linux發行版本的原因。正是因為擁有一個強有力的社群,才讓beagles從同類開發闆中脫穎而出。beagle使用者可以使用線上聊天、論壇和郵件清單。郵件清單非常活躍,在一個比較受歡迎的linux發行版本中,一個小時能收到關于某個問題的多個答複是很常見的。甚至不必大驚小怪,回答你問題的人可能正是開發闆設計者或者發行版本開發團隊領袖本人。

好的軟體倉庫可以使一個linux發行版本更容易使用。反過來,如果你需要一直在網際網路上尋找需要的軟體,或者更糟糕的,總是被迫直接從源碼編譯的話,也許該考慮換一個linux發行版了。大部分發行版本對桌面應用都有良好的支援,雖然這對我們的也很重要,但我們更關心對主要黑客工具的支援。能有多個可選的文本編輯器固然很好,但遠趕不上能夠輕松安裝aircrack-ng、wireshark和scapy(一個python編寫的網絡工具)重要。

我們一直嘗試建構靈活性好的裝置,可以用作投置機、破解攻擊機,或者滲透測試桌面環境。這需要一個可以很容易配置的作業系統。系統應該可以很容易地用熟悉的工具進行配置和重新配置。選中的系統應該允許随意地關閉不必要的功能和特性,網絡參數可以進行修改和遠端配置。

在我們的應用中,穩定可靠也是非常重要的特性。如果不能確定運作數小時既不當機也不崩潰,即使電池能支援遠端破解攻擊機運作2天又有什麼用呢?當裝置能夠在目标環境中接通電源或者從pc取電(例如嵌入到dalek desktop defender玩具的情況),它們應該能夠無故障地一直運作下去。

分析了上面9個linux發行版本,ubuntu成為明顯的勝出者。最重要的一點就是能在arm架構上為黑客工具程式提供強有力的支援。作為世界上最受歡迎的linux發行版本,ubuntu享有極好的社群支援。正是那些默默奉獻者的努力,才讓beagles用上優化的ubuntu。雖然也可以基于arch linux、gentoo或者debian建構一個系統,但這可能會比ubuntu多花很多時間。不妨設想一下,你是願意把寶貴時間花在折騰作業系統上,還是更想用這些時間來創造一些很棒的破解腳本呢?

3.3 基于ubuntu方案的選項

現在我們已經決定使用ubuntu,你可能會認為這就完事兒了,但你錯了。ubuntu提供給我們一大堆選擇,第一個要做的決定是選擇哪個ubuntu版本,本書編寫時,ubuntu 13.04和13.10已經可以在beagles上使用了(更高的版本也是可用的,隻要你用的不是beaglebone black)。基于ubuntu 14.04的一個實驗版本也可以使用了。因為ubuntu13.04完全滿足目前的需要,并且它是久經考驗的穩定版,是以本書将選擇它。

ubuntu 13.04選擇妥當後,仍有一些細節需要确認。是否應該把beaglebone black的作業系統安裝在emmc上?emmc的空間隻夠安裝指令行版本的ubuntu,deck的根檔案系統超過6gb。如果把作業系統放在emmc上,那将需要挂載優盤或者microsd卡來安裝全部工具,在這種場景下嘗試安裝桌面環境是不現實的。而且,既然使用了外部的存儲媒體,使用emmc帶來性能增益已經完全被抵消掉了(系統可能會更慢);并且,耗電将會增加。由于這些原因,我們将把帶桌面環境的ubuntu13.04的基本系統安裝到一個8gb或者更大的sd卡上。

現在我們已經決定了安裝什麼和存儲到哪裡,接下來需要選擇一個安裝方法,三種主要的安裝方式是:下載下傳預配置的鏡像、網絡安裝和手動安裝。因為我們想要繼續建構我們的工具集合(下章的主題),手動安裝的方案就被排除了,因為花的時間太長,并且太容易出錯。考慮到要在多個系統上建構,是以網絡方式也被排除了。從一個預配置的鏡像開始似乎最适合我們的情況,預配置鏡像提供了一個基礎的根檔案系統,可被解壓到microsd上。把工具添加到這個根檔案系統中,然後重用安裝腳本,将我們的定制鏡像應用到多個系統上。

3.3.1 ubuntu變種

canonical提供了beagles和其他arm系統的鏡像。但是,這些鏡像并未進行優化。本書寫作時,canonical仍未提供ubuntu 13.04的鏡像,12.04還是最新的版本。幸運的是,robert c. nelson已經為beagle家族的闆子提供了一個demo鏡像和優化的核心。nelson的demo鏡像是一個好的起點,它是隻有指令行環境的鏡像,是以我們需要在安裝各種黑客工具前安裝一個視窗環境。

3.3.2 核心的選擇

nelson先生的ubuntu 13.04的鏡像使用3.8或者更高版本的核心。本書寫作時,3.8的核心是beaglebone和beaglebone black的預設核心, beagleboard-xm使用3.12作為預設核心。通過更新檔可以把beaglebone的核心更新到3.12,如果使用3.8時遇到了問題,可以考慮安裝這個更新檔。核心鏡像可以在nelson的網站上http://rcn-ee.net/deb/raring-armhf/ 得到。3.8的核心在arm平台上展現出了大量的變化。在之前的版本中,arm系統制造商不得不提供定制化的核心,這種情況對任何人來說都沒有好處,是以裝置樹作為應對硬體差異化的新方法應運而生。

beaglebone black是第一個運作支援裝置樹的新核心的開發闆,這可能會帶來一些暫時的困擾,但是,最終結果值得忍受這暫時的不适。裝置樹是一個資料結構,核心用它實作跨多種體系結構(http://elinux.org/device_tree)的标準方式來發現和配置裝置(包括那些主機闆内置的裝置)。裝置樹使得計算機系統以及附加硬體的設計者的生活變得更美好。

本書後面将會對裝置樹進行更詳細的說明。現在,隻需要把它看作一種更加容易支援所購買和建構的cape的簡潔方法即可。如果購買的裝置有eeprom來描述自身,作業系統可以自動使用叫作裝置樹層疊的方法連接配接并配置相應的裝置。對于那些你建構的和其他沒有自身描述eeprom的裝置,可以加載一個或者多個包括在ubuntu裡的裝置樹層疊。

3.4 建立一個microsd卡

本章已經囊括了足夠的理論知識,是時候實際操作一下了。我們将安裝robert c. nelson版本的ubuntu 13.04到microsd卡上。如前所述,之後将重複用這個安裝過程去把完整滲透測試發行版鏡像安裝到多個硬體裝置上。如果想安裝deck系統,則需要一個8gb或者更大的microsd卡。多花錢購買一個更快的microsd卡(class 10或者更好的)是值得的,節省這點兒錢而使用class 4或者class 6的sd卡是完全不值得。另外,不是所有廠商的産品都是一樣的。我已經見識過在标稱同一速度的卡持續讀寫的時候,有多麼大的差距。

nelson先生已經讓beagles(和其他基于arm架構的開發闆,如pandaboard)上安裝ubuntu變得很輕松。下面的指導說明來自 http://elinux.org/beagleboardubuntu。如果你使用上面的說明遇到了問題,可以求助于elinux.org頁面。接下來需要下載下傳鏡像,選擇性的校驗,解壓它,然後運作一個安裝腳本:

上邊的setup_sdcard.sh運作要長達幾分鐘。這個腳本初始化microsd卡,安裝正确的核心,然後把一個小型的根檔案系統拷貝過去。它運作的時間主要取決于卡的寫速度。後邊重用這個腳本和這個過程時,花費的時間比這要長得多,因為完整的根檔案系統大了很多,deck的根檔案系統超過6gb,而nelson先生的基本根檔案系統隻有不到400mb。3.6節将對該腳本深入講解。

3.5 本章小結

本章考察了beagleboard.org系列計算機闆可用的多種作業系統,把它們逐一按照我們的标準進行分析評估,這些标準是作為建構滲透測試發行版的基礎系統所必備的。最終robert c. nelson定制的ubuntu 13.04脫穎而出。我們也看到這個基礎系統很容易通過一個腳本來安裝。下一章将深入讨論在這個基礎上添加一有用的工具,把它打造成一個完整的滲透測試系統。

3.6 本章附錄:深入分析安裝腳本

安裝ubuntu如此簡單的一大部分原因是robert c. nelson完善的安裝腳本,這個腳本有1700行,大部分腳本都是用于驗證的。其中最有關系的部分包括在這裡。第一段包括了版權資訊聲明和基本的安裝說明。除去版權資訊聲明,大部分注釋用于解釋這個腳本:

除去進行大量驗證工作後,腳本歸結整理後隻有下面幾行:

在上面的腳本中調用的函數内容如下,函數已經加注釋。為了簡化内容,部分與beagles無關的函數已經被移除了:

繼續閱讀