Khái niệm về Mã độc
Mã độc, hay phần mềm độc hại (malware), là chương trình được cài đặt lén lút vào hệ thống mạng với mục đích phá hoại Khi xâm nhập thành công, mã độc có thể gây tổn hại đến tính bí mật, tính toàn vẹn và tính sẵn sàng của máy tính nạn nhân.
Khái niệm về Rootkits
Rootkit là phần mềm độc hại được thiết kế để ẩn giấu mã độc, cho phép kẻ xâm nhập chiếm quyền truy cập vào hệ thống máy tính và gây hại cho thiết bị của người dùng.
Rootkit có khả năng ngụy trang tinh vi, khiến cho các phần mềm diệt virus thông thường không nhận diện được, mà chỉ coi nó như một ứng dụng vô hại Nó che giấu các tập tin, dữ liệu hệ thống và tiến trình đang chạy, cho phép kẻ xâm nhập truy cập vào hệ thống máy tính mà ngay cả người quản lý quyền root cũng không phát hiện được Máy tính bị cài rootkit được gọi là máy bị “chiếm quyền root”.
Lịch sử hình thành Rootkits
Bộ rootkit đầu tiên được ghi nhận là sản phẩm của Stevens Dake và Lane Davis vào năm 1990, được phát triển cho Sun Microsystems và sử dụng trên hệ điều hành SunOS Unix.
Vụ bê bối Greek Watergate (2004-2005) liên quan đến một rootkit được phát triển cho các tổng đài điện thoại Ericsson AX trên mạng Vodafone của Hy Lạp, với mục đích nghe lén các cuộc gọi của các thành viên chính phủ Hy Lạp.
Vào năm 2005, Sony BMG Music Entertainment đã âm thầm cài đặt bộ rootkit trên hàng triệu đĩa CD để ngăn chặn việc sao chép và theo dõi hành vi người dùng mà không bị phát hiện bởi phần mềm chống vi-rút Bộ rootkit này đã tạo cơ hội cho các phần mềm độc hại xâm nhập vào máy tính Windows của khách hàng mà họ không hay biết.
Zeus (2007) là một loại rootkit nguy hiểm, chuyên đánh cắp thông tin ngân hàng bằng cách ghi lại các phím bấm trên trình duyệt và thu thập dữ liệu từ biểu mẫu.
NTRootkit (2008) là một trong những rootkit độc hại đầu tiên được thiết kế cho hệ điều hành Windows NT Nó có khả năng ghi lại các tổ hợp phím, giúp tin tặc thu thập thông tin nhạy cảm như tên người dùng và mật khẩu, từ đó truy cập vào các dịch vụ nhất định.
Machiavelli (2009): Bộ rootkit đầu tiên nhắm mục tiêu là hệ điều hành Mac OS
X Nó tạo ra các lệnh gọi hệ thống ẩn và các luồng nhân.
Stuxnet (2010): Bộ rootkit đầu tiên được biết đến nhằm vào một hệ thống điều khiển công nghiệp.
Flame (2012) là một phần mềm độc hại nhắm vào các máy tính chạy hệ điều hành Windows, có khả năng ghi lại hoạt động bàn phím, chụp ảnh màn hình, thu âm thanh và theo dõi lưu lượng mạng.
Nguyên lý hoạt động và phá hoại
Rootkit hoạt động thông qua một quá trình gọi là sửa đổi, cho phép thay đổi quyền và bảo mật của tài khoản người dùng, thường chỉ được cấp bởi quản trị viên máy tính Mặc dù sửa đổi có thể được sử dụng để cải thiện hệ thống, nhưng những kẻ tấn công lợi dụng quy trình này để giành quyền truy cập không giới hạn, từ đó gây ra thiệt hại Hơn nữa, các phương pháp lây nhiễm bí mật thường được sử dụng bởi những kẻ tấn công, vì rootkit không được thiết kế để tự lây lan.
Kẻ tấn công có thể cài đặt rootkit sau khi có quyền truy cập root hoặc quản trị viên, và rootkit này sẽ thực hiện các biện pháp để ẩn giấu sự hiện diện của nó trong hệ thống máy chủ Nó làm điều này bằng cách lật đổ hoặc trốn tránh các công cụ bảo mật tiêu chuẩn và giao diện lập trình ứng dụng (API) dùng để chẩn đoán, quét và giám sát Để đạt được mục tiêu này, rootkit sửa đổi hành vi của các phần cốt lõi của hệ điều hành thông qua việc tải mã vào các quy trình khác và cài đặt hoặc sửa đổi trình điều khiển hoặc mô-đun hạt nhân.
Các kỹ thuật giải mã bao gồm việc che giấu các quy trình đang hoạt động để tránh sự giám sát từ hệ thống, cũng như ẩn đi các tệp hệ thống và dữ liệu cấu hình quan trọng.
Phân loại Rootkits
Rootkit được chia thành hai loại chính: rootkit chế độ người dùng và rootkit chế độ nhân Sự phân loại này dựa vào phạm vi ảnh hưởng của chúng Ngoài ra, rootkit cũng được phân loại theo tính chất tồn tại, bao gồm rootkit bền vững (persistent) và không bền vững (non-persistent), tùy thuộc vào việc chúng có lưu trữ trên ổ đĩa sau khi khởi động lại hay không.
Rootkit có hai loại chính: user-mode rootkit và kernel-mode rootkit, với cơ chế điều khiển và phạm vi ảnh hưởng khác nhau trên hệ điều hành Quyền hạn mà rootkit chiếm đoạt càng lớn, thì khả năng tác động của nó lên hệ thống càng mạnh mẽ.
Tất cả các rootkit đều dựa trên cơ sở giao tiếp giữa các chương trình thông qua các lời gọi hàm Tùy thuộc vào mức đặc quyền của chương trình, nó có thể thực hiện lời gọi trực tiếp tới kernel hoặc gián tiếp qua một bên xử lý thứ ba, được gọi là ser mide và kernel mode.
Rootkit mức user là loại rootkit có đặc quyền thấp nhất, yêu cầu sử dụng giao diện API để gửi yêu cầu tới hệ thống thông qua thư viện DLL Chương trình mức user không tự xử lý tất cả chức năng mà cần thực hiện các system call tới kernel Ví dụ, khi người dùng nhấn nút OK, Windows sẽ chuyển đổi thông tin đó thành một system call để xử lý Ngôn ngữ giao tiếp giữa kernel và chương trình mức user được gọi là API, và mỗi chương trình user tạo một bảng riêng gọi là IAT (import address table) để chứa địa chỉ các API hoặc system function cần thiết Việc gián tiếp liên lạc với kernel giúp hạn chế ảnh hưởng của user mode rootkit, mang lại lợi ích là dễ tạo và không làm hệ thống bị treo hay gặp sự cố, nhưng vẫn cần nhiều công việc để đạt được kết quả mong muốn.
Kernel mode rootkit là loại phần mềm độc hại hoạt động ở Ring 0, tương tác trực tiếp với kernel - bộ não của hệ điều hành Kernel duy trì và điều khiển nhiều tài nguyên quan trọng, bao gồm thông tin bộ nhớ, an ninh, và giao tiếp giữa phần cứng và các ứng dụng Khi rootkit thao túng kernel, nó có khả năng kiểm soát toàn bộ hệ thống Khác với user mode rootkit hoạt động ở Ring 3, kernel mode rootkit cài đặt driver để chuyển hướng các lệnh gọi hệ thống sang mã lập trình của nó, từ đó thực thi các hành động độc hại.
Persistent và non-persistent rootkit
Rootkit tồn tại bền vững bằng cách thay đổi nội dung ổ cứng, cho phép nó tự khởi động cùng hệ thống Cụ thể, rootkit chèn thêm mục autostart và Registry, giúp nó được tải vào bộ nhớ và tự động thực thi mỗi khi máy tính khởi động Mặc dù những thay đổi vật lý này có thể làm tăng khả năng bị phát hiện, nhưng nhiều tiện ích hệ thống và chương trình quét malware vẫn thường bỏ qua rootkit.
Rootkit không tồn tại lâu dài chỉ lưu trữ trong bộ nhớ và sẽ biến mất khi hệ thống khởi động lại, khiến cho các chương trình quét không phát hiện được Mặc dù có vẻ ít nguy hiểm cho người dùng cá nhân thường xuyên khởi động lại máy tính, nhưng đối với các mạng server với nhiều máy tính client, việc khởi động lại là hiếm Các rootkit này lợi dụng điều đó và không để lại dấu vết vật lý nào, làm tăng nguy cơ bị tấn công.
Về Kernel mode rootkit và khả năng phá hoại của nó
Kernel mode rootkit được chạy với các đặc quyền cao nhất của hệ điều hành
Rootkit ở mức Ring 0 được thiết kế để thay đổi chức năng của hệ điều hành bằng cách thêm mã và cấu trúc dữ liệu vào kernel Các rootkit này thường khai thác khả năng của hệ điều hành cho phép driver thiết bị và mô-đun thực thi với quyền hạn tương đương kernel, do đó chúng thường được đóng gói dưới dạng driver hoặc mô-đun để né tránh phát hiện từ phần mềm diệt virus.
Rootkit nhân cung cấp quyền truy cập bảo mật không hạn chế nhưng có độ phức tạp cao, khiến việc viết mã trở nên khó khăn hơn Những lỗi trong mã hoạt động ở cấp nhân có thể gây ra sự không ổn định cho hệ thống và dẫn đến việc phát hiện rootkit Để cài đặt rootkit nhân, kẻ tấn công cần có quyền root hoặc quyền quản trị, và việc khai thác quyền quản trị từ xa trên Microsoft Windows không phải là hiếm Do đó, nhiều bộ rootkit nhân đã được phát triển cho hệ điều hành Windows.
Một trong những kernel rootkit đầu tiên được biết đến rộng rãi được phát triển cho Windows NT 4.0 và được phát hành trên tạp chí Phrack vào năm
Rootkit nhân, được phát triển bởi Greg Hoglund vào năm 1999, rất khó phát hiện và loại bỏ vì chúng hoạt động ở cấp độ bảo mật tương tự như hệ điều hành Điều này cho phép chúng chặn hoặc phá vỡ các hoạt động của hệ điều hành đáng tin cậy nhất, khiến cho bất kỳ phần mềm nào, bao gồm cả phần mềm chống vi-rút, chạy trên hệ thống bị xâm nhập đều trở nên dễ bị tổn thương Trong tình huống này, không có phần nào của hệ thống có thể được coi là đáng tin cậy.
Hậu quả của Rootkits
Kẻ tấn công có thể chiếm quyền truy cập đầy đủ thông qua cửa sau, cho phép thực hiện các hành vi trái phép như đánh cắp hoặc làm giả tài liệu Một trong những phương thức để đạt được điều này là phá hủy cơ chế đăng nhập Mặc dù sự thay thế có vẻ hoạt động bình thường, nhưng nó lại chấp nhận các kết hợp đăng nhập bí mật, cho phép kẻ tấn công truy cập trực tiếp vào hệ thống với đặc quyền quản trị, bỏ qua các cơ chế xác thực và ủy quyền tiêu chuẩn.
Rootkit là phần mềm độc hại có khả năng ẩn giấu các chương trình nguy hiểm khác như trình ghi khóa, virus và trojan, giúp chúng đánh cắp mật khẩu, thông tin thẻ tín dụng và dữ liệu cá nhân cũng như bí mật của các công ty Để thực hiện điều này, rootkit thay đổi nhiều thiết lập hệ thống hoặc tự tạo chính sách bảo mật, làm suy giảm tính bảo mật của máy tính, tạo ra nơi trú ẩn cho các payload, khiến hệ điều hành và phần mềm bảo mật ở chế độ người dùng không thể phát hiện.
Rootkit không phải là phần mềm độc hại mà là một quá trình được sử dụng để triển khai phần mềm độc hại trên mục tiêu Mặc dù thuật ngữ này có hàm ý tiêu cực, rootkits hoạt động tương tự như phần mềm độc hại, chạy không bị phát hiện trên máy tính mục tiêu và có khả năng đánh cắp thông tin Do đó, rootkits là mối đe dọa lớn đối với an ninh của khách hàng và cần được ngăn chặn và xử lý kịp thời.
Cách nhận biết một hệ thống máy tính bị nhiễm Rootkits
Nếu máy tính của bạn chạy chậm, xuất hiện cửa sổ lạ khi khởi động hoặc tắt máy, hoặc có sự thay đổi ở một số chương trình và dữ liệu, có thể máy đã bị nhiễm rootkit Tuy nhiên, những dấu hiệu này không đủ để khẳng định sự hiện diện của rootkit Để phát hiện rootkit một cách chính xác, cần sử dụng các phần mềm chuyên dụng.
Việc phát hiện rootkit rất khó khăn, vì không có sản phẩm thương mại nào có khả năng tìm và loại bỏ tất cả các rootkit, cả đã biết lẫn chưa biết Các phương pháp phát hiện rootkit bao gồm phân tích hành vi, quét chữ ký và phân tích memory dump Thông thường, cách duy nhất để loại bỏ rootkit hiệu quả là xây dựng lại hoàn toàn hệ thống bị xâm nhập.
Cách phòng chống mã độc Rootkits
Phát hiện và loại bỏ rootkit là một nhiệm vụ khó khăn, vì chúng có thể can thiệp vào quá trình quét và diệt virus Trước khi bắt đầu, người dùng nên sao lưu dữ liệu quan trọng để tránh mất mát Sau khi loại bỏ rootkit, Windows có thể không hoạt động bình thường hoặc dữ liệu có thể bị xóa Không có cách nào đảm bảo rằng hệ thống không còn rootkit nếu kiểm tra từ chính máy đó Việc sử dụng công cụ quét trực tuyến và offline từ môi trường sạch sẽ đáng tin cậy hơn, nhưng rootkit vẫn có thể vô hiệu hóa chúng Người dùng cần thường xuyên cập nhật các công cụ quét rootkit và đọc kỹ hướng dẫn sử dụng để thực hiện đúng các bước Sau khi quét, nên khởi động lại máy và quét lại để đảm bảo rootkit không quay trở lại Biện pháp cuối cùng và hiệu quả nhất để đảm bảo hệ thống sạch sẽ là định dạng lại ổ cứng và cài đặt lại Windows.
Rootkit là mối đe dọa an ninh thứ cấp, xuất phát từ các lỗ hổng bảo mật như cấu hình sai, xác thực yếu hoặc lỗ hổng chưa được vá Khi rootkit đã xâm nhập vào hệ thống, điều đó có nghĩa là hệ thống đã bị tấn công từ trước Để ngăn chặn rootkit, cần áp dụng chiến lược phòng thủ nhiều lớp nhằm ngăn chặn khả năng cài đặt chúng.
- Cập nhật hệ thống chống antivirus và phần mềm gián điệp.
- Triển khai hệ thống tường lửa mạng và host-based.
- Cập nhật các bản vá cho hệ điều hành và ứng dụng.
- Xiết chặt hệ điều hành.
- Sử dụng phương pháp xác thực mạnh.
- Không bao giờ sử dụng phần mềm từ những nguồn không tin cậy.
Một số phần mềm phát hiện Rootkits
Phát hiện và loại bỏ rootkit vẫn là một thách thức lớn, vì nhiều phần mềm diệt virus và gián điệp không đủ khả năng phát hiện chúng Ngay cả các công cụ chuyên dụng cho rootkit cũng không thể đảm bảo 100% rằng máy tính không bị nhiễm Trước đây, chỉ có một số công cụ đáng tin cậy như VICE, Patchfinder2 và klister Hơn nữa, nhiều công cụ phát hiện được phát triển bởi những người tạo ra rootkit, do đó, việc tin tưởng vào chúng là điều không nên.
Các công cụ phát hiện rootkit phổ biến hiện nay bao gồm Strider Ghostbuster, Sysinternals RootkitRevealer, và F-Secure BlackLight RootkitRevealer so sánh các dịch vụ đang chạy với dữ liệu ghi trên đĩa cứng nhưng không có khả năng loại bỏ rootkit, buộc người dùng phải tìm kiếm cách loại bỏ trên Internet F-Secure BlackLight dễ sử dụng và hoạt động nhanh chóng, trong khi Sophos Anti-Rootkit cho phép tương tác nhiều hơn nhưng chạy chậm hơn Ngoài ra, người dùng cũng nên thử các chương trình như Rootkit Hook Analyzer, VICE, và RAIDE Cuối cùng, Malicious Software Removal Tool và Windows Live OneCare của Microsoft cũng là những lựa chọn không nên bỏ qua.
Mặc dù các công ty đã nỗ lực quảng cáo, hiện chưa có công cụ nào có thể phát hiện tất cả các loại rootkit, và khả năng xuất hiện một công cụ như vậy trong tương lai cũng rất khó khăn Ngoài ra, các công cụ phát hiện rootkit có thể đưa ra cảnh báo sai, đặc biệt với những chương trình hợp lệ có liên kết tới nhân của hệ điều hành Do đó, người dùng cần chuẩn bị để phân tích kết quả và đưa ra quyết định dựa trên từng trường hợp cụ thể.
Những vấn đề nhóm cảm thấy thích thú Rootkits
Rootkit được phát triển cho nhiều hệ điều hành như Linux, Solaris và các phiên bản Windows, gây nguy hiểm cho hệ thống máy tính ở cả user-mode và kernel-mode Sự xuất hiện của rootkit đã thúc đẩy sự phát triển của các giải pháp an ninh mạng, dẫn đến việc ra đời nhiều công cụ và phần mềm hiệu quả trong việc phát hiện và loại bỏ rootkit Điều này cũng giúp nâng cao nhận thức về mối đe dọa từ các cuộc tấn công mạng do tin tặc gây ra.
Gần đây, vụ tấn công “Cloud Snooper” đã được phát hiện, trong đó tin tặc đã lợi dụng một khách hàng của Amazon Web Services để triển khai rootkit, từ đó đẩy lưu lượng truy cập độc hại vào người dùng Sự xuất hiện của rootkit này đã cho phép kẻ tấn công điều khiển máy chủ từ xa một cách hiệu quả.
Rootkit thực chất là các trình điều khiển hệ thống, có nhiệm vụ giao tiếp với hệ điều hành Hầu hết các hệ thống máy tính hiện nay được phát triển bằng các ngôn ngữ lập trình như C và C++.