2004.03_Analiza powłamaniowa – podstawy.pdf

(3140 KB) Pobierz
439170055 UNPDF
Analiza powłamaniowa
– podstawy
Marek Janiczek
Przedstawiamy zasady,
którymi należy się kierować
podczas przeprowadzania
analizy powłamaniowej oraz jej
sugerowany przebieg. Opisane
techniki i narzędzia umożliwią
określenie sposobu wtargnięcia
do systemu i prześledzenie
działań intruza.
sowane przy analizie powłamaniowej,
przeprowadzimy badanie przykładowo
skompromitowanego systemu pełniącego ro-
lę serwera WWW. Poszczególne etapy analizy
wykażą, jak dokonano włamania i jakie działa-
nia przeprowadził intruz. Analizę przeprowadzi-
my za pomocą systemu FreeBSD 5.0, podsta-
wowych narzędzi systemu operacyjnego oraz
pakietu SleuthKit ( http://www.sleuthkit.org ).
na przykład obejmować kolejno wykonywa-
ne polecenia wraz z odpowiednimi przełącz-
nikami). Ważne jest również przestrzeganie
kolejności gromadzenia danych w zależności
od ich ulotności. Dokument RFC 3227 zaleca
gromadzenie danych z systemu w następują-
cej kolejności:
• rejestry, bufory,
• tablica routingu, tablica arp, lista procesów,
statystyki jądra, pamięć,
• tymczasowe systemy plików
(np. ramdyski),
• dyski,
Podstawowe zasady
Istnieje szereg dokumentów (patrz Ramka
W sieci ) sugerujących zasady postępowania
w chwili wykrycia nieautoryzowanych działań
w systemie. Postępowanie zgodnie z wytycz-
nymi gwarantuje, że zgromadzone dowody bę-
dą pewne, a analiza będzie przeprowadzona
poprawnie. Oto kilka podstawowych zasad.
Z artykułu nauczysz się...
W jaki sposób przy użyciu narzędzi z pakietu Sleu-
thKit, własnej inteligencji, doświadczenia i odrobi-
ny szczęścia przeprowadzić analizę powłamanio-
wą systemu tak, by nie tylko nie zniszczyć śladów,
ale dowiedzieć się kto, kiedy i w jaki sposób doko-
nał włamania.
Co powinieneś wiedzieć...
Zakładamy, że Czytelnik jest przynajmniej średnio-
zaawansowanym administratorem systemów unik-
sowych.
Gromadzenie danych
niezbędnych do analizy
Proces gromadzenia danych należy dokład-
nie przemyśleć. Istotne jest posiadanie przy-
gotowanej i przetestowanej wcześniej proce-
dury lub planu, który umożliwi zgromadzenie
danych w optymalny sposób (plan ten może
58
www.hakin9.org
Hakin9 Nr 3/2004
A by zaprezentować zasady i techniki sto-
439170055.044.png
Analiza powłamaniowa
Krótki opis systemu, do którego dokonano włamania
Podstawowa rola systemu: serwer WWW (statyczne strony HTML)
Platforma sprzętowa: i386
System operacyjny: FreeBSD 4.5
Zainstalowane komponenty oprogramowania systemowego: bin , crypt , man
Oprogramowanie dodatkowe: Apache 1.3.20
Adres IP serwera: 10.10.12.123
Nazwa symboliczna serwera: www.wwwtest.pl
Użytkownicy:
Postępowanie w trakcie gromadze-
nia danych ze skompromitowane-
go systemu w dużej mierze zależy
od tego, czy system jeszcze działa
( Przypadek I ), czy też został uprzed-
nio wyłączony, na przykład przez ad-
ministratora ( Przypadek II ).
Przypadek I
Jeżeli system działa, nie należy go
wyłączać lub restartować. W momen-
cie wykrycia włamania należy zało-
żyć, że w systemie zainstalowano pu-
łapki, bomby logiczne lub inny złośli-
wy kod, który może być aktywowany
w trakcie niestandardowej zmiany sta-
nu systemu, powodując całkowite lub
częściowe zatarcie śladów nieautory-
zowanych działań intruza. W przypad-
ku okoliczności zmuszających nas
do wyłączenia systemu należy tego
dokonać z pominięciem standardowej
procedury (na przykład bez polecenia
shutdown ) – po prostu odciąć zasila-
nie do systemu.
Jeżeli w skompromitowanym sys-
temie lub w jego bezpośrednim oto-
czeniu przechowywane są wrażli-
we informacje należy dokonać i l-
tracji ruchu lub odłączyć system
admin – administrator systemu,
www – administrator serwisu WWW (nie zna hasła do konta
www – administrator serwisu WWW (nie zna hasła do konta
www
root ),
root – użytkownik uprzywilejowany
root.
Dostęp do serwera nadzorowany przez i rewall:
• z sieci zewnętrznej dostęp wyłącznie do portu 80,
• z sieci wewnętrznej dostęp wyłącznie do portów 22 i 80.
System plików: UFS
Partycje systemowe:
/
/tmp - ad0s1f,
/var - ad0s1e,
/var
/usr - ad0s1g.
/usr - ad0s1g.
• dzienniki zdarzeń przechowy-
wane w innych systemach (np.
dzienniki zdarzeń systemu i re-
wall),
• informacje o i zycznej koni gura-
cji i topologii sieci,
• dane archiwalne (np. zarchiwizo-
wane dzienniki zdarzeń).
Narzędzia do analizy powłamaniowej
– pakiet SleuthKit
SleuthKit (następca pakietu TASK) jest zbiorem narzędzi do
przeprowadzenia analizy powłamaniowej. Napisany został
w językach C i Perl. Działa w środowiskach Linux, OpenBSD,
FreeBSD, Solaris, Mac OS X i CYGWIN. Umożliwia analizę sys-
temów plików: NTFS, FAT, UFS, FFS, EXT2FS i EXT3FS (tak-
że obrazów plików utworzonych narzędziem dd – tryb surowy).
icat – wyświetla zawartość pliku określonego przez metada-
ne zawarte w danym i-węźle,
ils – wyświetla informacje zawarte w i-węzłach (domyślnie
– powiązanych wyłącznie z usuniętymi plikami),
mactime – generuje czytelną historię operacji w systemie
plików na podstawie wyników poleceń l s i ils,
istat – wyświetla informacje zawarte w danym i-węźle, mię-
dzy innymi stan alokacji, UID, GID, wielkość, liczbę linków,
znaczniki czasu MAC oraz wskaźniki do jednostek alokacji
danych.
Narzędzia warstwy systemu plików:
Narzędzia warstwy jednostek alokacji danych:
fsstat – wyświetla szczegółowe informacje dotyczące dane-
go systemu plików, między innymi jego typ, zakresy i-węzłów,
zakresy jednostek alokacji danych oraz wielkości jednostek
alokacji danych,
fi nd – odnajduje nazwę pliku lub katalogu (również usunię-
tego) powiązanego z danym i-węzłem,
l s – wyświetla listę nazw plików i katalogów (również usu-
niętych) w danym obrazie partycji.
dls – wyświetla zawartość niezaalokowanej przestrzeni sys-
temu plików,
dcat – wyświetla dane zawarte we wskazanej jednostce alo-
kacji danych,
dstat – wyświetla status wskazanej jednostki alokacji da-
nych,
dcalc – mapuje jednostki alokacji danych pomiędzy obra-
zem systemu plików i jego częścią zawierającą wyłącznie
niezaalokowaną przestrzeń (wynik działania polecenia dls ).
Narzędzia warstwy metadanych:
ii nd – odnajduje w danym obrazie partycji strukturę metada-
ii nd – odnajduje w danym obrazie partycji strukturę metada-
Narzędzia warstwy nośników danych:
ii nd
nych (i-węzeł) powiązaną ze wskazaną jednostką alokacji da-
nych,
mmls – wyświetla tablice partycji i etykiety dyskowe.
Hakin9 Nr 3/2004
www.hakin9.org
59
root ),
/ - ad0s1a,
/usr
dd
W skład pakietu wchodzą następujące elementy:
439170055.045.png 439170055.046.png 439170055.047.png 439170055.001.png 439170055.002.png 439170055.003.png 439170055.004.png 439170055.005.png
Podstawowe narzędzia – zawartość
płyty CD do gromadzenia danych
(FreeBSD)
uname – wyświetla podstawowe informacje o platformie
sprzętowej i systemie operacyjnym.
ifconi g – wyświetla koni gurację i status interfejsów sie-
ciowych. Pozwala np. stwierdzić, czy intefejs sieciowy jest
w trybie nasłuchu ( promiscous
w trybie nasłuchu ( ).
arp – wyświetla informacje zawarte w tablicy arp (odwzo-
rowanie pomiędzy adresami sprzętowymi i adresami pro-
tokołu IP).
netstat – wyświetla zawartość różnych struktur danych po-
wiązanych z siecią, między innymi połączenia sieciowe,
tablice routingu, statystyki interfejsów.
dd – kopiuje plik (w trybie surowym) z wybranymi przez
użytkownika rozmiarami bloków wejścia/wyjścia. Narzę-
dzie dd wykorzystuje się do wykonania obrazów partycji
w trybie nasłuchu ( promiscous
vmstat – wyświetla statystyki jądra dotyczące aktywności
procesora, procesów, pamięci wirtualnej i dysków. Wyniki
polecenia vmstat mogą być pomocne w określeniu elemen-
tu systemu, którego działanie odbiega od normy.
iostat – wyświetla statystyki jądra dotyczące aktywno-
ści procesora, terminali i innych urządzeń podłączonych
do systemu. Wyniki iostat są bardziej szczegółowymi od-
powiednikami informacji uzyskanych za pomocą vmstat .
ps – wyświetla listę aktywnych procesów w systemie. Po
ps – wyświetla listę aktywnych procesów w systemie. Po
ps
zastosowaniu odpowiednich przełączników wyniki ps mo-
ps mo-
dd
i dysków.
md5 ( md5sum , sha1 ) – narzędzia do generowania skrótów
kryptograi cznych.
uptime – wyświetla podstawowe informacje o działaniu
systemu: czas działania systemu, liczba zalogowanych
użytkowników oraz średnie obciążenie.
tcpdump i snort – narzędzia umożliwiające nasłuch ruchu
ps
gą być pomocne w uzyskaniu informacji dotyczących użyt-
kownika, który uruchomił proces, ID procesu nadrzędne-
go, daty i godziny uruchomienia, numeru terminala itp.
ldd – wyświetla wszystkie współdzielone obiekty (bibliote-
ki) niezbędne do uruchomienia programu lub załadowania
współdzielonego obiektu. Program ldd może być pomocny
ldd
w celu rozpoznania, z jakich współdzielonych obiektów ko-
rzysta podejrzany program wykonywalny.
nm – wyświetla listę symboli z obiektu (programu, biblioteki)
– o ile nie zostały usunięte poleceniem strip . Umożliwia uzy-
skanie bardziej szczegółowych informacji niż ldd (np. na-
zwy funkcji).
readelf – wyświetla szczegółowe informacje o plikach wy-
konywalnych typu ELF (ang. executable and linking format ).
snort
w sieci z rozbudowanymi możliwościami i ltracji pakietów.
Z ich pomocą można nasłuchiwać w czasie rzeczywistym
lub zapisywać ruch do plików.
lsof – wyświetla informacje o wszystkich plikach otwartych
przez procesy w systemie.
tripwire i aide – narzędzia do sprawdzania integralności pli-
ków. Z ich pomocą możemy zorientować się, które pliki by-
ły modyi kowane.
netcat , cryptcat i
executable and linking format
Program readelf można wykorzystać do zgromadzenia pod-
stawowych informacji o podejrzanym pliku wykonywalnym.
i le – rozpoznaje typ danego pliku.
sysctl – wyświetla wartości parametrów jądra. Z listy war-
tości parametrów można uzyskać między innymi szczegó-
łowe informacje dotyczące koni guracji poszczególnych
elementów systemu, w tym parametrów stosu TCP/IP.
last – wyświetla historię sesji użytkowników w systemie
oraz historię pracy systemu.
kldstat – wyświetla listę uruchomionych modułów jądra
systemu. Uzyskana lista może umozliwić wykrycie części
kodu dynamicznie dodanej do jądra systemu.
truss – pozwala śledzić wywołania systemowe wykonywa-
ne przez dany program lub działający w systemie proces.
stat – wyświetla informacje o danym pliku, między innymi
prawa dostępu, typ pliku, znaczniki czasu MAC.
strings – wyświetla wszystkie drukowalne sekwencje zna-
ków z danego pliku, za którymi następuje znak niedruko-
walny. Wykorzystywany do wyszukiwania podejrzanych
sekwencji znaków.
w – wyświetla informacje o zalogowanych użytkownikach
i ich procesach (między innymi nazwa użytkownika, na-
zwa terminala, zdalny host, czas zalogowania się, linia po-
leceń) oraz podstawowe informacje o działaniu systemu
(czas działania, liczba zalogowanych użytkowników, śred-
nie obciążenie).
who – wyświetla informacje o aktualnie zalogowanych
użytkownikach (nazwa użytkownika, nazwa terminala, da-
ta i czas zalogowania się oraz nazwa lub adres IP hosta
w przypadku połączeń zdalnych).
socat
syłanie informacji przez sieć TCP/IP. cryptcat posiada
cryptcat socat – narzędzia umożliwiające prze-
socat – narzędzia umożliwiające prze-
cryptcat
mechanizmy kryptograi czne umożliwiające bezpieczną
transmisję danych. socat jest nową i znacznie rozszerzo-
ną implementacją netcat .
ktrace – włącza śledzenie danego procesu na poziomie ją-
dra systemu. Śledzi między innymi wywołania systemowe,
przetwarzanie sygnałów oraz operacje I/O. Wyniki zapisy-
wane są do pliku (narzędzie to można wykorzystać wy-
łącznie jeżeli dane gromadzimy w dołączonej pamięci ze-
wnętrznej, np. Flash). Do przeglądania pliku wynikowego
należy zastosować narzędzie kdump .
gcore – zapisuje do pliku obraz pamięci działającego pro-
cesu. Ponieważ gcore nie umożliwia zapisu danych w in-
nym miejscu niż do pliku, należy go stosować wyłącznie,
gdy dane gromadzimy w dołączonej pamięci zewnętrznej.
fsdb – otwiera wskazaną partycję lub obraz partycji
i umożliwia interaktywne przeglądanie informacji zawar-
tych w i-węzłach.
dumpfs – wyświetla informacje dotyczące super-bloku
i grup cylindrów dla wskazanego systemu plików.
disklabel – wyświetla szczegółowe informacje o dysku, je-
go podziale na partycje i etykietach dyskowych.
SleuthKit
standardowe narzędzia systemowe tj. ls, su, date, pwd, tail, he-
ad, more, less, i nd, mount, tar, gzip, sort, awk, crontab itp., któ-
re powinno się stosować zamiast narzędzi dostępnych w skom-
promitowanym systemie.
60
www.hakin9.org
Hakin9 Nr 3/2004
Poza wymienionymi, na nośniku do gromadzenia danych po-
winny się znaleźć również narzędzia z pakietu SleuthKit oraz
439170055.006.png 439170055.007.png 439170055.008.png 439170055.009.png 439170055.010.png 439170055.011.png 439170055.012.png 439170055.013.png 439170055.014.png 439170055.015.png 439170055.016.png 439170055.017.png 439170055.018.png 439170055.019.png 439170055.020.png 439170055.021.png 439170055.022.png 439170055.023.png 439170055.024.png 439170055.025.png 439170055.026.png 439170055.027.png 439170055.028.png 439170055.029.png 439170055.030.png 439170055.031.png 439170055.032.png 439170055.033.png 439170055.034.png 439170055.035.png
Analiza powłamaniowa
od sieci – w takiej sytuacji oprócz
zmniejszenia wpływu zmian dokony-
wanych przez autoryzowanych użyt-
kowników unika się również poten-
cjalnego wycieku informacji lub moż-
liwości eskalacji ataku na inne sys-
temy. Można też za pomocą sniffe-
ra (np. snifi t lub tcpdump ) urucho-
mionego na dodatkowym hoście za-
rejestrować ruch sieciowy, który mo-
że ujawnić istnienie nieautoryzowa-
nych połączeń.
Należy pamiętać również o tym,
że wszelkie gromadzone dane nie
mogą być zapisywane na dysku
skompromitowanego systemu. Naj-
lepszym sposobem gromadzenia da-
nych jest podłączenie do komputera
(np. do portu USB) nieulotnej pamię-
ci typu Flash lub wysyłanie danych
bezpośrednio przez sieć do zaufa-
nego systemu.
Do gromadzenia danych nie nale-
ży wykorzystywać narzędzi dostęp-
nych w skompromitowanym systemie.
Należy zastosować narzędzia skom-
pilowane statycznie (dla przypomnie-
nia: w celu statycznej kompilacji pro-
gramów należy zastosować przełącz-
nik --static kompilatora gcc ) lub ko-
rzystające z bibliotek znajdujących się
na nośniku zewnętrznym (przykłado-
wa lista podstawowych narzędzi dla
systemu FreeBSD przedstawiona zo-
stała w Ramce). Można także skorzy-
stać z płytowych dystrybucji systemów
operacyjnych, o ile oferują one nie-
zbędne narzędzia. Przykładem takiej
dystrybucji może być F.I.R.E ( http://
i re.dmzs.com ), oferująca narzędzia
skompilowane dla systemów win32,
Solaris (SPARC) i Linux (x86).
Posiadanie statycznie skom-
pilowanych narzędzi jest bardzo
istotne przede wszystkim dlatego,
że wszelkie narzędzia dostępne
w systemie po jego kompromitacji
przestają być wiarygodne – mogły
zostać podmienione przez intruza
w celu ukrycia jego obecności i dzia-
łań. Poza tym każde użycie narzę-
dzi systemowych powoduje zmianę
ich znacznika czasu ostatniego do-
stępu ( accessed ), co nie jest pożą-
dane. Należy jednak również zazna-
czyć, że nawet statycznie skompi-
lowane narzędzia mogą nie dawać
wiarygodnych wyników, jeżeli intruz
w odpowiedni sposób zmodyi kował
jądro systemu lub dołączył do niego
obcy moduł. Jeżeli istnieje takie po-
dejrzenie, po zgromadzeniu ulotnych
danych z działającego systemu nale-
ży wyłączyć system i zgromadzić da-
ne nieulotne bezpośrednio w zaufa-
nym systemie – patrz Przypadek II .
na przykład przez podłączenie dys-
ku i zamontowanie go w trybie tylko
do odczytu lub wystartowanie syste-
mu z bootowalnej płyty CD.
Analiza powłamaniowa
Analizę powłamaniową należy prze-
prowadzić w zaufanym systemie, wy-
łącznie na danych stanowiących ko-
pie oryginalnych nośników skompro-
mitowanego systemu. Praca z orygi-
nalnymi nośnikami jest zbyt ryzykow-
na, ponieważ nawet niewielki błąd
może zakończyć się częściowym
zatarciem lub całkowitym zniszcze-
niem dowodów.
W trakcie przeprowadzania anali-
zy istotne jest również notowanie wy-
konanych działań, aby później w ła-
twy sposób można było zaprezento-
wać sposób dotarcia do dowodu.
Pierwsze kroki
w śledztwie –
gromadzenie dowodów
Po zamontowaniu nośnika z narzę-
dziami w skompromitowanym syste-
mie można przystąpić do pierwsze-
go etapu śledztwa. Jest nim zgro-
madzenie wszystkich niezbędnych
danych (dowodów). Na tym etapie
należy bardzo uważać na narzę-
dzia, które mogą tworzyć na dysku
tymczasowe bufory lub pliki wyni-
kowe. Do takich programów należy
lsof ,
lsof ,
Przypadek II
Jeżeli system został uprzednio wyłą-
czony, należy zgromadzić dane nie-
ulotne bezpośrednio w zaufanym
systemie. Możemy tego dokonać
lsof wyświetlając listę plików otwar-
tych przez działające procesy. Uru-
chomienie programu lsof bez zasto-
sowania odpowiedniego przełącz-
nika ( -Di ) utworzy w katalogu do-
mowym użytkownika, na którego je-
steśmy zalogowani, plik buforujący
nazwy urządzeń w systemie.
Jednym z efektywnych sposobów
gromadzenia wyników poleceń wyda-
wanych w skompromitowanym syste-
mie (przynajmniej tych, które w wyni-
ku dają sekwencje drukowalnych zna-
ków) jest zastosowanie zdalnego reje-
strowania sesji. W tym celu włączamy
rejestrowanie sesji w zaufanym syste-
mie, a następnie logujemy się zdalnie
do skompromitowanego systemu i wy-
dajemy w nim polecenia. W przypad-
ku zaufanego systemu typu UNIX włą-
Zdalna rejestracja wyników poleceń
za pomocą narzędzia script
Zaufany system – uruchomienie rejestrowania sesji i zdalne zalogowanie się do skom-
promitowanego systemu:
# script
# ssh nazwa_uzytkownika@skompromitowany_system
Uruchamianie poleceń w skompromitowanym systemie:
# ps ax
# ...
Zamknięcie zdalnej sesji ze skompromitowanym systemem:
# exit
Zaprzestanie rejestrowania sesji:
# exit
Hakin9 Nr 3/2004
www.hakin9.org
61
439170055.036.png 439170055.037.png
typescript
temie Windows można zastosować
np. program putty
putty .
putty
Innym sposobem, szczególnie
przydatnym do przesyłania przez
sieć większej ilości informacji lub da-
nych w postaci binarnej, jest zasto-
sowanie narzędzia netcat . Ten spo-
sób można również zastosować
do przesyłu danych, jeżeli jesteśmy
zalogowani bezpośrednio na konsoli
skompromitowanego systemu. Jeżeli
nie mamy zaufania do sieci, przez któ-
rą dane mają być transportowane, na-
leży rozważyć zastosowanie cryptcat
umożliwiającego szyfrowanie transmi-
sji. Przykłady przesyłania danych do
zaufanego systemu z wykorzystaniem
narzędzi script , netcat oraz
typescript ), natomiast w sys-
wość odtworzenia jego stanu. Oto
przykład zgromadzonego zestawu
informacji (polecenia i ich przełącz-
niki dla systemu FreeBSD 4.5):
• szczegółowe informacje doty-
czące pliku wykonywalnego:
# readelf -a nazwa_pliku ,
• lista załadowanych modułów ją-
dra: # kldstat -v ,
• zalogowani użytkownicy i ich pro-
cesy: # who i # w -dn ,
• historia logowania się użyt-
kowników i historia systemu:
# last ,
• parametry jądra: # sysctl -a ,
• czas działania systemu:
# uptime ,
• stan dysków i systemów plików:
# mount , # df -k , # swapinfo ,
# dumpfs /dev/ad0s1x , # disklabel
/dev/ad0s1x (x – kolejna partycja),
• obrazy partycji (również partycji
swap i ramdysków) – patrz Ram-
ka,
• dzienniki zdarzeń przechowywa-
ne w innych systemach (system
i rewall, IDS),
• informacje dotyczące koni guracji
systemu i topologii sieci (wywiad
z administratorem),
netcat cryptcat
przedstawione są w Ramkach.
Dane, które zgromadzimy w za-
ufanym systemie, powinny w jak naj-
większym stopniu zapewnić możli-
• aktualny czas systemowy:
# date ,
• tablica routingu: # netstat -nr ,
• tablica arp: # arp -a ,
• aktywność procesorów, proce-
sów, pamięci wirtualnej, dysków:
# vmstat 3 10 ,
• aktywność procesorów, dysków,
dysków wymiennych, terminali:
# iostat 3 10 ,
• statystyki protokołów sieciowych:
# netstat -s ,
• stan interfejsów sieciowych:
# ifconfig -a i # netstat -i ,
• połączenia sieciowe:
# netstat -na i # lsof -Di -n -i4 ,
• śledzenie działania podejrzanych
procesów: # truss -p PID ,
• lista wymaganych przez dany
program współdzielonych biblio-
tek: # ldd nazwa_programu ,
drów
drów dysku). Każda grupa cylindrów składa się z kopii super-
bloku (wielkość bloków i fragmentów danych, wielkość grup cy-
lindrów, ilość bloków i i-węzłów w grupie cylindrów), przestrze-
ni przeznaczonej na i-węzły, mapy bitowej określającej wolną
przestrzeń w grupie cylindrów, sumarycznych informacji doty-
czących wykorzystania bloków danych oraz właściwych blo-
ków danych.
Bloki danych mogą mieć wielkość dowolnej potęgi 2, ale
nie mniejszą niż 4096 bajtów (2^12). Wszystkie grupy cylin-
drów mają stałą liczbę i-węzłów zaalokowaną w momencie
tworzenia systemu plików. I-węzeł jest strukturą danych zawie-
drów (jeden lub więcej kolejno następujących po sobie cylin-
miarach. W związku z tym alokacja całego bloku dla pliku o du-
żo mniejszym rozmiarze nie jest zbyt efektywnym rozwiąza-
niem. W celu wyeliminowania tej niedogodności wprowadzo-
no możliwość podziału bloków na mniejsze części zwane frag-
mentami . Wielkość fragmentu określana jest w momencie two-
rzenia systemu plików, każdy blok może być podzielony na 2, 4
lub 8 fragmentów. Dolną granicą wielkości fragmentu jest 512
bajtów. Każdy z fragmentów jest w pełni adresowalny, dlate-
go też bitowa mapa bloków powiązana z każdą grupą cylin-
drów przechowuje informacje o wolnej przestrzeni na pozio-
mie fragmentów.
Na przykład w systemie plików złożonym z bloków o wiel-
kości 4096 bajtów i fragmentów o wielkości 1024 bajtów plik
może być reprezentowany przez zero lub więcej bloków o wiel-
kości 4096 bajtów oraz, jeżeli będzie to konieczne, przez jeden
blok podzielony na fragmenty o wielkości 1024 bajtów. Pozo-
stałe niewykorzystane fragmenty z tego bloku będą dostępne
dla przechowania części innych plików.
System plików FFS wykorzystywany jest między innymi
w systemach FreeBSD, NetBSD, OpenBSD oraz Sun Solaris.
Również ext2 wykorzystywany w systemach Linux jest oparty
na koncepcji FFS. Podstawową różnicą pomiędzy systemem
FFS i ext2 jest zastosowanie w tym drugim (zamiast grup cylin-
drów) grup bloków nie powiązanych z cylindrami dysku.
Osoby zainteresowane szczegółami budowy systemu pli-
ków FFS odsyłamy do plików nagłówkowych znajdujących się
w katalogu /usr/include/ufs/ systemu FreeBSD.
I-węzeł
rającą informacje o pliku – jego właścicielu, grupie, prawach
dostępu, znacznikach czasu, adresach bloków danych.
W systemie FFS stosowane są dwa typy adresowania
bloków danych. Pierwszy z nich to adresacja bezpośrednia
– adres bloku danych zapisany jest bezpośrednio w strukturze
i-węzła. Drugi typ to adresacja pośrednia – zamiast adresu blo-
ku danych w strukturze i-węzła przechowywany jest adres ta-
blicy zawierającej właściwe adresy bloków danych.
Podstawowym problemem związanym ze stosowaniem
bloków o wielkości nie mniejszej niż 4096 bajtów jest to, że
w systemach UNIX istnieje wiele plików o bardzo małych roz-
I-węzeł jest strukturą danych zawie-
/usr/include/ufs/ systemu FreeBSD.
62
www.hakin9.org
Hakin9 Nr 3/2004
czenie rejestrowania sesji następuje
po wydaniu polecenia script (wyni-
ki domyślnie zapisywane są w pliku
o nazwie typescript ), natomiast w sys-
Ogólna charakteryskyka systemu
plików BSD Fast File System (FFS)
W systemie plików FFS (Rysunek 1) wprowadzono podział
partycji na jeden lub więcej obszarów zwanych grupami cylin-
drów (jeden lub więcej kolejno następujących po sobie cylin-
439170055.038.png 439170055.039.png 439170055.040.png 439170055.041.png 439170055.042.png 439170055.043.png
 
Zgłoś jeśli naruszono regulamin