[ Pobierz całość w formacie PDF ]
.API (ang.Application Program Interface), odpowiednik przerwania 21h dlasystemu DOS.Kod większości funkcji systemowych dostępnych przez API zawarty jest w plikuKERNEL32.DLL, będącym częścią jądra systemu.Na przykład funkcji 714E odpowiadafunkcja FindFirstFileA, zaś funkcji 714F - funkcja FindNextFileA.Z funkcji tych korzystawiększość programów działających w systemie Windows 95, m.in.Explorator, a tak\eró\ne programy nakładkowe, np.Wondows Commander 95, tak więc ich przejęciepozwala na u\ycie techniki stealth równie\ w systemie Windows 95 (na razie nie mawirusa który potrafiłby to robić).Adresy do powy\szych funkcji mo\na odczytać z plikuWirusy.Pisanie wirusów i antywirusów - Adam BlaszczykKERNEL32.DLL (jest to nowy EXE typu PE), a uzyskane w ten sposób offsety nale\yzmodyfikować poprzez dodanie do ich adresu, pod którym znajduje się KERNEL32.DLLw pamięci.Niestety do dzisiaj nie jest znany mechanizm pozwalający na odczytanietego adresu w sposób bezpośredni, bez u\ywania funkcji API.Pierwszy wirus dlaWindows 95 (Bizatch lub inaczej Boza) korzysta przy dostępie do funkcji systemowychze stałego adresu, zapamiętanego w wirusie.Ze względu na to, \e i\ adres ten zmieniasię w ró\nych podwersjach systemu Windows 95, nale\y przed jego u\yciem sprawdzić,czy rzeczywiście jest on właściwy.Opis struktury FindData zamieszczono poni\ej.Struktura FindDataAdres Zawartość00-03 atrybuty plikubity 0-6 standardowe atrybuty plików DOSbit 8 plik tymczasowy (temporary)04-0B czas i data utworzenia pliku0C-13 czas i data ostatniego dostępu do pliku14-1B czas i data ostatniej modyfikacji pliku1C-1F długość pliku (bardziej znaczące 32 bity)20-23 długość pliku (mniej znaczące 32 bity)24-2B zarezerwowane2C-12F 260-bajtowe pole pełnej nazwy pliku (jako ASCIIZ)130-13D 14-bajtowe pole krótkiej nazwy pliku (jako ASCIZZ)7.1.2.Podawanie oryginalnych długości i zawartości plików (ang.fullstealth)Aby w pełni oszukiwać system, nale\y oprócz prawdziwych długości plików podawaćtak\e ich prawdziwą zawartość.W tym celu oprócz funkcji przeszukujących zawartośćkatalogu trzeba przejąć funkcje słu\ące do manipulowania zawartością plików.Najprościej w momencie otwierania pliku leczyć go, a w chwili zamykania - ponownieinfekować.Powy\sza metoda ma jednak kilka niedociągnięć.Główną jej wadą jest to, i\nie sprawdzi się ona na pewno na dyskach zabezpieczonych przed zapisem(klasycznym przykładem jest tu płyta CD lub zabezpieczona przed zapisem dyskietka).Nale\y te\ pamiętać, i\ u\ytkownik z pewnością zauwa\y częste leczenie i ponownąinfekcję plików, gdy\ wszelkie operacje dyskowe będą przebłagały wolniej.Powy\szych wad nie posiada natomiast metoda polegająca na tym, aby w momencieodczytu dowolnego pliku sprawdzać, czy jest to plik zainfekowany i w locie leczyć go wpamięci, nie zmieniając jednak jego obrazu na dysku.W efekcie program odczytującyplik widzi jego oryginalną zawartość, zaś fizycznie plik nie jest zmieniany.Napisanieprocedury stosującej powy\szą metodę nie jest ju\ jednak zadaniem tak łatwym, jak wpoprzednim przypadku; nale\y rozwa\yć kilka mo\liwości związanych z poło\eniemwskaznika zapisu/odczytu w stosunku do początku pliku.Aby uprościć to zadanie,często stosuje się zabieg polegający na tym, \e przy otwieraniu zainfekowanego plikuzmniejsza się w wewnętrznych strukturach DOS (tablica SFT, opisana poni\ej) jegodługość o rozmiar wirusa.Wtedy, jedynym obszarem pliku, którym musi zająć się wirus,Wirusy.Pisanie wirusów i antywirusów - Adam Blaszczykjest jego początek (np.w przypadku nagłówka plików EXE wirus powinien przywracaćjego prawdziwą zawartość), gdy\ operacje odczytu nigdy nie dojdą do dodanego nakońcu pliku wirusa.Przy programowaniu wirusa wykorzystującego technikę stealth często przydatne sądwie wewnętrzne funkcje DOS (1216/1220/2F), słu\ące do operowania nawewnętrznych strukturach DOS, tzw.tablicach SFT (ang.System File Table),zawierających wszelkie informacje o otwartym pliku.W systemie mo\e istnieć kilkapodtablic SFT, połączonych w łańcuch.Dostęp do zawartych w nich informacji o plikuuzyskuje się na podstawie uchwytu pliku zwracanego przez funkcje (3D,6C/21) przyjego otwieraniu.Uchwyt ten podaje się jako parametr funkcji (1216/1220/2F).Po ichu\yciu najpierw uzyskujemy adres tzw.tablicy JFT (ang.Job File Table), opisującej plikiotwarte w danym procesie.Na jej podstawie otrzymujemy adres tablicy SFT opisującejdany plik.U\ywa się do tego poni\szej sekwencji:; Uzyskiwanie informacji o pliku na podstawie jego uchwytuMOV AX,1220h ; wez adres tablicy JFT zawierajacejnumer SFT,; opisujacej plik podany w BXMOV BX,UchwytPliku ; BX zawiera uchwyt (numer) plikuINT 2Fh ; wywolaj funkcjeMOV BL,ES:[DI] ; wez numer tablicy SFTMOV AX,1216h ; wez adres tablicy SFT na podstawienumeru w BLINT 2Fh ; wywolaj funkcje ES:DI wskazuje natablice SFT plikuJak widać, infekowanie pliku jest mo\liwe nawet przy jego zamykaniu.Format podtablicySFT podano poni\ej:Format podtablicy SFTAdres Zawartość00-03 Wskaznik do następnej podtablicy04 N - liczba plików w podtablicy06-40Opis pliku nr 1 w podtablicy - patrz następna tablicaOpis pliku nr N w podtablicyOpis pliku zawarty w tablicy SFTAdres Zawartość00-01 Liczba łączników do pliku02-03 Tryb04 Atrybut pliku05-06 Informacja o pliku07-0A Wskaznik do nagłówka programu obsługi lub do bloku DPB0B-0C Pierwsza JAP pliku0D-0E Czas ostatniej modyfikacji pliku0F-11 Data ostatniej modyfikacji pliku11-14 Rozmiar plikuWirusy.Pisanie wirusów i antywirusów - Adam Blaszczyk15-18 Aktualna pozycja wskaznika odczytu/zapisu pliku19-1A Względny numer JAP1B-1E Poło\enie elementu katalogu opisującego plik20-2A Nazwa i rozszerzenie pliku2B-2E Wskaznik do poprzedniego elementu SFT (pole programu SHARE)2F-30 Numer komputera w sieci (pole programu SHARE)31-32 Adres właściciela pliku (jego PSP)33-34 Poło\enie w obszarze roboczym listy zablokowanych regionów pliku(pole programu SHARE)35-36 Numer JAP37-3A Wskaznik do IFS pliku lub 00000000hZamieszczony poni\ej wirus stosuje technikę senii-stealth w odniesieniu do poleceniaDIR i popularnych nakładek oraz full stealth oparty na tablicach SFT.;----------------------------------------------------------------------------;;;; Czesc ksiazki : "Nowoczesne techniki wirusowe iantywirusowe" ;;;; KOMB_STE v1
[ Pobierz całość w formacie PDF ]