本發(fā)明涉及電子數(shù)據(jù)取證技術(shù),具體涉及推特(Twitter)應(yīng)用的取證。
背景技術(shù):
推特(Twitter)是一個(gè)社交網(wǎng)絡(luò)和一個(gè)微博客服務(wù),它可以讓用戶更新不超過140個(gè)字符的消息。Twitter作為世界上一個(gè)廣受歡迎的社交工具,不免也會(huì)被犯罪人員利用作為相互聯(lián)系的工具。
Twitter在使用過程中,會(huì)在手機(jī)上保存登陸的用戶賬號(hào)信息,還保存用戶關(guān)注的其他用戶以及被哪些其他用戶所關(guān)注;另外當(dāng)前用戶與其他用戶的私信信息也會(huì)在本地有緩存記錄。用戶所發(fā)表過的推文以及查看過的推文均會(huì)在設(shè)備上保留一定的緩存數(shù)據(jù)。
隨著智能終端的高速發(fā)展,Twitter應(yīng)用得到更為廣泛的應(yīng)用,成為一款非常流行的社交軟件。
由此對(duì)Twitter在使用過程中所產(chǎn)生的數(shù)據(jù)進(jìn)行分析,將會(huì)顯得極為重要。但是現(xiàn)有的一些數(shù)據(jù)取證方案在實(shí)際使用過程中存在取證速度慢,以及取證內(nèi)容比較的少,無法對(duì)智能終端中Twitter應(yīng)用進(jìn)行全面有效的數(shù)據(jù)取證。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有針對(duì)Twitter應(yīng)用的取證技術(shù)所存在的問題,需要一種新的取證方法,以進(jìn)行全面有效的數(shù)據(jù)取證。
由此,本發(fā)明實(shí)際要解決的技術(shù)問題是提供一種針對(duì)Twitter的分析取證方法,該方法能夠?qū)χ悄芙K端中Twitter應(yīng)用進(jìn)行全面有效的數(shù)據(jù)采集和分析。
為了達(dá)到上述目的,本發(fā)明提供的一種針對(duì)Twitter的分析取證方法,其包括:
獲得運(yùn)行Twitter的智能終端的最高管理權(quán);
據(jù)此提取Twitter在智能終端中運(yùn)行的數(shù)據(jù)信息;
進(jìn)行數(shù)據(jù)分析,取證Twitter用戶的賬號(hào)信息、用戶關(guān)注的聯(lián)系人賬號(hào)和發(fā)布的消息,以及用戶與好友的私信內(nèi)容和用戶的搜素歷史記錄。
優(yōu)選的,所述分析取證方法中對(duì)于已經(jīng)獲取到Root權(quán)限或者支持Recovery模式的Android智能終端,直接通過ADB命令,即可從系統(tǒng)/data/data目錄下提取到應(yīng)用的數(shù)據(jù)信息。
優(yōu)選的,所述分析取證方法中對(duì)于已經(jīng)越獄的iOS智能終端,在系統(tǒng)/AppDomain目錄下定位到Twitter的路徑,然后遍歷路徑獲取賬號(hào)信息、聯(lián)系人、好友和搜索歷史信息。
優(yōu)選的,所述分析取證方法中提取Twitter的運(yùn)行數(shù)據(jù)信息的過程如下:
(1)使用數(shù)據(jù)線連接智能終端和控制主機(jī),判斷智能終端類型為IOS智能終端或者Android智能終端;
(2)若為Android智能終端,則判斷Android智能終端是否Root,若系統(tǒng)已Root或越獄,可以直接獲取操作系統(tǒng)文件信息,直接提取Twitter應(yīng)用數(shù)據(jù)文件;若Android系統(tǒng)未Root,嘗試通過Adb命令對(duì)Twitter應(yīng)用程序及其數(shù)據(jù)進(jìn)行備份;
若為IOS智能終端,則判斷IOS智能終端是否越獄若IOS系統(tǒng)未越獄,嘗試使用itunes進(jìn)行應(yīng)用數(shù)據(jù)的備份;
(3)將Twitter的應(yīng)用數(shù)據(jù)從智能終端、備份或鏡像中復(fù)制到連接智能終端的控制主機(jī)上:
若為Android智能終端,提取系統(tǒng):/data/data/com.twitter.android/目錄下的文件;
若為IOS智能終端,提取系統(tǒng):/AppDomain/com.atebits.Tweetie2/目錄下的文件。
優(yōu)選的,所述分析取證方法對(duì)Twitter用戶的賬號(hào)信息、用戶關(guān)注的聯(lián)系人賬號(hào)和發(fā)布的消息進(jìn)行關(guān)聯(lián)。
優(yōu)選的,所述分析取證方法支持對(duì)通信消息中發(fā)送的圖片進(jìn)行查看。
優(yōu)選的,所述分析取證方法進(jìn)行數(shù)據(jù)分析的過程如下:
1.提取當(dāng)前賬號(hào)信息:
針對(duì)Android智能終端,遍歷系統(tǒng)下database文件夾,分析每個(gè)db文件的命名是否為[Twitter ID]-***.db這樣的結(jié)構(gòu),如果匹配則通過String.Split(‘-’)函數(shù)提取出字符串?dāng)?shù)組,其中字符數(shù)組中的第一個(gè)元素作為當(dāng)前登陸用戶的ID;接著,以當(dāng)前登錄的用戶ID作為查詢關(guān)鍵詞從users表中可以獲取登陸用戶信息;
針對(duì)IOS智能終端,遍歷系統(tǒng)下database文件夾,分析每個(gè)文件夾的命名是否為[Twitter用戶名稱]-[Twitter用戶id]這樣的結(jié)構(gòu);如果匹配通過String.Split(‘-’)解析該文件夾的名稱提取出字符數(shù)組,其中數(shù)組中的第一個(gè)元素為登錄用戶信息,第二個(gè)元素是用戶登錄ID。
2.提取聯(lián)系人,好友信息及發(fā)布信息:
針對(duì)Android智能終端,在users表中分析提取好友信息,并根據(jù)該好友信息在status表中對(duì)應(yīng)的提取關(guān)注的好友發(fā)布的消息;
針對(duì)IOS智能終端,在users表中分析提取好友信息,并根據(jù)該好友信息在status表中對(duì)應(yīng)的提取關(guān)注的好友發(fā)布的消息;
3.提取通信信息:
針對(duì)Android智能終端,提取分析messages表中sender_id、recipient_id、created和content字段,基于sender_id字段獲得消息發(fā)送者的ID,基于recipient_id字段獲得消息接收者的ID,基于created字段獲得通信時(shí)間信息,基于content字段獲得通信的文本內(nèi)容和圖片的URL;
針對(duì)IOS智能終端,提取分析messages表中text、date、recipientId以及senderId字段,基于text字段獲取發(fā)布消息正文,基于date字段獲取消息發(fā)送時(shí)間,基于recipientId字段獲取發(fā)布消息接收者的ID,基于senderId字段獲取消息發(fā)送者的ID;
4.提取搜索歷史信息:
針對(duì)Android智能終端,提取分析search_queries表表中name和time字段,基于name字段獲取搜索內(nèi)容信息;基于time字段獲取搜索時(shí)間信息;
針對(duì)IOS智能終端,首先提取名稱格式為“app.acc.[Twitter用戶名]-[TwitterID].detail.**”的文件,導(dǎo)出到創(chuàng)建的案件目錄下;接著通過plist庫解析該文件,通過關(guān)鍵詞“$objects”解析出一個(gè)plist數(shù)組,然后在該數(shù)組第5個(gè)元素,通過關(guān)鍵詞“recentSearches”得到一個(gè)數(shù)值;最后以該數(shù)值作為搜索歷史在數(shù)組中存放的位置信息,在數(shù)組中提取搜索歷史信息。
本發(fā)明提供的取證方案,完善了處理智能終端的手段,提高了取證的速度,對(duì)Twitter應(yīng)用中的關(guān)注對(duì)象、好友、通信信息和搜索歷史進(jìn)行了分析,可以將賬號(hào)、好友和通信信息進(jìn)行關(guān)聯(lián),并且支持對(duì)通信消息中發(fā)送的圖片進(jìn)行查看。再者本方案支持Android和iOS系統(tǒng)的取證,取證內(nèi)容多。
具體實(shí)施方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體實(shí)例,進(jìn)一步闡述本發(fā)明。
本實(shí)例提供的針對(duì)Twitter的分析取證方法,其能夠分別針對(duì)Android智能終端和IOS智能終端(如iPhone手機(jī))下Twitter應(yīng)用,取證Twitter用戶的賬號(hào)信息、用戶關(guān)注的聯(lián)系人賬號(hào)和發(fā)布的消息,用戶與好友的私信內(nèi)容和用戶的搜素歷史記錄。
本取證方法在智能終端(Android智能終端或IOS智能終端)的最高管理權(quán)狀態(tài),對(duì)智能終端中Twitter應(yīng)用數(shù)據(jù)進(jìn)行取證,如下:
對(duì)于已經(jīng)獲取到Root權(quán)限或者支持Recovery模式的Android智能終端,直接通過ADB命令,即可從/data/data目錄下提取到應(yīng)用的數(shù)據(jù)信息;
對(duì)于已經(jīng)越獄的iPhone手機(jī),在/AppDomain目錄下定位到Twitter的路徑,然后遍歷路徑獲取賬號(hào)信息、聯(lián)系人、好友和搜索歷史信息。
以下具體說明本實(shí)例分別針對(duì)Android智能終端和IOS智能終端(如iPhone手機(jī))下Twitter應(yīng)用取證的過程。
整個(gè)取證過程包括數(shù)據(jù)提取階段和數(shù)據(jù)分析階段。
一、數(shù)據(jù)提取階段:
(1)使用USB線連接智能終端和計(jì)算機(jī),判斷智能終端類型為IOS或者Android;
(2)若為Android智能終,則判斷Android智能終端是否Root,若若Android系統(tǒng)已經(jīng)Root,可以直接定位到Twitter的存儲(chǔ)路徑進(jìn)行數(shù)據(jù)獲??;若Android系統(tǒng)未Root,嘗試通過Adb命令對(duì)Twitter應(yīng)用程序及其數(shù)據(jù)進(jìn)行備份,通過備份的方法定位到Twitter數(shù)據(jù)的路徑然后進(jìn)行數(shù)據(jù)獲?。?/p>
若為IOS智能終端,則判斷IOS智能終端是否越獄,若系統(tǒng)已Root或越獄,可以直接獲取操作系統(tǒng)文件信息,直接提取Twitter應(yīng)用數(shù)據(jù)文件;若IOS系統(tǒng)未越獄,嘗試使用itunes進(jìn)行應(yīng)用數(shù)據(jù)的備份;
(3)將Twitter的應(yīng)用數(shù)據(jù)從智能終端、備份或鏡像中復(fù)制到連接智能終端的控制主機(jī)上:
若為Android智能終端,提取Android系統(tǒng):/data/data/com.twitter.android/目錄下的文件;
若為IOS智能終端,提取IOS系統(tǒng):/AppDomain/com.atebits.Tweetie2/目錄下的文件。
二、數(shù)據(jù)分析階段:
1、提取當(dāng)前賬號(hào)信息。
(1)Android智能終端上,Twitter的數(shù)據(jù)庫以及用戶使用痕跡存儲(chǔ)在/data/data/com.twitter.android/文件夾下,此文件夾下的databases文件夾是取證過程中最為關(guān)注的目錄,用戶的賬戶信息、使用痕跡信息等均存儲(chǔ)在這個(gè)文件夾下的數(shù)據(jù)庫中。Twitter的用戶使用痕跡數(shù)據(jù)庫使用當(dāng)前登錄的用戶ID作為文件名,因此數(shù)據(jù)庫的名字通常為[Twitter ID]-***.db。且Twitter登陸用戶的詳細(xì)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫的users表中。
為此,針對(duì)Android智能終端上的數(shù)據(jù)庫,本實(shí)例通過遍歷database文件夾,分析每個(gè)db文件的命名是否為“[Twitter ID]-***.db”這樣的結(jié)構(gòu),如果匹配則通過String.Split(‘-’)函數(shù)提取出字符串?dāng)?shù)組,其中字符數(shù)組中的第一個(gè)元素作為當(dāng)前登陸用戶的ID。接著,提取到的當(dāng)前登錄的用戶ID作為查詢關(guān)鍵詞從users表中可以獲取登陸用戶信息。
(2)iOS智能終端上,Twitter的數(shù)據(jù)庫以及用戶使用痕跡存儲(chǔ)在/AppDomain/com.atebits.Tweetie2/Library/Caches/databases/文件夾下。Twitter賬號(hào)登錄后,會(huì)在databases文件夾下產(chǎn)生一個(gè)當(dāng)前登錄的用戶名稱和用戶id組合作為名字的文件夾,文件夾名稱格式通常為[Twitter用戶名稱]-[Twitter用戶id]。
為此,針對(duì)iOS智能終端上的數(shù)據(jù)庫,本實(shí)例通過遍歷database文件夾,分析每個(gè)文件夾的命名是否為[Twitter用戶名稱]-[Twitter用戶id]這樣的結(jié)構(gòu);如果匹配通過String.Split(‘-’)解析該文件夾的名稱提取出字符數(shù)組,其中數(shù)組中的第一個(gè)元素為登錄用戶信息,第二個(gè)元素是用戶登錄ID。
然后遍歷該文件夾下的文件找到twitter.db,Twitter的關(guān)注人、相關(guān)人都存在twitter.db。
2、聯(lián)系人,好友信息及發(fā)布信息
(1)在Android智能終端下,申請(qǐng)人通過大量的研究分析發(fā)現(xiàn)users表中存儲(chǔ)的除了用戶登錄ID,其他賬號(hào)信息則為當(dāng)前登錄用戶的好友信息,主要包括好友名稱,user_id(好友ID),name(好友昵稱)等。關(guān)注的對(duì)象發(fā)布的消息ID和信息存儲(chǔ)在status表中,status表中主要包括author_id(消息發(fā)布者的ID)、content(消息正文內(nèi)容)以及created(消息的發(fā)送時(shí)間)等關(guān)鍵字段,但是缺少消息發(fā)布者的名字;而status表中的author_id和users表中的user_id是相同。
為此,本實(shí)例中針對(duì)Android智能終端,首先通過users表中獲取當(dāng)前登錄用戶的好友信息,并通過Dictionary(即字典,Dictionary里面的每一個(gè)元素都是一個(gè)鍵值對(duì),每個(gè)鍵值對(duì)由二個(gè)元素組成:鍵和值)將user_id和name對(duì)應(yīng)存儲(chǔ);然后分析status表以獲取關(guān)注的對(duì)象發(fā)布的消息ID和信息,在分析status表的時(shí)候通過author_id在Dictionary(該Dictionary在通過users表獲取用戶好友信息時(shí)候建立)中查詢消息發(fā)布者的名字。
(2)在IOS智能終端下,關(guān)注的對(duì)象發(fā)布的消息存儲(chǔ)在Status表中,主要包括text(消息正文)、date(消息發(fā)布時(shí)間)和userId(消息發(fā)布者的ID),其中date中存儲(chǔ)的是一個(gè)Unix時(shí)間戳,通過時(shí)間戳轉(zhuǎn)換函數(shù)成本地時(shí)間;創(chuàng)建List<T1>(泛型集合),在這里T1表示的是自定義的包含消息發(fā)布者的ID、消息正文和消息發(fā)送時(shí)間三個(gè)數(shù)據(jù)成員的類名,通過List<T1>可以按需存儲(chǔ)關(guān)注對(duì)象的userId、text和date。好友信息存儲(chǔ)在Users表中,主要包括id(用戶id)和name(用戶名稱),創(chuàng)建List<T2>(泛型集合),在這里T2表示的是包含id和name兩個(gè)數(shù)據(jù)成員的類名,通過List<T2>可以按需存儲(chǔ)用戶關(guān)注對(duì)象的id和name。User表中的id和Status表中的userID是相同的。通過嵌套兩個(gè)循環(huán),外層遍歷List<T2>,內(nèi)層遍歷List<T1>,內(nèi)層遍歷中,查詢T1數(shù)據(jù)結(jié)構(gòu)中的消息發(fā)布者的ID與外層遍歷的T2數(shù)據(jù)結(jié)構(gòu)中的id是否相同,如果相同,則能將關(guān)注對(duì)象的名稱、關(guān)注對(duì)象的發(fā)布的消息關(guān)聯(lián)起來。
3、通信信息。
(1)在Android智能終端下,提取分析messages表中sender_id、recipient_id、created和content字段,基于sender_id字段獲得消息發(fā)送者的ID,基于recipient_id字段獲得消息接收者的ID,基于created字段獲得通信時(shí)間信息,created字段存儲(chǔ)的是Unix時(shí)間戳,通過時(shí)間戳轉(zhuǎn)換成本地時(shí)間;基于content字段獲得通信的文本內(nèi)容和圖片的URL,打開該URL即可查看圖片;
(2)在IOS智能終端下,提取分析messages表中text、date、recipientId以及senderId字段,基于text字段獲取發(fā)布消息正文,基于date字段獲取消息發(fā)送時(shí)間,基于recipientId字段獲取發(fā)布消息接收者的ID,基于senderId字段獲取消息發(fā)送者的ID;創(chuàng)建List<T3>(泛型集合),在這里T3表示的是自定義的包含通信信息正文、通信信息發(fā)送時(shí)間,通信信息發(fā)送者ID,通信信息發(fā)送者名稱、通信信息接受者ID和通信信息接受者名稱的類,通過List<T3>按需存儲(chǔ)通信信息。為了將recipientId和senderId與對(duì)應(yīng)的名字關(guān)聯(lián),需要在分析Users表時(shí)創(chuàng)建的泛型集合(List<T2>,在分析關(guān)注對(duì)象發(fā)布消息中已經(jīng)創(chuàng)建)中通過嵌套循環(huán),外層循環(huán)遍歷List<T2>,內(nèi)層循環(huán)以T2數(shù)據(jù)結(jié)構(gòu)成員中的id與List<T3>中的recipientId或者senderId是否相同,如果相同則將recipientId和senderId與對(duì)應(yīng)的名字關(guān)聯(lián)起來。
4、搜索歷史。
(1)在Android智能終端下,基于search_queries表來提取用戶的搜索歷史記錄消息,主要包括name(搜索內(nèi)容)和time(搜索時(shí)間)這些字段,其中time中存儲(chǔ)的是Unix時(shí)間戳,通過時(shí)間戳轉(zhuǎn)換成本地時(shí)間。
(2)在IOS智能終端下,首先提取名稱格式為“app.acc.[Twitter用戶名]-[TwitterID].detail.**”的文件,導(dǎo)出到創(chuàng)建的案件目錄下;接著通過plist庫解析該文件,通過關(guān)鍵詞“$objects”解析出一個(gè)plist數(shù)組,然后在該plist數(shù)組第5個(gè)元素,通過關(guān)鍵詞“recentSearches”得到一個(gè)數(shù)值;最后以該數(shù)值作為搜索歷史在數(shù)組中存放的位置信息,在數(shù)組中提取搜索歷史信息。
由上實(shí)例可知,本取證方法支持Android和iOS系統(tǒng)的取證,且取證內(nèi)容多。
以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。