Wirusy.pdf

(541 KB) Pobierz
1867625 UNPDF
SPIS ROZDZIAŁÓW
Wstęp ............................................ XV
Rozdział 1. Podstawowe wiadomości o wirusach ..............................1
Rozdział 2. Rodzaje wirusów ..............................................................5
Rozdział 3. Podział wirusów ze względu na sposób działania po
uruchomieniu ..................................................................17
Rozdział 4. Obiekty atakowane przez wirusy
....................................33
Rozdział 5. Instalacja w pamięci operacyjnej
....................................97
Rozdział 6. Przejmowanie przerwań i znajdowanie czystych wejść do
systemu ........................................................................109
Rozdział 7. Ukrywanie się w systemie operacyjnym
.......................143
Rozdział 8. Szyfrowanie kodu
..........................................................173
Rozdział 9. Inne mechanizmy stosowane przez wirusy
...................213
Rozdział 10. Przyszłość wirusów
.......................................................235
Rozdział 11. Rodzaje programów antywirusowych
............................241
Rozdział 12. Techniki używane przez programy antywirusowe
.........247
Rozdział 13. Konwencje stosowane przez programy antywirusowe
-standard CARO ............................................................299
Rozdział 14. Profilaktyka antywirusowa
............................................311
Rozdział 15. Literatura
.......................................................................319
SPIS TREŚCI
WstępXV
Rozdział 1. Podstawowe wiadomości o wirusach .......... 1
1.1. Co to jest i jak działa wirus komputerowy ............................... 3
1.2. Języki programowania wykorzystane do pisania wirusów ...... 4
Rozdział 2. Rodzaje wirusów .......................................... 5
2.1. Wirusy pasożytnicze (ang. parasite infectors) ....................... 7
2.2. Wirusy towarzyszące (ang. companion infectors) ................. 8
2.3. Wirusy plików wsadowych (ang. batchviruses)....................... 12
2.4. Makrowirusy, wirusy makrosów (ang. macroviruses) .............. 13
2.5. Generatory wirusów ................................................................ 14
2.6. Robaki (ang. worms) .............................................................. 14
2.7. Konie trojańskie (ang. trojan horses) ...................................... 14
2.8. Bomby logiczne (ang. logical bombs)...................................... 15
Rozdział 3. Podział wirusów ze względu na sposób działania
po uruchomieniu ............................................................ 17
3.1. Wirusy nierezydentne (ang. non-resident yiruses) ............... 19
3.2. Wirusy rezydentme (ang. resident viruses) .......................... 21
3.2.1. Szybkie infektory (ang. fast infectors) .................................. 31
3.2.2. Wolne infektory (ang. slow infectors) ................................... 32
Rozdział 4. Obiekty atakowane przez wirusy .................. 33
4.1. Pliki...................................................................................35
4.1.1. Pliki wykonywalne COM ............................. 35
4.1.2. Pliki wykonywalne EXE ............................... 45
4.1.2.1. Pliki EXE dla systemu DOS (stare EXE) ..................... 45
4.1.2.2. Pliki EXE dla trybu chronionego (nowe EXE) .................. 57
4.1.2.2.1. Pliki EXE dla Windows (NE) ............................. 59
4.1.3. Pliki zawierające sterowniki urządzeń SYS (BIN, DRV) .... 66
4.1.4. Pliki systemowe DOS ............................... 75
4.1.4.1. Interpretator poleceń .................................... 75
4.1.4.2. Jądro systemu (ang, kemel infector) ........................ 75
4.1.5. Pliki wsadowe BAT ................................. 76
4.1.6. Pliki DOC ......................................... 77
4.1.7. Pliki XLS.......................................... 79
4.1.8. Pliki ASM ......................................... 80
4.2. Sektory systemowe .................................. 86
4.2.1. Główny Rekord Ładujący (ang. Master Boot Record - MBR) 86
4.3. Rekord ładujący (ang. BOOt-sector)..................... 92
4.4. Jednostki Alokacji Plików (JAP) (ang. dusters) ............ 94
4.5. Wirusy kombinowane (ang. multipartition) ................ 96
Rozdział 5. Instalacja w pamięci operacyjnej ............. 97
5.1. Instalacja w tablicy wektorów przerwań .................. 99
5.2. Instalacja w obszarze zmiennych DOS .................. 100
5.3. Instalacja w pamięci poniżej 640kB i UMB ............... 100
5.4. Instalacja w pamięci HMA ............................. 106
5.5. Nietypowe metody instalacji ........................... 107
5.5.1. Pamięć ekranu .................................... 107
5.5.2. Bufory dyskowe DOS ............................... 108
Rozdział 6. Przejmowanie przerwań i znajdowanie czystych
wejść do systemu ................................... 109
6.1. Najczęściej przejmowane i wykorzystywane przerwania ..... 111
6.2. Wykorzystanie funkcji DOS ............................ 117
6.3. Bezpośrednie zmiany w tablicy wektorów przerwań ,.,,,., 118
6.4. Włączanie się do istniejącego łańcucha obsługi przerwania
i znajdowanie czystych wejść do systemu (ang. tunnelling) .... 119
6.4.1. Korzystanie ze stałych adresów w systemie (przerwania
21hl2Fh) ............................................ 120
6.4.2. Wykorzystanie trybu krokowego procesora (ang. tracing)... 122
6.4.3. Tuneling rekursywny (ang, recursive tunnelling)........... 122
6.4.4. Trik 2F/13 ........................................ 124
6.5. Wykorzystanie trybu chronionego ....................... 141
6.6. Włączanie się jako program obsługi urządzenia ........... 142
Rozdział 7. Ukrywanie się w systemie operacyjnym ........ 143
7.1. Technika stealth ..................................... 145
7.1.1. Podawanie prawdziwych długości plików (ang, semi-stealth) 146
7.1.1.1. Polecenie DIR wywoływane z poziomu DOS ................. 146
7.1.1.2. Programy nakładkowe używające krótkich nazw programów
(DOS, Windows 3.1)...................................... 149
7.1.1.3. Programy wykorzystujące długie nazwy plików (Windows95)
oraz polecenie DIR wywoływane z poziomu okna Tryb MS-DOS . 150
7.1.2. Podawanie oryginalnych długości i zawartości plików
(ang.full stealth)....................................... 152
7.1.3. Podawanie prawdziwej zawartości sektorów (ang. Sectorlevel stealth)
.............................................. 169
7.1.4. Fałszowanie odczytywanych sektorów na etapie obsługi przerwań
sprzętowych (ang. hardware level stealth) ............... 169
7.2. Modyfikacja CMOS-a ................................. 170
7.3. Atrybut etykiet dysku (ang. VolumeID) .................. 171
7.4. Dodatkowe ścieżki na dyskach ......................... 171
Rozdział 8. Szyfrowanie kodu ......................... 173
8.1. Procedury szyfrujące kod ............................. 177
8.2. Procedury dekodujące ................................ 178
8.2.1. Polimorficzne procedury dekodujące ................... 179
8.2.1.1. Semi-polimorfizm ........................................ 179
8.2.1.2. Pełny polimorfizm ........................................ 193
Rozdział 9. Inne mechanizmy stosowane przez wirusy ..... 213
9.1. Sposoby dostępu do dysków .......................... 215
9.2. Sztuczki antydebuggerowe, antydeasemblerowe, antyemulacyj-
ne i antyheurystyczne .................................... 227
9.3. Optymalizacje kodu .................................. 231
9.4. Retrostruktury (techniki anty-antywirusowe), czyli walka z zainstalowanymi
monitorami antywirusowymi .................... 232
Rozdział 10. Przyszłość wirusów ......................... 235
10.1. Wirusy dla różnych systemów (ang. multisystem, multiplatform
viruses) ............................................. 237
10.2. Wirusy infekujące wewnątrzplikowo (ang, surface infectors) 238
10.3. Wirusy zmienne genetycznie (mutujące swój kod) ........ 238
10.4. Wirusy infekujące nowe, nie infekowane dotychczas obiekty 239
Rozdział 11. Rodzaje programów antywirusowych ......... 241
11.1. Skanery (ang. scaners) ............................. 243
11.2. Monitory (ang. behaviour blockers, interceptors, resident
monitors) ............................................ 243
11.3. Szczepionki (ang. disinfectors) ....................... 244
11.4. Programy autoweryfikujące .......................... 244
11.5. Programy zliczające sumy kontrolne (ang. integniy checkers). 245
Rozdział 12. Techniki używane przez programy antywirusowe
....................................... 247
12.1. Skaning .......................................... 249
12.2. Heurystycze wyszukiwanie wirusów .................... 272
12.3. Tryb krokowy ...................................... 284
12.4. Emulacja procesora ................................. 284
12.5. Przynęty (ang. baits, decoys) ......................... 285
12.6. Odświeżanie programów systemowych w sektorach ....... 285
12.7. Blokowanie programów używających trybu krokowego ..... 286
12.8. Pobieranie wielkości pamięci operacyjnej ............... 291
Rozdział 13. Konwencje stosowane przez programy antywiru-
sowe - standard CARO .............................. 299
Rozdział 14. Profilaktyka antywirusowa .................. 311
14.1. Ochrona przed wirusami plików uruchamialnych ......... 313
14.2. Ochrona przed bombami logicznymi i końmi trojańskimi ... 315
14.3. Ochrona przed makrowirusami ........................ 316
Rozdział 15. Literatura ............................... 319
Wstęp
Tematem niiejszego opracowania są wirusy komputerowe jeden z najbardziej
tajemniczych i kontrowersyjnych tworów istniejących w świecie komputerów.
Od początku swego istnienia wirusy komputerowe były owiane mgłą tajemnicy
zaś ich twórców uznawano za ludzi wiedzących znacznie więcej niż zwykli
śmiertelnicy. Tymczasem wirus to zwykły program komputerowy który choć może
bardziej wyrafinowany od innych jest na pewno o wiele łatwiejszy do napisania
niż jakakolwiek aplikacja użytkowa czy gra.
Większość spotykanych wirusów to prymitywne przeróbki, bazujące na
istniejących od dawna, klasycznych już i uznawanych za wzorcowe wirusach,
takich Jak Jerusalem, Vienna, Stoned, Vacsina czy wirusy Dark Avengera.
Przeróbki ograniczają się najczęściej do zmiany tekstu wewnątrz wirusa lub
ewentualnie sekwencji kodu, czego wynikiem jest kolejna z licznych mutacji
znanego wirusa. Oprócz nich istnieje bardzo mała grupa wirusów, których
pojawienie się na komputerowej scenie wiązało się z zastosowaniem przez ich
autorów nowych, nieznanych jeszcze nikomu sztuczek. Do tych ostatnich
zaliczają się niewątpliwie wirusy wspomnianego już wyżej Dark Avengera,
najsłynniejszego chyba twórcy wirusów komputerowych. On to właśnie jako
pierwszy zastosował metodę zmiennych procedur szyfrujących w swym
polimorficznym enginie MtE, a także jako jeden z pierwszych potrafił omijać
zainstalowane monitory antywirusowe, czy odnajdywać oryginalne wejścia do
znajdujących się w BIOS-ie procedur obsługi przerwania 13h.
Pojawienie się nowego wirusa infekującego nie zajętą jeszcze do tej pory
platformę sprzętową lub programową budzi zwykle nie lada sensację, zwłaszcza
gdy w sprawę wmieszają się media, żerujące na
tego typu historiach. Pomimo że najczęściej trywialny, wirus taki otwiera bowiem
kolejną furtkę dla całej rzeszy późniejszych racjonalizatorów oraz wywołuje istną
lawinę komentarzy na temat bezpieczeństwa systemów komputerowych.
tak widać, twórcy wirusów tworzą środowisko rządzące się swoimi własnymi
prawami. Cały czas trwa wyścig nad wymyśleniem jeszcze lepszych lub
całkowicie nowych, nieznanych wirusów. Ciekawa przykład twórczego podejścia
do programowania wirusów zademonstrował autor ukrywający się pod
pseudonimem Stormbringer w wirusie JUMP. Nazwa wirusa nie jest
przypadkowa, gdyż, po de-asemblacji listing tego wirusa składa się tylko i
wyłącznie z samych rozkazów skoków (właściwy kod został sprytnie ukryty
wewnątrz wirusa).
Prymat w programowaniu wirusów wiodą niezaprzeczalnie mieszkańcy państw
byłego bloku wschodniego, głównie Bułgarzy, Rosjanie i Słowacy. Dzieje się tak
głównie z powodu braku, w tych krajach unormowań prawnych dotyczących
przestępstw komputerowych, które istnieją już w wielu państwach zachodnich.
W dobie globalnej ekspansji sieci Internet w zasadzie każda osoba chcąca
dowiedzieć się czegoś o wirusach może dostać się do bogatych, istniejących na
całym świecie archiwów, poświęconych w całości programowaniu wirusów.
Oferują one wirusy w wersji źródłowej, generatory wirusów, kolekcje złapanych
egzemplarzy wirusów, a także tzw. ziny, czyli prowadzone przez
wyspecjalizowane grupy magazyny (w postaci plików tekstowych lub stron
HTML), poświęcone programowaniu wirusów (np.: 40HEX, VLAD, NukE
InfoJournal, VBB, Immortal Riot). Za sprawą Intemetu w skład grup
prowadzących te magazyny wchodzą ludzie ze wszystkich stron świata, którzy,
co ciekawe, najczęściej deklarują się jako zagorzali przeciwnicy wirusów
destrukcyjnych, a samo programowanie wirusów traktują jako swoistą sztukę. Po
części mają rację, gdyż pisanie wirusów jest nie tylko świetną okazją do
dogłębnego poznania systemu operacyjnego, ale i sprawdzenia własnych
umiejętności programistycznych.
Liczba wirusów złapanych na świecie rośnie z roku na rok i nic me wykazuje na
to, aby tendencja ta miała ulec gwałtownej zmianie. W kolekcji wirusów należącej
do jednej z czołowych firm amerykańskich produkującej programy antywirusowe
znajduje się obecnie ponad 20000 próbek wirusów, z czego ok. 6000 to wirusy
całkowicie
różne. Należy pamiętać, iż istnienie wirusów komputerowych jest ściśle związane
z niedoskonałością zarażanych przez nie systemów operacyjnych. Twórcy
wirusów skrzętnie wykorzystują do swych celów wszelkie możliwe luki w
systemie: nieudokumentowane funkcje, systemowe struktury danych, a nawet
odnalezione własnoręcznie błędy w kodzie systemu. To właśnie wirusy -
paradoksalnie - pośrednio wpływają na wzrost bezpieczeństwa systemów
komputerowych, gdyż kolejne wersje różnych środowisk zwykle starają się
Zgłoś jeśli naruszono regulamin