คลัง
stego

Metadata Analysis

Metadata คือข้อมูลที่ฝังอยู่ในไฟล์เกี่ยวกับตัวไฟล์เอง — EXIF (รูป), XMP, IPTC, document properties (Office/PDF), audio tags การซ่อน flag ใน metadata เป็นเทคนิคพื้นฐานที่พบบ่อยมากใน CTF บทนี้ครอบคลุม metadata ทุกชนิดไฟล์ จุดที่ flag มักซ่อน และการดึงข้อมูล

BeginnerIntermediate#metadata#stego#exif#xmp#iptc#document-metadata#ctf

1. Metadata คืออะไร และอยู่ที่ไหน

Metadata = 'ข้อมูลเกี่ยวกับข้อมูล' ฝังในไฟล์เพื่อเก็บรายละเอียด เช่น รูปถ่ายเมื่อไหร่ ด้วยกล้องอะไร พิกัด GPS, เอกสารใครสร้าง แก้ไขล่าสุดเมื่อไหร่ — ผู้ซ่อนใส่ flag ในฟิลด์เหล่านี้ได้ง่ายๆ เป็นจุดแรกที่ควรเช็คเสมอ ก่อนทำ stego ที่ซับซ้อน เพราะหลายโจทย์ซ่อน flag ตรงนี้

ชนิด metadataพบในฟิลด์ที่มักซ่อน flag
EXIFJPG, TIFF, บาง PNGComment, Artist, Copyright, GPS, Make/Model
XMPรูป, PDF, Adobe filesDescription, Creator, custom fields
IPTCรูป (news/media)Caption, Keywords, Headline
Document propsDOCX, XLSX, PDFAuthor, Title, Subject, Comments, custom
Audio tagsMP3 (ID3), FLACComment, Lyrics, Title, Artist
PNG text chunkPNGtEXt/zTXt/iTXt (ดูหัวข้อ PNG)

2. ดึง metadata ด้วย exiftool (ครอบคลุมสุด)

exiftool อ่าน metadata ได้แทบทุกชนิดไฟล์ — เป็นเครื่องมือหลัก (มีหัวข้อแยกเจาะลึก) คำสั่งพื้นฐานที่ใช้บ่อย:

exiftool — ดูทุกฟิลด์Linux
exiftool file.jpg                  # ทุกฟิลด์
exiftool -a -u -g1 file.jpg        # รวม unknown/duplicate tags จัดกลุ่ม
exiftool -b -Comment file.jpg      # ดึง raw ของฟิลด์เดียว

# ค้นหา flag ในทุกฟิลด์
exiftool file.jpg | grep -iE 'flag|ctf|key'

# ดูทุกไฟล์ในโฟลเดอร์
exiftool *.jpg | grep -iE 'flag'
-a -u -g1 สำคัญ — โชว์ tag ที่ซ่อน/ซ้ำ/ไม่รู้จัก ที่ exiftool ปกติไม่แสดง

3. เครื่องมืออื่นตามชนิดไฟล์

เครื่องมือเฉพาะทางLinux
# รูป (ทางเลือก exiftool)
exiv2 -pa file.jpg             # EXIF/IPTC/XMP
identify -verbose file.png     # ImageMagick

# วิดีโอ/เสียง
mediainfo file.mp4             # metadata มัลติมีเดียครบ
ffprobe file.mp4               # stream + metadata

# เอกสาร Office (DOCX/XLSX = zip)
unzip -o file.docx -d docx_out
cat docx_out/docProps/core.xml app.xml    # author, title, custom props

# PDF
exiftool file.pdf
pdfinfo file.pdf
# strings เป็น fallback ทุกชนิด
strings file | grep -iE 'flag|author|creator'
DOCX/XLSX/PPTX เป็น zip — unzip แล้วดู docProps/ มี metadata + บางทีไฟล์ซ่อน

4. GPS และเทคนิคพิเศษ

  • GPS coordinates: EXIF อาจมีพิกัด → เปิดใน Google Maps อาจเป็นส่วนของ flag/ปริศนา (เชื่อมกับ OSINT geolocation)
  • Thumbnail: รูปมี thumbnail ฝังใน EXIF — บางทีต่างจากภาพหลัก (เช่นภาพเดิมก่อนถูกแก้) ดึงด้วย exiftool -b -ThumbnailImage file.jpg > thumb.jpg
  • custom/unknown tags: ใช้ -a -u ดู tag ที่ซ่อน
  • timestamp: วันเวลาสร้าง/แก้ อาจเป็นเบาะแส (forensics)
  • software: โปรแกรมที่ใช้สร้าง อาจใบ้ว่าใช้ tool stego อะไร
Thumbnail ที่ฝังใน EXIF เป็นเทคนิคคลาสสิก — ถ้าภาพถูก crop/edit ปิด flag แต่ thumbnail เดิมยังเห็น flag เต็ม ดึง thumbnail ออกมาดูเสมอ

5. Workflow

  1. 1exiftool -a -u -g1 file — ดูทุกฟิลด์รวม unknown
  2. 2grep หา flag/ctf/key/author
  3. 3ดึง thumbnail (exiftool -b -ThumbnailImage) ถ้าเป็นรูป
  4. 4เช็ค GPS → Google Maps ถ้ามี
  5. 5เอกสาร → unzip ดู docProps/; PDF → pdfinfo
  6. 6ถ้าไม่เจอ → ไปเทคนิค stego จริง (LSB/spectrogram ตามชนิดไฟล์)

6. Quick Reference

  • เช็ค metadata เป็นจุดแรกเสมอ (flag ซ่อนง่าย)
  • exiftool -a -u -g1 file (รวม unknown tags)
  • grep -iE 'flag|ctf|key'
  • thumbnail: exiftool -b -ThumbnailImage > thumb.jpg
  • GPS → Google Maps; เอกสาร → unzip docProps/
  • วิดีโอ/เสียง: mediainfo; PDF: pdfinfo

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเพิ่งได้ไฟล์โจทย์มา ไม่รู้ว่าเป็น stego เชิงลึกหรือแค่ flag ซ่อนใน metadata ธรรมดา มีแค่ Kali เปล่าๆ — เช็ค metadata ก่อนเสมอเพราะเร็วและเจอบ่อยกว่าที่คิด ทำตามนี้ทีละขั้น

  1. 1พิมพ์ file target — ดูว่าเป็นไฟล์ชนิดไหนจริง (รูป/เสียง/เอกสาร/PDF)
  2. 2พิมพ์ exiftool -a -u -g1 target — ดึง metadata ทุกฟิลด์รวม unknown/duplicate
  3. 3พิมพ์ exiftool target | grep -iE 'flag|ctf|key|author' — กรองหาคำน่าสงสัยเร็วๆ
  4. 4ถ้าเป็นรูป ลองดึง thumbnail: exiftool -b -ThumbnailImage target > thumb.jpg เปิดดู
  5. 5ถ้าเป็นเอกสาร Office (docx/xlsx/pptx) ให้ unzip -o target -d out แล้ว cat out/docProps/core.xml out/docProps/app.xml
  6. 6ถ้าเป็น PDF ลอง pdfinfo target และ exiftool target คู่กัน
  7. 7ถ้าเป็นวิดีโอ/เสียง ลอง mediainfo target ดู metadata มัลติมีเดียครบชุด
  8. 8ถ้ามีพิกัด GPS ให้เปิด Google Maps เช็คว่าเป็นเบาะแสของโจทย์หรือไม่
  9. 9ถ้าทุกอย่างข้างบนไม่เจออะไร ให้ strings target | grep -iE 'flag' เป็น fallback สุดท้าย แล้วขยับไปเทคนิค stego จริงตามชนิดไฟล์ (binwalk/LSB/spectrogram)
เช็ค metadata แล้วไปทางไหนต่อ
เจอ flag/ข้อความน่าสงสัยไหม?
✅ เจอตรงๆ→ จบ ได้ flag
❌ ไม่เจอ→ เช็คตามชนิดไฟล์เฉพาะ (thumbnail/docProps/mediainfo)
เช็คจุดเฉพาะตามชนิดไฟล์
รูป → thumbnail, เอกสาร → docProps, วิดีโอ/เสียง → mediainfo
เจอไหม?
✅ เจอ→ จบ ได้ flag
❌ ไม่เจอ→ ไปเช็คไฟล์ฝัง/ต่อท้ายด้วย binwalk
เจอไฟล์ฝังไหม?
✅ เจอ→ extract แล้วหา flag
❌ ไม่เจอ→ metadata ตันแล้ว เปลี่ยน channel ตามชนิดไฟล์จริง
PNG/BMP → LSB/zsteg, JPG/WAV → steghide, audio → spectrogram
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
ดูชนิดไฟล์จริงfile-aperisolve.com
ดึง metadata รูป/ไฟล์ทั่วไปexiftoolsudo apt install libimage-exiftool-perlexifdata.com, metadata2go.com
metadata วิดีโอ/เสียงmediainfo, ffprobesudo apt install mediainfo-
metadata เอกสาร Officeunzip + cat docProps--
metadata PDFpdfinfo, exiftoolsudo apt install poppler-utils-
เช็ค GPSexiftool -gps:all-Google Maps
ค้นข้อความดิบ fallbackstrings-CyberChef
🚑 ถ้าตันสนิท ลองท่าถัดไป: exiftool (หัวข้อเจาะลึกคำสั่งทั้งหมด), binwalk ถ้ายังไม่เช็คไฟล์ฝัง/ต่อท้าย, lsb/zsteg ถ้าเป็น PNG/BMP และ metadata สะอาด, stego-jpg ถ้าเป็น JPG และสงสัย passphrase, stego-wav ถ้าเป็นไฟล์เสียง — metadata สะอาดไม่ได้แปลว่าไม่มี flag แค่ต้องลึกกว่านั้น

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้