To pytanie ma już odpowiedź tutaj:
Pytam o to, ponieważ jestem ciekawy, czy w komputerze może istnieć wirus bez mojej wiedzy. Mówiąc ściślej, wirus, który nie emituje żadnych oznak.
To pytanie ma już odpowiedź tutaj:
Pytam o to, ponieważ jestem ciekawy, czy w komputerze może istnieć wirus bez mojej wiedzy. Mówiąc ściślej, wirus, który nie emituje żadnych oznak.
Odpowiedzi:
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.
shutdown -r -t 0
bez wymaganych uprawnień), lub po prostu czekać, aż użytkownik uruchomi się ponownie.
Pojawią się tam wszystkie normalne programy, ale ...
svchost
procesu (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).
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.
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 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.
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.
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.
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.
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ą.