什麼是 Android 簽名機制,Bluebox Security 發現的漏洞有何威脅?
用戶應該怎麼做才能避免被人利用這個漏洞攻擊?新聞: Android 出現重大安全漏洞 可影響 99% 設備
根據他們的發現,黑客無需破壞用於認證的加密簽名便能夠修改一款應用的APK
以上引用原文,這也是最直白的一句總結。
要理解這種做法帶來的危害性,首先要大致了解Android的簽名工作機制:- 每個應用都必須簽名
- 應用可以被不同的簽名文件簽名(如果有源代碼或者反編譯後重新編譯)
- 同一個應用如果簽名不同則不能覆蓋安裝
在之前,一些惡意開發者會採用反編譯重新編譯的方法來給各種應用夾帶私貨然後偷偷上傳到各個渠道等著小白鼠自己上鉤,比如我反編譯個QQ,加了個廣告,忽悠到人裝了……從此你的手機就各種彈廣告你還不知道是哪個軟體乾的……起碼普通用戶是不會知道了,除非挨個兒卸載嘗試。
但是這種做法有一個弊端(對於惡意開發者而言),惡意開發者一定拿不到QQ官方的簽名文件,於是只能用自己的簽名文件簽名……然後用戶如果之前安裝過官方版本的QQ就會發現「簽名不一致」的提示,各大應用市場也可以通過這種辦法來鑒別(比如某莢提供的洗白白功能其實就是在對比簽名),雖然還是會有人中招,但是也算是有應對之法。
如果此文說的漏洞確實存在,意味著這些惡意開發者們可以在不破壞原有官方簽名的情況下夾帶私貨……意味著將極大提高識別難度,那麼就會有更多的人中招。
如何避免危害:只從可信賴的安全的渠道下載應用,比如Google Play,盡量避免通過論壇下載應用,各種手機論壇應該是惡意應用的相對重災區,第三方市場尚有可能通過特殊的審核機制盡量避免未知來源的惡意應用(不完全),論壇基本是無事前審核的……至多在被舉報以後刪帖。什麼是簽名機制,前面已經說了。
我說說這個漏洞有何威脅。
這個漏洞的威脅是,你難以驗證一個軟體的真實簽名。
不過現實是,用戶通常不會主動檢查一個應用包的簽名,只有系統強制檢查。
android系統僅僅在升級現有軟體的時候會檢查簽名,在安裝新軟體時不會檢查簽名,所以這個漏洞對安裝新應用基本沒有影響。
鑒於多數情況下應用升級是應用自己完成或者應用商店完成,這個安全機制並沒有起到太大作用。
結論:安全性的改變僅僅發生在用戶手動從未知來源下載apk進行軟體升級時,這個操作變得比原來更不安全了(雖然這本來就不是個安全的操作)。而在其餘的所有環節,安全性並未發生改變。
android本來就不是個太安全的系統,少了這點安全措施並沒有讓它變得更不安全。
根據BlueBox原文 Uncovering Android Master Key That Makes 99% of Devices Vulnerable ,此漏洞是「allowing for APK code modification without breaking the cryptographic signature」,用戶想避免此類威脅就是保證安裝的應用是官方版本,即不要到那些亂七八糟的市場或者論壇下載應用。
謝邀!
「Android主密匙」這個詞好像沒有聽過啊!看了下bluebox官網的博客內容,感覺他說的這個「Android主密匙」應該說的是應用程序的加密簽名!(只是個人理解,也不確定這個 主密匙到底是什麼玩意!)關於這個bluebox說的這個漏洞好像說的也不是系統方面的漏洞,而是在編譯apk軟體的時候的一個漏洞!
先說下apk程序:每一個Android程序在代碼編寫好之後都需要用打包工具打包成一個可以在Android系統上可執行的apk包,這個包包含了程序的所有內容,以及一個加密簽名,Android系統就是根據這個簽名來驗證apk文件是否是一個正常的軟體!而bluebox發現的這個漏洞可以讓黑客不破壞 apk簽名 的情況下去修改apk軟體內容!那樣的話Android系統或許會驗證不出這是一個已經被修改過的程序!
不過這樣的程序應該還威脅不到一般的用戶!
因為 這樣的程序必須是用戶已經安裝過的程序,只有在更新的時候才會有可能被裝到用戶的機器上,但是一般應用更新的話都有自己的更新鏈接!比如官網,或者應用市場!
如果你不是經常從不正規的網站或者市場下載軟體的話,一般不會被威脅到!
要說這個漏洞最大的威脅的話,應該在於那些獲取root許可權的系統上,當被惡意軟體獲得了root許可權之後那它就是神了!
應對這種威脅的方法:從官網下載軟體!如果是從市場下載的話就從正規的市場下載!
回答的不是很專業,湊合看吧O(∩_∩)O~~關於該漏洞,谷歌的情況:
針對目前網上提到的在Android操作系統中發現的重大安全漏洞,可能影響到當前99%的Android設備。這個漏洞2月被發現,三月初谷歌就給各個廠商提供了安全補丁:ANDROID-8219321,並在CTS中添加測試項檢查補丁。建議大家要買過了CTS認證的廠商的手機,因為不僅應用兼容而且更安全。99%估計都是山寨機吧。
轉發自谷歌員工stevenzyc的微博
終於,這個問題有人關注了,強烈呼籲大家將這個問題頂起來~~
先介紹下背景。樓主學生一枚,非IT相關專業,有少量編程背景,android非專業愛好者,之前使用的手機是三星Note1。某日,樓主QQ被盜,密碼被修改,QQ有大量聯繫方式,灰常重要啊,絕望ing~~~第二天欣喜的發現QQ密碼又被改回來了,能用了,我想哪個黑客這麼好心啊!我謝你全家~~進入QQ後,馬上備份,修改密碼,但晚上新改的密碼又被盜了……我當時感覺背後涼颼颼的,心想不知哪個黑客大哥和我杠上了啊?~我和你有仇嗎?……過了一晚上,QQ密碼又被改回來了,這時我就明白了,我是被黑客盯上了,但我一沒錢二沒艷照的,他盜我QQ幹嘛?~找刺激?玩心跳?~越想越覺得危險,打算放棄這個QQ號,於是又申請了一個小號…通訊錄全部備份過去…
結果,靠~~晚上小號也被盜了,這時我就感到情況不是想像的簡單,這個黑客三番五次的盜我QQ號,而且沒有發任何廣告信息,沒有騷擾我的任何一位朋友,換成小號也能被盜,好像知道我的心思似得~~難不成我見鬼了?~這老哥明顯是在展現技術,但這技術也忒牛逼了吧~能追蹤人?~想到這裡,我第六感覺這個黑客我應該認識,而且就在我身邊~~~~~
咳~咳~故事講到這裡,主角該登場了——我室友A。A也是學生,物理系,平時喜歡鑽研電腦,標準小極客一枚。我把這事給他說了,他先是呵呵一笑~~然後仰天大笑~~最後捶胸狂笑~~我還想,這哥們又犯病了?沒藥了咋辦? 笑完後,他神秘的說:我就是那個黑客……
##¥¥%¥%%%…………暴打完我室友A後,開始虛心問他怎麼搞得啊?他又神秘的說,問題的關鍵在於你的手機……我問然後呢?他說,你的手機QQ有問題…我把它改了下…我再問,神馬問題啊?他說:不告訴你~嘿嘿。¥#¥¥¥#%%%¥%¥%%%又是一頓暴打,在我的威脅和壓迫下,我的室友終於告訴我一個至關重要的關鍵詞:android 反編譯。
好了,故事講完了,下面說一說神馬是android反編譯。
百度百科:高級語言源程序經過編譯變成可執行文件,反編譯就是逆過程。
反編譯:機器碼(彙編語言) → 高級編程語言但是通常不能把可執行文件變成高級語言源代碼,只能轉換成彙編程序。計算機軟體反向工程(Reverse engineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。java反編譯是非常強大的,android是基於java語言的,反編譯尤其簡單,樓主花了一個小時就熟悉了全部反編譯過程,並將官方下載的qq2013反編譯,然後修改其中一些功能,增加盜號功能,(即QQ登陸界面輸入的東西通過(賬號、密碼)儲存在一個TXT文件內,然後通過郵件發送到樓主的郵箱里)最後再加上自己的簽名,打包成了QQ2013極限版,apk。(樓主這樣只有極少編程經驗的人都能在這麼短的時間內掌握,何況那些專業的黑客?可見android反編譯是多麼簡單,這也是android開源而導致的弊端之一~~)具體反編譯過程請參考:Android APK反編譯(樓主免責聲明:請不要將此技術用於違法用途,否則後果自負。)已經有人把android反編譯所有所需的東西集成在一個軟體里,通過它反編譯,輕鬆的像是吃糖……反編譯成QQ2013極限版.apk後,樓主把它裝入手機,安裝過程中,出現「簽名不一致,是否繼續」的提示,點擊繼續,安裝成功。然後測試盜號功能, 樓主輸入自己的qq號,不一會就收到了郵件,顯示是自己QQ賬號和密碼無疑,也就是說,現在的問題是簽名不一致,只要能騙過簽名不一致的問題,通過這個QQ盜號,輕鬆加愉快。
下面又引入了本期最重要的關鍵詞,android 簽名
在Android 系統中,所有安裝到系統的應用程序都必有一個數字證書,此數字證書用於標識應用程序的作者和在應用程序之間建立信任關係,Android系統要求每一個安裝進系 統的應用程序都是經過數字證書籤名的,數字證書的私鑰則保存在程序開發者的手中。
Android數字證書包含以下幾個要點:(1)所有的應用程序都必須有數字證書 ,Android系統不會安裝一個沒有數字證書的應用程序 (2)Android程序包使用的數字證書可以是自簽名的,不需要一個權威的數字證書機構簽名認證(3)如果要正式發布 一個Android ,必須使用一個合適的私鑰生成的數字證書來給程序簽名 ,而不能使用adt插件或者ant工具生成的調試證書來發布。(4)數字證書都是有有效期 的,Android只是在應用程序安裝的時候才會檢查證書的有效期。如果程序已經安裝在系統中,即使證書過期也不會影響程序的正常功能。(5)Android使用標準的java工具 Keytool and Jarsigner 來生成數字證書,並給應用程序包簽名。(以上節選自阿福的博客:http://yangguangfu.iteye.com/blog/723182)根據以上特點,我知道,只要能搞到QQ官方的簽名,就能繞過這個簽名過程,從而在他人的手機里安裝自己反編譯後修改的應用。
反編譯的過程就會將原來的簽名破壞,能怎樣獲取原來的簽名呢? 呵呵,這就是問題中所說的那個漏洞了,在沒有封裝那個漏洞之前可以通過如下方法獲取:
應用程序的簽名被封裝在 packageInfo 中,所以我們要獲得應用程序的簽名就需要獲得PackageManager 從而來獲得包含有簽名信息的 packageInfo,再通過 packageInfo 獲得 Signature 數組,循環遍歷將簽名進行拼接。
(樓主免責聲明:以上只為技術交流,請不要將此技術用於違法用途,否則後果自負。)對,就這麼簡單,只要有編程基礎的同學一看就會,何況網上還有大量現成的代碼可以用……得到原始簽名後,呵呵,就可以在各大論壇上上傳我的QQ極限版了,再加上幾個吸引眼球的標籤:可看後台在線呀、不用密碼進空間啊、顯示iphoneqq在線啊,免費裸聊啊,不怕沒人下載,然後,哼哼……(這種應用不關心使用次數的,就算你用了一次就卸載了,也達到目的了~~嘿嘿)
當然,樓主是不可能這樣乾的,樓主是好孩子、好學生,但不能保證其他人不這樣干~~~
所以,在google木封鎖簽名機制的漏洞之前,大家還是謹慎小心自己安裝的應用,否則盜號是小,盜艷照事就大了~~嘿嘿~~
樓主建議:
1、不要安裝非官方途徑下載的應用,如某某論壇什麼的。2、不要輕易使用私人製作的應用,我就是中了我室友的詭計了。3、不要輕易相信一些明顯是吸引你下載安裝的應用介紹,如神馬看後台在線呀、不用密碼進空間啊、顯示iphoneqq在線啊,天上沒有不要錢的午餐。4、不要輕易root,正如@劉立正同學所說,「要說這個漏洞最大的威脅的話,應該在於那些獲取root許可權的系統上,當被惡意軟體獲得了root許可權之後那它就是神了!」。
5、定期卸載手機內常用的應用,如QQ、微信等,卸載前做好備份工作,否則我就呵呵了~~~然後從官方渠道再安裝一遍。以上我的看法,有很多漏洞和不成熟的地方,還望各位大神批評指正……
PS:樓主在半年前就發現了這個問題,感覺使用android木有安全感,而且這個漏洞使用的門檻很低,能夠被各類大俠用於各種不同的用途,google似乎還沒有行動的意思,於是我呵呵一笑,輕撫菊花,換iphone了,嘿嘿,現在媽媽再也不用擔心我手機被流氓了……希望這個事實能傳播廣些……簡單來說簽名就是應用程序開發者的唯一標識。
當一個Android的應用被篡改並重新打包後,簽名就變成了篡改者的標識。但是,如果攻擊者利用了這個漏洞,那麼可以使原應用的簽名不變(還是原標識)。這個漏洞造成的危害應該是多出現在下面的情況:例如一個Android機上安裝了應用X1.0,而後用戶在某個地方看到了X應用的高級版本X2.0,於是下載這個apk文件進行安裝。如果沒有這個漏洞,當這個X2.0被攻擊者添加了惡意代碼後,簽名信息肯定和X1.0不同,那麼在安裝的時候Android系統檢查後會拒絕安裝(因為系統上有這個程序的其他版本,並且簽名不同)。但是現在如果成功利用了這個漏洞,那麼在安裝的時候系統不會拒絕安裝。那麼應用安裝成功後將會造成什麼樣的危害,就完全決定於這個應用被添加了什麼惡意代碼了。
如何防範:方法我在另一個問題中也提到過。是否存在篡改安卓應用安裝包植入木馬、收集信息的可能? 就是保證安裝程序的來源,尤其是當一個新應用首次安裝到系統中時。比如網銀客戶端這樣的重要應用一定要保證從官方鏈接取得。
目前也還沒有見到過這樣的病毒樣本。
補充一下:看了 張磊 的回答,本來以為簽名不一樣的同一個程序是無法被安裝的,但是剛才我反編譯了一個應用後再簽名後安裝,用360手機助手,竟然只提示替換版本和是否保存原始數據,但安裝成功了,這個比較可怕。如果把apk拷貝到手機中從手機上打開apk安裝是無法成功的(簽名不同)。也就是說,現在如果用戶從某處得到一個惡意應用(此應用是對正常應用的篡改),即使沒有利用這個漏洞,但使用360手機助手也是可以安裝成功的。那麼一般用戶完全不會發覺有惡意軟體的安裝。使用360手機助手需謹慎。
推薦閱讀:
※市面上大部分國行版安卓手機都不安裝谷歌框架和安卓市場,是廠家還是政府決定的?是潛規則嗎?
※Kindle Fire 能夠像一般的 Android 平板一樣使用非 Amazon 內容嗎?
※作為設計師,想體驗 Android L,該買什麼手機?價位越低越好。
※如何看待網上很多人黑三星手機的現象?
※Android 有哪些優秀的在線音樂軟體?
TAG:Android |