1
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Zagrożenia
bezpieczeństwa i
systemy detekcji
włamań
DNS, routing, programy i
systemy operacyjne
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Zagadnienia
Wykorzystywanie luk systemów operacyjnych i ich programów
składowych
Exploit-y: programy testujące oprogramowanie systemowe pod kątem
wykorzystania jego potencjalnych słabości
Badanie programów pod kątem ich odporności na przepełnienie bufora
(buffer overflow exploits)
Wykorzystanie luk związanych z uruchamianiem programów o
uprawnieniach administratora
Ataki wymierzone w infrastrukturę sieci
DNS spoofing - fałszywe IP
Kierowanie ruchu do podstawionych bram (routing redirection)
Monitorowanie pracy i wykradanie danych z komputerów
Systemy detekcji wtargnięć (IDS - intrusion detection systems)
2
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
DNS
Opanowanie serwera DNS = możliwość wprowadzanie w błąd
użytkowników sieci co do tożsamości komunikujących się ze
sobą komputerów
Ataki przeciwko DNS
Rozproszona baza danych z informacjami wiążącymi adresy IP z
nazwami komputerów
Serwer DNS - komputer z odpowiednim oprogramowaniem: zwykle
działający w systemie UNIX i posiadający usługę systemową BIND
(Berkeley Internet Name Domain)
Usłudze przydzielony jest port 53 TCP
Prośba o
pomoc
NIE
Poszukiwanie
odpowiedzi
w lokalnej
bazie danych
Sukces?
Algorytm działania serwera DNS
Żądanie
konwersji
Odpowiedź
TAK
...
Odpowiedź
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Mechanizm rozwikłania nieznanego adresu - serwery DNS
‘wyższego’ poziomu -
drzewo DNS
Ataki przeciwko DNS
Tworzenie lokalnej bazy danych DNS
Uaktualnianie każdorazowo, gdy zajdzie potrzeba (prośba o dane
dotyczące nieznanego wcześniej hosta), na podstawie informacji
pobranej z innego DNS
bond.mi6.uk.mil
kloss.abwehra.com
IP - ?
dns.mi6.def.mil
dns.root
Ktokolwiek w podsieci odwiedzał
hosta - IP będzie w tablicy i DNS
odpowie; jeśli nie: pyta dalej
dns.uk.mil
Jeżeli znany - odpowiedź, jeżeli
nie - przekazanie prośby
dns. mil
3
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki na DNS
DNS Spoofing - preparowanie odpowiedzi w wymianie danych
między DNS
Zapytanie o określenie adresu, jest opatrywane unikalnym ID -
odpowiedź zawiera to samo ID i na tej podstawie jest ona zatwierdzana
Jeżeli generacja kolejnych ID w serwerze jest deterministyczna -
możliwe jest jego przewidzenie i uprzedzenie prawdziwej odpowiedzi
spreparowanym pakietem
Uwarunkowania ataku
Hacker
Cel: wprowadzenie
fałszywego adresu D
do serwera DNS G
Serwer
DNS G
Nie ma w nim
dotychczas danych
o komputerze D
Serwer
DNS 2
D
DNS 2 zawiera
informacje
o komputerze D
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki na DNS
Scenariusz ataku
Wysyła do DNS G prośbę o swój własny adres -
zyskuje aktualne ID pakietu
1
Wysyła do DNS G prośbę o adres D. Adresu nie ma w DNS G, więc będzie on
pytał kolejne serwery DNS, wysyłając do nich pakiety z
ID+1
2
Szybko podsyła do DNS odpowiedź w imieniu DNS 2 z fałszywymi danymi
komputera D
3
Ochrona
Stosowanie losowych zmian ID pakietów z zapytaniami o dane
(standardowy element aktualnych wersji programu BIND)
4
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki na DNS
DNS Spoofing - ochrona c.d.
Fałszywe serwisy www - mechanizm oszustwa
DNSSEC - uwierzytelnianie wymiany danych między serwerami
DNS - uaktualnianie informacjami pochodzącymi wyłącznie z
zaufanych źródeł
Tworzenie stron z pozornymi linkami (na stronie link prowadzi rzekomo
do pko.bp.pl, podczas gdy naprawdę wskazuje na
url=hack.com/pko.bp.pl)
Wybranie linku to odwołanie do serwera hack.com - atakujący wie,
jaka strona miała być wczytana - preparuje atrapę o wyglądzie
odpowiadającym oczekiwaniom użytkownika i zbiera za jej pomocą
wymagane informacje
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki na DNS
DNS Spoofing poprzez DHCP
DHCP - użytkownik jest obsługiwany przez dynamicznie przypisywany
serwer DNS
Mechanizm ataku
1
Hacker wysyła
w imieniu serwera DHCP
do komputera z dynamicznie
przydzielanym IP informację o rzekomej zmianie adresu serwera DNS.
2
Serwer DNS należy do hackera i zawiera nieprawdziwe dane
Żądania użytkownika są obsługiwane przez podstawiony DNS - zamiast
połączeń z amazon.com itp., użytkownik wczyta spreparowane
odpowiednio strony atakującego
3
Ochrona - zablokowanie zewnętrznych żądań DHCP
5
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki związane z routingiem
Prosty protokół przesyłania pakietów (RIP - Routing Information)
A
A
B
B
C
C
Y
Y
D
D
E
E
F
F
G
G
Mam 1
do Y
Mam 2
do Y
Mam 3
do Y
Mam 4
do Y
Mam 2
do Y
Zakłada, że wszystkie routery są godne zaufania, bo trasa jest budowana
na podstawie ‘oświadczeń’ routera o odległości do wybranego hosta
Routery używają tablic (forwarding table) z informacjami o najkrótszych
połączeniach do różnych hostów, pobieraną od sąsiadów i okresowo
uaktualnianą (co ok. 30 s, między innymi po to by znać stan połączenia)
Pakiety są przesyłane najkrótszą drogą
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki związane z routingiem
A
B
C
Y
D
E
F
G
Mam 1
do Y
Mam 2
do Y
Mam 3
do Y
Mam 4
do Y
Mam 2
do Y
x
Mam 1
do Y
Atak przeciwko RIP - podsunięcie fikcyjnych informacji o
odległości do celu
Przekazanie fałszywych informacji o odległości do celu wymusi
przesyłanie pakietów do określonych sieci przez router atakującego
Metody ochrony
Stosowanie innych protokołów - OSPF (Open Shortest Path Protocol)
Uwierzytelnianie
6
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki w OS i jego usługi - exploity
Język C
Powstał (lata 70-te) dla uniezależnienia UNIX-a od konkretnego
procesora (UNIX był napisany w języku assemblera)
main(){
...
F(5);
...
}
function F(int y)
{
int V;
V = y+100;
}
Mechanizm wywoływania funkcji w C
adres
kod
...
...
0x8054321
pushl $0x5
0x8054322
call $0x80543a0
0x8054328
...
...
0x80543a0
popl %eax
0x80543a1
addl $0x100,%eax
0x80543a4
...
Pamięć
Stos
czas
Argument:
5
Adres powrotu
0x8054327
5
0x8054327
5
Zmienne lokalne
V
0x80543a0
:
0x8054322
:
call 0x80543a0
:
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Przepełnienie bufora
main(){
...
F1(”
buffer_overflow
”)
;
...
}
function F1(char* y){
char txt[
8
];
...
strcpy(txt,y);
...
}
Zmiana adresu powrotu z procedury przez nadpisanie danymi
:
RET_ADDR
0xBF000001
txt[0]
txt[7]
:
CALL
0x80543a0
b
u
f
:
w
Pamięć
:
b
o
:
CALL
0x80543a0
:
Pamięć
:
Do zmiennej ‘txt’
kopiowane jest
więcej niż 8 znaków
Kod podstawiony
RET_ADDR
verflow
Nadpisanie adresu powrotu
Błąd programisty - skok niedozwolony przez OS i przerwanie programu
7
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Przepełnienie bufora
Buffer overflow exploit - zamierzona wartość adresu powrotu
Ochrona
Idea postępowania - tak nadpisać adres powrotny, by wskazywał początek
procedury, którą chce się wykorzystać do przeprowadzenia ataku (może
to być dowolny z systemowych plików ‘dll’, dających dostęp do plików,
uprawnień, może to być uruchomienie serwera itp.)
Opracowywanie programów odpornych na atak (sprawdzanie danych
wprowadzanych przez użytkownika) - twórcy oprogramowania
Monitorowanie stanu komputera (np. obecność zrzutów ‘core’ w
katalogach użytkowników może świadczyć o działaniu exploit-a)
Stosowanie ogólnych zasad bezpieczeństwa - sprawdzone serwisy,
instalowanie ‘ugrade-ów’ i łat w systemach itp.
Inne ataki metodą przepełnienia bufora
Skrypty CGI (Perl, PHP)
Dowolne usługi OS, ...
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Ataki wykorzystujące SUID
Bit SUID (GUID) - określanie uprawnień programu
SUID/SGID wyzerowany - uprawnienia użytkownika (grupy), który go
uruchamia
Uruchomienie program z ustawionym SUID - uzyskanie uprawnień
instalującego (np. root-a)
Zerowanie flagi SUID jeżeli nie jest to konieczne
Instalowanie programów z kont o mniejszych uprawnieniach (jeżeli to
możliwe, np. użycie konta root jedynie do kopiowania binariów, zaś
instalacja z poziomu zwykłego użytkownika)
SUID/SGID (user id / group id) ustawiony - program ma uprawnienia
właściciela (tego, kto go zainstalował)
-r-
s
r-xr-x root bin 1000 some_prog DEC 13 02
Zmniejszanie zagrożenia atakiem
Potencjalne zagrożenie bezpieczeństwa
8
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Wykorzystanie programu SUID do
uruchomienia programu
podstawionego przez atakującego
(root shell vulnerability)
Ataki wykorzystujące SUID
Uwarunkowania ataku
Program SUID wywołuje inne programy
Wywołanie nie jest poprzedzone dokonaniem żadnych sprawdzeń
(np. dotyczących lokalizacji uruchamianych plików)
Metoda ataku
Podstawienie pod procedurę (program, plik wsadowy) uruchamianą
przez program SUID swojego pliku
Scenariusz ataku
Utworzenie pliku o nazwie identycznej z programem uruchamianym
przez program SUID i odpowiednio spreparowanym kodem
Umieszczenie podstawianego pliku w dowolnym katalogu użytkownika
Dodanie na początku pliku ‘path’ ścieżki do wybranego katalogu
Wykonanie programu SUID (czyli, wykonanie ataku)
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Uruchamianie podstawionych programów - przykład
Ataki wykorzystujące SUID
Obiekt ataku - program
SubnetConfig
systemu UNIX - korzystający
z programu ‘
cat’
.
path = /temp:$path;
Dodanie na początek ścieżki systemowej ścieżki do wybranego foldera
Utworzenie pliku o nazwie ‘cat’ z kodem ingerującym w system zgodnie
z zamiarem atakującego (wstawienie polecenia kopiowania tekstu ‘++’
do pliku .rhosts)
Umieszczenie pliku w wybranym folderze (np. o nazwie ‘temp’)
Uruchomienie programu
SubnetConfig
, i pośrednio - procedury
cat
Wywołanie podstawionej procedury cat, modyfikującej plik .rhosts w
sposób pozwalający na uzyskanie uprawnień administratora
dowolnemu logującemu się użytkownikowi (program działa w imieniu
administratora, ma więc prawo modyfikacji pliku .rhosts)
Efekt
9
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Wykorzystanie programu SUID do
nadpisania plików
(SUID file overwriting vulnerability)
Ataki wykorzystujące SUID
Uruchomienie programu SUID i zapewnienie, by tekst rejestrowany
w logu zawierał informacje, które mają znaleźć się w atakowanym
pliku (wprowadzany tekst jest jednocześnie wpisywany do logu i do
wybranego przez nas pliku)
Scenariusz
Utworzenie linku, łączącego plik logu programu SUID z plikiem,
który chcemy nadpisać (obiektem ataku).
program o uprawnieniach SUID tworzy plik, do którego wpisuje
dane (np. log).
program SUID nie upewnia się czy istnieją jakiekolwiek dodatkowe
uwarunkowania dla procedury zapisywania pliku (jak np. powiązanie
zapisywanego dziennika z innym plikiem)
Uwarunkowania ataku
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Nadpisywanie plików - przykład
Ataki wykorzystujące SUID
Jeżeli katalog domowy użytkownika jest otwarty do zapisu dla
wszystkich, napastnik może w nim umieścić swój .rhosts i w
ten sposób uzyskać możliwość logowania do konta
Atakowany plik - ‘.
rhosts’
systemu UNIX, wykorzystywany program -
PPS
(point to point serial protocol)
ln -s /.rhosts log
log
- alias do pliku dziennika programu PPS
Utworzenie linku
pps -o ‘++’
- wpisanie ‘++’ do .rhosts
Atak (uruchomienie programu)
mv log old_log
Zatarcie śladów
Po wykonaniu procedury, podmieniony plik .rhosts pozwala napastnikowi
na przejęcie kontroli nad komputerem
Efekt
10
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Wydobywanie ‘wymazanych’ danych (usuwanie plików)
Wykradanie danych z komputerów
Wymaganie fizycznego dostępu do komputera lub instalacji
odpowiedniego oprogramowania
Windows - usunięcie pliku to jedynie usunięcie wpisu z tablicy
alokacji plików. Same dane pozostają na dysku do momentu ich
późniejszego nadpisania. W warunkach silnej defragmentacji dysku
dane te mogą być dostępne przez długi czas.
Ochrona - używanie programów do wymazywania danych (zastępują
wymazywane dane losowymi wartościami)
Swap file
Dane z RAM są czasowo składowane na dysku w tymczasowym pliku
(swap file), zawierającym mnóstwo cennych informacji (hasła, klucze,
treść dokumentów itp.)
Instalacja programu odczytującego dane z pliku tymczasowego
(i analizującego dane, np. w poszukiwaniu słów password itp.) daje
dostęp do tajnych informacji
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Inne metody podsłuchu
Wykradanie danych z komputerów
Pliki historii
Podsłuch klawiatury i portów lokalnych (keyboard snooping /
sniffing) - programowy lub sprzętowy
Idea programów detekcji - prośba o wpisanie zadanego tekstu i
sprawdzenie, czy został zarejestrowany w pliku
Przeglądanie automatycznie tworzonych plików historii daje informacje
o aktywności użytkownika
Uwaga na kawiarenki internetowe !
Zrzuty pamięci obrazu (‘zdjęcia’ ekranu)
Zdalne odczytywanie zawartości monitora
Metoda ochrony - zapewnienie spełnienia odpowiednich norm
(TEMPEST - Transient ElectroMagnetic PulsE Standard)
Monitor emituje fale elektromagnetyczne, które mogą być podsłuchane
i odczytane, zdradzając wyświetlane treści
11
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Systemy detekcji włamań
Systemy detekcji włamań (intrusion detection)
Założenie - istnieją ślady możliwe do znalezienia przez analizę ruchu,
zużycie CPU, częstość operacji I/O, analizę pakietów, rodzaje aktywności
w odniesieniu do systemu (usuwanie plików) itp.
Detekcja bazująca na regułach
Detekcja bazująca na statystyce
Zapory nie chronią przed potencjalnymi włamaniami dokonywanymi
nie strzeżonymi przez nie kanałami (modem, dostęp bezprzewodowy,
ataki dokonywane od wewnątrz sieci)
Detekcja anomalii
Detekcja nadużyć
Statystyczne niezgodności w aktywności użytkownika
w stosunku do utworzonego wcześniej profilu
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Systemy detekcji włamań
Profil komputera - średnie obciążenie CPU, średnia liczba korzystających
z niego użytkowników, najczęściej wykorzystywane usługi itp.
Profil użytkownika -
Działanie - monitorowanie sesji i alarmowanie w sytuacjach wyraźnych,
dużych odstępstw od istniejącego profilu odniesienia
Detekcja nadużyć - porównywanie aktywności z charakterystykami znanych
ataków, zgromadzonymi w bazie danych systemu. Baza musi być na
bieżąco aktualizowana.
Ponieważ zasady mogą nie być jednoznaczne, detekcja aktywności
uznawanej za atak może wymagać zaawansowanych metod analizy.
Pakiety IDS
Internet Security Systems (dodatek do zapór programowych CheckPoint)
- monitorowanie TCP, UDP, ICMP
12
Bezpieczeństwo systemów informatycznych
Krzysztof Ślot © 2002
Systemy detekcji włamań
Network Associates - CyberCop - rozproszony system z centralnym
serwerem analizy danych
Pożądane cechy systemu
Monitorowanie w czasie rzeczywistym
Celowe zasypywanie dziennika lawiną informacji
Preludium wielu ataków
Aby wyczyścić dziennik
Rozmiary dziennika mogą sięgać setek MB
Nietypowe godziny aktywności