Có phải tất cả các chương trình đang chạy trong máy tính đều hiển thị trong tab quy trình trong Trình quản lý tác vụ không? [bản sao]


Câu trả lời:


48

Có một lớp phần mềm độc hại có thể ẩn hoàn toàn khỏi hệ điều hành được gọi là rootkit .

Rootkit được sử dụng để che giấu bằng chứng của phần mềm độc hại khác tại nơi làm việc và được nhúng rất sâu trong hệ điều hành. Do nhúng sâu, họ có thể thao tác danh sách quy trình, bảng hệ thống tệp và các cấu trúc quan trọng khác đang hoạt động.

Bằng cách thao tác các cấu trúc hệ thống tệp trong bộ nhớ, họ có thể trả về kết quả sai hoặc gây hiểu lầm cho các thư mục, đặc biệt không hiển thị các tệp liên quan đến chính phần mềm độc hại. Các tệp ở đó và khởi động vào một hệ điều hành chưa bị nhiễm như Linux LiveCD sẽ hiển thị các tệp mặc dù chúng phải được lưu trữ ở đâu đó.

Tương tự, rootkit có thể đơn giản loại bỏ các quy trình nhất định khỏi bị báo cáo cho các chương trình như Trình quản lý tác vụ. Lõi hệ điều hành biết về chúng, vì nó cần để lên lịch cho chúng, nó vừa bị chặn không cho thế giới bên ngoài biết về chúng.


1
Tôi tò mò, làm thế nào để họ đạt được kỳ tích đó? Có vẻ như một cái gì đó mà Windows không nên cho phép ở nơi đầu tiên. Ý tôi là, ngay cả "quá trình hiển thị từ tất cả người dùng" cũng ít 'ẩn' hơn và 'phân loại' hơn
Raestloz

2
@Raestloz: Họ đạt được kỳ tích bằng cách truy cập root và sau đó viết lại Windows để loại bỏ các bit không cho phép. Tôi đã nghe nói rằng một số người trong số họ làm điều này bằng cách "khởi động" vào rootkit như một hệ điều hành, thay đổi Windows và sau đó họ chạy Windows, vì vậy cả người dùng và Windows đều không biết có gì bất thường.
Vịt Mooing

3
cũng nguy hiểm, có lẽ ai đó nên phát minh ra một phần mềm chống vi-rút chạy trên BIOS lol
Raestloz

1
@zyboxenter ngạc nhiên Các bản cập nhật Windows thực sự đã được ký và không thể giả mạo, nhưng bạn chỉ có thể giả mạo hộp thoại yêu cầu khởi động lại hoặc lừa người dùng khởi động lại theo bất kỳ cách nào khác hoặc buộc khởi động lại ( shutdown -r -t 0, không cần đặc quyền) hoặc chỉ cần đợi cho đến khi người dùng khởi động lại.
gronostaj

4
@zyboxenter ngạc nhiên Có thể, có thể không;) Flame đã khai thác Windows Update cho mục đích riêng của mình bằng cách giả mạo chứng chỉ, nhưng lỗ hổng đó đã được vá. Không có khai thác WU được biết đến công khai, nhưng điều đó không có nghĩa là không tồn tại. Cái được sử dụng bởi Flame trước đây cũng không được biết đến. (xem cuộc tấn công 0 ngày
gronostaj

16

Tất cả các chương trình bình thường sẽ xuất hiện ở đó, nhưng ...

  • không có tài khoản Quản trị viên, bạn sẽ chỉ có thể xem quy trình của riêng mình (Tài khoản quản trị viên có thể chọn xem quy trình của mọi người)
  • rootkit sẽ cố gắng che giấu sự tồn tại của nó bằng cách ẩn quy trình của nó khỏi danh sách, thỏa hiệp trình quản lý tác vụ (vì vậy nó không hiển thị cho anh ta), ẩn trong không gian địa chỉ quy trình khác ...
  • các dịch vụ sẽ chạy dưới dạng các luồng trong một svchostquy trình (trong hầu hết các trường hợp), do đó, không có điểm dễ dàng nào mà dịch vụ đang chạy trong một thể hiện svchost nhất định.

Có một số chương trình được thiết kế để phát hiện rootkit. Ví dụ, họ làm như vậy bằng cách kiểm tra danh sách các luồng được lập trình để thực thi và danh sách các quy trình trong hệ thống (một luồng không thuộc bất kỳ quy trình nào là dấu hiệu của một quy trình ẩn) hoặc danh sách các tệp được xem ở mức cao, và so sánh nó với các tệp mà nó đọc thủ công từ phân vùng đĩa.

Tuy nhiên, một khi bạn bị nhiễm bệnh, virus có thể che giấu sự hiện diện của nó tốt đến mức gần như không thể phát hiện ra. Những người thường được gọi là APT (mối đe dọa dai dẳng tiên tiến).


2
Một số trong những điểm này bị vô hiệu hóa một chút bởi Sysiternals Process Explorer - người dùng bị giới hạn có thể thấy tên tệp của các quy trình do người dùng khác chạy và các chú giải công cụ của Svchosts liệt kê những gì họ đang lưu trữ.
kirb

Ý của bạn là viết "mối đe dọa" hay ý của bạn là "chủ đề"? Nó thực sự hoạt động ở đó;)
Konerak

Làm thế nào để một bộ phát hiện rootkit liệt kê các luồng hoặc các quy trình? Nếu đó là một cách thông thường / WinAPI, thì rootkit có thể điều khiển phép liệt kê và trình phát hiện rootkit sẽ không nhận thấy điều này không?
Ray

1
@DebugErr, họ xem xét cấp độ cao và cấp độ thấp, sau đó báo cáo sự khác biệt (đôi khi tạo ra dương tính giả, chẳng hạn như khi một tệp đã được thay đổi ở giữa). Bằng cách kiểm tra danh sách các luồng được lập trình để thực thi, tôi đã tham khảo danh sách liên kết đôi được sử dụng bởi bộ lập lịch hệ điều hành tức là. mức độ hoàn toàn thấp: nếu không có ở đó, nó sẽ không có được một lát cắt thời gian (althogh có nhiều nơi để kiểm tra hơn, như ISR).
Ángel

5

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ể.


3

Virus ngày nay khá tinh vi. Có thể là một virus trên máy tính của bạn, nhưng không hiển thị trong Task Manager . Có thể bản thân Trình quản lý tác vụ (và các bộ phận khác của hệ điều hành) bị xâm nhập, do đó che giấu vi-rút. Ví dụ, một rootkit.

Nếu bạn đang dự định dựa vào Trình quản lý tác vụ để kiểm tra vi-rút, thì bạn nên dừng ngay bây giờ. Cài đặt phần mềm chống vi-rút và thậm chí phần mềm chống vi-rút đôi khi sẽ không phát hiện thấy vi-rút trên PC của bạn.


0

Có một cách đơn giản hơn để "ẩn virus" ngoài những cách khác đã được giải thích độc đáo trong các câu trả lời khác:

Một DLL bị xâm nhập (thư viện liên kết động)

Rất nhiều chương trình - gần như tất cả những chương trình không thành công - cần một hoặc nhiều DLL để chạy. Một số thuộc về chính HĐH (ví dụ hal.dll, trừu tượng truy cập phần cứng cho Windows), một số chỉ được sử dụng bởi một chương trình, được chia thành nhiều phần nhỏ hơn (một tệp .exe và nhiều tệp có chức năng lõi, bổ sung, v.v.) Bạn không khiến virus của mình chạy mọi lúc như một quy trình hoặc dịch vụ thông thường, nhưng virus của bạn sẽ rất khó tìm thấy, vì nó sẽ trông giống như một thành phần chương trình hoặc chương trình hoàn toàn vô tội.

Đọc thêm: http://msitpros.com/?p=2012


Và có một điều rất hấp dẫn về loại vi-rút này: có hàng tấn trang web cung cấp tải xuống miễn phí (không yêu cầu thanh toán) các dll có thể vì lý do này hoặc lý do đó bị mất trên máy tính của bạn. Vì khả năng so sánh tổng kiểm tra của tập tin gốc và tập tin mới rất hạn chế và hầu như không ai quan tâm, dll-virus có thể xâm nhập và lưu lại trong hệ thống trong một thời gian dài (trừ khi, tất nhiên, một chương trình chống vi-rút phát hiện họ và người dùng đồng ý xóa - bạn đã thấy mẫu này rồi).

Từ câu hỏi tôi nói rằng chúng ta nói về Windows ở đây, nhưng kỹ thuật này cũng có thể áp dụng cho các hệ điều hành khác.


0

TL; DR: Trình quản lý tác vụ của Windows khá hạn chế về những gì nó có thể làm và nó * sẽ không bao giờ hiển thị mọi quy trình đang chạy trên hệ thống của bạn. Muốn chứng minh? Đếm (khoảng) lượng RAM mà các quy trình được hiển thị trong Trình quản lý tác vụ đang sử dụng và so sánh nó với mức sử dụng RAM của hệ thống; bạn nên có ít nhất 100 MB RAM chưa được tính và đôi khi, nó tăng lên khoảng 1GB, tùy thuộc vào việc bạn đang sử dụng hệ thống để làm gì. Thẻ đồ họa cũng có thể lấy một số bộ nhớ từ RAM cùng với RAM GDDR của chính nó. *

Để mở rộng câu trả lời của Pavel Petman, tôi có thể thêm rằng nhiều công cụ gian lận tinh vi cho các trò chơi dựa vào việc tiêm mã vào các DLL trò chơi cho phép gian lận của chúng.

Kiểu thỏa hiệp này khá khó phát hiện, và kỹ thuật tương tự có thể được áp dụng trong câu hỏi này. Nếu, giả sử, một vi-rút muốn không bị phát hiện, nó có thể là bản cập nhật Windows của loại trích xuất chính nó vào các thư mục hệ thống, vi-rút có thể ghi đè lên một tệp hệ thống quan trọng. Hầu hết các chương trình chống vi-rút sẽ không phát hiện loại vi-rút này, có nghĩa là vi-rút có thể tiếp tục tiêm mã vi-rút vào các tệp DLL quan trọng của Windows (và cả .exes).

Khi một khách hàng của tôi kể về hành vi bất thường, tôi luôn chạy Process Explorer (tải xuống từ Microsoft) để phát hiện bất kỳ vi rút nào đang chạy. Process Explorer có thể cho bạn biết chính xác các tiến trình đang chạy (ngay cả những tiến trình không có trong Trình quản lý tác vụ) và cả các mô-đun DLL mà họ đang sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.