先對android整個攻擊面有一個體系化的認識,有助於理清思路,
對今后的學習有很大的幫助。
什么是攻擊向量:從語言語法的角度來說,是一個動詞,描述用來執行攻擊的方法,描述了攻擊者如何到達並接觸任意給定的漏洞代碼。
什么是攻擊面:從語法語法的角度來說,是一個名詞,用來描述攻擊者可以執行並而進攻的代碼,它描述了代碼中存在的可能尚未被發現的安全漏洞的位置。
攻擊面主要屬性:
1.攻擊向量:所需要的用戶交互以及認證條件,限制了給定攻擊面中發現任意安全漏洞的影響后果。某些攻擊面需要進行物理接觸才能發動一次完整的攻擊,有些則需要運用社會工程學,誘騙用戶對鏈接進行點擊。
2.獲取的權限:在給定攻擊面背后的代碼可能以極高的權限運行,如內核代碼。有的可能在沙盒中以受限權限運行。
3.內存安全性:是以c系語言還是非c系語言寫的,c系語言存在更多的安全漏洞。
4.復雜性:越復雜的代碼,算法,協議越容易出現漏洞。
攻擊面進行分類:
1:遠程攻擊面:攻擊者無需在物理位置接近目標,而可以直接通過計算機網絡發動攻擊,具有極大的危害性。
1>網絡協議棧:安全漏洞研究的聖杯,不需要與目標交互就能實施,而且能夠獲得系統的完全訪問控制權,在Android系統中,包含了對IP,TCP,UDP,ICMP等協議的實現。如果在IP包的處理過程中出現可以用的緩沖區溢出漏洞,將成為最為嚴重的安全漏洞,可以遠程執行內核中的任意代碼。
2>暴露的網絡服務:無需目標交互的聯網服務是第二位具有吸引力的攻擊面。這些服務通常的用戶空間執行,但是仍有一些潛在的網絡服務,如果成功利用,仍然可以獲得root權限,當然這類網絡服務極少,可以通過nmap等端口掃描器獲得,也可以通過netstat獲得,當啟動wifi,會有額外的網絡服務。
3>移動技術:移動設備通過移動通信暴露了其他遠程攻擊面,包括通過短信服務(SMS)和多媒體消息服務(MMS),同時使用SMS和MMS消息作為攻擊向量還可以達到其它攻擊面。MMS消息中可以包含一些多媒體內容。而其它一些協議也實現在SMS之上。
2:客戶端攻擊面:由於網絡的一般配置屏蔽了許多傳統的遠程的攻擊面,而且客戶端對與它通信的服務器非常信任。所以,攻擊者很大程度上將關注點轉移到客戶端軟件攻擊面中存在的安全漏洞。
1>瀏覽器攻擊面:現代Web瀏覽器作為功能最為強大的客戶端應用代表,支持HTML,Javascript和豐富的web應用。除了渲染和執行應用邏輯之外還支持一些底層協議。如FTP,HTTP。這些都是有數量驚人的后台代碼實現的。而其中的每個組件都帶有一個攻擊面。可以通過誘導點擊,“水坑”等方法進行攻擊
2>web驅動的移動應用程序:每個web驅動的移動應用暴露的攻擊面都是不同的。
3>廣告網絡:廣告網絡由於嵌入嵌入式瀏覽器引擎(WebView),瀏覽器攻擊對於這些應用都是存在的,但一般只能通過中間人攻擊人向量。而且與傳統瀏覽器攻擊不同,這種組件還會暴露額外的攻擊面,可以利用Java類型的反射攻擊進行遠程攻破。而且,廣告框架可能會對隱私構成顯著威脅。
4>媒體和文檔處理:常見的文件格式漏洞
5>電子郵件:相對較少
3:谷歌基本設施
1>Google Play商店:國內無需考慮
2>惡意應用:安裝一款應用就等同於授予應用開發者任意代碼執行的權限,由於應用數量極大,用戶難以確定是否該信任特定的開發者。
3>第三方應用生態圈:在Google play商店之外安裝應用,尤其是部分破解軟件,極易捆綁病毒。
4>Bouncer:
5>Google Phone Home:
4:物理相鄰
1>無線通信:Android設備都支持多種基於射頻的無線技術,幾乎都支持藍牙和wifi和GPS,較新的還支持NFC(近場通信),每種無線技術都具有特有的頻率,且極易受到大量的攻擊,包括主動攻擊和被動攻擊。其中,主動攻擊包括阻塞,欺騙,中間人(MitM)等形式。由於wifi和蜂窩網絡是用於訪問整個互聯網,因此可以達到非常豐富的攻擊面
1>>GPS:通常指代Android中的位置信息,可以讓設備確定自身在地球的位置。它通過衛星獲取信號確定自身位置。
2>>基帶:蜂窩調解器可以提供給基帶處理器和移動網絡通信的功能。它是Android電話棧的軟件組件,由於對它的攻擊終端用戶難以察覺,而且能夠訪問手機通話記錄及傳輸數據,對它的攻擊具有非常的吸引力。盡管屬於遠程攻擊,但依舊需要在一定的范圍內,近年來的“偽基站”攻擊
3>>藍牙:藍牙具有30多種協議,每種藍牙都定義了藍牙設備的一項特殊功能。如FTP(文件傳輸協議),HFP(免提協議),HSP(Handest Profile),HID(人機接口設備協議),DUN(撥號網絡協議)。藍牙協議功能首先需要配對。但一些設備使用硬編碼的數字碼,非常容易攻擊。配對后,有可能劫持會話並進行濫用,可能的攻擊方法包括BlueJacking,BlueSnarfing和BlueBugging。除了可以與一些免提設備配對,android設備之間還能互相配對,用於傳輸聯系人列表,文件等。藍牙設計時功能非常多樣化,也提供了攻擊者希望的幾乎所有的功能訪問
4>>Wi-Fi:Wi-Fi主要用於連接局域網,由局域網提供對互聯網的訪問。詳情見於《黑客大曝光:無線網絡安全》
5>>NFC:NFC是建立與射頻標示之上(RFID)的無線通信技術,NFC在所有的無線技術中,作用范圍最短,通常不超過20cm。Android設備上的NFC有三種典型場景。第一,標簽被呈現給設備,設備讀取標簽的數據並進行處理。第二,兩位用戶將他們的Anddorid設備貼在一起傳輸數據。第三,用於非接觸式的支付。最流行的消息格式是NFC數據交換格式(NDEF),解析時會導致執行一些動作。在某些情況下,無需用戶交互。
2>其他技術:除了無線通信外,還有其它兩個技術也與Android設備的整體攻擊面相關。具體來說為QR碼(快速響應矩陣碼)和語音指令
5:本地攻擊面:當獲得對一個設備的任意代碼執行后,邏輯上的下一步就是權限提升。終極目標是獲得享有特權的代碼執行,包括在內存空間執行。或者以root執行。然而只是獲得少量權限,也可以暴露更多受限的攻擊面。由於權限隔離,為了實現終極目標,需要結合使用多個小的提升目標。
1>探究文件系統:Android的UNIX血統意味着許多攻擊面都是通過文件系統條目暴露的
2>其它的本地攻擊面:除了文件系統,其它的本地攻擊面是有linux'內核暴露的,包括系統調用和套接字實現
1>>系統調用:系統調用處理代表一個值得關注的攻擊面
2>>套接字:Android上運行的軟件使用不同類型的套接字進行ipc
3>>Binder:Binder驅動以及它依賴的軟件代表Android特有的一個攻擊面。Binder驅動是Intent的基礎,而Intent是用於在應用層Android組件進行通信。Binder驅動本身在內核空間實現,並通過。/dev/binder字符設備暴露一個攻擊面。
4>>共享內存:一種定制的內存共享機制
5>>基帶接口:Android智能手機上包含第二個操作系統,就是基帶
6>>攻擊硬件支持的服務:包括GPS接收器,光環境傳感器,陀螺儀
6:物理攻擊面:需要物理接觸設備的攻擊被稱為依賴於物理攻擊面,物理面攻擊與物理相鄰不同的是物理相鄰不需要實際接觸目標。
1>>拆解設備:對目標設備進行拆解,就能夠對目標設備中的硬件發起攻擊。打開一個硬件設備通常會發現
【1】:暴露的串口,允許接收調試消息
【2】:暴露的JTAG調試端口,允許對設備的固件進行調試,重刷或訪問
2>>USB:USB是Android設備與其它設備進行交互的標准化有線接口
3>>其它物理攻擊面:包括手機SIM卡,SD卡,HDMI卡,暴露的測試點和對接連接器
7:第三方修改:參與生產Android設備的實體會修改操作系統的不同組成部分,一般需要手工進行分析。