Phân tích và khai thác lỗ hổng 0day của hệ thống Microsoft Windows
Giới thiệu
Tháng trước, bản vá bảo mật của Microsoft bao gồm một lỗ hổng nâng quyền win32k bị khai thác, chỉ tồn tại trên các hệ thống Windows sớm. Bài viết này sẽ phân tích cách mà kẻ tấn công vẫn tiếp tục khai thác lỗ hổng này trong bối cảnh các biện pháp an ninh hiện tại đang không ngừng được cải thiện. Môi trường phân tích là Windows Server 2016.
Bối cảnh lỗ hổng
Lỗ hổng 0day chỉ những lỗ hổng chưa được công bố và sửa chữa, có thể bị khai thác một cách xấu để gây ra thiệt hại lớn. Lỗ hổng 0day trên hệ thống Windows vừa được phát hiện có thể cho phép hacker có được quyền kiểm soát hoàn toàn hệ thống, hậu quả bao gồm nhưng không giới hạn:
Lấy cắp thông tin cá nhân
Hệ thống sập, dữ liệu bị mất
Thiệt hại tài chính
Cài đặt phần mềm độc hại
Khóa riêng tư bị đánh cắp
Tài sản kỹ thuật số đã được chuyển nhượng
Xét từ một góc độ rộng hơn, lỗ hổng này có thể ảnh hưởng đến toàn bộ hệ sinh thái Web3 hoạt động trên cơ sở hạ tầng Web2.
Phân tích bản vá
Bản vá đã sửa một vấn đề xử lý nhiều lần tham chiếu đối tượng. Phân tích nhận xét mã nguồn sớm cho thấy, mã gốc chỉ khóa đối tượng cửa sổ, không khóa đối tượng menu trong cửa sổ, có thể dẫn đến việc tham chiếu sai đối tượng menu.
Phân tích khai thác lỗ hổng
Phân tích phát hiện rằng trong hàm xxxEnableMenuItem, hàm MenuItemState trả về có hai khả năng: menu chính của cửa sổ hoặc submenu trong menu.
Xây dựng cấu trúc menu lồng ghép đa lớp đặc biệt và thiết lập thuộc tính cụ thể, có thể vượt qua kiểm tra hàm. Khi hàm xxxRedrawTitle trả về lớp người dùng, xóa quan hệ tham chiếu giữa các menu và giải phóng đối tượng menu mục tiêu. Cuối cùng, trong hàm xxxEnableMenuItem, tham chiếu tới đối tượng menu đã không còn hiệu lực.
Thực hiện khai thác lỗ hổng
Tư duy tổng thể
Xem xét hai cách sử dụng:
Thực thi mã shellcode
Sử dụng nguyên thủy đọc/ghi để chỉnh sửa địa chỉ token
Chọn phương án thứ hai, sẽ chia quá trình sử dụng thành hai vấn đề:
Làm thế nào để lợi dụng lỗ hổng UAF để kiểm soát giá trị cbwndextra
Làm thế nào để thực hiện các nguyên tử đọc ghi ổn định
ghi dữ liệu ban đầu
Sử dụng đối tượng tên cửa sổ trong lớp WNDClass để chiếm dụng và giải phóng đối tượng menu. Tìm thời điểm để ghi dữ liệu trong hàm xxxRedrawWindow.
Cuối cùng chọn ghi tham số cb-extra của HWNDClass thông qua thao tác AND 2 với cờ.
Bố trí bộ nhớ ổn định
Thiết kế ba đối tượng HWND liên tiếp, giải phóng đối tượng ở giữa và sử dụng đối tượng HWNDClass. Các đối tượng HWND ở trước và sau lần lượt được sử dụng cho:
Cung cấp tham số kiểm tra biểu tượng
Cung cấp phương tiện đọc và viết nguyên thủy
Thông qua địa chỉ handle lõi bị rò rỉ để xác định chính xác thứ tự sắp xếp của đối tượng.
thực hiện nguyên thủy đọc và viết
Bất kỳ đọc: GetMenuBarInfo()
Tuỳ ý viết: SetClassLongPtr()
Ngoài việc ghi TOKEN, các thao tác ghi khác sử dụng đối tượng class của đối tượng cửa sổ đầu tiên.
Tóm tắt
Lỗ hổng win32k có thể bị khắc phục trong phiên bản Windows mới.
Quá trình khai thác lỗ hổng tương đối đơn giản, chủ yếu phụ thuộc vào việc rò rỉ địa chỉ tay cầm ngăn xếp trên máy tính để bàn.
Việc phát hiện lỗ hổng có thể phụ thuộc vào việc kiểm tra độ bao phủ mã hoàn thiện hơn.
Việc phát hiện đọc ghi nhớ bất thường giúp phát hiện các lỗ hổng tương tự
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
13 thích
Phần thưởng
13
3
Đăng lại
Chia sẻ
Bình luận
0/400
MidnightTrader
· 9giờ trước
Một cái lỗ lớn nữa, Windows thật không ổn.
Xem bản gốcTrả lời0
TokenDustCollector
· 9giờ trước
Lỗ hổng của Microsoft này hơi nghiêm trọng, khóa riêng cũng có thể bị đánh cắp.
Phân tích lỗ hổng Windows 0day: Từ UAF menu đến nâng quyền hệ thống
Phân tích và khai thác lỗ hổng 0day của hệ thống Microsoft Windows
Giới thiệu
Tháng trước, bản vá bảo mật của Microsoft bao gồm một lỗ hổng nâng quyền win32k bị khai thác, chỉ tồn tại trên các hệ thống Windows sớm. Bài viết này sẽ phân tích cách mà kẻ tấn công vẫn tiếp tục khai thác lỗ hổng này trong bối cảnh các biện pháp an ninh hiện tại đang không ngừng được cải thiện. Môi trường phân tích là Windows Server 2016.
Bối cảnh lỗ hổng
Lỗ hổng 0day chỉ những lỗ hổng chưa được công bố và sửa chữa, có thể bị khai thác một cách xấu để gây ra thiệt hại lớn. Lỗ hổng 0day trên hệ thống Windows vừa được phát hiện có thể cho phép hacker có được quyền kiểm soát hoàn toàn hệ thống, hậu quả bao gồm nhưng không giới hạn:
Xét từ một góc độ rộng hơn, lỗ hổng này có thể ảnh hưởng đến toàn bộ hệ sinh thái Web3 hoạt động trên cơ sở hạ tầng Web2.
Phân tích bản vá
Bản vá đã sửa một vấn đề xử lý nhiều lần tham chiếu đối tượng. Phân tích nhận xét mã nguồn sớm cho thấy, mã gốc chỉ khóa đối tượng cửa sổ, không khóa đối tượng menu trong cửa sổ, có thể dẫn đến việc tham chiếu sai đối tượng menu.
Phân tích khai thác lỗ hổng
Phân tích phát hiện rằng trong hàm xxxEnableMenuItem, hàm MenuItemState trả về có hai khả năng: menu chính của cửa sổ hoặc submenu trong menu.
Xây dựng cấu trúc menu lồng ghép đa lớp đặc biệt và thiết lập thuộc tính cụ thể, có thể vượt qua kiểm tra hàm. Khi hàm xxxRedrawTitle trả về lớp người dùng, xóa quan hệ tham chiếu giữa các menu và giải phóng đối tượng menu mục tiêu. Cuối cùng, trong hàm xxxEnableMenuItem, tham chiếu tới đối tượng menu đã không còn hiệu lực.
Thực hiện khai thác lỗ hổng
Tư duy tổng thể
Xem xét hai cách sử dụng:
Chọn phương án thứ hai, sẽ chia quá trình sử dụng thành hai vấn đề:
ghi dữ liệu ban đầu
Sử dụng đối tượng tên cửa sổ trong lớp WNDClass để chiếm dụng và giải phóng đối tượng menu. Tìm thời điểm để ghi dữ liệu trong hàm xxxRedrawWindow.
Cuối cùng chọn ghi tham số cb-extra của HWNDClass thông qua thao tác AND 2 với cờ.
Bố trí bộ nhớ ổn định
Thiết kế ba đối tượng HWND liên tiếp, giải phóng đối tượng ở giữa và sử dụng đối tượng HWNDClass. Các đối tượng HWND ở trước và sau lần lượt được sử dụng cho:
Thông qua địa chỉ handle lõi bị rò rỉ để xác định chính xác thứ tự sắp xếp của đối tượng.
thực hiện nguyên thủy đọc và viết
Ngoài việc ghi TOKEN, các thao tác ghi khác sử dụng đối tượng class của đối tượng cửa sổ đầu tiên.
Tóm tắt
Lỗ hổng win32k có thể bị khắc phục trong phiên bản Windows mới.
Quá trình khai thác lỗ hổng tương đối đơn giản, chủ yếu phụ thuộc vào việc rò rỉ địa chỉ tay cầm ngăn xếp trên máy tính để bàn.
Việc phát hiện lỗ hổng có thể phụ thuộc vào việc kiểm tra độ bao phủ mã hoàn thiện hơn.
Việc phát hiện đọc ghi nhớ bất thường giúp phát hiện các lỗ hổng tương tự