TEMAT: Wirusy i programy antywirusowe.
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.
Do zwalczania, usuwania i zabezpieczania się przed wirusami używane są programy antywirusowe.
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
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.
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.
Najbardziej znane generatory wirusów to:
IVP - Instant Virus Production Kit
VCL - Virus Construction Laboratory
PS-MPC - Phalcon-Skism Mass Produced Code Generator
G2 - G Squared
NRLG - Nuke Randomic Life Generator
PROGRAMY ANTYWIRUSOWE
Program antywirusowy (antywirus) - program komputerowy, którego celem jest wykrywanie, zwalczanie, usuwanie i zabezpieczanie systemu przed wirusami komputerowymi, a często także naprawianie w miarę możliwości uszkodzeń wywołanych infekcją wirusową. Współcześnie najczęściej jest to pakiet programów chroniących komputer przed różnego typu zagrożeniami.
Programy antywirusowe często są wyposażone w dwa niezależnie pracujące moduły (uwaga: różni producenci stosują różne nazewnictwo):
skaner - bada pliki na żądanie lub co jakiś czas; służy do przeszukiwania zawartości dysku
monitor - bada pliki ciągle w sposób automatyczny; służy do kontroli bieżących operacji komputera
Program antywirusowy powinien również mieć możliwość aktualizacji definicji nowo odkrytych wirusów, najlepiej na bieżąco, przez pobranie ich z Internetu, ponieważ dla niektórych systemów operacyjnych codziennie pojawia się około trzydziestu nowych wirusów.
Widoczna jest tendencja do integracji narzędzi do ochrony komputera. Kiedyś był to jedynie skaner, który wyszukiwał wirusy, początkowo na podstawie sygnatur znanych wirusów, a potem także typujący pliki jako zawierające podejrzany kod za pomocą metod heurystycznych.
Obecnie poza skanerem, monitorem i modułem do aktualizacji sieciowej pakiet antywirusowy zawiera często także zaporę sieciową, moduły kontroli przesyłek poczty elektronicznej i plików pobieranych z sieci, a poza wirusami chroni też ogólnie przed złośliwym oprogramowaniem, czyli różnego rodzaju szkodliwym oprogramowaniem oraz dba o ochronę prywatności danych użytkownika. Nieraz zawiera też narzędzia ułatwiające administrację większej ilości stanowisk (np. zdalna aktualizacja czy zgłaszanie zagrożeń administratorowi sieci), co przydaje się w zarządzaniu lokalnymi sieciami firm i organizacji.