2008 04 Użytkownik kontra wirusy


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


Wyszukiwarka