Hướng dẫn phân tích mã độc hoạt động ở mức nhân hệ điều hành - Kernel Mode Rootkit

Malware

Wh------
08/01/2015
41
56 bài viết
Hướng dẫn phân tích mã độc hoạt động ở mức nhân hệ điều hành - Kernel Mode Rootkit
Chào các bạn, trong các bài viết trước mình đã giới thiệu với các bạn các kỹ thuật phân tích mã độc trên môi trường Windows, mã độc chạy trên trình duyệt và mã độc trên nền tảng Android. Hôm nay mình sẽ thiệu với các bạn phương pháp phân tích một loại mã độc đặc biệt, hoạt động ở mức nhân của hệ điều hành, Rootkit. Đầu tiên chúng ta hãy cùng làm rõ khái niệm về rootkit và mục đích của rootkit.

I. Rootkit là gì ?

1.1. Định nghĩa về Rootkit

Rootkit là từ xuất phát từ hệ điều hành UNIX, nơi mà từ ‘root’ được dùng để chỉ vị trí điều hành cao nhất trên hệ thống, còn ‘kit’ nghĩa là bộ công cụ được sử dụng cho mục đích nào đó. Rootkit là thuật ngữ được dùng để chỉ tập hợp các chương trình hay mã lệnh có khả năng kiểm soát hệ thống nhưng không bị phát hiện theo cách bình thường. Nói cách khác rootkit là những mã lệnh hay chương trình có khả năng kiểm soát một máy tính mà người dùng không bao giờ hoặc khó có thể phát hiện ra được.
Và theo đó, khi rootkit kết hợp với các kĩ thuật phá hoại của các malware thông thường thì hậu quả rất lớn vì người sử dụng sẽ không phát hiện được sự tồn tại của malware để biết máy tính của mình có bị lây nhiễm hay không, cả khi đã nghi ngờ máy tĩnh của mình đang nhiễm malware.
1.2. Mục đích của rootkit

Rootkit có hai mục đích tồn tại sau:
- Che dấu: Nó che dấu sự tồn tại của nó (hay một đối tượng xác định khác) trong hệ thống. Một đối tượng trong hệ thống được biểu hiện bằng các process, module, thread, … cho nên mục tiêu che dấu của Rootkit cũng chính là các đối tượng này.
- Bảo vệ: Bảo vệ rootkit, chống lại việc người sử dụng ngừng hoạt động của Rootkit.

II. Phương pháp phân tích rootkit:
Có 2 phương pháp phân tích rootkit:
- Phân tích tĩnh - Static Analysic: Phương pháp phân tích tĩnh rootkit tương tự như phân tích mã độc thông thường , ta có thể sử dụng các công cụ như: CFF Explorer, IDA, …. Chỉ lưu ý đó là rootkit sử dụng các hàm Native API khác với các hàm API mà mã độc trên user-mode thường dùng.
- Phân tích động - Dynamic Analysic: Việc phân tích động rootkit có một điểm đặc biệt đó là ta không thể phân tích trực tiếp rootkit trên cùng 1 máy chạy chương trình debugger như mã độc thông thường, do việc break point ở mức kernel sẽ khiến cả hệ thống bị ngưng lại. Do đó cần phải cho rootkit thực thi trên 1 hệ thống riêng biệt với chương trình debugger. Một cách phổ biến và đơn giản đó là sử dụng máy ảo để thực thi rootkit, sau đó thiết lập một kênh liên lạc giữa máy thật và máy ảo, qua đó chương trình debugger có thể ra lệnh cho máy ảo thực thi lần lượt các lệnh, xem bộ nhớ, xem trạng thái các thanh ghi, …. Debugger được sử dụng phổ biến để phân tích động rootkit đó là WinDbg.

Trong phần sau mình sẽ giới thiệu với các bạn phương pháp phân tích một mẫu rootkit đơn giản bằng kỹ thuật phân tích tĩnh.

III. Phân tích chi tiết 1 mẫu rootkit:
Công cụ sử dụng: IDA
Thông tin mẫu:
MD5: 820AD1646C4DC3F1CA8081BC98C626AB
File name: ntqrk.sys
Yêu cầu đối với người phân tích: Có hiểu biết cơ bản về Windows Kernel, về device driver và sử dụng thành thạo công cụ IDA.
Tiến hành phân tích:
Load mẫu rootkit vào IDA, ta bắt đầu phân tích từ DriverEntry, là điểm bắt đầu thực thi (Entry Point) của một driver:
14899399411.png


DRIVER_OBJECT là cấu trúc lưu trữ các thông tin của một driver, trong đó có mảng các hàm MajorFunction, đây là các hàm sẽ xử lý các IRP được chuyển đến driver. IRP là gói tin dùng để trao đổi thông tin giữa các driver ở mức nhân hệ điều hành.
Chi tiết về DRIVER_OBJECT các bạn có thể tham khảo thêm tại link:
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
Chi tiết về IRP các bạn có thể tham khảo thêm tại link:
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

IoRegisterFsRegistrationChange là hàm đăng ký sự kiện khi một file system được đăng ký hoặc hủy đăng ký.
Chi tiết về hàm IoRegisterFsRegistrationChange các bạn có thể tham khảo thêm tại link:
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Sau khi làm rõ được các khái niệm trên, ta gán lại kiểu và và tên cho các hàm:
14899399412.png


Sau khi phân tích sơ bộ các hàm, ta thấy có 2 hàm thực hiện các chức năng chính của rootkit là hàm DispatchCreateFile hàm DriverNotificationRoutine. Tiếp theo ta sẽ phân tích kỹ hơn để làm rõ chức năng của 2 hàm này.

Phân tích hàm DispatchCreateFile:
14899399413.jpg


Ta thấy hàm DispatchCreateFile lấy thông tin tên file trong IRP và kiểm tra tên file, nếu chứa xâu “ntqrk” thì sẽ trả về mã lỗi STATUS_FILE_LOCK_CONFLICT, nếu không sẽ chuyển IRP cho Device tiếp theo trong stack xử lý.

Phân tích hàm DriverNotificationRoutine:
14899399414.png

14899399415.png


Ta thấy hàm DriverNotificationRoutine thực hiện nhiệm vụ mỗi khi có một file system được đăng ký với hệ thống, hàm sẽ tạo ra 1 Device và gắn vào Device Stack của File System đó để theo dõi các hành động liên quan đến file như: mở file, đọc file, ghi file, ….

Kết hợp 2 thông tin trên lại với nhau, ta rút ra được hoạt động của rootkit. Rootkit sẽ tiến hành “hook” vào tất cả file system để giám sát hành động mở file, và kiểm tra nếu mở file của rootkit thì sẽ trả về lỗi không mở được. Điều này giúp cho rootkit tự bảo vệ chính mình, chống lại việc người sử dụng xóa file của rootkit, khiến rootkit ngừng hoạt động.
1489939941c6.png

Hình ảnh minh họa khi ta thử xóa file của rootkit.

Trên đây là bài phân tích Rootkit cơ bản theo phương pháp phân tích rootkit tĩnh bằng IDA. Bài phân tích có thể còn nhiều thiếu sót, rất mong nhận được sự góp ý của các bạn !


Mau Rootkit.zip
pass giải nén : whitehat.vn
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Re: Hướng dẫn phân tích mã độc hoạt động ở mức nhân hệ điều hành - Kernel Mode Rootkit

Cái này có phải file system filter driver hem?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: Hướng dẫn phân tích mã độc hoạt động ở mức nhân hệ điều hành - Kernel Mode Rootkit

Đúng rồi bạn ạ, đây là một dạng file system filter driver đơn giản, cách làm này cũng khá cũ rồi. Ngoài ra còn có nhiều dạng khác nữa.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Ad có thể cho mình xin mẫu file rootkit được không? Thanks rất nhiều...
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Để mình liên hệ Malware xem còn mẫu không bạn nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
sunny;n54740 đã viết:
Để mình liên hệ Malware xem còn mẫu không bạn nhé.
Ok, thanks nhé. Mình đang tập viết một file Filter Driver nhưng mà trên mạng toàn tài liệu tiếng anh, không có tài liệu tiếng việt nên đang gặp nhiều khó khăn quá...
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên