Tìm hiểu về ROOTKIT
Author: kAmIkAzE
Orgin link: http://www.hedspi.net/diendan/showthread.php?t=1218
Author: kAmIkAzE
Orgin link: http://www.hedspi.net/diendan/showthread.php?t=1218
Gần đây Rootkit đã được xếp vào top 10 nguy cơ về bảo mật nguy hiểm nhất. Thế nhưng còn rất nhiều người không biết Rootkit là gì nên rất dễ trở thành nạn nhân của Rootkit. Bài viết này chúng ta sẽ cùng tìm hiểu những khái niệm cơ bản về Rootkit và cách phòng tránh.
1. Định nghĩa:
Rootkit /ru:tkit/ là bộ công cụ phần mềm che giấu sự tồn tại file nhưng thực ra nó vẫn hoạt động. Rootkit thường được bên thứ ba (thường là kẻ xâm nhập) dùng sau khi chiếm được quyền truy cập vào hệ thống máy tính. Các công cụ này thường nhằm để che dấu dữ liệu hệ thống, tập tin hoặc tiến trình đang chạy, từ đó giúp cho kẻ xâm nhập duy trì quyền truy cập vào hệ thống mà người dùng không biết. Rootkit có ở nhiều loại hệ điều hành như Linux, Solaris và các phiên bản Microsoft Windows. Một máy tính bị cài rootkit được gọi là bị "chiếm quyền root" ("rooted" trong tiếng Anh).
Thuật ngữ "rootkit" (còn được viết là "root kit") lúc đầu được dùng để chỉ một bộ công cụ Unix được biên dịch lại như "ps", "netstat", "w" and "passwd" có thể che dấu kĩ lưỡng vết tích của kẻ xâm nhập mà bình thường sẽ bị hiển thị bởi các lệnh trên, vì vậy nó cho phép kẻ xâm nhập duy trì quyền "root" ("siêu người dùng") trên hệ thống mà ngay cả người quản trị hệ thống cũng không thể thấy họ.
Ngày nay thuật ngữ này không chỉ giới hạn ở các hệ điều hành dựa trên Unix mà còn được dùng để chỉ các công cụ thực hiện tác vụ tương tự trên hệ điều hành không Unix như Microsoft Windows (ngay cả khi hệ điều hành đó không có tài khoản "root").
Từ "rootkit" trở nên phổ biến khi có cuộc tranh luận về chống sao chép CD Sony 2005, trong đó các đĩa CD nhạc của Sony BMG cài một toolkit vào các PC chạy Microsoft Windows.
2. Sự nguy hiểm của Rootkit
Đặc điểm của rootkit là có khả năng ẩn các tiến trình, file và cả dữ liệu trong registry (với Windows), nếu dùng những công cụ của hệ điều hành như: "Registry Editor", "Task Manager", "Find Files" thì không thể phát hiện, có khả năng ghi lại các thông số về kết nối mạng và các kết nối mạng được tạo ra bởi các chương trình sử dụng Rootkit sẽ hoàn toàn vô hình trước câu lệnh Netstat. Thực sự bản thân Rootkit không có gì nguy hại tuy nhiên, khi Rootkit được sử dụng để giấu các đoạn mã hiểm độc thì rất nguy hiểm. Một số các worm, virus, trojan và spyware có khả năng duy trì hoạt động và không bị phát hiện khi sử dụng Rootkit. Các malware sẽ không bị phát hiện thậm chí khi hệ thống được bảo vệ bởi các chương trình chống virus tốt nhất. Do đó, Rootkit thực sự là mối đe dọa rất nghiêm trọng.
Khi hay tin CD nhạc của Sony cài đặt rookit để giấu file chống sao chép xuất hiện, giới tin tặc nhanh chóng khai thác ứng dụng của Sony. Phần mềm của Sony giấu bất kỳ file hay tiến trình bắt đầu với "$sys$", những kẻ viết phần mềm độc hại đã đổi tên file để lợi dụng đặc điểm này .
Nhà sản xuất phần mềm chống virus ở Tây Ban Nha là Panda Software cho biết họ đang tìm biến thể của sâu Bagle cực kỳ độc hại có trang bị khả năng của rootkit. Trầm trọng hơn, những kẻ tạo phần mềm rootkit còn bán hoặc phát tán miễn phí các công cụ, giúp những kẻ viết phần mềm độc hại dễ dàng bổ sung chức năng rootkit cho các virus cũ như Bagle hay tạo loại mới.
Thậm chí khi sử dụng những rootkit có sẵn, tin tặc cũng có thể tạo những biến thể mới. Ví dụ, công ty phần mềm bảo mật eEye phát hiện rootkit cho phép ẩn các file trong boot sector của đĩa cứng. Rootkit có thể giấu mã chương trình phá hoại trong BIOS của PC bằng cách dùng các chức năng cấu hình trong Advanced Configuration và tính năng Power Interface.
Một dự án do Microsoft và các nhà nghiên cứu của đại học Michigan thực hiện thật sự mở đường cho nghiên cứu rootkit, tạo ra một phương thức mới gần như "đặt" HĐH chạy trên phần mềm có tên SubVirt (tên của dự án nghiên cứu). HĐH vẫn làm việc bình thường, nhưng "máy ảo" điều khiển mọi thứ HĐH nhìn thấy và có thể dễ dàng giấu chính nó. Kỹ thuật này không dễ thực hiện và người dùng dễ nhận ra vì làm chậm hệ thống và làm thay đổi những file nhất định. Joanna Rutkowska - một chuyên gia nghiên cứu công nghệ "ẩn mình" phần mềm độc hại tại hãng bảo mật COSEINC có trụ sở tại Singapore tiếp tục phát triển thêm kĩ thuật này. Công nghệ mới Blue Pill sử dụng công nghệ ảo hoá SVM/Pacifica của AMD có thể giúp tạo ra một phần mềm cực nhỏ nhưng có khả năng kiểm soát toàn bộ hệ điều hành và không thể bị phát hiện. "Ý tưởng của Blue Pill là rất đơn giản: Hệ điều hành của bạn nuốt một Blue Pill và nó sẽ hoạt động trong một Matrix (ma trận) được điều khiển bằng một Blue Pill Hypervisor cực nhỏ. Điều này xảy ra trực tiếp khi hệ điều hành đang vận hành, không gây ảnh hưởng đến các thiết bị khác." . Blue Pill không hề dựa trên bất kỳ lỗi nào tồn tại trong hệ điều hành mà nó dựa vào một giải pháp động "generic method" để chèn một số mã nhị phân vào trong nhân Vista Beta 2 (x64 edition) mà không sinh ra bất kỳ một lỗi nào. Tuy nhiên, chuyên gia này cũng khẳng định Blue Pill có thể bị phát hiện nếu công nghệ Pacifica của AMD mắc lỗi.
Một điều chắc chắn là rootkit vẫn là kĩ thuật còn đang phát triển. Bản báo cáo mới nhất của McAfee cho biết tính phức tạp của các rootkit đang phát triển ở một tốc độ dị thường. Chỉ trong 5 năm số lượng bộ phận cấu thành rootkit đã tăng từ 27 lên tới 2.400. Và trong thời gian sắp tới sẽ còn tăng lên đáng kể. Khó ai có thể dự đoán được sự nguy hiểm tiềm tàng của rootkit trong tương lai.
3. Phân loại và phương thức hoạt động của Rootkit
Có nhiều tiêu chí phân loại Rootkit. Trong bài này chúng ta sẽ phân loại Rootkit theo 2 tiêu chí
- Phân loại theo thời gian tồn tại: chia làm hai loại
Rootkit bám dai (Persistent Rootkits)
Persistent root kit là một loại rootkit kết hợp với các malware khác hoạt động mỗi khi hệ thống khởi động. Bởi vì các malware chứa mã phá hoại sẽ được thực thi tự động mỗi khi hệ thống khởi động hoặc khi người sử dụng đăng nhập vào hệ thống. Chúng cần phải lưu trữ các đoạn mã thực thi chương trình trong Registry, các tập tin hệ thống và các phương pháp cho phép âm thầm chạy các đoạn mã mà người sử dụng không hay biết
Rootkit trên bộ nhớ (Memory-Based Rootkits )
Loại rootkit này chính là các malware không có những đoạn mã "dai dẳng" - chỉ lưu trong bộ nhớ, chính vì thế loại rootkit này không tồn tại sau khi khởi động lại máy.
- Phân loại dựa trên mức độ xâm nhập hệ thống: chia làm hai loại
Rootkit chế độ người dùng (User-mode Rootkits)
Những rootkit này sẽ sửa (chỉnh) những process đang chạy trong bộ nhớ và qua đó nhận được những thông tin cần thiết.
Rootkit ở chế độ người dùng sử dụng nhiều phương pháp khác nhau để lẩn trốn không bị phát hiện. Ví dụ: rootkit ở chế độ người dùng sẽ chặn tất cả các hàm gọi hệ thống API (Application Programming Interface - Giao tiếp lập trình ứng dụng - cung cấp giao tiếp (interface) giữa chế độ người dùng và dịch vụ hệ thống) như: FindFirstFile/FindNextFile hay như để Task Manager của Windows có thể hiện ra danh sách các tiến trình đang chạy, nó sẽ gọi một hàm Windows API (EnumProcesses) và nhận về danh sách các ID tiến trình được lấy từ một cấu trúc dữ liệu của kernel. Những hàm này còn được gọi bởi các chương trình quản lý tập tin của Windows như Explorer để liệt kê toàn bộ các thư mục tập tin hệ thống. Khi một ứng dụng thực thi liệt kê danh sách thư mục và các tập tin có thể chứa rootkit, các rootkit này sẽ chặn các hàm này và thay đổi các kết quả dữ liệu đầu ra nhằm loại bỏ các tập tin chứa rootkit khỏi danh sách liệt kê.
Những rootkit ở chế độ người dùng phức tạp hơn sẽ chặn các tập tin hệ thống, Registry, và các hàm liệt kê các tiến trình (process) từ các hàm API hệ thống. Các kết nối mạng có thể được giấu bằng những phương pháp tương tự nhau bằng cách thay đổi kết quả của những lời gọi hàm tương ứng. Vì hầu hết các trình diệt virus và chống phần mềm gián điệp đều dựa vào những lời gọi hàm này (như lời gọi hàm tìm kiếm file để quét), khi đó những file được các rootkit che giấu sẽ trở nên vô hình với những trình diệt virus này. Máy tính có thể bị vẫn lây nhiễm nhưng trình diệt virus lại không thể phát hiện ra.
Rootkit chế độ nhân (Kernel-mode Rootkits)
Rootkit chế độ nhân nguy hiểm hơn các loại trên, chúng không chỉ chặn các hàm API hệ thống mà còn có thể thao tác trực tiếp các cấu trúc dữ liệu trong chế độ nhân. Các rootkit chế độ kernel thì cần phải có thêm một số đoạn mã để có thể được nạp vào kernel (thường là một trình điều khiển thiết bị hoặc một file .sys). Để đạt được mục đích này, chúng có thể theo trình tự hợp lệ mà các trình điều khiển thiết bị mức thấp vẫn dùng (thông qua trình quản lý điều khiển dịch vụ services.exe). Ngoài ra cũng còn một số phương pháp bất thành văn khác để chèn mã vào kernel. Một khi đã vào được trong HĐH, đoạn mã có thể chỉnh sửa các kết quả trả về từ lời gọi hàm bên trong lõi hoặc chỉnh sửa chính các cấu trúc lõi HĐH. Một kĩ thuật chung cho việc ẩn nấp các tiến trình malware là loại bỏ các tiến trình này ra khỏi danh sách các tiến trình ở chế độ nhân. Bởi vì các hàm API quản lý các tiến trình đều phải phụ thuộc vào nội dung trong các cấu trúc dữ liệu này, nên khi rootkit thay đổi nội dung cấu trúc dữ liệu hệ thống thì các công cụ như Task Manager hoặc Process Explorer cũng không thể phát hiện được.
Một ví dụ: Rootkits copy một bản sao của chúng với tên malware.exe và spy.dll cũng như một phần của chúng vào một thư mục. Sau đó chúng sẽ sửa (chỉnh) lại kernel để những thành phần chúng vừa copy không bị phát hiện nữa (cả với windows-explorer lẫn một chương trình filemanager bất kỳ. Chúng hoàn toàn “tàng hình” và dưới cái lốt đó chúng có thể làm bất cứ một điều gì đó có hại đến hệ thống của bạn.
4. Làm thế nào để Rootkit đột nhập vào hệ thống?
Như đã nói là Rookits có nhiệm vụ chính là che dấu những chương trình phá hoại. Chúng không có những đoạn code đặc biệt để có thể tự nhân bản và phát tán. Thực sự thì Rootkit phát tán cùng với những chương trình phá hoại có kèm theo nó (thông qua những lỗ hổng hệ thống của windows và những chương trình sử dụng). Kỹ thuật được sử dụng nhiều nhất trước kia là qua đường thư điện tử. Tuy nhiên hiện nay thì rất nhiều kĩ thuật tinh vi được hacker sử dụng để phán tán.
Một phần lớn những rootkits được bán trên mạng dưới dạng mã nguồn. Phần lớn những chương trình spyware đều sử dụng phương thức hoạt động của Rootkit. Qua đó, những spyware này sẽ hoạt động trên máy của người sử dụng mà không bị phát hiện và cuối cùng là chúng có thể kiếm được tiền nhờ những thông tin thu thập được trên máy người sử dụng.
Bằng kỹ thuật của Rootkit, có rất nhiều trojan đã được phát tán. Những trojan này biến máy bạn thành một bộ máy có thể điều khiển từ xa và người điều khiển chúng có thể dùng máy bạn để phát tán Spam hoặc lạm dụng máy bạn để làm những chuyện khác.
5. Làm thế nào để phát hiện ra Rootkit
Có hai cách chính để phát hiện một rootkit trên máy bị nhiễm: quét và theo dõi các sự kiện. Kĩ thuật quét sử dụng phương pháp so sánh cách nhìn của hệ thống sử dụng các công cụ mức người dùng với cách nhìn từ bên trong lõi HĐH. Nếu có dấu hiệu che giấu nào, thành phần đó phải hiện lên bên trong lõi chứ không phải ở màn hình người dùng. Gần đây đã có khá nhiều chương trình có thể đảm nhiệm chức năng quét này.
Về mặt lý thuyết thì phương pháp này là rất tốt – rootkit giấu các tài nguyên hệ thống, vậy cách tốt nhất để phát hiện rootkit là tìm kiếm những gì bị che giấu. Tuy nhiên vẫn có một vài nhược điểm. Nhược điểm đầu tiên là nếu bản thân HĐH đã có lỗi thì việc quét cũng có thể bị chính rootkit qua mặt. Khả năng xảy ra nguy cơ này phụ thuộc vào cụ thể quá trình quét và bản thân rootkit được thực thi như thế nào. Thường thì lõi HĐH Windows không được mô tả công khai cho nên rất khó đảm bảo tiến trình quét đạt kết quả chính xác. Hơn nữa, rootkit có thể tránh bị phát hiện bằng cách che giấu tất cả các tiến trình ngoại trừ chính tiến trình phát hiện rootkit.
Một cách khác là sử dụng một hệ thống hoạt động dựa trên các sự kiện liên tục theo dõi để có thể nắm được rootkit vào thời điểm nó tiến hành tác vụ cài đặt. Những chương trình như thế thường được gọi là hệ thống chống xâm nhập (IPS). Việc theo dõi từ phía HĐH là rất cần thiết. Các hệ thống IPS theo dõi ở mức người dùng thực ra cũng vẫn có thể bị rootkit tấn công như chính những chương trình khác của người dùng.
Những hệ thống này có thể phát hiện và khóa những tác vụ nạp các module của HĐH. Tuy nhiên việc khóa hết các module lại là một điều phi thực tế - nhiều chương trình hợp lệ khác cũng sẽ tiến hành cài đặt các module lõi. Ví dụ, một số trình diệt virus sử dụng các module lõi để thực hiện tác vụ quét theo yêu cầu.
Vẫn có thể đưa ra một giải pháp hay hơn là tính thêm khả năng cân nhắc liệu việc nạp một module có phải là xấu hay không bằng cách xem xét các thuộc tính khác của bộ cài đặt cùng những chương trình liên quan. Trong khi một rootkit và một trình duyệt virus có thể có chung một số tác vụ (như cài đặt một module lõi) thì phần lớn những đặc tính khác của chúng lại hoàn toàn không giống nhau.
Ví dụ, một rootkit có thể cố gắng “lánh mặt” bằng cách không tạo ra cửa sổ trực quan, trong khi một trình diệt virus lại muốn cho người dùng biết sự hiện diện của chương trình. Trình rootkit cũng có thể cài một keylogger (bắt bàn phím và gửi thông tin tới một người dùng khác) còn một chương trình diệt virus thì hoàn toàn không làm thế. Bằng cách tổng hợp các đặc tính hành động khác nhau (được lựa chọn cẩn thận để có thể bắt được những thao tác chung liên quan tới phần mềm mục đích xấu), việc phát hiện những chương trình rootkit là hoàn toàn có thể thực hiện được với độ tin tưởng cao. Thực tế, phương pháp này có tên “đánh giá qua hành động” và có thể được áp dụng rộng rãi để phát hiện những lớp mã mục đích xấu như Trojan hay phần mềm gián điệp.
Vì dựa trên nguyên lý đánh giá, tích lũy kinh nghiệm, hệ thống kiểu này có thể vẫn mắc lỗi (coi những chương trình bình thường là phần mềm xấu). Cách giải quyết đơn giản với vấn đề này là cần phải có danh sách cấm cho những lỗi chung thường gặp.
Xin giới thiệu các chương trình phát hiện rootkit sử dụng các kĩ thuật đặc biệt để tóm những kẻ xâm nhập nguy hiểm này.
Hầu hết các chương trình dùng phát hiện rootkit đòi hỏi người dùng có biết chút ít về kĩ thuật. Tuy nhiên, có hai chương trình dễ sử dụng nhất cũng là hai chương trình hiệu quả nhất.
- Chương trình đầu tiên là Panda Anti-Rootkit tải về tại http://www.pandasoftware.com/products/antirootkit/.
Đây là chương trình miễn phí, tương thích Windows 2K, XP, có dung lượng 353KB. Panda Anti-Rootkit là phần mềm dành cho người dùng thông thường, không chỉ có khả năng phát hiện mà còn giúp loại bỏ rootkit khá hiệu quả.
Panda Anti-Rootkit có dung lượng nhỏ, không cần cài đặt mặc dầu bạn phải đăng ký tại website của Panda trước khi tải xuống. Chúng tôi đề nghị bạn nên tải về sản phẩm này và tiến hành thao tác quét máy tính.
Nếu không tải được từ website Panda, bạn có thể sử dụng đường link sau http://www.majorgeeks.com/Panda_Anti-Rootkit_d5457.html
- Chương trình thứ hai mà chúng tôi đề nghị bạn nên sử dụng là BlackLight http://www.f-secure.com/blacklight/. Panda Anti-Rootkit và BlackLight có khả năng phát hiện hầu hết các rootkit mà các chương trình chống virus bỏ qua. Tuy nhiên cả hai đều không phải là chương trình thực sự hoàn hảo nên tốt nhất là bạn nên dùng cả hai chương trình.
- Nếu bạn là người sử dụng máy tính có kinh nghiệm, bạn nên thử dùng RootkitRevealer của SysInternals tải về tại http://www.microsoft.com/technet/sys...tRevealer.mspx. Phần mềm này có dung lượng 231KB, là bản shareware (dùng chung), chạy trên tất cả các phiên bản Windows. Chương trình này sử dụng kĩ thuật khác hoàn toàn với Panda Anti-Rootkit và BlackLight, vì thế bạn nên sử dụng cả 3 chương trình để có năng lực tối đa trong việc tìm diệt rootkit trên máy tính.
- Người dùng kinh nghiệm cũng nên dùng GMER (http://www.gmer.net/, miễn phí, chạy trên Windows NT/ 2K/XP/Vista, dung lượng 450KB. Bạn nên đọc tài liệu hướng dẫn kĩ càng trước khi sử dụng. Sản phẩm này rất tốt nhưng không phải dành cho tất cả mọi người. Do đó, nếu bạn là người khoái nhấn nút "scan" thì nên dùng Panda Anti-Rootkit hoặc BlackLight )
- Hiện nay hai trong số những phần mềm mạnh mẽ nhất trong cuộc chiến phát hiện rootkit là các sản phẩm có nguồn gốc Trung Quốc IceSword (http://majorgeeks.com/Icesword_d5199.html, miễn phí, tương thích Windows NT/2K/XP, dung lượng 2.1MB) và DarkSpy (http://www.softpedia.com/get/Antivir...-Rootkit.shtml, miễn phí, chạy trên Windows 2K/XP/2003, dung lượng 626KB). Các chương trình này có công cụ giúp "điểm mặt" rootkit.
Trên đây là một số kiến thức ít ỏi được tổng hợp từ nhiều nguồn tài liệu trên mạng về rootkit của chúng tôi. Hi vọng bài viết này sẽ giúp đỡ được mọi người phần nào đó trong cuộc chiến bảo mật không có hồi kết. ^_^
(FK Group)
1. Định nghĩa:
Rootkit /ru:tkit/ là bộ công cụ phần mềm che giấu sự tồn tại file nhưng thực ra nó vẫn hoạt động. Rootkit thường được bên thứ ba (thường là kẻ xâm nhập) dùng sau khi chiếm được quyền truy cập vào hệ thống máy tính. Các công cụ này thường nhằm để che dấu dữ liệu hệ thống, tập tin hoặc tiến trình đang chạy, từ đó giúp cho kẻ xâm nhập duy trì quyền truy cập vào hệ thống mà người dùng không biết. Rootkit có ở nhiều loại hệ điều hành như Linux, Solaris và các phiên bản Microsoft Windows. Một máy tính bị cài rootkit được gọi là bị "chiếm quyền root" ("rooted" trong tiếng Anh).
Thuật ngữ "rootkit" (còn được viết là "root kit") lúc đầu được dùng để chỉ một bộ công cụ Unix được biên dịch lại như "ps", "netstat", "w" and "passwd" có thể che dấu kĩ lưỡng vết tích của kẻ xâm nhập mà bình thường sẽ bị hiển thị bởi các lệnh trên, vì vậy nó cho phép kẻ xâm nhập duy trì quyền "root" ("siêu người dùng") trên hệ thống mà ngay cả người quản trị hệ thống cũng không thể thấy họ.
Ngày nay thuật ngữ này không chỉ giới hạn ở các hệ điều hành dựa trên Unix mà còn được dùng để chỉ các công cụ thực hiện tác vụ tương tự trên hệ điều hành không Unix như Microsoft Windows (ngay cả khi hệ điều hành đó không có tài khoản "root").
Từ "rootkit" trở nên phổ biến khi có cuộc tranh luận về chống sao chép CD Sony 2005, trong đó các đĩa CD nhạc của Sony BMG cài một toolkit vào các PC chạy Microsoft Windows.
2. Sự nguy hiểm của Rootkit
Đặc điểm của rootkit là có khả năng ẩn các tiến trình, file và cả dữ liệu trong registry (với Windows), nếu dùng những công cụ của hệ điều hành như: "Registry Editor", "Task Manager", "Find Files" thì không thể phát hiện, có khả năng ghi lại các thông số về kết nối mạng và các kết nối mạng được tạo ra bởi các chương trình sử dụng Rootkit sẽ hoàn toàn vô hình trước câu lệnh Netstat. Thực sự bản thân Rootkit không có gì nguy hại tuy nhiên, khi Rootkit được sử dụng để giấu các đoạn mã hiểm độc thì rất nguy hiểm. Một số các worm, virus, trojan và spyware có khả năng duy trì hoạt động và không bị phát hiện khi sử dụng Rootkit. Các malware sẽ không bị phát hiện thậm chí khi hệ thống được bảo vệ bởi các chương trình chống virus tốt nhất. Do đó, Rootkit thực sự là mối đe dọa rất nghiêm trọng.
Khi hay tin CD nhạc của Sony cài đặt rookit để giấu file chống sao chép xuất hiện, giới tin tặc nhanh chóng khai thác ứng dụng của Sony. Phần mềm của Sony giấu bất kỳ file hay tiến trình bắt đầu với "$sys$", những kẻ viết phần mềm độc hại đã đổi tên file để lợi dụng đặc điểm này .
Nhà sản xuất phần mềm chống virus ở Tây Ban Nha là Panda Software cho biết họ đang tìm biến thể của sâu Bagle cực kỳ độc hại có trang bị khả năng của rootkit. Trầm trọng hơn, những kẻ tạo phần mềm rootkit còn bán hoặc phát tán miễn phí các công cụ, giúp những kẻ viết phần mềm độc hại dễ dàng bổ sung chức năng rootkit cho các virus cũ như Bagle hay tạo loại mới.
Thậm chí khi sử dụng những rootkit có sẵn, tin tặc cũng có thể tạo những biến thể mới. Ví dụ, công ty phần mềm bảo mật eEye phát hiện rootkit cho phép ẩn các file trong boot sector của đĩa cứng. Rootkit có thể giấu mã chương trình phá hoại trong BIOS của PC bằng cách dùng các chức năng cấu hình trong Advanced Configuration và tính năng Power Interface.
Một dự án do Microsoft và các nhà nghiên cứu của đại học Michigan thực hiện thật sự mở đường cho nghiên cứu rootkit, tạo ra một phương thức mới gần như "đặt" HĐH chạy trên phần mềm có tên SubVirt (tên của dự án nghiên cứu). HĐH vẫn làm việc bình thường, nhưng "máy ảo" điều khiển mọi thứ HĐH nhìn thấy và có thể dễ dàng giấu chính nó. Kỹ thuật này không dễ thực hiện và người dùng dễ nhận ra vì làm chậm hệ thống và làm thay đổi những file nhất định. Joanna Rutkowska - một chuyên gia nghiên cứu công nghệ "ẩn mình" phần mềm độc hại tại hãng bảo mật COSEINC có trụ sở tại Singapore tiếp tục phát triển thêm kĩ thuật này. Công nghệ mới Blue Pill sử dụng công nghệ ảo hoá SVM/Pacifica của AMD có thể giúp tạo ra một phần mềm cực nhỏ nhưng có khả năng kiểm soát toàn bộ hệ điều hành và không thể bị phát hiện. "Ý tưởng của Blue Pill là rất đơn giản: Hệ điều hành của bạn nuốt một Blue Pill và nó sẽ hoạt động trong một Matrix (ma trận) được điều khiển bằng một Blue Pill Hypervisor cực nhỏ. Điều này xảy ra trực tiếp khi hệ điều hành đang vận hành, không gây ảnh hưởng đến các thiết bị khác." . Blue Pill không hề dựa trên bất kỳ lỗi nào tồn tại trong hệ điều hành mà nó dựa vào một giải pháp động "generic method" để chèn một số mã nhị phân vào trong nhân Vista Beta 2 (x64 edition) mà không sinh ra bất kỳ một lỗi nào. Tuy nhiên, chuyên gia này cũng khẳng định Blue Pill có thể bị phát hiện nếu công nghệ Pacifica của AMD mắc lỗi.
Một điều chắc chắn là rootkit vẫn là kĩ thuật còn đang phát triển. Bản báo cáo mới nhất của McAfee cho biết tính phức tạp của các rootkit đang phát triển ở một tốc độ dị thường. Chỉ trong 5 năm số lượng bộ phận cấu thành rootkit đã tăng từ 27 lên tới 2.400. Và trong thời gian sắp tới sẽ còn tăng lên đáng kể. Khó ai có thể dự đoán được sự nguy hiểm tiềm tàng của rootkit trong tương lai.
3. Phân loại và phương thức hoạt động của Rootkit
Có nhiều tiêu chí phân loại Rootkit. Trong bài này chúng ta sẽ phân loại Rootkit theo 2 tiêu chí
- Phân loại theo thời gian tồn tại: chia làm hai loại
Rootkit bám dai (Persistent Rootkits)
Persistent root kit là một loại rootkit kết hợp với các malware khác hoạt động mỗi khi hệ thống khởi động. Bởi vì các malware chứa mã phá hoại sẽ được thực thi tự động mỗi khi hệ thống khởi động hoặc khi người sử dụng đăng nhập vào hệ thống. Chúng cần phải lưu trữ các đoạn mã thực thi chương trình trong Registry, các tập tin hệ thống và các phương pháp cho phép âm thầm chạy các đoạn mã mà người sử dụng không hay biết
Rootkit trên bộ nhớ (Memory-Based Rootkits )
Loại rootkit này chính là các malware không có những đoạn mã "dai dẳng" - chỉ lưu trong bộ nhớ, chính vì thế loại rootkit này không tồn tại sau khi khởi động lại máy.
- Phân loại dựa trên mức độ xâm nhập hệ thống: chia làm hai loại
Rootkit chế độ người dùng (User-mode Rootkits)
Những rootkit này sẽ sửa (chỉnh) những process đang chạy trong bộ nhớ và qua đó nhận được những thông tin cần thiết.
Rootkit ở chế độ người dùng sử dụng nhiều phương pháp khác nhau để lẩn trốn không bị phát hiện. Ví dụ: rootkit ở chế độ người dùng sẽ chặn tất cả các hàm gọi hệ thống API (Application Programming Interface - Giao tiếp lập trình ứng dụng - cung cấp giao tiếp (interface) giữa chế độ người dùng và dịch vụ hệ thống) như: FindFirstFile/FindNextFile hay như để Task Manager của Windows có thể hiện ra danh sách các tiến trình đang chạy, nó sẽ gọi một hàm Windows API (EnumProcesses) và nhận về danh sách các ID tiến trình được lấy từ một cấu trúc dữ liệu của kernel. Những hàm này còn được gọi bởi các chương trình quản lý tập tin của Windows như Explorer để liệt kê toàn bộ các thư mục tập tin hệ thống. Khi một ứng dụng thực thi liệt kê danh sách thư mục và các tập tin có thể chứa rootkit, các rootkit này sẽ chặn các hàm này và thay đổi các kết quả dữ liệu đầu ra nhằm loại bỏ các tập tin chứa rootkit khỏi danh sách liệt kê.
Những rootkit ở chế độ người dùng phức tạp hơn sẽ chặn các tập tin hệ thống, Registry, và các hàm liệt kê các tiến trình (process) từ các hàm API hệ thống. Các kết nối mạng có thể được giấu bằng những phương pháp tương tự nhau bằng cách thay đổi kết quả của những lời gọi hàm tương ứng. Vì hầu hết các trình diệt virus và chống phần mềm gián điệp đều dựa vào những lời gọi hàm này (như lời gọi hàm tìm kiếm file để quét), khi đó những file được các rootkit che giấu sẽ trở nên vô hình với những trình diệt virus này. Máy tính có thể bị vẫn lây nhiễm nhưng trình diệt virus lại không thể phát hiện ra.
Rootkit chế độ nhân (Kernel-mode Rootkits)
Rootkit chế độ nhân nguy hiểm hơn các loại trên, chúng không chỉ chặn các hàm API hệ thống mà còn có thể thao tác trực tiếp các cấu trúc dữ liệu trong chế độ nhân. Các rootkit chế độ kernel thì cần phải có thêm một số đoạn mã để có thể được nạp vào kernel (thường là một trình điều khiển thiết bị hoặc một file .sys). Để đạt được mục đích này, chúng có thể theo trình tự hợp lệ mà các trình điều khiển thiết bị mức thấp vẫn dùng (thông qua trình quản lý điều khiển dịch vụ services.exe). Ngoài ra cũng còn một số phương pháp bất thành văn khác để chèn mã vào kernel. Một khi đã vào được trong HĐH, đoạn mã có thể chỉnh sửa các kết quả trả về từ lời gọi hàm bên trong lõi hoặc chỉnh sửa chính các cấu trúc lõi HĐH. Một kĩ thuật chung cho việc ẩn nấp các tiến trình malware là loại bỏ các tiến trình này ra khỏi danh sách các tiến trình ở chế độ nhân. Bởi vì các hàm API quản lý các tiến trình đều phải phụ thuộc vào nội dung trong các cấu trúc dữ liệu này, nên khi rootkit thay đổi nội dung cấu trúc dữ liệu hệ thống thì các công cụ như Task Manager hoặc Process Explorer cũng không thể phát hiện được.
Một ví dụ: Rootkits copy một bản sao của chúng với tên malware.exe và spy.dll cũng như một phần của chúng vào một thư mục. Sau đó chúng sẽ sửa (chỉnh) lại kernel để những thành phần chúng vừa copy không bị phát hiện nữa (cả với windows-explorer lẫn một chương trình filemanager bất kỳ. Chúng hoàn toàn “tàng hình” và dưới cái lốt đó chúng có thể làm bất cứ một điều gì đó có hại đến hệ thống của bạn.
4. Làm thế nào để Rootkit đột nhập vào hệ thống?
Như đã nói là Rookits có nhiệm vụ chính là che dấu những chương trình phá hoại. Chúng không có những đoạn code đặc biệt để có thể tự nhân bản và phát tán. Thực sự thì Rootkit phát tán cùng với những chương trình phá hoại có kèm theo nó (thông qua những lỗ hổng hệ thống của windows và những chương trình sử dụng). Kỹ thuật được sử dụng nhiều nhất trước kia là qua đường thư điện tử. Tuy nhiên hiện nay thì rất nhiều kĩ thuật tinh vi được hacker sử dụng để phán tán.
Một phần lớn những rootkits được bán trên mạng dưới dạng mã nguồn. Phần lớn những chương trình spyware đều sử dụng phương thức hoạt động của Rootkit. Qua đó, những spyware này sẽ hoạt động trên máy của người sử dụng mà không bị phát hiện và cuối cùng là chúng có thể kiếm được tiền nhờ những thông tin thu thập được trên máy người sử dụng.
Bằng kỹ thuật của Rootkit, có rất nhiều trojan đã được phát tán. Những trojan này biến máy bạn thành một bộ máy có thể điều khiển từ xa và người điều khiển chúng có thể dùng máy bạn để phát tán Spam hoặc lạm dụng máy bạn để làm những chuyện khác.
5. Làm thế nào để phát hiện ra Rootkit
Có hai cách chính để phát hiện một rootkit trên máy bị nhiễm: quét và theo dõi các sự kiện. Kĩ thuật quét sử dụng phương pháp so sánh cách nhìn của hệ thống sử dụng các công cụ mức người dùng với cách nhìn từ bên trong lõi HĐH. Nếu có dấu hiệu che giấu nào, thành phần đó phải hiện lên bên trong lõi chứ không phải ở màn hình người dùng. Gần đây đã có khá nhiều chương trình có thể đảm nhiệm chức năng quét này.
Về mặt lý thuyết thì phương pháp này là rất tốt – rootkit giấu các tài nguyên hệ thống, vậy cách tốt nhất để phát hiện rootkit là tìm kiếm những gì bị che giấu. Tuy nhiên vẫn có một vài nhược điểm. Nhược điểm đầu tiên là nếu bản thân HĐH đã có lỗi thì việc quét cũng có thể bị chính rootkit qua mặt. Khả năng xảy ra nguy cơ này phụ thuộc vào cụ thể quá trình quét và bản thân rootkit được thực thi như thế nào. Thường thì lõi HĐH Windows không được mô tả công khai cho nên rất khó đảm bảo tiến trình quét đạt kết quả chính xác. Hơn nữa, rootkit có thể tránh bị phát hiện bằng cách che giấu tất cả các tiến trình ngoại trừ chính tiến trình phát hiện rootkit.
Một cách khác là sử dụng một hệ thống hoạt động dựa trên các sự kiện liên tục theo dõi để có thể nắm được rootkit vào thời điểm nó tiến hành tác vụ cài đặt. Những chương trình như thế thường được gọi là hệ thống chống xâm nhập (IPS). Việc theo dõi từ phía HĐH là rất cần thiết. Các hệ thống IPS theo dõi ở mức người dùng thực ra cũng vẫn có thể bị rootkit tấn công như chính những chương trình khác của người dùng.
Những hệ thống này có thể phát hiện và khóa những tác vụ nạp các module của HĐH. Tuy nhiên việc khóa hết các module lại là một điều phi thực tế - nhiều chương trình hợp lệ khác cũng sẽ tiến hành cài đặt các module lõi. Ví dụ, một số trình diệt virus sử dụng các module lõi để thực hiện tác vụ quét theo yêu cầu.
Vẫn có thể đưa ra một giải pháp hay hơn là tính thêm khả năng cân nhắc liệu việc nạp một module có phải là xấu hay không bằng cách xem xét các thuộc tính khác của bộ cài đặt cùng những chương trình liên quan. Trong khi một rootkit và một trình duyệt virus có thể có chung một số tác vụ (như cài đặt một module lõi) thì phần lớn những đặc tính khác của chúng lại hoàn toàn không giống nhau.
Ví dụ, một rootkit có thể cố gắng “lánh mặt” bằng cách không tạo ra cửa sổ trực quan, trong khi một trình diệt virus lại muốn cho người dùng biết sự hiện diện của chương trình. Trình rootkit cũng có thể cài một keylogger (bắt bàn phím và gửi thông tin tới một người dùng khác) còn một chương trình diệt virus thì hoàn toàn không làm thế. Bằng cách tổng hợp các đặc tính hành động khác nhau (được lựa chọn cẩn thận để có thể bắt được những thao tác chung liên quan tới phần mềm mục đích xấu), việc phát hiện những chương trình rootkit là hoàn toàn có thể thực hiện được với độ tin tưởng cao. Thực tế, phương pháp này có tên “đánh giá qua hành động” và có thể được áp dụng rộng rãi để phát hiện những lớp mã mục đích xấu như Trojan hay phần mềm gián điệp.
Vì dựa trên nguyên lý đánh giá, tích lũy kinh nghiệm, hệ thống kiểu này có thể vẫn mắc lỗi (coi những chương trình bình thường là phần mềm xấu). Cách giải quyết đơn giản với vấn đề này là cần phải có danh sách cấm cho những lỗi chung thường gặp.
Xin giới thiệu các chương trình phát hiện rootkit sử dụng các kĩ thuật đặc biệt để tóm những kẻ xâm nhập nguy hiểm này.
Hầu hết các chương trình dùng phát hiện rootkit đòi hỏi người dùng có biết chút ít về kĩ thuật. Tuy nhiên, có hai chương trình dễ sử dụng nhất cũng là hai chương trình hiệu quả nhất.
- Chương trình đầu tiên là Panda Anti-Rootkit tải về tại http://www.pandasoftware.com/products/antirootkit/.
Đây là chương trình miễn phí, tương thích Windows 2K, XP, có dung lượng 353KB. Panda Anti-Rootkit là phần mềm dành cho người dùng thông thường, không chỉ có khả năng phát hiện mà còn giúp loại bỏ rootkit khá hiệu quả.
Panda Anti-Rootkit có dung lượng nhỏ, không cần cài đặt mặc dầu bạn phải đăng ký tại website của Panda trước khi tải xuống. Chúng tôi đề nghị bạn nên tải về sản phẩm này và tiến hành thao tác quét máy tính.
Nếu không tải được từ website Panda, bạn có thể sử dụng đường link sau http://www.majorgeeks.com/Panda_Anti-Rootkit_d5457.html
- Chương trình thứ hai mà chúng tôi đề nghị bạn nên sử dụng là BlackLight http://www.f-secure.com/blacklight/. Panda Anti-Rootkit và BlackLight có khả năng phát hiện hầu hết các rootkit mà các chương trình chống virus bỏ qua. Tuy nhiên cả hai đều không phải là chương trình thực sự hoàn hảo nên tốt nhất là bạn nên dùng cả hai chương trình.
- Nếu bạn là người sử dụng máy tính có kinh nghiệm, bạn nên thử dùng RootkitRevealer của SysInternals tải về tại http://www.microsoft.com/technet/sys...tRevealer.mspx. Phần mềm này có dung lượng 231KB, là bản shareware (dùng chung), chạy trên tất cả các phiên bản Windows. Chương trình này sử dụng kĩ thuật khác hoàn toàn với Panda Anti-Rootkit và BlackLight, vì thế bạn nên sử dụng cả 3 chương trình để có năng lực tối đa trong việc tìm diệt rootkit trên máy tính.
- Người dùng kinh nghiệm cũng nên dùng GMER (http://www.gmer.net/, miễn phí, chạy trên Windows NT/ 2K/XP/Vista, dung lượng 450KB. Bạn nên đọc tài liệu hướng dẫn kĩ càng trước khi sử dụng. Sản phẩm này rất tốt nhưng không phải dành cho tất cả mọi người. Do đó, nếu bạn là người khoái nhấn nút "scan" thì nên dùng Panda Anti-Rootkit hoặc BlackLight )
- Hiện nay hai trong số những phần mềm mạnh mẽ nhất trong cuộc chiến phát hiện rootkit là các sản phẩm có nguồn gốc Trung Quốc IceSword (http://majorgeeks.com/Icesword_d5199.html, miễn phí, tương thích Windows NT/2K/XP, dung lượng 2.1MB) và DarkSpy (http://www.softpedia.com/get/Antivir...-Rootkit.shtml, miễn phí, chạy trên Windows 2K/XP/2003, dung lượng 626KB). Các chương trình này có công cụ giúp "điểm mặt" rootkit.
Trên đây là một số kiến thức ít ỏi được tổng hợp từ nhiều nguồn tài liệu trên mạng về rootkit của chúng tôi. Hi vọng bài viết này sẽ giúp đỡ được mọi người phần nào đó trong cuộc chiến bảo mật không có hồi kết. ^_^
(FK Group)