iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Security

那些留在電腦裡的證據:從零開始認識數位鑑識系列 第 24 篇

[DAY 24] 當證據開始「說謊」:認識 Anti-Forensics

  • 分享至 

  • xImage
  •  

前面幾篇一直在找電腦留下來的痕跡。

從 $MFT、Recycle Bin、LNK、Jump List、Prefetch,到利用 Run List 把被刪除的檔案重新拼回來,都是在利用系統留下的資訊,試著還原原本發生過的事情。

但如果對方也知道這些地方會留下紀錄呢?

如果有人刻意刪除、隱藏或修改資料,甚至想辦法讓鑑識結果變得不可信,這類用來增加數位鑑識難度的行為,就稱為 Anti-Forensics(反鑑識)。

Anti-Forensics 是什麼?

Anti-Forensics 不只是「把檔案刪掉」。

它的目的可能是:

  • 避免數位證據被發現
  • 干擾證據的蒐集或擷取
  • 增加鑑識所需要的時間
  • 讓分析結果變得難以確認或容易受到質疑

簡單來說,就是想辦法讓鑑識人員:

找不到、拿不到、看不懂,或不知道該不該相信眼前的證據。

Anti-Forensics 大致可以從幾個方向來看:

  1. 對資料下手
  2. 隱藏資訊
  3. 影響鑑識工具
  4. 誤導分析人員

1. 直接對資料下手

最直覺的方法,就是直接處理證據本身,例如:

  • 刪除檔案
  • 修改檔案內容
  • 竄改 Metadata
  • 修改 Timestamp
  • 隱藏資料
  • 加密資料

假設某個程式 malware.exe 使用完後被刪掉,檔案本身雖然不見了,但不代表所有痕跡都一起消失。

例如 Prefetch 仍可能留下程式曾經執行過的資訊,甚至 cleanup 或 wiping 工具本身,也可能留下執行紀錄。

所以有時候會變成:

檔案本人:不在了

其他 Artifact:我記得它來過

這也是為什麼數位鑑識不只看「現在硬碟裡還有哪些檔案」,而是會去找系統曾經留下過哪些紀錄。

2. 修改 Timestamp

Timestamp 是建立事件時間線的重要依據。

如果有人刻意修改檔案時間,就可能讓事件發生的順序看起來完全不同。

例如一個 2026 年才出現的可疑檔案,Created Time 卻顯示 2021/03/15。

如果只看這一個時間,很容易以為它已經存在很多年。

在 NTFS 的 MFT Record 中,$STANDARD_INFORMATION 和 $FILE_NAME 都保存 Timestamp。

其中 $STANDARD_INFORMATION 的時間資訊較容易被修改,因此分析時不能只看單一 Timestamp。

如果出現:

$STANDARD_INFORMATION:2021
$FILE_NAME:2026

這時真正值得注意的反而是:

為什麼同一個檔案會出現兩組差很多的時間?

時間不一致,本身就可能是一條線索。

3. 不刪掉,直接藏起來

另一種方法不是破壞資料,而是讓資料不容易被發現。

常見方式包括:

  • 加密或限制存取
  • 將資料藏在不容易注意的位置
  • 把資料附加到正常檔案後面
  • 修改檔案屬性
  • Steganography(隱寫術)

其中 Encryption 和 Steganography 很容易搞混。

Encryption 比較像我知道這裡有資料,但是我看不懂。

Steganography 則比較像我根本不知道這裡藏了資料,例如表面上看起來只是一張普通圖片,但裡面可能還藏有其他資訊。

所以看到 photo.jpg,也不能只因為副檔名是 .jpg,就認定它真的只是一張 JPEG。

前面學過的 File Signature,在這種情況下就可以拿來確認檔案真正的格式。

4. 對鑑識工具下手

Anti-Forensics 也可能不是針對資料,而是利用鑑識工具本身的限制。

鑑識工具畢竟也是軟體,可能遇到:

  • 格式支援問題
  • 解析錯誤
  • 版本差異
  • Bug

如果有人刻意利用這些限制,就可能讓工具產生錯誤或不完整的結果。

這也是為什麼前面的實作會一直直接看 Hex、算 Offset、解 Run List。

不是因為每次鑑識都要全部手動做,而是至少要知道底層資料怎麼存。

這樣當工具顯示出奇怪的結果時,才能回頭確認:

是資料真的長這樣,還是工具解析錯了?

5. 誤導分析的人

最後真正做判斷的還是人。

工具可能只告訴你:

這裡有一個檔案
這裡有一個 Timestamp
這個程式可能執行過

但最後要解釋到底發生了什麼,還是要靠分析者。

如果有人刻意留下假的 Timestamp、錯誤的 Metadata,或大量無關資訊,就可能把調查方向帶偏。

這時最麻煩的反而不是什麼都找不到。

而是:

找到很多東西,但不知道哪些可以相信。

所以一個 Artifact 通常不能自己決定整個故事。

例如 Prefetch 顯示某個程式曾經執行過,還可以再搭配其他 Artifact 一起比對。

不同來源如果都指向同一件事情,證據才會更有說服力。

Anti-Forensics 能把所有痕跡清乾淨嗎?

不一定。

同一個行為往往會在系統不同地方留下紀錄。

例如一個程式曾經執行過,可能同時牽涉:

檔案本身
$MFT
Prefetch
Registry
Memory
Event Log

刪除其中一個,不代表其他地方也全部消失。

甚至執行 cleanup 或 wiping 工具,本身也可能再留下新的執行痕跡。

不過,也不是所有刪除資料都一定救得回來。

例如 SSD 的 TRIM 可能讓被刪除的資料快速消失,因此:

Deleted ≠ Gone 並不是所有情況都一定成立。

小結

Anti-Forensics 不只是刪除檔案,而是任何刻意增加鑑識難度的行為。

它可能讓證據:

  • 更難找到
  • 更難取得
  • 更難解讀
  • 更難驗證
  • 更容易被誤判

所以數位鑑識真正困難的地方,不只是:

「找到了什麼?」

還要繼續問:

「這份證據可以相信嗎?」

一個 Timestamp 不一定能說完整個故事,一個被刪除的檔案也不一定真的消失,相反的,一個看起來很正常的檔案,也不代表裡面沒有藏其他東西。

當有人刻意干擾證據時,就更不能只靠單一 Artifact 下結論。


上一篇
[DAY 23] 刪掉的檔案真的救得回來?實作 Run List 還原
系列文
那些留在電腦裡的證據:從零開始認識數位鑑識 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言