stego
ExifTool
ExifTool เป็นเครื่องมือมาตรฐานสำหรับอ่าน/เขียน metadata ของไฟล์เกือบทุกชนิด (รูป, วิดีโอ, เสียง, เอกสาร, PDF) เป็นหนึ่งใน tool แรกที่ต้องรันในทุกโจทย์ stego/forensics บทนี้ลงลึกคำสั่งทุกแบบ การดึงข้อมูลซ่อน และเทคนิคที่ใช้บ่อยใน CTF
BeginnerIntermediate#exiftool#stego#metadata#exif#thumbnail#ctf
1. ทำไม exiftool สำคัญ
ExifTool รองรับ metadata หลายร้อย format และอ่าน tag ได้ละเอียดที่สุด — รวมถึง tag ที่ซ่อน/ไม่มาตรฐานที่ tool อื่นไม่เห็น เป็น เครื่องมือแรกในทุกโจทย์ stego เพราะหลายครั้ง flag ซ่อนใน metadata ตรงๆ และเสียเวลาแค่วินาทีเดียว
2. คำสั่งอ่าน metadata
อ่านทุกแบบLinux
exiftool file.jpg # ทุกฟิลด์ (อ่านง่าย)
exiftool -a -u -g1 file.jpg # -a: duplicate, -u: unknown, -g1: จัดกลุ่ม
exiftool -s file.jpg # ชื่อ tag จริง (ไว้ใช้ดึงเฉพาะฟิลด์)
exiftool -All file.jpg # ทุก tag
# ค้น flag
exiftool file.jpg | grep -iE 'flag|ctf|key|secret'
# หลายไฟล์ / ทั้งโฟลเดอร์
exiftool -r -ext jpg . | grep -iE 'flag'-a -u -g1 คือคำสั่งทองคำ — เปิดเผย tag ที่ซ่อน/ซ้ำ/ไม่รู้จักที่ปกติไม่แสดง
3. ดึงข้อมูล binary / ฟิลด์เฉพาะ
ดึง thumbnail และ binary fieldLinux
# ดึงค่า raw ของฟิลด์เดียว (-b = binary)
exiftool -b -Comment file.jpg
exiftool -b -UserComment file.jpg
# ดึง thumbnail ที่ฝังใน EXIF (เทคนิคคลาสสิก!)
exiftool -b -ThumbnailImage file.jpg > thumb.jpg
# ถ้าภาพถูก crop ปิด flag แต่ thumbnail เดิมยังเห็น
# ดึง preview image (บางไฟล์มี preview ใหญ่กว่า thumbnail)
exiftool -b -PreviewImage file.jpg > preview.jpg
exiftool -b -JpgFromRaw file.jpg > full.jpgThumbnailImage/PreviewImage มักต่างจากภาพหลัก — flag อาจอยู่ในเวอร์ชันเดิมที่ไม่ถูกแก้
4. เทคนิคใน CTF
- flag ใน Comment/UserComment/Artist/Copyright: ฟิลด์ที่เขียน text อิสระ — เช็คก่อน
- Thumbnail ต่างจากภาพหลัก: ดึงออกมาดูเสมอ (ภาพเดิมก่อนแก้)
- GPS: exiftool -gps* file.jpg → พิกัด → Google Maps
- custom tag: -u เปิดเผย tag ที่ตั้งชื่อเอง
- วันที่ผิดปกติ: -time:all ดู timestamp (forensics/timeline)
- เทียบหลายไฟล์: ถ้ามีหลายรูป diff metadata หาตัวที่ต่าง
คำสั่งเฉพาะทางที่มีประโยชน์Linux
exiftool -gps:all file.jpg # เฉพาะ GPS
exiftool -time:all file.jpg # เฉพาะ timestamp
exiftool -Comment -UserComment -Artist -Copyright file.jpg # ฟิลด์ text
# เทียบ metadata สองไฟล์
diff <(exiftool a.jpg) <(exiftool b.jpg)5. Quick Reference
- tool แรกในทุกโจทย์ stego — รันก่อนเสมอ
- exiftool -a -u -g1 file (เปิดเผย tag ซ่อน)
- grep -iE 'flag|ctf|key'
- thumbnail: exiftool -b -ThumbnailImage > thumb.jpg
- ฟิลด์เดียว: exiftool -b -Comment file
- GPS: -gps:all; timestamp: -time:all; diff สองไฟล์
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติเพิ่งเจอโจทย์ stego ได้ไฟล์มาไฟล์เดียว มีแค่ Kali เปล่าๆ — exiftool ควรเป็นคำสั่งแรกที่พิมพ์เสมอ เพราะเช็คไวมากและ flag ซ่อนใน metadata บ่อยมาก ทำตามนี้ทีละขั้น
- 1พิมพ์
file image.jpg— ยืนยันชนิดไฟล์จริงก่อน - 2พิมพ์
exiftool image.jpg— ดูฟิลด์ทั้งหมด สแกนหาคำว่า flag/ctf ด้วยตา - 3พิมพ์
exiftool -a -u -g1 image.jpg— เปิดเผย tag ที่ซ้ำ/ไม่รู้จัก ที่โหมดปกติไม่แสดง - 4พิมพ์
exiftool image.jpg | grep -iE 'flag|ctf|key|secret'— กรองหาคำที่น่าสงสัยเร็วๆ - 5ถ้าเป็นรูป ลองดึง thumbnail:
exiftool -b -ThumbnailImage image.jpg > thumb.jpgแล้วเปิดดู (บางทีภาพหลักถูก crop ปิด flag แต่ thumbnail เดิมยังเห็น) - 6เช็ค GPS:
exiftool -gps:all image.jpg— ถ้ามีพิกัด ลองเปิด Google Maps ดูว่าเป็นเบาะแสหรือไม่ - 7ถ้ายังไม่เจอ ลอง
strings image.jpg | grep -iE 'flag'คู่กัน เผื่อ flag ไม่อยู่ใน tag มาตรฐานที่ exiftool รู้จัก - 8ถ้ายังไม่เจอ ไป
binwalk image.jpgเช็คไฟล์ฝัง/ต่อท้าย - 9ถ้ายังไม่เจออีก ให้เปลี่ยน channel ไปตามชนิดไฟล์จริง (LSB สำหรับ PNG/BMP, passphrase-based สำหรับ JPG/WAV)
รัน exiftool แล้วไปทางไหนต่อ
exiftool -a -u -g1 file
ดูทุก tag รวมที่ซ่อน/ซ้ำ
เจอ flag/ข้อความน่าสงสัยใน metadata ไหม?
✅ เจอตรงๆ→→ จบ ได้ flag
❌ ไม่เจอ→→ ลองดึง thumbnail/preview ก่อน
exiftool -b -ThumbnailImage/-PreviewImage
ภาพเดิมอาจต่างจากภาพหลัก
thumbnail มี flag ที่ต่างจากภาพหลักไหม?
✅ เจอ→→ จบ ได้ flag จาก thumbnail
❌ ไม่เจอ/เหมือนเดิม→→ ไปเช็คไฟล์ฝัง/ต่อท้าย
เจอไฟล์ฝังไหม?
✅ เจอ→→ extract แล้วหา flag ต่อ
❌ ไม่เจอ→→ metadata ตันแล้ว เปลี่ยนไปเทคนิค stego จริงตามชนิดไฟล์
PNG/BMP → zsteg/LSB, JPG → steghide/outguess, WAV → spectrogram
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ดูชนิดไฟล์จริง | file | - | aperisolve.com |
| อ่าน metadata ทั้งหมด | exiftool | sudo apt install libimage-exiftool-perl | exifdata.com, metadata2go.com |
| ดึง thumbnail/preview | exiftool -b | - | - |
| ดูพิกัด GPS | exiftool -gps:all | - | Google Maps, dcode.fr/gps |
| ค้นข้อความในไฟล์ดิบ | strings | - | CyberChef (Extract Strings) |
| เช็คไฟล์ฝัง/ต่อท้าย | binwalk | sudo apt install binwalk | aperisolve.com |
| เทียบ metadata สองไฟล์ | diff <(exiftool a) <(exiftool b) | - | - |
🚑 ถ้าตันสนิท ลองท่าถัดไป: metadata (หัวข้อรวมทุกชนิด metadata ไม่ใช่แค่ EXIF), binwalk ถ้ายังไม่เช็คไฟล์ฝัง/ต่อท้าย, zsteg ถ้าเป็น PNG/BMP, steghide/outguess ถ้าเป็น JPG และสงสัยมี passphrase — metadata สะอาดไม่ได้แปลว่าไม่มี flag แค่ไม่ได้ซ่อนตรงนั้น
หัวข้อที่เชื่อมโยง
Metadata Analysisอยู่ใน workflowBinwalkอยู่ใน workflowMP3 Steganographyอยู่ใน workflowWAV Steganographyอยู่ใน workflowMetadata Collectionเครื่องมือเดียวกันPNG Steganographyอยู่ใน workflowJPG Steganographyอยู่ใน workflowOutguessเครื่องมือเดียวกันSteghideเทคนิคเดียวกันzstegเทคนิคเดียวกันFile Upload Vulnerabilitiesเครื่องมือเดียวกันDisk Analysisเทคนิคเดียวกัน
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้