Lý lịch
Hệ điều hành có một thành phần được gọi là kernel. Một trong những trách nhiệm (nhiều) của kernel là quản lý bộ nhớ hệ thống (cả vật lý và ảo).
Là một phần của việc này, kernel chia bộ nhớ khả dụng thành hai vùng riêng biệt được gọi là chế độ người dùng và chế độ kernel. Nhân và trình điều khiển chia sẻ bộ nhớ chế độ nhân, và các chương trình người dùng và các thành phần hệ thống ít quan trọng hơn nằm trong vùng bộ nhớ chế độ người dùng.
Các quy trình trong chế độ người dùng thường không thể giao tiếp với những người ở chế độ kernel, ngoại trừ thông qua các kênh được chỉ định và kiểm soát đặc biệt.
Để đầy đủ, cần đề cập rằng các quy trình chạy trong chế độ người dùng cũng được cách ly với nhau, nhưng có thể giao tiếp với nhau một cách tự do hơn bằng cách sử dụng các phương tiện được cung cấp bởi hệ điều hành với điều kiện là các chương trình được thiết kế để làm như vậy.
Quy trình
Kernel cung cấp khả năng khởi chạy các tiến trình trong chế độ người dùng. Khi một quy trình được tạo, nó được thêm vào danh sách nội bộ các quy trình hiện đang tồn tại. Khi một chương trình như Trình quản lý tác vụ yêu cầu danh sách các quy trình, nó sẽ nhận được một tập hợp thông tin trong danh sách này, được lọc theo quyền của người dùng.
Một phương tiện cho phần mềm độc hại như rootkit để che giấu sự tồn tại của nó là loại bỏ trực tiếp chính nó khỏi bảng này. Làm xong việc này nó vẫn có thể thực thi, nhưng sẽ không còn xuất hiện trong danh sách quy trình thu được bằng các phương tiện thông thường.
Vì các quy trình này vẫn thực sự tồn tại và thực thi, chúng có thể được tìm thấy bằng cách kiểm tra các cấu trúc dữ liệu hạt nhân khác, chẳng hạn như bảng xử lý, chứa thông tin về tài nguyên mà một quy trình đã mở (ví dụ: tệp) hoặc bằng cách kiểm tra phân bổ bộ nhớ từ đó khó che giấu mà không cản trở khả năng hoạt động của phần mềm.
Trình điều khiển chế độ hạt nhân
Trình điều khiển Kernel Mode được sử dụng cho nhiều thứ, bao gồm cả việc tương tác với các thiết bị phần cứng vật lý. Chúng thực thi dưới sự kiểm soát của kernel khi cần thiết, nhưng vì chúng không phải là quá trình ở chế độ người dùng nên chúng không xuất hiện trong bảng quy trình. và do đó sẽ không xuất hiện trong Trình quản lý tác vụ hoặc các công cụ khác liên quan riêng đến các quy trình.
Có thể chạy mã trong chế độ kernel là một bước quan trọng để có thể che giấu hiệu quả sự tồn tại của mã thực thi. Trong các trường hợp thông thường, Windows yêu cầu mã trong chế độ kernel phải được đăng nhập để chạy, vì vậy phần mềm độc hại có thể cần sử dụng khai thác trong hệ điều hành, phần mềm khác hoặc thậm chí kỹ thuật xã hội để truy cập vào đây, nhưng khi mã được thực thi ở chế độ kernel, hãy ẩn đi trở nên dễ dàng hơn
Tóm lược
Tóm lại, có thể che giấu bằng chứng về sự tồn tại của các quá trình, có khả năng sẽ luôn có một số dấu hiệu cho thấy quá trình đó tồn tại, bởi vì nó thường sẽ luôn cần sử dụng một số dạng tài nguyên để làm bất cứ điều gì được thiết kế, khó khăn như thế nào phát hiện đó phụ thuộc vào phần mềm độc hại cụ thể.