丁兆錕 林思成 王丹
(南京拓界信息技術(shù)有限公司 江蘇省南京市 210014)
在傳統(tǒng)手機取證中,常見的取證方式是邏輯備份提取、文件系統(tǒng)提取、芯片模式提取、物理鏡像提取等,其主要目的是獲取手機存儲芯片(ROM)和存儲卡(SD Card)中的數(shù)據(jù),獲取的數(shù)據(jù)類型分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),結(jié)構(gòu)化數(shù)據(jù)如關(guān)系型數(shù)據(jù)庫中的文字、二維表格等,非結(jié)構(gòu)化數(shù)據(jù)如圖片、語音、視頻等,不同的獲取方式提取到的數(shù)據(jù)量也各不相同,但共同點是獲取的數(shù)據(jù)都是基于手機存儲中已有的數(shù)據(jù),刪除數(shù)據(jù)的恢復也是基于已有數(shù)據(jù)庫或鏡像文件完成。
以Android版微信為例,文字聊天的內(nèi)容直接存儲在微信開源數(shù)據(jù)庫中,數(shù)據(jù)庫文件后綴名為.db。聊天內(nèi)容存儲的數(shù)據(jù)庫在手機中的完整路徑為/data/data/com.tencent.mm/MicroMsg/*/EnMicroMsg.db,其中*代表的是一串根據(jù)微信名加密得到的32 位字符。微信的語音聊天數(shù)據(jù)存儲在微信數(shù)據(jù)包中的voice2子文件夾中,一般使用以msg為文件名開頭的.amr音頻文件進行存儲,聊天中發(fā)送的視頻、圖片、表情包等,可在image2、video 等子文件夾等中查看相關(guān)信息。
本地數(shù)據(jù)存儲的優(yōu)點是原始數(shù)據(jù)文件均存放于手機本身,即使離線狀態(tài)也能夠查看其內(nèi)容;缺點是會占用大量手機存儲空間,并且如果手機損壞或丟失,則手機數(shù)據(jù)也無法找回。
隨著近幾年各手機廠商推出云存儲服務,使得手機本地的部分數(shù)據(jù)能夠同步到云端服務器中進行存儲和查看,同時基于數(shù)據(jù)安全的考慮,部分軟件廠商的數(shù)據(jù)則是直接存儲于云端服務器中,本地并不會保存。目前云端數(shù)據(jù)主要分為以下幾類:
1.2.1 手機云備份及網(wǎng)盤文件
手機云備份,部分手機品牌也叫手機云服務、云空間等,是手機廠商提供的一種云存儲方式,需注冊賬戶登錄后使用,一般初始存儲空間為5GB,可以定期將手機中的基本數(shù)據(jù),如短信、通訊錄、通話記錄、相冊等自動備份至云服務器中。
云備份功能主要用于更換新手機后快速恢復用戶數(shù)據(jù)。在云備份中還可以使用網(wǎng)盤功能,用戶可選擇文件手動上傳,與云備份數(shù)據(jù)共享存儲空間。使用賬號登錄對應云服務官網(wǎng)后可查看或下載備份數(shù)據(jù)及網(wǎng)盤文件。除了手機廠商外,部分軟件廠商也提供了手機數(shù)據(jù)備份及網(wǎng)盤功能,如百度網(wǎng)盤,阿里云盤等。
1.2.2 云聊天記錄
一些聊天通訊軟件中,為了便于用戶在多臺設(shè)備中查看聊天記錄,會自動將最近時間段內(nèi)的聊天記錄同步至云端服務器中,當用戶更換設(shè)備登錄聊天賬號時,新設(shè)備中就會默認同步云服務器中存儲的聊天數(shù)據(jù)。用戶也可根據(jù)需要手動選擇是否開啟及同步記錄的時間范圍,如騰訊QQ的聊天記錄設(shè)置項,默認為開啟最近7天的聊天記錄同步。
1.2.3 賬單信息
涉及資金交易類的應用程序,會記錄用戶的賬單或訂單信息,如微信、支付寶、京東等,但出于數(shù)據(jù)安全的考慮,大部分APP會將訂單數(shù)據(jù)存儲在云端服務器中,用戶查詢訂單時,APP向服務器發(fā)送請求,服務器驗證通過后發(fā)送訂單信息,用戶即可查看實時訂單數(shù)據(jù)。但當手機無法訪問網(wǎng)絡時,服務器無法收到訂單請求,因此,手機處于離線狀態(tài)時無法查看訂單數(shù)據(jù)。
1.2.4 郵件信息
用戶在收發(fā)郵件時,一般會在手機端、PC端、網(wǎng)頁端等不同形式的客戶端中完成,因此,用戶的郵件信息會永久保存在提供郵件服務廠商的云服務器中,用戶無論在任何平臺登錄郵箱賬戶,都能夠查詢到以往所有的郵件信息,但需要注意的是,郵件中的部分附件信息是有保存期限的,一般為一個月,超過保存期限的附件將無法下載。同時,在手機端的郵件程序中,只會離線存儲用戶最近收發(fā)和查看過的郵件信息,超過一定時間后的郵件在離線狀態(tài)也無法查看。
云數(shù)據(jù)存儲的優(yōu)點在于數(shù)據(jù)備份于云端,多設(shè)備數(shù)據(jù)共享方便,也無需擔心數(shù)據(jù)丟失問題,同時能夠節(jié)省手機存儲空間;缺點是手機離線時無法查看、擴展云空間需要額外收費、以及云端數(shù)據(jù)的隱私安全等問題。
通過對云數(shù)據(jù)類型的分析可以發(fā)現(xiàn),所有云端數(shù)據(jù)的查看和下載都需要驗證登錄成功后,云服務器端才能夠?qū)⑾鄳獢?shù)據(jù)返回給用戶。而模擬登錄技術(shù)可以通過程序執(zhí)行的方式,模擬人為的操作流程和數(shù)據(jù)提交過程,最終成功登錄到云服務器端。因此,基于模擬登錄技術(shù)并結(jié)合不同的登錄驗證方式,可以采取驗證碼模擬登錄、掃碼模擬登錄、緩存數(shù)據(jù)模擬登錄以及仿真模擬登錄的方式進行提取。
驗證碼登錄是基于用戶的手機號碼作為唯一標識符進行登錄驗證,其過程包括驗證碼申請和驗證碼校驗兩個階段。主要涉及智能終端、服務器和短信平臺之間的交互。智能終端負責發(fā)送驗證碼申請和驗證碼校驗請求,服務器負責生成驗證碼,處理驗證碼申請和驗證碼校驗請求。短信平臺負責通過短信設(shè)備發(fā)送短信驗證碼。驗證碼交互流程如圖1所示。
圖1:驗證碼交互流程
驗證碼模擬登錄是通過云賬戶綁定的手機號接收短信驗證碼進行登錄取證的,以小米云服務為例,首先分析小米云服務網(wǎng)頁版,得到小米賬號登錄的Web API接口,參照網(wǎng)頁版登錄邏輯,在登錄參數(shù)中嵌入對應的手機號碼,并構(gòu)造相應的HTTP請求參數(shù)和請求簽名,向小米服務器發(fā)送請求,
請求發(fā)送短信驗證碼接口成功之后,即可利用短信驗證碼發(fā)送登錄請求。如果所有相關(guān)的請求都能獲得正常的響應,那么則表示登錄成功,然后就可以獲取賬號的個人信息,并利用登錄成功的Cookies訪問小米云服務內(nèi)的各項內(nèi)容并進行提取工作,如圖2所示。
圖2:小米云服務取證內(nèi)容
驗證碼模擬登錄適用于大部分云賬戶的登錄取證,在已掌握SIM卡的情況下可以很容易的進行操作,但未知密碼時還可采用掃碼登錄進行取證。掃碼登錄作為一種新的登錄方式,它不僅更為便捷,其不需再次輸入用戶信息直接掃碼登錄的方式更意味著減少了賬戶泄密的風險,相比傳統(tǒng)登錄方式而言更加安全。
掃碼登錄的基本原理是手機客戶端掃描二維碼并從中解析出數(shù)據(jù),然后把數(shù)據(jù)發(fā)送給服務器,服務器收到手機客戶端發(fā)送來的數(shù)據(jù)后,對數(shù)據(jù)進行驗證匹配,瀏覽器根據(jù)服務器的響應進行相應操作,具體實現(xiàn)過程如下:
(1)用戶請求掃碼登錄時,服務器會生成一個包含唯一標識符的二維碼,并在終端頁面進行展示;
(2)用戶在智能終端中打開對應程序,并調(diào)用攝像頭掃碼頁面二維碼;
(3)智能終端程序?qū)呙璧降亩S碼標識符以及當前已登錄用戶的相關(guān)數(shù)據(jù)發(fā)送至服務器;
(4)服務器校驗智能終端程序發(fā)送的數(shù)據(jù)后建立相應的映射關(guān)系;
(5)服務器將登錄信息相關(guān)數(shù)據(jù)發(fā)送至頁面請求并進行加載。
以釘釘掃碼模擬登錄取證為例,首先對釘釘網(wǎng)頁端驗證碼圖片進行解析,得到包含驗證碼信息的字符串,通過對釘釘網(wǎng)頁抓包,分析對應的數(shù)據(jù)包內(nèi)容,與得到的驗證碼字符串做對比,定位生成驗證碼字符串的請求,通過程序模擬請求過程可以得到驗證碼字符串,此時調(diào)用函數(shù)將字符串轉(zhuǎn)換成二維碼,并且打開圖片,然后再模擬網(wǎng)頁掃碼登錄的邏輯,對釘釘服務器相關(guān)接口進行輪詢,當用戶在手機端確認登錄時,輪詢請求結(jié)果會從“未登錄”轉(zhuǎn)換成“登錄成功”并且返回當前用戶登錄信息,將返回信息清洗篩選,設(shè)置為瀏覽器的Cookies。
上一步已經(jīng)完成了釘釘模擬登錄中的HTTP協(xié)議注冊信息,但釘釘?shù)卿涍€使用了WebSocket網(wǎng)絡協(xié)議,且HTTP和WebSocket是兩個不同的網(wǎng)絡協(xié)議 ,所以不僅要設(shè)置登錄用戶信息的Cookies,還需要建立WebSocket連接才能與服務器進行通信,換而言之就是通過HTTP請求之后還需要在WebSocket注冊用戶登錄信息。通過抓包分析可以獲取對應WebSocket請求頭用來建立連接,當判斷登錄信息成功后,就能夠通過發(fā)送不同的WebSocket請求,獲取當前用戶賬戶下對應的聯(lián)系人、聊天記錄等數(shù)據(jù)。
緩存數(shù)據(jù)登錄主要是對手機中存儲的程序數(shù)據(jù)包進行分析,找出本地緩存的Cookies文件,并利用其進行模擬登錄驗證,從而獲取云端數(shù)據(jù)信息。以Android版京東為例,首先分析其支持的登錄方式,可以選擇短信、驗證碼以及第三方服務商登錄。根據(jù)密碼登錄的校驗規(guī)則,首先將賬號、密碼以及HTTP請求相關(guān)參數(shù),經(jīng)過APP內(nèi)部加密生成密文MD5校驗碼,并且拼接到請求參數(shù)中,再向京東服務器發(fā)送請求。
京東服務器會根據(jù)請求中的參數(shù),采取同樣的加密方式,生成加密校驗碼。其收到請求中的校驗碼與其服務器自己計算出的校驗碼對比,結(jié)果不相同則拒絕請求,反之,接受登錄請求,并且返回賬戶Cookies至京東APP端并存儲。此時可以通過獲取到數(shù)據(jù)包中的Cookies,構(gòu)造校驗碼,以獲取賬戶信息、訂單數(shù)據(jù)等內(nèi)容。
仿真登錄的方式在傳統(tǒng)手機取證過程中就有應用,一是能夠解決部分小眾APP出現(xiàn)時間短、分析工作滯后于軟件版本的問題,二是對本地加密數(shù)據(jù)的解密起到了一定作用。在對云數(shù)據(jù)進行提取時,也能夠通過模擬器仿真的方式,在模擬器中實現(xiàn)用戶本地與云端數(shù)據(jù)的提取工作。目前,在PC端運行Android系統(tǒng)主要采用虛擬仿真的手段來實現(xiàn),具體方法有:
(1)采用Android開發(fā)工具Android Virtual Device(簡稱AVD),是一套用于Android系統(tǒng)開發(fā)與調(diào)試的虛擬機工具。AVD 能夠模擬ARM架構(gòu)的硬件環(huán)境,從而將Android系統(tǒng)直接運行在計算機平臺上,但其缺點是運行速度較慢,導致效率不高;
(2)采用API接口翻譯模式,將Android系統(tǒng)的底層API接口直接翻譯為Windows API,此方法對計算機硬件本身要求不高,兼容性較好。但由于Android底層API接口數(shù)量大,導致翻譯開銷較大,在性能方面欠佳;
(3)采用在Windows內(nèi)核底層插入Android驅(qū)動模塊的模式,創(chuàng)建一套完整的虛擬環(huán)境運行Android系統(tǒng),借助CPU 虛擬化技術(shù)的硬件加速性能,能夠?qū)崿F(xiàn)較好的效率與兼容性,但對計算機的CPU硬件性能要求較高。
云數(shù)據(jù)的獲取為后續(xù)數(shù)據(jù)分析利用提供了必要的前提條件。利用云數(shù)據(jù)本身存在的屬性,就能從多個維度對該人物進行刻畫,得出較為全面且完整的人物畫像。
對聊天記錄類的云數(shù)據(jù)進行分析,可以找出一部分手機本地存儲中沒有的記錄。當用戶手機中沒有緩存較早時間段的歷史聊天記錄時,利用云數(shù)據(jù)提取其所有云端聊天記錄內(nèi)容,就能夠發(fā)現(xiàn)其本地未緩存的聊天數(shù)據(jù)。但需要注意的是,用戶如果在手機聯(lián)網(wǎng)狀態(tài)下刪除了某條聊天記錄,則云服務器中對應賬戶的記錄消息也將同步刪除。
通過云數(shù)據(jù)與本地數(shù)據(jù)結(jié)合進一步分析,可以得出其常用聊天軟件的群聊成員邀請關(guān)系、群主賬戶信息等,如圖3所示,針對某微信群進行詳細分析,準確獲取群聊人員結(jié)構(gòu),直屬上下級等情況。
圖3:群成員關(guān)系
基于群聊數(shù)據(jù)建立多種分析模型,還能夠找到其多個群間關(guān)系、共同群成員、群熱點時間段、時間活躍度及活躍成員數(shù)據(jù)。
資金交易類APP的訂單數(shù)據(jù)與云聊天記錄的處理方式不同。若用戶在手機端手動刪除某個訂單數(shù)據(jù),則在手機端刷新查看后也無法獲取該項刪除的訂單數(shù)據(jù),但在廠商的云端服務器中仍然存在,因此,利用云數(shù)據(jù)獲取技術(shù),從云端服務器中獲取用戶的賬單信息,就能夠恢復出已刪除的訂單數(shù)據(jù)。
資金訂單數(shù)據(jù)能夠有效分析出用戶在一段時間的交易行為,進一步分析交易金額區(qū)間和頻繁交易對象,并以圖表方式對經(jīng)濟數(shù)據(jù)進行可視化處理,如圖4所示,清晰展示資金來源及流向,就能夠快速分析出案情所需重要證據(jù),減少人工檢索的時間成本,對案情的快速研判決策起到一定輔助作用。
圖4:經(jīng)濟行為分析
在云數(shù)據(jù)中,涉及到位置信息的數(shù)據(jù)有很多,例如手機云服務中的照片拍攝地點經(jīng)緯度信息,訂單類云數(shù)據(jù)中出行APP的機票、火車票站點信息、酒店訂單信息,打車APP中的起始、終點位置信息,購物APP中的訂單收貨地址等。通過對這些位置信息的進一步分析,就能夠掌握其常駐地、出行軌跡、通聯(lián)范圍等。
對于郵件類APP,大部分軟件都提供了“已刪除”的分類,用戶手動刪除的郵件并不會立刻刪除,而是會暫時存放于“已刪除”目錄下,此時可在已刪除郵件中通過“移動”功能將其移回刪除前的存放位置,但已刪除郵件的存放期限一般只有7-30天,超過期限后的郵件將會徹底刪除,云數(shù)據(jù)取證能夠獲取到已刪除且未超過期限的郵件,但對于徹底刪除的郵件,還需要結(jié)合本地數(shù)據(jù)庫的相關(guān)文件,才能實現(xiàn)部分數(shù)據(jù)的恢復。
隨著智能終端及云存儲技術(shù)的不斷發(fā)展,用戶的賬戶數(shù)據(jù)會越來越多的從本地遷移或備份到云端服務器中,以便滿足用戶數(shù)據(jù)安全備份及多終端設(shè)備共享數(shù)據(jù)的需求。因此,本文首先介紹分析了云數(shù)據(jù)存儲的方式,并基于模擬登錄技術(shù)原理,提出了對應的云數(shù)據(jù)提取技術(shù)與方法,實現(xiàn)了智能終端設(shè)備的聊天記錄、資金信息、行為軌跡、郵件信息等云數(shù)據(jù)的提取與分析,為新形勢下智能終端設(shè)備中的云數(shù)據(jù)提取分析工作提供一定的思路與方法。