1. Podstawowe wiadomości o wirusach Rodzaje wirusów



Pobieranie 215,13 Kb.
Strona1/5
Data24.02.2019
Rozmiar215,13 Kb.
  1   2   3   4   5

0.Wstęp

1. Podstawowe wiadomości o wirusach

2. Rodzaje wirusów

3. Podział wirusów ze względu na sposób działania po uruchomieniu

4. Obiekty atakowane przez wirusy

5. Instalacja w pamięci operacyjnej

6. Przejmowanie przerwań i znajdowanie czystych wejść do systemu

7. Ukrywanie się w systemie operacyjnym

8. Szyfrowanie kodu

9. Inne mechanizmy stosowane przez wirusy

10. Przyszłość wirusów

11. Rodzaje programów antywirusowych

12. Techniki używane przez programy antywirusowe

13. Profilaktyka antywirusowa



14. Literatura


  1. Wstęp

Tematem niniejszego 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. Jak 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ą Internetu 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.

  1. Podstawowe wiadomości o wirusach

Co to jest i jak działa wirus komputerowy

Wirus komputerowy definiowany jest najczęściej jako krótki program mający zdolność samo powielania 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 samo powielania - 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. Rodzaje wirusów

2.1 Wirusy pasożytnicze

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ż zaraż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

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.



2.3 Wirusy plików wsadowych

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.



2.4 Makrowirusy

Makrowirusy nie zarażają programów uruchamialnych, 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 Basic for Applications w programie Microsoft Excel.

2.5 Generatory wirusów

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

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

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 jest banalnie prosta. Uruchomiony, wykonuje niby to normalną prace, bezpośrednio wynikająca , przeznaczenia programu (np.: gra, demo, program użytkowy), lecz dodatkowo, niejako w tle, wykonuje jakieś niezauważalne dla użytkownika operacje, (najczęściej po prostu niszczy - kasuje lub zamazuje - 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 narzędziowe do obsługi dysków.



2.8 Bomby logiczne

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.



  1. Podział wirusów ze względu na sposób działania po uruchomieniu

3.1 Wirusy nierezydentne

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 w systemie, tak jak czynią to wirusy rezydentne.



3.2 Wirusy rezydentne

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



  1. Obiekty atakowane przez wirusy

4.1 Pliki

Jedną z najczęściej wykorzystywanych dróg, jaką przenoszą się wirusy są pliki. Na samym początku były to tylko pliki wykonywalne COM, a potem EXE. Z czasem jednak liczba różnorodnych plików branych pod uwagę przez twórców wirusów wzrosła. Można powiedzieć, iż w kręgu zainteresowań ludzi piszących wirusy są wszystkie pliki, które posiadają w swym wnętrzu struktury zawierające instrukcje sterujące oraz funkcje operujące na plikach i/lub sektorach. Mogą to więc być pliki wykonywalne (COM, EXE), wsadowe (BAT), pliki zawierające sterowniki (SYS, BIN, DRV), pliki z modułami wykonywalnymi (OBJ, LIB, DLL, BGI, TPU, 386, VXD i inne), a także pliki programów, udostępniające użytkownikom definiowanie makr (DOC, XLS, SAM). Spotykane są także wirusy nietypowe, np. atakujące programy napisane w asemblerze (ASM). Rodzaj pliku rozstrzygany jest najczęściej na podstawie jego wewnętrznej budowy, tak więc w większości przypadków zmiana rozszerzenia pliku nie pozwala na uchronienie go przed infekcją.



4.2 Sektory systemowe

Po uruchomieniu komputera oraz po pozytywnym przejściu sprzętowej inicjalizacji wszystkich układów, procesor przystępuje do uruchamiania systemu, oddając najpierw sterowanie do BIOS-a, który po przeprowadzeniu różnych testów przekazuje kontrolę dalej, tzn. do systemu operacyjnego. Aby to zrobić, musi wczytać go z pliku zawierającego jądro systemu. Ze względu na to, iż narzucona przez systemy operacyjne struktura plików (różna dla różnych systemów) jest dostępna dopiero po załadowaniu odpowiedzialnego za dostęp do niej jądra systemu (także różnego dla różnych systemów), powstaje błędne koło: aby załadować plik z jądrem systemu, ono samo musi już być załadowane. Jasne jest, iż musi istnieć jakaś uniwersalna metoda na załadowanie dowolnego systemu (a więc i jądra systemu). Problem ten rozwiązano poprzez nadanie specjalnego znaczenia pierwszym sektorom dysków fizycznych i logicznych. Sektory te zawierają krótkie programy, odpowiedzialne za załadowanie właściwej części jądra systemu. W przypadku dysku fizycznego mamy do czynienia z tzw. Głównym Rekordem Ładującym, a w przypadku logicznych - z tzw. BOOT-sektorem.



4.2.1 MBR

Każdy dysk twardy zawiera w swym pierwszym fizycznym (tzn. z punktu widzenia dostępu przez BIOS) sektorze tzw. Główny Rekord Ładujący (często nazywany sektorem tablicy partycji), zawierający informacje o podziale jego fizycznej struktury na logiczne partycje (strefy). Oprócz powyższych informacji rekord ten zawiera także krótki programik, mający na celu odnalezienie w tablicy partycji aktywnej strefy i załadowanie z niej systemu operacyjnego. Format głównego rekordu ładującego, opis zawartości tablicy partycji oraz rodzaje stref zawarte są w pliku mbr.txt

Po wykonaniu wszystkich autotestów BIOS wczytuje MBR zawsze pod ten sam, stały adres 0000:7C00 i wykonuje do tego miejsca daleki skok, przekazując tym samym sterowanie do programu ładującego, który odszukuje strefę aktywną w tablicy partycji. Znalezienie strefy aktywnej polega na przeszukaniu tablicy partycji i sprawdzeniu, czy w polu 00h opisu badanej strefy znajduje się wartość 80h, co jest znakiem, iż jest to strefa aktywna i można z niej załadować system operacyjny.

Działanie wirusów zarażających MBR polega na podmianie oryginalnego programu w niej zawartego na kod wirusa. Oryginalna tablica partycji może być przechowywana w innym sektorze na dysku. Najprościej Jest wczytać oryginalny sektor przy pomocy funkcji (02/13), dokonać zmian w jego strukturze i zapisać zmodyfikowany sektor z powrotem na dysk przy użyciu funkcji (03/13).

Po zarażeniu MBR wirus jest nieaktywny do czasu zresetowania komputera. Po restarcie zainfekowana partycja jest wczytywana przez BIOS pod adres 0000:7C00 i sterowanie jest oddawane do wirusa, który zmniejsza pamięć dostępną dla DOS-a (poprzez modyfikację zmiennej BIOS, zawartej pod adresem 0000:413), a następnie kopiuje się na koniec pamięci, która jest już niedostępna dla DOS-a. Stamtąd przejmuje obsługę przerwań i po wczytaniu oryginalnego sektora tablicy partycji (także pod adres 0000:7COO) oddaje do niej sterowanie, a tam oryginalny program ładujący kontynuuje normalne wczytywanie systemu.

4.3 Rekord ładujący

Program ładujący, zawarty w MBR, wczytuje system ze strefy aktywnej, dokładniej: wczytuje pierwszy sektor (tzw. BOOT-sektor) ze strefy aktywnej pod adres 0000:7COO (a więc pod ten sam co w przypadku MBR), oddaje do niego sterowanie i dopiero program zawarty w BOOT-sektorze ładuje plik zawierający jądro systemu (w przypadku systemu DOS - najczęściej IO.SYS).

Powyższa operacja jest wykonywana tylko dla dysku twardego. W przypadku dyskietek BIOS bezpośrednio ładuje BOOT-sektor z dyskietki i oddaje do niego sterowanie. Jak widać, BIOS nie rozróżnia, czy wczytywany sektor jest MBR czy BOOT-sektorem, a jedynie odczytuje pierwszy sektor z dysku lub dyskietki i oddaje do niego sterowanie.

Przy pierwszym dostępie do dysku system kopiuje do swych struktur wewnętrznych część informacji zawartych w BOOT-sektorze. Informacje te są zawarte w tzw. bloku BPB, zawartym w BOOT-sektorze od adresu 0Bh do 23h. Zawartość BootSektora w pliku boot.txt

Nietrudno domyślić się, iż infekcja BOOT-sektora polegać będzie na zamianie oryginalnego programu w nim zawartego na kod wirusa, tak jak miało to miejsce w przypadku sektora tablicy partycji. Zamiast przerwania 13h przy infekcji BOOT-sektora łatwiej użyć przerwań 25h i 26h, gdyż biorą one na siebie ciężar wszystkich obliczeń związanych z translacją sektorów logicznych na fizyczne.

4.4 Jednostki alokacji plików

Pierwszym wirusem, który zarażał JAP, był wirus DIR-2. Ze względu na pewne ograniczenia zarażał tylko w wersjach DOS mniejszych od 5.0. Aby zrozumieć zasadę jego działania, trzeba przede wszystkim wiedzieć, w jaki sposób system DOS zapisuje pliki na dysku. Każdy dysk logiczny widoczny w systemie posiada tzw. tablicę FAT (ang. File Alocation Tobie), która dzieli dysk na równe części, zwane Jednostkami Alokacji Plików JAP). Wielkość JAP jest różna dla różnych pojemności dysków. Informacja o ilości sektorów zajmowanych przez jedną JAP zawarta jest w BOOT-sektorze, w polu 0Dh. Każdy plik zapisywany na dysku ma do dyspozycji odpowiednią, wynikającą z jego długości, liczbę jednostek alokacji. Liczba ta równa jest długości pliku podzielonej przez rozmiar jednej JAP. Obliczoną liczbę należy zaokrąglić w górę (aby uwzględnić końcówkę pliku, która nie mieści się w pełnej JAP). Jak widać, pliki zapisane na dysku wcale nie muszą być zapisane sekwencyjnie, tzn. różne fragmenty pliku mogą być porozrzucane po całym dysku. Także widziana przez użytkownika długość pliku tylko czasami zgadza się z prawdziwą długością zajmowaną przez plik na dysku (gdy długość pliku jest wielokrotnością długości JAP). Wczytując plik DOS odczytuje z odpowiedniego pola katalogu numer pierwszej JAP i na jej podstawie, w miarę kolejnych odczytów/zapisów do pliku, porusza się po łańcuchu JAP, korzystając z danych zawartych w tablicy FAT.

Wirus infekujący przy użyciu JAP zmienia w polu katalogu rozmiar danego pliku (najczęściej na rozmiar jednej JAP) oraz wartość pierwszej JAP pliku, która wskazując na wirusa umożliwia jego wczytanie niejako przed kod programu ładowanego z dysku i w efekcie przejęcie kontroli nad systemem. Zainstalowany w pamięci wirus ma następnie możliwość wczytania dalszej części programu na podstawie przechowywanej oryginalnej wartości pierwszej JAP oraz długości pliku. W celu zapewnienia poprawnego wczytania reszty pliku wirus musi dotrzeć do wewnętrznych procedur systemu operacyjnego, przeznaczonych do obsługi dysków. Najczęściej realizuje się to poprzez odpowiednią zamianę adresu procedury obsługującej dysk, zawartej w tzw. blokach DPB (ang. Drive Parameter Block), strukturach tworzonych przez system operacyjny podczas jego inicjacji dla wszystkich istniejących w systemie dysków logicznych.



  1   2   3   4   5


©operacji.org 2017
wyślij wiadomość

    Strona główna