คลัง
osint

Metadata Collection

Metadata Collection ในบริบท OSINT คือการเก็บเกี่ยว metadata จากเอกสารและไฟล์สาธารณะขององค์กรเป้าหมาย — ชื่อผู้ใช้, software/version, path ภายใน, ชื่อเครื่อง, พิกัด GPS ที่หลุดออกมาในไฟล์ที่เผยแพร่ บทนี้ลงลึกชนิด metadata และสิ่งที่เปิดเผย, การ harvest เอกสารด้วย metagoofil/FOCA/Google dork, การดึงด้วย exiftool เป็นชุด, การอ่าน EXIF GPS, และการ correlate ข้อมูลเป็นภาพ infrastructure + รายชื่อพนักงาน (เนื้อหาเพื่อ OSINT/pentest ที่ได้รับอนุญาต)

Intermediate#osint#metadata#document#exif#gps#foca#metagoofil#exiftool

1. metadata เผยข้อมูลภายในองค์กร

เอกสารที่องค์กรเผยแพร่ (PDF, DOCX, XLSX, PPTX, รูป) มักฝัง metadata ที่เผยข้อมูลภายในโดยไม่ตั้งใจ — ชื่อพนักงานที่สร้าง/แก้ไฟล์ (→ username pattern, email), software + version (→ ช่องโหว่ที่รู้), path ภายใน (→ โครงสร้างระบบ + ชื่อ user), ชื่อเครื่อง/domain, รุ่นเครื่องพิมพ์ การเก็บ metadata จากเอกสารหลายสิบไฟล์แล้วเอามารวมกัน สร้างภาพ infrastructure + รายชื่อพนักงานได้โดยไม่ต้องแตะ network ของเป้าหมายเลย

สิ่งนี้เป็น passive OSINT อย่างแท้จริง — ดึงจากไฟล์ที่เผยแพร่สาธารณะ ไม่ยิง traffic ไปที่ target infrastructure จึงเงียบและเป็นด่านต้นๆ ของ recon การ correlate ผลกับ theHarvester (อีเมล), username enumeration และ Google Dorks ทำให้เห็นภาพองค์กรชัดขึ้น

เนื้อหานี้เพื่อ OSINT ในงานที่ได้รับอนุญาต (CTF, bug bounty, pentest ที่มี scope) เท่านั้น

2. ชนิด metadata และสิ่งที่เปิดเผย

ชนิดไฟล์ฟิลด์ metadataเผยอะไร
Office (docx/xlsx/pptx)creator, lastModifiedBy, companyชื่อพนักงาน, ชื่อองค์กร
Officeapplication + appVersionsoftware + version (→ CVE)
PDFAuthor, Producer, Creatorผู้สร้าง + tool ที่ export
PDFCreationDate / ModDatetimeline การทำเอกสาร
รูป (JPEG)GPS latitude/longitudeที่ตั้งจริง (geolocation)
รูปMake / Modelรุ่นกล้อง/มือถือ
รูปSoftwareแอปแต่งรูป + version
ทั่วไปpath/username ใน fieldโครงสร้างไฟล์ภายใน + ชื่อ user
เอกสาร/รูปprinter/host nameชื่อเครื่อง/เครื่องพิมพ์ในเครือข่าย

3. Harvest เอกสารจากเว็บเป้าหมาย

ขั้นแรกคือรวบรวมไฟล์สาธารณะของโดเมนให้ได้มากที่สุด — metagoofil ค้น+โหลดผ่าน search engine อัตโนมัติ, FOCA (Windows GUI) ทำเช่นเดียวกันพร้อมวิเคราะห์+correlate ให้, หรือใช้ Google Dork ค้นเอง

metagoofil — ค้น+โหลดเอกสารของโดเมนLinux
# metagoofil: ค้น+โหลดเอกสารของโดเมนจาก search engine แล้วเตรียมให้ดึง metadata
metagoofil -d example.com -t pdf,doc,docx,xls,xlsx,ppt,pptx -l 100 -n 50 -o loot/
#   -d โดเมน  -t ชนิดไฟล์  -l จำนวนผลค้น  -n จำนวนที่โหลด  -o โฟลเดอร์เก็บ

# หรือค้นเองด้วย Google Dork (ดู google-dorks) แล้ว wget โหลด
#   site:example.com filetype:pdf
#   site:example.com filetype:docx
#   site:example.com filetype:xlsx

# ดึงลิงก์เอกสารจากผลค้นแล้วโหลดเป็นชุด
cat doc_urls.txt | while read u; do wget -q -P loot/ "$u"; done
metagoofil รวม 'ค้น+โหลด' ในตัว; เชื่อมกับ Google Dorks เมื่อต้องการค้นแบบเจาะจง; FOCA (Windows) ทำ + correlate ให้ในเครื่องมือเดียว
FOCA (Fingerprinting Organizations with Collected Archives) เป็น GUI บน Windows ที่ค้น (Google/Bing/DuckDuckGo) → โหลด → ดึง metadata → correlate เป็นรายชื่อ user, software, path, printer ให้อัตโนมัติในตัว เหมาะเมื่อต้องการภาพรวมเร็วโดยไม่เขียน script

4. ดึง metadata เป็นชุดด้วย exiftool

exiftool อ่าน metadata ได้แทบทุกชนิดไฟล์ (Office, PDF, รูป) — รันแบบ recursive ทั้งโฟลเดอร์ แล้วกรองด้วย grep เพื่อรวบ field ที่สนใจ (ดู exiftool สำหรับรายละเอียด flag)

exiftool batch + กรอง field สำคัญLinux
# ดึง metadata ทุกไฟล์ในโฟลเดอร์ (recursive)
exiftool -r loot/ > all_metadata.txt

# 1) รายชื่อผู้สร้าง/ผู้แก้ (→ username, พนักงาน)
exiftool -r loot/ | grep -iE 'Author|Creator|Last Modified By|Owner|Creator Tool' | sort -u

# 2) software + version (→ หา CVE)
exiftool -r loot/ | grep -iE 'Producer|Software|Application|App Version' | sort -u

# 3) path/ชื่อเครื่องที่หลุดใน field
exiftool -r loot/ | grep -iE 'Company|Comment|Template|Hyperlink' | sort -u

# 4) เอกสาร Office = zip → เปิด core.xml/app.xml ตรงๆ
unzip -o file.docx -d d && cat d/docProps/core.xml d/docProps/app.xml

# 5) PDF เฉพาะ (pdfinfo อีกทางเลือก)
pdfinfo report.pdf | grep -iE 'Author|Creator|Producer'
รวบ Author/Creator ทั้งหมด → ได้รายชื่อพนักงาน + รูปแบบ username; Office เป็น zip เปิด docProps/ ดู field ดิบได้

5. EXIF GPS — geolocation จากรูป

รูปที่ถ่ายด้วยมือถือ/กล้องมี GPS มักฝังพิกัดจริงใน EXIF ถ้ารูปที่องค์กร/บุคคลโพสต์ไม่ได้ถูก strip metadata เราอ่านพิกัดแล้วเปิดในแผนที่ได้ทันที (ต่อยอด geolocation — ดู geolocation)

อ่าน GPS จากรูปLinux
# ดู GPS ทั้งหมดในรูป
exiftool -gps:all -n photo.jpg

# ดึงพิกัดเป็นรูปแบบพร้อมเปิดแผนที่
exiftool -c '%.6f' -GPSLatitude -GPSLongitude photo.jpg
#   GPS Latitude  : 13.756331
#   GPS Longitude : 100.501762
#   → เปิด https://maps.google.com/?q=13.756331,100.501762

# batch: หารูปทุกใบที่มี GPS ในโฟลเดอร์
exiftool -r -if '$gpslatitude' -GPSLatitude -GPSLongitude -Filename loot/

# ดูรุ่นกล้อง + timestamp (correlate อุปกรณ์/เวลา)
exiftool -Make -Model -DateTimeOriginal photo.jpg
GPS ใน EXIF = พิกัดจริงที่ถ่าย; -if '$gpslatitude' กรองเฉพาะรูปที่มี GPS; รวม Make/Model/DateTime ระบุอุปกรณ์+เวลา
แพลตฟอร์มโซเชียลใหญ่ๆ มัก strip EXIF ตอน upload — แต่ไฟล์ต้นฉบับที่แชร์ผ่าน cloud/เว็บองค์กร/อีเมลมักยังมี GPS ครบ ลองหารูปจากแหล่งที่ไม่ผ่านการประมวลผล

6. Correlate — ประกอบเป็นภาพองค์กร

คุณค่าจริงเกิดตอนรวมข้อมูลจากหลายไฟล์ — Author 30 ชื่อจาก 50 เอกสาร กลายเป็นรายชื่อพนักงาน + ยืนยันรูปแบบ username/email ขององค์กร; software+version หลายตัวชี้ช่องโหว่; path ที่ซ้ำๆ เผยโครงสร้าง share ภายใน

ฟิลด์ที่รวบได้ประกอบเป็นใช้ต่อ
Author / Last Modified By หลายชื่อรายชื่อพนักงานusername enum, email pattern (ดู email-investigation)
Software / Producer + versionรายการ software ที่ใช้หา CVE ของ version นั้น
path ใน metadataโครงสร้าง file share + usernameเข้าใจระบบ, ชื่อ user ภายใน
Computer / host namenaming convention ของเครื่องคาดเดาชื่อเครื่องอื่น
Printer modelอุปกรณ์ในเครือข่ายช่องโหว่ printer / pivot
GPS (รูป)ที่ตั้งจริงgeolocation, ยืนยันสถานที่
รวบ username → ยืนยัน email patternLinux
# ดึงชื่อผู้สร้างทั้งหมด → ทำเป็นรายชื่อ unique
exiftool -r -Author -Creator -"Last Modified By" loot/ \
  | grep -iE 'Author|Creator|Modified' | sed 's/.*: //' | sort -u > names.txt

# เทียบกับ email pattern ที่พบ (จาก theHarvester)
theHarvester -d example.com -b all
#   ถ้าเห็น [email protected] → map names.txt เป็น email ได้
#   'John Smith' → [email protected]
ผสาน metadata (ชื่อ) กับ theHarvester (email pattern) → สร้างรายการ email พนักงานที่น่าจะถูกต้อง สำหรับ phishing simulation ที่ได้รับอนุญาต
การรวบรวม Author/Creator จากเอกสารหลายสิบไฟล์ มักได้รายชื่อพนักงานจริง + ยืนยันรูปแบบ username/อีเมลขององค์กร ซึ่งต่อยอดไป username enumeration หรือ phishing simulation ใน pentest ที่ได้รับอนุญาต — ฝั่ง defense ควร strip metadata ก่อนเผยแพร่ทุกไฟล์

7. Quick Reference

  • เอกสาร/รูปสาธารณะ = metadata เผยข้อมูลภายในโดยไม่ตั้งใจ
  • harvest: metagoofil -d domain -t pdf,docx,xlsx -o loot/ หรือ FOCA (GUI)
  • หรือ Google dork: site:target filetype:pdf
  • ดึง: exiftool -r loot/ | grep -iE 'Author|Creator|Software'
  • Office = zip → docProps/core.xml, app.xml
  • GPS: exiftool -GPSLatitude -GPSLongitude photo.jpg → maps
  • ได้: รายชื่อพนักงาน, username/email pattern, software+CVE, path, พิกัด
  • correlate กับ theHarvester (email) + username enum + geolocation
  • defense: strip metadata ก่อน publish (exiftool -all=)

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

สมมติโจทย์ให้โดเมนองค์กรมา ต้องหาว่าเอกสารสาธารณะของเขาเผยอะไรบ้าง มีแค่ Kali เปล่าๆ ทำตามนี้ทีละขั้น

  1. 1รวบรวมเอกสารสาธารณะก่อน: metagoofil -d example.com -t pdf,docx,xlsx -l 50 -n 30 -o loot/
  2. 2หรือค้นเองด้วย Google Dork: site:example.com filetype:pdf แล้ว wget โหลดมาเก็บใน loot/
  3. 3ดึง metadata ทั้งหมดทีเดียว: exiftool -r loot/ > all_metadata.txt
  4. 4กรองหาชื่อผู้สร้าง/แก้ไข: exiftool -r loot/ | grep -iE 'Author|Creator|Last Modified By'
  5. 5ถ้าเป็นไฟล์ Office (docx/xlsx): unzip -o file.docx -d d && cat d/docProps/core.xml ดู field ดิบ
  6. 6ถ้าเป็นรูป: เช็ค GPS ด้วย exiftool -gps:all -n photo.jpg
  7. 7รวมชื่อที่เจอเป็น unique list แล้วเทียบกับรูปแบบอีเมลจาก theHarvester -d example.com -b all
  8. 8ถ้าเจอ software+version ใน metadata ลองค้น CVE ของเวอร์ชันนั้นด้วย searchsploit
  9. 9ถ้าเจอพิกัด GPS ต่อยอดไปดูพื้นที่จริงบนแผนที่
จาก metadata เอกสาร ไปจนถึงรายชื่อ/CVE/พิกัด
harvest เอกสารได้ครบพอไหม (metagoofil/dork)
✅ ได้เอกสารหลายไฟล์n2
❌ ได้น้อย/ไม่มีเอกสารสาธารณะ→ ลอง dork เพิ่ม (filetype:xls, filetype:ppt) หรือหารูปจากเว็บ/โซเชียลแทน
exiftool -r batch เจอ Author/Creator ไหม
✅ เจอชื่อพนักงานn3
❌ metadata ถูก strip ไปแล้วn4
ชื่อที่เจอ ตรงกับรูปแบบอีเมลจาก theHarvester ไหม
✅ ตรง→ จบ ประกอบเป็น [email protected] ได้
❌ ยังไม่รู้ pattern อีเมล→ รัน theHarvester -d example.com -b all หา pattern ก่อน
เจอ GPS ในรูปไหม
✅ เจอtoGeo
❌ ไม่มี GPS เลยn5
เจอ software+version ใน metadata ไหม
✅ เจอ→ ค้น CVE ของ version นั้น (searchsploit/cve.mitre.org)
❌ ไม่มีอะไรเลยn6
ตันด้าน metadata แล้ว ต้องการอะไรต่อ
อยากหาบัญชีของชื่อพนักงานที่เจอtoUser
อยากเช็คว่าอีเมลที่ประกอบได้เคยรั่วไหมtoEmail
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
harvest เอกสารสาธารณะmetagoofil (ถ้ามีใน Kali)pip install metagoofilsite:target filetype:pdf (Google dork)
ดึง metadata ชุดexiftoolapt install exiftool-
ดู field Office ดิบunzip--
หารูปแบบอีเมลองค์กรtheharvester-hunter.io
เช็ค breach ของอีเมล-pip install holehe h8mailhaveibeenpwned.com
ค้น CVE จาก software versionsearchsploit-cve.mitre.org, nvd.nist.gov
เปิดพิกัด GPS บนแผนที่--google.com/maps
🚑 ถ้าตันสนิท ลองท่าถัดไป:
• เจอ GPS ในรูปที่เอกสารแนบ → ไป Geolocation
• เจอชื่อพนักงานจาก Author/Creator อยากหาบัญชี → ไป Username Enumeration
• ประกอบอีเมลได้แล้วอยากเช็ค breach → ไป Email Investigation

โน้ตของฉัน

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