Giới thiệu
Gần một tháng trước mình có public 1 bài Leo thang đặc quyền trong Windows - Windows Privilege Escalation #1: Service Exploits . Để tiếp tục series này, nay mình viết tiếp các cách khai thác đặc quyền trên Windows.
Bài viết hướng đến cho mọi người cách nhìn tổng quan về leo quyền trên Windows, các bạn có thể gặp nó trong các cuộc thi như OSCP, OSWE, các labs trên hackthebox.eu hay Vulnhub, …
Bài viết này được dựa theo khoá học Windows Privilege Escalation for OSCP & Beyond! trên Udemy và Windows / Linux Local Privilege Escalation Workshop của sagishahar.
Stored Credentials
Password
Nguyên nhân
Đôi khi việc leo thang đặc quyền nó dễ như việc tìm thấy mật khẩu của Administrator, và đôi khi có một số vị trí và vài phương pháp phổ biến để tìm kiếm mật khẩu trên Windows. Chúng ta có thể tìm thấy trong registry hoặc trong các file trong hệ thống có chứa username và password
Khai thác
Vậy khi có username và password rồi thì có thể switch sang user đó theo bài viết mình đã viết tại
Làm thế nào để chuyển đổi tài khoản trên Windows (How do I switch users in Windows)?
Mình đánh giá kiểu khai thác này vừa dễ vừa khó, dễ là có thể tìm được ngay password của Administrator, còn khó là việc tìm password Administrator được giấu rất kỹ và giải mã rất lằng nhằng thì nó quả thực là rất khó.
Ví dụ 1: https://www.youtube.com/watch?v=UJ3rK8PyY_w
Kernel Exploits
Windows Kernel Exploitation
Nguyên nhân
Với việc OS được update thường xuyên thì việc khai thác qua kernel dường như là bất khả thi, tuy nhiên chúng ta vẫn cần kiểm tra Kernel của Windows. Có thể sử dụng Watson để kiểm tra xem có lỗ hổng nào chưa được vá. Watson đã được tích hợp bên trong winPEAS rồi. Trong trường hợp phát hiện ra lỗ hổng nào với kernel, sử dụng kho lưu trữ https://github.com/SecWiki/windows-kernel-exploits để kiểm tra và khai thác. Nếu cần biên dịch code C thì có thể sử dụng Kali để biên dịch rồi upload lên machine
Hoặc cũng có thể sử dụng Windows-Exploit-Suggester bằng cách lưu lại systeminfo rồi chạy đoạn mã này sẽ cho ra được những gợi ý để khai thác Kernel. Tuy nhiên, với khá nhiều lỗi Kernel đến từ Windows, việc khai thác này rất mất thời gian vì mỗi lần chạy Windows-Exploit-Suggester mình được nó gợi ý ra khoảng 100 cái mã khai thác, thật là đáng sợ :'(
Khai thác
Ví dụ: https://medium.com/@ranakhalil101/hack-the-box-granny-writeup-w-o-and-w-metasploit-f7a1c11363bb Ví dụ 2: https://youtu.be/HTM-BavQvs4
Options Install Windows
Always Install Elevated
Nguyên nhân
Windows có thể cho phép low privilege users có quyền cài đặt Microsoft Windows Installer Package (MSI) với quyền SYSTEM bởi AlwaysInstallElevated group policy.
Khai thác
Sử dụng đặc quyền được cài đặt MSI của users quyền thấp, attacker có thể tạo một chương trình MSI chứa payload độc hại để leo lên quyền SYSTEM.
Kiểm ra việc AlwaysInstallElevated có được bật với user hiện tại, sử dụng winPEAS.exe
Sử dụng msfvenom để tạo payload với format file MSI
|
|
Đẩy file evil.msi
lên machine và sử dụng câu lệnh sau để cài đặt
|
|
(Nhớ trước khi cài đặt thực hiện lắng nghe trên cổng đã khai báo)
Ví dụ video: https://youtu.be/9LpsofQN_ao
Scheduled Tasks
Nguyên nhân
Các chương trình được lập lịch (scheduled) được khai thác giống với Linux (khai thác với crontab), việc khai thác với Scheduled Tasks khá là khó khăn, tuy nhiên nếu có thể tìm thấy một tệp hoặc chương trình nào đó đang chạy như một phần của tác vụ theo scheduled thì vẫn có thể leo thang đặc quyền.
Khai thác
Việc khai thác thì cũng tùy vào những case cụ thể. Ví dụ 2 trường hợp bên dưới:
https://www.youtube.com/watch?v=J-GlK59M0Yw
Hot Potato
Nguyên nhân
Là một lỗi trong Windows, khai thác qua NTLM relay (specifically HTTP->SMB relay) và NBNS spoofing. Cụ thể cách khai thác được viết đầy đủ tại https://github.com/foxglovesec/Potato
Khai thác
Sử dụng module Tater được download tại https://github.com/Kevin-Robertson/Tater để khai thác. Thực hiện khởi động powershell noprofile
|
|
Import module Tater
|
|
Gọi function Tater để tiến hành khai thác
|
|
Khai thác xong tiến hành kiểm tra tài khoản user đã được thêm vào group Administrator hay chưa
Hoặc có thể thay đổi câu command net user user /add && net localgroup administrators tater /add
thành thực thi file reverse exe cũng được, lúc đó chúng ta sẽ có SYSTEM.
Juicy Potato (abusing the golden privileges)
Nguyên nhân
Các bạn có thể đọc nguyên nhân tại sao và do đâu ở đây Rotten Potato – Privilege Escalation from Service Accounts to SYSTEM
Để phát hiện ra lỗi này, các bạn có thể chạy lệnh whoami /all
để kiểm tra xem mode SeImpersonate
hoặc SeAssignPrimaryToken
đang được bật hay không.
Sau đó, chúng ta có thể lạm dụng một vài cổng COM với CLSID có thể lên được quyền SYSTEM.
Khai thác
Sử dụng file binary download tại https://github.com/ohpe/juicy-potato/releases
Upload file JuicyPotato.exe lên machine.
Lấy mã CLSID tuỳ thuộc vào OS có tại Windows CLSID
Sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- T:\>JuicyPotato.exe JuicyPotato v0.1 Mandatory args: -t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both -p <program>: program to launch -l <port>: COM server listen port Optional args: -m <ip>: COM server listen address (default 127.0.0.1) -a <argument>: command line argument to pass to program (default NULL) -k <ip>: RPC server ip address (default 127.0.0.1) -n <port>: RPC server listen port (default 135) -c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097}) -z only test CLSID and print token's user
Ví dụ: Machine của bạn là Win 7 Enterprise ta lấy được mã CLSID là
{555F3418-D99E-4E51-800A-6E89CFD8B1D7}
, sử dụng JuicyPotato.exe../JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t * -c {555F3418-D99E-4E51-800A-6E89CFD8B1D7}
Có thể thay
c:\windows\system32\cmd.exe
bằng file reverse shell exe để lấy SYSTEM.
Kết
Vậy là mình đã trình bày các cách leo thang đặc quyền trên Windows, còn một vài cách lên SYSTEM trên Windows nữa khai thác Active Directory dự định mình sẽ viết vào bài sau. Cảm ơn bạn đọc đã theo dõi :).