android黑科技系列——修改鎖屏密碼和惡意鎖機樣本原理分析

來源:互聯網
上載者:User

標籤:構造   十分   情況下   t許可權   導致   root   erro   解析   其他應用   

一、Android中密碼編譯演算法

上一篇文章已經介紹了Android中系統鎖屏密碼演算法原理,這裡在來總結說一下:

第一種:輸入密碼演算法

將輸入的純文字密碼+裝置的salt值,然後操作MD5和SHA1之後在轉化成hex值進行拼接即可,最終加密資訊儲存到本地目錄:/data/system/password.key中

第二種:手勢密碼演算法

將九宮格手勢密碼中的點資料轉化成對應的位元組數組,然後直接SHA1加密即可。最終加密資訊儲存到本地目錄中:/data/system/gesture.key中

 

二、鎖機樣本原理解析

在上一篇文章中也說到了,為什麼要看鎖機密碼密碼編譯演算法,因為最近玩王者榮耀,下了一個外掛,結果被鎖機了,太坑了,所以就來分析現在市場中通過鎖機來勒索錢財的樣本製作原理:


大部分都是採用了系統的裝置管理員來擷取許可權進而修改密碼,然後提示你需要重啟裝置才能有效,這樣的樣本通過特殊的應用程式名稱和表徵圖來誘導使用者下載安裝授權,一般小白使用者為了玩農藥,什麼都不管了,直接從網上搜一個安裝就開始操作了,結果被自己坑了,所以下載軟體一定要去正規的應用市場去。別亂下載應用,而這樣的鎖機樣本一般都是會選擇加固,不過可惜他們為了節約成本都是用了非企業版的免費版加固,脫殼就比較簡單了,然後逆向分析代碼就可以找到他設定的鎖機密碼,然後解密即可。

而上面如果是一個小白使用者被鎖機了,幾乎很難解決,因為這時候裝置被鎖屏了,串連電腦也是需要授權的,但是得先解鎖,那麼就會發現自己的手機和撿到的一樣,沒法操作了,不過可以選擇拷貝rom到sd下,然後進行刷機或者恢複,這樣的成本就很大了。所以一定要小心。

 

三、root許可權修改鎖機密碼

分析完了上面的鎖機樣本之後,我們知道現階段都是這種需要授權操作,而這種授權一看就有修改鎖屏密碼,一個人上當之後後面可能就沒人在上當了,所以我們得想到其他的辦法進行更加狠的招製作樣本。而上面提到的裝置管理員有很多用途的,以前應用為了防止被使用者卸載,也申請了這個許可權。因為一旦一個應用具備了裝置管理員就不會被卸載了,因為他的許可權已經非常高了。不能被卸載。不過可以在設定頁面查看有多少應用具備這個許可權:


為了安全起見,像這種許可權一般都是要選擇拒絕的,安全性非常危險。一旦授權了,不堪設想。

既然前一篇我們已經知道了,裝置的鎖機密碼編譯演算法,而且也知道他存在哪裡,何不利用root許可權來進行簡單操作無需申請許可權即可修改鎖機密碼,而對於這些想玩遊戲利用協助工具輔助,對於root許可權他們是可以接受的,因為他們並不知道root之後是幹嘛呢?以為是更好的體驗遊戲效果。有了root許可權之後,我們就簡單了。直接弄一個新的密碼,不管是手勢密碼還是複雜字元密碼,然後通過密碼編譯演算法加密,然後在寫入到指定的key檔案。重啟裝置生效即可。代碼這裡就不多說了,原理很簡單:


這樣我們可以構造一個九宮格手勢密碼,或者是數字密碼,然後加密得到內容,在寫到key檔案中:


然後我們就可以寫一個簡單的鎖機樣本應用了,直接將修改的密碼加密內容寫入到應用沙箱檔案中,然後在將檔案覆蓋系統的密碼key檔案,最後還得重啟裝置生效。當然這裡是修改了字元密碼,我們為了更大化操作,可以把手勢密碼也操作一下,這樣就不管使用者裝置採用的是哪種類型密碼都可以修改成功了。

 

四、解決指紋鎖問題

上面就利用root許可權修改了使用者的鎖機密碼,但是這裡有一個問題,就是現在很多裝置已經支援指紋鎖了,而且指紋鎖未來也是趨勢,那麼如果一個裝置用了指紋鎖,該怎麼辦?對於上面利用裝置管理員許可權就沒法操作了。但是對於root許可權我們仍然可以操作,我們在分析了鎖機密碼加密過程中發現,系統會把當前鎖機類型值儲存到資料庫中:


這個值存在 /data/system/locksettings.db 資料庫中,我們可以查看:


這個是十進位資料,我們可以轉化成十六進位就是0x60000了,然後我們查看代碼他對應的是哪種類型:


就是複雜的字元密碼類型,當然還有其他類型,這個定義在DevicePolicyManager.java類中。那麼到這裡我們就有思路了,如果裝置的類型是指紋鎖,那麼我們可以修改這個表格式資料中的這個欄位將其變成手勢密碼或者是字元密碼類型,然後在將修改後的這兩種類型密碼寫入到key檔案,重啟裝置就就可以過濾了指紋鎖密碼了。因為我們有了root許可權,讀寫這個資料庫檔案不難了,而具體實現代碼這裡就給了,感興趣的同學可以嘗試操作一下。

 

對於現在各種惡意鎖機軟體,Google官方在不同版本已經給出了防護方案(以下內容摘自安全網路):

Android L(Android 5.0-5.1)

在早期Android版本中,通過getRunningTasks方法可擷取當前運行棧頂程式,但自Android 5.0起該方法被棄用,同時getRunningAppProcesses與getAppTasks方法的使用也受到了限制,由此抑制了劫持Activity類勒索軟體的出現。

Android M(Android 6.0)

大部分手機勒索軟體的慣用伎倆是通過SYSTEM_ALERT_WINDOW許可權來開啟特定系統類別型視窗並將其顯示在所有其他應用程式和視窗之上,以此達到鎖定使用者裝置的目的。Android M的出現使得勒索軟體制馬人在實施手機勒索時遇到了一大瓶頸——動態許可權申請,由於自Android M起,SYSTEM_ALERT_WINDOW開始被列為一種危險程度較高的許可權而被特殊處理——即需要使用者動態授權。這一改變意味著只要勒索軟體的目標系統為Android M,其就不能如往常一樣在使用者毫無防備的情況下鎖定使用者裝置,而是必然有一個使用者授權階段,這對勒索軟體的發展起到了一定程度的阻礙作用。

Android N(Android 7.0-7.1)

與之前版本可任意設定或重設鎖屏密碼不同的是,Android N中明確規定,第三方應用開發人員只能使用DevicePolicyManager.resetPassword為無密碼裝置設定初始密碼,而不能重設或清除已有的裝置密碼。Android N中對於resetPassword API所添加的限制能阻止木馬對已有鎖屏密碼的重設,從而使得部分勒索軟體失效。

 

而對於視窗樣式鎖機最為常見,就是利用WindowManager設定最高許可權,導致裝置點擊任何地方沒有反應,而在Android O中已經對這個視窗許可權做了嚴重限制:Android O預覽版一經發布就給了勒索軟體致命打擊,新系統禁用了5種視窗。如所示,其中包括3種勒索軟體常用的系統視窗類別型,視窗置頂類勒索木馬“賴以生存”的系統視窗類別型被限制使用了。

 

在Android O之前版本中,勒索軟體通過調用特定系統視窗類別型將自身視窗完全覆蓋在第三方應用程式與其他系統視窗之上,使用者無法響應其他視窗,由此裝置被鎖定;但在Android O中,這幾種具有置頂許可權的系統視窗類別型被棄用,勒索軟體製作者找不到其他能完全覆蓋第三方應用程式與其他系統視窗的視窗類別型,視窗置頂類鎖屏將無法實施。

在Android 6.0之前,使用系統類別視窗進行手機勒索十分簡單,只需要在AndroidManifest資訊清單檔中申請SYSTEM_ALERT_WINDOW許可權即可使用TYPE_SYSTEM_ALERT、TYPE_SYSTEM_ERROR等進階別視窗,使用者開啟手機勒索軟體後無需額外操作甚至來不及做出反應,系統視窗就已置頂,手機即刻被鎖定。

自Android 6.0起至Android 7.1,Android系統開啟動態許可權模型,SYSTEM_ALERT_WINDOW許可權開始被列為一項特殊權,儘管其權限等級(Signature)不是Dangerous,但開發人員在使用之前也必須動態獲得使用者授權,只有在使用者進行授權後,應用才可以隨意使用TYPE_SYSTEM_ALERT、TYPE_SYSTEM_OVERLAY、TYPE_SYSTEM_ERROR等進階別視窗。在這一階段,使用者通過一項Action——MANAGE_OVERLAY_PERMISSION開啟設定“在其他應用的上層顯示”頁面,如所示,使用者手動允許後,系統進階別視窗許可權開放,此時即可成功使用這些視窗進行手機勒索。

 

 

五、技術總結

到這裡,我們就分析了如何修改Android中鎖屏密碼,主要有兩種方式:

第一種:利用裝置管理員許可權,直接用系統提供的api修改

第二種:利用root許可權和鎖屏密碼演算法直接修改系統鎖機密碼檔案內容

而這兩種方式操作完成之後都需要重啟裝置生效,而對於這兩種方式各有利弊,不過針對於一些遊戲外掛root許可權一般都是具備的,所以第二種是最優方案。而對於一些普通惡意應用root許可權很少,可以利用第一種方式進行操作是最優方案。

 

密碼編譯演算法源碼:https://github.com/fourbrother/AndroidScreenOffPwd

 

六、安全提示

但是到這裡,是否對於這些惡意鎖機軟體使用者就不能避免呢?當然可以避免,只要你不要有歪想法,比如你玩遊戲為何想到外掛?你為何要去下載哪些不好的應用,因為你心中有雜念。如果你是一個純真的使用者,可能不會選擇其他渠道下載應用,會去正規的市場中下載應用,這樣你不可能被搞,如果你是一個心無雜念的使用者,肯定不會隨意授權給應用,不會選擇root裝置。那麼究其原因,哪些非法分子就是利用一小部分人的歪念心裡,製作了這個樣本開始勒索。而如果一旦被勒索了,第一時間是想到的自己解決,刷機或者恢複,不可進行交錢解決,因為對於那些勒索錢財的,不可放縱,就是不要給錢。寧願不要手機,也不給你。當然最後還想想說Android中的這個裝置管理員許可權特別是修改密碼這個操作本來其實為了使用者裝置丟失,進行定位擦除資料或者修改密碼來避免手機更多資訊被竊取弄的,但是這樣的api被亂用之後也是不合理的,如果可以期待系統能更加的最佳化這一塊的功能。

android黑科技系列——修改鎖屏密碼和惡意鎖機樣本原理分析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.