Table Of ContentRok akademicki 2012/2013
Politechnika Warszawska
Wydział Elektroniki i Technik Informacyjnych
Instytut Informatyki
PRACA DYPLOMOWA MAGISTERSKA
Tomasz Iwanek
Wykorzystanie algorytmów grupowania do analizy
eksploitów dedykowanych systemom rodziny Windows
Opiekun pracy
dr inż. Krzysztof Cabaj
Ocena: .....................................................
.................................................................
Podpis Przewodniczącego
Komisji Egzaminu Dyplomowego
Kierunek: Informatyka
Specjalność: Inżynieria Systemów Informatycznych
Data urodzenia: 1988.07.12
Data rozpoczęcia studiów: 2011.10.01
Życiorys
Nazywam się Tomasz Iwanek. Urodziłem się 12 lipca 1988 r. w Kielcach. Po ukończeniu VI
Liceum Ogólnokształcącego im. Juliusza Słowackiego w Kielcach w roku 2007, rozpocząłem
dzienne studia na Politechnice Warszawskiej na Wydziale Elektroniki i Technik
Informacyjnych na kierunku Informatyka. Zgodnie z moimi zainteresowaniami wybrałem
specjalność Inżynieria Systemów Informatycznych. We wrześniu roku 2011 uzyskałem tytuł
inżyniera, a następnie rozpocząłem studia drugiego stopnia.
.......................................................
Podpis studenta
EGZAMIN DYPLOMOWY
Złożył egzamin dyplomowy w dniu ..................................................................................20__ r
z wynikiem ...................................................................................................................................
Ogólny wynik studiów: ................................................................................................................
Dodatkowe wnioski i uwagi Komisji: ..........................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
STRESZCZENIE
Praca przedstawia zagadnienie wykorzystania popularnych algorytmów grupowania w celu
podziału na klastry danych dotyczących złośliwego kodu na platformę windows. Uzyskane
wyniki potwierdzają możliwość wykorzystania metod odkrywania wiedzy do podziału takich
danych na grupy. W ramach pracy został zaimplementowany system informatyczny
umożliwiający grupowanie takich danych i przegląd wyników analizy. Przy zaproponowanym
podejściu otrzymane grupy przykładów posiadają podobne cechy i reprezentują działalność
złośliwego kodu z jednej rodziny.
Słowa kluczowe: metody odkrywania wiedzy, grupowanie, shellcode, exploit,
Windows, Libemu.
Analysis of use of clustering algorithms
to categorize shellcodes dedicated for windows platform
This thesis describes use of popular clustering algorithms for purpose of dividing data
containing information about detected shellcode samples. It shows possibility of splitting such
a data into logical group using data mining methods. Each received group can be defined as
one type of shellcode for windows platform. Along with experiments, web application was
developed to support process of collecting and processing data with clustering algorithms.
Keywords: machine learning, clustering, shellcode, exploit, Windows, Libemu.
Spis tres´ci
1. Wste˛p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Opis danych wejs´ciowych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Atrybuty ogólne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Parametry sieciowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. Parametry szyfrowania kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Parametry wywołania funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Grupowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1. Metryki podobien´stwa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2. Taksonomia algorytmów grupowania . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1. Algorytmy płaskie i hierarchiczne . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2. Algorytmy oparte o model formalny . . . . . . . . . . . . . . . . . . . . . 11
3.2.3. Algorytmy twarde i rozmyte . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.4. Algorytmy przyrostowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3. Ocena jakos´ci procesu grupowania . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.4. Wybór algorytmów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5. Opis wybranych algorytmów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.1. Cobweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.1.1.Dobroc´ kategorii . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.5.1.2.Budowa drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5.1.3.Zasada działania . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.5.1.4.Zalety algorytmu Cobweb . . . . . . . . . . . . . . . . . . . . . . 17
3.5.2. Agnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5.2.1.Macierz niepodobien´stw . . . . . . . . . . . . . . . . . . . . . . . 17
3.5.2.2.Ła˛czenie grup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5.2.3.Zalety algorytmu Agnes . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.3. Rock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5.3.1.Sa˛siedzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.3.2.Poła˛czenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.3.3.Działanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5.3.4.Zalety algorytmu ROCK . . . . . . . . . . . . . . . . . . . . . . . 23
4. Projekt systemu shellcodeweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1. Funkcjonalnos´ci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2. Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.1. Moduł emulacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.2. Baza danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2.3. Interfejs webowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.4. Proces roboczy - Celery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.4.1.Rodzaje zadan´ procesu roboczego . . . . . . . . . . . . . . . . . 31
4.2.5. Skrypty grupowania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.5.1.Implementacja algorytmu Cobweb. . . . . . . . . . . . . . . . . 32
4.2.5.2.Implementacja algorytmu Agnes . . . . . . . . . . . . . . . . . . 32
4.2.5.3.Implementacja algorytmu Rock . . . . . . . . . . . . . . . . . . 34
5. Metodologia doboru atrybutów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Spistres´ci ii
5.1. Wprowadzone atrybuty pochodne . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.1. Atrybuty wywoływanych funkcji. . . . . . . . . . . . . . . . . . . . . . . 35
5.1.2. Atrybuty ładowanych bibliotek . . . . . . . . . . . . . . . . . . . . . . . 36
5.1.3. Atrybuty wyszukanych adresów funkcji . . . . . . . . . . . . . . . . . . 36
5.2. Dyskretyzacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3. Selekcja atrybutów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4. Ocena wyników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6. Uzyskane wyniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.1. Wszystkie atrybuty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.1.1. Cobweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.1.2. Agnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
6.1.3. ROCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2. Wybrane parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.2.1. Cobweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.2.2. Agnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2.3. ROCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.3. Zredukowana liczba atrybutów . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.3.1. Cobweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.3.2. Agnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.3.3. ROCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4. Faktyczne rodziny złos´liwego kodu . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4.1. Download-Execute (conficker) . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4.2. Download-Execute (XX.exe) . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.4.3. Download-Execute (upds.exe) . . . . . . . . . . . . . . . . . . . . . . . . 55
6.4.4. Command-Execute (jajaca). . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.4.5. Port-Bind (1130) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.4.6. Port-Bind (GetProcAddress) . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.4.7. Port-Bind (9988) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.4.8. Opcode 0xea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7. Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1. Wste˛p
Szybki rozwój technologii informatycznych w dzisiejszych czasach doprowadził i
dalej prowadzi do coraz szybszej generacji danych teleinformatycznych. Kaz˙da zin-
formatyzowanadzis´ dziedzinaz˙ycialubtaka, wktórejtotechnologiainformatyczna
ułatwia działanie, wytwarza ogromne ilos´ci informacji. Dane takie przykładowo
moga˛dotyczyc´ listy zakupów dokonywanych przez klienta sieci supermarketu, da-
nych transakcji bankowych, historii odwiedzanych witryn czy tez˙ odnotowywanych
parametrów - wielkos´ci fizycznych w przeprowadzanym eksperymencie naukowym.
Informacje takie po pierwsze trzeba zgromadzic´, ale co waz˙niejsze, w jakis´ spo-
sób przeanalizowac´, aby mogły byc´ uz˙yteczne dla danego zastosowania. Dane te
mierzone w terabajtach, pentabajtach oraz wie˛kszych zbiorach nie sa˛ moz˙liwe do
przeanalizowania przez pojedyncza˛jednostke˛ czy tez˙ zespół specjalistów bez odpo-
wiednich narze˛dzi oraz metod. W wie˛kszos´ci przypadków istotna jest tylko cze˛s´c´
danych, a reszta nie jest potrzebna, gdyz˙ nie wnosi dodatkowej wiedzy. Wzorce i
trendywtychdanychniesa˛widocznenapierwszyrzut, coutrudniaodseparowanie
istotnej cze˛s´ci.
Dlatego tez˙ coraz istotniejsze staje sie˛ wykorzystanie metod odkrywania wiedzy,
które to sa˛ tematem badan´ juz˙ od kilkudziesia˛t lat, lecz w obecnym czasie nabie-
raja˛wie˛kszego znaczenia z uwagi na cia˛gły wzrost ilos´ci otaczaja˛cej nas informacji.
Metody te umoz˙liwiaja˛ odfiltrowanie i odszukanie w wielkich zbiorach tych infor-
macji, które be˛da˛dla nas uz˙yteczne i dzie˛ki którym zdobe˛dziemy wiedze˛ przydatna˛
w interesuja˛cej nas dziedzinie.
Danymi o opisanym charakterze jest takz˙e ruch sieciowy, rozumiany jako zapis
przesyłanych informacji w postaci pakietów kolejnych warstw z modelu ISO/OSI.
Kaz˙dy system informatyczny odbiera dziennie duz˙e ilos´ci danych sieciowych i jest
naraz˙ony na próby ataków ze strony osób chca˛cych przełamac´ jego zabezpieczenia.
Manualne przegla˛danie ruchu sieciowego jest zadaniem niemoz˙liwym, natomiast
systemydetekcjiwłaman´ cze˛stobazuja˛naznanejwiedzynatematrodzajówataków
na systemy informatyczne. Co oznacza, iz˙ nie pozyskamy przy ich pomocy wiedzy
na temat nieznanych jeszcze rodzajów ataków.
Ciekawym pomysłem jest uz˙ycie metod odkrywania wiedzy w celu wykrycia no-
wych rodzajów ataków. Niniejsza praca dotyczy zbadania moz˙liwos´ci uz˙ycia oraz
porównania algorytmów grupowania w celu podziału informacji o atakach na sys-
temy na logiczne grupy. Powstałe grupy powinny byc´ moz˙liwe do zidentyfikowania
jako róz˙ne typy zagroz˙en´. Danymi uz˙ytymi w celu porównania sa˛dane o “złos´liwym
kodzie“ (taki termin został uz˙yty dla angielskiego wyraz˙enia “shellcode”) zawartym
w ruchu sieciowym. Dane te dotycza˛zagroz˙en´ dla 32-bitowego systemu windows.
Zbiór danych pochodzi z systemu honeypot (poje˛cie zostało przedstawione w po-
zycji [Iwa11]) o nazwie Diaonea i zawiera róz˙ne rodzaje ataków. Dane uz˙yte w pracy
zostały wste˛pnie przygotowane do grupowania z uz˙yciem modyfikowanego modułu
analizy złos´liwego kodu opracowanego w ramach pracy inz˙ynierskiej. Moduł ten
umoz˙liwia analize˛ ruchu sieciowego oraz uzyskanie okres´lonych atrybutów danych
1. Wste˛p 2
dla wykrytych przykładów “złos´liwego kodu” na 32-bitowa˛ platforme˛ windows. W
celu głe˛bszego zrozumienia terminu “złos´liwego kodu”, zasad jego działania w od-
niesieniu do systemu windows, a takz˙e moz˙liwej klasyfikacji ze wzgle˛du na uz˙yte
techniki odsyłam do tekstu pracy inz˙ynierskiej (pozycja [Iwa11]), poniewaz˙ poje˛c´
tych nie be˛de˛ tu definiował w dostateczny sposób.
Na uwage˛ zasługuje fakt, z˙e kaz˙dy przykład jest wynikiem faktycznej emulacji
przesłanego zbioru danych jako instrukcji asemblerowych, a nie efektem dopaso-
wania danych bajtowych do wzorców z ustalonej puli przykładów. Zbiór danych
dotyczy ogólnych informacji o kodzie (takich jak jego wielkos´c´), jak i parametrów
poła˛czenia sieciowego oraz danych na temat wywołanych funkcji systemu opera-
cyjnego.
W ramach pracy zbadano moz˙liwos´c´ analizy takich danych za pomoca˛popular-
nych algorytmów grupowania oraz porównania otrzymanych przez nie wyników. Ze
wzgle˛du na dane wytypowałem trzy moz˙liwie intuicyjne algorytmy, które odpowia-
daja˛wymaganiom dotycza˛cym grupowania danych o takiej charakterystyce. Praca
prezentuje działanie algorytmów COBWEB (Fisher, 1987), AGNES (Kaufman and
Rousseeuw, 1990) oraz ROCK (S. Guha, R. Rastogi, and K. Shim, 2000).
W ramach pracy magisterskiej zostało rozbudowane narze˛dzie umoz˙liwiaja˛ce
analize˛ złos´liwego kodu z pracy inz˙ynierskiej. Rozwia˛zanie to korzysta z biblioteki
libemu w celu emulacji kodu x86 i wykrycia doste˛pu do API systemu operacyjnego.
Analize˛ i grupowanie kodu dla przeprowadzania eksperymentów zapewnia interfejs
webowy zaimplementowany jako aplikacja w ramach “django framework”. Aplika-
cja ta korzysta z modułu analizy złos´liwego kodu, który został przystosowany jako
moduł pythonowy z uz˙yciem bibliteki boost::python. Otrzymane w wyniku grupo-
waniaklastrymoz˙naprzegla˛dac´ zuz˙yciemaplikacji. Dlakaz˙dejgrupyotrzymujemy
liste˛ przykładów. Przykładem nazywam w pracy, w rozumieniu okrywania wiedzy,
element zbioru grupowanych danych wraz z przypisanymi dla niego wartos´ciami
dla poszczególnych atrybutów zbioru.
Praca posiada naste˛puja˛cy układ. Drugi rozdział opisuje charakter i strukture˛
danych uz˙ytych otrzymanych przez moduł analizy z pracy inz˙ynierskiej. W trze-
cim rozdziale znajdziemy podstawowe informacje z dziedziny grupowania oraz opis
wybranych w pracy algorytmów. Rozdział ten zawiera równiez˙ uzasadnienie ich
wyboru. Kolejny, czwarty rozdział to opis projektu opracowanego w ramach pracy
magisterskiej. Proces przetworzenia i sposób analizy realizowany w projekcie jest
przedstawiony w rozdziale pia˛tym. Szósty rozdział przedstawia uzyskane w pracy
wyniki. Ostatni rozdział stanowi podsumowanie pracy.
2. Opis danych wejs´ciowych
Pierwotne dane wykorzystane w pracy to pliki zrzutu ruchu sieciowego, które to
zostały zapisane przez system honeypot “Diaonea”. Kaz˙dy z ataków wyprowadza-
nych na ten system jest zarejestrowany w pierwotnych danych co umoz˙liwia jego
póz´niejsza˛analize˛.
Do analizy kaz˙dego pliku w formacie “.pcap” wykorzystano moduł analizy zło-
s´liwego kodu opracowany w ramach pracy inz˙ynierskiej (pozycja - [Iwa11]). Moduł
ten został odpowiednio zmodyfikowany na potrzeby projektu w tej pracy.
W plikach interesuje nas tylko jeden rodzaj zagroz˙enia - złos´liwy kod (ang.
shellcode). Zbiór danych ograniczony jest przez implementacje˛, w której uz˙yto
biblioteki libemu (wie˛cej - pozycja [BK07]). Emulacja daje tylko wyniki dla kodu
złos´liwego na 32-bitowa˛ platforme˛ windows (tylko takie nas interesuja˛). Zbiór
przeanalizowanych danych to zbiór danych za rok 2012, udoste˛pnionych przez
Pana dr. Krzysztofa Cabaja na potrzeby pracy. W wyniku analizy otrzymujemy
zbiór, który zawiera 5508 przykładów wykrytego złos´liwego kodu i pochodzi z 59
plików zrzutu ruchu sieciowego zapisanego przez honeypot.
Atrybuty danych dostarczonych przez moduł analizy moz˙na podzielic´ na kilka
grup. Wartos´ci atrybutów dotycza˛ogólnych wartos´ci opisuja˛cych złos´liwy kod, jego
szyfrowanie, parametrów zwia˛zanych z siecia˛ oraz wartos´ci argumentów wywoła-
nych funkcji systemu operacyjnego przez dany przykład.
2.1. Atrybuty ogólne
Atrybuty ogólne definiuja˛ wszystkie cechy kodu, które nie sa˛ zakwalifikowane
do pozostałych klas i dotycza˛generalnych cech złos´liwego kodu. Tablica 2.1 przed-
stawia podane atrybuty.
W zwia˛zku z przyje˛tym sposobem analizy informacja o sposobie zakon´czenia
emulacji sa˛ tu nieuniknionym elementem. Wynika to z podejs´cia do analizy.
Biblioteka libemu emuluje instrukcje kodu 32-bitowego intelowskiej architektury
x86iumieszczawprzestrzeniadresowejtylkopodstawowestrukturyudoste˛pnianie
przez system operacyjny. Dokładny opis działania libemu zawarty jest w pracy
inz˙ynierskiej [Iwa11] w rozdziale 3.
Trudne jest tu osia˛gnie˛cie pełnej i poprawnie zakon´czonej emulacji kodu, gdy
wykryte zagroz˙enie odwołuje sie˛ do specyficznych cech dla danej wersji systemu
windows lub tez˙ spodziewa sie˛ obecnos´ci załadowanej przez system operacyjny nie-
standardowejbibliotekipodkonkretnymadresemwprzestrzeniadresowejprocesu.
Innym problem moz˙e tez˙ byc´ to, z˙e biblioteka libemu nie implementuje wszyst-
kich instrukcji architektury x86. Instrukcje rzadko spotykane w kodzie ba˛dz´ tez˙
instrukcje jednostki zmiennoprzecinkowej nie sa˛obsługiwane. Ten fakt wpływa na
to, z˙e emulacja moz˙e zakon´czyc´ sie˛ kodem błe˛du nie wspierania instrukcji o danym
kodzie operacji (ang. opcode).
2.2. Parametry sieciowe 4
Tablica 2.1. Parametry ogólne
Nazwa Offset Opis
Offset pocza˛tku analizy Adres pamie˛ci Adresw32-bitowejprzestrzeniadresowej
procesu, gdzie rozpocze˛ło sie˛ wykonanie.
Offset kon´ca analizy Adres pamie˛ci Adres, na którym kon´czy sie˛ analiza
kodu kodu. Be˛dzie to albo adres nieobsługi-
wanej przez libemu instrukcji dla błe˛du
analizy, ba˛dz´ tez˙ adres funkcji ExitPro-
cess lubExitThread przypomys´lnymwy-
konaniu kodu.
Rozmiar kodu Liczba bajtów W tym przypadku jest to wielkos´c´ pliku
lub tez˙ wielkos´c´ strumienia, w którym
wykrytozłos´liwykod(patrzrysunek2.1).
Nie jest to faktyczna wielkos´c´, jako z˙e
takiej nie da sie˛ okres´lic´ (kod nie musi
zajmowac´ cia˛głej przestrzeni)
Powód zatrzymania Łan´cuch zna- Moz˙liwewartos´cito“zakon´czeniewa˛tku”,
analizy kowy “zakon´czenie procesu” oraz “bła˛d ana-
lizy”(nieobsługiwanainstrukcja,odwoła-
nie do nieadresowanej przestrzeni)
Liczba wykonanych in- Liczba całkowita Liczba kroków emulacji wykonanych
strukcji przez biblioteke˛ libemu
Znajdowanie ker- Łan´cuch zna- Technika znajdowania adresu bazowego
nel32.dll kowy biblioteki kernel32.dll (wie˛cej pozycja
[Iwa11] - rozdział 2.3.3)
2.2. Parametry sieciowe
Kaz˙dy przykład, który został wykryty w pliku zrzutu ruchu sieciowego po-
siada uzupełnione wartos´ci atrybutów przedstawiaja˛cych poła˛czenie sieciowe (ta-
blica 2.2). Poje˛cie serwera i klienta jest zobrazowane na rysunku 2.2.
Tablica 2.2. Parametry sieciowe
Nazwa Typ Opis
Protokół Łan´cuch Nazwa protokołu warstwy transportowej
tekstowy - TCP lub UDP.
Adres serwera Adres IP Adres sieciowy serwera (rysunek 2.2)
Port serwera Port Numer portu serwera (rysunek 2.2)
Adres klienta Adres IP Adres sieciowy klienta (rysunek 2.2)
Port klienta Port Numer portu klienta (rysunek 2.2)
2.3. Parametry szyfrowania kodu
Abyukryc´ złos´liwykodprzedprostymimetodamidetekcjiataków, wie˛kszacze˛s´c´
jego zawartos´ci jest cze˛sto szyfrowana. Kod, który jest zaszyfrowany, w celu dal-
szego działania musi rozszyfrowac´ swoja˛ dalsza˛ zawartos´c´. Wie˛cej na temat szy-
frowania moz˙na odnalez´c´ w pracy inz˙ynierskiej (pozycja [Iwa11] - rozdział 2.3.2).
Kaz˙dy przykład dla którego stwierdzono wykorzystanie szyfrowania posiada atry-
buty przedstawione w tablicy 2.3).
2.4. Parametry wywołania funkcji 5
Rysunek 2.1. Załadowany strumien´ w przestrzeni adresowej procesu
Tablica 2.3. Parametry szyfrowania
Nazwa Typ Opis
Typ szyfrowania Łan´cuch Moz˙liwe wartos´ci: “byte”, “word” oraz
znakowy “dword”.
Klucz Liczba Argument natychmiastowy instrukcji
szyfruja˛cej (róz˙ne warianty instrukcji
XOR)
Pocza˛tek obszaru szy- Adres pamie˛ci Miejsce, od którego rozpoczyna sie˛ ob-
frowanego szar zaszyfrowany
Koniec obszaru szyfro- Adres pamie˛ci Miejsce, w którym kon´czy sie˛ obszar za-
wanego szyfrowany
Offset instrukcji Adres pamie˛ci Adres w przestrzeni adresowej, gdzie
znajduje sie˛ instrukcja szyfruja˛ca
2.4. Parametry wywołania funkcji
Najwie˛ksza˛ grupe˛ atrybutów stanowia˛ atrybuty opisuja˛ce interakcje˛ złos´liwego
kodu z systemem operacyjnym poprzez API systemowe. Dla kaz˙dej wywołanej przez
ten kod funkcji systemu operacyjnego tworzone sa˛ odpowiednie atrybuty. Dla
pojedynczej funkcji tworzone sa˛:
— numer sekwencyjny - liczba porza˛dkowa (pocza˛wszy od 1) oznaczaja˛ca kolejny
numer wywołanej funkcji,
— offset wywołania - jest to adres instrukcji asemblerowej “Call”, która repre-
zentuje dane wywołanie funkcji systemu operacyjnego
— wartos´c´ zwracana˛ przez funkcje˛ - wartos´c´ zwracana to wartos´c´ taka˛ jaka˛
wygeneruje biblioteka libemu,
Description:podziału na klastry danych dotyczących złośliwego kodu na platformę windows. Uzyskane wyniki potwierdzają .. Analiz˛e i grupowanie kodu dla przeprowadzania eksperymentów zapewnia interfejs webowy zaimplementowany Django Sotfware Foundation. Django Framework Documentation.