Trong bài này chúng tôi sẽ giới thiệu cho các  bạn các lỗi trong kiến trúc phần mềm có thể bị tấn công chiếm quyền  điều khiển DLL, cách phát hiện các ứng dụng có lỗ hổng hay không và cuối  cùng là các bước thực hiện để bảo đảm tránh được các tấn công kiểu này. 
Trước đây, các nhà nghiên cứu bảo  mật đã tiết lộ các thông tin chi tiết về một lớp lỗ hổng bảo mật mà  theo họ đã có một số ảnh hưởng khá rộng. Họ đã phát hiện ra hàng trăm  ứng dụng bị hổng trước các tấn công này và tấn công này được đặt tên là  chiếm quyền điều khiển DLL (DLL Hijacking). Trong bài này chúng tôi sẽ  giới thiệu cho cá bạn một số lỗi về kiến trúc phần mềm có thể bị ảnh  hưởng bởi các tấn công này, thêm vào đó là cách cách phát hiện các ứng  dụng có lỗ hổng hay không và cuối cùng là các bước thực hiện để bảo đảm  tránh được các tấn công kiểu này.
Cách tấn công
DLL hijacking có thể được thực hiện là vì tất cả các  ứng dụng Windows đều dựa vào các thư viện liên kết động (viết tắt DLL)  với tư cách là những phần trong chức năng lõi của chúng. Các file DLL  được các chuyên gia phát triển phần mềm viết và triệu gọi bên trong các  ứng dụng của họ nhằm thực hiện các chức năng khác nhau. Bản thân Windows  cũng dựa trên kiểu kiến trúc như vậy và có chứa vô số file DLL để thực  hiện rất nhiều chức năng khác nhau.
| Tài Liệu CEH Tiếng Việt  Biên soạn : Nguyen Tran Tuong Vinh. eLab Bang Tran Ngoc Giá bán: 100.000 VNĐ  |         
Cùng với các file DLL có trong hệ điều hành Windows,  các chuyên gia phát triển ứng dụng cũng thường viết riêng các file DLL  của họ để thực hiện một số chức bởi chương trình. Khi viết xong, các  file DLL sẽ được đóng gói và được cài đặt cùng với ứng dụng. Vấn đề nảy  sinh theo cách các ứng dụng load các file DLL này. Mặc định, khi một ứng  dụng không có đường dẫn được định nghĩa cố định để chỉ đến một file DLL  nào đó mà nó yêu cầu thì ứng dụng này sẽ thực hiện hành động tìm kiếm  động. Trong quá trình thực hiện tìm kiếm, đầu tiên ứng dụng sẽ tìm kiếm  trong thư mục mà trước đó nó được thực thi, sau đó sẽ tìm kiếm thư mục  hệ thống, thư mục hệ thống 16-bit, thư mục Windows, thư mục hiện hành và  sau đó là các thư mục được liệt trong biến môi trường PATH của hệ điều  hành. Trong tìm kiếm các đường dẫn này, ứng dụng sẽ sử dụng DLL mà nó  tìm thấy đầu tiên.
Với các kiến thức cơ bản trên, hãy hình dung một kịch  bản mà ở đó chúng ta đã thực thi một ứng dụng phải thực hiện tìm kiếm  động một DLL. Ứng dụng sẽ ngay lập tức tìm kiếm đường dẫn mà nó được  thực thi trước đó và tìm ra một dll trùng khớp. Tuy nhiên với người  dùng, DLL thực có liên quan với ứng dụng nằm trong thư mục Windows  system. DLL được đặt trong thư mục với ứng dụng là DLL đã được điều  chỉnh bởi một kẻ tấn công nhằm truy cập từ xa vào hệ thống. Rõ ràng, ứng  dụng sẽ không thể tìm ra được DLL thực vì nó đã tìm thấy DLL trùng khớp  mà nó cần tìm.
Nhận dạng các ứng dụng có lỗ hổng
Vấn đề lớn nhất với các tấn công DLL hijacking là  Microsoft không thể phát hành bản vá để có thể vá được tất cả các ứng  dụng có lỗ hổng. Điều này là vì nếu tung ra một bản vá như vậy sẽ làm  cho một số ứng dụng bị vô hiệu hóa. Chính vì vậy việc khắc phục vấn đề  sẽ liên quan đến cả hai bên. Đầu tiên, các công ty và chuyên gia phát  triển phần mềm, người đã tạo các ứng dụng có lỗ hổng phải sửa code của  họ và cung cấp các bản cập nhật đến người dùng. Tiếp đến, người dùng  (các quản trị viên hệ thống) phải xác định xem liệu mạng của họ có đang  sử dụng các ứng dụng có lỗ hổng hay không, tìm ra và cài đặt các bản vá  được các hãng cung cấp.
Có một số cách có thể phát hiện liệu bạn có đang sử  dụng ứng dụng có lỗ hổng hay không. Phương pháp đơn giản nhất là kiểm  tra các tài nguyên công cộng được post bởi các nhà nghiên cứu bảo mật và  xem ứng dụng của bạn có tồn tại ở đó hay không. Bạn có thể tìm kiếm các  tài nguyên như vậy ở đây. 
Hình 1: Danh sách các ứng dụng có lỗ hổng
Phương pháp thứ hai yêu cầu thêm một số công việc vì  những gì cần được thực hiện sẽ xảy ra trong các môi trường bảo mật cao.  Rất có thể bạn sẽ nghĩ phương pháp này đòi hỏi phải có hiểu biết kỹ  thuật và chỉ dành cho các chuyên gia bảo mật mức cao. Tuy nhiên không  phải như vậy, chuyên gia bảo mật HD Moore đã biết tầm quan trọng của tấn  công này và đã phát triển một bộ kit thẩm định (auditing kit), đây là  bộ kit có thể được sử dụng để tìm kiếm các ứng dụng có lỗ hổng trong một  hệ thống nào đó.
Bộ kit này có tên gọi DllHijackAuditKitv2 và được cung cấp tại đây.  Khi download xong, bạn cần đăng nhập với tư cách quản trị viên hệ  thống, bung các nội dung của file nén ZIP và thực thi file  01_StartAudit.bat. Kịch bản này sẽ download Sysinternals Process Monitor  và bắt đầu thực hiện việc kiểm tra hệ thống để tìm ra các ứng dụng có  lỗ hổng. Trong quá trình chạy nếu việc download Process Monitor thất bại  thì bạn có thể download nó trực tiếp từ đây.  Khi đã download, bảo đảm cho Process Monitor nằm trong cùng thư mục với  các kịch bản thẩm định. Kịch bản thẩm định ban đầu sẽ mất khá nhiều  thời gian để chạy. Phụ thuộc vào số lượng ứng dụng trên hệ thống mà việc  thẩm định có thể mất từ 15 phút đến hàng giờ.
Hình 2: Kiểm tra thẩm định ứng dụng có liên quan với phần mở rộng file
Sau khi kịch bản thẩm định hoàn tất sự thực thi của  nó, bạn phải chuyển qua ứng dụng kiểm tra quá trình đã xuất hiện bởi  kịch bản và lưu báo cáo mà nó tạo ra. Kích File và Save để thực hiện  việc đó. Bảo đảm lưu file ở định dạng CSV với tên Logfile.CSV trong thư  mục audit kit.
Tiếp đến, chạy kịch bản 02_Analyze.bat. Kịch  bản này sẽ phân tích cú pháp file CSV và tìm ra các lỗ hổng tiềm tàng.  Nếu có lỗ hổng nào đó được phát hiện, ứng dụng sẽ tạo một mã khai thác  để minh chứng cho lỗ hổng.
Hình 3: Kịch bản thứ hai cố gắng khai thác các lỗ hổng tiềm tàng đã được phát hiện
Cuối cùng, nhắc lệnh bên trái được mở bởi kịch bản sẽ  liệt kê các ứng dụng đã bị khai thác thành công. Với một ứng dụng có  thể bị khai thác, kịch bản sẽ tạo một thư mục con bên dưới thư mục khai  thác. Các thư mục con này sẽ chứa các khai thác đang làm việc cho các  ứng dụng bị ảnh hưởng. Các khai thác sẽ thực hiện những thứ như khởi  chạy các command shell và các bộ lắng nghe backdoor. Đây chính là bằng  chứng về các khai thác vì chúng khởi chạy file calc.exe.
Các thông tin này sẽ rất có ích cho bạn trong việc phát hiện xem mình có sử dụng các ứng dụng có lỗ hổng hay không.
Ngăn chặn tấn công
Trong khi đợi các bản vá phần mềm, có một số thứ bạn  có thể thực hiện để hạn chế việc lộ diện của bạn trước các tấn công DLL  hijacking.
Sử dụng bản vá CWDIllegalInDllSearch
Đáp trả ban đầu bởi Microsoft cho lớp các lỗ hổng này  là thay đổi registry qua việc thay đổi cách load các DLL nhằm giảm nhẹ  tấn công. Bản vá đã được triển khai rất cẩn thận vì nó có thể phá vỡ  chức năng hoạt động của các ứng dụng đã cài đặt, tuy nhiên cũng nên test  nếu bạn quan tâm đến kiểu tấn công này. Bạn có thể đọc thêm về bản vá ở đây.
Khóa Outbound SMB vành đai
Hầu hết các tổ chức đã thực hiện điều này, còn nếu  bạn chưa thực hiện thì đây là thời điểm tốt để làm điều đó. Điều này  cũng giúp bạn tránh được một số kiểu tấn công khác.
Hủy bỏ cài đặt phần mềm có lỗ hổng
Cách thức này không phải lúc nào cũng khả thi, tuy  nhiên nếu bạn đang sử dụng một ứng dụng có lỗ hổng và có thể dễ dàng  thay thế thì công việc mà bạn cần thực hiện để bảo đảm sự an toàn là  chuyển đổi ứng dụng.  
Triển khai phần phềm phát hiện xâm nhập (IDS)
Trong một số trường hợp không thể giảm nhẹ tấn công  thì tốt nhất là tìm ra kẻ tấn công trong sau khai thác. Sử dụng các công  cụ phát hiện xâm phạm miễn phí như Snort, bạn có thể phát hiện các dấu  hiệu của hành động tấn công mà ai đó đã khai thác trên máy tính có lổ  hổng.
Kết luận
Sự xuất hiện của rất nhiều lỗ hổng DLL hijacking đã  tạo ra một kịch bản đáng quan tâm vì thực tế chúng ta không thể phát  hành một bản vá cho hệ điều hành để có thể vá một loạt các ứng dụng.  Cách tốt nhất bạn có thể thực hiện là bảo đảm rằng mình biết và có kiến  thức về cách làm việc của kiểu tấn công này, biết cách test xem nó có  tồn tại trên các ứng dụng mà bạn đang sử dụng trong mạng của mình hay  không, tiếp đó cần phải nhận các thông tin đúng từ những người có thể  cấp bản vá để sửa nó. Theo Windowsecurity/QTM






0 nhận xét:
Đăng nhận xét