本文針對行動裝置圖形鎖(Pattern Lock)提出鑑識方法,當非法人士以圖形鎖方式防止鑑識人員對行動裝置存取數位跡證時,仍有辦法解開Android圖形鎖,蒐集行動裝置內的數位跡證。
上述的保護設計,提供使用者初步防止他人在未經授權時存取該裝置。但是這樣立意良善的設計,卻有可能被犯罪人士利用。如果今天行動裝置內存放著重要的犯罪跡證,站在鑑識的角度,犯罪跡證乃是還原犯罪事實的重要線索,那麼取得該項跡證便是鑑識人員的重點工作,但非法人士卻利用了裝置鎖定技術,防止鑑識人員蒐集儲存於裝置內的犯罪跡證,相信這是廠商始料未及的狀況。
要解決此類的鑑識難題,相信很多人都會很直覺地想:那只要破解行動裝置的鎖定模式,不就行了嗎?解鎖了,鑑識人員不就能對該項裝置進行數位鑑識。沒錯,這個觀點是對的,本文就是要說明如何解鎖圖形鎖的鑑識步驟。
在介紹圖形鎖之前,得先瞭解Android的系統架構。如圖2所示,Android架構大約分為兩部分:應用程式開發環境及內部系統環境,一般使用者操作活動僅限於Application下,而使用者在行動裝置上進行的設定也是記錄在此範圍內,其中圖形鎖的部分就記錄在gesture.key。
|
▲圖2 Android系統架構圖。 |
當使用者用手指滑過圖形鎖九個格子時,Android便會把這些手勢紀錄以SHA-1雜湊函數的加密方式儲存於行動裝置中,且命名為gesture.key。
另外一提的是,使用者若選擇以密碼鎖的保護方式,密碼資訊則記錄在password.key中。假設將九個格子各自編碼,則圖形鎖gesture.key內十?六進位制的SHA-1編碼情形,就如表2所列舉情形一樣。
表2 gesture.key記錄圖形鎖的SHA-1編碼情形
找鎖匠?如何解開被鎖住的行動裝置
從前述介紹中,就可明白圖形鎖記錄於行動裝置的作業流程。這樣訊息帶給鑑識破解圖形鎖什麼樣的契機呢?將gesture.key移除或破解它,相信這兩項是最直接的想法。
移除gesture.key,讓行動裝置的圖形鎖失效
在鑑識原則中提到,瞭解紀錄的儲存路徑是首要的工作,以Nexus 7為例,記錄圖形鎖gesture.key儲存路徑為「/data/system」下,移除此檔案後,行動裝置的保護設定將失效。
解譯圖形鎖,畫出解鎖的軌跡
或許有人會想,有沒有辦法解譯gesture.key從中得知使用者所設定的圖形鎖順序?答案是肯定的,前述中知道Android系統是將圖形鎖的順序依SHA-1記錄編碼,且是在有限定條件下要求(4?9格的滑形數目及不能重複),在這樣的設定環境下,可預見的是圖形鎖的樣本數有限,並非是無限多或者大數目。
在有限的筆數下,若將gesture.key內的SHA-1與SHA-1字典互相比對,不需要多久,就能比對出圖形鎖編碼,即可知道鎖鑰順序。
鑑識方法介紹
當解開圖形鎖時,準備的環境是採用Android 4.3.1版本的Nexus 7平板電腦,並使用ADB(Android Debug Bridge)工具對gesture.key紀錄檔進行移除及破解的鑑識活動。
簡介ADB工具
ADB是讓Android可使用命令列的開發工具,屬於Android SDK工具,它能檢測開發者所設計的程式有無錯誤情況。其實ADB的角色就類似於Windows CMD(命令提示字元),透過下達指令的方式查看系統與硬體間執行的狀況,從執行結果中判斷系統情形。
如表3所示,此表中的ADB指令是這次數位鑑識所會使用的命令列。
表3 ADB指令及功能說明
利用ADB的原理,把圖形鎖解開
依圖3所示,接下來的鑑識活動將分成兩部分進行,說明如下:
|
▲圖3 gesture.key鑑識流程圖。 |
移除圖形鎖
若要移除gesture.key,需先取得Nexus 7最高權限,再利用ADB指令進行移除指令動作,如圖4所述。
|
▲圖4 移除gesture.key ADB指令執行結果。 |