1. 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.

2. Co to jest wirus komputerowy?

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

3. 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.

4. 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.

5. 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.
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

6. 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.

7. 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.

8. 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.

9. 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. Owszem, ich działanie jest szkodliwe dla użytkownika systemu, lecz programy te nie doczepiają 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.
Bomby logiczne – różnią się od konia trojańskiego tym, że ukryte operacje nie są wykonywane od razu po ich uruchomieniu, lecz dopiero w odpowiednim czasie. Może to być zajście określonego zdarzenia w systemie bądź wielokrotne uruchomienie danego programu. Często uruchomienie ukrytych operacji następuje automatycznie po upłynięciu określonej liczby dni od momentu uruchomienia bomby.
Króliki, określane są również jako bakterie. To programy, które nie niszczą plików. Ich jedynym celem jest samokopiowanie. Typowy program w rodzaju bakterii lub królika może na przykład jednocześnie uruchomić kilka swoich kopii w systemach wieloprogramowych, lub stworzyć dwa nowe pliki z których każdy jest kopią oryginalnego pliku źródłowego bakterii. Oba programy mogą następnie skopiować się podwójnie i w ten sposób mogą rozmnożyć się do bardzo dużej liczby. Bakterie reprodukują się wykładniczo, zabierając całą moc obliczeniową procesora. Ten rodzaj ataku jest jedną z najstarszych form zaprogramowanych zagrożeń.
Fałszywki, zwane hoaxy, to inaczej ostrzeżenia przed nieistniejącymi wirusami. Cechą charakterystyczną fałszywego ostrzeżenia jest prośba o przesłanie go do możliwie dużej liczby osób – rzekomo w trosce o ich bezpieczeństwo. Początkujący internauci rozsyłają fałszywe alarmy do kogo się tylko da, co pozwala fałszywkom krążyć po Internecie całymi miesiącami w milionach egzemplarzy, doprowadzając do wściekłości osoby, które otrzymują je po raz n-ty. Możemy również otrzymać e-maila z wiadomością, że plik o podanej nazwie jest wirusem i można się go pozbyć jedynie poprzez usunięcie go. W rzeczywistości plik ten nie jest wirusem i może być nawet częścią systemu operacyjnego, a jego usunięcie może spowodować nieprzewidziane skutki. Jeśli trafi do nas takie ostrzeżenie, najlepiej wejść na stronę dowolnego producenta programów antywirusowych i sprawdzić czy nie jest to fałszywka.
Z punktu widzenia memetyki fałszywki należy uznać za wirusy umysłu, infekujące nie komputery jako takie, lecz umysły użytkowników, wykorzystując ich naiwność lub niedoświadczenie jak lukę w systemie.

Podział wirusów ze względu na ich działanie
Wirusy nierezydentne (ang. non-resident viruses)
Wirusy te są najprostszą odmianą wirusów zarażających pliki wykonywalne. Po uruchomieniu pliku nosiciela wirus poszukuje kolejnego obiektu, który może zarazić. Jeśli takowego nie znajdzie, sterowanie oddawane jest do nosiciela, a jeśli znajdzie to kolejny obiekt jest infekowany. Sposób poszukiwania ofiary może być różny. Zwykle przeszukiwany jest bieżący katalog oraz podkatalogi bieżącego katalogu, a także katalog główny oraz katalogi określone w zmiennej środowiskowej PATH.
Wirusy nierezydentne posiadają dwie zasadnicze wady. Pierwszą z nich jest to, że poszukiwanie ofiar po uruchomieniu pliku nosiciela wiąże się ze sporym opóźnieniem w uruchomieniu właściwego programu, oraz z łatwo zauważalną przez użytkownika wzmożoną aktywnością przeszukiwanego nośnika. Drugą wadą jest to, iż zarażają one inne pliki tylko i wyłącznie po uruchomieniu nosiciela, a więc nie mogą efektywnie infekować plików ani też skutecznie maskować swej obecności w systemie, tak jak czynią to wirusy rezydentne. Wirusy nierezydentne są najczęściej tworzone przez początkujących twórców wirusów. Bardzo łatwo jest stworzyć prostego wirusa nierezydentnego w asemblerze.
Wirusy rezydentne (ang. resident viruses) - Można powiedzieć, że wirusy nierezydentne są dość ograniczone, gdyż łatwo je wykryć. Stąd też wzięły się poszukiwania aby odkryć coś nowego. Za czasów systemu DOS trzeba było wynaleźć jakiś mechanizm, który pozwalałby w typowo jednozadaniowym środowisku stworzyć mechanizm sztucznej wielozadaniowości. Tak powstały wirusy rezydentne. Ich zasada działania polega na zainstalowaniu się w pamięci operacyjnej komputera i przejęciu odpowiednich odwołań do systemu w sposób podobny do tego, w jaki czynią to programy typu TSR (ang. Terminate but Stay Resident). Wirus rezydentny to w zasadzie program TSR, który po zainstalowaniu ukrywa swój kod przed programami przeglądającymi pamięć. Będąc jednocześnie aktywnym i ukrytym w pamięci ma o wiele szersze pole działania niż wirusy nierezydentne. Używa on techniki tzw. stealth do ukrywania się. Zawładnięcia systemem dokonuje poprzez przejęcie odpowiednich przerwań sprzętowych i funkcji obsługiwanych przez ogólnie dostępne przerwania programowe.
Ze względu na szybkość mnożenia się wirusy rezydentne dzielimy na szybkie infektory i wolne infektory.
Szybkie infektory (ang. fast infectors): ich celem jest jak najszybsza infekcja całego systemu. Przejmują wszystkie możliwe funkcje systemu DOS używane do obsługi plików i zarażają wszystko, co się da w maksymalnie krótkim czasie. Często pierwszą czynnością wykonywaną przez wirusa jest zniszczenie kodu w pamięci operacyjnej, dotyczącego zamazywalnej części interpretatora poleceń, co sprawia, że przy następnym wywołaniu jakiegokolwiek polecenia z poziomu DOS plik zawierający interpretator poleceń (najczęściej plik command.com) zostanie ponownie uruchomiony i natychmiast zainfekowany. Duża aktywność wirusów tego typu może być łatwo zauważalna dla użytkownika. Użycie najlepszych nawet technik stealth także się nie sprawdzi, zwłaszcza gdy użytkownik wykonuje dużo operacji dyskowych.
Wolne infektory (ang. slow infectors): można powiedzieć, że są bardziej inteligentne od szybkich infektorów. Ich głównym celem jest jak najdłuższe przetrwanie i powolne infekowanie systemu tak, aby użytkownik się w niczym nie zorientował. Wirusy te używają wolnych, zmiennych procedur szyfrujących i techniki stealth. Infekują przeważnie tylko takie obiekty, które tworzy lub 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ą bardzo trudne do wykrycia i usunięcia nawet przez bardzo zaawansowane programy antywirusowe i zaawansowanych użytkowników znających dobrze system operacyjny.

10. Profilaktyka antywirusowa


Najlepszą metodą ustrzeżenia się przed wirusami jest ochrona prewencyjna, która opiera się na domyślnym odrzucaniu wszystkich plików, które docierają do naszego komputera. Niekiedy nawet pliki od zaufanych osób mogą zawierać wirusy, a osoby te mogą o tym po prostu nie wiedzieć. Ważnym elementem działań zapobiegawczych jest regularne tworzenie kopii awaryjnych dla najważniejszych plików, programów bądź dokumentów. Trzeba również regularnie tworzyć kopie zapasowe danych. W przypadku zainfekowania komputera nie należy od razu w panice formatować dysku twardego. Co więcej, wykonanie formatowania dysku wcale nie oznacza pozbycia się wirusa z systemu (np. w przypadku Viruta).

Ochrona przed wirusami plików wykonywalnych

Oprócz sprawdzenia programem antywirusowym, pliki wykonywalne można dodatkowo przeanalizować przy użyciu strony analizującej pliki pod kątem ich zainfekowania (np. virustotal.com). Dzięki temu rozwiązaniu można mieć niemalże 100% pewności, że dany plik jest/nie jest zainfekowany. Wyjątkiem mogą być wirusy, które są tak nowe, że żadna firma produkująca zabezpiecznie nia miała z nimi styczności, więc nie jest ich w stanie rozpoznać jako zainfekowane. Ochrona przed bombami logicznymi i końmi trojańskimi
Konie trojańskie i bomby logiczne ze względu na sposób działania są trudne do wykrycia, gdyż właściwy, destrukcyjny kod może być umieszczony w dowolnym miejscu programu i 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 lub 26h, używane do odczytywania i zapisywania sektorów. Ze względu na swe działanie, przerwania te występują bardzo rzadko w typowym oprogramowaniu użytkowym, gdyż normalne programy nie korzystają z bezpośrednich operacji zapisu na sektorach. Potencjalnymi końmi trojańskimi są także najnowsze wersje typowych i często używanych programów użytkowych, programów kompresujących czy nawet antywirusowych, zatem należy się z nimi obchodzić bardzo ostrożnie i przed uruchomieniem ich wypada je przeskanować. Dobrym rozwiązaniem, pozwalającym uchronić się przed większością koni trojańskich i bomb, może być zainstalowanie monitora antywirusowego. Konie trojańskie są zwykle pisane przez początkujących programistów, którzy do przeprowadzania destrukcji używają przerwań programowych, a te mogą być łatwo przechwytywane i kontrolowane przez monitor.

Ochrona przed makrowirusami

Bez programu antywirusowego trudno jest wykryć wirusy w plikach dokumentów DOC czy XLS, ale istnieją 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 należy 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 lub makra o dziwnych, niespotykanych nazwach, możliwe, iż szablon jest zainfekowany. Makra można 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 mogą okazać się całkowicie nieskuteczne.