Steghide
Steghide เป็นเครื่องมือ steganography ที่พบบ่อยที่สุดในโจทย์ CTF — ฝังข้อมูล (เข้ารหัสด้วย passphrase) ลงใน JPG, BMP, WAV, AU บทนี้ลงลึกการ embed/extract, การ brute-force passphrase ด้วย stegseek, และเทคนิคหา passphrase ที่ถูกต้อง
1. Steghide ทำงานอย่างไร
Steghide ฝังข้อมูลโดยใช้ graph-theoretic approach กับ DCT coefficient (JPG) หรือ sample (WAV) และเข้ารหัสข้อมูลด้วย passphrase ก่อนฝัง ทำให้แม้รู้ว่ามีข้อมูล ก็ต้องมี passphrase ถึงดึงได้ รองรับ JPEG, BMP, WAV, AU เท่านั้น (ไม่รองรับ PNG/GIF)
2. Embed / Extract
# 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.jpg3. Brute-force passphrase (stegseek)
stegseek เป็นตัว crack steghide ที่เร็วที่สุด (เร็วกว่า stegcracker หลายพันเท่า — ทำได้หลักล้าน passphrase/วินาที) ใช้ wordlist brute หา passphrase
# 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 -i4. หา passphrase ที่ถูกต้อง
- รหัสว่าง — กด Enter (พบบ่อยในโจทย์ง่าย)
- คำใน challenge — ชื่อโจทย์, description, hint, ชื่อไฟล์
- ข้อมูลในภาพ — strings/exiftool ของไฟล์เดียวกันอาจมี passphrase
- rockyou — stegseek brute
- คำที่เกี่ยวกับธีม — ถ้าโจทย์มีธีม (เช่นชื่อหนัง/เพลง) ลองคำนั้น
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พิมพ์
file image.jpgยืนยันชนิดไฟล์ — steghide ใช้ได้แค่ JPEG/BMP/WAV/AU เท่านั้น (ไม่ใช่ PNG) - 2พิมพ์
steghide info image.jpg— เช็คว่ามีข้อมูลฝังด้วย steghide ไหม (ต้องใส่ passphrase ถ้ามี) - 3พิมพ์
steghide extract -sf image.jpgแล้วกด Enter เฉยๆ ลอง passphrase ว่างก่อน (โจทย์ง่ายมักไม่ตั้งรหัส) - 4ถ้าไม่ว่าง ลองคำจากโจทย์:
steghide extract -sf image.jpg -p "คำในชื่อไฟล์หรือ description" - 5ถ้ายังไม่ได้ ให้
stegseek image.jpg /usr/share/wordlists/rockyou.txt— brute อัตโนมัติ เร็วมาก (หลักวินาที/นาที) - 6stegseek เจอ passphrase แล้วจะดึงไฟล์ออกให้อัตโนมัติ — พิมพ์
file image.jpg.outเช็คว่าเป็นไฟล์อะไร - 7ถ้าได้ zip/gz ให้แตกต่อด้วย
unzip/gunzipแล้วดูข้างในหา flag - 8ถ้า stegseek ด้วย rockyou ไม่เจอเลย ลอง wordlist อื่น (เช่น cewl จากหน้าเว็บโจทย์, หรือ SecLists) หรือกลับไปดูว่ามี hint passphrase ในโจทย์ที่พลาดไป
- 9ถ้าไม่เจอจริงๆ ให้สงสัยว่าอาจไม่ใช่ steghide — ลอง outguess/jsteg (DCT อีกแบบ) หรือถ้าเป็น WAV ลองดู spectrogram
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| เช็คว่ามีข้อมูลฝังไหม | steghide info | sudo apt install steghide | futureboy.us/stegano/decinput.html |
| extract ด้วย passphrase ที่รู้/เดา | steghide extract | sudo apt install steghide | futureboy.us/stegano (steghide ออนไลน์) |
| brute passphrase อัตโนมัติ | stegseek | .deb จาก github.com/RickdeJager/stegseek | - |
| สร้าง wordlist เฉพาะทางจากเว็บโจทย์ | cewl | sudo apt install cewl | - |
| เช็ค metadata ก่อนเดารหัส | exiftool, strings | sudo apt install libimage-exiftool-perl | aperisolve.com |
| ถ้าไม่ใช่ steghide ลอง DCT อื่น | outguess, jsteg | sudo apt install outguess | - |
| ถอดรหัส/แปลงข้อความที่ได้ | - | - | CyberChef, dcode.fr |
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้