Retis One

Wirus komputerowy – najczęściej prosty program komputerowy, który w sposób celowy powiela się bez zgody użytkownika. Wirus komputerowy w przeciwieństwie do robaka komputerowego do swojej działalności wymaga nosiciela w postaci programu komputerowego, poczty elektronicznej itp. Wirusy wykorzystują słabość zabezpieczeń systemów komputerowych lub właściwości systemów oraz niedoświadczenie i beztroskę użytkowników.

Często wirusami komputerowymi mylnie nazywane są wszystkie złośliwe programy.



Podstawowe informacje o wirusach
Definicja


Wirus komputerowy to krótki program komputerowy, zwykle szkodzący systemowi operacyjnemu lub utrudniający pracę użytkownikowi komputera. Każdy wirus ma zdolność samopowielania. Jest to warunek konieczny, aby dany program można było nazywać wirusem.

Wirusy przenoszone są przeważnie w zainfekowanych wcześniej plikach (wirusy plikowe) lub w pierwszych sektorach fizycznych (na zerowej ścieżce) dysku twardego (wirusy dyskowe). Proces infekcji polega na odpowiedniej modyfikacji struktury plików lub sektorów. Zainfekowaną ofiarę nazywa się nosicielem, a proces samopowielania replikacją.

Długość typowego wirusa w czasach panowania DOS-u wahała się w granicach od kilkudziesięciu bajtów do kilku kilobajtów, choć już wtedy były wirusy o rozmiarze kilkudziesięciu kilobajtów. Obecnie klasyczne wirusy spotyka się rzadziej – częściej jest to hybryda wirusa z robakiem, a rozmiar kilkadziesiąt i więcej kilobajtów nie dziwi – tyle kodu bez problemu można ukryć w wielomegabajtowych bibliotekach czy programach. 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 lub 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 różnych czynności; najmniejsze wirusy potrafią tylko się powielać;
wykorzystanie cech środowiska operacyjnego – wirus napisany jako maksymalnie niezależny musi mieć 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:
kasowanie i niszczenie danych
rozsyłanie spamu
dokonywanie ataków na serwery internetowe
kradzież danych (hasła, numery kart płatniczych, dane osobowe)
wyłączenie komputera
wyświetlanie grafiki lub odgrywanie dźwięków
uniemożliwienie pracy na komputerze
umożliwienie przejęcia kontroli nad komputerem osobie nieupoważnionej
tworzenie botnetu
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 głównie 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 kilka bajtów. Jest tak dlatego, ponieważ do każdego wygenerowanego przez siebie programu kompilatory języków wysokiego poziomu dodają sporo kodu niewidocznego dla programisty. Kod ten odpowiedzialny jest między innymi za obsługę błędów, obsługę stosu oraz operacji wejścia-wyjścia. Na korzyść asemblera przemawia również to, że z jego poziomu mamy bardzo dużą swobodę w dostępie do pamięci i portów, a programista ma możliwość świadomego wpływu na kształt przyszłego programu, na przykład w zakresie używanych instrukcji czy rozwiązań programowych. Programy napisane w asemblerze są optymalne pod względem szybkości działania i długości kodu, a więc język ten jest jakby stworzony do programowania wirusów. Jedyną wadą asemblera jest to, że programów w nim napisanych nie można przenosić na komputery o innej architekturze, stąd mogą one egzystować tylko w jednej rodzinie komputerów.

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


Uważa 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 zostało to poprawione, lecz ze względu na kompromisy związane z łatwością używania i 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 problemu znaleźć w Internecie. Korzystają one z gotowych modułów w asemblerze i umożliwiają stworzenie wirusa o zadanych parametrach wybieranych zwykle przy pomocy przyjaznego użytkownikowi menu. Można w nim określić zakres infekowanych obiektów oraz rodzaj efektów które ma on wywoływać. Oprócz kodu wynikowego wirusa, generatory tworzą także źródła w asemblerze, co umożliwia zainteresowanemu pisaniem wirusów użytkownikowi dokształcenie się w tej dziedzinie.
Rodzaje wirusów komputerowych 

Wirusy można podzielić według wielu kryteriów. Przykładowy podział ze względu na infekowany obiekt:
wirusy dyskowe, infekujące sektory startowe dyskietek i dysków twardych
wirusy plikowe, które infekują pliki wykonywalne danego systemu operacyjnego
wirusy skryptowe
makrowirusy, których kod składa się z instrukcji w języku wysokiego poziomu, wykonywane przez interpreter.
wirusy komórkowe, na razie rzadkie ale być może w przyszłości mogą stanowić istotne zagrożenie w związku z rozwojem oprogramowania dla telefonów komórkowych i dostępnych usług. Przykładem może być wirus Cabir napisany w 2004 roku.

Pierwszy rodzaj wirusów był bardzo rozpowszechniony w czasach, kiedy powszechne było kopiowanie danych i programów na dyskietkach. Wirusy te przenosiły się między komputerami za pośrednictwem dyskietek. Uruchomione w środowisku nie posiadającym odpowiednich zabezpieczeń, zarażały pliki wykonywalne oraz kolejne dyskietki. Ich zmierzch przyszedł razem z wyparciem dyskietek przez CD-ROMy oraz rozpowszechnieniem Internetu. Dzisiaj są one właściwie niespotykane. Najbardziej znane przykłady wirusów z tej kategorii: Brain, Stoned, Michelangelo.

Wirusy plikowe są najpowszechniejszym, obok makrowirusów, typem wirusów. Tworzone są głównie w asemblerze. Wirusy te są programami, które potrafią dołączać swój kod do kodu wykonywalnego innego programu. Infekują pliki na dysku, w udostępnionych zasobach sieciowych lub wysyłają się w e-mailach poprzez SMTP. Przykładowe wirusy plikowe: Frodo, W95.CIH, W32.Magistr.

Wirusy skryptowe to samoreplikujące się skrypty powłoki. Zwykle infekują one inne skrypty. W DOS-ie występują jako pliki .bat, pod Linuksem jako skrypty bashowe, pod systemem Windows jako np. Visual Basic script (.vbs). Przykładowe wirusy: Bat.Rous, VBS.LoveLetter, SH.Sizer.

Inny rodzaj wirusów to programy zapisane jako makra. Infekują one dokumenty programów biurowych a rozprzestrzeniają się głównie za pośrednictwem poczty elektronicznej. Przykładowe wirusy: W95M.Concept, W97M.Melissa, W97M.Laroux.
Wirusy pasożytnicze 

Większość z istniejących wirusów to tzw. wirusy pasożytnicze. Charakteryzują się one tym, że wykorzystują swoje ofiary do transportu. Modyfikują ich strukturę wewnętrzną i oczywiście nie naprawiają jej. Plik użyty do transportu jest uszkodzony. Jedynym dla niego ratunkiem może być użycie szczepionki lub kopii zapasowych dla zainfekowanych plików. Ze względu na miejsce zajmowane w zainfekowanych plikach wirusy pasożytnicze dzielimy na:
Wirusy lokujące się na końcu pliku (ang. end of file infectors). Dopisują kod wirusa na koniec pliku, a następnie modyfikują początek pliku tak, aby wywołanie pliku uruchamiało wirusa
Wirusy nadpisujące. Lokują się na początku pliku, zwykle nie zapamiętują poprzednich danych w pliku i nieodwracalnie go niszczą
Wirusy nagłówkowe (ang. header infectors). Lokują się w nagłówkach plików EXE przeznaczonych dla systemu DOS. Ich nagłówek jest zawsze standardowo ustawiany przez programy linkujące na wielokrotność jednego sektora (512 bajtów). Wirusy te nie przekraczają rozmiaru jednego sektora
Wirusy lokujące się w pliku w miejscach gdzie jest jakiś pusty obszar. Obszar ten wypełniony jest ciągiem zer i można go nadpisać nie niszcząc pliku. Są to cave infectors
Wirusy lokujące się w dowolnym miejscu pliku. Są bardzo rzadkie i trudne do napisania, to tzw. surface infectors
Wirusy wykorzystujące część ostatniej JAP (Jednostki Alokacji Pliku). Korzystają z faktu, iż plik rzadko zajmuje dokładnie wielokrotność jednej JAP. Są to tzw. slack space infector
Wirusy towarzyszące

Wirusy te zwykle tworzone są w językach wysokiego poziomu. Wykorzystują hierarchię stosowaną przez system DOS, dotyczącą kolejności uruchamiania programów o tych samych nazwach a innych rozszerzeniach. Jeśli w jednym katalogu jest kilka programów o tej samej nazwie ale o różnych rozszerzeniach (EXE, COM, BAT), to w przypadku podania nazwy programu bez rozszerzenia, w pierwszej kolejności poszukiwany jest plik o rozszerzeniu COM, potem EXE, a na końcu BAT. Wirusy towarzyszące wykorzystują tę właściwość systemu DOS. Jeśli program ma rozszerzenie COM to wirus towarzyszący nie dokona infekcji. Jeśli natomiast program ma rozszerzenie EXE lub BAT, to plik z wirusem będzie miał rozszerzenie COM i może zostać omyłkowo uruchomiony nawet przez samego użytkownika systemu. Próba uruchomienia programu bez podania rozszerzenia w pierwszej kolejności uruchomi plik COM zawierający kod wirusa. Następnie wirus po uaktywnieniu się przekaże sterowanie do programu macierzystego.

Sprytnym rozszerzeniem tej techniki jest sposób infekcji wykorzystujący zmienną środowiskową PATH. Zmienna ta definiowana jest w pliku autoexec.bat i określa listę katalogów przeszukiwanych przez system DOS podczas uruchamiania programu. Wirus wykorzystujący tę technikę tworzy plik zawierający kod wirusa w dowolnym katalogu którego ścieżka znajduje się w zmiennej PATH przed katalogiem, w którym znajduje się zarażana ofiara.

Przykładowe zastosowanie tej techniki

Załóżmy, że plik autoexec.bat zawiera następującą linię: PATH = C:\;C:\DOS;C:\WINDOWS

Po podaniu nazwy programu przez użytkownika, w pierwszej kolejności przeszukiwany będzie dysk C, następnie katalog DOS a dopiero na końcu katalog WINDOWS. Przykładowy wirus towarzyszący do katalogu C:\DOS skopiuje plik o nazwie win.bat zawierający kod powodujący jakieś szkody w systemie. Użytkownik próbując uruchomić system WINDOWS zwykle z dowolnego katalogu wyda polecenie WIN i wciśnie ENTER. W pierwszej kolejności zostanie przeszukany katalog główny na dysku C. Następnie katalog DOS. System będzie szukał programu WIN o rozszerzeniach COM, EXE, BAT. W naszym przypadku zostanie odnaleziony program WIN.BAT zawierający kod wirusa. W ten sposób użytkownik sam zainfekuje swój system. Następnie wirus uruchomi system WINDOWS plikiem WIN.COM i użytkownik nawet nie będzie wiedział że dokonał infekcji.
Wirusy plików wsadowych 

Są to tzw. batchviruses, gdyż pliki wsadowe to pliki o rozszerzeniu BAT. Wirusy te wykorzystują do transportu właśnie pliki BAT. Potrafią wbrew pozorom być bardzo niebezpieczne i infekować również pliki COM oraz EXE, a nawet tablice partycji dysku. Po uruchomieniu zainfekowanego pliku wsadowego tworzony jest plik uruchamialny COM lub EXE, który zawiera właściwy kod infekujący pliki BAT. Plik BAT jest następnie kasowany, a plik wykonywalny jest uruchamiany.
Makrowirusy 

Makrowirusy nie zarażają programów uruchamialnych lecz dokonują destrukcji dzięki wykonywaniu swojego kodu zapisanego w plikach dokumentów Microsoft Office (doc, xls). W programie Microsoft Word jest to język WordBasic, a w programie Microsoft Excel jest to Visual Basic for Applications. Są to wirusy bardzo łatwo wykrywalne, a ponadto ich działanie może zostać zablokowane przez macierzyste aplikacje. Od chwili, gdy aplikacje Microsoft Office ostrzegają o istnieniu makr, wirusy tego typu nie są bardzo groźne, nie powstają także nowe. Wirusy tego typu mogą działać w programach Microsoft Office w środowisku Macintosh, pojawiały się jeszcze w pierwszych latach XXI wieku, ale nie były szczególnie groźne ani powszechne.
Inne programy o działaniu destrukcyjnym 

Obok powyżej opisanych rodzajów wirusów, istnieje szereg programów, które często uważane są za wirusy, lecz nimi nie są, gdyż ich sposób działania jest niezgodny z definicją wirusa. Również są szkodliwe dla komputera, ale w przeciwieństwie do wirusów, nie podczepiają się do innych plików. Są to:
robaki
bomby logiczne
króliki
fałszywki
zakraplacz
programy szpiegujące

Robaki – programy, których działanie polega na tworzeniu własnych duplikatów. Nie atakują one żadnych obiektów jak to czynią wirusy, a jedynie same się powielają. Oprócz zajmowania miejsca na dysku niekiedy wywołują również negatywne skutki uboczne. Robaki są najbardziej popularne w sieciach, gdzie mają do dyspozycji różne protokoły transmisji sieciowej dzięki którym mogą się rozprzestrzeniać.

Konie trojańskie – program będący koniem trojańskim, po uruchomieniu wykonuje normalną pracę i użytkownikowi wydaje się, że uruchomił zwykły program bądź grę. Jednak dodatkowo wykonywane są operacje szkodliwe, niezauważalne dla użytkownika. Konie trojańskie najłatwiej podrzucić w plikach udających nowe, popularne programy bądź gry.

Źródło: Wikipedia