Honneypot cho malware trên các thiết bị lưu trữ USB (P2)
Tin tức - Ngày đăng : 20:55, 03/11/2015
Thực hiện
Phần này sẽ thảo luận về cách hệ thống đã đề xuất ở phần trước có thể thực hiện được. Hệ thống mục tiêu được xây dựng trên hệ điều hành Windows XP, việc lựa chọn này xuất phát từ các nguyên nhân: Là hệ điều hành vẫn được sử dụng phổ biến trên thế giới, có nhiều lỗ hổng và là mục tiêu ưu thích của malware. Tuy nhiên, phần code có thể được mở rộng để có thể hoạt động trên các phiên bản hệ điều hành Windows khác.
Những thách thức của việc thực hiện một USB ảo bao gồm hai phần: Thứ nhất, đó là một dạng lưu trữ ảo, ví dụ như là một thiết bị lưu trữ được mô phỏng để hỗ trợ các file ảnh (image file). Ứng dụng phải có khả năng đọc và ghi từ thiết bị ảo. Thứ hai, thiết bị ảo này phải giống một thiết bị lưu trữ di động để bất kỳ ứng dụng nào cũng có thể truy vấn thông tin về nó. Vấn đề là các giải pháp có sẵn không có tính linh hoạt, ví dụ như công cụ FileDisk chỉ có thể mô phỏng được ổ cứng mà không mô phỏng được các thiết bị lưu trữ di động. Tất nhiên, hoạt động của honeypot phải đủ phức tạp để cung cấp đủ chức năng nhưng với yêu cầu là không được phức tạp quá. Vì vậy, một cách tiếp cận khác được xem xét để đạt được hai yếu tố như trên: mô phỏng sự lưu trữ và làm cho nó trông giống có tính di động (removable).
Microsoft cung cấp Device Simulation Framework, một khung phần mềm có thể dễ dàng mô phỏng các thiết bị như USB. Nó cho phép thực thi các đoạn code mô phỏng trong chế độ người dùng (user mode) và biên dịch đến kernel bằng một trình điều khiển tùy chỉnh. Tuy nhiên, mục đích chính của Framework này là dùng để kiểm tra các trình điều khiển (driver). Ngoài ra, nó đòi hỏi việc thực hiện của các thiết bị mô phỏng ở mức rất thấp. Điều này là không cần thiết cho các lý thuyết đã được trình bày ở phần trên.
Hơn nữa, vấn đề cấp phép sẽ phải được xem xét nếu Device Simulation Framework là một phần của honeypot, đây có vẻ là một lựa chọn không có tính
thực tế.
Đầu tiên, các malware phải có khả năng phát hiện các thiết bị USB mỗi khi U
SB được cắm vào. Cách phổ biến là dựa vào hàm WM_ DEVICECHANGE. Hệ điều hành sẽ gọi hàm đó mỗi khi thiết bị mới cắm vào, chương trình nhận dựa vào các tham số đầu ra để kết luận đây có phải là các thiết bị lưu trữ di động hay không (Hình 2). Virus Conficker [3] và Stuxnet [1] sử dụng công nghệ này. Cách khác ít được sử dụng hơn đó là malware thường xuyên truy vấn tất cả tên ổ đĩa (thường từ C: đến Z:) để từ đó phát hiện một thiết bị mới cắm vào. Cách này có nhược điểm là truy vấn ngay cả khi không có thiết bị mới cắm vào và do đó dễ bị phát hiện.
Trước khi tìm hiểu cách tạo ra một thiết bị ảo như vậy, chúng ta phải tìm hiểu cách thức xử lý các thiết bị của nhân Windows (Windows kernel). Mỗi thiết bị được biểu diễn là một đối tượng và mỗi đối tượng được quản lý bởi trình điều khiển của thiết bị đó. Mỗi khi có một kết nối của một thiết bị mới, Windows sẽ quyết định trình điều khiển nào được nạp vào dựa vào định danh thiết bị mới được kết nối đó. Các đối tượng và các trình điều khiển liên quan được sắp xếp dưới dạng ngăn xếp (Stack). Thông thường các thiết bị lưu trữ như USB và các hệ thống có liên quan bên trong được sắp xếp ở đáy ngăn xếp, còn đỉnh ngăn xếp là trình điểu khiển file hệ thống.
Mục tiêu là tạo ra được thiết bị như có thể tháo rời khỏi hệ điều hành. Tính năng "tháo rời“ này trong Windows được thiết lập bởi trình điều khiển ổ đĩa (disk driver), nó xác định xem một thiết bị lưu trữ là di động hay không. Một thiết bị ảo phải hoạt động như một trình điều khiển Windows, hoạt động cùng lớp với trình điều khiển ổ đĩa và để cờ của thiết bị ảo này là "removable“: ghostdrive.sys. Hình 3 sẽ so sánh ngăn xếp các trình điều khiển của một thiết bị lưu trữ USB thật và của thiết bị ảo tạo ra. Trình điều khiển ghostdrive.sys sẽ thay thế trình điều khiển ổ đĩa cho các thiết bị USB ảo và phải đảm bảo rằng, chúng được đảm nhận gửi các thông tin về các thiết bị lưu trữ di động lên trình điều khiển ở mức cao hơn.
Trình điều khiển thứ hai trong Hình 3 đó là ghostbus.sys. Trình điều khiển này liên quan đến liệt kê thiết bị (device enumeration) tức là một thiết bị mới phải khai báo với nhân Windows để nạp các trình điều khiển. Tiến trình này được gọi là device enumeration. Đối với các trình điều khiển phù hợp với Windows Driver Model [7] thì sẽ có hai lựa chọn:
1.Một thiết bị có thể là root-enumerationed. Theo đó, thiết bị với một định danh xác định được mặc định là khởi động cùng hệ thống đồng thời nạp các trình điều khiển yêu cầu. Trình điều khiển bus PCI là một ví dụ cho trình điều khiển được nạp theo cách này.
2.Thiết bị có thể được liệt kê bởi các đối tượng thiết bị khác (bus enumeration). Nếu trình điều khiển của một thiết bị đang tồn tại tạo ra một một đối tượng thiết bị mới thì sau đó Windows sẽ nạp các trình điều khiển tương ứng. Rõ ràng, một chuỗi sự liệt kê phải xuất phát từ một nơi nào đó và đó chính là root-enumeration.
Các ổ đĩa USB ảo được thiết kế sao cho có khả năng mount theo nhu cầu, vì vậy trình điều khiển của nó không nên được nạp vào khi máy tính khởi động. Đây chính là giải pháp của trình điều khiển thứ hai, ghostbus.sys: nó được nạp bởi root-enumeration và có thể báo cáo khi có một thiết bị USB mới cắm vào theo nhu cầu với chức năng của một bus ảo. Vì vậy, bất cứ khi nào muốn mount một thiết bị ảo thì phải ra lệnh để bus ảo này báo cáo về thiết bị mới đó với một định danh thiết bị mà sau đó Windows sẽ nạp trình điều khiển ghostdrive.sys. Hình 4 cho thấy cấu trúc tổng thể của việc thực hiện như đã mô tả.
Việc phát hiện sự lây nhiễm và chụp lại các mẫu malware hoạt động như sau: Trình điều khiển bus ảo được hướng dẫn để nạp các thiết bị lưu trữ ảo, sẽ báo cáo với hệ thống là có một thiết bị di động. Malware sau khi phát hiện một thiết bị USB cắm vào sẽ lây nhiễm sang thiết bị đó bằng ghi dữ liệu lên trên đó. Yêu cầu ghi dữ liệu của malware được chuyển xuống ngăn xếp trình điều khiển và cuối cùng chuyển qua trình điều khiển của bộ nhớ ảo, ghostdrive. sys. Tại đây đọc các yêu cầu malware và
giải quyết chúng đồng thời ghi tất cả dữ liệu vào một file ảnh để phân tích sau đó.
Sẽ là tốt hơn nếu ta phân tích nội dung của các thiết bị ảo trực tiếp trên honeypot nhưng phải chú ý:trong trường hợp máy tính bị lây nhiễm, một số loại malware có khả năng cài đặt các rootkit để ẩn các tiến trình trong hệ thống. Vì vậy, việc sử dụng các API thông thường có thể đem lại kết quả không chính xác.
ĐÁNH GIÁ
Phần này sẽ đánh giá các đề xuất dựa vào việc thực hiện đã trình bày ở trên. Tất cả các đánh giá được thực hiện trên Windows XP SP2. Các mẫu malware dành cho thử nghiệm yêu cầu là cách thức lây nhiễm lên các thiết bị USB là đáng tin cậy và có thể kiểm tra được. Trong trường hợp này là Conficker, loại malware phổ biến với hoạt động tinh vi.
Tham số đánh giá như phân tích ở trên là thời gian mount thiết bị ảo. Kết quả thử nghiệm được gọi là thành công nếu các file ghi vào thiết bị ảo được kiểm tra là trùng khớp với thiết bị USB thật.
Theo kết quả thử nghiệm ở [9] thì thời gian mount chậm nhất là 35s, thời gian trung bình là 7.9s. Trong một số trượng hợp, một số mẫu Conficker có thời gian mount dưới 1s.
Thực tế chỉ ra:
1.Không có mẫu malware nào có khả năng phát hiện thiết bị ảo và thiết bị thật.
2.Thời gian mount là đủ nhỏ để ẩn các tiến trình đối với người dùng, do đó tránh đường các trường hợp nghi không mong muốn lên các thiết bị ảo.
KẾT LUẬN
Bài báo đã giới thiệu các lý thuyết về honeypot để thu thập các mẫu malware phát tán qua các thiết bị lưu trữ USB. Kết quả đánh giá cho thấy các malware phức tạp cũng không có khả năng phát hiện honeypot từ bất kỳ mục tiêu bị lây nhiễm nào khác. Vì vậy, có thể đưa ra kết luận rằng phương pháp này là phù hợp để phát hiện sự lây nhiễm trên máy tính và thu thập các mẫu malware. Đối với các tổ chức thì có thể dùng giải pháp này để tìm hiểu sự lây nhiễm lên máy tính của họ khi các tuyến phòng thủ trước đó gặp thất bại và do đó có thể coi đây là một hệ thống phát hiện xâm nhập (IDS) đáng tin cậy.
Tài liệu tham khảo
[1].N. FALLIERE, L. MURCHU, and E. CHIEN, “W32. stuxnet abss/ie/'Symantec Security Response.
[2].McAfee Labs, “Mcafee threats report: Fourth quarter 2011,”
2011.
[3].Symantec, ‘The dowradup codex,”Symantec, Tech. Rep., 2009.
[4].F. LEDER and T. WERNER, ‘Knowyour enemy: Containing conficker,” The Honeynet Project, University of Bonn, Germany, Tech. Rep, 2009.
[5].Kaspersky, "Flame: Bunny, frog, munch andbeetleju'ice...” [Online]. Available: https://www.securelist.com/en/blog?weblogid =208193538#w208193538.
[6].Microsoft, "Microsoft security intelligence report.”[Online]. Available: http://www.microsoft.com/sir.
[7].Microsoft, "Introductm to wdm.”[Online]. Available: http://msdn.microsoft.com/en-us/library/
ff548158(v=VS.85).aspx.
[8]. Microsoft, “Device object example for a usb mass storage device.”[Online]. Available:
http://msdn.microsoft.com/en-us/library/
ff552547(v=VS.84).aspx.
[9].SEBASTIAN POEPLAU, JAN GASSEN “A Honeypot for Arbitrary Malware on USB Storage Devices”.
KS. Lê Văn Ứng
(TCTTTT Kỳ 2/4/2014)