Các cuộc tấn công, ngăn chặn và phát hiện lỗ hổng bảo mật DLL chiếm đoạt

DLL là viết tắt của Dynamic Link Libraries và là các phần bên ngoài của các ứng dụng chạy trên Windows hoặc bất kỳ hệ điều hành nào khác. Hầu hết các ứng dụng đều không hoàn chỉnh và lưu mã trong các tệp khác nhau. Nếu cần mã, tệp liên quan sẽ được tải vào bộ nhớ và được sử dụng. Điều này làm giảm kích thước tệp ứng dụng trong khi tối ưu hóa việc sử dụng RAM . Bài viết này giải thích DLL Hijacking là gì và cách phát hiện và ngăn chặn nó.

Tệp(Files) DLL hoặc Thư viện liên kết động là gì(Dynamic Link Libraries)

DLL Hijacking

Các tệp DLL(DLL)Thư viện liên kết động(Dynamic Link Libraries) và như rõ ràng theo tên, là phần mở rộng của các ứng dụng khác nhau. Bất kỳ ứng dụng nào chúng tôi sử dụng đều có thể sử dụng hoặc không sử dụng một số mã nhất định. Các mã như vậy được lưu trữ trong các tệp khác nhau và chỉ được gọi hoặc tải vào RAM khi mã liên quan được yêu cầu. Do đó, nó giúp lưu một tệp ứng dụng không trở nên quá lớn và ngăn ứng dụng hoạt động tài nguyên.

Đường dẫn cho tệp DLL(DLL) được đặt bởi hệ điều hành Windows . Đường dẫn được đặt bằng các Biến Môi trường Toàn cầu(Global Environmental Variables) . Theo mặc định, nếu một ứng dụng yêu cầu tệp DLL(DLL) , hệ điều hành sẽ xem xét cùng một thư mục mà ứng dụng được lưu trữ. Nếu nó không được tìm thấy ở đó, nó sẽ chuyển đến các thư mục khác như được thiết lập bởi các biến toàn cục. Có các ưu tiên gắn liền với các đường dẫn và nó giúp Windows xác định thư mục nào cần tìm các tệp DLL(DLLs) . Đây là lúc mà hành vi chiếm quyền điều khiển DLL xuất hiện.

DLL Hijacking là gì

DLL(DLLs) là phần mở rộng và cần thiết để sử dụng hầu hết tất cả các ứng dụng trên máy của bạn nên chúng hiện diện trên máy tính trong các thư mục khác nhau như đã giải thích. Nếu tệp DLL gốc bị thay thế bằng tệp DLL giả mạo có chứa mã độc hại, nó được gọi là DLL Hijacking .

Như đã đề cập trước đó, có những ưu tiên về nơi hệ điều hành tìm kiếm các tệp DLL . Đầu tiên(First) , nó tìm kiếm trong cùng một thư mục với thư mục ứng dụng và sau đó đi tìm kiếm, dựa trên các mức độ ưu tiên được thiết lập bởi các biến môi trường của hệ điều hành. Vì vậy, nếu tệp good.dll nằm trong thư mục SysWOW64 và ai đó đặt bad.dll trong thư mục có mức ưu tiên cao hơn so với thư mục SysWOW64 , hệ điều hành sẽ sử dụng tệp bad.dll, vì nó có cùng tên với DLL do ứng dụng yêu cầu. Khi ở trong RAM , nó có thể thực thi mã độc hại có trong tệp và có thể xâm phạm máy tính hoặc mạng của bạn.

Cách phát hiện DLL Hijacking

Phương pháp dễ nhất để phát hiện và ngăn chặn việc chiếm quyền điều khiển DLL là sử dụng các công cụ của bên thứ ba. (DLL)Có một số công cụ miễn phí tốt có sẵn trên thị trường giúp phát hiện và ngăn chặn hành vi hack DLL .

Một trong những chương trình như vậy là DLL Hijack Auditor nhưng nó chỉ hỗ trợ các ứng dụng 32-bit. Bạn có thể cài đặt nó trên máy tính và quét tất cả các ứng dụng Windows của mình để xem tất cả các ứng dụng nào dễ bị tấn công DLL . Giao diện đơn giản và dễ hiểu. Hạn chế duy nhất của ứng dụng này là bạn không thể quét các ứng dụng 64-bit.

Một chương trình khác, để phát hiện chiếm quyền điều khiển DLLDLL_HIJACK_DETECT, có sẵn qua GitHub . Chương trình này kiểm tra các ứng dụng để xem có ứng dụng nào dễ bị tấn công DLL hay không. Nếu đúng, chương trình sẽ thông báo cho người dùng. Ứng dụng này có hai phiên bản - x86 và x64 để bạn có thể sử dụng mỗi phiên bản để quét cả ứng dụng 32 bit và 64 bit tương ứng.

Cần lưu ý rằng các chương trình trên chỉ quét các ứng dụng trên nền tảng Windows để tìm (Windows)lỗ hổng và không thực sự ngăn chặn việc chiếm đoạt các tệp DLL(DLL) .

Cách ngăn chặn DLL Hijacking

Vấn đề này nên được các lập trình viên giải quyết ngay từ đầu vì bạn không thể làm được gì nhiều ngoài việc củng cố hệ thống bảo mật của mình. Nếu thay vì một đường dẫn tương đối, các lập trình viên bắt đầu sử dụng một đường dẫn tuyệt đối, thì lỗ hổng sẽ được giảm bớt. Đọc đường dẫn tuyệt đối, Windows hoặc bất kỳ hệ điều hành nào khác sẽ không phụ thuộc vào các biến hệ thống cho đường dẫn và sẽ đi thẳng đến (Windows)DLL dự định , do đó loại bỏ cơ hội tải DLL cùng tên trong một đường dẫn có mức độ ưu tiên cao hơn. Phương pháp này cũng không chống được lỗi vì nếu hệ thống bị xâm phạm và tội phạm mạng biết đường dẫn chính xác của DLL , chúng sẽ thay thế DLL gốc bằng DLL (DLL)giả(DLL) .. Đó sẽ là việc ghi đè lên tệp để DLL(DLL) ban đầu bị thay đổi thành mã độc hại. Nhưng một lần nữa, tội phạm mạng sẽ cần biết chính xác đường dẫn tuyệt đối được đề cập trong ứng dụng gọi DLL . Quá trình này rất khó khăn đối với tội phạm mạng và do đó có thể được tính đến.

Quay lại với những gì bạn có thể làm, chỉ cần cố gắng mở rộng hệ thống bảo mật để bảo mật hệ thống Windows của bạn(secure your Windows system) tốt hơn . Sử dụng tường lửa(firewall) tốt . Nếu có thể, hãy sử dụng tường lửa phần cứng hoặc bật tường lửa bộ định tuyến. Sử dụng hệ thống phát hiện xâm nhập tốt để bạn biết liệu có ai đang cố gắng chơi với máy tính của bạn hay không.

Nếu bạn đang khắc phục sự cố máy tính, bạn cũng có thể thực hiện các thao tác sau để tăng cường bảo mật của mình:

  1. Tắt tải DLL từ chia sẻ mạng từ xa
  2. Tắt tải tệp DLL(DLL) từ WebDAV
  3. Tắt hoàn toàn dịch vụ WebClient hoặc đặt nó thành thủ công
  4. Chặn(Block) các cổng TCP 445 và 139 vì chúng được sử dụng nhiều nhất để xâm phạm máy tính
  5. Cài đặt các bản cập nhật mới nhất cho hệ điều hành và phần mềm bảo mật.

Microsoft đã phát hành một công cụ để chặn các cuộc tấn công chiếm quyền điều khiển tải DLL . Công cụ này giảm thiểu nguy cơ tấn công chiếm quyền điều khiển DLL bằng cách ngăn các ứng dụng tải mã không an toàn từ các tệp DLL .

Nếu bạn muốn bổ sung điều gì cho bài viết, hãy comment bên dưới.(If you would like to add anything to the article, please comment below.)



About the author

Tôi là một lập trình viên máy tính và đã có hơn 15 năm. Kỹ năng của tôi nằm ở việc phát triển và duy trì các ứng dụng phần mềm, cũng như cung cấp hỗ trợ kỹ thuật cho các ứng dụng đó. Tôi cũng đã dạy lập trình máy tính cho học sinh trung học và hiện đang là một giảng viên chuyên nghiệp.



Related posts