-
06/07/2013
-
797
-
1.308 bài viết
Kỹ thuật DLL side-loading là gì?
DLL side-loading là một kỹ thuật phổ biến được những kẻ tấn công sử dụng để phá vỡ các giải pháp bảo mật và lừa hệ điều hành Windows thực thi mã độc.
Trong bài này, chúng ta sẽ khám phá cách thức hoạt động của DLL side-loading, tại sao nó lại là một vectơ tấn công hiệu quả, cũng như các biện pháp phòng ngừa mà bạn có thể sử dụng để bảo vệ hệ thống của mình trước kỹ thuật này.
Không giống như tệp EXE, tệp DLL không thể được thực thi trực tiếp. Thay vào đó, một ứng dụng sẽ load các tệp DLL khi cần để thực hiện các tác vụ cụ thể có thể không phải là chức năng cốt lõi của chương trình gốc. Điều này làm giảm số lượng mã cần viết, đơn giản hóa việc bảo trì và tiết kiệm dung lượng.
Thật không may, cách mà Windows tìm kiếm và load các tệp DLL cũng có thể bị kẻ xấu lợi dụng khai thác. Khi một ứng dụng yêu cầu chạy một tệp DLL, Windows sẽ cố gắng load tệp DLL từ đường dẫn đầy đủ do ứng dụng xác định hoặc thông qua tệp manifest.
Sự cố xảy ra khi tệp manifest không mô tả cụ thể các tệp DLL mà ứng dụng sẽ load hoặc đường dẫn tệp DLL sẽ được load. Kẻ tấn công có thể khai thác các tệp manifest được cấu hình kém bằng cách đặt một DLL độc hại trùng tên với một DLL hợp pháp ở vị trí ưu tiên mà ứng dụng sẽ load nó lên trước DLL hợp lệ. Vị trí của tệp DLL độc hại có thể được xác định bởi vì, trừ khi được chỉ định khác, Windows sử dụng thứ tự tìm kiếm đã đặt cho tệp DLL:
Chi tiết xem thêm tại: https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Một cuộc tấn công side-loading thành công có thể cho phép kẻ tấn công thực thi mã trên hệ thống, leo thang đặc quyền hoặc đánh cắp thông tin nhạy cảm.
Trong bài này, chúng ta sẽ khám phá cách thức hoạt động của DLL side-loading, tại sao nó lại là một vectơ tấn công hiệu quả, cũng như các biện pháp phòng ngừa mà bạn có thể sử dụng để bảo vệ hệ thống của mình trước kỹ thuật này.
DLL side-loading là gì?
DLL (Dynamic Link Library) tạm dịch tiếng Việt là thư viện liên kết động, là cách giải thích từ Microsoft về thư viện dùng chung. Các thư viện này, thường có phần mở rộng tệp .dll, chứa mã và dữ liệu có thể được sử dụng bởi một hoặc nhiều chương trình cùng một lúc.Không giống như tệp EXE, tệp DLL không thể được thực thi trực tiếp. Thay vào đó, một ứng dụng sẽ load các tệp DLL khi cần để thực hiện các tác vụ cụ thể có thể không phải là chức năng cốt lõi của chương trình gốc. Điều này làm giảm số lượng mã cần viết, đơn giản hóa việc bảo trì và tiết kiệm dung lượng.
Thật không may, cách mà Windows tìm kiếm và load các tệp DLL cũng có thể bị kẻ xấu lợi dụng khai thác. Khi một ứng dụng yêu cầu chạy một tệp DLL, Windows sẽ cố gắng load tệp DLL từ đường dẫn đầy đủ do ứng dụng xác định hoặc thông qua tệp manifest.
Sự cố xảy ra khi tệp manifest không mô tả cụ thể các tệp DLL mà ứng dụng sẽ load hoặc đường dẫn tệp DLL sẽ được load. Kẻ tấn công có thể khai thác các tệp manifest được cấu hình kém bằng cách đặt một DLL độc hại trùng tên với một DLL hợp pháp ở vị trí ưu tiên mà ứng dụng sẽ load nó lên trước DLL hợp lệ. Vị trí của tệp DLL độc hại có thể được xác định bởi vì, trừ khi được chỉ định khác, Windows sử dụng thứ tự tìm kiếm đã đặt cho tệp DLL:
- Thư mục mà ứng dụng được thực thi
- Thư mục hệ thống
- Thư mục hệ thống 16-bit
- Thư mục Windows
- Thư mục làm việc hiện tại (Current Working Directory)
- Các thư mục được liệt kê trong environment variable PATH
Chi tiết xem thêm tại: https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Một cuộc tấn công side-loading thành công có thể cho phép kẻ tấn công thực thi mã trên hệ thống, leo thang đặc quyền hoặc đánh cắp thông tin nhạy cảm.
Tại sao những kẻ tấn công sử dụng DLL side-loading?
Đối với những kẻ tấn công, sử dụng DLL side-loading được ưu tiên sử dụng do khả năng tránh bị phát hiện. Vì mã độc được thực thi trong ngữ cảnh của một ứng dụng hợp pháp nên nó có thể tránh được sự phát hiện của một số cơ chế bảo mật đang tìm kiếm các hoạt động hoặc tiến trình đáng ngờ. Điều này làm tăng khả năng kẻ tấn công có thể thực hiện hoạt động độc hại mà không bị phát hiện.Ransomware sử dụng kỹ thuật DLL side-loading
Với ưu khó bị phát hiện nên kỹ thuật DLL side-loading đã được một số nhóm phát triển ransomware sử dụng tiêu biểu như: REvil, Rorschach, Babuk...Biện pháp giảm thiểu rủi ro từ DLL side-loading
Các cuộc tấn công DLL side-loading rất nguy hiểm tuy nhiên có thể giảm thiểu rủi ro bằng các phương pháp sau:- Luôn cập nhật hệ điều hành, ứng dụng và phần mềm bảo mật giúp bảo vệ chống lại các lỗ hổng và khai thác đã biết có thể được sử dụng cho các cuộc tấn công DLL side-loading.
- Hạn chế quyền truy cập vào các tài nguyên nhạy cảm như thư mục hệ thống, khóa registry và đặc quyền quản trị có thể giúp ngăn chặn kẻ tấn công có thể đặt và thực thi các tệp DLL độc hại.
- Vô hiệu hóa các chức năng không cần thiết như chia sẻ tệp và máy in, dịch vụ truy cập từ xa và các cổng mạng không sử dụng để giảm bề mặt tấn công và hạn chế tác động tiềm ẩn của cuộc tấn công DLL side-loading.
- Chỉ tải xuống và cài đặt phần mềm từ các nguồn có uy tín, chẳng hạn như trang web chính thức của nhà cung cấp hoặc kho lưu trữ phần mềm đáng tin cậy của bên thứ ba.
- Các tổ chức nên được đào tạo về an ninh mạng thường xuyên, đặc biệt chú trọng đến các chiến thuật kỹ thuật xã hội mà những kẻ tấn công thường sử dụng để giành quyền truy cập ban đầu vào hệ thống mục tiêu.
Chỉnh sửa lần cuối bởi người điều hành: