教你怎么編寫智能手機(jī)APP的取證腳本(教你怎么編寫智能手機(jī)app的取證腳本教程)
編者按:本期,數(shù)據(jù)恢復(fù)四川省重點(diǎn)實(shí)驗(yàn)室科研人員重點(diǎn)介紹一種編寫手機(jī)APP取證腳本的方法,在手機(jī)取證實(shí)戰(zhàn)中,該技術(shù)方案擴(kuò)展性強(qiáng),可助力一線取證人員有效應(yīng)對(duì)暫不支持的APP數(shù)據(jù)提取問題。
一、簡介
手機(jī)APP,即手機(jī)應(yīng)用程序,APP是Application的縮寫。手機(jī)軟件就是安裝在手機(jī)上的軟件,完善原始系統(tǒng)的不足與個(gè)性化(圖1)。隨著科技的發(fā)展,現(xiàn)在手機(jī)的功能也越來越多,越來越強(qiáng)大,發(fā)展到可以和電腦相媲美。
【圖1 手機(jī)APP】
1、手機(jī)APP種類多
隨著智能手機(jī)迅速普及和用戶的海量增長,新的手機(jī)App層出不窮(圖2)。2015年1月份的數(shù)據(jù)顯示,以Android系統(tǒng)為主的Google Play應(yīng)用商店,App數(shù)量超過140萬。而7月份的報(bào)道數(shù)據(jù)顯示,蘋果AppStore應(yīng)用商店里的App數(shù)量已超過150萬。
【圖2 手機(jī)App數(shù)量增長趨勢圖】
2、手機(jī)APP版本多
不僅如此,隨著時(shí)間推移,App新舊版本更替頻繁,比如手機(jī)QQ,從2012年到目前,Android上已經(jīng)有超過30個(gè)版本,IOS上也有10多個(gè)版本更新(圖3)。不同版本之間的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)也有很大區(qū)別。
【圖3 手機(jī)QQ歷史版本】
新App的支持和已有App的版本更新,使得手機(jī)取證也遇到了很大的難題。如果針對(duì)每個(gè)App的每個(gè)版本都由軟件研發(fā)人員編寫代碼實(shí)現(xiàn)解析,這將是一件非常龐大的工程,而且很有可能難以跟上APP的更新速度,導(dǎo)致手機(jī)APP取證遭遇難題。
二、技術(shù)方案
在這種情況下,數(shù)據(jù)恢復(fù)四川省重點(diǎn)實(shí)驗(yàn)室科研人員推薦一種腳本插件式開發(fā)的解決方案,能快速、有效解決手機(jī)APP取證不兼容的難題。
1、什么是腳本插件式開發(fā)
插件是指不修改程序的情況下對(duì)程序的功能進(jìn)行擴(kuò)展,任何人都可以按照相應(yīng)的規(guī)則制作插件來新增或修改程序功能,實(shí)現(xiàn)“即插即用”軟件開發(fā)。腳本是使用一種特定的描述性語言,依據(jù)一定的格式編寫的可執(zhí)行文件。腳本通常以文本(如ASCII)保存,只在被調(diào)用時(shí)進(jìn)行解釋或編譯。常用的腳本語言包括python、JavaScript等。
2、腳本插件式開發(fā)的3大好處
2.1 不需重新下載安裝軟件
利用腳本插件式開發(fā),可以將數(shù)據(jù)解析與軟件界面分開,便于軟件框架的搭建和程序的擴(kuò)展,當(dāng)添加新App或App版本更新時(shí)不需要重新下載安裝軟件,直接將新腳本添加到對(duì)應(yīng)目錄即可;
2.2 用戶自己可編寫
腳本采用常見的python、JavaScript等語言編寫,易學(xué)易懂。不僅軟件研發(fā)人員可以編寫腳本,客戶在遇到突發(fā)的不能解決的數(shù)據(jù)解析時(shí)也可以自己編寫腳本;
2.3自動(dòng)匹配插件
可以通過App名稱、生產(chǎn)廠商、軟件版本自動(dòng)匹配插件,方便有效。
3、怎么編寫腳本插件
下面我們以取證工具SPF9139智能手機(jī)取證分析系統(tǒng)在Android下解析途牛旅游App為例來說明如何編寫腳本插件。
3.1生成數(shù)據(jù)
首先,我們?cè)谑謾C(jī)上下載安裝“途牛旅游App”,然后創(chuàng)建賬號(hào)并使用,產(chǎn)生數(shù)據(jù)(圖4),包括飛機(jī)票、火車票、乘車人記錄、酒店查詢記錄等。
【圖4 下載安裝使用APP產(chǎn)生數(shù)據(jù)】
3.2 提取數(shù)據(jù)
利用第三方工具從手機(jī)中提取App的數(shù)據(jù)到本地。(圖5、圖6)
【圖5 紅色框代表途牛插件App的名稱、安裝路徑、版本等基本信息】
【圖6 紅色框代表提取到本地的數(shù)據(jù)路徑】
3.3數(shù)據(jù)分析
經(jīng)過分析,途牛App的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如下(圖7、圖8、圖9、圖10)
【圖7 途牛App相關(guān)數(shù)據(jù)文件路徑及保存的內(nèi)容】
【圖8 途牛App相關(guān)數(shù)據(jù)文件路徑及保存的內(nèi)容】
【圖9 Groupchat數(shù)據(jù)庫表】
【圖10 紅色框?yàn)镚roupchat數(shù)據(jù)庫表】
3.4 編寫插件
這里我們可以使用JavaScript編寫插件,該語言編寫工具非常之多,甚至可以使用記事本編寫,非常方便。本期案例我們采用SPF9139智能手機(jī)取證分析系統(tǒng)自帶的XLYScriptVisualStudio編寫,好處是便于調(diào)試。
腳本分為3部分:配置信息、數(shù)據(jù)定義和解析數(shù)據(jù)并生成結(jié)果。
3.4.1配置信息
配置信息定義了該腳本關(guān)聯(lián)的App名稱、版本、分組、所需源文件、數(shù)據(jù)結(jié)構(gòu)等信息,供主程序調(diào)用。我們按照途牛旅游App的信息依次編寫如下(圖11):
【圖11 編寫腳本配置信息】
3.4.2 數(shù)據(jù)定義
根據(jù)樹形菜單節(jié)點(diǎn)分別定義js數(shù)據(jù)結(jié)構(gòu),比如游客歷史記錄信息節(jié)點(diǎn)TouristHistory定義如下(圖12):
【圖12 編寫腳本配置信息】
3.4.3 解析數(shù)據(jù)并生成結(jié)果
根據(jù)之前分析結(jié)果,編寫解析代碼并生成結(jié)果。由之前的分析得知,途牛的數(shù)據(jù)主要存儲(chǔ)于groupchat.db(sqlite數(shù)據(jù)庫)文件和TuniuApp.xml文件中。因此在解析時(shí),只需要讀取sqlite數(shù)據(jù)庫和xml文件分析即可(圖13、圖14)。
【圖13 構(gòu)建樹形菜單列表】
【圖14 獲取購買飛機(jī)票記錄(其余項(xiàng)目呈現(xiàn)方式一樣)】
點(diǎn)擊XLYScriptVisualStudio的調(diào)試按鈕,可以看到最終結(jié)果。如果出現(xiàn)了錯(cuò)誤,則修改代碼并調(diào)試(圖15)。
【圖15 腳本調(diào)試結(jié)果】
3.5 腳本添加
將腳本文件放入軟件對(duì)應(yīng)Script目錄下,重啟軟件,即完成了對(duì)腳本文件的添加。添加途牛圖標(biāo), 此時(shí)開始測試途牛App,發(fā)現(xiàn)已經(jīng)可以解析了, 包括飛機(jī)票、火車票、乘車人記錄、酒店查詢記錄等信息(圖16)。
【?圖16 在SPF9139智能手機(jī)取證分析系統(tǒng)程序中查看新加的途牛插件】
總結(jié):與傳統(tǒng)方式相比,腳本插件方式最大的優(yōu)點(diǎn)就是擴(kuò)展性強(qiáng)。當(dāng)取證人員遇到突發(fā)性的無法解析的App時(shí),不需要等到軟件新版本的發(fā)布才處理,只需要手動(dòng)編寫腳本,即可完成解析工作,幫助取證人員快速獲取手機(jī)中的電子證據(jù)。目前,該技術(shù)已經(jīng)在效率源SPF9139智能手機(jī)取證分析系統(tǒng)中應(yīng)用,極大地延展了SPF9139的APP取證功能,一線取證人員只需簡單學(xué)習(xí)就可上手,快速編寫可直接應(yīng)用的APP取證小工具,快速提高手機(jī)取證效率。本文重點(diǎn)是以“在Android下解析途牛旅游App”為例,講解腳本插件方式的大概思路與方法,而整個(gè)執(zhí)行步驟是相對(duì)復(fù)雜的,如果是刪除數(shù)據(jù)的恢復(fù)則會(huì)更復(fù)雜,有興趣的讀者可聯(lián)系效率源工程師進(jìn)行實(shí)戰(zhàn)指導(dǎo)。