lab7

background image

Systemy wykrywania i zapobiegania włamaniom

Rafał Mielniczuk i Marcin Niemiec

Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie

Ćwiczenie dla przedmiotu:

Bezpieczeństwo Systemów Informatycznych

Spis treści

1

Wstęp

1

2

Instalacja

2

3

Ważne pliki Snort

2

4

Reguły - wprowadzenie

2

5

Ćwiczenia

3

5.1

Reguły nagłówka i pól podstawowych protokołów . . . . . . . . . . . . . . . . .

4

5.2

Sprawdzanie zawartości pakietów . . . . . . . . . . . . . . . . . . . . . . . . . .

4

5.3

Wyrażenia regularne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

5.4

Opcje depth, distance i offset . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

5.5

Opcje flow bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

5.6

Przetwarzanie zdarzeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1

Wstęp

Sieciowy system wykrywania włamań (ang. Intrusion Detection System - IDS) jest urządze-
niem lub programem komputerowym, który monitoruje aktywności w sieci w celu wykrycia
podejrzanych aktywności lub naruszeń polityk bezpieczeństwa. Jeśli takowe wystąpią zostanie
podjęta wcześniej zdefiniowana akcja, jak np. wysłanie wiadomości do administratora, zapi-
sanie podejrzanych pakietów do pliku, lub nawet zmiana reguł firewalla aby zablokować ruch
z podejrzanego adresu IP. Ostatnia funkcjonalność jest obecna w systemach wykrywania i
zapobiegania włamaniom (ang. Intrusion Detection and Prevention System - IDPS).

Obecnie spotykane są dwa typy systemów wykrywania włamań. W pierwszym ruch sie-

ciowy jest monitorowany w poszukiwaniu charakterystycznych binarnych wzorców, które są
podobne do znanych ataków. Są to systemy wykrywania włamań w oparciu o sygnatury (ang.
signature-based intrusion detection system). Drugi typ, wykorzystuje historię lub statystykę
ruchu w sieci. Jeśli przechwycony zostanie pakiet lub ruch który odbiega od normalnego wzor-
ca, zostanie zgłoszony alarm. Są to systemy wykrywania włamań wykrywające anomalie (ang.
anomaly-based intrusion detection system).

Snort jest popularnym i otwarto-źródłowym systemem wykrywania i zapobiegania włama-

niom. Obecna wersja Snort (2.9) integruje analizę sygnatur, protokołów i anomalii.

1

background image

2

Instalacja

$ sudo apt-get update
$ sudo apt-get install snort

Instalacja i konfiguracja programów niezbędnych do wykonania tego ćwiczenia jest za-

prezentowana na przykładzie dystrybucji Ubuntu 12.04 i Snort w wersji 2.9.2 (dostępny w
Ubuntu 12.04). Jeśli wymagane programy są na twoim stanowisku zainstalowane i popraw-
nie skonfigurowane możesz opuścić tą sekcję i kontynuować wykonywanie ćwiczenia (Sekcja
4). Procedura instalacji Snort może wymagać podania adresu sieci lokalnej w notacji CIDR ,
np. 192.168.1.0/24. Jeśli Snort będzie używany na interfejsie lokalnym wystarczy w notacji
CIDR podać 127.0.0.0/8
.

3

Ważne pliki Snort

/var/log/snort Zawiera pliki z logami i alarmami. Pliki alarmów są plikami tekstowymi, pli-

ków logów są w formacie pcap i możesz otworzyć je np. używając programów Wireshark
lub tcpdump.

/etc/snort/snort.conf Domyślny plik konfiguracyjny. Ustawia opcje pracy Snort i włącza

pliki z sygnaturami reguł.

/etc/snort/rules - Katalog z sygnaturami reguł.

4

Reguły - wprowadzenie

Jednym z zadań Snort jest wykonanie pewnej akcji jeśli jakaś reguła pasuje do otrzymanego
pakietu. Reguły są zdefiniowane przeważnie w jednej linii, np:

Listing 1: Przykładowa reguła #1

drop icmp any any -> any any

Jednokierunkowy operator -> ustala adres po lewej jako adres źródłowy i adres po pra-

wej jako docelowy. Dwukierunkowy operator <> nie różnicuje kierunków. Powyższa reguła
sprawi, że Snort zablokuje każdy przechwycony pakiet ICMP

1

. Ogólny format reguł wygląda

następująco:

nagłówek reguły (opcje reguły)

gdzie nagłówek reguły określa podstawowe informacje jak protokół, adres i port:

akcja protokół adres port kierunek adres port (opcje reguły)

Analizując listing 1 zgodnie z formatem mamy: Snort zablokuje pakiet (drop) jeśli jest

pakietem ICMP (icmp) z arbitralnymi adresami źródłowymi (any) i docelowymi (any). Opcje
reguły nie zostały użyte. Opcje numeru portu mają sens tylko dla protokołów TCP i UDP.
Dla protokołów IP i ICMP należy użyć any. Adresy mogą być podane w notacji CIDR a porty
mogą zostać podane w postaci przedziału lub z operatorem negacji !, np.

1

Aby Snort rzeczywiście zablokował pakiet wymagana jest odpowiednia konfiguracja i uruchomienie progra-

mu.

2

background image

Listing 2: Przykładowa reguła #2

alert udp any any -> 192.168.2.0/24 !1:1024 \
(msg: "UDP packet on port > 1024 detected"; sid:1000000;)

Zgodnie z listingiem 2 Snort zgłosi alarm dla każdego pakietu UDP wysłanego na adres

192.168.2.0/24 i numer portu docelowego > 1024. Dodatkowo alarm będzie opatrzony ko-
munikatem “UDP packet on port > 1024 detected” i numerem sygnatury (sid) równym
1000000.

Numery sid < 100 zarezerwowane są na przyszłe użycie, numery 100 <= sid < 1000000

przeznaczone są na reguły dostarczone ze Snort. Dla użytkowników na lokalne reguły pozostają
numery sid >= 10000000.

Opcje reguły zapisywane w nawiasie definiują zadanie do wykonania jeśli nagłówek reguły

pasuje do przechwyconego pakietu. Na listingu 2 było to wyświetlenie komunikatu

2

. Mogą się

składać się z kilku pozycji zawsze zakończonych średnikiem:

nagłówek reguły (pozycja1;pozycja2;pozycja3;pozycja4;)

W przypadku skomplikowanych reguł dla przejrzystości można zapisać je w wielu liniach

używając znaku nowej linii lub backslash i nowej linii (Patrz listing 2). Więcej informacji na
temat reguł i użycia Snort można znaleźć w [2, 3, 4].

5

Ćwiczenia

Ćwiczenia zostaną przeprowadzone z minimalną konfiguracją Snort. W tym celu stwórz poniż-
sze pliki (pliki /tmp/snort.conf i /tmp/exercises exemplary.rules mogą być skopiowane
ze strony internetowej):

$ touch /tmp/snort.conf /tmp/exercises_exemplary.rules /tmp/exercises.rules

Lising 3 przedstawia minimalną i zalecaną zawartość pliku konfiguracyjnego Snort potrzeb-

ną do wykonania tego ćwiczenia. Konfiguracja ta włącza preprocesor strumienia, zarówno dla
protokołu TCP jak i UDP, oraz załącza dwa pozostałe poprzednio stworzone pliki. Preprocesor
strumienia umożliwia analizowanie sesji pakietów zamiast pojedyńczej analizy pakietów, np.
połączenie TCP.

Listing 3: Zawartość pliku konfiguracyjnego Snort

preprocessor stream5_global: \

track_tcp yes, \
track_udp yes, \
track_icmp no

preprocessor stream5_tcp: timeout 60
preprocessor stream5_udp: timeout 60

include /tmp/exercises.rules
include /tmp/exercises_exemplary.rules

Przed przystąpieniem do wykonywania ćwiczeń zatrzymaj domyślną instancję Snort:

2

W opisywanej wersji Snort nadanie identyfikatora sygnatury wydaje się obligatoryjne dla wyświetlania

komunikatu.

3

background image

$ sudo service snort stop

Następnie uruchom Snort poniższym poleceniem. Użyte opcje oznaczają odpowiednio: -q

nie wyświetla informacji o inicjalizacji; -A console alarmy zostaną wyświetlone na konsoli;
-K none wyłączenie logowania pakietów; -k none wyłączenie sprawdzania sum kontrolnych w
pakietach; -c /tmp/snort.conf użycie minimalnego pliku konfiguracyjnego; -i eth0 interfejs
sieciowy do nasłuchiwania.

$ sudo su -
$ snort -q -A console -K none -k none -c /tmp/snort.conf -i eth0

Przeznacz plik /tmp/exercises exemplary.rules na przykładowe reguły zawarte w tej

instrukcji. Przeznacz plik /tmp/exercises.rules na reguły z zadań do wykonania. Plik ten
możesz później wykorzystać do przygotowania sprawozdania. Miej na uwadze, że w Ubuntu
zawartość katalogu /tmp/ zostaje utracona po restarcie. Aby Snort wczytał pliki reguł od
nowa, musisz go zatrzymać przez naciśnięcie CTRL+C na konsoli i uruchomić ponownie jak
na listingu powyżej.

W każdym ćwiczeniu jesteś zobligowany wykorzystać opcje reguł wymienione

w nazwie ćwiczenia.

Dla każdego ćwiczenia zwróć uwagę na to czy twoje reguły nie powodują fałszywych alar-

mów. Przeanalizuj co można zrobić aby zmniejszyć ich liczbę.

Ponieważ ruch do analizy został przygotowany w różnych konfiguracjach sieciowych dla

źródłowego i docelowego adresu IP użyj any i any. Gdzie możliwe, użyj domyślnego portu
usługi.

5.1

Reguły nagłówka i pól podstawowych protokołów

Przykładowe zadanie
Identyczny adres źródłowy i docelowy w pakiecie ICMP.

Opis
Takie pakiety są kompletnie błędne jeśli zostały odebrane przez sieć.

Przykładowe rozwiązanie

alert icmp any any -> any any (msg:"Destination and source are same"; ←-

sameip; sid:1000000)

Zadanie do wykonania
Wykrycie prób traceroute.

Opis
Jaka jest najmniejsza wartość TTL nagłówka IP dla której pakiet jest odbierany?

5.2

Sprawdzanie zawartości pakietów

Przykładowe zadanie
Wykrycie prób wylistowania dostępnych baz danych na serwerze MySQL.

4

background image

Opis
Polecenie “show databases” nie jest używane często przez działające usługi.

Przykładowe rozwiązanie

alert tcp any any -> any 3306 (msg:"MySQL show databases attempt"; flow:←-

to_server,established; content:"show databases"; nocase; sid:1000001)

Zadanie do wykonania
Wykryj pakietu RTP[5] na porcie 45802 i numerze sekwencji 16950.

Opis
Za pozostałe wartości pój nagłówka RTP przyjmij: ver:2, padding:0, ext:0, csic:0,
marker:1, pt:96

5.3

Wyrażenia regularne

Przykładowe zadanie
Użycie karty kredytowej Visa o numerze XXXX-XXXX-XXXX-4448 w formularzu na stronie
Internetowej.

Opis
Wszelkie transakcje przy użyciu numerów kart kredytowych powinny być dokonywane z wy-
korzystaniem szyfrowania. W ten sposób można wykryć nierozważnych użytkowników.

Przykładowe rozwiązanie

alert tcp any any <> any 80 (msg:"VISA card number in clear text"; pcre←-

:"/4\d{3}(\s|-)?\d{4}(\s|-)?\d{4}(\s|-)?4448/"; flow:to_server,←-
established; sid:1000002;)

Zadanie do wykonania
Nawiązanie połączenia VoIP przy użyciu klienta Linphone w wersji 3.2.X.

Opis
Taka reguła mogła by być pomocna w wyszukiwaniu użytkowników, którzy nie uaktualnili by
klienta VoIP i wersja ta zawierałaby luki bezpieczeństwa.

5.4

Opcje depth, distance i offset

Przykładowe zadanie
Wykrycie wyłączonego programu serwera NTP.

Opis
Na pakiet UDP przychodzący na zamknięty port system operacyjny prześle odpowiedni pakiet
ICMP zawierający oryginalny pakiet UDP.

5

background image

Przykładowe rozwiązanie

alert icmp any any -> any any (msg:"NTP server offline"; content:"|00 7b|";←-

offset:22; sid:1000003)

Zadanie do wykonania
Wykrycie prób łączenia się do thepiratebay.sx

Opis
Połączenia do danej domeny poprzedzone są zapytaniami DNS.

5.5

Opcje flow bit

Przykładowe zadanie
Użytkownik rozpoczną odtwarzanie zasobu video01 na przy użyciu protokołu RTSP z serwera
na porcie 5544.

Opis
Akcja pass w początkowych regułach sprawia, że reguła nie powoduje alarmu. Dyrektywy
flowbits mogą być użyte więcej niż raz w opcjach reguły.

Przykładowe rozwiązanie

pass tcp any any -> any 5544 (msg:"RTSP SETUP"; content:"SETUP rtsp"; ←-

content:"RTSP"; distance:0; flow:from_client,established; flowbits:set,←-
rtsp.setup; sid:1000004;)

pass tcp any 5544 -> any any (msg:"RTSP SETUP OK"; content:"RTSP/1.0 200 OK←-

"; flow:from_server,established; flowbits:isset,rtsp.setup; flowbits:←-
unset,rtsp.setup; flowbits:set,rtsp.setupok; sid:1000005;)

pass tcp any any -> any 5544 (msg:"RTSP PLAY"; content:"PLAY rtsp"; flow:←-

from_client,established; flowbits:isset,rtsp.setupok; flowbits:unset,←-
rtsp.setupok; flowbits:set,rtsp.play; sid:1000006;)

alert tcp any 5544 -> any any (msg:"RTSP somebody watches video01"; content←-

:"RTSP/1.0 200 OK"; flow:from_server,established; flowbits:isset,rtsp.←-
play; flowbits:unset,rtsp.play; sid:1000007;)

Zadanie do wykonania
Użytkownik po zalogowaniu się na serwer Gadu-Gadu[6] wysyła wiadomość z słowem haslo.

Opis
Reguła ta może pomóc wytropić nierozważnych użytkowników wymieniających informację o
hasłach nieszyfrowanym protokołem Gadu-Gadu.

5.6

Przetwarzanie zdarzeń

Przykładowe zadanie
Wykrycie prób TCP Syn Flood na usługę SSH i zablokowanie ataku na 10 sekund. Za atak
TCP Syn Flood uznaj więcej niż 30 prób na sekundę,

6

background image

Opis
Dla celów tego ćwiczenia, zamiast zablokować atak używając new action drop, zostanie wy-
świetlona wiadomość (new action alert).

Przykładowe rozwiązanie

pass tcp any any -> any 22 (msg:"TCP Syn Flood on SSH, packet dropped"; ←-

flags:S; sid:1000008;)

rate_filter gen_id 1, sig_id 1000008, track by_src, count 30, seconds 1, ←-

new_action alert, timeout 10

Zadanie do wykonania
Wykryj próby ataku siłowego na usługę SMTP.

Opis
Nie używaj przestarzałej opcji threshold. Alarm o ataku ma się pojawić nie częściej niż co 1
minutę. Wykorzystaj event filter.

Literatura

[1] Rule Search. http://www.snort.org/search. [Online; Accessed 11 September 2013].

[2] The Snort Project. SNORT

R

Users Manual 2.9.5, 2013. [Online; Accessed 11 September

2013].

[3] The Snort Project. SNORT

R

Users Manual 2.9.5, May 2013. [Online; Accessed 11 Sep-

tember 2013].

[4] Snort FAQ/Wiki. https://github.com/vrtadmin/snort-faq/blob/master/README.md.

[Online; Accessed 11 September 2013].

[5] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson. RTP: A Transport Protocol for

Real-Time Applications. RFC 3550 (Standard), July 2003. Updated by RFCs 5506, 5761,
6051.

[6] Protokol Gadu-Gadu. http://www.ggsender.ovh.org/protocol.html. [Online; Acces-

sed 11 September 2013].

7


Wyszukiwarka

Podobne podstrony:
cpp z ccfd, pocpp lab7
Lab7
PE LAB7 generatory
lab7 3 6
dsp lab7 id 144062 Nieznany
lab7 NHIP pyt
[7]opracowanie, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki,
lab7 NHIP
lab7
Lab7
lab7
LAB7 4, Tabela
wmp lab7, Laboratorium Informatyki
lab7 dopasowywanie krzywych
lab7 1 7
lab7 1 5
Lab7 4 1
i2 lab7
Lab7 KWW TOPCAM

więcej podobnych podstron