2010-09-02 35 views
34

Câu hỏi đơn giản: Dll hijacking là gì?Dll cướp là gì?

Tôi đã đọc rất nhiều về những ứng dụng nào dễ bị tấn công, nhưng không có nhiều chiều sâu như lý do tại sao.

Câu trả lời được đánh giá cao.

Trả lời

43

Thông tin cơ bản rất đơn giản. Windows có một đường dẫn tìm kiếm cho các tệp DLL, giống như cách nó có một PATH $ cho việc tìm kiếm các tệp thi hành. Nếu bạn có thể tìm ra những DLL mà ứng dụng yêu cầu mà không có đường dẫn tuyệt đối (kích hoạt quá trình tìm kiếm này), bạn có thể đặt DLL hostile của bạn ở đâu đó cao hơn đường dẫn tìm kiếm để nó được tìm thấy trước phiên bản thực, và Windows sẽ vui vẻ nuôi mã tấn công của bạn vào ứng dụng.

Vì vậy, chúng ta hãy giả vờ đường dẫn tìm kiếm DLL của hệ thống của bạn trông giống như sau:

a) .  <--current working directory of the application, highest priority, first check 
b) \windows 
c) \windows\system32 
d) \windows\syswow64 <-- lowest priority, last check 

và một số ứng dụng yêu cầu Foo.exe "bar.dll", trong đó xảy ra để sống trong syswow64 (d) subdir. Điều này mang lại cho bạn cơ hội để đặt phiên bản độc hại của bạn trong a), b) hoặc c) và nó sẽ được tải vào ứng dụng tự động bất cứ khi nào ứng dụng yêu cầu bar.dll. Và bây giờ foo của bạn là tốt và trully bar'd.

Như đã nêu trước đó, ngay cả một đường dẫn tuyệt đối đầy đủ không thể bảo vệ chống lại điều này, nếu bạn có thể thay thế DLL bằng phiên bản của riêng bạn.

Và tất nhiên, điều này cũng không thực sự bị giới hạn đối với Windows. Bất kỳ hệ điều hành nào cho phép liên kết động các thư viện bên ngoài về mặt lý thuyết đều dễ bị tổn thương đến điều này.

7

DLL Hijacking thực sự là một khái niệm đơn giản.

Ứng dụng tải mã bên ngoài qua DLL (Thư viện liên kết động). DLL Highjacking là một quá trình mà mã độc hại được tiêm vào một ứng dụng thông qua một DLL độc hại có cùng tên với một DLL được ứng dụng sử dụng.

Một ứng dụng dễ bị tấn công DLL tùy thuộc vào cách chúng tham khảo các tệp DLL của chúng. Một ví dụ là sử dụng đường dẫn tương đối thay vì đường dẫn tuyệt đối cho DLL. Một thứ khác đang tải DLL bằng cách sử dụng các biến môi trường có thể không được đặt đúng trong trường hợp thư mục mặc định là đường dẫn tương đối của ứng dụng thực thi.

Các vấn đề liên quan