iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Security

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

Day24:藍隊提升技術力:數位鑑識 (6)─雜湊值與 metadata 實作練習

  • 分享至 

  • xImage
  •  

雜湊基本知識:定義與碰撞

雜湊是什麼

雜湊(Hash)是一種將任意大小的資料轉換成固定大小的數值的過程。這個過程是透過一個叫做雜湊函數(Hash Function)的數學演算法來完成的。

雜湊的主要特點

  1. 固定長度輸出:無論輸入資料的大小如何,輸出的雜湊值都是固定長度的
  2. 單向性:從雜湊值幾乎不可能反推出原始資料
  3. 確定性:相同的輸入總是產生相同的輸出
  4. 雪崩效應:輸入的微小變化會導致輸出的顯著不同
  5. 計算效率高:計算雜湊值的過程應該很快

雜湊的應用

  • 資料完整性驗證
  • 密碼儲存
  • 數位簽章
  • 快速資料檢索
  • 去重複化

舉例

假設我們有一個簡單的雜湊函數,它將任何字符串轉換為兩位數字:

Input: "Hello" -> Hash: 37
Input: "World" -> Hash: 52
Input: "HelloWorld" -> Hash: 89

碰撞是什麼

雜湊碰撞(Hash Collision)指的是兩個不同的輸入產生了相同的雜湊值。

碰撞的特點

  1. 不可避免性:由於雜湊函數將無限可能的輸入映射到有限的輸出空間,碰撞在理論上是不可避免的
  2. 安全性影響:在密碼學應用中,容易產生碰撞的雜湊函數被認為是不安全的
  3. 抗碰撞性:好的雜湊函數應該具有強抗碰撞性,即找到碰撞在計算上應該是困難的

碰撞的影響

  • 安全威脅:在數位簽章中,碰撞可能被用來偽造簽名
  • 資料完整性:在資料完整性檢查中,碰撞可能導致被竄改的資料未被檢測到
  • 性能問題:在某些應用(如雜湊表)中,過多的碰撞可能導致性能下降

舉例

使用上面的簡單雜湊函數:

Input: "Cat" -> Hash: 24
Input: "Dog" -> Hash: 24

這裡,"Cat" 和 "Dog" 產生了相同的雜湊值 24,這就是一個碰撞的例子。

減少碰撞的方法

  1. 使用更長的雜湊值(如從 MD5 過渡到 SHA-256)。
  2. 採用更複雜和安全的雜湊演算法。
  3. 在某些應用中使用鹽(Salt)來增加輸入的唯一性。

實作

目標

學習如何生成和驗證檔案雜湊值,並理解雜湊值在確保數位證據完整性中的重要作用。

所需工具

  • Windows PowerShell 或 Linux 終端機
  • 文字編輯器(如 Notepad++ 或 vim)
  • 十六進位編輯器(如 HxD 或 hexedit)

練習 1: 生成和比較檔案雜湊值

步驟 1: 建立文字檔案

Windows:

echo ABC > evidence.txt
type evidence.txt

image

Linux:

echo -n ABC > evidence.txt

image

步驟 2: 生成雜湊值

Windows:

Get-FileHash -Algorithm MD5 evidence.txt
Get-FileHash -Algorithm SHA1 evidence.txt
Get-FileHash -Algorithm SHA256 evidence.txt
PS C:\Users\user> Get-FileHash -Algorithm MD5 evidence.txt

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             640E33774583F0A78EEF0A272D304D7A                                       C:\Users\user\evidence.txt


PS C:\Users\user> Get-FileHash -Algorithm SHA1 evidence.txt

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA1            AAE63CD7DAE45BB472A89F84996CB27C78350762                               C:\Users\user\evidence.txt


PS C:\Users\user> Get-FileHash -Algorithm SHA256 evidence.txt

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          89B948CA340D961BD945AD1108C854D3AA15BFFD3B362EB2F233EEC6EE50E636       C:\Users\user\evidence.txt


image

Linux:

md5sum evidence.txt
sha1sum evidence.txt
sha256sum evidence.txt
user@user:~$ md5sum evidence.txt
902fbdd2b1df0c4f70b4a5d23525e932  evidence.txt
user@user:~$ sha1sum evidence.txt
3c01bdbb26f358bab27f267924aa2c9a03fcfdb8  evidence.txt
user@user:~$ sha256sum evidence.txt
b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78  evidence.txt
user@user:~$

為什麼不同作業系統的雜湊值不一樣

  • Windows 系統
    • 使用 echo ABC > evidence.txt 指令時
    • 系統會自動在行尾加上回車(CR)和換行(LF),即 \r\n
    • 因此,檔案實際內容是 "ABC\r\n"。
  • Linux 系統
    • 使用 echo -n ABC > evidence.txt 指令時
    • -n 選項確保不加上額外的換行
    • 因此,檔案只包含 "ABC",沒有任何額外字符

步驟 3: 修改檔案內容

Windows:

echo ABCD > evidence.txt

image

Linux:

echo -n ABCD > evidence.txt

image

步驟 4: 再次生成雜湊值

@('MD5','SHA1','SHA256') | ForEach-Object { 
    Get-FileHash -Algorithm $_ evidence.txt | Select-Object Algorithm, Hash 
} | Format-Table

image

PS C:\Users\user> @('MD5','SHA1','SHA256') | ForEach-Object {
>>     Get-FileHash -Algorithm $_ evidence.txt | Select-Object Algorithm, Hash
>> } | Format-Table

Algorithm Hash
--------- ----
MD5       BB2A95DCFCE03F2A6926BB9872F2CC4E
SHA1      6D6FEC094ADD998CDB2C63279D211C715E54AA88
SHA256    DC9F50738AE6546EFCCB663BA5CDBC153A948FC79EB1152C7EA83B81B7A9B5D2

image

 { md5sum evidence.txt; sha1sum evidence.txt; sha256sum evidence.txt; }
user@user:~$ { md5sum evidence.txt; sha1sum evidence.txt; sha256sum evidence.txt; }
cb08ca4a7bb5f9683c19133a84872ca7  evidence.txt
fb2f85c88567f3c8ce9b799c7c54642d0c7b41f6  evidence.txt
e12e115acf4552b2568b55e93cbd39394c4ef81c82447fafc997882a02d23677  evidence.txt

記錄並比較修改前後的雜湊值

Windows 系統

修改前(檔案內容:ABC\r\n):

  • MD5: 640E33774583F0A78EEF0A272D304D7A
  • SHA1: AAE63CD7DAE45BB472A89F84996CB27C78350762
  • SHA256: 89B948CA340D961BD945AD1108C854D3AA15BFFD3B362EB2F233EEC6EE50E636

修改後(檔案內容:ABCD\r\n):

  • MD5: BB2A95DCFCE03F2A6926BB9872F2CC4E
  • SHA1: 6D6FEC094ADD998CDB2C63279D211C715E54AA88
  • SHA256: DC9F50738AE6546EFCCB663BA5CDBC153A948FC79EB1152C7EA83B81B7A9B5D2

Linux 系統

修改前(檔案內容:ABC):

  • MD5: 902fbdd2b1df0c4f70b4a5d23525e932
  • SHA1: 3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
  • SHA256: b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78

修改後(檔案內容:ABCD):

  • MD5: cb08ca4a7bb5f9683c19133a84872ca7
  • SHA1: fb2f85c88567f3c8ce9b799c7c54642d0c7b41f6
  • SHA256: e12e115acf4552b2568b55e93cbd39394c4ef81c82447fafc997882a02d23677

解釋雜湊值變化及其在數位鑑識中的意義

為什麼雜湊值會改變

  1. 敏感性:雜湊函數設計為對輸入的任何改變都極度敏感。即使只改變一個字符(如從"ABC"到"ABCD"),也會導致完全不同的雜湊值。
  2. 雪崩效應:雜湊函數的這種特性被稱為雪崩效應。輸入的微小變化會導致輸出的巨大變化。
  3. 不可逆性:從雜湊值無法反推出原始內容,這保證了資料的單向性和安全性。
  4. 唯一性:不同的輸入幾乎總是產生不同的雜湊值,但有機會存在碰撞的可能性。

在數位鑑識中的意義

  1. 資料完整性驗證
    • 雜湊值可以作為數位證據的"指紋"。透過比較不同時間點的雜湊值,鑑識人員可以確定證據是否被竄改
  2. 證據鏈的保護
    • 在證據收集、傳輸和儲存的每個階段計算並記錄雜湊值,可以確保證據的完整性在整個過程中得到維護
  3. 法庭可接受性
    • 能夠證明證據未被竄改對於確保證據在法庭上的可接受性至關重要
  4. 快速識別變化
    • 在大量資料中,雜湊值可以快速識別哪些檔案被修改過,而不需要逐字比對內容
  5. 惡意軟體檢測
    • 已知惡意軟體的雜湊值可以用來快速識別感染的檔案
  6. 重複資料的識別
    • 在大型資料集中,相同的雜湊值可以幫助識別重複的檔案,節省儲存空間和分析時間
  7. 資料恢復驗證
    • 在資料恢復過程中,可以使用雜湊值來驗證恢復的資料是否與原始資料相同
  8. 隱藏資料的檢測
    • 雜湊值的變化可能暗示檔案中存在隱藏的或加密的資料

中繼資料(元資料,metadata)

常譯作詮釋資料、後設資料、中介資料、中繼資料

什麼是 metadata

中繼資料(metadata),也常被稱為元資料、詮釋資料、後設資料或中介資料,是「關於資料的資料」。這個概念可能聽起來有些抽象,但實際上它在我們的日常數位生活中無處不在。

中繼資料的定義

中繼資料是描述其他資料的結構化資訊。它提供了關於資料的背景、內容和結構的額外資訊,使得資料的管理、查找、理解和使用變得更加容易。

中繼資料的類型

  1. 描述性中繼資料:描述資源以便識別和發現,如標題、作者、關鍵字等。
  2. 結構性中繼資料:指示複合物件如何組合在一起,如頁面順序。
  3. 管理性中繼資料:用於管理資源的資訊,如檔案類型、建立時間、存取權限等。

中繼資料的例子

  • 在數位照片中:相機型號、拍攝時間、GPS 位置等。
  • 在文件檔案中:作者、建立日期、最後修改時間、字數等。
  • 在音樂檔案中:歌手、專輯名稱、流派、發行年份等。

數位鑑識與 metadata 的關係

數位鑑識是在電子設備上收集、分析和報告數位證據的過程。在這個過程中,中繼資料扮演著至關重要的角色。

中繼資料在數位鑑識中的重要性

  1. 建立時間軸
    • 文件的建立、修改和存取時間可以幫助鑑識人員重建事件序列。
  2. 確定來源
    • 設備資訊(如相機型號、電腦名稱)可以幫助追蹤證據的來源。
  3. 驗證真實性
    • 中繼資料可以用來驗證文件是否被竄改。
  4. 發現隱藏資訊
    • 有時,中繼資料可能包含作者未意識到的額外資訊。
  5. 關聯分析
    • 透過比較不同文件的中繼資料,可以建立文件之間的關聯。
  6. 位置資訊
    • GPS 資料可以提供關鍵的位置證據。

數位鑑識中使用中繼資料的挑戰

  1. 易被修改:中繼資料可能被有意或無意地更改。
  2. 隱私問題:中繼資料可能包含敏感資訊。
  3. 數量龐大:處理大量文件的中繼資料可能非常耗時。
  4. 解釋的複雜性:正確解釋中繼資料需要專業知識。

數位鑑識工具和技術

  • Exiftool:用於讀取、寫入和編輯各種文件格式的中繼資料。
  • EnCase:廣泛用於數位鑑識的綜合工具,可以分析各種類型的中繼資料。
  • FTK (Forensic Toolkit):另一個強大的數位鑑識套件,提供中繼資料分析功能。

LAB 1: Windows系統中的 metadata 分析

目標

學習如何在 Windows 系統中查看和分析檔案的 metadata 。

所需工具

  • Windows作業系統
  • Microsoft Word
  • 圖片檔案

任務一步驟

  1. 建立一個 Microsoft Word 檔案,輸入一些文字內容。
  2. 右鍵點擊該檔案,選擇"屬性",然後查看"詳細資訊"標籤。
  3. 記錄 metadata 資訊,如作者、建立時間、修改時間等。

image

$filePath = "C:\Users\user\Desktop\測試.docx"
$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace((Get-Item $filePath).DirectoryName)
$file = $folder.ParseName((Get-Item $filePath).Name)
$metadata = @{}
0..266 | ForEach-Object {
    $name = $folder.GetDetailsOf($folder.items, $_)
    $value = $folder.GetDetailsOf($file, $_)
    if ($name -and $value) {
        $metadata[$name] = $value
    }
}
$metadata | Format-Table -AutoSize
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null

image

任務二步驟

  • 拍一張照片來分析

https://drive.google.com/file/d/1oHaXdbmGccsGRfMFyAM6oCBA8dYGaDjC/view?usp=sharing

image

LAB 2: Linux系統中的 metadata 分析

目標

學習如何在Linux系統中使用指令介面工具分析檔案 metadata

所需工具

  • Linux作業系統 (如Kali Linux)
  • exiftool工具

步驟

  1. 打開終端,使用以下指令安裝exiftool(如果尚未安裝):
    sudo apt-get install exiftool
    

image

  1. 下載一些樣本檔案(包括圖片、PDF和 Word 檔案)

https://drive.google.com/file/d/1oHaXdbmGccsGRfMFyAM6oCBA8dYGaDjC/view?usp=sharing

  1. 使用以下指令查看檔案的基本資訊:
    ls -lisap <filename>
    stat <filename>
    

image

  1. 使用exiftool分析這些檔案:
    exiftool <filename>
    

image

user@user:~$ exiftool 20240827_153222.jpg
ExifTool Version Number         : 12.40
File Name                       : 20240827_153222.jpg
Directory                       : .
File Size                       : 4.5 MiB
File Modification Date/Time     : 2024:10:08 18:38:21+08:00
File Access Date/Time           : 2024:10:08 18:38:21+08:00
File Inode Change Date/Time     : 2024:10:08 18:38:21+08:00
File Permissions                : -rwxr-xr-x
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
Exif Byte Order                 : Little-endian (Intel, II)
Make                            : samsung
Camera Model Name               : Galaxy S23 Ultra
Orientation                     : Rotate 90 CW
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Software                        : S9180ZHS4CXG2
Modify Date                     : 2024:08:27 15:32:22
Y Cb Cr Positioning             : Centered
Exposure Time                   : 1/560
F Number                        : 1.7
Exposure Program                : Program AE
ISO                             : 10
Exif Version                    : 0220
Date/Time Original              : 2024:08:27 15:32:22
Create Date                     : 2024:08:27 15:32:22
Offset Time                     : +09:00
Offset Time Original            : +09:00
Shutter Speed Value             : 1
Aperture Value                  : 1.7
Brightness Value                : 9.17
Exposure Compensation           : 0
Max Aperture Value              : 1.7
Metering Mode                   : Center-weighted average
Flash                           : No Flash
Focal Length                    : 6.3 mm
Sub Sec Time                    : 363
Sub Sec Time Original           : 363
Sub Sec Time Digitized          : 363
Flashpix Version                : 0100
Color Space                     : Uncalibrated
Exif Image Width                : 4000
Exif Image Height               : 3000
Exposure Mode                   : Auto
White Balance                   : Auto
Digital Zoom Ratio              : 1
Focal Length In 35mm Format     : 23 mm
Scene Capture Type              : Standard
Image Unique ID                 : EK0XLPE00SM
GPS Latitude Ref                : North
GPS Longitude Ref               : East
GPS Altitude Ref                : Above Sea Level
Compression                     : JPEG (old-style)
Thumbnail Offset                : 1016
Thumbnail Length                : 45340
Profile CMM Type                :
Profile Version                 : 4.3.0
Profile Class                   : Display Device Profile
Color Space Data                : RGB
Profile Connection Space        : XYZ
Profile Date Time               : 2022:07:01 00:00:00
Profile File Signature          : acsp
Primary Platform                : Unknown (SEC)
CMM Flags                       : Not Embedded, Independent
Device Manufacturer             : Unknown (SEC)
Device Model                    :
Device Attributes               : Reflective, Glossy, Positive, Color
Rendering Intent                : Perceptual
Connection Space Illuminant     : 0.9642 1 0.82491
Profile Creator                 : Unknown (SEC)
Profile ID                      : 0
Profile Description             : DCI-P3 D65 Gamut with sRGB Transfer
Profile Copyright               : Copyright (c) 2022 Samsung Electronics Co., Ltd.
Media White Point               : 0.9642 1 0.82491
Chromatic Adaptation            : 1.04781 0.02289 -0.05013 0.02954 0.99048 -0.01704 -0.00923 0.01505 0.75214
Red Matrix Column               : 0.51508 0.24117 -0.00105
Green Matrix Column             : 0.29195 0.69223 0.04189
Blue Matrix Column              : 0.15718 0.06659 0.78455
Red Tone Reproduction Curve     : (Binary data 32 bytes, use -b option to extract)
Green Tone Reproduction Curve   : (Binary data 32 bytes, use -b option to extract)
Blue Tone Reproduction Curve    : (Binary data 32 bytes, use -b option to extract)
Image Width                     : 4000
Image Height                    : 3000
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Time Stamp                      : 2024:08:27 14:32:22+08:00
MCC Data                        : 440
Aperture                        : 1.7
Image Size                      : 4000x3000
Megapixels                      : 12.0
Scale Factor To 35 mm Equivalent: 3.7
Shutter Speed                   : 1/560
Create Date                     : 2024:08:27 15:32:22.363
Date/Time Original              : 2024:08:27 15:32:22.363+09:00
Modify Date                     : 2024:08:27 15:32:22.363+09:00
Thumbnail Image                 : (Binary data 45340 bytes, use -b option to extract)
GPS Altitude                    : 66 m Above Sea Level
GPS Latitude                    : 34 deg 53' 29.67" N
GPS Longitude                   : 135 deg 48' 24.05" E
Circle Of Confusion             : 0.008 mm
Field Of View                   : 76.1 deg
Focal Length                    : 6.3 mm (35 mm equivalent: 23.0 mm)
GPS Position                    : 34 deg 53' 29.67" N, 135 deg 48' 24.05" E
Hyperfocal Distance             : 2.84 m
Light Value                     : 14.0

任務

  1. 從提供的exiftool輸出中,分析內容:

    a) GPS Position: 34 deg 53' 29.67" N, 135 deg 48' 24.05" E
    這提供了照片拍攝的精確地理位置,對於確定事件發生地點至關重要。

    b) Date/Time Original: 2024:08:27 15:32:22.363+09:00
    這顯示了照片拍攝的確切時間,包括毫秒和時區,對於建立事件時間線非常有價值。

    c) Camera Model Name: Galaxy S23 Ultra
    識別了用於拍攝的設備,可以用於追溯照片來源或與特定個人關聯。

    d) Software: S9180ZHS4CXG2
    這是設備的軟體版本,可能有助於確定設備的更新狀態或特定功能。

    e) Focal Length In 35mm Format: 23 mm
    這提供了拍攝視角的資訊,可以幫助重建拍攝場景或驗證照片的真實性。

  2. 修改檔案metadata的指令範例:

    exiftool -CreateDate="2023:01:01 12:00:00" 20240827_153222.jpg
    

    這個指令會將照片的建立日期改為2023年1月1日中午12點。執行後,exiftool會建立一個備份文件,並顯示更改的結果。

  3. 某些metadata在數位鑑識調查中特別有價值,原因如下:

    • 時間戳記: 可以建立事件的精確時間線,對於確定犯罪或事件發生的順序至關重要
    • 地理位置資料: 可以確定照片拍攝的確切位置,有助於驗證或反駁不在場證明
    • 設備資訊: 可以將證據與特定設備或個人關聯,幫助識別涉案人員
    • 軟體版本: 可能揭示設備的安全狀態或是否使用了特定的應用程序
    • 修改歷史: 可以顯示文件是否被竄改,這對於確定證據的真實性和完整性非常重要

總結

本文介紹了數位鑑識中兩個關鍵概念:雜湊值和中繼資料(metadata)。

雜湊值是檔案的數位指紋,可用於驗證檔案完整性和快速比較檔案。我們學習了如何在Windows和Linux系統中生成和比較雜湊值,並討論了雜湊值在數位鑑識中的重要性。

中繼資料是關於資料的資料,包含了大量有價值的資訊。我們探討了如何在Windows和Linux系統中查看和分析中繼資料,並強調了中繼資料在數位鑑識調查中的關鍵作用。

這些技術對於確保證據完整性、建立事件時間線、確定資料來源等方面都至關重要,是數位鑑識人員的基本技能。

小試身手

  1. 以下哪項不是雜湊函數的特性?
    A) 固定長度輸出
    B) 單向性
    C) 可逆性
    D) 雪崩效應

答案: C

解析: 雜湊函數的主要特性包括固定長度輸出、單向性(不可逆)和雪崩效應。可逆性與雜湊函數的本質相反,因為雜湊函數設計為不可能從雜湊值反推原始資料。

  1. 在數位鑑識中,使用雜湊值的主要目的是什麼?
    A) 加密敏感資料
    B) 壓縮大型檔案
    C) 驗證檔案完整性
    D) 加速檔案傳輸

答案: C

解析: 在數位鑑識中,雜湊值主要用於驗證檔案的完整性。通過比較不同時間點的雜湊值,鑑識人員可以確定檔案是否被修改過,這對於維護證據的可靠性至關重要。

  1. 下列哪種類型的中繼資料最可能包含GPS坐標資訊?
    A) 文字文檔
    B) 音檔檔案
    C) 數位照片
    D) PDF檔案

答案: C

解析: 雖然其他類型的檔案也可能包含位置資訊,但數位照片最常見地包含GPS坐標作為其中繼資料的一部分。許多智慧手機和數位相機會自動將位置資訊嵌入到拍攝的照片中。

  1. 如果一個檔案的內容被修改了,但其中繼資料顯示最後修改時間沒有變化,這可能意味著什麼?
    A) 檔案沒有被實際修改
    B) 中繼資料被刻意竄改
    C) 作業系統出現錯誤
    D) 檔案被加密了

答案: B

解析: 如果檔案內容被修改但中繼資料中的最後修改時間沒有更新,這很可能意味著中繼資料被刻意竄改了。這種情況在數位鑑識中是一個重要的警告信號,表明可能有人試圖掩蓋檔案的修改痕跡。

  1. 在使用exiftool分析一張照片時,下列哪項資訊不太可能出現在中繼資料中?
    A) 相機型號
    B) 拍攝時間
    C) 照片中人物的姓名
    D) 光圈大小

答案: C

解析: Exiftool可以提取大量的中繼資料,包括相機型號、拍攝時間和相機設置(如光圈大小)。然而,照片中人物的姓名通常不會自動包含在中繼資料中。雖然某些進階相機或軟體可能允許手動增加這類資訊,但它不是標準的Exif資料文字。

企業人員的下一步清單

  1. 使用虛擬機模擬不同的作業系統和情境
  2. 對各種類型的檔案(文檔、圖片、音頻等)練習使用 exiftool 和其他 metadata 分析工具
  3. 嘗試在不同情況下(如檔案被部分刪除或損壞)回復和分析雜湊值

上一篇
Day23:藍隊提升技術力:數位鑑識 (5)─學習利用 Scalpel 進行File Carving
下一篇
Day25:藍隊提升技術力:數位鑑識 (7)─針對 Windows 數位鑑識尋找有用資訊
系列文
資安這條路:系統化學習藍隊技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言