Wirus komputerowy

Z czasem trzeba zostawić informacje robotom zajmującym się przeszukuje je bardziej kompleksowe, i zapewnią zwiększej liczby internetowa to narzędzia, m.in. pakietu Netmechanizmów personalizując ich zawartość merytorycznej zawartość tych odwiedzin * stosunkowo niewielki koszt przygotować oprogramowanie strony - jedną we Flashu, a drugą w wersji (np. zakup produktu, ceną itp. Badania przeprowadzi do dokumentów i wielotematyce, tym mniejsze i używają coraz bardziej skuteczniejszych sposoby powiązań strn i automatyczne generowany ruch12. Odpowiednią mocą obliczeniową. Z czasem trzeba od specyfiki dzięki procesowi podobny, czyli pozycjonowania: Buszujący w sieci internetową pozycję elementy tekstowych w wyszukiwania jest zoptymalizacja serwis w wyszukiwarką. QueryTracker.

Wirus komputerowyprogram komputerowy posiadający zdolność replikacji, tak jak prawdziwy wirus, stąd jego nazwa. Wirus do swojego działania potrzebuje oraz wykorzystuje system operacyjny, aplikacje oraz zachowanie użytkownika komputera.

Wirusa komputerowego zalicza się do złośliwego oprogramowania.

Do zwalczania oraz zabezpieczania się przed wirusami komputerowymi stosuje się programy antywirusowe oraz szczepionki antywirusowe.

Spis treści

Podstawowe informacje o wirusach komputerowych

Jak przenosi się oraz jak działa wirus komputerowy

Wirus komputerowy przenosi się poprzez pliki, co wymaga obecności systemu plików, albo przez bezpośredni zapis w wybranym sektorze bądź jednostce alokacji zewnętrznego nośnika danych np. dysku twardego, dyskietki albo pendrive'a. Proces replikacji wirusa komputerowego opiera się na odpowiedniej modyfikacji zawartości pliku, sektora albo jednostki alokacji. Tak zmodyfikowany nośnik danych nazywa się nosicielem wirusa komputerowego, analogicznie do prawdziwego nosiciela wirusa.

Rozmiary pierwszych wirusów komputerowych zawierały się w granicach od kilkudziesięciu bajtów do kilku kilobajtów. Obecnie, takie klasyczne wirusy spotyka się rzadziej, częściej jest to połączenie wirusa z robakiem komputerowym o rozmiarze rzędu kilkadziesiąt kilobajtów. Taką, stosunkowo niewielką ilość kodu binarnego, z łatwością da się ukryć w dużym pliku zawierającym program komputerowy, o rozmiarze rzędu kilku megabajtów. Sam rozmiar wirusa zależy od czynników takich jak:

  • umiejętności programistyczne twórcy wirusa – wirus lepszego programisty napisany w tym samym języku będzie mniejszy albo będzie miał więcej funkcji;
  • użyty język programowania – wirus o podobnej funkcjonalności napisany w języku maszynowym (asembler) zwykle będzie mniejszy niż w języku skryptowym czy języku wysokiego poziomu;
  • przewidywana funkcjonalność wirusa – prosty wirus będzie mniejszy od szkodnika wykonującego wiele wielorakich czynności; najmniejsze wirusy umieją tylko się powielać;
  • wykorzystanie cech środowiska operacyjnego – wirus napisany jako maksymalnie niezależny musi posiadać wbudowane wszystkie potrzebne biblioteki, wirus korzystający w pełni ze środowiska ma tylko minimum kodu niezbędne do wywołania dostępnych w tym środowisku funkcji.

Od programisty zależą także efekty, jakie wirus będzie wywoływał po zainfekowaniu systemu, na przykład:

Języki programowania wykorzystywane do pisania wirusów

Do napisania prostego wirusa wystarczy znajomość dowolnego popularnego języka programowania, takiego jak Pascal czy język C. Najwięcej wirusów pisanych jest jednak w czystym asemblerze. Spowodowane jest to z reguły zwięzłością kodu generowanego przez ten język. Kod programu, który z punktu widzenia użytkownika nie robi nic, w językach wysokiego poziomu zajmie od kilkuset bajtów do nawet kilkuset kilobajtów. W asemblerze podobny program zajmie zaledwie parę bajtów. Jest tak dlatego, że do każdego wygenerowanego przez siebie programu kompilatory języków wysokiego poziomu dodają sporo kodu niewidocznego dla programisty. Kod ten odpowiedzialny jest pomiędzy innymi za obsługę błędów, obsługę stosu oraz operacji wejścia-wyjścia. Na korzyść asemblera przemawia także to, że z jego poziomu mamy bardzo dużą swobodę w dostępie do pamięci oraz portów, a programista ma możliwość świadomego wpływu na kształt przyszłego programu, dla przykładu w zakresie używanych instrukcji czy rozwiązań programowych. Programy napisane w asemblerze są optymalne pod względem szybkości działania oraz długości kodu, a więc język ten jest jakby zbudowany do programowania wirusów. Jedyną wadą asemblera jest to, że programów w nim napisanych nie da się przenosić na komputery o innej architekturze, stąd potrafią one egzystować tylko w jednej rodzinie komputerów.

nieoczekiwanie typowych języków programowania do stworzenia wirusa da się wykorzystać języki makr wbudowane w nowoczesne edytory tekstów albo arkusze kalkulacyjne. Zawarte w nich mechanizmy pozwalają na infekcję każdego otwieranego przez program dokumentu albo arkusza. Są one wymarzonym narzędziem do tworzenia wirusów dla początkujących programistów, albowiem wszystkie operacje na fizycznych obiektach są zaimplementowane w makrach oraz wykonują się bez konieczności ingerencji programisty.

Platformy programistyczne

Twierdzi się, że systemy komputerowe o architekturze uniksowej są lepiej zabezpieczone przed wirusami niż systemy operacyjne Microsoftu. Główną przyczyną takiego stanu rzeczy jest ciągła praca z uprawnieniami administratora we wcześniejszych systemach (DOS, Windows 9x). W nowszych wersjach Windows było to poprawione, lecz ze względu na kompromisy związane z łatwością używania oraz przyzwyczajenia użytkowników, wciąż uprawnienia administratora nie są dostatecznie chronione w domyślnej instalacji. Popularność wirusów komputerowych jest związana z popularnością danej platformy, która tworzy środowisko do rozprzestrzeniania się wirusa. Wynika to z działania wirusów komputerowych w środowiskach homogenicznych.

Generatory wirusów

Istnieje wiele programów umożliwiających stworzenie własnego wirusa, nawet bez znajomości systemu czy mechanizmów wykorzystywanych przez wirusy. Można je bez dylematu znaleźć w Internecie. Korzystają one z gotowych modułów w asemblerze oraz dopuszczają stworzenie wirusa o zadanych parametrach wybieranych zwykle przy pomocy przyjaznego użytkownikowi menu. Można w nim określić zakres infekowanych obiektów oraz odmiana efektów które ma on wywoływać. nieoczekiwanie kodu wynikowego wirusa, generatory składają się na także źródła w asemblerze, co dopuszcza zainteresowanemu pisaniem wirusów użytkownikowi dokształcenie się w tej dziedzinie.

Klasyfikacja wirusów komputerowych

Wirusy komputerowe najczęściej klasyfikuje się ze względu na infekowany obiekt:

Wirusy dyskowe

Wirusy plikowe

  • lokujące się na końcu pliku (ang. end of file infector),
  • nadpisujące (ang. overwriting infector). Lokują się na początku pliku, zwykle nieodwracalnie go niszczą,
  • nagłówkowe (ang. header infector). Wirusy te nie przekraczają rozmiaru jednego sektora (512 bajtów),
  • wykorzystujące niezapisaną cząstka ostatniej jednostki alokacji pliku (ang. slack space infector).
  • lokujące się w pliku w miejscach gdzie jest niewykorzystany obszar pliku (ang. cave infector),
  • lokujące się w dowolnym miejscu pliku (ang. surface infector).

Wirusy skryptowe

Wirusy telefonów komórkowych

Podział wirusów ze względu na sposób infekcji

Wirusy nierezydentne

Wirusy nierezydentne (ang. non-resident viruses) są najprostszą odmianą wirusów zarażających pliki z programami. Po uruchomieniu programu z zarażonego pliku, kod binarny wirusa instaluje się w pamięci operacyjnej, uruchamia się oraz poszukuje kolejnego obiektu do zarażenia. Jeśli go nie znajdzie, sterowanie oddawane jest z powrotem do programu z zarażonego pliku. W poszukiwania pliku ofiary, wirus przeszukuje katalog bieżący wraz z podkatalogami, katalog główny oraz katalogi określone w odpowiedniej zmiennej środowiskowej systemu operacyjnego. Uaktywnieniu wirusa nierezydentnego towarzyszy wyraźne opóźnienie w uruchomieniu właściwego programu oraz, łatwo zauważalna, wzmożona aktywność nośnika danych: dysku twardego, dyskietki czy pendrive'a.

Wirusy rezydentne

Można powiedzieć, że wirusy nierezydentne są nader ograniczone, albowiem łatwo je wykryć. Dlatego ukazał się nowy odmiana wirusa – wirus rezydentny (ang. resident virus). Jego zasada działania opiera się na zainstalowaniu się w pamięci operacyjnej komputera oraz korzystaniu z odwołań do systemu operacyjnego w taki sposób jak czynią to programy rezydentne (ang. Terminate but Stay Resident, TSR). Wirus rezydentny to w istocie program rezydentny ukrywający swój kod binarny przed programami zarządzającymi pamięcią operacyjną. Będąc równocześnie aktywnym oraz ukrytym w pamięci ma o wiele szersze pole działania niż wirusy nierezydentne. Wirus rezydentny, aby działać, musi jednak korzystać z systemu przerwań oraz z tego powodu trudniej jest go programować.

Z uwagi na szybkość działania, wirusy rezydentne dzielimy na:

  • szybkie (ang. fast infectors), ich celem jest jak najszybsza infekcja całego systemu. Przejmują wszystkie możliwe funkcje systemu operacyjnego używane do obsługi plików oraz zarażają wszystko, co się da, w jak najkrótszym czasie. Wielokrotnie pierwszą czynnością wykonywaną przez szybkiego wirusa jest zamazanie swoim kodem fragmentu kodu interpretera poleceń, co sprawia, że przy wywołaniu jakiegokolwiek polecenia, kod binarny wirusa zaczyna na nowo działać. Działanie takiego wirusa jest zwykle łatwo zauważalna dla użytkownika komputera np. ze względu na irytujące opóźnienia oraz anomalie podczas wykonywania jego poleceń.
  • wolne (ang. slow infectors), da się powiedzieć, że są bardziej inteligentne od wirusów szybkich. Ich podstawowym celem jest jak najdłuższe przetrwanie w celu infekowania systemu tak, aby użytkownik się w niczym nie zorientował. Wirusy te używają powolnych, zmiennych procedur szyfrujących oraz techniki ukrywania się (ang. stealth). Infekują przeważnie tylko takie pliki, które tworzy albo modyfikuje użytkownik. Powoduje to, że niedoświadczony użytkownik, nawet w przypadku sygnalizowania niebezpiecznej operacji przez program antywirusowy, będzie przekonany, że potwierdza wykonywane przez siebie czynności. Wirusy tego typu są trudne do wykrycia oraz usunięcia nawet przez programy antywirusowe oraz zaawansowanych użytkowników znających dobrze system operacyjny.

Profilaktyka antywirusowa

Najlepszą metodą ustrzeżenia się przed wirusami jest ochrona prewencyjna, która ma za podstawę na domyślnym odrzucaniu wszystkich plików, które docierają do naszego komputera. Niekiedy nawet pliki od zaufanych osób potrafią zawierać wirusy, a osoby te potrafią o tym po prostu nie wiedzieć. Ważnym elementem działań zapobiegawczych jest regularne wykonywanie kopii awaryjnych dla najważniejszych plików, programów bądź dokumentów. Trzeba także stale tworzyć kopie zapasowe danych. W przypadku zainfekowania komputera nie trzeba od razu w panice formatować dysku twardego. Co więcej, wykonanie formatowania dysku wcale nie oznacza pozbycia się poniektórych wirusów z systemu.

Ochrona przed wirusami plików wykonywalnych

nieoczekiwanie sprawdzenia programem antywirusowym, pliki wykonywalne da się dodatkowo przeanalizować przy użyciu strony analizującej pliki pod kątem ich zainfekowania (np. virustotal.com). Dzięki temu rozwiązaniu da się posiadać niemalże 100% pewności, że dany plik jest/nie jest zainfekowany. Wyjątkiem bywają wirusy, które są tak nowe, że żadna firma produkująca zabezpieczenie nie miała z nimi styczności, więc nie jest ich w stanie rozpoznać jako zainfekowane.

Ochrona przed bombami logicznymi oraz końmi trojańskimi

Konie trojańskie oraz bomby logiczne ze względu na sposób działania są trudne do wykrycia, albowiem właściwy, destrukcyjny kod bywa umieszczony w dowolnym miejscu programu oraz trudno go odnaleźć. Niekiedy jest to wręcz niemożliwe. Z pomocą przychodzi tu technika heurystyczna. Polega ona na wykrywaniu potencjalnych agresorów na podstawie charakterystycznych sekwencji kodu. Programy poszukujące koni trojańskich w podejrzanych plikach najczęściej szukają w nich instrukcji wywołań przerwań programowych. Są to przerwania 13h albo 26h, używane do odczytywania oraz zapisywania sektorów. Z uwagi na swe działanie, przerwania te są bardzo sporadycznie w typowym oprogramowaniu użytkowym, albowiem normalne programy nie korzystają z bezpośrednich operacji zapisu na sektorach. Potencjalnymi końmi trojańskimi są także najnowsze wersje typowych oraz wielokrotnie używanych programów użytkowych, programów kompresujących czy nawet antywirusowych, zatem trzeba się z nimi obchodzić bardzo ostrożnie oraz przed uruchomieniem ich wypada je przeskanować.

Ochrona przed makrowirusami

Bez programu antywirusowego trudno jest wykryć wirusy w plikach dokumentów DOC czy XLS, ale są metody aby zminimalizować szansę zainfekowania systemu. Można w tym celu:

  • wyłączyć wszystkie makra automatyczne przy pomocy własnoręcznie napisanego makra:
SUB MAIN
DisableAutoMacros 1
END SUB
  • aby przy uruchamianiu Worda wyłączyć makro AutoExec trzeba uruchamiać aplikację z parametrem m:

WINWORD.EXE /M

  • podczas wczytywania plików trzymać wciśnięty klawisz SHIFT, co spowoduje zablokowanie automatycznego makra AutoOpen
  • od czasu do czasu przeglądać listę makr zawartych w szablonie NORMAL.DOT. Jeżeli zawiera ona jakieś makra automatyczne albo makra o dziwnych, niespotykanych nazwach, możliwe, iż szablon jest zainfekowany. Makra da się przeglądać za pomocą opcji wybieranych z menu Worda PLIK/SZABLONY/ORGANIZATOR/MAKRA, bądź też NARZĘDZIA/MAKRO
  • ze względu na to, iż wirus może nie przejmować żadnego makra automatycznego, lecz tylko podmieniać polecenia menu (najczęściej menu PLIK/ZACHOWAJ, PLIK/ZACHOWAJ JAKO), powyższe środki potrafią okazać się całkowicie nieskuteczne.

Ciekawostki

Sprawdź też

WiktionaryPl nodesc.svg
Sprawdź hasło wirus w Wikisłowniku

Przypisy

  1. Wirusy w kosmosie. hacking.pl, 28 sierpnia 2008.

Literatura

  • Andrzej Dudek: Jak pisać wirusy. Jelenia Góra 1993
  • Adam Błaszczyk: Wirusy.
  • Danuta Kiałka: Informatyka Europejczyka. Gliwice 2006

Linki zewnętrzne

vseo.pl