อันนี้เป็นการทำสรุปวิธีการพยายามทำ Privilege Escalation ใน Windows ครับ

Unquoted Service Paths

หา service ที่ไม่ได้ทำ Quoted Path ครับ

ซึ่งถ้าโดยปกติแล้วมันควรจะเป็น

แต่หากเจอว่าเป็น

แสดงว่าเวลา Windows มันทำงานมันจะหาไฟล์เพื่อมารันตามนี้ครับ

ซึ่งหากเราสร้าง exe ไว้ใน path ใด path หนึ่งก็จะทำให้ service นั้นๆรัน exe ของเราแทนที่จะเป็น “C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe” นั่นเอง

Insecure Registry Permissions

อันนี้เป็นเรื่องของ service ใดๆที่มีการกำหนด permission ใน HKLM\SYSTEM\CurrentControlSet\Services registry key แล้วไม่ secure คือใครจะแก้ไขก็ได้อะไรแบบเนี้ยก็จะกลายเป็นว่าเราสามารถที่จะเข้าไปแก้ไข path การรันไฟล์ของ service ได้นั่นเอง โดยเราสามารถใช้เครื่องมือที่ชื่อว่า SubInACL ในการตรวจสอบสิทธิ์ได้ครับ ถ้าหากมีการกำหนดให้ AlwaysInstallElevated registry นั้นเป็น True อยู่มันก็กลายเป็นว่าใครจะติดตั้ง application ก็ได้ เราก็จะติดตั้ง SubInACL ได้นั่นเองครับ

จะเห็นว่า

ใครก็สามารถเปลี่ยนแปลงได้ ดังนั้นหากเราสร้าง payload แล้วแก้ไขค่า ImagePath ก็จะทำให้ service รัน payload ของเราแทนปกติครับ

สั่งเครื่อง restart เพื่อให้เครื่อง restart ด้วย

Insecure Service Permissions

อันนี้มันจะคล้ายๆกับ Insecure Registry Permission แต่แทนที่จะเปลี่ยน registry ก็ไปเปลี่ยน service properties แทนครับ

เราสามารถใช้ AccessChk tool จาก SysInternals Suite. ในการตรวจสอบ service permission ได้

หากพบว่า SERVICE_ALL_ACCESS นั่นหมายความว่าเราสามารถเข้าไปแก้ไขได้ทุกอย่างในตัว service เลย หากเราต้องการดู stats ของ Service ใช้คำสั่งเป็น

แก้ไข path สำหรับการรัน service

จากนั้น start, stop service

Insecure File/Folder Permissions

อันนี้จะคล้ายๆกับ Unquoted Path vulnerability ครับ เพียงแต่ว่าเราเช็ค permission ของ path ที่เก็บไฟล์ exe ของ service นั้นๆแล้วแปะทับไปแบบโต้งๆเลยครับ

AlwaysInstallElevated

อันนี้เป็นตัวที่เราใช้ตอนติดตั้ง SubInACL จะพบว่า AlwaysInstallElevated มันเป็นตัวที่อนุญาตให้ user สามารถติดตั้ง msi file ได้เลยโดยที่ไม่ต้องเป็น Administrator นั่นเอง ซึ่งหากเป็นแบบนั้นเราก็สามารถจะติดตั้งไฟล์ installer ได้เองเลยนั่นเอง

ตรวจสอบ

สร้าง payload

ติดตั้ง msi

Privilege Escalation with Task Scheduler

วิธีการสร้าง task scheduler เพื่อทำ privilege escalation นั้นทำได้กับ Windows 2000, XP, หรือ 2003 machine เท่านั้นเนื่องด้วย scheduled tasks ใน Windows version เหล่านั้นถูกรันด้วยสิทธิ์ของ SYSTEM นั่นเอง ซึ่งเราจำเป็นต้องมีสิทธิ์ของ local administrator ก่อนถึงจะทำได้ครับ

start schedule task service

สร้าง task schedule

จากนั้นรอไปถึงเวลา 06:42 รอให้ payload รัน

DLL Hijacking

DLL Hijacking เป็นการบังคับให้ exe ใดๆหรือ service ใดๆที่พยายามจะโหลด dll ใดๆ มาใช้ dll ของเราแทน ซึ่งปกติแล้วเวลาที่ exe หา dll ที่ระบุไว้ มันจะไปหาใน path ต่างๆดังนี้

  1. The directory from which the application loaded.
  2. The system directory.
  3. The 16-bit system directory.
  4. The Windows directory.
  5. The current directory.
  6. The directories that are listed in the PATH environment variable.

เวลา exe ถูกโหลดขึ้นมา มันจะไปไล่หา dll ตามลำดับด้านบน หากเรานำ dll ที่มีชื่อเดียวกันที่ตัวโปรแกรมหาไปไว้ในตำแหน่งของ folder ที่อยู่อันดับต้นๆได้ หรือก่อน dll ที่เป็นจริงได้ ตัวโปรแกรมก็จะไปโหลดโปรแกรมเราแทนนั่นเอง เช่น ถ้า C:\Program Files\vulnserver\vulnerability.exe โหลดขึ้นมาแล้วโหลด payload.dll ซึ่งปกติอยู่ใน C:\Windows หากเราสร้าง malicious dll แล้วใช้ชื่อ payload.dll ไปไว้ที่ path C:\Program Files\vulnserver\ ได้ ก็จะกลายเป็นว่า vulnerability.exe โหลด payload.dll ของเราแทนที่จะเป็น C:\Windows\payload.dll นั่นเอง

เราสามารถตรวจสอบได้ว่า exe ใดๆจะทำการโหลด dll อะไรโดยใช้ Procmon 

Stored Credentials

อันนี้เป็นเรื่องผิดพลาดของ user เองที่ดันเก็บ password ไว้ในไฟล์ต่างๆ

  • C:\unattend.xml
  • C:\sysprep.inf
  • C:\sysprep\sysprep.xml

หรือใช้คำสั่งหาไฟล์ที่น่าจะเก็บ password

  • dir c:\*vnc.ini /s /b /c
  • dir c:\*ultravnc.ini /s /b /c
  • dir c:\ /s /b /c | findstr /si *vnc.ini
  • findstr /si password *.txt | *.xml | *.ini
  • findstr /si pass *.txt | *.xml | *.ini

Kernel Exploits

ใช้คำสั่ง wmic เพื่อดู patch

แล้วค่อยโจมตีจากช่องโหว่ที่มันยังไม่ได้ patch ครับ

นอกเหนือจากข้างต้นแล้ว ก็ยังมีส่วนการทำ Information Gathering ด้วยเช่นกันครับ

Information Gathering

OS Information

Environment Information

Connected Device

Users information

SAM File

Installed Software

Full Permissions for Everyone or Users on Program Folders?

Modify Permissions for Everyone or Users on Program Folders?

Upload accesschk from Sysinternals to check for writeable folders and files

Running processes/services on the system

Any weak service permissions? Can we reconfigure anything? Again, upload accesschk.

Scheduled tasks

Startup service and process

Networking

Interesting Files and Sensitive Information

Transfer files

Port forwarding

อันนี้เอาไว้ Reference สำหรับการทำ LFI ครับ

Source:: pentest.blogsploitspren, sploitspren#2, MemoryCorruption