On Attacking Kerberos Authentication Protocol in Windows Active Directory Services: A practical survey

Dinh Huu LocDinh Huu Loc
9 min read

Đây là bản dịch của bài viết này

ABSTRACT

Tổ chức sử dụng dịch vụ Windows Active Directory để xác thực user trong mạng với giao thức Kerberos Authentication. Do đó, cần phải nghiêm cứu tính kháng của nó đối với các loại tấn công mà nó có thể gặp phải, cách tốt nhất là phát hiện và điều chỉnh chúng để giảm thiểu tác động của các cuộc tấn công. Bài viết này phân tích các cuộc tấn công Kerberos phổ biến trong mạng Windows Active Directory, xuất phát từ chính thiết kế của giao thức và chưa được giải quyết. Đối với mỗi cuộc tấn công, mục tiêu được nghiên cứu, triển khai lab và phân tích cách phát hiện, đề xuất các biện pháp giảm thiểu và ứng phó. Sau đó, chúng sẽ được thảo luận một cách tổng quan và kết quả của các cuộc tấn công được phân tích dựa trên các tham số. Theo kết quả của việc nghiên cứu, cần lưu ý rằng mặc dù các cuộc tấn công thường khó triển khai, nhưng việc phát hiện chúng càng phức tạp hơn và thiệt hại rất nghiêm trọng nên cần liên tục theo dõi log để kịp thời đưa ra các biện pháp giảm thiểu và ứng phó.

INTRODUCTION

Giao thức xác thực Kerberos được MIT tạo ra như một giải pháp cho những vấn đề bảo mật trên Internet - kênh truyền không an toàn. Theo tài liệu chính thống, giao thức Kerberos sử dụng mật mã mạnh để Client có thể chứng minh danh tính với Server (và ngược lại) qua kết nối mạng không an toàn. Khi Client và Server sử dụng Kerberos để chứng minh danh tính của mình, họ cũng mã hóa tất cả thông tin liên lạc của mình để đảm bảo quyền riêng tư và tính toàn vẹn dữ liệu. Nhưng, Kerberos đặt ra những điểm yếu sau:

  • Nhược điểm rõ ràng của hệ thống xác thực tập trung là chỉ có một điểm. Nếu Authentication Service (AS) hoặc Ticket Granted Server (TGS) sập thì không ai truy cập được dịch vụ. Giải pháp: sử dụng nhiều Server và sao chép dữ liệu.
  • Tất cả người tham gia phải đồng bộ đồng hộ của họ, nếu không ticket sẽ không hoạt động.
  • Vì tất cả key được lưu trên một Server, nếu nó bị hack thì attacker có thể truy cập toàn bộ tài nguyên.

Việc khai thác những điểm yếu này trở nên quan trọng vì Kerberos là giao thức xác thực mặc định trong mạng Windows, vốn rất phổ biến trong mạng LAN. Sự thành công của các cuộc tấn công này cho phép xâm nhập vào một miền Windows từ thấp đến nghiêm trọng, vì vậy việc biết rõ những tấn công này là gì và cách phòng thủ chúng là vô cùng quan trọng. Mặt khác, tấn công Kerberos rất có vấn đề vì 3 lý do:

  • Access: Khi attacker có quyền local admin, hắn có thể dump toàn bộ creds trên máy đó cho phép hắn leo thang đặc quyền dọc hoặc ngang.
  • Obscurity: phá vỡ và lẩn tránh các biện pháp kiểm soát bảo mật, kẻ tấn công có thể sử dụng lại Kerberos ticket để mạo danh user và bypass authen, ẩn giấu hoạt động, etc.
  • Persistence: Duy trì kết nối với mục tiêu nhờ Kerberos, ngay cả khi creds đã được thay đổi.

Trong khi có vài type tấn công vào giao thức này, nhưng nguy hiểm nhất vấn là Golden-Ticket. Robert Grimes đã mô tả tấn công như sau: Nếu attacker có được truy cập là domain admin/local admin trong AD forest/domain, hắn có thể thao túng Kerberos ticket để có được quyền truy cập trái phép. Thời gian của vé thường là 10 năm hoặc lâu hơn. Nó có thể tạo bất kỳ ticket, add bất kỳ user vào bất kỳ group miễn là trong khả năng của authen Kerberos. Golden-Ticket không chỉ giả mạo Kerberos ticket mà nó còn giả mạo cả KDC.

Tuyên bố cuối cùng này nhấn mạnh tầm quan trọng của việc bảo vệ khỏi những cuộc tấn công này vì nguy cơ có thể giả mạo xác thực toàn bộ mạng lưới. Hầu hết các công ty bỏ qua những loại tấn công như này và tập trung vào tấn công phishing , điều này nhấn mạnh tầm quan trọng của việc biết, hiểu và cách giảm thiểu chúng.

Mục tiêu chính của bài viết này là đặc tả các cuộc tấn công vào giao thức Kerberos và đưa ra giải pháp. Để đạt được điều này, các giai đoạn sau đây sẽ được thảo luận:

  • Nghiên cứu về giao thức để hiểu sâu về cách hoạt động của nó, cũng như các event logs xuất hiện trong các giao tiếp khác nhau. Để miêu tả ngắn gọn và rõ ràng, tài liệu tham khảo chính là Internet và sách.
  • Các lỗ hổng và cuộc tấn công chính vào giao thức Kerberos.
  • Dựng môi trường lab ảo, nơi mà mỗi cuộc tấn công sẽ được thử nghiệm và đặc tả, thông qua các yêu cầu cần thiết để thực hiện chúng, triển khai tấn công, kết quả thử nghiệm cũng như biện pháp đối phó để ngăn chúng xảy ra. Đối với lab, sẽ sử dụng một nền tảng ảo hóa cho triển khai nhiều VM đóng vai trò mô phỏng một mạng Windows với Domain Controller, Client và Server.

Công việc này, thực nghiệm các loại tấn công phổ biến đối với giao thức xác thực Kerberos thông qua lab cụ thể, cung cấp những đóng góp sau:

  • Nghiên cứu các yêu cầu cần thiết để thực hiện từng loại tấn công, điều kiện của cuộc tấn công.
  • Nghiên cứu và xác định mức độ khó khăn để thực hiện tấn công.
  • Hiểu rõ các tool được sử dụng.
  • Detection, Detection, Detection.
  • Đề xuất các khuyến nghị để giảm thiểu thiệt hại.

Cấu trúc của bài viết sẽ được trình bày như sau:
Chương 2 mô tả các thành phần và cách thức giao thức Kerberos hoạt động.
Chương 3 dựng lab
Chương 4 triển khai thực nghiệm, mỗi loại tấn công sẽ được phân tích và đề xuất các kỹ thuật để ngăn chặn và phát hiện chúng.
Chương 5 thảo luận kết quả tấn công Kerberos và Chương 6 trình bày kết luận.

Chương 2. BACKGROUNG AND RELATED WORK

2.1 Kerberos protocol

Theo như 1, Kerberos là giao thức xác thực mạng sử dụng thuật toán đối xứng và một bên thứ ba tin cậy cho phép truyền tin trên kênh không an toàn, giữa Client và Server. Tên của giao thức Kerberos được lấy từ tên của con chó ba đầu Cerberus canh gác cổng địa ngục trong thần thoại Hy Lạp. Được tạo ra bởi Massachusetts Institute of Technology (MIT) để bảo vệ cho các dịch vụ mạng cung cấp bởi dự án Athena.

Kerberos đã trở thành giao thức xác thực mặc định cho các tài khoản miền từ Windows 2000 trở đi, nó xác thực các yêu cầu giữa các máy chủ tin cậy. Những bổ sung của Microsoft vào bộ giao thức Kerberos được đề cấp trong tài liệu RFC 3244 Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols

Giao thức đã được phát triển dưới nhiều phiên bản, có 5 phiên bản Kerberos tính đến thời điểm hiện tại. Trong đó các phiên bản từ 1 đến 3 chỉ dùng trong nội bộ MIT. Hai phiên bản được sử dụng rộng rãi là V4 và V5.

Phiên bản 4, do Steve Miller và Clifford Neuman thiết kế và xuất bản giao thức vào cuối năm 1980. Phiên bản này chủ yếu hỗ trợ thuật toán DES (Data Encryption Standard), độ dài khóa quá ngắn 56 bit, điều này nghĩa là V4 thiếu an toàn so với ngày nay.

Phiên bản 5, do John Kohl và Clifford Neuman thiết kế, xuất bản trong tài liệu RFC 1510 The Kerberos Network Authentication Service (V5) vào năm 1993 (được thay thế bởi RFC 4120 vào năm 2005 ) với mục đích sửa lỗi của phiên bản 4. V5 hỗ trợ nhiều thuật toán mã hóa khác nhau, và cụ thể thuật toán chính sử dụng là AES (Advanced Encryption Standard).

Cả hai chỉ hỗ trợ mã hóa đối xứng dẫn đến các vấn đề về mở rộng quy mô và phân phối khóa.

2.2 Kerberos components

Theo 11, các thành phần sau có thể được phân biệt trong Kerberos:

  1. Transport layer: Kerberos sử dụng giao thức TCP/UDP để truyền dữ liệu dưới dạng văn bản rõ. Do đó, Kerberos đảm nhận việc cung cấp mã hóa. Cổng mặc định là 88 TCP/UDP và được lắng nghe trên KDC.
  2. Agents. là những thằng sau:
    • Client: là user muốn truy cập dịch vụ
    • AP (Application Server): thằng cung cấp dịch vụ
    • KDC (Key Distribution Center): dịch vụ chính của Kerberos, chịu trách nhiệm phát hành ticket, được cài đặt trên Domain Controller (DC). Nó được hỗ trợ bời AS (Authentication Service), nơi phát hành vé TGT
  3. Encryption keys. Key mã hóa được sử dụng bởi Kerberos, trong AD, chúng là:
    • KDC or krbtgt key được tạo ra từ NTLM hash của tài khoản krbtgt.
    • User key được tạo ra từ NTLM hash của user
    • Service key được tạo ra từ NTLM hash của chủ sở hữu dịch vụ
    • Session key là một loại key được thỏa thuận giữa người dùng và KDC.
    • Service session key là key được sử dụng giữa người dùng và dịch vụ.

2.3 Các khía cạnh hoạt động của Kerberos

Trong Kerberos khi yêu cầu truy cập dịch vụ, có ba thực thể tham gia: Authentication Server, Ticket-Granting Server hoặc KDC, máy chủ dịch vụ mà người dùng muốn truy cập. Dưới đây là một số điểm cần lưu ý:

  • Với mỗi lần tương tác, user nhận được 2 thông điệp, một cái có thể giải mã và một cái không
  • Máy chủ Service mà user yêu cầu không bao giờ tương tác với KDC.
  • KDC lưu trữ tất cả khóa bí mật của máy tính người dùng và dịch vụ trong CSDL của nó.
  • Khóa bí mật là mật khẩu + hash salt: thuật toán băm này được chọn trong quá trình triển khai cấu hình Kerberos. Đối với các dịch vụ hoặc máy chủ không có mật khẩu mà thay vào đó, quàn trị viên tạo ra một khóa trong quá trình cấu hình ban đầu và lưu trữ nó trên máy chủ hoặc dịch vụ.
  • Một lần nữa, tất cả các khóa bí mật này đều được lưu trữ trên KDC, hãy nhớ rằng Kerberos dựa vào mật mã đối xứng.
  • Bản thân KDC được mã hóa bằng 'master key' để gia tăng độ phức tập khi đánh cắp các khóa từ CSDL.

.

0
Subscribe to my newsletter

Read articles from Dinh Huu Loc directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dinh Huu Loc
Dinh Huu Loc

nothing