CEH v11 Lab – Zero Logon Attack

CEH v11 Lab : Zero Logon Attack

Giới thiệu khóa học trực tuyến CEH v11 http://akademy.edu.vn/course/khoa-hoc-cehv11-truc-tuyen/

Phần 1 : Giới Thiệu Về Lổ Hỗng Zero Logon

Vào ngày 14 tháng 9, Secura đã phát hành một whitepaper cho CVE-2020-1472, cho phép kẻ tấn công chuyển từ Zero sang Domain Admin trong khoảng một phút. Họ đặt tên cho lỗ hổng này là Zero Logon.

Zero Logon là cuộc tấn công khai thác một tính năng trong MS-NRPC (Microsoft NetLogon Remote Protocol), MS-NRPC là một thành phần xác thực quan trọng của Active Directory xử lý vấn đề xác thực cho tài khoản Người dùng và Máy (User &  Machine account) . Nói tóm lại – cuộc tấn công chủ yếu tập trung vào việc triển khai Cryptography yếu kém. Cụ thể, Microsoft đã chọn sử dụng AES-CFB8 cho một hàm có tên là ComputeNetlogonCredential, điều này bình thường tốt, ngoại trừ việc họ đã mã hóa cứng Initialization Vector để sử dụng tất cả các số không (zero) thay vì một chuỗi ngẫu nhiên. Vì vậy, khi kẻ tấn công gửi một tin nhắn chỉ chứa các số không với IV là 0, có 1 trong 256 cơ hội rằng Ciphertext sẽ là Zero hay Số không (0).

Nhưng điều đó có thể được tận dụng như thế nào? Chúng tôi sẽ giải thích chi tiết hơn và thực hiện bài thực hành  trong các phần sau.

Machine Account Là Gì ?

Thông thường, nếu chúng ta thử tấn công dựa trên số liệu thống kê kiểu như bruteforce trên bất kỳ tài khoản người dùng nào, chúng ta sẽ bị khóa. Trừ khi các bạn tắt chính sách này hay dùng domain controller trên Windows 200 hay Windows 2003 (tôi nhớ là vậy, nhưng nhiều bạn đọc ở đây chắc chưa học qua cấp 1 khi Windows 2000 ra đời).

Tuy nhiên, điều này không áp dụng với các tài khoản máy. Tài khoản máy hoạt động theo một cách khác so với tài khoản người dùng tiêu chuẩn. Những tài khoản này không có  policy khóa tài khoản được định nghĩa sẳn (vậy các bạn nên lưu ý là có thể tạo security policy cho tài khoản này để đặt thời gian và số lần đăng nhập sai hay không nhé ), và chúng được bảo vệ bởi một mật khẩu 64 ký tự chữ và số  khiến cho việc xâm nhập tài khoản máy  rất khó . Và enduser không thể truy cập vào tài khoản này, tuy nhiên trong một số trường hợp nhất định, ta có thể trích xuất mật khẩu tài khoản máy bằng một công cụ như Mimikatz, nhưng để làm điều này các bạn phải tra4i qua bước exploit và thao tác trên có thể xem là post attack. Trong bài này chúng ta đang nói đến 1 lỗi thuộc dạng điểm 10/10 có thể RCE.

Tận Dụng Điểm Yếu Bảo Mật

Tài khoản máy thường có các đặc quyền cấp hệ thống mà chúng ta có thể sử dụng cho nhiều việc khác nhau. Nếu bạn không quen thuộc với Active Directory, chúng ta có thể lấy Machine Account  của Domain Controller  và   sử dụng xác thực được cấp cùng với công cụ Secretsdump.py (SecretsDump là một tiện ích trích xuất mật khẩu như Mimikatz, ngoại trừ nó hoạt động trên mạng thay vì host) để trích xuất tất cả mật khẩu trong domain. Tại thời điểm này, chúng ta có một kill chain (sử dụng theo thuật ngữ của CEH v11 J như sau:

Sử dụng Zero Logon để bỏ qua xác thực trên Machine Account  của Domain Controller -> Chạy Secretsdump.py để trích xuất thông tin đăng nhập -> Crack/Pass Domain Admin Hashes > ??? ->  Over / Cover

Phân tích tiến trình MS-NRPC Logon  

Tại thời điểm này, chúng ta biết có một lỗ hổng bảo mật  nhưng   vẫn chưa chắc chắn về cách khai thác nó cũng như không rõ tại sao có tên là ZeroLogon, và tên mã CVE thì sẽ là CVE-2020-ABCD. Chúng ta sẽ sớm đề cập đến vấn đề đó, nhưng các bạn cần biết có một lỗ hổng hay khiếm khuyết trong cách Microsoft xử lý vấn đề Xác thực trong chức năng ComputeNetLogonCredetial của tiến trình MS-NRPC. Để hiểu rõ hơn về lỗ hổng, chúng ta cần tìm hiểu sâu hơn về cách Microsoft xử lý xác thực đối với NRPC.

Để phân tích nơi lỗ hổng xảy ra, chúng ta hãy xem sơ đồ do Secura cung cấp cũng như Tài liệu của Microsoft để giải mã điều kỳ diệu đằng sau Zero Logon. Các địa chỉ nguồn có thể được tìm thấy ở cuối bài viết.

Source: Secura

Bước 1. Máy khách tạo một NetrServerReqChallenge và gửi đi [Hình 1. Bước 1]. NetrServerReqChallenge chứa các thọng số sau:

1. DC

2. Target Device (trong trường hợp này cũng là DC)

3. Một Nonce (trong tình huống này là 16 Bytes of Zero).

Bước 2. Máy chủ nhận được NetrServerReqChallenge, sau đó máy chủ sẽ tạo Nonce của chính nó (Cái này được gọi là Server Challenge), máy chủ sẽ gửi lại Server Challenge cho máy khách. [Hình 1. Bước 2]

Bước 3. Máy khách sẽ tính toán thông tin đăng nhập NetLogon Credential của nó với the Server Challenge được cung cấp từ máy chủ [Hình 1. Bước 3]. Nó sử dụng phương thức NetrServerAuthenticate3 với các tham số sau :

1. Custom Binding Handle (Impacket xử lý nó cho chúng)

2. Tên machine account của Domain Controller  ví dụ: DC01$)

3. Một  Secure Channel Type (Impacket sắp xếp các xử lý thích hợp nhưng ta vẫn cần xác định nó như là: [nrpc.NETLOGON_SECURE_CHANNEL_TYPE.ServerSecureChannel])

4. Computer Name (Domain Controller ex: DC01)

5. Client Credential String (bào gồm  8 hextet của  \x00 [16 Bytes số 0 hay Zero])  

6. Các Negotiation Flag  

Bước 4. Máy chủ sẽ nhận được yêu cầu NetrServerAuthenticate và sẽ tự tính toán chính yêu cầu đó bằng cách sử dụng các giá trị tốt, đã biết của nó. Nếu kết quả tốt, máy chủ sẽ gửi lại thông tin cần thiết cho máy khách. [Hình 1. Bước 4.]

Tại thời điểm này, nỗ lực khai thác lỗ hổng Zero Logon có thể được tiến hành. Các bước trên sẽ được lặp lại trong một số lần nhất định để cố gắng khai thác lỗ hổng Zero Logon. Việc khai thác thực tế xảy ra ở Bước 3 và 4, đây là nơi chúng ta hy vọng Máy chủ có cùng tính toán với Máy khách. Đây là cơ hội có 1 trong 256 khả năng xuất hiện.

Bước 5. Nếu máy chủ tính toán cùng một giá trị, máy khách sẽ xác minh lại và khi thỏa thuận chung được xác nhận, họ sẽ đồng ý về một khóa phiên. Khóa phiên sẽ được sử dụng để mã hóa thông tin liên lạc giữa máy khách và máy chủ, có nghĩa là xác thực thành công. [Hình 1. Bước 5]

Từ đó, các giao tiếp RPC bình thường có thể xảy ra.

Phần 2 : Demo Zero Logon Attack

Xem tại http://akademy.edu.vn/course/khoa-hoc-cehv11-truc-tuyen/

Demo :

Nguồn –

1. Tom Tervoort of Secura – https://www.secura.com/pathtoimg.php?id=2055

1. Microsoft – https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/7b9e31d1-670e-4fc5-ad54-9ffff50755f9

2. Microsoft – https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/3a9ed16f-8014-45ae-80af-c0ecb06e2db9

Trả lời

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s