คลัง
playbooks

John The Ripper Playbook

John the Ripper (JtR) เป็น password cracker ที่เด่นเรื่องชุด *2john ที่แปลงไฟล์หลายชนิด (zip, rar, pdf, ssh key, ฯลฯ) เป็น hash format ที่ crack ได้ คู่มือนี้ครอบคลุม *2john ทั้งหมด, modes (wordlist/single/incremental), rules, และ workflow ที่ JtR เหนือกว่า hashcat

Intermediate#john#jtr#cracking#2john#hash#playbook#ctf

1. JtR เด่นตรงไหน (vs hashcat)

hashcat เร็วกว่าด้วย GPU แต่ John เด่นที่ชุด *2john — เครื่องมือแปลงไฟล์ที่มีรหัส (zip/rar/pdf/office/ssh key/ฯลฯ) เป็น hash format ที่ crack ได้ ในโจทย์ CTF ที่เจอ 'ไฟล์มีรหัส' John คือตัวเลือกแรกเพราะ *2john ครอบคลุมไฟล์เยอะมาก และ John รันบน CPU ได้ดี (ไม่ต้องมี GPU)

2. ชุด *2john — แปลงไฟล์เป็น hash

*2john ที่ใช้บ่อยLinux
# ไฟล์บีบอัดที่มีรหัส
zip2john secret.zip > hash.txt
rar2john secret.rar > hash.txt
7z2john.pl secret.7z > hash.txt

# เอกสาร
pdf2john.pl secret.pdf > hash.txt
office2john.py document.docx > hash.txt     # Word/Excel/PPT มีรหัส

# SSH private key ที่มี passphrase
ssh2john id_rsa > hash.txt

# อื่นๆ ที่มีบ่อย
keepass2john database.kdbx > hash.txt        # KeePass
bitlocker2john -i drive.img                  # BitLocker
# ดู *2john ทั้งหมด: ls /usr/share/john/*2john*
ls /usr/share/john/ | grep 2john ดูรายการทั้งหมด — มีหลายสิบชนิดไฟล์

3. Crack — modes

modes ของ JohnLinux
# wordlist mode
john --wordlist=rockyou.txt hash.txt

# wordlist + rules
john --wordlist=rockyou.txt --rules hash.txt
john --wordlist=rockyou.txt --rules=Jumbo hash.txt   # rule เยอะขึ้น

# single crack mode (ใช้ข้อมูล username/GECOS เดารหัส — ดีกับ /etc/shadow)
john --single hash.txt

# incremental (brute-force ตาม charset)
john --incremental hash.txt

# ระบุ format ถ้า John เดาผิด
john --format=raw-md5 hash.txt
john --list=formats | grep -i sha           # ดู format ที่รองรับ

# ดูผลที่ crack ได้
john --show hash.txt
single mode เก่งกับ shadow file (ใช้ชื่อ user เดารหัส); --show ดูผลที่ได้

4. เคสคลาสสิก: crack /etc/shadow

unshadow + crackLinux
# รวม passwd + shadow (ได้ username คู่ hash)
unshadow /etc/passwd /etc/shadow > combined.txt
# crack (single mode ดีเพราะมี username)
john --single combined.txt
john --wordlist=rockyou.txt combined.txt
john --show combined.txt
unshadow รวมไฟล์ให้ John ใช้ username ช่วยเดา (single mode); $6$=sha512crypt

5. Workflow

  1. 1ไฟล์มีรหัส? → หา *2john ที่ตรง (zip2john/pdf2john/ssh2john/...)
  2. 2แปลง: 2john file > hash.txt
  3. 3crack: john --wordlist=rockyou.txt hash.txt
  4. 4ไม่ได้ → เพิ่ม --rules; shadow → --single
  5. 5ดูผล: john --show hash.txt
  6. 6งานใหญ่/มี GPU → ย้ายไป hashcat (ดู Hashcat Playbook)

6. Quick Reference

  • John เด่นที่ *2john (แปลงไฟล์มีรหัส → hash)
  • zip2john/rar2john/pdf2john/ssh2john/office2john/keepass2john
  • crack: john --wordlist=rockyou.txt hash.txt
  • --rules (แปลง word); --single (ใช้ username); --incremental (brute)
  • shadow: unshadow passwd shadow → john --single
  • ดูผล: john --show; format: --format=xxx

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

สมมติเจอไฟล์ที่มีรหัสผ่านป้องกันอยู่ (zip/pdf/ssh key/office) มีแค่ Kali เปล่าๆ ทำตามนี้ทีละขั้นเพื่อเปิดไฟล์นั้น

  1. 1เช็คว่ามี john ไหม: `john --version` (Kali มีมาให้แล้ว) ถ้าไม่มี `sudo apt install john -y`
  2. 2ดูว่าไฟล์เป็นชนิดไหน: `file secret.zip` (หรือ .pdf/.docx/.rar/id_rsa)
  3. 3หา *2john ที่ตรงกับชนิดไฟล์: `ls /usr/share/john/ | grep 2john`
  4. 4แปลงไฟล์เป็น hash: เช่น `zip2john secret.zip > hash.txt`
  5. 5เปิดดูว่า hash.txt มีเนื้อหาจริงไหม: `cat hash.txt` — ถ้าว่างเปล่าแปลว่าไฟล์อาจไม่ได้เข้ารหัสจริง หรือ *2john ตัวนั้นใช้ไม่ได้กับไฟล์
  6. 6ลอง crack ด้วย wordlist: `john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt`
  7. 7ไม่แตก → เพิ่ม rule: `john --wordlist=rockyou.txt --rules hash.txt`
  8. 8ถ้าไฟล์เกี่ยวกับ user บนเครื่อง (เช่น /etc/shadow) ให้ลอง single mode: `john --single hash.txt`
  9. 9ดูผลที่ crack ได้: `john --show hash.txt`
  10. 10ยังไม่แตกและมี GPU → ย้ายไป Hashcat Playbook (เร็วกว่ามาก)
จับมือ crack ไฟล์มีรหัสด้วย John
เช็ค john พร้อมใช้ไหม
john --version
✅ ใช้ได้→ ไปดูชนิดไฟล์
❌ ไม่มี→ sudo apt install john -y
ดูชนิดไฟล์
file secret.ext
หา *2john ที่ตรง
ls /usr/share/john/ | grep 2john
✅ เจอ tool ตรงชนิด→ แปลงเป็น hash
❌ ไม่มี *2john ตรงๆ→ ค้นหา script เสริมบน GitHub หรือลองเปิดด้วยมือ
แปลงไฟล์เป็น hash
เช่น zip2john secret.zip > hash.txt
hash.txt มีเนื้อหาจริงไหม
✅ มีข้อมูล→ ไป crack ด้วย wordlist
❌ ว่างเปล่า/error→ เช็คไฟล์เสีย/ไม่ได้เข้ารหัส หรือใช้ 2john ตัวอื่น
john --wordlist=rockyou.txt hash.txt
แตกไหม?
✅ แตก→ john --show hash.txt ดูรหัส
❌ ไม่แตก→ เพิ่ม --rules หรือลอง --single ถ้ามี username
เปิดไฟล์ได้แล้วด้วย password ที่ crack ได้
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
เช็คชนิดไฟล์file--
แปลง zip/rar/7z เป็น hashzip2john, rar2john, 7z2john.pl--
แปลง pdf/office เป็น hashpdf2john.pl, office2john.py--
แปลง ssh key เป็น hashssh2john--
crack แบบ wordlistjohn --wordlist--
wordlist มาตรฐาน/usr/share/wordlists/rockyou.txtgunzip rockyou.txt.gz-
crack เร็วกว่าด้วย GPU-hashcat-
เดา format hash ไม่ออกjohn --list=formats-openwall.com/john doc
🚑 ถ้าตันสนิท ลองท่าถัดไป: (1) มี GPU และ wordlist ไม่พอ → ไป Hashcat Playbook เร็วกว่ามากโดยเฉพาะ mask/rule หนักๆ (2) hash ไม่ใช่ไฟล์แต่เป็น hash ดิบจาก DB/network → กลับไปที่ Hash Cracking ดูภาพรวม (3) ไฟล์ที่แปลงไม่มี *2john รองรับ → ลองเปิดด้วยมือ (binwalk/strings) หรือดูว่าเป็น steganography แทน (4) crack ได้ password แต่ยังไม่รู้เอาไปทำอะไรต่อ → ดูบริบทโจทย์ว่า password นี้ใช้เข้าที่ไหน (SSH/AD/ไฟล์อื่น)

โน้ตของฉัน

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