YOMEDIA
Phân tích các tấn công chiếm quyền điều khiển DLL
Chia sẻ: Gia Hà Linh
| Ngày:
| Loại File: PDF
| Số trang:9
139
lượt xem
35
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
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. Cho đến cuối tháng 8 năm 2010, 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...
AMBIENT/
Chủ đề:
Nội dung Text: Phân tích các tấn công chiếm quyền điều khiển DLL
- Phân tích các tấn công chiếm quyền điều
khiển DLL
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.
Cho đến cuối tháng 8 năm 2010, 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.
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ó.
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
ERROR:connection to 10.20.1.98:9315 failed (errno=111, msg=Connection refused)
ERROR:connection to 10.20.1.98:9315 failed (errno=111, msg=Connection refused)
Đang xử lý...