DiepNV88
VIP Members
-
24/09/2013
-
369
-
1.552 bài viết
Thực hành khai thác lỗ hổng nghiêm trọng cho phép chiếm quyền Admin trong Active Directory
1. Lỗ hổng MS14-068
Giữa tháng 11 năm ngoái, Microsoft đã đưa ra một bản vá khẩn cấp chỉ một tuần sau bản cập nhật bảo mật “Tuesday patch” hàng tháng. Bản cập nhật lần này (MS14-068) nhằm giải quyết lỗ hổng nằm trong một thành phần của Windows được gọi là Microsoft Windows Kerberos - KBC, giao thức xác thực được sử dụng mặc định trên Windows Server. Theo đánh giá của Microsoft, lỗ hổng này được cho là nghiêm trọng có thể tạo điều kiện cho những kẻ tấn công leo thang đặc quyền, do đó chúng tôi đã thực hiện nghiên cứu và thử nghiệm khai thác.
Như đã trình bày ở trên lỗ hổng này cung cấp khả năng leo thang đặc quyền trong các hệ thống chưa được cập nhật. Nguy hiểm hơn nó ảnh hưởng tới tất cả các phiên bản Windows Server kể cả phiên bản 2012, tuy nhiên phiên bản này được cho biết là khó khai thác hơn các phiên bản trước đó.
1.1 Giao thức NTLM và Kerberos
Trước khi tìm hiểu thêm về lỗ hổng này chúng ta cần nhắc lại một chút về Active Directory (AD), đây là một dịch vụ hệ thống được sử dụng rất phổ biến trên Windows Server với vai trò quản lý tập trung dữ liệu người dùng và các tài nguyên trong hệ thống mạng. Kể từ phiên bản Windows Server 2003 đến nay hệ thống AD đã sử dụng đồng thời hai phương pháp xác thực là NTLM và Kerberos
Dưới đây là mô tả cơ bản quá trình xác thực thông qua Kerberos.
Hình 1: Xác thực thông qua Kerberos
Bước1: Người dùng sẽ cung cấp thông tin đăng nhập bao gồm tên đăng nhập, mật khẩu và tên domain cần đăng nhập, các thông tin này sẽ được gửi về cho KDC trong gói tin AS-REQ.
Bước 2: Sau đó KDC sẽ gửi lại một gói tin chứa vé TGT cùng một cấu trúc gọi là PAC (Privilege Attribute Certificate) trong đó bao gồm mã số định danh (SID) của người dùng trên domain và quyền hạn của tài khỏan dựa trên các nhóm người dùng. KDC sẽ “ký” lên PAC này để xác nhận nó không thể bị thay đổi. Gói tin này được mã hóa bằng mã băm của mật khẩu người dùng.
Bước 3: Sau đó hệ thống sẽ giải mã gói tin được trả về, nếu thành công người dùng sẽ có được TGT và PAC (chứa nội dung được mã hóa bằng mã băm của mật khẩu của KDC, người dùng không thể giải mã được). Thông tin này sẽ được đưa vào gói tin TGS-REQ, yêu cầu một vé TGS từ KDC.
Bước 4: KDC sẽ kiểm tra lại chữ ký trên PAC, nếu đúng sẽ xác thực quyền và chép nó vào TGS và gửi lại cho người dùng theo gói tin TGS-REP.
Bước 5: Sau khi đã có được vé TGS người dùng sẽ gửi nó tới cho máy chủ cung cấp dịch vụ để lấy quyền sử dụng dịch vụ đó
Bước 6: Máy chủ cung cấp dịch vụ kiểm tra lại chữ ký của PAC nếu chính xác sẽ cấp quyền cho người dùng sử dụng dịch vụ này.
1.2 Thông tin lỗ hổng
Lỗ hổng được đề cập tới trong bản vá MS14-068 gây ra do lỗi trong quá trình AD thực hiện kiểm tra lại PAC trong gói tin TGS-REQ của Kerberos. Theo đó kẻ tấn công có thể sửa lại PAC trong vé TGT (nhận được từ TGT-REP) thêm vào các thông tin sai lệch như mình thuộc cả nhóm quản trị thay vì chỉ thuộc nhóm người dùng. Bằng cách này, kẻ tấn công chỉ cần một tài khỏan đăng nhập vào domain là có thể leo thang đặc quyền trong các hệ thống chưa được vá, giả mạo bất kỳ tài khoản nào, tự thêm mình vào bất kỳ nhóm nào, cài đặt chương trình, xem, thay đổi, xóa dữ liệu hoặc tạo tài khoản mới và sử dụng các dịch vụ được cung cấp…
Ngoài ra trong tháng 12 năm 2014 mã khai thác của lỗ hổng này đã được cung cấp rộng rãi ở trên mạng và đe dọa trực tiếp tới các hệ thống chưa được cập nhật.
2. Thực hành khai thác lỗ hổng trong bản vá MS14-068
Ở phần này chúng ta hãy cùng xem một cuộc tấn công giả định dựa trên kịch bản đã được công bố mà tôi đã thực hiện trên hệ thống phòng Lab. Phiên bản được sử dụng trong ví dụ này là Windows Server 2008 R2.
Bước 1: Kẻ tấn công sẽ thực hiện chèn một PAC đã bị thay đổi vào một TGT hợp lệ
Ở đây NormalUser là một tài khỏan thuộc nhóm người dùng của LABTEST.COM domain có thể đăng nhập thành công và dễ dàng có được tên DomainController và định danh tài khỏan SID của mình
Hình 2 Kẻ tấn công lấy các thông tin cần thiết
Tiếp theo hắn sẽ gửi đi một gói tin AS-REQ để yêu cầu một TGT nhưng không kèm theo cấu trúc PAC, sau đó tự tạo ra một cấu trúc PAC của riêng mình và đính kèm vào TGT đã có được từ gói tin AS-REP.
Một gói tin TGS-REQ sẽ được gửi đi trong đó cho biết nó không kèm theo PAC tuy nhiên trong gói tin lại có PAC (được kẻ tấn công tạo ra) được đính kèm trong đó.
Sau quá trình này trong gói tin TGS-REP sẽ trả về một TGT bao gồm PAC đã được tạo ra bởi chính kẻ tấn công.
Cuối cùng TGT vừa được trả về sẽ được lưu lại để sử dụng trong bước tiếp theo của cuộc tấn công. Nhưng TGT này sẽ không tồn tại mãi mà chỉ trong một khoảng thời gian nhất định tùy vào thiết lập của hệ thống. Tuy nhiên với việc đã khai thác thành công kẻ tấn công hòan tòan có thể làm lại một lần nữa để leo thang đặc quyền nếu hệ thống không được cập nhật hay tạo ra một user thực sự đầy đủ quyền hạn.
Hình 3 Quá trình tạo ra một TGT có PAC đã thay đổi
Bước 2: Xóa TGT thật đã có trên bộ nhớ và thay vào đó là TGT vừa được tạo ra trước đó.
Công việc này có thể được thực hiện dựa trên một công cụ khác đã được sử dụng trong hội thảo BlackHat 2014 vào giữa năm ngoái để khai thác một số lỗi khác cũng trên giao thức Kerberos như PassTheTicket hay Golden Ticket, Silver Ticket.
Hình 4 Thay thế vé thật bằng vé vừa được tạo ra
Tới đây kẻ tấn công đã có được vé xác thực hợp lệ với KDC để chứng minh mình là một tài khỏan có quyền quản trị hệ thống và gửi đi các yêu cầu sử dụng các dịch vụ các tác vụ dành cho admin như ở đây tôi đã thêm thành công tài khỏan hackerUser.
Hình 5 Tài khỏan hackerUser đã được tạo thành công
Các bạn có thể theo dõi video demo dưới đây:
Lỗ hổng CVE-2014-6324 được đánh giá là vô cùng nghiêm trọng hãy chắc chắn hệ thống của bạn đã được cập nhật bản vá để tránh những hậu quả đáng tiếc có thể xảy ra.
Giữa tháng 11 năm ngoái, Microsoft đã đưa ra một bản vá khẩn cấp chỉ một tuần sau bản cập nhật bảo mật “Tuesday patch” hàng tháng. Bản cập nhật lần này (MS14-068) nhằm giải quyết lỗ hổng nằm trong một thành phần của Windows được gọi là Microsoft Windows Kerberos - KBC, giao thức xác thực được sử dụng mặc định trên Windows Server. Theo đánh giá của Microsoft, lỗ hổng này được cho là nghiêm trọng có thể tạo điều kiện cho những kẻ tấn công leo thang đặc quyền, do đó chúng tôi đã thực hiện nghiên cứu và thử nghiệm khai thác.
Như đã trình bày ở trên lỗ hổng này cung cấp khả năng leo thang đặc quyền trong các hệ thống chưa được cập nhật. Nguy hiểm hơn nó ảnh hưởng tới tất cả các phiên bản Windows Server kể cả phiên bản 2012, tuy nhiên phiên bản này được cho biết là khó khai thác hơn các phiên bản trước đó.
1.1 Giao thức NTLM và Kerberos
Trước khi tìm hiểu thêm về lỗ hổng này chúng ta cần nhắc lại một chút về Active Directory (AD), đây là một dịch vụ hệ thống được sử dụng rất phổ biến trên Windows Server với vai trò quản lý tập trung dữ liệu người dùng và các tài nguyên trong hệ thống mạng. Kể từ phiên bản Windows Server 2003 đến nay hệ thống AD đã sử dụng đồng thời hai phương pháp xác thực là NTLM và Kerberos
- NTLM là giao thức xác thực theo kiểu Challenge/Response được Microsoft sử dụng làm giao thức xác thực mặc định trước phiên bản Windows XP SP3. Cách thức hoạt động của giao thức dựa trên quá trình máy chủ xác nhận sẽ tạo ra một thử thách bằng cách mã hóa một số ngẫu nhiên 16 byte sau đó so sánh với kết quả mã hóa của người dùng nếu đúng thì việc xác thực đã thành công và người dùng có thể sử dụng các dịch vụ của hệ thống. Chi tiết về giao thức này có thể xem thêm ở đường dẫn: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378749(v=vs.85).aspx.
- Kerberos hiện nay đang được Microsoft sử dụng làm giao thức xác thực mặc định cho các hệ điều hành Windows Server của mình. Kerberos thực hiện việc xác thực thông qua hình thức trao đổi các vé để có quyền sử dụng các dịch vụ trong hệ thống. Bên cạnh đó giữa máy chủ cung cấp dịch vụ và máy người dùng có thêm một máy thứ ba được cả hai bên tin cậy là Key Distribution Center (KDC) có nhiệm vụ cung cấp vé xác thực tài khỏan với hệ thống (Ticket Get Ticket – TGT) và vé xác thực quyền sử dụng các tài nguyên trong hệ thống (Ticket Get Service – TGS). Những lý do trên cũng chính là nguyên nhân đây được coi là giao thức xác thực an toàn hơn so với giao thức trước đó là NTLM
Dưới đây là mô tả cơ bản quá trình xác thực thông qua Kerberos.
Hình 1: Xác thực thông qua Kerberos
Bước1: Người dùng sẽ cung cấp thông tin đăng nhập bao gồm tên đăng nhập, mật khẩu và tên domain cần đăng nhập, các thông tin này sẽ được gửi về cho KDC trong gói tin AS-REQ.
Bước 2: Sau đó KDC sẽ gửi lại một gói tin chứa vé TGT cùng một cấu trúc gọi là PAC (Privilege Attribute Certificate) trong đó bao gồm mã số định danh (SID) của người dùng trên domain và quyền hạn của tài khỏan dựa trên các nhóm người dùng. KDC sẽ “ký” lên PAC này để xác nhận nó không thể bị thay đổi. Gói tin này được mã hóa bằng mã băm của mật khẩu người dùng.
Bước 3: Sau đó hệ thống sẽ giải mã gói tin được trả về, nếu thành công người dùng sẽ có được TGT và PAC (chứa nội dung được mã hóa bằng mã băm của mật khẩu của KDC, người dùng không thể giải mã được). Thông tin này sẽ được đưa vào gói tin TGS-REQ, yêu cầu một vé TGS từ KDC.
Bước 4: KDC sẽ kiểm tra lại chữ ký trên PAC, nếu đúng sẽ xác thực quyền và chép nó vào TGS và gửi lại cho người dùng theo gói tin TGS-REP.
Bước 5: Sau khi đã có được vé TGS người dùng sẽ gửi nó tới cho máy chủ cung cấp dịch vụ để lấy quyền sử dụng dịch vụ đó
Bước 6: Máy chủ cung cấp dịch vụ kiểm tra lại chữ ký của PAC nếu chính xác sẽ cấp quyền cho người dùng sử dụng dịch vụ này.
1.2 Thông tin lỗ hổng
Lỗ hổng được đề cập tới trong bản vá MS14-068 gây ra do lỗi trong quá trình AD thực hiện kiểm tra lại PAC trong gói tin TGS-REQ của Kerberos. Theo đó kẻ tấn công có thể sửa lại PAC trong vé TGT (nhận được từ TGT-REP) thêm vào các thông tin sai lệch như mình thuộc cả nhóm quản trị thay vì chỉ thuộc nhóm người dùng. Bằng cách này, kẻ tấn công chỉ cần một tài khỏan đăng nhập vào domain là có thể leo thang đặc quyền trong các hệ thống chưa được vá, giả mạo bất kỳ tài khoản nào, tự thêm mình vào bất kỳ nhóm nào, cài đặt chương trình, xem, thay đổi, xóa dữ liệu hoặc tạo tài khoản mới và sử dụng các dịch vụ được cung cấp…
Ngoài ra trong tháng 12 năm 2014 mã khai thác của lỗ hổng này đã được cung cấp rộng rãi ở trên mạng và đe dọa trực tiếp tới các hệ thống chưa được cập nhật.
2. Thực hành khai thác lỗ hổng trong bản vá MS14-068
Ở phần này chúng ta hãy cùng xem một cuộc tấn công giả định dựa trên kịch bản đã được công bố mà tôi đã thực hiện trên hệ thống phòng Lab. Phiên bản được sử dụng trong ví dụ này là Windows Server 2008 R2.
Bước 1: Kẻ tấn công sẽ thực hiện chèn một PAC đã bị thay đổi vào một TGT hợp lệ
Ở đây NormalUser là một tài khỏan thuộc nhóm người dùng của LABTEST.COM domain có thể đăng nhập thành công và dễ dàng có được tên DomainController và định danh tài khỏan SID của mình
Hình 2 Kẻ tấn công lấy các thông tin cần thiết
Một gói tin TGS-REQ sẽ được gửi đi trong đó cho biết nó không kèm theo PAC tuy nhiên trong gói tin lại có PAC (được kẻ tấn công tạo ra) được đính kèm trong đó.
Sau quá trình này trong gói tin TGS-REP sẽ trả về một TGT bao gồm PAC đã được tạo ra bởi chính kẻ tấn công.
Cuối cùng TGT vừa được trả về sẽ được lưu lại để sử dụng trong bước tiếp theo của cuộc tấn công. Nhưng TGT này sẽ không tồn tại mãi mà chỉ trong một khoảng thời gian nhất định tùy vào thiết lập của hệ thống. Tuy nhiên với việc đã khai thác thành công kẻ tấn công hòan tòan có thể làm lại một lần nữa để leo thang đặc quyền nếu hệ thống không được cập nhật hay tạo ra một user thực sự đầy đủ quyền hạn.
Hình 3 Quá trình tạo ra một TGT có PAC đã thay đổi
Bước 2: Xóa TGT thật đã có trên bộ nhớ và thay vào đó là TGT vừa được tạo ra trước đó.
Công việc này có thể được thực hiện dựa trên một công cụ khác đã được sử dụng trong hội thảo BlackHat 2014 vào giữa năm ngoái để khai thác một số lỗi khác cũng trên giao thức Kerberos như PassTheTicket hay Golden Ticket, Silver Ticket.
Hình 4 Thay thế vé thật bằng vé vừa được tạo ra
Tới đây kẻ tấn công đã có được vé xác thực hợp lệ với KDC để chứng minh mình là một tài khỏan có quyền quản trị hệ thống và gửi đi các yêu cầu sử dụng các dịch vụ các tác vụ dành cho admin như ở đây tôi đã thêm thành công tài khỏan hackerUser.
Hình 5 Tài khỏan hackerUser đã được tạo thành công
Các bạn có thể theo dõi video demo dưới đây:
Lỗ hổng CVE-2014-6324 được đánh giá là vô cùng nghiêm trọng hãy chắc chắn hệ thống của bạn đã được cập nhật bản vá để tránh những hậu quả đáng tiếc có thể xảy ra.
Chỉnh sửa lần cuối bởi người điều hành: