Czy wszystkie programy uruchomione na komputerze są wyświetlane na karcie procesów w Menedżerze zadań? [duplikować]


Odpowiedzi:


48

Istnieje klasa złośliwego oprogramowania, które może całkowicie ukryć się przed systemem operacyjnym znanym jako rootkit .

Rootkity służą do ukrywania dowodów działania innego złośliwego oprogramowania i są bardzo głęboko osadzone w systemie operacyjnym. Ze względu na ich głębokie osadzanie są w stanie na bieżąco manipulować listami procesów, tabelami systemów plików i innymi ważnymi strukturami.

Manipulując strukturami systemu plików w pamięci, mogą zwracać fałszywe lub wprowadzające w błąd wyniki dla katalogów, w szczególności nie pokazując plików powiązanych z głównym złośliwym oprogramowaniem. Pliki są tam i uruchomienie systemu w niezainfekowanym systemie operacyjnym, takim jak Linux LiveCD, pokaże pliki, ponieważ muszą one być gdzieś zapisane.

Podobnie rootkity mogą po prostu usunąć niektóre procesy z raportów do programów takich jak Menedżer zadań. Rdzeń systemu operacyjnego wie o nich, ponieważ musi je zaplanować, właśnie został zablokowany przed informowaniem świata zewnętrznego o nich.


1
Jestem ciekawy, jak oni to osiągają? Wygląda na to, że system Windows przede wszystkim nie powinien na to pozwolić. To znaczy, nawet „pokaż proces wszystkim użytkownikom” mniej „ukrywa się”, a bardziej „kategoryzuje”
Raestloz,

2
@ Raestloz: Osiągają wyczyn, uzyskując dostęp do konta root, a następnie przepisując system Windows, aby usunąć bity, które go uniemożliwiają. Ja słyszałem , że niektóre z nich to zrobić „rozruch” na rootkita jako OS, zmieniając system Windows, a następnie uruchomić systemu Windows, więc ani użytkownik ani Windows ma pojęcia, że coś jest niezwykłe.
Mooing Duck

3
cholera, może ktoś powinien wymyślić antywirusa, który działa na BIOS-ie lol
Raestloz

1
@zyboxenterprises Prawdziwe aktualizacje systemu Windows są podpisane i nie można ich sfałszować, ale można sfałszować tylko okno dialogowe żądania ponownego uruchomienia lub nakłonić użytkownika do ponownego uruchomienia w jakikolwiek inny sposób, albo wymusić ponowne uruchomienie ( shutdown -r -t 0bez wymaganych uprawnień), lub po prostu czekać, aż użytkownik uruchomi się ponownie.
gronostaj

4
@zyboxenterprises Może, a może nie;) Flame wykorzystał Windows Update do własnych celów poprzez sfałszowanie certyfikatu, ale ta luka została już załatana. Nie ma publicznie znanych exploitów WU, ale to nie znaczy, że nie istnieją. Ten używany przez Flame'a również nie był wcześniej znany. (patrz atak 0-dniowy
gronostaj

16

Pojawią się tam wszystkie normalne programy, ale ...

  • bez konta administratora będzie można zobaczyć tylko własny proces (konta administratora mogą wyświetlać procesy wszystkich)
  • rootkity będą próbowały ukryć swoje istnienie, ukrywając swój proces przed listą, narażając menedżera zadań (aby go nie pokazywał), ukrywając się w przestrzeni adresowej innego procesu ...
  • usługi będą działały jako wątki w ramach svchostprocesu (w większości przypadków), więc nie ma łatwego punktu, w którym usługa działa pod daną instancją svchost.

Istnieje kilka programów przeznaczonych do wykrywania rootkitów. Robią to, sprawdzając na przykład listę wątków zaprogramowanych do wykonania i listę procesów w systemie (wątek nienależący do żadnego procesu jest oznaką procesu ukrytego) lub listę plików widocznych na wysokim poziomie, i porównanie go z plikami, które ręcznie odczytuje z partycji dysku.

Niemniej jednak po zainfekowaniu wirus może tak dobrze ukryć swoją obecność, że prawie niemożliwe jest jego wykrycie. Są to zwykle nazywane APT (zaawansowane trwałe zagrożenie).


2
Niektóre z tych punktów są nieco unieważnione przez Sysinternals Process Explorer - ograniczeni użytkownicy mogą zobaczyć nazwy plików procesów uruchomionych przez innego użytkownika, a podpowiedzi svchosts zawierają listę tego, co obsługują.
kirb

Czy miałeś na myśli napisać „zagrożenie”, czy miałeś na myśli „wątek”? Właściwie to tam działa;)
Konerak

W jaki sposób wykrywacz rootkitów wylicza wątki lub procesy? Jeśli jest to typowy sposób / WinAPI, czy rootkit nie może manipulować wyliczaniem, a wykrywacz rootkitów tego nie zauważy?
Ray

1
@DebugErr, patrzą na wysoki i niski poziom, a następnie zgłaszają różnice (czasami wytwarzają fałszywe alarmy, na przykład gdy plik został zmieniony pomiędzy nimi). Przez sprawdzenie listy wątków zaprogramowanych do realizacji byłem odnosząc się do listy podwójnie związany używanym przez OS harmonogramu tj. całkowicie niski poziom: jeśli go nie ma, nie ma przedziału czasowego (choć jest więcej miejsc do sprawdzenia, takich jak ISR).
Ángel

5

tło

System operacyjny ma składnik znany jako jądro. Jednym z (wielu) obowiązków jądra jest zarządzanie pamięcią systemową (fizyczną i wirtualną).

W ramach tej czynności jądro dzieli dostępną pamięć na dwa odrębne regiony znane jako tryb użytkownika i tryb jądra. Jądro i sterowniki współużytkują pamięć trybu jądra, a programy użytkownika i mniej krytyczne komponenty systemu znajdują się w obszarze pamięci trybu użytkownika.

Procesy w trybie użytkownika zasadniczo nie mogą komunikować się z tymi w trybie jądra, z wyjątkiem specjalnie wyznaczonych i kontrolowanych kanałów.

Dla kompletności należy wspomnieć, że procesy działające w trybie użytkownika są również odizolowane od siebie, ale mogą swobodniej komunikować się ze sobą za pomocą udogodnień zapewnianych przez system operacyjny, pod warunkiem, że programy są do tego przeznaczone.

Procesy

Jądro zapewnia możliwość uruchamiania procesów w trybie użytkownika. Po utworzeniu proces jest dodawany do wewnętrznej listy istniejących procesów. Gdy program, taki jak Menedżer zadań, prosi o listę procesów, otrzymuje podzbiór informacji na tej liście, filtrowanych według uprawnień użytkownika.

Jednym ze sposobów ukrywania swojego złośliwego oprogramowania, takiego jak rootkit, jest bezpośrednie usunięcie się z tej tabeli. Po wykonaniu tej czynności może nadal działać, ale nie będzie już pojawiać się na liście procesów uzyskanej w zwykły sposób.

Ponieważ procesy te nadal istnieją i są wykonywane, można je znaleźć, sprawdzając inne struktury danych jądra, takie jak tabele uchwytów, które przechowują informacje o zasobach otwartych przez proces (np. Pliki), lub badając przydziały pamięci, z których jest więcej trudne do ukrycia bez utrudniania funkcjonowania oprogramowania.

Sterowniki trybu jądra

Sterowniki trybu jądra używane do wielu rzeczy, w tym do interakcji z fizycznymi urządzeniami sprzętowymi. Wykonują się one w razie potrzeby pod kontrolą jądra, ale ponieważ nie są procesem trybu użytkownika, nie pojawiają się w tabeli procesów. i dlatego nie pojawi się w Menedżerze zadań ani innych narzędziach związanych wyłącznie z procesami.

Możliwość uruchomienia kodu w trybie jądra jest ważnym krokiem do skutecznego ukrycia istnienia wykonywanego kodu. W normalnych okolicznościach system Windows wymaga podpisania kodu w trybie jądra w celu uruchomienia, więc złośliwe oprogramowanie może wymagać użycia exploitów w systemie operacyjnym, innym oprogramowaniu lub nawet inżynierii społecznej, aby się tu dostać, ale gdy kod zostanie uruchomiony w trybie jądra, ukrywa się staje się łatwiejsze.

Podsumowanie

Podsumowując, możliwe jest ukrycie dowodów na istnienie procesów, prawdopodobnie zawsze będzie jakieś wskazanie, że proces istnieje, ponieważ generalnie zawsze będzie musiał użyć jakiejś formy zasobów, aby zrobić to, do czego został zaprojektowany, jak trudne wykrycie zależy od konkretnego złośliwego oprogramowania.


3

Wirusy są obecnie dość wyrafinowane. Nie może być wirus na komputerze, ale nie pojawiają się w Menedżerze zadań . Menedżer zadań (i inne części systemu operacyjnego) może zostać narażony na szwank, ukrywając w ten sposób wirusa. Na przykład rootkit.

Jeśli planujesz polegać na Menedżerze zadań w celu wykrycia wirusów, powinieneś teraz przestać. Zainstaluj program antywirusowy, a nawet program antywirusowy czasami nie wykryje wirusa na twoim komputerze.


0

Jest jeszcze jeden prosty sposób „ukrywania wirusa” oprócz innych, które zostały już dobrze wyjaśnione w innych odpowiedziach:

Kompromisowa biblioteka DLL (biblioteka połączona dynamicznie)

Wiele programów - prawie wszystkie nieistotne - potrzebuje jednej lub więcej bibliotek DLL do uruchomienia. Niektóre należą do samego systemu operacyjnego (np. Hal.dll, który abstraktuje dostęp do sprzętu dla systemu Windows), niektóre są używane tylko przez jeden program, który jest podzielony na więcej małych kawałków (jeden plik .exe i więcej plików .dll z podstawową funkcjonalnością, wtyczki itp.) Nie uruchamiasz wirusa przez cały czas jak zwykły proces lub usługę, ale naprawdę trudno będzie go znaleźć, ponieważ będzie wyglądał jak całkowicie niewinny program lub składnik programu.

Dalsza lektura: http://msitpros.com/?p=2012


I jest jedna rzecz bardzo atrakcyjna w tego rodzaju tworzeniu wirusów: istnieje mnóstwo stron internetowych oferujących bezpłatne (nie wymaga płatności) pobieranie dll, które mogą z tego lub z tego powodu zaginąć na twoim komputerze. Ponieważ możliwość porównania sum kontrolnych oryginalnego i nowego pliku .dll jest bardzo ograniczona i prawie nikogo to nie obchodzi, wirusy dll mogą wejść i pozostać w systemie przez długi czas niezauważone (chyba że oczywiście program antywirusowy wykryje je, a użytkownik zgadza się na usunięcie - już widzisz wzór).

Z pytania, które rozumiem, mówimy tutaj o systemie Windows, ale ta technika może równie dobrze mieć zastosowanie do innych systemów operacyjnych.


0

TL; DR: Menedżer zadań systemu Windows jest dość ograniczony, co może zrobić, i to * nie będzie kiedykolwiek pokazać wszystkie procesy uruchomione w systemie. Chcesz dowód? Policz (z grubsza) ilość pamięci RAM używanej przez procesy przedstawione w Menedżerze zadań i porównaj ją z użyciem pamięci RAM przez system; powinieneś mieć co najmniej 100 MB pamięci RAM, a czasami wzrasta do około 1 GB, w zależności od tego, do czego używasz systemu. Karty graficzne mogą również pobierać trochę pamięci z pamięci RAM wraz z własną pamięcią RAM GDDR. *

Aby rozwinąć odpowiedź Pavela Petmana, mogę dodać, że wiele wyrafinowanych silników cheatów do gier polega na wstrzykiwaniu kodu do bibliotek DLL gier, które umożliwiają ich oszustwo.

Tego rodzaju kompromis jest dość trudny do wykrycia i w tym pytaniu można zastosować tę samą technikę. Jeśli powiedzmy, że wirus chce pozostać niewykryty, może udawać aktualizację systemu Windows typu, który wyodrębnia się do katalogów systemowych, wirus może zastąpić krytyczny plik systemowy. Większość programów antywirusowych nie wykrywa tego typu wirusa, co oznacza, że ​​wirus może dalej wstrzykiwać kod wirusa do krytycznych bibliotek DLL systemu Windows (a także .exes).

Kiedy mój klient mówi o nietypowym zachowaniu, zawsze uruchamiam Process Explorer (pobierz z Microsoft), aby wykryć uruchomionego wirusa. Process Explorer może dokładnie powiedzieć, które procesy są uruchomione (nawet te, których nie ma w Menedżerze zadań), a także jakich modułów DLL używają.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.