ATAK RAFAA PODSIADAY Użytkownik kontra wirusy Stopień trudności 90% szkodliwego oprogramowania trafia do naszego komputera, ponieważ nie przestrzegamy zasad bezpiecznego jego użytkowania. Chciałbym w tym artykule przedstawić niektóre techniki ataków, pokazać, w których miejscach ukrywają się trojany. ekst częściowo nawiązuje do mojego cyklu Termin ten pochodzi z Iliady Homera, związanego z wirusami komputerowymi. opisującej oblężenie Troi przez Greków. Grecy, po TNie jest to poradnik, jak napisać wirusa, wielu miesiącach bezskutecznych walk, pozornie tylko artykuł je opisujący. Myślę jednak, że jego wycofali się, pozostawiając pod miastem wielkiego lektura może być dobrym początkiem dla osób, drewnianego konia. Trojanie w akcie zwycięstwa które chciałyby zająć się zawodowo wirusami wprowadzili konia do wnętrza miasta jako łup (np. uczestnicząc w tworzeniu oprogramowania wojenny. W środku konia była ukryta grupa antywirusowego). żołnierzy, którzy w nocy otworzyli od wewnątrz bramę miasta, umożliwiając w ten sposób Koń trojański nieautoryzowane wtargnięcie armii greckiej. pierwsze spojrzenie Najpopularniejszym sposobem Z punktu widzenia zaatakowanego użytkownika, jest rozpowszechniania koni trojańskich jest to program, który krótko mówiąc siedzi sobie umieszczanie w Internecie darmowego w naszym komputerze, analizuje jego działanie i oprogramowania, zawierającego ukrytą dodatkową pozwala na nieautoryzowany dostęp oraz zarządzanie funkcjonalność. Użytkownicy sieci p2p są komputerem. Jednak takie pojęcie nic nam nie mówi narażeni na podobne działania, gdyż dopiero po o specyfice tego rodzaju oprogramowania. pobraniu pliku i jego przeskanowaniu programem Według definicji podanej przez specjalistę od antywirusowym mogą ocenić zawartość pod Z ARTYKUAU wirusów, dr Alana Solomona, w pracy zatytułowanej względem bezpieczeństwa. Infekcja następuje DOWIESZ SI Wszystko o wirusach (All About Viruses) trojan to gdzie szukać backdoorów, program, który robi więcej, niż oczekuje od niego na co zwracać uwagę pisząc użytkownik, a te dodatkowe zadania są z punktu złośliwe oprogramowanie, użytkownika niepotrzebne... Czym różni się zatem jak wykorzystywać malware do ataku, wirus od trojana? Aktualnie różnice między jednym jak się przed nim chronić. a drugim zacierają się. Jednak wszystko zaczęło się od celu: wirus miał być programem, który infekuje dyski twarde, dyskietki, czy pliki. W swojej strukturze CO POWINIENEŚ miał zawierać kod który niszczy dane, pozwala WIEDZIEĆ go uśpić ale gdy nadejdzie pora zaatakować, znać podstawy elektroniki w mniejszym lub większym stopniu poprzez cyfrowej, dewastację systemu uprzykrzyć życie użytkownikowi. posiadać umiejętność Rysunek 1. Wirusy programowania w asemblerze. Inaczej wygląda kwestia konia trojańskiego. 24 HAKIN9 4/2008 KTO KIERUJE KOMPUTERAMI? najczęściej poprzez strony internetowe, które kodu generowanego przez ten język, a świadomego wpływu na kształt powstałego są spreparowane tak, by instalowały złośliwe zwłaszcza jego zwięzłością. Kod maszynowy kodu, np. w zakresie używanych instrukcji czy oprogramowanie tuż po wejściu na stronę. szkieletowego programu, który z punktu rozwiązań programowych. Zwykle mamy do czynienia z formą ataku widzenia użytkownika nie robi nic, w językach Jak widać, programy napisane socjotechnicznego: któż z nas nie dostał wysokiego poziomu zajmie od kilkuset w asemblerze są optymalne pod zaproszenia czy komunikatu choćby na bajtów do kilku, a nawet kilkuset kilobajtów. względem szybkości działania i długości GG w rodzaju: Cześć, widziałam Cię na W asemblerze podobny program zajmie kodu, a więc język ten jest jakby fotce super zdjęcia: www.(i tu następuje od jednego (instrukcja RET w pliku COM) stworzony do programowania wirusów. adres złośliwej strony) lub innej podobnej do czterech bajtów (wywołanie funkcji 4Ch Kod zródłowy trojana jest zwykle oparty treści, zachęcającej do odwiedzenia przerwania 21h). Spowodowane jest to tym, o język wyższego poziomu, np. C++ czy określonej strony WWW. Często podany iż do każdego wygenerowanego przez siebie Delphi pozwala to na zbudowanie większej link odwołuje się do pliku z rozszerzeniem programu kompilatory języków wysokiego liczby funkcji, służących do symulowania exe. Użytkownik jest wtedy pytany, czy poziomu dodają standardowe prologi i epilogi, nieszkodliwego, a nawet pożytecznego uruchomić oprogramowanie i niejednokrotnie niewidoczne dla piszącego w danym języku dla użytkownika-ofiary oprogramowania, myśli, iż otwiera po prostu przeglądarkę programisty, które są odpowiedzialne m. in. w krótszym czasie. W treści kodu mogą internetową. A tymczasem uruchamia swoim za obsługę błędów, stosu, operacje wejścia/ występować wstawki języka niższego komputerze plik exe, zawierający szkodliwe wyjścia itp. Można powiedzieć, że długość poziomu, przydatne w celu głębszego ukrycia oprogramowanie. programu wynikowego (rozumianego jako złośliwego fragmentu kodu, realizującego np. kod maszynowy) jest wprost proporcjonalna infekcję kolejnych plików czy komputerów albo Charakterystyka do poziomu języka programowania, w którym proces klonowania programu. wirusa i backdoora został on napisany. Na korzyść asemblera Programiści do pisania wirusów w większości przemawia także fakt, iż z jego poziomu mamy Technika stealth przypadków wykorzystują czysty asembler. bardzo dużą swobodę w dostępie do pamięci Wirusy komputerowe modyfikują pliki Spowodowane jest to głównie specyfiką czy portów, a programista ma możliwość i sektory, zmieniając ich zawartość (w Struktury opisujące Struktura bloku opisu pliku FCB (zwykłego) " 1E-1F nie używane, " wartość 00: " 00 numer napędu (0=domyślny, 1=A, 2=B,...); jeżeli jest równy 0FFh, " 1A bajt informacyjny, to mamy do czynieia z rozszerzonym blokiem opisu pliku FCB, " bit 7: atrybut tytko do odczytu w SFT, " 01-08 8 bajtów nazwy pliku, " bit 6: atrybut archive w SFT, " 09-0B 3 bajty rozszerzenia pliku, " bity 5-0: wyższe bity numeru sektora, " 0C-0D numer aktualnego bloku, " 1B-1C numer pierwszej JAP pliku, " 0E-0F długość logicznego rekordu, " 1D-1F niższe bity sektora zawierającego adres w katalogu, " 10-13 długość pliku, " 1F ilość pozycji katalogu w sektorze, " 14-15 data ostatniej modyfikacji pliku, " 16-17 czas ostatniej modyfikacji pliku, 20 bieżący rekord " 18 ilość SFT (System File Table) dla pliku, 21-24 numer rekordu w dostępie swobodnym; jeżeli rozmiar rekordu " 19 atrybuty, znaczenie poszczególnych bitów przedstawiono wynosi 64 bajty, bardziej znacząca część jest pomijana poniżej, " bity 7-6: Struktura bloku opisu pliku FCB (rozszerzonego) " 00 SHARE.EXE niezaładowany, plik dyskowy, " 00 wartość 0FFh oznacza blok rozszerzony, " 01 SHARE.EXE niezaładowany, sterownik, " 01-05 zarezerwowane, " 10 SHARE.EXE załadowany, plik zdalny, " 06 atrybuty pliku, " 11 SHARE.EXE załadowany, plik dyskowy lub sterownik, " 07-2B zwykły blok opisu FCB (patrz poprzednia tabela). " bity 5-0 to mniej znaczące 6 bitów ze słowa atrybutów urządzenia 1A-1F zawartość zależna od bajtu 19, w zależności od wartości, bitów 7-6 tego bajtu należy ją interpretować jako: Struktura pola opisu pozycji katalogu " wartość 11, " 1A-1B numer pierwszej JAP (jednostki alokacji) pliku, " 00-07 nazwa pliku, " 1C-1D określa numer rekordu w dostępie dzielonym, " 08-0A rozszerzenie pliku, " 1E atrybuty pliku, " 0B atrybuty pliku, " 1F nie używany, " 0C-15 zarezerwowane, " wartość 10: " 16-17 czas ostatniej modyfikacji pliku, " 1A-1B uchwyt sieciowy, " 18-19 data ostatniej modyfikacji pliku, " 1C-1F identyfikator sieciowy, " 1A-1B numer pierwszej JAP, " wartość 01: " 1C-1F długość pliku. " 1A-1D wskaznik do nagłówka sterownika 4/2008 HAKIN9 25 ATAK przypadku plików zwykle powiększają Podawanie Modyfikacja polega na odjęciu długości jeszcze ich długość). Teoretycznie więc, prawdziwych długości plików wirusa od długości pliku opisywanej aby wykryć wirusa, wystarczy odczytać Wirusy wykorzystujące tę technikę oszukują w odpowiednim polu struktury oraz plik lub sektor i odnalezć w nim, poprzez system poprzez podawanie sfałszowanych, najczęściej pewnej modyfikacji czasu operację skanowania, odpowiednią prawidłowych długości zainfekowanych lub daty, odnoszących się do momentu sekwencję (sygnaturę) wirusa. I plików, wyświetlanych po wykonaniu zainfekowania pliku. rzeczywiście, metoda ta stosowana była polecenia DIR lub też w oknie programu Powyższe operacje wykonywane są z dużym powodzeniem aż do momentu, Menedżera okien tak, aby zbiory oczywiście tylko w przypadku obecności gdy pojawił się pierwszy wirus używający wyglądały na oryginalne. wirusa w konkretnym pliku. techniki stealth. Wyżej wymienione programy używają Słowo stealth znaczy po angielsku do przeszukiwania zawartości katalogu Polecenie DIR niewidzialny. Takimi właśnie wydają się jednej z trzech par funkcji, z których wywoływane z poziomu DOS wirusy używające tej ciekawej sztuczki, pierwsza poszukuje pierwszego, a druga Polecenie DIR używa do przeglądania która polega na kontroli odpowiednich kolejnego wystąpienia w katalogu. Funkcje zawartości katalogu pary dwóch funkcji systemu BIOS, obsługujących te to (11/12/21), (4E/4F/21), (714E/714F/ przeznaczonych specjalnie do tego celu pamięć i operacje dyskowe. 21). Oszukujący system wirus przejmuje funkcji (11,12/21). Obie funkcje korzystają z W momencie próby uzyskania kontrolę nad tymi funkcjami (niekoniecznie najstarszej metody operowania na plikach, dowolnego rodzaju dostępu do nad wszystkimi) i monitoruje odpowiednie a mianowicie z tzw. bloku opisu pliku FCB zainfekowanego pliku lub sektora pola struktur, na których operuje dana (ang. File Control Block), podawanego uruchamiane są mechanizmy funkcja. W momencie wykonywania jednej jako parametr wejściowy do funkcji oraz z wirusa, które mają na celu oszukanie z funkcji wirus wywołuje pierwotny program pola opisu pozycji katalogu, zwracanego użytkownika. obsługi przerwania, a następnie modyfikuje po jej bezbłędnym wykonaniu w buforze Oszustwo polega na tym, iż fizycznie elementy odpowiedniej struktury: DTA (ang. Disk Transfer Area), których opis zarażony obiekt, po odpowiedniej obróbce przedstawiono w kolejnych tabelach. przez wirusa, wygląda, jakby był nie " pozycji katalogu (funkcje 11/12), Podczas odwołań do struktury FCB zainfekowany. Różne odmiany techniki " DTA Disk Transfer Area (funkcje 4E/4F), należy pamiętać, iż istnieją dwie wersje stealth zostały omówione poniżej. " FindData (funkcje 714E/714F). opisu bloku FCB: zwykła i rozszerzona, będąca rozwinięciem bloku zwykłego (zawiera dodatkowe pola). Jeżeli pierwszy Struktura FindData bajt bloku jest równy 0FFh, mamy do czynienia z rozszerzonym blokiem opisu " 00-03 atrybuty pliku: pliku. Adres DTA uzyskuje się za pomocą " bity 0-6 standardowe atrybuty plików DOS, " bit 7 plik tymczasowy (temporary), funkcji (2F/21), która umieszcza go w " 04-0B czas i data utworzenia pliku, rejestrach ES:BX. Po powrocie z funkcji " 0C-13 czas i data ostatniego dostępu do pliku, wskazują one bezpośrednio na pole opisu " 14-1B czas i data ostatniej modyfikacji pliku, pozycji katalogu, w którym już bez przeszkód " 1C-1F długość pliku (bardziej znaczące 32 bity), można odpowiednio modyfikować pola " 20-23 długość pliku (mniej znaczące 32 bity), długości pliku (1C-1F) oraz czasu i daty " 24-2B zarezerwowane, " 2C-12F 260-bajtowe pole pełnej nazwy pliku (jako ASCIIZ), ostatniej modyfikacji (18-19 i 1A-1B). " 130-13D 14-bajtowe pole krótkiej nazwy pliku (jako ASCIIZ). Nakładki operujące na krótkich nazwach plików (tzn. 8 znaków nazwy i 3 znaki rozszerzenia) używają do przeglądania katalogu funkcji (4E, 4F/21). Struktura DTA Wynik wywołania tych funkcji zwracany jest w buforze DTA, jednak format opisu " 00 znaczenie poszczególnych bitów: " bity 6-0 numer napędu, znalezionej pozycji katalogu jest inny niż " bit 7 jeśli jest ustawiony, oznacza plik zdalny, podczas wywoływania funkcji (11,12/ " 01-0B szablon poszukiwanych pozycji katalogu, 21). Nie zmienia się natomiast sam " 0C atrybuty poszukiwanej pozycji, sposób oszukiwania systemu. Po wykryciu " 0D-0E numer pozycji w katalogu, wywołania którejś z funkcji, należy najpierw " 0F-10 numer JAP katalogu nadrzędnego, uruchomić ją za pomocą pierwotnego " 11-14 zarezerwowane, " 15 atrybut znalezionej pozycji katalogu, programu obsługi, a następnie odczytać " 16-17 czas ostatniej modyfikacji znalezionej pozycji katalogu, adres bufora DTA i zmodyfikować " 18-19 data ostatniej modyfikacji znalezionej pozycji katalogu, odpowiednie pola struktury. " 1A-1D długość znalezionej pozycji katalogu, Pola struktury DTA pokazano w Ramce. " 1E-2A nazwa i rozszerzenie pliku. Najważniejsze z nich to: długość pliku 26 HAKIN9 4/2008 KTO KIERUJE KOMPUTERAMI? (adres 1A-1D) oraz czas i data ostatniej funkcji tych korzysta większość programów chwili zamykania ponownie infekować. modyfikacji (adresy 16-17 i 18-19). działających w systemie Windows 95, m. Powyższa metoda ma jednak kilka Wraz z pojawieniem się systemu in. Eksplorator, a także różne programy niedociągnięć. Główną jej wadą jest Windows 95 wprowadzono tzw. nakładkowe, np. Windows Commander 95. to, iż nie sprawdzi się ona na pewno długie nazwy plików, którymi Zatem przejęcie kontroli nad tymi funkcjami na dyskach zabezpieczonych przed zastąpiono dotychczas używane pozwala na użycie techniki stealth również zapisem (klasycznym przykładem jest (jedenastoznakowe). Mechanizm obsługi w systemie Windows 95 (ze względów tu płyta CD lub zabezpieczona przed długich nazw plików jest dostępny oczywistych pomijam Windows XP). Adresy zapisem dyskietka). Należy też pamiętać, wyłącznie wtedy, gdy aktywny jest system powyższych funkcji można odczytać z pliku iż użytkownik z pewnością zauważy Windows oraz gdy zainstalowany jest tzw. KERNEL32.DLL, a uzyskane w ten sposób częste leczenie i ponowną infekcję plików, Menedżer IFS. offsety należy zmodyfikować poprzez gdyż wszelkie operacje dyskowe będą Za obsługę długich nazw plików dodanie do nich adresu, pod którym przebłagały wolniej. odpowiedzialna jest w systemie DOS znajduje się KERNEL32.DLL w pamięci. Powyższych wad nie posiada funkcja (714E/21), gdzie 4E oznacza Niestety, odczytanie tego adresu w sposób natomiast metoda polegająca na tym, numer podfunkcji przekazywanej bezpośredni, bez używania funkcji API nie aby w momencie odczytu dowolnego pliku w rejestrze AL za pomocą takich jest takie łatwe. Pierwszy wirus dla Windows sprawdzać, czy jest to plik zainfekowany i w podfunkcji zdublowano funkcje 95 (Bizatch lub inaczej Boza) korzysta locie leczyć go w pamięci, nie zmieniając (z dokładnością do numerów) przy dostępie do funkcji systemowych jednak jego obrazu na dysku. W efekcie operujące na plikach, a dostępne we ze stałego adresu, zapamiętanego w program odczytujący plik widzi jego wcześniejszych wersjach systemu kodzie wirusa. Ze względu na to, że adres oryginalną, prawidłową zawartość, zaś DOS. Za przeszukiwanie zawartości ten zmienia się w różnych podwersjach fizycznie plik nie jest zmieniany. katalogu są więc odpowiedzialne dwie systemu Windows 95, należy przed jego Napisanie procedury stosującej podfunkcje (714E,714F/21), operujące na użyciem sprawdzić, czy rzeczywiście jest powyższą metodę nie jest już jednak wprowadzonej wraz z systemem Windows on właściwy. Opis struktury FindData zadaniem tak łatwym, jak w poprzednim 95 strukturze o nazwie FindData. zamieszczono w osobnej Ramce. przypadku; należy rozważyć kilka Opisane funkcje są wykorzystywane możliwości związanych z położeniem m. in. przez polecenie DIR wywoływane Podawanie oryginalnych wskaznika zapisu/odczytu w stosunku do w oknie Tryb MS-DOS (w systemie długości i zawartości plików początku pliku. Aby uprościć to zadanie, Windows 95). Aby w pełni oszukiwać system, należy często stosuje się zabieg polegający na Aby umożliwić różnym aplikacjom oprócz prawdziwych długości plików tym, że przy otwieraniu zainfekowanego działającym w 32-bitowym środowisku podawać także ich prawdziwą zawartość. pliku zmniejsza się w wewnętrznych graficznym obsługę długich nazw plików, W tym celu oprócz funkcji przeszukujących strukturach DOS (tablica SFT opisana ale bez konieczności odwoływania się zawartość katalogu trzeba kontrolować poniżej) jego długość o rozmiar wirusa. do funkcji 16-bitowego systemu DOS, funkcje służące do manipulowania Wtedy jedynym obszarem pliku, którym Windows 95 udostępnia analogicznie zawartością plików. Najprościej w musi zająć się wirus, jest jego początek działające funkcje poprzez tzw. API (ang. momencie otwierania pliku leczyć go, a w (np. w przypadku nagłówka plików EXE Application Program Interface), stanowiące odpowiednik przerwania 21h dla systemu Format podtablicy SFT DOS. Kod większości funkcji systemowych dostępnych przez API zawarty jest w " 00-03 Wskaznik do następnej podtablicy, pliku KERNEL32.DLL, będącym częścią " 04 N liczba plików w podtablicy, jądra systemu. Na przykład funkcji 714E " 06-40 Opis pliku nr 1 w podtablicy (patrz następna tablica), " 41-7B Opcjonalnie opis pliku nr 2 w podtablicy (i ewentualnie dalszych po 3Bh bajtów. odpowiada funkcja FindFirstFileA, zaś funkcji 714F funkcja FindNextFileA. Z Uzyskiwanie informacji o pliku na podstawie jego uchwytu " MOV AX, 1220h wez adres tablicy JFT zawierającej numer SFT, opisującej plik podany w BX " MOV BX,UchwytPliku BX zawiera uchwyt (numer) pliku, " INT 2Fh wywołaj funkcję, " MOV BL,ES:[DI] wez numer tablicy SFT, " MOV AX,1216h wez adres tablicy SFT na podstawie numeru w BL, " INT 2Fh wywołaj funkcję, ES:DI wskazuje na tablicę SFT pliku. Rysunek 2. Spokojnie, to tylko dane 4/2008 HAKIN9 27 ATAK ATAK wirus powinien przywracać jego prawdziwą MBR lub BOOT-sektora wirus podsuwa tego przerwania lub funkcji wirus może zawartość), gdyż operacje odczytu nigdy programowi odczytującemu ich odczytać z portów lFx dane o aktualnie nie dojdą do dodanego na końcu pliku oryginalną, nie zainfekowaną zawartość wykonywanej operacji i następnie, w razie wirusa. (podobnie jak w przypadku plików, wykrycia odwołania np. do MBR, zmienić Przy programowaniu wirusa sektory zainfekowane muszą być w rozkaz tak, aby odczytywać inny sektor, wykorzystującego technikę stealth jakiś sposób oznaczone, żeby wirus zawierający kopię oryginalnej zawartości często przydatne są dwie wewnętrzne mógł je rozpoznać). Aby ustrzec się MBR. funkcje DOS (1216/1220/2F), służące przed programami umożliwiającymi Sprawdzenie aktualnie wykonywanej do operowania na wewnętrznych odświeżenie tablicy partycji lub BOOT- operacji polega na odczycie bajtu strukturach DOS, tzw. tablicach SFT sektora, można dodatkowo zabezpieczyć z portu 1F7 (rejestr statusowy IDE) i (ang. System File Table), zawierających sektory zawierające wirusa przed przetestowaniu bitów jego młodszej części. wszelkie informacje o otwartym pliku. W zapisem poprzez przejęcie funkcji (03/13) Jeżeli któryś z nich jest ustawiony (tzn. systemie może istnieć kilka podtablic i ewentualnie (0B/13). ma wartość l), oznacza to, iż właśnie jest SFT, połączonych w łańcuch. Dostęp wykonywana operacja odczytu. Parametry do zawartych w nich informacji o pliku Fałszowanie sektorów na etapie odczytywanego sektora (cylinder, głowicę, uzyskuje się na podstawie uchwytu pliku obsługi przerwań sprzętowych sektor) można odczytać z portów 1F3, 1F4/ zwracanego przez funkcje (3D,6C/21) W przypadku sektorów istnieje możliwość 1F5/1F6. Jeżeli odczytane dane są zgodne przy jego otwieraniu. Uchwyt ten podaje zastosowania techniki tzw. hardware level z oczekiwanymi, wirus musi wykonać do się jako parametr funkcji (1216/1220/2F). stealth, która jest rozszerzeniem metody końca operację odczytu oraz ustawić dane Po ich użyciu najpierw uzyskujemy adres opisanej w poprzednim punkcie. Technika w portach kontrolera na inny sektor (np. tzw. tablicy JFT (ang. Job File Table), ta polega na przechwyceniu odwołań na taki, w którym znajduje się oryginalna opisującej pliki otwarte w ramach danego do dysków już na etapie przerwania zawartość odczytywanego sektora). procesu. Na jej podstawie otrzymujemy sprzętowego IRQ 14 (INT 76h) lub poprzez W efekcie program antywirusowy, adres tablicy SFT opisującej dany plik. przejęcie wywoływanej przez to przerwanie który używa do odczytu sektorów Używa się do tego poniższej sekwencji funkcji (9100/15h), co umożliwia bezpośredniego adresu przerwania int instrukcji (Ramka Uzyskiwanie informacji o oszukiwanie systemu na najniższym 13h, zawartego w BIOS-ie, i tak będzie pliku na podstawie jego uchwytu) poziomie programowym. Podczas obsługi oszukiwany przez wirusa. Aby technika Jak widać, infekowanie pliku jest możliwe nawet przy jego zamykaniu. Format podtablicy SFT oraz opis UWAGA! pojedynczego pliku podano w osobnych Niektóre fragmenty szkodliwego kodu zawarte w artykule, uruchomione bezpośrednio na Twoim Ramkach. komputerze, mogą uszkodzić dane należy zachować ostrożność podczas eksperymentów z Zamieszczony poniżej wirus stosuje przedstawionym w tekście malware. technikę semi-stealth w odniesieniu do polecenia DIR i popularnych nakładek oraz full stealth opartą na tablicach SFT. Opis pliku zawarty w tablicy SFT Podawanie prawdziwej " 00-01 Liczba łączników do pliku, zawartości sektorów " 02-03 Tryb, Oczywiście technikę stealth można " 04 Atrybut pliku, " 05-06 Informacja o pliku, stosować także w przypadku odczytu " 07-0A Wskaznik do nagłówka programu obsługi lub do bloku DPB (Drive Parameter Block), sektorów; należy przejąć obsługę funkcji " 0B-0C Pierwsza JAP pliku, (02/13) oraz ewentualnie (0A/13). W " 0D-0E Czas ostatniej modyfikacji pliku, momencie próby odczytu zarażonego " 0F-11 Data ostatniej modyfikacji pliku, " 11-14 Rozmiar pliku, " 15-18 Aktualna pozycja wskaznika odczytu/zapisu pliku, " 19-1A Względny numer JAP, " 1B-1E Położenie elementu katalogu opisującego plik, " 20-2A Nazwa i rozszerzenie pliku, " 2B-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 Program Segment Prefix), " 33-34 Położenie w obszarze roboczym listy zablokowanych regionów pliku (pole programu SHARE), " 35-36 Numer JAP, " 37-3A Wskaznik do sterownika IFS (Installable File System) pliku lub 00000000h. Rysunek 3. Walczymy z wirusami 28 HAKIN9 4/2008 KTO KIERUJE KOMPUTERAMI? hardware level stealth zadziałała, sterownik dysku musi generować przerwanie IRQ14 (co można ustawić programowo) przy realizacji operacji dostępu do dysku. Modyfikacja CMOS-u Nowoczesne BIOS-y zawierają mechanizmy zabezpieczania niektórych newralgicznych sektorów przed zapisem (MBR, BOOT-sektory). W momencie wykrycia próby zapisu do któregoś z tych sektorów system najczęściej w określony sposób alarmuje użytkownika i czasem prosi go o potwierdzenie wykonywanej operacji lub też, aby kompletnie uniemożliwić tę operację, zawiesza komputer i czeka na naciśnięcie klawisza RESET. To, czy BIOS będzie reagował na próby zapisu do newralgicznych sektorów, ustalane jest zwykle z poziomu programu SETUP, który dostępny jest po naciśnięciu pewnego klawisza (najczęściej [Delete] lub [Ctrl+Alt+Esc]) podczas uruchamiania komputera. Ustalone w programie SETUP parametry są po jego opuszczeniu zapisywane do podtrzymywanej baterią pamięci CMOS. Korzystając z tego, iż pamięć ta dostępna jest programowo, można zmodyfikować określone dane tak, aby np. na chwilę odblokować zapis do MBR. Wymaga to jednak znajomości różnych systemów BIOS, gdyż znajdująca się w nich pamięć CMOS ma zazwyczaj zawartość odmienną od pamięci w innych komputerach, a jej zgodność ogranicza się do ustalonego znaczenia początkowych komórek tej pamięci (co jest konieczne ze względu na kompatybilność). Drugim parametrem możliwym do zmodyfikowania w CMOS-ie jest wartość określająca, jakie napędy dyskietek zamontowane są w komputerze. Wirus może wyzerować tę wartość tak, iż przy starcie BIOS nie będzie widział żadnej dyskietki i będzie próbował załadować system z twardego dysku (z MBR), razem ze znajdującym się w nim wirusem. Po załadowaniu wirus przywraca parametry dyskietek w CMOS-ie i następnie sprawdza, czy napęd FDD zawiera dyskietkę i ewentualnie wczytuje z niej BOOT-sektor, po czym oddaje do niego sterowanie. Zainstalowany w systemie wirus przy odwołaniach do dyskietek ustawia parametry w CMOS-ie, a po ich zakończeniu znowu je kasuje, tak więc po wyłączeniu komputera parametry w CMOS-ie będą najczęściej skasowane. Takie działanie dość mocno utrudni załadowanie systemu z czystej dyskietki, zwłaszcza jeśli wirus potrafi także zainstalować w pamięci CMOS hasło, uniemożliwiające przeciętnemu użytkownikowi dostanie się do programu SETUP. Rafał Podsiadły Informatyk, administrator, serwisant sprzętu i programów. Autor fascynuje się programowaniem, szczególnie C++ oraz nowymi technologiami. Kontakt z autorem: rafalpa@interia.pl 4/2008 HAKIN9 29