王德廣, 倪懷乾
(大連交通大學(xué) 軟件學(xué)院, 遼寧 大連 116028)
智能手機已不止于通訊,而具備了一臺電腦的重要功能。與此同時,不少犯罪分子也利用智能手機進行犯罪活動。為了打擊此類犯罪行為,手機取證技術(shù)就至關(guān)重要。本文采取了一種適用于不同機型的安卓系統(tǒng)獲取root的方法,并且利用python開發(fā)了windows桌面應(yīng)用程序用于可視化提取的數(shù)據(jù)。結(jié)合數(shù)據(jù)挖掘技術(shù)將數(shù)據(jù)進行分析,繪制出網(wǎng)絡(luò)拓撲圖等。為取證人員提供了更為直觀的判斷,節(jié)省了數(shù)據(jù)的篩選時間,提高了效率。
Android的系統(tǒng)架構(gòu)[1]大致分為四層,從低到高依次為Linux內(nèi)核層、系統(tǒng)運行庫層、應(yīng)用程序框架層和應(yīng)用程序?qū)印?/p>
主要分區(qū)如下。
(1) modem分區(qū):實現(xiàn)手機必需的通信功能。
(2) bootloader分區(qū):bootloader的primarybootloader部分,主要執(zhí)行硬件檢測;secondarystagebootloader會進行一些硬件初始化工作;fastboot是Android定義的一種簡單的刷機協(xié)議,用戶可以通過fastboot命令行工具來進行刷機。
(3) boot分區(qū):分為頭部、Linux內(nèi)核和ramdisk。
(4) recovery分區(qū):是Android定義的一個標準刷機協(xié)議。
Android中使用了多個文件系統(tǒng),用于啟動和運行系統(tǒng)。通過查看文件/proc/filesystems的內(nèi)容來確定Android所支持的文件系統(tǒng)有哪些。例如在所參考的錘子堅果3上,包含的內(nèi)容有:sysfs、rootfs、tmpfs、bdev、proc、cgroup、cpuset、debugfs、sockfs、pipefs、ramfs、configfs、ext2、ext3、ext4、msdos、sdcardfs、fuse、selinuxfs、functionfs、exfat、devpts等。
將root級別的幾個重要目錄(代表性顯示)。
(1) cache:lost+found、recovery
(2) data:anr、app、app-private、backup、dalvik-cache、local、lost+found、property、tombstones
data/data/com.facebook.katana:cache、databases、files、lib、shared_prefs
data/misc:bluetooth、dhcp、keystore、systemkeys、vpn、wifi
data/system:sync、usagestats
(3) mnt/sdcard:DCIM、download、Downloads、LOST.DIR、temp
mnt/sdcard/android/data/com.google.android.apps.maps:cache、debug、testdata
(4) system:app、bin、fonts、framework、lost+found、tts、xbin
system/etc:bluetooth、firmware、permissions、PPP、security、wifi
system/lib:egl、hw、modules
system/media/audio:alarms、notifications、ringtones、ui
system/usr:keychars、keylayout、share
(1) SQLite
SQLite數(shù)據(jù)庫屬于輕量級的,而且具有跨平臺的特性,使得SQLite數(shù)據(jù)庫應(yīng)用于移動設(shè)備的系統(tǒng)中。SQLite數(shù)據(jù)庫文件存儲在/data/data/應(yīng)用程序包/databases文件夾下,是取證最為重要的數(shù)據(jù)路徑。
(2) 內(nèi)部存儲
Android系統(tǒng)的內(nèi)部存儲是通過IO流進行文件的讀取。內(nèi)部存儲文件除了能被root用戶讀取外,就僅能被對應(yīng)的應(yīng)用程序讀取。
(3) 外部存儲
Android系統(tǒng)的外部存儲為SD卡,外部存儲可以存儲較大的文件,取證數(shù)據(jù)多為語音、圖片和視頻等。
Step1:獲取root權(quán)限;
Step2:開啟開發(fā)者模式;
Step3:電腦端配置好adb調(diào)試模式,通過adb service命令,驗證手機與電腦連接正常,使用adb shell進入到手機,輸入su進入root用戶。
屏幕鎖[2]的設(shè)定在設(shè)置安全中,可用的屏幕鎖定方式包括:無、滑動、人臉解鎖、圖案、密碼與指紋。
(1) 九宮圖形鎖(圖案):從左上角的00至右下角的08進行編號,根據(jù)算法計算后編碼為密文,將密碼存儲在/data/system/gesture.key文件中??赏ㄟ^“adb pull /data/system/gesture.key”將加密文件提取。獲取到gesture.key后再利用密碼字典暴力破解獲得明文密碼。
(2) PIN鎖:該密文存儲在/data/system/password.key文件中,獲取到password.key后利用密碼字典暴力破解獲得明文密碼。
(3) 高級用戶鎖:通過哈?;騇D5值對其自動加密,將密碼存儲在/data/data/com.android.providers.settings/databases.db,將salt值取出,使用密碼字典進行暴力破解。
(4) recovery模式密碼暴力破解:若嫌疑人使用的Android手機USB調(diào)試沒有打開,啟用了開機屏幕鎖,就無法進入設(shè)置應(yīng)用程序中勾選啟用USB調(diào)試功選項,也就意味著無法進行后續(xù)的取證工作。此時需要利用recovery模式[3]來進行密碼破解。
Step1:手機關(guān)機后重啟進入recovery模式,bankup&restore備份得到新鏡像文件。
Step2:打開鏡像文件中/data/data/com.android.providers.settings/databases中的settings.db文件。
Step3:從settings.db文件導(dǎo)出hash值。
Step4:獲取屏幕鎖密碼文件。
Step5:利用密碼字典暴力破解獲取密碼。
(1) 手機一鍵root
目前安卓應(yīng)用市場具有較多的一鍵root應(yīng)用,例如百度一鍵root、超級root大師等應(yīng)用。
(2) 電腦端root
在電腦端也有較多對手機root獲取的軟件,例如刷機大師、kingroot、一鍵root大師等。
(3) 手工獲取root
手工獲取root權(quán)限為目前成功率最高一種方式,又稱線刷或卡刷,適用于較新的系統(tǒng)和機型。
以本文機型錘子堅果3為例,利用9008工程線進行刷機。操作如下:下載QPST、TWRP和root包;將root包復(fù)制到手機根目錄;打開Qfil并Build線刷包里的文件;點擊Load XML選擇工具包中文件;將工程線(EDL)插到電腦上;按住工程線的按鈕將另一端插入手機、點擊Download等待線刷完成;進入TWRP后,進Install(安裝),刷入root包(根目錄),重啟后獲取root。
限于篇幅,提供部分數(shù)據(jù)庫具體路徑。
(1) 通話記錄數(shù)據(jù)庫存儲位置:
/data/data/com.android.providers.contacts/databases/calllog.db.
(2) 短信數(shù)據(jù)庫存儲位置:
/data/data/com.android.mms/databases/smssdk.db.
(3) 微信數(shù)據(jù)庫存儲位置:
/data/data/com.tencent.mm/MicroMsg/8266e537b59d10d389937efe3d2c30e8(不同賬號該碼不同)/EnMicroMsg.db.
微信數(shù)據(jù)庫[4]進行了加密。首先獲取當前登錄微信的手機IMEI碼,再者需要獲取微信uin信息,微信uin與微信賬戶進行關(guān)聯(lián),是唯一標識微信用戶身份的標識符。在
/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml中即可獲取uin值。將IMEI和微信uin合并,再進行MD5解密,并取計算結(jié)果的前7位(小寫)即為數(shù)據(jù)庫解密密碼。
(4) QQ數(shù)據(jù)庫存儲位置:
/data/data/com.tencent.mobileqq/databases/賬號.db
QQ使用的是表加密。解密方法:聊天記錄內(nèi)容明文(D);聊天記錄內(nèi)容密文(E);手機IMEI;公式:E=D^IMEI。(^:按位異或算法)。
(5) Facebook數(shù)據(jù)庫存儲位置:
/data/data/com.facebook.katana/databases/contacts_db2.
(6) 淘寶瀏覽記錄:
/data/data/com.taobao.taobao/databases/data_history
(7) QQ瀏覽器瀏覽記錄存儲位置:
/data/data/com.tencent.mtt/databases/database
(8) 百度瀏覽器瀏覽記錄存儲位置:
/data/data/com.baidu.browser.apps/databases/dbbrowser.db
(9) 百度地圖:
/data/data/com.baidu.BaiduMap/files /poi_his.sdb文件中存儲有搜索記錄信息。
(10) 搜狗地圖:
com.sogou.map.mobile.android.history_result.db存儲搜索記錄。
數(shù)據(jù)提取過程:進入手機命令行并進入root用戶,(例如)“cd/data/data/com.android.providers.contacts/databases”,輸入“l(fā)s”查看提取該數(shù)據(jù)庫的名稱?!癱p calllog.db /mnt/sdcard/”將該數(shù)據(jù)庫提取到sdcard上,此時再打開一個新的命令行,“adb pull sdcard/calllog.db”,即可成功將數(shù)據(jù)庫提取到當前命令行所在的目錄下。
實驗環(huán)境。
筆記本電腦:神舟戰(zhàn)神 i7 內(nèi)存8G 顯存4G 1T+128SSD Window10 64位。
開發(fā)工具:PyCharm專業(yè)版 (PyQt QtDesigner PyUic)、adb、SQLite。
通訊、微信、QQ、社交軟件、瀏覽器、地圖導(dǎo)航、淘寶、手機系統(tǒng)信息等數(shù)據(jù)的提取主界面,如圖1所示。

圖1 數(shù)據(jù)提取主界面
主界面用QMainWindow、QtGui、QtCore、QtWidgets、QApplication、sys等庫,主要為頁面的設(shè)計和頁面的跳轉(zhuǎn),由每個按鈕通過信號和槽連接到相應(yīng)的子頁面,以其中一個子頁面為例,如圖2所示。
圖2為QDialog頁面,其它庫與主頁面相同,不同于使用QComboBox來設(shè)計下拉選擇列表,列表內(nèi)容為4.2功能架構(gòu)下分支的內(nèi)容。點擊“查詢”按鈕跳轉(zhuǎn)到所選項目的查詢顯示,如圖3所示。

圖2 數(shù)據(jù)提取其中一個子頁面

圖3 核心內(nèi)容頁面
該類頁面使用QDialog,為最核心內(nèi)容頁面,查詢顯示數(shù)據(jù)庫內(nèi)容。實現(xiàn)了從輸出到控制臺的內(nèi)容截取到該界面文本框內(nèi)顯示。將其以設(shè)定好的格式顯示,通過關(guān)鍵字搜索到所需信息。

(1) 各類瀏覽器獲取的歷史搜索記錄及網(wǎng)頁存儲的表單賬號與密碼。
(2) 提取微信存儲的聊天記錄、圖片、語音及好友親密度數(shù)據(jù)等。
(3) 獲取通訊好友、短信、通話記錄和繪制通話記錄的時間序列圖。
(4) 提取各類導(dǎo)航軟件存儲的導(dǎo)航和搜索數(shù)據(jù)。
(5) 查看QQ好友賬號信息與聊天記錄。
(6) 手機系統(tǒng)信息提取的數(shù)據(jù)無需獲取root,連接電腦后即可查看。其中,WiFi查看嫌疑人連接過的WiFi用戶名及密碼;網(wǎng)絡(luò)IP查詢連接的網(wǎng)絡(luò),包括2/3/4/5G網(wǎng)絡(luò)連接的地址、使用VPN代理的信息、WiFi連接的IP等;系統(tǒng)信息是查詢手機版本、系統(tǒng)版本;提取手機鏡像是在本地存儲一份當前手機的所有數(shù)據(jù)并備份;日志是查詢當前手機的各類日志信息。
(7) 查看淘寶的聊天記錄和瀏覽記錄。
(8) 各類社交軟件的聊天記錄與好友信息。
該方式無需root,使用itchat庫登陸網(wǎng)頁版微信,掃描二維碼后便在本地生成用戶信息文件和用戶名.html。其中,用戶信息文件包含所有微信好友的微信id、昵稱、地區(qū)和個性簽名;用戶名.html文件是通過collections的Counter和pyecharts的Bar庫來生成并統(tǒng)計好友所在地區(qū)信息、數(shù)量與男女比例等。
基于時間序列的可視化方法是將時間作為主要變量,通過時間序列圖構(gòu)建時間線。以通信時間作為X軸,通信對象作為Y軸,坐標原點為本機賬號(嫌疑人),建立時間序列圖,如圖4所示。

圖4 時間序列示意圖
用線段將嫌疑人和用戶進行連接,表示在某時間點與用戶進行了通信。直觀展現(xiàn)了嫌疑人與各個用戶賬號通信行為頻率,便于取證人員結(jié)合案件發(fā)生的時間,鎖定特定時間段內(nèi)與嫌疑人進行通信的用戶,縮小取證范圍,提高取證效率。該方法用numpy、matplotlib.pyplot等庫,通過調(diào)用plot函數(shù)繪制f(xi,yj),以坐標軸形式顯示(截取部分信息)。
通過社交關(guān)系網(wǎng)絡(luò)拓撲圖,可清晰確定用戶的社交關(guān)系親密度,如圖5所示。

圖5 社交關(guān)系親密度
在社交網(wǎng)絡(luò)拓撲圖中,若兩個節(jié)點之間的權(quán)值越大,則表示這兩個節(jié)點之間越熟悉,所代表的兩個用戶之間的關(guān)系越親密,兩者之間的影響力也就越大,反之相反。因此本文采用權(quán)值的計算方式來精確計算犯罪嫌疑人與其好友之間的關(guān)系,準確還原出犯罪嫌疑人近期的社交關(guān)系網(wǎng)絡(luò)。
通過生成詞云的方式,快速分析嫌疑人網(wǎng)購商品的類別。在生成的詞云中,字體越大代表搜索的頻率越高,說明嫌疑人購買該商品的可能性越大。以此來判斷嫌疑人最近的購買活動,從而評估相應(yīng)的行為動機,如圖6所示。

圖6
可判斷該用戶購買多為生活用品。該方法使用停用詞表進行數(shù)據(jù)清洗,并使用jieba庫分詞,wordcloud與matplotlib生成詞云。
本文通過對安卓系統(tǒng)的解鎖與root的獲取研究,成功提取出手機內(nèi)部重要的數(shù)據(jù)庫。在提取數(shù)據(jù)階段,使用python開發(fā)的應(yīng)用程序加以可視化,更為直觀明了。在數(shù)據(jù)分析階段,使用社交網(wǎng)絡(luò)等方式將嫌疑人的重要信息以圖形化的方式呈現(xiàn)給取證人員,提供了更多的分析依據(jù),從而進一步實現(xiàn)功能的擴充,提供更為完善的程序。