iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Security

資安這條路:系統化學習藍隊技術系列 第 23

Day23:藍隊提升技術力:數位鑑識 (5)─學習利用 Scalpel 進行File Carving

  • 分享至 

  • xImage
  •  

為什麼要學 File Carving

在數位鑑識領域中,File Carving 是一項關鍵技能,
它能夠從數位儲存媒體中恢復已刪除或損壞的檔案。

學習 File Carving 的主要原因

恢復關鍵證據

  • 許多駭客可能會嘗試刪除或隱藏重要的證據
  • File Carving 技術可以讓調查人員恢復這些被刪除的檔案,
    • 找到關鍵證據,如
      • 刪除的電子郵件
      • 隱藏的檔案檔案
      • 被刪除的圖片或影片

重建事件時間線

透過恢復被刪除的檔案,調查人員可以更完整地重建事件的時間線

  • 目的
    • 理解攻擊的順序、方法和範圍

應對反取證技術

  • 進階攻擊者會使用反取證技術來掩蓋他們的行為
  • File Carving 可以幫助調查人員
    • 繞過反取證技術
    • 恢復被故意隱藏或偽裝的資料

資料恢復

  • 其他用途
    • 恢復意外刪除的重要檔案
    • 損壞的儲存設備中救回資料。

深入理解檔案系統

  • 背景知識
    • 學習 File Carving 需要深入理解檔案系統的工作原理
    • 有助於取證工作,還能提高整體的系統管理和安全技能

加強事件回應能力

  • 在事件回應過程中
    • 快速恢復和分析被刪除的檔案可能是確定攻擊範圍和方法的關鍵
    • File Carving 技能可以提高事件回應的效率和效果

法律合規性

  • 法規需求
    • 在某些行業和司法管轄區,組織可能有法律義務保留某些類型的資料
    • File Carving 技能可以幫助組織在意外刪除或損壞的情況下恢復這些資料,確保合規性

工具列表

常用於File Carving(檔案復原)的工具列表:

  1. Foremost
    • 開源的指令介面工具
    • 支援多種檔案類型
    • 可以從硬碟鏡像或原始資料中恢復檔案
  2. Scalpel
    • Foremost的改進版本
    • 更快速、更有效率
    • 支援自定義檔案類型
  3. PhotoRec
    • 免費開源的跨平台工具
    • 可以恢復照片、影片和文件檔案等
    • 支援多種檔案系統
  4. Bulk Extractor
    • 常用的取證工具
    • 可以從硬碟映像中提取特定類型的資訊
    • 適用於大規模資料分析
  5. TestDisk
    • 開源的資料恢復軟體
    • 可以恢復分區表和引導扇區
    • 通常與PhotoRec一起使用
  6. Autopsy
    • 圖形界面的數字取證平台
    • 包含多種工具,包括檔案恢復功能
    • 適合進行全面的取證分析
  7. RecoverJPEG
    • 專門用於恢復JPEG圖片的工具
    • 簡單易用,適合特定需求
  8. Binwalk
    • 用於分析、逆向工程和提取韌體映像的工具
    • 可以識別嵌入在韌體中的檔案系統和檔案

工具 Scalpel

Scalpel 可以從磁碟映像中恢復已刪除的檔案。

學習使用 Scalpel 可以:

  • 提高事件回應能力
  • 協助數位取證調查
  • 恢復可能包含關鍵證據的刪除檔案
  • 加強對資料恢復過程的理解

什麼時候會需要用到

  • 調查可疑的資料刪除活動
  • 對受損或格式化的硬碟進行取證分析
  • 恢復意外刪除的重要檔案
  • 在事件回應過程中尋找被刪除的惡意軟體或其他證據
  • 進行定期的安全審計,檢查是否存在未授權的資料刪除

實驗目標

學習使用 Scalpel 工具恢復被刪除的 JPEG 照片檔案。

準備工作

  • 安裝 Scalpel:
    sudo apt-get install scalpel   # 對於 Debian/Ubuntu 系統
    
    sudo yum install scalpel       # 對於 RHEL/CentOS 系統
    

image

  • 建立一個模擬的 "受害" 硬碟映像
    dd if=/dev/zero of=victim_disk.img bs=1M count=100
    sudo losetup /dev/loop0 victim_disk.img
    sudo mkfs.ext4 /dev/loop0
    

image

  • 掛載模擬硬碟
    sudo mkdir /mnt/victim
    sudo mount /dev/loop0 /mnt/victim
    

實驗步驟

  • 準備測試照片
    • 下載 5-10 張不同的 JPEG 照片
      • c1
      • c2
      • c3
      • c4
      • c5
  • 建立腳本快速下載檔案
    • vim download_images.sh
  • download_images.sh 內容如下
#!/bin/bash
# 建立資料夾以儲存圖片
mkdir -p downloaded_images
cd downloaded_images
# 圖片網址陣列
declare -a image_urls=(
    "https://hackmd.io/_uploads/SyPEud-1kx.jpg"
    "https://hackmd.io/_uploads/r1vEO_ZkJx.jpg"
    "https://hackmd.io/_uploads/BJD4uOZ1Je.jpg"
    "https://hackmd.io/_uploads/rylP4_u-kyg.jpg"
    "https://hackmd.io/_uploads/S1w4_dby1x.jpg"
)
# 預期檔名陣列
declare -a filenames=(
    "c1.jpg"
    "c2.jpg"
    "c3.jpg"
    "c4.jpg"
    "c5.jpg"
)
# 下載每張圖片
for i in "${!image_urls[@]}"; do
    echo "正在下載 ${filenames[$i]}..."
    curl -L "${image_urls[$i]}" -o "${filenames[$i]}"
done
echo "所有圖片已下載完成。"
  • 給予執行權限
chmod +x download_images.sh
  • 執行下載檔案
./download_images.sh
  • 查看是否有下載好
┌──(kali㉿kali)-[~]
└─$ ls -al downloaded_images 
總計 228
drwxrwxr-x  2 kali kali  4096 10月  7 11:05 .
drwx------ 23 kali kali  4096 10月  7 11:05 ..
-rw-rw-r--  1 kali kali 46400 10月  7 11:05 c1.jpg
-rw-rw-r--  1 kali kali 46540 10月  7 11:05 c2.jpg
-rw-rw-r--  1 kali kali 39299 10月  7 11:05 c3.jpg
-rw-rw-r--  1 kali kali 38699 10月  7 11:05 c4.jpg
-rw-rw-r--  1 kali kali 44650 10月  7 11:05 c5.jpg

image

  • 將這些照片複製到掛載的模擬硬碟
sudo cp downloaded_images/*.jpg /mnt/victim/
  • 記錄原始照片的數量和名稱
    image
  • 刪除照片
    sudo rm /mnt/victim/*.jpg
    
  • 卸載並重新掛載硬碟以模擬系統重新啟動
    sudo umount /mnt/victim
    sudo mount /dev/loop0 /mnt/victim
    
  • image
  • 確認照片已被刪除
  • 準備 Scalpel 設定檔案
    • 複製預設設定檔案
      sudo cp /etc/scalpel/scalpel.conf ~/my_scalpel.conf
      sudo vim ~/my_scalpel.conf
      
    • 編輯 my_scalpel.conf,確保 JPEG 未被註解:
      jpg y 200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9
      

image

  • 執行 Scalpel
    sudo mkdir /mnt/rescued
    sudo scalpel -c ~/my_scalpel.conf -o /mnt/rescued /dev/loop0
    

image

  • 分析結果
    • 檢查 /mnt/rescued 目錄中恢復的檔案
    • 比較恢復的檔案數量與原始照片數量
    • 嘗試開啟恢復的照片,確認它們是否完整且可檢視
      image
  • 清理
    sudo umount /mnt/victim
    sudo umount /mnt/rescued
    sudo losetup -d /dev/loop0
    rm victim_disk.img
    

其他學習題目

https://cfreds-archive.nist.gov/FileCarving/index.html

總結

Scalpel 是一個強大的檔案雕刻工具,能夠從磁碟映像中恢復已刪除的檔案。透過修改設定檔案和使用簡單的指令介面,藍隊成員可以有效地恢復各種類型的刪除檔案。這種技能在數位取證、事件回應和資料恢復方面都是非常有價值的。

小試身手

  1. Scalpel 的設定檔案通常位於哪裡?
    a) /etc/scalpel.conf
    b) /etc/scalpel/scalpel.conf
    c) /usr/local/scalpel.conf
    d) ~/.scalpel.conf

    答案:b
    解析:Scalpel 的設定檔案通常位於 /etc/scalpel/scalpel.conf。

  2. 在 Scalpel 設定檔案中,如何啟用特定檔案類型的檢測?
    a) 在該行開頭新增 #
    b) 刪除該行開頭的 #
    c) 將該行移到檔案頂部
    d) 將該行複製一遍

    答案:b
    解析:要啟用特定檔案類型的檢測,需要刪除該行開頭的 #(取消註解)。

  3. 運行 Scalpel 時,-o 參數的作用是什麼?
    a) 指定輸入檔案
    b) 指定輸出目錄
    c) 設置操作模式
    d) 限制搜索時間

    答案:b
    解析:-o 參數用於指定恢復檔案的輸出目錄。

  4. Scalpel 恢復檔案後,會生成哪個檔案來提供操作摘要?
    a) summary.txt
    b) log.txt
    c) audit.txt
    d) report.txt

    答案:c
    解析:Scalpel 會生成一個名為 audit.txt 的檔案,提供操作的詳細摘要。

  5. 以下哪項不是使用 Scalpel 的典型場景?
    a) 恢復已刪除的惡意軟體樣本
    b) 即時監控網路流量
    c) 從格式化的硬碟中恢復資料
    d) 在事件回應過程中尋找證據

    答案:b
    解析:Scalpel 主要用於檔案恢復,不用於即時網路流量監控。

藍隊的下一步清單

  1. 熟悉其他檔案類型的恢復
    • 嘗試恢復不同類型的檔案(如 DOC、PDF、ZIP 等)
    • 研究如何編寫自定義檔案類型的檢測設定
  2. 整合到工作流程
    • 將 Scalpel 納入標準的事件回應工具包
    • 制定使用 Scalpel 的標準操作流程(SOP)
  3. 提高效率
    • 探索 Scalpel 的進階選項和參數
    • 開發自動化腳本以簡化恢復過程
  4. 擴展知識
    • 學習其他檔案恢復和數位取證工具(如 Autopsy、The Sleuth Kit)
  5. 法律和道德考量
    • 了解使用檔案恢復工具的法律影響
    • 制定明確的資料恢復和處理政策
  6. 預防措施
    • 實施強大的資料刪除政策和工具
    • 教育組織成員關於安全資料處理的重要性

上一篇
Day22:藍隊提升技術力:數位鑑識 (4)─RFC 3227 數位證據處理指南
下一篇
Day24:藍隊提升技術力:數位鑑識 (6)─雜湊值與 metadata 實作練習
系列文
資安這條路:系統化學習藍隊技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言