Timeline Analysis
Timeline Analysis เรียงเหตุการณ์จากหลักฐานตามเวลาเพื่อสร้างลำดับว่าเกิดอะไรขึ้นเมื่อไหร่ บทนี้ลงลึก MACB timestamps, การสร้าง filesystem timeline (Sleuth Kit) และ super timeline (Plaso) ที่รวมหลายแหล่ง, การวิเคราะห์, การตรวจ timestomping, และเครื่องมือ (เนื้อหาเพื่อการศึกษา/ฝึกใน lab/CTF)
1. หลักการและ MACB times
ทุกไฟล์มี timestamp — MACB: Modified (แก้เนื้อหา), Accessed (เข้าถึง), Changed (แก้ metadata/MFT), Born/Created (สร้าง) การเรียง event ตามเวลาช่วยตอบว่า 'attacker ทำอะไรตามลำดับไหน' เช่น เห็นไฟล์ malware ถูกสร้าง → ตามด้วย log การรัน → ตามด้วยไฟล์ที่ถูกขโมย — ปะติดปะต่อเป็นเรื่องราวของเหตุการณ์
2. Filesystem timeline (Sleuth Kit)
# สร้าง bodyfile (MAC times ของทุกไฟล์)
fls -r -m / disk.img > bodyfile
fls -r -m / -o 2048 disk.img > bodyfile # ระบุ partition offset
# แปลง bodyfile เป็น timeline (เรียงเวลา)
mactime -b bodyfile -d > timeline.csv # -d = CSV
mactime -b bodyfile -d 2024-01-01..2024-01-31 > jan.csv # ช่วงเวลา
# อ่าน: แต่ละบรรทัด = เวลา + [MACB] + ไฟล์3. Super timeline (Plaso/log2timeline)
Filesystem timeline มีแค่ MAC times Plaso สร้าง 'super timeline' ที่รวม timestamp จากหลายแหล่ง: filesystem + Windows registry + Event Logs + browser history + LNK files + prefetch + อื่นๆ — ภาพรวมเหตุการณ์ที่ละเอียดกว่ามาก
# สร้าง super timeline (เก็บทุกแหล่งจาก image)
log2timeline.py timeline.plaso disk.img
# หรือจาก mount point
log2timeline.py timeline.plaso /mnt/d
# แปลงเป็น CSV (เรียง + กรอง)
psort.py -o l2tcsv -w supertimeline.csv timeline.plaso
# กรองช่วงเวลา
psort.py -o l2tcsv -w filtered.csv timeline.plaso \
"date > '2024-01-01 00:00:00' AND date < '2024-01-02 00:00:00'"
# กรองเฉพาะบาง source
psort.py timeline.plaso "parser contains 'winevtx'"4. วิเคราะห์ timeline + timestomping
- หาจุดเริ่มต้น (initial access): ไฟล์/event แรกที่น่าสงสัย
- ดู event รอบเวลานั้น: อะไรเกิดก่อน/หลัง (download → execute → persist → exfil)
- timestomping: timestamp ที่ถูกแก้ให้ปลอม — สัญญาณ: B (created) ใหม่กว่า M (modified) ผิดธรรมชาติ, หรือ timestamp ลงท้าย .000000000 (วินาทีกลม) ผิดปกติ
- เทียบ $STANDARD_INFORMATION vs $FILE_NAME (NTFS): ถ้าต่างกัน = timestomping (tool แก้ได้แค่ $SI ไม่แก้ $FN)
- correlate หลายแหล่ง: filesystem + registry + evtx ยืนยันกัน
5. Quick Reference
- MACB: Modified/Accessed/Changed/Born
- filesystem timeline: fls -r -m / → mactime -b bodyfile -d
- super timeline: log2timeline.py → psort.py (รวมหลายแหล่ง)
- Plaso รวม: filesystem+registry+evtx+browser+prefetch+LNK
- กรองเวลา: psort 'date > ... AND date < ...'
- timestomping: B>M ผิดปกติ; $SI vs $FN ต่างกัน (NTFS)
- เปิด CSV ด้วย Timeline Explorer
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติโจทย์ถามว่า 'เกิดอะไรขึ้นก่อนหลัง' มีแค่ Kali เปล่าๆ กับ disk image/log มา ทำตามนี้ทีละขั้นเพื่อเรียงเหตุการณ์ตามเวลา
- 1รวบรวมหลักฐานที่มีให้ครบก่อน (disk image / registry hive / evtx / browser history)
- 2สร้าง bodyfile จาก disk image: fls -r -m / -o 2048 disk.img > bodyfile
- 3แปลงเป็น timeline: mactime -b bodyfile -d > timeline.csv
- 4เปิด timeline.csv ดูคร่าวๆ (less/spreadsheet หรือ Timeline Explorer ถ้ามี)
- 5ถ้าต้องละเอียดกว่านั้น (รวม registry/evtx/browser ด้วย): log2timeline.py timeline.plaso disk.img
- 6แปลงเป็น CSV: psort.py -o l2tcsv -w supertimeline.csv timeline.plaso
- 7กรองเฉพาะช่วงเวลาที่สงสัย: psort.py -o l2tcsv -w filtered.csv timeline.plaso "date > '2024-01-01 00:00:00' AND date < '2024-01-02 00:00:00'"
- 8หา timestomping: เทียบ B (created) กับ M (modified) ว่าผิดธรรมชาติไหม
- 9ถ้าเป็น NTFS เทียบ $STANDARD_INFORMATION กับ $FILE_NAME ต่างกันไหม (ต่างกัน = ถูกแก้ timestamp)
- 10correlate event กับหลักฐานอื่น (pcap timestamp, memory dump timestamp) ให้ตรงกัน
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| สร้าง bodyfile จาก disk image | sleuthkit (fls -m) | apt install sleuthkit | - |
| เรียง bodyfile เป็น timeline | sleuthkit (mactime) | - | - |
| สร้าง super timeline (หลายแหล่ง) | - | apt install plaso-tools หรือ pip install plaso | - |
| เปิด/กรอง/เรียง CSV สะดวก | - | git clone EricZimmerman/Timeline Explorer (.NET) | - |
| ตรวจ NTFS $SI/$FN เจาะจง | - | git clone analyzeMFT | - |
| ค้น event/flag ใน CSV | grep, awk | - | - |
| เทียบเวลากับ pcap | tshark, wireshark | - | - |
• ยังไม่ได้กู้ deleted files/carve ให้ครบ → ไป Disk Analysis
• มี memory dump คู่กัน อยากดู timestamp จาก process/registry ใน RAM → ไป Volatility
• มี pcap คู่กัน ต้องเทียบเวลา connection → ไป PCAP Analysis
หัวข้อที่เชื่อมโยง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้