Làm thế nào để bảo vệ chống lại những 3 kỹ thuật:
CreateRemoteThread
Bạn có thể ngăn các kỹ thuật đầu tiên (CreateRemoteThread trong đó kêu gọi LoadLibrary) bằng cách hooking LoadLibrary. Trong hook của bạn, bạn kiểm tra danh sách các tên DLL mà bạn biết là một phần của quá trình và có thể được tải, hoặc bạn có thể kiểm tra danh sách các DLL đã biết mà bạn không muốn tải.
Khi bạn tìm thấy một DLL bạn không muốn tải SetLastError (ERROR_ACCESS_DENIED), sau đó trả về NULL. Tôi đặt lỗi cuối cùng để những người viết mã tìm kiếm mã lỗi có được một lỗi. Điều này dường như hoạt động, có lẽ một mã khác có thể phù hợp hơn.
Điều đó sẽ ngăn không cho DLL tải.
SetWindowsHookEx
Tôi nghĩ rằng kỹ thuật tương tự cho CreateRemoteThread chặn sẽ làm việc cho SetWindowsHookEx, nhưng chỉ khi bạn có thể móc của bạn được cài đặt trước khi kỹ thuật SetWindowsHookEx đã bắt đầu nạp mã của nó (mà thường là khi cửa sổ đầu tiên được tạo ra trong một ứng dụng - quá sớm trong cuộc đời của nó).
Mã Cave
Kỹ thuật hay. Không thấy trước đó. Bạn có thể bảo vệ chống lại điều này, nhưng bạn sẽ phải móc điểm nhập LoadLibrary (không phải bảng IAT) vì Code Cave gọi LoadLibrary trực tiếp.
Là tác giả của bài viết đã nhận xét - có nhiều cách bạn có thể bị tấn công và có thể bạn sẽ gặp khó khăn trong việc đánh bại tất cả chúng. Nhưng thường bạn chỉ muốn bảo vệ chống lại tải DLL nhất định (chẳng hạn như một DLL bên thứ 3 cụ thể không tương thích với phần mềm của bạn vì DLL của bên thứ ba không được viết đúng để chứa thực tế là móc khác cũng có thể có mặt, vì vậy bạn chặn nó từ tải).
Nguồn
2010-04-07 09:40:37
Mặc dù đúng là nó sẽ không thể ngăn chặn TẤT CẢ tin tặc, tôi chỉ muốn ngăn chặn ba kỹ thuật được liệt kê đó. Đây là những lệnh nhất, và kỹ thuật một là sử dụng gần như độc quyền nhưng phần lớn các leechers và kịch bản kiddies. Chỉ cần FYI, mã nằm trong một dll được tiêm, vì vậy tất cả những gì tôi muốn làm là đảm bảo rằng khi tôi ở trong, không ai khác có thể vào được. –
Hãy nhớ bạn, Khóa tải là một nguồn tài nguyên toàn cầu, và nắm bắt nó (là | phải là) cơ sở để chấm dứt ngay lập tức. – MSalters
"tất cả đều có khả năng sử dụng DLL injection để cung cấp chức năng bổ sung cho bất kỳ chương trình nào" - và, thường xuyên hơn không, để làm hỏng nó (với chương trình đang được tiêm vào, bị đổ lỗi cho sự cố bởi người dùng không nghi ngờ). –