2012年12月26日 星期三

破譯瀏覽器紀錄檔 從URL編碼還原網路使用證據


破譯瀏覽器紀錄檔
從URL編碼還原網路使用證據

現今犯罪者會透過網路進行犯罪手法的分享以及收集相關背景知識,如果鑑識人員能夠掌握犯罪者所搜尋的關鍵字,對於證明犯罪者涉案的動機與證據將有所幫助。不過,市面上網頁瀏覽器的種類繁多,各種瀏覽器所產生的URL碼皆不相同,而且還有亂碼問題,因而造成鑑識人員辨析上的困難。為此,本文將探討URL碼組成元素及URL碼的編碼方式,了解網址列中的URL亂碼問題。

搜尋引擎提供現今網路大眾平台上所需的功能,舉凡Yahoo奇摩、Google、Findbook等網路平台上,皆有附上搜尋引擎的服務,以吸引使用者造訪自己的網站。

當使用者輸入關鍵字時,搜尋引擎會依此關鍵字在網路中搜尋網頁並且過濾資訊,列出符合使用者可能需要的內容,使用者透過點選瀏覽清單中的網頁來選取瀏覽。而所瀏覽的網頁資訊會自動地被伺服端及本地端電腦儲存,如文字檔、Cookies、網頁表單。

這些紀錄檔記錄著使用者的網路活動,使用者在搜尋引擎所鍵入的關鍵字,在網路紀錄檔是以URL碼方式儲存,如奇摩搜尋引擎搜尋information時,將記錄成「http://tw.search.yahoo.com/search?p=information&fr=yfp&ei=utf-8&v=0」。

但很特別地,非英語系國家的文字,如日文、中文、韓文,URL碼會變成由看似亂數所組成的一串亂碼,無法得知使用者搜尋的資訊。為了解亂碼問題,必須探討URL編碼方式以及各瀏覽器關鍵字搜尋URL碼的編碼方法,並分析鑑識工具如何還原URL搜尋字串。

網路資料搜尋 

網路資料是豐富且方便的,所以在需要查詢資料時,網路往往是優先搜尋資料的來源選項。透過搜尋引擎平台上的關鍵字搜尋服務,使用者可以立即找到相關的資料,並透過點選網頁進一步瀏覽確認內容。

網路中充滿多樣性的資源,如語言教育、旅遊、社群交友等,從中可獲取許多資料幫助學習,但有些非法人士卻利用網路進行犯罪,在網路中搜尋敏感性的資訊,獲取非法利益,例如他人信用卡卡號或毒品製作方法。

經由關鍵字搜尋進行的犯罪活動,鑑識人員可從網路紀錄檔中萃取URL碼,藉由URL碼來還原非法人士的網路歷史紀錄,確定犯罪行為。但是,URL碼因各國的編碼不同而使得HTTP URL的儲存情形呈現亂碼,因此URL的亂碼問題會出現在非英語系國家中,而英語系國家則不會有問題。

網頁容許各式各樣的編碼,如Big5、Unicode,所以非英語系國家會發展出屬於自己國家的編碼系統。但依據RFC 1738的規定,URL的內容只能出現部分ASCII碼,非英文的文字會被編碼成16進位數字。

如此一來,鑑識人員在URL的紀錄中將無法直接觀察出使用者所搜尋的字串,若要了解原始文字,必須透過反編碼方能解譯。

由於鑑識人員從網路紀錄中萃取的搜尋字串URL多呈現亂碼現象,所以還必須正確地解譯URL碼,了解URL編碼及其在不同瀏覽環境下的編碼方式,才能進一步地將搜尋字串還原。

何謂URL 

使用者在瀏覽器的網址搜尋列中所鍵入的網址,即是統一資源定位符(Uniform/Universal Resource Locator,URL)。每一列URL碼代表著網頁位址,當鍵入網址URL碼時,瀏覽器便會將網址轉譯成IP再連線至網站,與此網址的遠端伺服器連線溝通。

而網路中每一筆網頁資料都有位置,所以要在網路世界搜尋資料,連線到資料所屬網站的網址是非常重要的步驟。

統一資源定位符最初是由蒂姆.伯納斯-李(Tim Berners-Lee)發明,作為全球資訊網(WWW)的地址,它使用ASCII代碼的一部分來表示網際網路的地址。

目前全球資訊網聯盟已將URL編製為網際網路標準RFC1738,是網際網路上標準的資源地址(Address),URL編寫有一定的規則,它的組成元素依序為「協定類型://伺服器地址(必要時須加上埠號)/路徑/文件名」,標準格式如圖1所示:


▲圖1 統一資源定位符格式。

以「http://www.google.com/search?hl=en&source=hp&q=forensic&aq=f&oq=&aqi=g10」為例,它為Google搜尋引擎所搜尋的URL碼,其變數為q,而「forensic」為所搜尋的字串,如圖2所示。


▲圖2 Google搜尋引擎搜尋「forensic」。

配合圖2的例子,說明HTTP協定的統一資源定位符的五個基本元素,如下所列:

1. 傳送協定,如http、https(傳送資料時加密)、ftp。
2. 伺服器,例如www.google.com、www.yahoo.com等。
3. 埠號:以數字方式表示,如HTTP的埠號預設值為80,通常埠號可被省略。
4. 路徑:以「/」字元區別路徑中的每一個目錄的名稱。
5. 查詢:GET模式的表單參數,以「?」字元為起點,而每個參數之間以「&」隔開,「=」符號則區隔資料與參數名稱,如「q=forensic」。查詢的URL編碼通常以UTF-8為主,以避開字元衝突的問題。


URL編碼簡介

URL碼是連結網頁的媒介,但在網路引擎內所鍵入的關鍵字,在搜尋列上時常會呈現亂碼,此情形的發生,相關因素如下:

1. 網路允許不一樣的編碼方式,但因依據RFC 1738的規定,URL的內容只能出現部分的ASCII碼。
2. 沒有任何標準來規範網頁資料與後端伺服器之間應該如何編碼,造成資料格式在程式介面之間的轉換混亂。所以當使用者在搜尋引擎上,雖然輸入同一字串,但URL碼會依據作業系統、預設語系、瀏覽器的不同而顯現出不同的編碼結果。

一般常見的中文編碼分為繁體與簡體,Big5為繁體編碼、GB為簡體中文編碼,這兩種編碼無法彼此相容,所以當電子郵件以Big5為編碼方式傳送出去後,如果對方不是使用相同的編碼方式閱讀信件(例如採用GB碼),郵件內容就會出現亂碼。

這是因為原先以Big5編碼的文字,對應到GB碼時,因為格式不同,無法正確對應出原來的文字,這時就會出現怪字,或是一堆看不懂的符號。

同樣地,瀏覽國外的網站也可能發生同樣的狀況,當編碼方式無法對應時,就可能會看到一堆亂碼,這就是編碼沒辦法相容的緣故。

中文編碼並非ASCII碼,當中文網頁於伺服器與客戶端間傳輸時,勢必要經過一番處理,變成ASCII碼才能傳輸,以下為URL編碼實際例子。

在Google Chrome瀏覽器中,以Google為搜尋引擎,輸入「美國牛」,其產生的URL碼如表1所示:

表1 中文的URL 


瀏覽器發送URL編碼的區別

因為URL編碼無標準規範網頁,造成同一組字串在不同瀏覽器中,卻顯現不同的URL,以下就以市占率前三名的瀏覽器IE、Firefox、Chrome來介紹編碼的差異性。

Internet Explorer(IE)

IE為微軟所設計的瀏覽器,一般使用者購買Windows作業系統,就會附上Internet Explorer的內建瀏覽器,由於微軟作業系統市占率高,因而帶動了IE的高使用率。

IE將URL記錄在index.dat,它是具有隱藏性的檔案,儲存使用者的Cookies、Web History,其預設儲存路徑彙整如表2。

表2 IE Index.dat預設路徑 


利用IE瀏覽器,在搜尋引擎輸入「毒品」,然後察看URL編碼情形,如圖3所示。而圖3上方框內的字串「%E6%AF%92%E5%93%81」為關鍵字毒品經過UTF-8編碼方式而成。


▲圖3 在IE瀏覽器中鍵入關鍵字進行搜尋。

Mozilla Firefox 

Firefox瀏覽器是Mozilla基金會從Mozilla Application Suite獨立出來採用開放原始碼與全球網路社群共同開發的網頁瀏覽器。而Firefox於3.0版本後,使用SQLite儲存資料,如Bookmarks、Cookies、瀏覽紀錄等。

透過SQLite Viewer可查看Firefox網路紀錄檔的內容,表3是紀錄檔預設路徑。而Firefox的URL紀錄儲存在places.sqlite表單內。與IE相同,也在Google搜尋引擎內輸入「毒品」察看URL編碼情形,如圖4所示。

表3 Firefox紀錄檔預設路徑 



▲圖4 在Firefox瀏覽器中鍵入關鍵字搜尋。

很奧妙的是,在搜尋列上觀察到變數q後面所出現的參數為「毒品」,這與IE不同。針對此差異的發生,這裡利用Firefox瀏覽器選項功能列中的語言及字元編碼察看其編碼方式,如圖5所示。


▲圖5 Firefox的編碼方式。

讀者可能發現Firefox與IE的編碼方式其實是相同的,依然為UTF-8,但為何Firefox的搜尋列中URL所顯示的字串為「毒品」。探究其原因,在於這串URL是給使用者自己看的,並非是傳給伺服器,所以將字串傳輸出去時,仍然會是「%E6%AF%92%E5% 93%81」。

Google Chrome 

Chrome是由Google開發的網頁瀏覽器。「Chrome」是化學元素「鉻」的英文名稱,其程式碼是基於其他開放原始碼軟體所撰寫,包括WebKit和Mozilla,Google Chrome的整體發展目標是提升穩定性、速度和安全性,並創造出簡單且有效率的用戶介面。


Google Chome紀錄檔存放路徑彙整如表4所示,URL則記錄在History表單內。與前兩個瀏覽器相同,在Google搜尋引擎內輸入「毒品」時,如圖6所示,其URL編碼為「%E6%AF%92%E5%93%81」。

表4 Google Chrome紀錄檔案預設路徑



▲圖6 在Chrome瀏覽器內鍵入關鍵字搜尋。

由此可以發現,各個瀏覽器都有屬於自己的編碼方式,從IE、Firefox及Google Chrome所顯示的URL搜尋字串及參數資料可以觀察得到,在Firefox中甚至以中文明碼顯示。

但這是瀏覽器所顯示的URL編碼,並非遠端伺服器所了解的,所以當瀏覽器傳送查詢字串時,仍會轉換成16進位編碼,如本例中的「毒品」。

案例說明 

甲君為破獲台灣北部販毒集團於供毒名單中的一員,由於線索明確,執法單位人員遂往甲君的住處逕行搜索。

在甲君的住處並沒有發現有關的毒品,但是卻發現數量極多的感冒藥、化學器材以及一台電腦,這引起了注意,因感冒藥可用來提煉安非他命。安非他命屬於中樞神經興奮劑,吸食之後會產生幻覺,屬於第二級毒品。

於是,質問甲君為何購買數量極多的感冒藥並有其他化學器材,但甲君卻宣稱單純對感冒藥成份有興趣,所以購買化學器材進行研究,並無製毒意圖,更沒有能力製毒。在無直接證據情況下,對於甲君住處內感冒藥、化學器材及電腦於以查扣,而扣押的電腦交由鑑識人員進行鑑識。

鑑識人員在甲君所使用的電腦硬碟進行初步分析,並未發現有關毒品製造的文檔資料,轉而朝網路紀錄著手,察看其上網紀錄。

甲君所使用的瀏覽器為Google Chrome,於是鑑識人員便透過鑑識工具ChromeAnalysis Plus將甲君的網路紀錄萃取出,並進行分析,以下為鑑識取證的過程:

步驟一:將甲君的硬碟做位元串流拷貝
首先,鑑識人員利用位元串流拷貝(Bit Stream Copy)技術將硬碟進行完整備份,目的是為了避免人員存取到硬碟,影響到數位證據的完整性。

步驟二:開啟ChromeAnalysis Plus並載入Google Chrome紀錄檔
開啟Chrome Analysis後,新建一個案例並將要萃取的網路紀錄路徑指向「C:\Users\<使用者名稱>\AppData\Local\Google\Chrome\User Data\Default」,如圖7所示,而圖8為甲君的上網紀錄。


▲圖7 讀取Chrome紀錄檔。


▲圖8 甲君的網路紀錄。

從Chrome Analysis plus中所顯示的紀錄可以了解甲君的上網習慣,例如搜尋字串、上網時間、次數及最常瀏覽的網站等。從網路紀錄中發現,甲君有每天上網的習慣,並會利用Google搜尋引擎查詢資訊。

此外,鑑識人員也察覺到甲君網路紀錄的存取時間呈現出異常的狀況,從查獲販毒集團前兩個禮拜時間後開始便無記錄,因此懷疑部分網路紀錄可能已遭刪除,因此嘗試以FTK Imager進行Logical Drive萃取。鑑識結果發現有幾項以透過Google搜尋片斷的URL碼(圖9)。


▲圖9 片斷的搜尋字串URL碼。

從圖9中可觀察出,甲君使用Google搜尋引擎來進行資料的蒐集,URL為「http://www.google.com/webhp?source=search_app#hl=zhTW&site=webhp&source=hp&q=%E5%AE%89%E9%9D%9E%E4%BB%96%E5%91%BD」,變數q後的參數為搜尋字串,但因編碼問題造成字串顯示為「%E5%AE%89%E9%9D%9E%E4%BB%96%E5%91%BD」的亂碼。

鑑識人員將此段URL碼輸入反編碼的編輯器內,獲得「安非他命」的文字,如圖10所示。接著,其他搜尋字串URL經反編碼後得到「安非他命的化學元素」、「安非他命製造器材」以及「感冒藥提煉」等文字字串,這些資訊顯示甲君男利用網路搜尋安非他命的化學組成,並獲取感冒藥提煉安排他命的方法。由於這些數位證據,使得甲君所宣稱無製毒意圖和能力的證詞出現矛盾,甲君涉及製毒的可能性非常高。


▲圖10 反編碼後得到「安非他命」。

結語 

非英語系國家所使用的文字(非ASCII),在輸入搜尋引擎後會因編碼關係而造成亂碼,使得鑑識人員不易辨識搜尋字串。此案例中,雖然網路紀錄的URL亂碼利用鑑識工具成功地將搜尋字串還原,但必須思考的是,鑑識工具無法支援每一種瀏覽器,遇到此種情形時,將對鑑識人員造成莫大的困擾。

瀏覽器都有屬於各自的編碼方式,並無一定規範,但卻有一定的規則,例如各參數執行、字串的編碼及位元組以「%」符號作區隔,透過此規則,可以從網路紀錄中擷取片斷的URL資料,再經過URL反編碼轉譯還原字串。

如本例中,鑑識人員利用FTK Imager進行Logical Drive萃取片斷的URL搜尋字串,再執行反編碼。因此,鑑識人員在進行網路紀錄分析時,需考慮編碼問題,方不至於漏掉內含重要訊息的數位證據。

中央警察大學資訊密碼暨建構實驗室(ICCL)
轉載自《網管人》


沒有留言:

張貼留言