今年暑假,我到加拿大參加了為期一個月的資訊安全與數位鑑識工作坊。回台灣之後,剛好遇上iThome鐵人賽,就想把這段時間學到的東西分享給對數位鑑識有興趣的新手們,也順便逼自己再次複習。如果內容有錯誤或觀念不夠嚴謹,非常歡迎大家指教~
接下來的30篇,我會從數位鑑識的基礎觀念開始,逐步介紹數位證據、Hash、儲存結構、Windows鑑識、記憶體鑑識、檔案系統、資料救援、RAID,以及行動裝置鑑識等主題。有些篇章也會搭配簡單的實作或網頁,讓大家可以動手玩看看、模擬鑑識情境。
那麼,我們就開始這趟數位鑑識之旅吧!
講到鑑識,很多人第一個想到的可能是電影裡拿著放大鏡、戴著手套找指紋。
而在數位世界裡,我們找的不是指紋,而是:
Digital Evidence,也就是數位證據。
舉例來說,一台電腦被懷疑遭到入侵,我們可能會想知道:
攻擊者有沒有登入這台電腦?
他執行過哪些程式?
存取過哪些檔案?
有沒有把資料複製出去?
他什麼時候連上某個 IP?
某個檔案是什麼時候被刪除的?
刪掉之後還能不能找回來?
這些問題,很多時候都可以從電腦留下來的數位證據中找到線索。
而Digital Forensics(數位鑑識),簡單來說,就是利用有系統、可重複、可驗證的方法,從數位設備中取得、保存、檢驗與分析證據,最後用證據支持我們對事件的判斷。
假設今天我們發現:
secret.pdf
出現在某台電腦裡。
可以直接雙擊把它打開嗎?
如果這是一個普通使用者的電腦,也許沒什麼問題。
但如果這台電腦是案件證據,事情就完全不同了。
因為任何操作,都有可能改變原本的資料。
例如:
原始證據
↓
鑑識人員開啟檔案
↓
系統產生新的存取紀錄
↓
原始證據被改變
這就會產生一個問題:
我們現在看到的,到底是原本證據的狀態,還是鑑識人員操作之後的結果?
因此,數位鑑識非常重視:
也就是證據完整性。
Identify
↓
Preserve
↓
Collect
↓
Examine
↓
Analyze
↓
Report
先確認:
哪些設備可能包含證據?
可能是:
電腦
手機
USB
硬碟
記憶卡
雲端資料
找到證據之後,第一個問題不是「裡面有什麼」。
而是:
怎麼避免它被改掉?
例如隔離設備、控制存取方式、保存原始狀態等等。
接下來才是取得證據。
例如從硬碟建立鑑識映像:
Original Evidence
↓
Forensic Image
通常分析工作會盡量在副本上進行,而不是直接操作原始證據。
把取得的資料拆開來看。
例如:
檔案
Registry
MFT
RAM
SQLite
Logs
這個階段比較像:
「我到底找到了什麼?」
找到東西 ≠ 知道發生什麼事。
例如看到:
powershell.exe
並不能只靠這一個結果,就直接說:
「攻擊者執行了 PowerShell。」
還需要搭配其他 Artifact、時間資訊、Process、Network Connection 等資料一起判斷。
而且在分析不同證據的過程中,常常會發現新的線索,進而產生新的問題。
例如,在分析某個檔案時,發現它可能是從 USB 複製進來的,那麼下一步可能就會回頭確認:
「這支 USB 是哪裡來的?上面還有沒有其他相關資料?」
這時候就會重新回到 Identify,尋找新的證據來源,再進行後續的 Preserve、Collect、Examine 與 Analyze。
最後就是回答:
你發現了什麼?你怎麼知道?證據在哪裡?有哪些限制?
畢竟鑑識的目的不是找到一堆檔案就好,而是要讓別人能理解你的分析結果。
Digital Forensics 是用可驗證的方法保存、分析數位證據,並根據證據重建事件。