隱藏於數位媒體之中的證據經常比藏在系統內更難辨識及鑑識,無法透過字元搜尋來找出可能的蹤跡,故本文採用常見的數位影像資訊隱藏方式,搭配開放原始碼程式與免費軟體進行鑑識分析,經由流程的建立找出隱藏的數位證據,讓罪犯無處遁形。
隨著資訊科技的發展,原本只有少數人才接觸得到的電腦資訊也唾手可得,網路上還有不少網站提供電腦或軟體的使用技巧,更有許多熱心的程式開發者提供簡易使用的工具程式來協助使用者解決各項難題。然而,這也使得一些原本較不易為使用者所採用的技術(例如資訊隱藏技術)透過工具程式就能輕鬆運用,這讓取得數位證據的難度更加提高。
傳統電腦鑑識是透過建立完整映像檔來複製硬碟資料進行分析,再使用字元搜尋的方式尋找可能的證據,然而若是這些證據被隱藏在數位影像之中,單純透過字元搜尋的方式是完全無法獲得重要的訊息。最主要的原因在於,數位影像無法單純地使用字元搜尋的方式來分析,尤其是使用了資訊隱藏技術,就會將所要隱藏的訊息進行編碼再嵌入到數位影像中。要判斷是否有重要訊息隱藏於數位影像相當不容易,要執行分析更是費時費力,因此進行數位鑑識的分析人員需要有高敏感度,分析該電腦使用者是否有那些行為不合常態,例如寄送與工作或郵件內容無關的影像、在存放重要訊息資料夾置有無關的影像、部分影像所占空間不合理、電腦中有無安裝或存放資訊隱藏工具等,方能就可疑的影像進行判讀與分析,並且要能建立一套基本流程來檢驗相關的影像,進行發現重要的數位證據。
了解相關背景知識
接著,針對相關以影像做為偽裝隱藏資料的方法,先做一個簡要的敘述。
改變副檔名
最容易被使用的隱藏方法,就是改變副檔名,讓檔案不被注意,例如將檔案由「image0723.jpg」改為「image0723.abc」,由於像是Windows系統的檔案總管會自動依副檔名來判斷內容,非屬圖形檔的檔案就不易被注意到,也就容易忽略取得重要證據的機會。但有些檔案瀏覽工具是依檔案的檔頭(Header)訊息來判斷,即使副檔名被亂改成不特定英數字,還是能正確地判斷出檔案的型態。
檔案合併
將影像檔與要隱藏的機密檔案合併,合併之後的檔案因加入要隱藏的檔案,所以占的空間變大,但由檔案標頭還是原本的影像檔,所以在瀏覽時看起來就像是一般影像檔。例如,可在Windows系統中以「copy /b 圖檔.jpg+機密檔.zip 偽裝檔.jpg」方式產生偽裝檔案,開啟該檔案時可見到原本的圖檔,但若是將副檔名改為zip,就可解出原本的機密檔案。
圖檔格式資訊
可交換圖檔格式(Exchangeable Image File Format,EXIF)為專門為數位相機所設定,裡面通常會包含相機型號、拍攝時間、焦距、快門速度、光圈、曝光模式、白平衡、ISO值等等細節。這部分可被使用者編輯,所以亦也可做為隱藏訊息的地方。這種方式不容易被查覺,也不會大幅影響檔案大小,但相對來說,可隱藏的訊息量會受限於格式,因此多僅能隱藏文數字的訊息。
藏密法(Steganography)
藏密法是採用較複雜的方法來進行隱藏,最常見的是LSB(Least Significant Bits)。這種方式是基本人眼對於顏色深淺的識別能力不高,影像中的像素(Pixel)若是小幅調整,例如從數值198(二進位:1100 0110),將8位元的後4個位元(即Least Significant Bits)改為1011,數值就會由198變成203,但由於差距不大,所以人眼不易識別出差異。
此種方式不會造成圖檔所占空間變大,一般工具也不易發覺所隱藏的訊息。但此種方法通常會為避免嚴重影響影像品質導致被懷疑有隱藏可疑訊息,嵌入的機密檔案通常不會太大;也由於此種方式要操作圖像位元組,所以技術需求較高,使用者多會傾向使用可免費取得的工具。
鑑識方法介紹
在數位鑑識之中,雖然多以Windows系統為主要鑑識標的,但以Linux的平台進行鑑識會較易於使用,主要原因在於有不少的開放原始碼資源可以使用,可因應交叉檢驗,而且比較不用擔心誤觸而引發Windows的程式執行。在此就影像鑑識提出一檢驗流程,詳細內容如下所述。
檢視檔案類型
著手進行影像鑑識時,首先需要了解檔案的類型,若是僅依照檔案副檔名來判斷,可能會忽略了隱藏的重要線索或證據,因此可以透過「file」這個程式先檢視檔案類型,就可以初步判斷檔案是執行檔、影像檔、文件檔等等。
在圖1中可以見到,「file」依據檔案檔頭來正確判斷是「JPEG」、文字檔、MS Windows程式及Python程式,即使副檔名不同,也不受影響,例如「bandon.abc」就正確識別為JPEG圖檔,這對於找出正確的檔案操作方式至為重要。
分析檔案內容
對於一些檔案可能比預期的大,或是可疑的檔案,可以使用「binwalk」這個程式來進一步分析。「binwalk」原本是設計來分析韌體(Firmware)的程式,但也可以用來解析檔案的內容,判斷檔案中是否有加入不同類型的檔案,更可以進一步地將檔案解離出來。例如在圖2中,將一份壓縮檔與一張圖片結合到一張JPEG圖檔內,透過「file」程式來看,也是只能見到是JPEG檔,但透過binwalk程式的分析之後,就可發現「bandon_iccl.jpg」中包含ZIP與PNG檔案,甚至於還解析出ZIP檔中含的是「secret.docx」檔案。
因此,就可以使用「binwalk -e bandon_iccl.jpg」將檔案分離出來並放到「_bandon_iccl.jpg_extracted」目錄中,在圖3就可見到有正確解析出壓縮檔與「secret.docx」檔案,但未見到PNG檔,所以再次用「binwalk」來解析,指定的標的設定為PNG圖檔,執行「binwalk -D 'png image:png' bandon_iccl.jpg」,檔案分離出來到「_bandon_iccl.jpg-0_extracted」目錄中,在圖4與圖5中就可發現到有解析出「36A59.png」這個檔案,經檢視也確實是所要找的標的。
檢視影像檔資訊
要得知影像檔的相關資訊,最容易的方式是在Windows 7/10中點選影像檔後按下滑鼠右鍵,接著點選【內容】,隨即再切換至〔詳細資料〕頁籤,即可得知EXIF的相關資料,也能夠在此進行編輯或移除相關訊息等,如圖6所示。
但若要匯出相關資訊,則需要透過其他程式來處理。在Linux中,可以安裝並使用「exif」程式來達到匯出影像檔資訊的目的,如圖7所示,就能夠檢視相關訊息並匯出成文字檔進行分析。
批次擷取影像資訊
然而,若所需處理的影像檔可能不是少數幾個檔案,而是成千上百的話,一個個的檔案都要逐筆檢視並以「exif」匯出,勢必會耗掉不少時間,更遑論要進一步分析。因此,就可以使用更有效率的工具「imago」(https://github.com/redaelli/imago-forensics)。
「imago」為一個以Python所撰寫的工具程式,可以從Github下載或是透過Python的套件管理程式pip來安裝。「imago」可以用來尋找特定目錄下檔案,擷取出EXIF資訊,並將相關資訊輸出到CSV(Comma-Separated Values)檔或SQLite的資料檔,並且可以一併計算MD5、SHA256、SHA512的雜湊值,可協助鑑識人員更快速地對影像檔進行蒐證。
在此使用imago,將「pics」目錄下的EXIF與GPS訊息解析出來,並存放到「pics_info」目錄下:
imago -i /media/sf_share/pics/ -o /media/sf_share/pics_info/ -x -g
-i:用來指定所要處理的影像檔案所在路徑
-o:用來指定取得訊息後所要輸出的檔案所在路徑,預設格式為CSV檔。
-x:指定所要取得的訊息為EXIF
-g:為取得EXIF中的GPS訊息並予以轉換
透過imago來操作,如圖8所示,之後就可以發現imago將訊息存到「imago.csv」檔,開啟這個檔案,便能見到相關的訊息都已表列到相關資料欄位中,如圖9所示。
猜測影像是否嵌入資訊
要解出以藏密法方式隱藏的資訊最為困難,在無法得知所使用的演算法情況,有時只能使用「Stegsolve」(https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve)之類的工具來逐步檢視可能的位元平面(Bit Plane),看看是否有可疑圖像出現,再來進行分析。
另一種方式則是使用自動化分析的工具來嘗試解譯是否有隱藏訊息,如「zsteg」(https://github.com/zed-0xff/zsteg)。「zsteg」是一個以Ruby所寫成的程式,若系統有安裝Ruby程式的話,就可以透過gem來安裝這套程式:
gem install zsteg
zsteg可解析以LSB(Least Significant Bit)、OpenStego、Camouflage等所隱藏的訊息。在此以LSB嵌入訊息的影像檔案為例,先藏入一串文字,內容為「You got me. {This is a secret from ICCL}.」,再以zsteg來解析,之後可以在「b1,bgr,lsb,xy」這一行中發現到解析出來的文字與藏入的訊息幾乎相符,如圖10所示。
而如果還是無法確認可能的證據,就可以使用-a參數來嘗試所有可能的組合,查看是否有進一步的線索,執行結果如圖11所示。
進行情境模擬
台安科技公司為了避免機密消息走漏,嚴格監控組織內部的電腦網路存取,包括電子郵件也都會經關鍵字掃描後才能放行。然而,卻還是發生了機密資料外洩,於是交由資訊部門進行清查。
首先,必須先清查是否有攜帶式裝置造成資料外洩的可能,就現有的門禁管制,以及DLP(Data Loss Protection)系統清查,確認應無機密資料複製到未確認的攜帶式裝置,也未有公司的攜帶式裝置被帶出去。
接下來,資訊部門稽核網路相關使用行為,發現有員工A用電腦上網下載有關藏密法的軟體,以及查詢相關使用說明網頁,因此就員工A開始進行調查。
在員工A的電腦中,使用關鍵字進行清查,並未發現任何可疑的線索,然而在檢視近期寄出的電子郵件,有部分郵件附上與內容不盡相符的圖片,因此推測A可能是使用藏密法的軟體以圖片來隱藏機密訊息,故資訊部分就員工A的電腦中先匯出相關圖片進行調查,整個調查過程如下:
步驟一:檢測圖片相關資訊
由於所需檢測的圖片不多,所以直接使用「exif」程式來檢視圖片相關訊息,其中發現有圖片看似正常,如圖12所示,但無法檢視到相關的EXIF訊息,如圖13所示。
步驟二:利用zsteg猜測可能隱藏的訊息
接下來使用「zsteg」來檢測,發現圖14中有隱藏可疑的訊息「zip pass:2019exposed」。而在相關檢測的檔案中,並無加密的檔案存在,因此懷疑可能使用圖片偽裝手法來夾帶檔案。
步驟三:使用binwalk來拆解圖片檔
資訊部門再次過濾可疑的圖片檔案,發現有檔案大小異常,於是使用「binwalk」進行解析,發現可能暗藏ZIP檔案,如圖15所示,與之前所發現的「zip pass」訊息有關連。再以「binwalk -e」將ZIP檔分離之後,發現可用之前得到的密碼解壓縮的ZIP檔案,就是此次外洩的機密檔。
由於員工A透過藏密法的運用,將機密訊息以不同方式來隱藏,增加不少的調查難度,而由於調查人員在以關鍵字搜尋無結果後,就使用者連線紀錄來推測可能的隱藏手法,針對藏密法來逐漸解譯出線索,因此能順利地找出重要資訊。
而員工A眼見精心隱藏的訊息被解譯,僅能坦承犯案的經過,於是資訊部門將調查結果呈交執行長,將員工A送交法辦。
結語
電腦與網路犯罪促使數位鑑識的快速崛起,為了找出隱藏在系統中的證據,必須運用數位鑑識的方法與程序來取證。然而隱藏於數位影像中的證據非常難以辨識與取證,以往的數位鑑識方法不易從數位影像找到證據,既無法使用關鍵字搜尋可能的線索,直接查看影像也不易查覺隱藏的資訊,藏密法對一般的數位鑑識確實是一大挑戰。
本文介紹了更改副檔名、合併檔案、影像檔頭資訊、藏密法等數種較為常見的數位影像訊息隱藏的方法,並因應這些方法,提出可用的鑑識流程與所使用的工具,透過這些開放原始碼或免費軟體工具進行影像鑑識,並在情境模擬中,藉此一步步地讓隱藏在影像中的訊息得以呈現。
<本文作者:台灣E化資安分析管理協會(ESAM, http://esam.nctu.me/esam/)/中央警察大學資訊密碼暨建構實驗室(ICCL)中央警察大學資訊密碼暨建構實驗室(ICCL),1998年12月成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學, 資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障。(https://sites.google.com/site/iccltogether/)>