คลัง
stego

Steghide

Steghide เป็นเครื่องมือ steganography ที่พบบ่อยที่สุดในโจทย์ CTF — ฝังข้อมูล (เข้ารหัสด้วย passphrase) ลงใน JPG, BMP, WAV, AU บทนี้ลงลึกการ embed/extract, การ brute-force passphrase ด้วย stegseek, และเทคนิคหา passphrase ที่ถูกต้อง

BeginnerIntermediate#steghide#stego#stegseek#passphrase#jpg#wav#ctf

1. Steghide ทำงานอย่างไร

Steghide ฝังข้อมูลโดยใช้ graph-theoretic approach กับ DCT coefficient (JPG) หรือ sample (WAV) และเข้ารหัสข้อมูลด้วย passphrase ก่อนฝัง ทำให้แม้รู้ว่ามีข้อมูล ก็ต้องมี passphrase ถึงดึงได้ รองรับ JPEG, BMP, WAV, AU เท่านั้น (ไม่รองรับ PNG/GIF)

2. Embed / Extract

คำสั่งพื้นฐานLinux
# extract (ดึงข้อมูลออก)
steghide extract -sf image.jpg
# จะถาม passphrase — กด Enter ถ้าคิดว่าว่าง
steghide extract -sf image.jpg -p "password"

# embed (ฝัง — เผื่ออยากทดสอบ)
steghide embed -cf cover.jpg -ef secret.txt -p "password"

# info — ดูว่ามีข้อมูลฝังไหม (ต้องมี passphrase ถึงดูเนื้อหา)
steghide info image.jpg
ลอง passphrase ว่าง (Enter) ก่อนเสมอ — โจทย์ง่ายๆ มักไม่ตั้งรหัส

3. Brute-force passphrase (stegseek)

stegseek เป็นตัว crack steghide ที่เร็วที่สุด (เร็วกว่า stegcracker หลายพันเท่า — ทำได้หลักล้าน passphrase/วินาที) ใช้ wordlist brute หา passphrase

stegseekLinux
# brute ด้วย rockyou (เจอแล้วดึงไฟล์ออกอัตโนมัติ)
stegseek image.jpg /usr/share/wordlists/rockyou.txt
# ระบุชื่อ output
stegseek image.jpg rockyou.txt output.txt

# โหมดเช็คว่ามี steghide ฝังไหม (ไม่ต้อง wordlist)
stegseek --seed image.jpg

# ติดตั้ง
# โหลด .deb จาก github RickdeJager/stegseek แล้ว dpkg -i
stegseek เร็วมาก — ลอง rockyou เป็น default ถ้าไม่เจอค่อยลอง wordlist อื่น

4. หา passphrase ที่ถูกต้อง

  • รหัสว่าง — กด Enter (พบบ่อยในโจทย์ง่าย)
  • คำใน challenge — ชื่อโจทย์, description, hint, ชื่อไฟล์
  • ข้อมูลในภาพ — strings/exiftool ของไฟล์เดียวกันอาจมี passphrase
  • rockyou — stegseek brute
  • คำที่เกี่ยวกับธีม — ถ้าโจทย์มีธีม (เช่นชื่อหนัง/เพลง) ลองคำนั้น
ถ้า stegseek ขึ้น 'Found passphrase' แต่ไฟล์ที่ได้เป็น binary แปลกๆ ลอง file output — อาจเป็น zip/gz ที่ต้องแตกต่อ หรือไฟล์ที่ต้องวิเคราะห์ต่อ

5. Quick Reference

  • รองรับ JPG/BMP/WAV/AU (ไม่รองรับ PNG)
  • extract: steghide extract -sf image.jpg (Enter = รหัสว่าง)
  • brute: stegseek image.jpg rockyou.txt (เร็วสุด)
  • passphrase มาจาก: ว่าง, ชื่อโจทย์, strings ในไฟล์, rockyou
  • ได้ output → file output (อาจเป็น zip ต้องแตกต่อ)
  • PNG ใช้ steghide ไม่ได้ → ไปหัวข้อ LSB/PNG

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

สมมติได้ไฟล์ JPG/WAV มา มีแค่ Kali เปล่าๆ — steghide เป็น tool ที่พบบ่อยที่สุดใน CTF stego ทำตามนี้ทีละขั้นก่อนจะไปเทคนิคอื่น

  1. 1พิมพ์ file image.jpg ยืนยันชนิดไฟล์ — steghide ใช้ได้แค่ JPEG/BMP/WAV/AU เท่านั้น (ไม่ใช่ PNG)
  2. 2พิมพ์ steghide info image.jpg — เช็คว่ามีข้อมูลฝังด้วย steghide ไหม (ต้องใส่ passphrase ถ้ามี)
  3. 3พิมพ์ steghide extract -sf image.jpg แล้วกด Enter เฉยๆ ลอง passphrase ว่างก่อน (โจทย์ง่ายมักไม่ตั้งรหัส)
  4. 4ถ้าไม่ว่าง ลองคำจากโจทย์: steghide extract -sf image.jpg -p "คำในชื่อไฟล์หรือ description"
  5. 5ถ้ายังไม่ได้ ให้ stegseek image.jpg /usr/share/wordlists/rockyou.txt — brute อัตโนมัติ เร็วมาก (หลักวินาที/นาที)
  6. 6stegseek เจอ passphrase แล้วจะดึงไฟล์ออกให้อัตโนมัติ — พิมพ์ file image.jpg.out เช็คว่าเป็นไฟล์อะไร
  7. 7ถ้าได้ zip/gz ให้แตกต่อด้วย unzip/gunzip แล้วดูข้างในหา flag
  8. 8ถ้า stegseek ด้วย rockyou ไม่เจอเลย ลอง wordlist อื่น (เช่น cewl จากหน้าเว็บโจทย์, หรือ SecLists) หรือกลับไปดูว่ามี hint passphrase ในโจทย์ที่พลาดไป
  9. 9ถ้าไม่เจอจริงๆ ให้สงสัยว่าอาจไม่ใช่ steghide — ลอง outguess/jsteg (DCT อีกแบบ) หรือถ้าเป็น WAV ลองดู spectrogram
ใช้ steghide แล้วไปทางไหนต่อ
steghide extract -sf file (Enter = ว่าง)
ลอง passphrase ว่างก่อนเสมอ
extract ออกไหม?
✅ ออก (รหัสว่าง)→ จบ ได้ไฟล์ลับ
❌ ไม่ออก→ ลอง passphrase จากบริบทโจทย์
ลองคำจากชื่อไฟล์/description
steghide extract -sf file -p "คำที่เดา"
ยังไม่ออก?
✅ ออกแล้ว→ จบ ได้ไฟล์ลับ
❌ ยังไม่ออก→ brute ด้วย stegseek
stegseek image.jpg rockyou.txt
brute เร็วมาก ลองก่อนวิธีอื่น
stegseek เจอ passphrase ไหม?
✅ เจอ→ file ผลลัพธ์ เปิด/แตกต่อ จบ
❌ ไม่เจอ→ ลอง wordlist อื่น หรือถือว่าไม่ใช่ steghide
ลอง wordlist เฉพาะทาง (cewl จากหน้าโจทย์/SecLists)
ยังไม่เจอเลย?
✅ เจอ→ จบ ได้ไฟล์ลับ
❌ ไม่เจอจริงๆ→ ไม่ใช่ steghide เปลี่ยนไปเทคนิคอื่น
JPG → outguess/jsteg, WAV → spectrogram/LSB audio
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
เช็คว่ามีข้อมูลฝังไหมsteghide infosudo apt install steghidefutureboy.us/stegano/decinput.html
extract ด้วย passphrase ที่รู้/เดาsteghide extractsudo apt install steghidefutureboy.us/stegano (steghide ออนไลน์)
brute passphrase อัตโนมัติstegseek.deb จาก github.com/RickdeJager/stegseek-
สร้าง wordlist เฉพาะทางจากเว็บโจทย์cewlsudo apt install cewl-
เช็ค metadata ก่อนเดารหัสexiftool, stringssudo apt install libimage-exiftool-perlaperisolve.com
ถ้าไม่ใช่ steghide ลอง DCT อื่นoutguess, jstegsudo apt install outguess-
ถอดรหัส/แปลงข้อความที่ได้--CyberChef, dcode.fr
🚑 ถ้าตันสนิท ลองท่าถัดไป: outguess ถ้าเป็น JPG และ steghide ไม่ออกเลย, zsteg ถ้าไฟล์จริงเป็น PNG (steghide ใช้กับ PNG ไม่ได้), stego-jpg สำหรับ workflow JPG แบบเต็ม, stego-wav ถ้าเป็นไฟล์เสียงและสงสัยว่าไม่ใช่ steghide — ถ้า stegseek ลอง rockyou หมดแล้วไม่เจอ มักแปลว่าไม่ใช่ steghide ไม่ใช่ว่ารหัสยาก

โน้ตของฉัน

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