-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Android安全攻防實戰

( 簡體 字)
作者:崔孝晨,武曉音類別:1. -> 程式設計 -> 手機程式 -> Android
   2. -> 安全 -> 網路安全 -> 駭客攻擊與入侵
譯者:
出版社:電子工業出版社Android安全攻防實戰 3dWoo書號: 41723
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:7/1/2015
頁數:320
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121261077
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序
¬¬



這是一本Android安全的實訓教材,你甚至可以把它當成參加一次專家手把手的專題培訓!
自從Android操作系統成為移動平臺上的兩大主流操作系統之一后,Android系統的安全性就受到了廣泛的關注,確實也出版過幾本Android安全方面專著,但是這些著作實在是太高大上了一些,一般都是要從高深的原理講起,嚇跑了許多對它感興趣的愛好者。即使有人硬著頭皮看下去,也如墜云里霧里,短期內無法把學到的知識,融會貫通地運用到實踐中去。更別提那些只是不想讓自己的代碼淪為別人的“炮灰”的程序員了,他們確實學到了一些黑客知識,但是面對這些攻擊時,又該怎樣防護自己編寫的代碼呢?
本書的英文原名為《Android security cookbook》。其中的單詞“cookbook”是“菜譜”的意思,也就是在給定場景下,如何進行操作的操作指南。顧名思義,書中的內容也就是針對典型的Android安全攻-防場景,通過實驗來說明Android安全技術原理的。利用這種教學方法,能使學員快速上手,通過相對簡短的培訓,解決大部分實踐中可能遇到的問題。由于本書同時也計劃作為我校“網絡安全與執法”專業“移動平臺安全”課程的實訓教材,所以我將書名直接譯為《Android安全實驗教程》。
實用性是本書最大的特色。除了常規工具外,作者還介紹了開源的Android安全評估框架“drozer”,利用這個工具,你不僅可以“敲一、兩個命令”就能完成以前要花很大代價才能搞定的活。有經驗的安全研究人員還能為自己定制開發一些針對特定問題的插件,讓自己活得更滋潤些。而且,由于這個框架能夠暴露出Android app內部實現的許多細節,隨著你越來越熟練的掌握這一工具,你對Android的理解也一定會越來越深入。
對于想要尋找代碼加固方案的程序員來說,本書中更是針對常見的攻擊方法,提供了詳細且極富操作性的代碼加固建議,其中不光有系統中自帶的庫或新增的特性的使用方法,也介紹了不少開源的庫,通過對它們的使用,能把你的軟件的安全性提高到一個新的級別。
本書的作者也不是光說不練的嘴把式,他們都是Android安全圈中的大牛,作者Keith Makan就是多個0day漏洞的發現者,數次入選谷歌應用安全名人堂(Google Application Security Hall of Fame);而作者Scott Alexander-Bown也是移動app開發、逆向和加固方面的專家,在多個國際會議上做過演講。
單詞“application”在書中,既是指用Java語言編寫的Android應用,也指使用Android NDK編寫的原生(native)應用程序,顯然,在翻譯時,將它們不加區分的全部譯為“應用”或“應用程序”是不合適的。為了表示其中的區別,在翻譯中,我們將用Java語言編寫的Android應用一律譯為“Android app”,而用Android NDK編寫的原生應用程序則全部譯為“應用”。
全書由上海公安高等專科學校的教師教官翻譯完成的,全書共九章,分工安排如下:
第一至第四章由武曉音同志翻譯,第五至第九章由我翻譯。全書翻譯完成后由我統一審校。
本書中文版的面世,特別要感謝博文視點的各位編輯老師,特別是顧慧芳、劉皎老師,感謝你們對我的一貫支持和耐心的指導,使我從中獲益良多!同時也感謝你們為本書的出版所花費的大量時間!此外,也要感謝Team509安全研究小組的朋友們在本書翻譯時給予的寶貴建議!
由于翻譯時間倉促,書中存在錯誤在所難免,敬請讀者不吝指正。

崔孝晨
2015年2月





前言
¬¬


Android已經快速地成為了最主流的移動操作系統之一——這不光是對用戶而言,也是對開發者和所有類型的公司而言的。當然也正是因為這個原因,它也成了惡意敵手眼里的一塊肥肉。
自從2005年進入公眾視線時起,Android在功能和復雜性上都有了長足的進展。移動智能手機中一般都存有其使用者的非常敏感的信息,而且還能訪問他們的電子郵件、短消息,以及公共網絡和專門網絡的服務。就像其他所有軟件一樣,在功能和復雜性增長的同時,也會增加安全風險。軟件越強大,越復雜,人們就得越努力地應對和適應險惡的大千世界。
這一點還特別適用于移動智能手機上的軟件。這些存放私人信息和隱私信息的溫床,必然存在于我們十分關心的一個安全的上下文環境中,同時,我們也要在這一環境中解決問題。從一方面看,移動智能手機的安全上下文環境,與網上的或“云”中的服務器中的安全上下文環境是截然不同的。因為究其本質而言,網上的或“云”中的服務器是不會移動的。它們不會被輕易地搬走或偷走。我們可以同時強制執行軟件的和物理的防護措施保護它們,使之未經許可就不能被訪問。我們也可以一直監視它們,并及時響應各個安全應急事件。但是對于我們經常放在口袋或手提包里,帶著到處跑,還會被落在出租車里的設備來說,游戲規則就完全變了。
Android的用戶和開發者需要持續關注他們的移動安全風險,而正是因為這一原因,對移動安全和風險評估專家和安全工程師的需求也一直是很旺盛的。本書致力于降低成為Android安全評估專家之初的學習難度,并希望成為經驗豐富的Android安全專業人士手中的工具,幫助他們解決常見的Android安全問題。
本書的內容
第1章“Android開發工具”介紹了安裝和運行開發者用來編寫Android app和Android平臺上的原生級組件的工具。這一章也為那些想要了解如何搭建常用的Android開發環境和相關工具的新手做了一個大致的介紹。
第2章“實踐app安全”介紹了Android操作系統提供的,專門用來保護app的組件。這一章里將討論:(對app的)手工檢查和一些用來保護app的安全相關的工具和服務的使用方法,以及用它們與操作系統交互的方法。
第3章“Android安全評估工具”介紹了一些主流(新的或即將發布的)安全工具和框架,Android安全專業人士可以用它們來評估app暴露給用戶的技術風險。在這一章里,你將學到如何安裝、運行和擴展本書之后的這些章節中會使用到的黑客和逆向工程工具的功能。
第4章“利用app中的漏洞”介紹了針對Android app的目的漏洞利用技術的框架。這一章的內容涵蓋了所有類型的Androidapp組件,從源碼和app間上下文關系的角度,詳述了如何檢查這些組件的安全風險。另外,這一章里還將介紹在第 3 章“Android安全評估工具”中介紹的工具的一些高級用法。
第5章“保護app”的寫作目的與第4章“利用app中的漏洞”的目的是完全相反的。這一章并不光討論app中的漏洞,也討論如何修補它們。它將引領讀者學習那些開發者能夠用來保護他們的app,免受第4章“利用app中的漏洞”中詳細描述的一些攻擊危害的,有用的技術。
第6章“逆向app”幫助讀者學習如何破解app並教授他們Android逆向工程師用來檢查和分析app時所使用的技術。你將會非常詳細地學到Dex文件的格式,以及如何把Dex字節碼解析成易于進行逆向工程的更有用的表示形式。這一章里也會介紹一些逆向工程師用來動態分析app和運行在Android操作系統上原生組件的新奇的方法。
第7章“網絡安全”幫助讀者深入研究一些app開發者能用來保護他們通過網絡傳輸數據的實用方法。使用這些技術,你可以在安全套接字層(Secure Sockets Layer,SSL)通信中添加更有效的驗證。
第8章“原生代碼中漏洞的利用與分析”專門用來討論關于Android平臺上原生可執行程序的安全評估和測試技術。讀者將會學到怎樣去尋找能用于root手機和在Android系統中提權的安全漏洞——那些能用來對原生服務進行包括內存溢出攻擊和利用競爭條件漏洞在內的底層攻擊的漏洞。
第9章“加密與在開發時使用設備管理策略”將專注于如何正確地使用加密技術和避免一些常見的錯誤做法,以保護你的app中數據的安全。這一章中將給你使用幾個健壯的,幫助你節省開發時間的第三方庫,來快速且安全地加固你的app的安全性的建議。為了使討論內容完整,我們還將介紹如何使用Android設備管理API,來實現和強制執行企業安全策略。
閱讀本書時所需的軟件
雖然,在閱讀本書時需要使用一些軟件,但是在本書的許多實驗里,在真正下載和用這些軟件做實驗之前,都討論了下載和安裝它們的方法。
話雖如此,但在開始做實驗之前,你可能還是最好先準備好下列軟件:
The Android Software Development Kit (SDK);
The Android Native Development Kit (NDK);
GNU C/C++ 編譯器(GCC);
GNU 調試器(GDB);
Python,最好是2.7,3.0可能有時會無法正常工作;
Virtual box;
Ettercap (for Windows版的或Linux/UNIX版的);
Dex2Jar;
Objdump;
Radamsa;
JD-GUI;
The Java Development Kit (JDK);
drozer,一個Android 安全評估框架;
OpenSSL 命令行工具;
keytool命令行工具。
這本書是寫給誰的
本書中有些章節是專門用來討論如何利用Android app中漏洞的,而另一些章節則討論如何加固它們。本書的目標是:同時展示硬幣的兩面——攻擊和防御。
安全研究人員,分析師和滲透測試人員會喜歡如何利用Android app中漏洞的部分。而想要學習更多安全方面知識的app開發者,將會從保護app免受攻擊危害的部分中獲得切實可行的建議。
字體風格約定
在這本書中,你會看到一些不同排版風格的文字——這些不同的排版風格是用來區分各類不同的信息的。下面是一些排版風格的樣例及對其所表示的意思的解釋。
文字中的“Code word”字體的部分,表示數據庫中表的名字、目錄名、文件名、文件擴展名、路徑、URL和用戶的輸入。比如:“上一步中你選中的系統鏡像的ID可以用-t參數來指定”。
代碼塊是像下面這樣表示的:
from drozer import android
from drozer.modules import common, Module
class AttackSurface(Module,common.Filters, common.PackageManager):
如果我們希望你注意代碼塊中的某些部分,那么相關的行或語句就會被加粗:
from drozer import android
from drozer.modules import common, Module
class AttackSurface(Module,common.Filters, common.PackageManager):
命令行窗口中的輸入或輸出,則被表示成這樣:
sudo aptitude update //如果你已經裝好了aptitude
第一次出現的術語和重要的單詞會被加粗。在正文中,你會在屏幕上,菜單欄或對話框中看見的文字,也會像這樣出現:“當你同意了用戶許可協議之后,你可以單擊“安裝”按鈕,收集你的文檔和API”。

警告或重要的提示會出現在這樣的地方。

小竅門或小技巧會這樣顯示。
讀者反饋
我們總是歡迎你——親愛的讀者提出寶貴的意見。請讓我們知道你對本書的看法——無論你喜歡還是不喜歡。反饋意見對我們今后出版你真正最需要的東西是非常重要的。
如果只是一般的意見,請給feedback@packtpub.com發送電子郵件,并在主題中注明書名即可。
如果你對某個主題特別有研究,或者你有興趣寫一本書或投稿,請移步我們的作者指南頁面www.packtpub.com/authors。
售后服務
你現在已經是尊貴的Packt book的客戶了。我們愿意為你的購買提供全面的服務,使你獲得更多東西。
下載示例代碼
你可以在網站http://www.packtpub.com你的賬戶中,下載所有你已經購買了的Packt books的示例代碼。無論你是在哪里購買這本書的,你都可以用你的電子郵箱注冊一個賬號,訪問http://www.packtpub.com/support頁面。
勘誤
盡管我們已經非常仔細地校對了稿件,但錯誤仍然是不可避免的。如果你在我們的書中發現了錯誤——不論是文字,還是代碼錯誤——都請告訴我們,我們將感激不盡。這樣做,你不僅可以幫助其他讀者免受錯誤的困擾,也能幫助我們改進這本書后續版本的質量。如果你發現了任何錯誤。請訪問http://www.packtpub.com/submit-errata網頁,選中你的書籍,單擊“errata submission form”鏈接,并輸入你發現的錯誤的詳細信息,把它告訴我們。一旦你報告的錯誤被確認之后,你的意見將會被接受,該錯誤也會被發布在我們的網站上,或被添加到一張該書籍的勘誤表中。在http://www.packtpub.com/support網站中選中您的書目,就能看到所有目前已知的錯誤。
版權
互聯網上,可復制媒體的版權保護問題是個一直困擾著所有媒體的問題。在Packt,我們是非常嚴肅地對待版權保護和用戶許可協議問題的。如果你在網上發現任何非法復制我們的書籍的情況——無論是以何種形式,請立即通過我們公司的地址或網站聯系我們,以便我們采取補救措施。
請通過郵箱copyright@packtpub.com聯系我們,并附上疑似盜版材料的鏈接。
我們感謝你為保護我們的作品而提供的幫助,并且我們也將盡我們的所能,向你提供物質回饋。
疑難解答
如果你對本書的任何方面有所疑問,請通過郵箱questions@packtpub.com聯系我們,我們將盡力去解決它。



作者簡介


¬¬Keith Makan
以前他是計算機科學和物理學專業的學生,現在是狂熱的業余愛好者和安全研究員。他把絕大多數業余時間都用在了閱讀源碼、逆向工程、fuzz測試和編寫Web應用技術中的相關漏洞的利用代碼上。
Keith工作起來就像是一個IT安全評估專家一樣專業。他的個人研究已經使他多次入選“谷歌應用安全名人堂”(Google Application Security Hall of Fame)。他還編寫了谷歌Chrome的WebKit XSSAuditor,火狐瀏覽器的NoScript插件中漏洞的利用代碼。此外,他還數次報告了WordPress插件中的漏洞,并寫出了相應的利用工具。
我要感謝我的媽媽、爸爸以及其他支持我瘋狂的想法,并總是給我極大鼓勵的家人們。
Scott Alexander-Bown
他是一名在金融服務,軟件開發和移動app客戶端開發方面有著豐富經驗的研發高手。他一直沉湎于Android之中,熱愛移動app安全。
Scott目前是一位高級開發人員,專長于移動app的開發、逆向工程以及app加固。他也熱衷于發表與app安全相關的演講,活躍在多個國際移動app開發者大會上。
最重要的,我要感謝我的妻子Ruth,沒有你的愛和鼓勵,我將一事無成。我愛我們的兒子Jake,他的笑聲和可愛的笑臉是我前行的動力。
此外,我還要感謝以下諸公:
Keith, Barbara,Kirk Bown,Mhairi和Robert Alexander ,感謝你們給予我的愛和支持。
Andrew Hoog 和viaForensics 小組的成員,感謝你們在移動安全領域的支持、洞察力和經驗。
Mark Murphy, Nikolay Elenkov, Daniel Abraham, Eric Lafortune, RobertoTyley, Yanick Fratantonio, Moxie Marlinspike, the Guardian Project和the Android 安全團隊,你們博客中的文章、論文、演示和/或示例代碼對于學習Android安全是很有趣且非常有用的。
感謝Keith Makan 的熱心和指導,在你的帶領下,我才能完成本書的編寫。
感謝本書的各位技術審校對細節的關注和極具價值的反饋意見。最后,感謝您——親愛的讀者——我希望,您能從本書中獲益,并由此寫出更安全的app。




審稿人簡介
¬¬


Miguel Catalan Bañuls是一名年輕的工程師,他唯一的夢想是希望自己的努力能為世界的改變做出貢獻。他是一名軟件開發人員,也是一名團隊的帶頭人。
他擁有工業工程學士學位,是Geeky Theory的合伙人。他還是Miguel Hernandez大學(西班牙分校)的IEEE學生分會的副會長。
我想感謝我的妻子與父母,感謝他們對于我工作的理解與寬容。
Seyton Bradford是一名在移動設備安全和取證上有著超過10年經驗的軟件開發人員和工程師。
目前,他在viaForensics任高級軟件工程師,主攻app和移動設備的安全性。
他的作品在全球各地均有出版,同時還是多部學術期刊的評審。
感謝我的家人及朋友對我事業與工作的支持。
Nick Glynn目前受聘擔任技術培訓師和顧問,在英國和世界各地提供關于Android、Python和Linux的課程和專業知識。他在許多領域,無論是主板啟動代碼、Linux驅動程序開發和系統開發,還是全棧部署、Web應用程序開發,以及Linux和Android平臺的安全強化,都擁有豐富的經驗。
我要感謝我家人給我的愛,感謝我漂亮的寶貝女兒,是你照亮了我的生活。
Rui Gonçalo就讀于葡萄牙布拉加的Minho大學,他現在正在完成Android安全領域的碩士論文。他正在開發一項新功能,旨在使用戶能以非常細的粒度,控制互聯網連接。他對移動安全的濃厚興趣源于大學里“密碼學”和“信息系統安全”這兩門課程,在幾次有關的活動中他得到了這一領域里葡萄牙最重要的公司的支持。他建議渴望成為安全領域專家的Android安全初學者把這本書作為必讀書目。
我要感謝Packt出版社負責此書的工作人員,是你們讓我完全相信,對移動安全的研究會占滿我對探索軟件世界的所有好奇心。
Elliot Long從小在硅谷長大,2005年起就編寫了多個移動app。他是移動旅游線路生成軟件mycitymate SL/GmbH的共同創始人。2009他加入了Intohand有限公司,負責Android和黑莓開發。
推薦序
想做一名優秀的英文技術資料譯者實屬不易,除了要有深厚的英文功底,還需要對所翻譯的技術領域有深入的了解,同時還要譯者有博大分享之心和躬耕不輟之志。拜讀了小崔的最新譯作《Android安全攻防實戰》后,我更是由衷地感到他對技術與文字的把握已相當嫻熟,能受邀為其新作做一推薦也令我甚感榮幸。
我與小崔初識于2003年,彼時他尚在從事電子取證及數據鑒定領域的工作且頗具造詣,待到后來Team509成立,我們便成為了莫逆之交。當時團隊的成員各有所長,但小崔一直是最勤奮的一員,其勤奮不僅僅在于對技術孜孜不倦的追求,也在于其不吝花費時間翻譯大量的英文技術資料并樂于分享。想來他優秀的翻譯功底便是那時練就的吧。之后,他翻譯的“大部頭”作品便陸續問世,且一部好過一部。
如今,這部新作的推出與當下的移動領域技術潮流匹配得恰到好處,本書可以作為初學者熟悉Android系統攻防的快速入門教程,其中的大量操作實例也可以為高手們提供一些值得借鑒的做法。此書的翻譯忠實原意,對原著的意思把握得十分準確,語言生動活潑,令人讀起來十分愉快。希望讀者能夠喜歡,并從中受益。
2014&2015pwn2own winner Team509創始人之一 趙澤光
2015年5月
內容簡介:

Android是目前最為主流的移動設備操作系統,占據了全球近84%的市場份額。因此,Android系統中的安全問題也就變得十分重要。
本書通過大量極富針對性的實驗,通過對常見的安全場景中解決方案的講解,幫助讀者全面掌握各種攻-防實用技能。因而,本書的實用性也很強,即使是一時不能完全理解其中的技術原理的新手,根據作者給出的方法,也能解決實踐中遇到的大部分問題;而高手也能從中借鑒到一些好的做法。
全書共分九章,涵蓋了基本的Android開發環境和工具;app組件之間及它們與系統的交互方式;Android安全評估框架“drozer”;app及Android原生代碼的逆向技巧;各類漏洞的利用及防護方式;使用SSL在網絡通信中進行更有效的驗證;利用第三方代碼庫或Android中新增的特性,通過加密和在開發時使用設備管理策略,加固app等內容。

目錄:

第1章 Android開發工具 1
1.1 簡介 1
1.2 安裝Android開發工具(ADT) 2
1.3 安裝Java開發包(JDK) 5
1.4 更新API資源 9
1.5 另一種安裝ADT的方法 11
1.6 安裝原生開發包(Native Development Kit,NDK) 15
1.7 虛擬Android設備 16
1.8 使用命令行創建Android虛擬設備(AVD) 19
1.9 使用Android調試橋(ADB)與AVD交互 21
1.10 從AVD上復制出/復制入文件 22
1.11 通過ADB在AVD中安裝app 23
第2章實踐app安全 24
2.1 簡介 24
2.2 檢查app的證書和簽名 24
2.3 對Android app簽名 33
2.4 驗證app的簽名 37
2.5 探索AndroidManifest.xml文件 37
2.6 通過ADB與activity管理器交互 47
2.7 通過ADB提取app里的資源 50
第3章 Android安全評估工具 56
3.1 簡介 56
3.2 制作Santoku啟動盤和安裝Santoku 58
3.3 安裝drozer 62
3.4 運行一個drozer會話 71
3.5 枚舉已安裝的包(package) 72
3.6 枚舉activity 78
3.7 枚舉content provider 80
3.8 枚舉service 83
3.9 枚舉broadcast receiver 85
3.10 確定app的受攻擊面(attack surface) 87
3.11 運行activity 89
3.12 編寫drozer模塊——一個驅動枚舉模塊 91
3.13 編寫一個app證書枚舉器 94
第4章利用app中的漏洞 98
4.1 簡介 98
4.2 收集logcat泄露的信息 101
4.3 檢查網絡流量 106
4.4 通過activity manager被動嗅探intent 111
4.5 攻擊service 117
4.6 攻擊broadcast receiver 121
4.7 枚舉有漏洞的content provider 123
4.8 從有漏洞的content provider中提取數據 126
4.9 向content provider插入數據 129
4.10 枚舉有SQL-注入漏洞的content provider 131
4.11 利用可調試的app 134
4.12 對app做中間人攻擊 139
第5章保護app 146
5.1 簡介 146
5.2 保護app的組件 147
5.3 通過定制權限保護組件 149
5.4 保護content provider的路徑(path) 152
5.5 防御SQL注入攻擊 155
5.6 驗證app的簽名(防篡改) 157
5.7 通過檢測安裝程序、模擬器、調試標志位反逆向工程 161
5.8 用ProGuad刪除所有日志消息 164
5.9 用GexGuard進行高級代碼混淆 168
第6章逆向app 173
6.1 簡介 173
6.2 把Java源碼編譯成DEX文件 175
6.3 解析DEX文件的格式 177
6.4 解釋Dalvik字節碼 194
6.5 把DEX反編譯回Java 202
6.6 反編譯app的原生庫 205
6.7 使用GDB server調試Android進程 207
第7章網絡安全 211
7.1 簡介 211
7.2 驗證SSL自簽名證書 212
7.3 使用OnionKit庫中的StrongTrustManager 221
7.4 SSL pinning——限定受信SSL的范圍 223
第8章原生代碼中漏洞的利用與分析 231
8.1 簡介 231
8.2 檢查文件的權限 232
8.3 交叉編譯原生可執行程序 241
8.4 利用競爭條件引發的漏洞 249
8.5 棧溢出漏洞的利用 254
8.6 自動fuzzing測試Android原生代碼 261
第9章加密與在開發時使用設備管理策略 274
9.1 簡介 274
9.2 使用加密庫 275
9.3 生成對稱加密密鑰 277
9.4 保護SharedPreferences數據 281
9.5 基于口令的加密 283
9.6 用SQLCipher加密數據庫 287
9.7 Android KeyStore provider 290
9.8 在開發時使用設備管理策略 293
序: