VYSOK ´
E U ˇ
CEN´I TECHNICK ´
E V BRN ˇ
E
BRNO UNIVERSITY OF TECHNOLOGYFAKULTA INFORMA ˇ
CN´ICH TECHNOLOGI´I
´
USTAV INFORMA ˇ
CN´ICH SYST ´
EM ˚
U
FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMSDETEKCE A IZOLACE ´
UTO ˇ
CN´IK ˚
U POMOC´I
Z ´
AZNAM ˚
U NETFLOW
DETECTION AND ISOLATION OF ATTACKERS USING NETFLOW DATA
DIPLOMOV ´
A PR ´
ACE
MASTER’S THESIS
AUTOR PR ´
ACE
MAT ˇ
EJ GR ´
EGR
AUTHOR
VEDOUC´I PR ´
ACE
Ing. PETR MATOU ˇ
SEK, Ph.D.
SUPERVISOR
Zad´
an´ı pr´
ace
1. Seznamte se s protokolem NetFlow a n´astroji pro anal´yzu dat z´ıskan´ych ze sondy
NetFlow.
2. Seznamte se s penetraˇcn´ımi n´astroji pro zjiˇst’ov´an´ı informac´ı o s´ıti a s´ıt’ov´ych zaˇr´ızen´ı
(nessus, nmap, apod.).
3. Simulujte ´utok na s´ıt’ v laboratorn´ıch podm´ınk´ach. Analyzujte z´aznamy NetFlow
s c´ılem detekce a izolace ´utoˇcn´ık.
4. Navrhnˇete a implementujte syst´em pro automatickou detekci a izolaci ´utoˇcn´ıka.
5. Demonstrujte pouˇzitelnost syst´emu na re´aln´em s´ıt’ov´em provozu (podle doporuˇcen´ı
Licenˇcn´ı smlouva
Licenˇcn´ı smlouva je uloˇzena v arch´ıvu Fakulty informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı
technick´eho v Brnˇe.
Abstrakt
Diplomov´a pr´ace se zab´yv´a pouˇzit´ım z´aznam˚u NetFlow pro detekci skenov´an´ı s´ıtˇe. Jako
zdroj dat jsou pouˇzita anonymizovan´a data NetFlow z p´ateˇrn´ı s´ıtˇe VUT. Z tˇechto dat jsou
vytvoˇreny statistiky, na jejichˇz z´akladˇe je navrhnuta sada skript˚u. Pomoc´ı tˇechto skript˚u je
moˇzn´e detekovat skenov´an´ı i ve velk´ych akademick´ych s´ıt´ıch.
Abstract
This thesis deals with using NetFlow records for detection network scanning. Anonymized NetFlow records from backbone VUT network are used as the source. Based on statistics created from these records, several Bash and Python scripts are implemented. With these scripts it is possible to detect network scanning even in large academics networks.
Kl´ıˇcov´
a slova
NetFlow, sonda, skenov´an´ı, zabezpeˇcen´ı
Keywords
NetFlow, probe, scanning, security
Citace
Matˇej Gr´egr: Detekce a izolace ´utoˇcn´ık˚u pomoc´ı z´aznam˚u NetFlow, diplomov´a pr´ace, Brno,
Detekce a izolace ´
utoˇcn´ık˚
u pomoc´ı z´
aznam˚
u NetFlow
Prohl´
aˇsen´ı
Prohlaˇsuji, ˇze jsem tuto diplomovou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Petra
Matouˇska, Ph.D.
. . . .
Matˇej Gr´egr
26.5.2009
Podˇekov´
an´ı
Dˇekuji Ing. Petrovi Matouˇskovi, Ph.D. za veden´ı diplomov´e pr´ace a cenn´e pˇripom´ınky a
Ing. Tom´aˇsi Poderma´nskimu za zpˇr´ıstupnˇen´ı z´aznam˚u NetFlow a poskytnut´e konzultace k
dosaˇzen´ym v´ysledk˚um.
c
Matˇej Gr´egr, 2009.
Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.
Obsah
Obsah 2
1 Uvod´ 3
1.1 C´ıl diplomov´e pr´ace . . . 3
1.2 Clenˇˇ en´ı pr´ace . . . 3
2 Utoky a jejich anal´´ yza 5 3 Skenovac´ı techniky a n´astroje 7 3.1 Skenovac´ı techniky . . . 8 3.1.1 TCP . . . 8 3.1.2 UDP . . . 8 3.2 Skenovac´ı n´astroje . . . 9 4 NetFlow 10 4.1 Protokol NetFlow . . . 10 4.1.1 Z´akladn´ı popis . . . 10
4.1.2 Princip fungov´an´ı a vznik protokolu . . . 11
4.1.3 Ukl´adan´e informace . . . 12
4.1.4 Architektura NetFlow . . . 13
4.2 Sonda NetFlow . . . 13
4.2.1 Vlastnosti sondy: . . . 13
4.3 N´astroje . . . 14
5 Skenov´an´ı a NetFlow 15 5.1 Skenov´an´ı pomoc´ı nmap . . . 15
5.2 Skenov´an´ı pomoc´ı EtherScopeTMSeries II . . . 16
6 Pr´ace s daty NetFlow v rozs´ahl´ych s´ıt´ıch 18 6.1 Zdroj dat NetFlow . . . 18
6.2 Zpracov´an´ı dat . . . 20
7 Statistika dat NetFlow v rozs´ahl´ych s´ıt´ıch 21 8 Anal´yza z´ıskan´ych dat a n´avrh aplikace 25 8.1 Shrnut´ı z´ıskan´ych statistik . . . 25
9 Implementace 31
9.1 Popis implementace . . . 31
9.2 Cas zpracov´ˇ an´ı . . . 33
10 V´ysledky anal´yzy 35 10.1 V´yzkum ve svˇetˇe . . . 39
10.2 Moˇzn´a rozˇs´ıˇren´ı . . . 39
11 Z´avˇer 40 Pouˇzit´a literatura 42 Seznam pˇr´ıloh 43 A N´astroj nfdump - form´at v´ystupu pipe 44 B Grafick´e rozhran´ı vytvoˇren´e n´astrojem nfsen 45 C Uk´azka detekce a z´aznam komunikace 46 C.1 Skenovan´a IP adresa pomoc´ı protkolu ICMP . . . 46
C.2 Detekce ´utoku snaˇz´ıc´ı se zneuˇz´ıt sluˇzbu Windows Messenger . . . 47
C.3 Skenov´an´ı sluˇzby DNS . . . 47
Kapitola 1
´
Uvod
Poˇc´ıtaˇcov´e s´ıtˇe ˇcel´ı v dneˇsn´ı dobˇe st´ale vˇetˇs´ımu mnoˇzstv´ı bezpeˇcnostn´ıch hrozeb a
za-bezpeˇcit je proti tˇemto hrozb´am pˇrin´aˇs´ı celou ˇradu probl´em˚u. Samotn´y firewall jiˇz na
kvalitn´ı zabezpeˇcen´ı pˇrest´av´a staˇcit a proto b´yv´a kombinov´an s dalˇs´ı technologi´ı. Jednou
z moˇznost´ı jak zv´yˇsit bezpeˇcnost poˇc´ıtaˇcov´e s´ıtˇe, by mohlo b´yt vyuˇzit´ı z´aznam˚u NetFlow,
kter´e jsou generov´any sondami nebo smˇerovaˇci s podporou t´eto technologie. Aby mohl
´
utoˇcn´ık napl´anovat ´utok na poˇc´ıtaˇcovou s´ıt’, potˇrebuje zn´at o dan´e s´ıti co nejv´ıce informac´ı.
Pokud se pˇri zajiˇst’ov´an´ı bezpeˇcnosti poˇc´ıtaˇcov´e s´ıtˇe zamˇeˇr´ıme tak´e na tuto poˇc´ataˇcn´ı f´azi ´
utoku, m˚uˇzeme d´ıky vˇcasn´e detekci ´utoku minimalizovat vznikl´e ˇskody, pˇr´ıpadnˇe ´utok zcela
odvr´atit.
1.1
C´ıl diplomov´
e pr´
ace
Hlavn´ım c´ılem diplomov´e pr´ace bude analyzovat, zda lze pomoc´ı z´aznam˚u NetFlow ´uspˇeˇsnˇe
detekovat poˇc´ateˇcn´ı f´azi ´utoku - skenov´an´ı s´ıtˇe. Pokud by se tyto typy ´utok˚u daly
dete-kovat, byl by to pˇr´ınos pro bezpeˇcnost s´ıtˇe. Reakc´ı na detekovan´y ´utok by mohla b´yt
blokace ´utoˇcn´ıka, omezen´ı ´utoˇcn´ıka nebo zasl´an´ı informace spr´avci s´ıtˇe. Tato diplomov´a
pr´ace navazuje na semestr´aln´ı projekt, ve kter´em byly pops´any principy a fungov´an´ı
proto-kolu NetFlow, jak´a zaˇr´ızen´ı slouˇz´ı ke generov´an´ı z´aznam˚u NetFlow a jak´e n´astroje m˚uˇzeme
pouˇz´ıt k anal´yze tˇechto z´aznam˚u. Byly tak´e pops´any techniky skenov´an´ı s´ıtˇe a dostupn´e
n´astroje, kter´e se ke skenov´an´ı pouˇz´ıvaj´ı. Jednotliv´e skenovac´ı n´astroje byly otestov´any
v laboratorn´ıch podm´ınk´ach.
V diplomov´e pr´aci se d´ale budu zab´yvat daty NetFlow z´ıskan´ymi z re´aln´eho provozu
velk´e s´ıtˇe. Z tˇechto dat bude vytvoˇrena statistika, kter´a pom˚uˇze urˇcit, kter´e ´udaje jsou z
hle-diska detekce skenov´an´ı d˚uleˇzit´e. D´ale bude implementov´ana aplikace, kter´a bude schopna
tato skenov´an´ı detekovat a zaznamenat. Dosaˇzen´e v´ysledky by mˇely b´yt konzultov´any se
spr´avcem s´ıtˇe, aby se aplikace dala pouˇz´ıt prakticky a z´ıskan´e v´ysledky umoˇznily zvˇetˇsit
zabezpeˇcen´ı s´ıtˇe.
1.2
Clenˇ
ˇ
en´ı pr´
ace
Kapitola 2 popisuje souˇcasnˇe pouˇz´ıvan´e techniky pro detekci s´ıt’ov´ych ´utok˚u. V kapitole
3 se zab´yv´am technikami skenov´an´ı zaˇr´ızen´ı na s´ıti a skenovac´ımi n´astroji (at’ uˇz
hard-warov´ymi nebo softwarov´ymi). Kapitola 4 popisuje protokol NetFlow, princip fungov´an´ı
skeno-vac´ıch n´astroj˚u a testov´an´ı skenovac´ıch technik pˇri skenov´an´ı v laboratoˇri jsou pops´any
v kapitole 5. Kapitola 6 popisuje problematiku anal´yzy z´aznam˚u NetFlow ve velk´ych s´ıt´ıch.
Je zde tak´e pops´ano, odkud byla z´ısk´ana data NetFlow, pouˇzita v t´eto pr´aci a jak´a tato
data maj´ı omezen´ı. V kapitole 7 je pops´ano, jak byly vytvoˇreny z dat NetFlow statistiky,
kter´e jsou pouˇzity pro zjiˇstˇen´ı, kter´e informace jsou d˚uleˇzit´e z hlediska detekce skenov´an´ı.
V kapitole 8 jsou tato data analyzov´ana a je vytvoˇren n´avrh aplikace, kter´a bude schopna
detekovat skenov´an´ı. Kapitola 9 popisuje konkr´etn´ı implementaci pro s´ıt’ VUT. V kapitole
10 jsou shrnuty dosaˇzen´e v´ysledky a diskutov´ana moˇzn´a rozˇs´ıˇren´ı. Souˇc´ast´ı diplomov´e pr´ace
Kapitola 2
´
Utoky a jejich anal´
yza
´
Utok na s´ıt’ vˇzdy zaˇc´ın´a zkoum´an´ım s´ıtˇe (network reconnaissance), kdy se ´utoˇcn´ık pokouˇs´ı
o neautorizovan´e zmapov´an´ı s´ıtˇe, sluˇzeb nebo zranitelnost´ı. C´ılem t´eto f´aze je z´ıskat dostatek
informac´ı k proveden´ı dalˇs´ıch typ˚u ´utok˚u se zamˇeˇren´ım na z´ısk´an´ı pˇr´ıstupu nebo odm´ıtnut´ı
pˇr´ıstupu legitimn´ım uˇzivatel˚um. Pokud by byla poˇc´ateˇcn´ı f´aze (tedy zkoum´an´ı) ne´uspˇeˇsn´a,
dalˇs´ı ´utok by byl pro ´utoˇcn´ıka daleko obt´ıˇznˇeji realizovateln´y. Pˇri mapov´an´ı s´ıtˇe se pouˇz´ıvaj´ı pˇrev´aˇznˇe n´asleduj´ıc´ı techniky:
• Skenov´an´ı IP adres: Zjiˇst’ov´an´ı aktivn´ıch IP adres v pods´ıti ˇci organizaci. Realizovan´e
pˇrev´aˇznˇe pomoc´ı protokolu ICMP a zpr´av Echo request, Echo reply (ping).
• Skenov´an´ı port˚u: U aktivn´ıch IP adres moˇznost zjistit, jak´e sluˇzby dan´e s´ıt’ov´e zaˇr´ızen´ı
podporuje. V´ıce v kapitole 3
• Naslouch´an´ı: Odposlouch´av´an´ı datov´eho provozu na s´ıti. Ztˇeˇzuj´ı to pˇrep´ınan´e s´ıtˇe, ale
pokud se bude analyzovat provoz na hraniˇcn´ıch bodech, lze z´ıskat mnoˇzstv´ı informac´ı.
• Informaˇcn´ı dotazy na aplikaˇcn´ı vrstvˇe: Vyuˇzit´ı dotaz˚u DNS, datab´aze whois, zjiˇstˇen´ı
rozsahu IP adres organizace
Pro detekci tˇechto a dalˇs´ıch typ˚u ´utok˚u se dnes ve vˇetˇs´ıch s´ıt´ıch pouˇz´ıvaj´ıNetwork
In-trusion Detection System (NIDS) a Network Intrusion Prevention System(NIPS). Syst´em
NIDS ´utoky detekuje a rozpozn´av´a. ´Utok˚um se nesnaˇz´ı aktivnˇe br´anit - jedn´a se o pasivn´ı
obrann´y syst´em. NIPS se snaˇz´ı ´utok˚um aktivnˇe zabr´anit. Syst´em NIDS/NIPS tvoˇr´ı
sen-zory na vstupn´ıch bodech s´ıtˇe, kter´e analyzuj´ı s´ıt’ov´y provoz a snaˇz´ı se detekovat ´utoky.
Z´ıskan´a data pos´ılaj´ı centr´aln´ı stanici, kter´a je zpracov´av´a. ˇReˇsen´ı m˚uˇze b´yt ˇcistˇe
softwa-rov´e, napˇr. program snort, nebo specializovan´e zaˇr´ızen´ı, napˇr. Cisco Guard. Pˇri reakci na
´
utok je spuˇstˇen alarm. To je obecn´y n´azev pro akci, kterou syst´em upozorˇnuje na
deteko-vanou aktivitu. Z´aleˇz´ı na syst´emu, jak je tato akce realizov´ana. M˚uˇze se jednat napˇr´ıklad
o posl´an´ı e-mailu spr´avci nebo zaznamen´an´ı ud´alosti do logovac´ıho souboru. ˇZ´adn´y syst´em
NIDS/NIPS ale nen´ı natolik pˇresn´y, aby generoval pouze korektn´ı alarmy. C´ılem je
mini-malizovat faleˇsn´e pozitivn´ı a negativn´ı alarmy.
• Faleˇsn´e alarmy - ˇspatn´e vyhodnocen´ı situace
– faleˇsn´e pozitivn´ı alarmy - vygenerov´an alarm pˇri norm´aln´ı s´ıt’ov´e aktivitˇe
• Prav´e alarmy - spr´avn´e vyhodnocen´ı situace
– prav´e pozitivn´ı alarmy - vygenerov´an alarm pˇri ´utoku
– prav´e negativn´ı alarmy - pˇri normln´ı aktivitˇe nen´ı generov´an ˇz´adn´y alarm
Pro anal´yzu datov´eho toku a detekci ´utok˚u se pouˇz´ıv´a nˇekolik typ˚u anal´yz [19].
• Anal´yza vzor˚u - C´ılem je naj´ıt vzor, kter´y je pro ´utok specifick´y. Z tˇechto vzor˚u jsou
pak vytvoˇreny datab´aze, kter´e se vyuˇz´ıvaj´ı pro detekci (m˚uˇze b´yt dod´ana napˇr´ıklad
v´yrobcem spolu se syst´emem IDS). Posloupnost paket˚u, kter´e maj´ı nastaven pouze
pˇr´ıznak SYN, m˚uˇze b´yt napˇr´ıklad vzor ´utoku pro skenov´an´ı. Kaˇzd´y nov´y ´utok mus´ı
b´yt analyzov´an a uloˇzen jako nov´y vzor. Podle poˇctu paket˚u potˇrebn´ych k detekci
´
utoku m˚uˇzeme klasifikovat vzory atomick´e - staˇc´ı jeden paket, nebo sloˇzen´e - je
tˇreba v´ıce paket˚u. Syst´em IDS vyuˇz´ıvaj´ıc´ı tento typ anal´yzy m˚uˇze generovat zv´yˇsen´e
mnoˇzstv´ı jak faleˇsn´ych negativn´ıch alarm˚u (napˇr. pˇri mal´e zmˇenˇe zn´am´eho ´utoku)
tak faleˇsn´ych pozitivn´ıch (vzor je pˇr´ıliˇs neurˇcit´y).
• Statistick´a anal´yza - Nˇekdy oznaˇcov´ana tak´e jako detekce anom´ali´ı. Syst´em pracuj´ıc´ı
s touto anal´yzou se nauˇc´ı norm´aln´ı provoz v dan´e s´ıti, tzv. profil. Pokud n´aslednˇe
profil s´ıtˇe pˇres´ahne zvolenou odchylku, je generov´an alarm. V´yhodou tohoto syst´emu
je i moˇznost detekce nov´ych ´utok˚u a pokud je vytvoˇren kvalitn´ı profil, tak i sn´ıˇzen´ı
faleˇsn´ych pozitivn´ıch alarm˚u. Uˇzivatel´e sv´e chov´an´ı mohou ale mˇenit, coˇz negativnˇe
ovlivˇnuje poˇcet faleˇsnˇe pozitivn´ıch alarm˚u (je nutn´e aktualizovat profily pˇri zmˇenˇe
s´ıtˇe).
• Kontrola obsahu protokol˚u - Aplikaˇcn´ı protokoly jako FTP, HTTP, SMTP a jin´e
mo-hou b´yt analyzov´any na z´akladˇe obsahu jednotliv´ych paket˚u. Tato detekce a anal´yza
se t´yk´a sp´ıˇse syst´em˚u IPS, kter´e mohou blokovat vybran´e pˇr´ıkazy, slouˇzit jako proxy
servery a podobnˇe. Jedn´a se o aktivn´ı obranu.
Pokud je nˇejak´y ´utok detekov´an, z´avis´ı na pouˇzit´em syst´emu, jak´a bude dalˇs´ı reakce.
Pokud se jedn´a o syst´em NIDS, ´utok je zpravidla zaznamen´an do souboru se z´aznamy (logu)
a syst´em upozorn´ı spr´avce, kter´y provede bezpeˇcnostn´ı opatˇren´ı. Syst´em NIPS zpravidla
reaguje ihned a ´utoku se snaˇz´ı aktivnˇe zabr´anit. N´asleduje f´aze prevence, kdy se snaˇz´ı
upravit odolnost syst´emu, aby zabr´anil dalˇs´ım podobn´ym ´utok˚um. Moˇzn´e reakce a prevence:
• Reset spojen´ı TCP - u spojen´ı TCP je zasl´an paket s pˇr´ıznakem RST obˇema ´uˇcastn´ık˚um.
U spojen´ı UDP se generuje paket ICMP se zpr´avou Port Unreachable.
• Blokace spojen´ı - s´ıt’ov´e spojen´ı je ihned zruˇseno a zdrojov´a IP adresa je zablokov´ana.
• Odeb´ır´an´ı pˇridˇelen´ych prostˇredk˚u - v pˇr´ıpadˇe vyˇcerp´an´ı zdroj˚u se mˇen´ı napˇr. max.
poˇcet ˇc´asteˇcnˇe otevˇren´ych spojen´ı, max. doba neˇcinnosti spojen´ı (idle timeout), max. poˇcet
souˇcasnˇe otevˇren´ych spojen´ı, d´elka ˇcek´an´ı na ukonˇcovac´ı paket (pˇr´ıznak FIN) a jin´e.
• Vyuˇzit´ı proxy - u protokolu HTTP i jin´ych aplikaˇcn´ıch protokol˚u, u spojen´ı TCP se
Kapitola 3
Skenovac´ı techniky a n´
astroje
Skenov´an´ı s´ıtˇe b´yv´a rozdˇeleno vˇetˇsinou na tˇri typy, podle zp˚usobu, jak´ym skenuje porty (viz
obr´azek 3.1). Pˇri horizont´aln´ım skenov´an´ı ´utoˇcn´ık skenuje jeden port na v´ıce poˇc´ıtaˇc´ıch.
U vertik´aln´ıho skenov´an´ı skenuje v´ıce port˚u na jednom poˇc´ıtaˇci a blokov´e skenov´an´ı je
kombinac´ı obou. blokové skenování vertikální skenování horizontální skenování IP porty 1.1.1.1 ~ 1.1.1.255 ~ 1.1.2.1 ~ 1 22 23 21 1023 ~ ~ ~
Obr´azek 3.1: Typy skenov´an´ı
Skenov´an´ı je realizov´ano u protokolu TCP a UDP skenov´an´ım port˚u [8]. Porty mohou
b´yt v n´asleduj´ıc´ıch stavech:
• open, accepted: Pokud je port open (otevˇren´y), znamen´a to, ˇze na nˇem bˇeˇz´ı s´ıt’ov´a
sluˇzba a je moˇzno s n´ım nav´azat spojen´ı.
• closed, denied: closed port znaˇc´ı uzavˇren´y port. Na pokus o pˇripojen´ı k takov´emu
portu je u TCP portu posl´an zpˇet paket s nastaven´ymi pˇr´ıznaky RST a ACK,
v pˇr´ıpadˇe portu UDP je posl´an ICMP paket typu 3, k´od 3 (port unreachable).
• filtered, blocked: Pˇri pokusu o kontaktov´an´ı tohoto portu nebyla zjiˇstˇena odpovˇed’
(kladn´a ani z´aporn´a)
Dalˇs´ı zjiˇst’ov´an´ı informac´ı o tom, co na dan´em portu bˇeˇz´ı za sluˇzbu, pˇr´ıpadnˇe jak´y OS
3.1
Skenovac´ı techniky
3.1.1 TCP
U skenov´an´ı TCP port˚u m˚uˇzeme vyuˇz´ıt v´ıce technik. Vˇetˇsina vyuˇz´ıv´a r˚uzn´ych nastaven´ych
pˇr´ıznak˚u v TCP paketu a toho, ˇze u protokolu TCP se navazuje a ustanovuje spojen´ı. Pˇri
navazov´an´ı spojen´ı jde o tzv. tˇr´ıf´azovou synchronizaci (three-way handshake). Pokud port
odpov´ı tak jak m´a (pˇr´ıznaky SYN/ACK), je ve stavu open. Pˇri odpovˇedi RST je ve stavu
closed a pˇri ˇz´adn´e odpovˇedi ve stavu filtered/blocked.
Skenov´an´ı SYN
Skenov´an´ı SYN nikdy nedokonˇc´ı TCP spojen´ı. Pro zjiˇstˇen´ı toho, zda je port otevˇren, mu
staˇc´ı poslat pouze paket s pˇr´ıznakem SYN a ˇcekat na odpovˇed’. Pokud pˇrijde SYN/ACK,
´
utoˇcn´ık v´ı, ˇze port je otevˇren´y. Podle tˇr´ıf´azov´e synchronizace by mˇel poslat paket s pˇr´ıznakem
ACK, ale ten nepoˇsle a kompletn´ı spojen´ı tedy nenav´aˇze. Tento typ skenov´an´ı se vyuˇz´ıv´a
pro svou rychlost a proto, ˇze je vˇetˇs´ı pravdˇepodobnost, ˇze nekompletn´ı nav´az´an´ı spojen´ı
nebude logov´ano.
Skenov´an´ı connect
Skenov´an´ı connect je vlastnˇe klasick´e kompletn´ı nav´az´an´ı spojen´ı. Pokud je port ve stavu
open, probˇehnou vˇsechny tˇri kroky synchronizace TCP. Tato skenovac´ı technika nen´ı pˇr´ıliˇs
vyuˇz´ıv´ana, protoˇze poskytuje stejn´e informace jako SYN scan, ale je pomalejˇs´ı a kompletn´ı
spojen´ı b´yvaj´ı logov´ana.
Skenov´an´ı Null, FIN a Xmas
Tyto zp˚usoby skenov´an´ı vyuˇz´ıvaj´ı znˇen´ı TCP RFC 793 [15], kde je ˇreˇceno, ˇze pokud je
port ve stavu closed, na kaˇzd´a pˇr´ıchoz´ı data, kter´a neobsahuj´ı pˇr´ıznak RST, m´a odpovˇedˇet
paketem s pˇr´ıznakem RST. Pokud je port ve stavu open, m´a na jak´ekoliv pakety, kde nejsou
nastaveny ani jedny z pˇr´ıznak˚u SYN, RST, ACK, zareagovat zahozen´ım paketu.
• Skenov´an´ı Null pos´ıl´a pakety bez nastaven´ı jak´ehokoliv pˇr´ıznaku.
• Skenov´an´ı FIN nastavuje u paketu pouze pˇr´ıznak FIN.
• Skenov´an´ı Xmas nastavuje pˇr´ıznaky FIN, URG a PSH.
Skenov´an´ı Ack
Tento zp˚usob skenov´an´ı m´a za ´uˇcel zjistit pouze to, zda je port filtrov´an nebo ne. Pokud
je port nefiltrov´an, tak open i closed port by na paket s pˇr´ıznakem ACK mˇel odpovˇedˇet
paketem s pˇr´ıznakem RST. Pokud je port filtrov´an, tak neodpov´ı.
3.1.2 UDP
U protokolu UDP se vyuˇz´ıv´a pouze jedin´eho skenov´an´ı. Pro oskenov´an´ı UDP portu se pos´ıl´a
paket UDP pouze s hlaviˇckou, kter´y neobsahuje ˇz´adn´a data. Pokud se vr´at´ı jako odpovˇed’
paket ICMP typu 3, k´odu 3, je port oznaˇcen jako closed. Pokud se vr´at´ı paket ICMP jin´eho
k´odu (1,2,9,10,13), m˚uˇzeme port oznaˇcit jako filtered. Pˇri otevˇren´em portu jako odpovˇed’
3.2
Skenovac´ı n´
astroje
Vˇetˇsinu v´yˇse zmiˇnovan´ych technik skenov´an´ı lze vyzkouˇset pomoc´ı skenovac´ıho n´astroje.
Kromˇe skenov´an´ı connect, kter´e je v podstatˇe stejn´e, jako pˇripojen´ı se na dan´y port
telne-tem, vyuˇz´ıvaj´ı ostatn´ı techniky upraven´e pˇr´ıznaky v hlaviˇck´ach TCP paket˚u, kter´e vyˇzaduj´ı
extern´ı knihovny a administr´atorsk´a opr´avnˇen´ı. Nejzn´amˇejˇs´ı a nejpouˇz´ıvanˇejˇs´ı skener port˚u
a s´ıtˇe obecnˇe je n´astroj Network Mapper, zkr´acenˇe nmap.
Nmap [14]
Nmap (”Network Mapper”) je bezpeˇcnostn´ı a s´ıt’ov´y skener. Dok´aˇze odhalovat poˇc´ıtaˇce
v s´ıti a sluˇzby, kter´e na nich bˇeˇz´ı. Z pokroˇcilejˇs´ıch nastaven´ı lze pouˇz´ıt detekci operaˇcn´ıho
syst´emu, jak´e filtry a firewally jsou pouˇzity a jak´e verze sluˇzeb bˇeˇz´ı na dan´em poˇc´ıtaˇci apod.
Je ˇs´ıˇren pod licenc´ı GNU GPL. Pokud ponech´ame z´akladn´ı nastaven´ı, tak z´akladn´ı pˇr´ıkaz
#nmap ip.skenovan´eho.poˇc´ıtaˇce zadan´y na pˇr´ıkazov´e ˇr´adce otestuje, zda je poˇc´ıtaˇc
ak-tivn´ı a pokud ano, testuje pˇribliˇzne 1000 nejpouˇz´ıvanˇejˇs´ıch port˚u. Nmap m´a obrovsk´e
mnoˇzstv´ı nastaven´ı a r˚uzn´ych zp˚usob˚u jak zjistit, jak´e sluˇzby poˇc´ıtaˇc poskytuje. V´ıce
in-formac´ı lze z´ıskat v manu´alov´e str´ance nebo na str´ance projektu.
Nessus [1]
Nessus je program pro kompletn´ı bezpeˇcnostn´ı anal´yzu. Skl´ad´a se z d´emonanessusd, kter´y
se star´a o samotn´e skenov´an´ı a klientanessus, kter´y nastavuje r˚uzn´e parametry skenov´an´ı,
spouˇst´ı skenov´an´ı a zobrazuje v´ysledky uˇzivateli. Pro samotn´e skenov´an´ı pouˇz´ıv´a z´asuvn´e
moduly, napsan´e ve vlastn´ım skriptovac´ım jazyce NASL1. Tˇechto modul˚u existuje velk´e
mnoˇzstv´ı (pˇres 20 000) a st´ale se aktualizuj´ı, podle aktu´aln´ıch bezpeˇcnostn´ıch zranitelnost´ı.
Pˇri testov´an´ı zranitelnosti pouˇz´ıv´a Nessus na zaˇc´atku skenov´an´ı port˚u dan´eho poˇc´ıtaˇce. M´a
vlastn´ı skener, ale dok´aˇze pouˇz´ıt tak´e extern´ı, jako napˇr. nmap. U zjiˇstˇen´ych otevˇren´ych
port˚u zkouˇs´ı vyuˇz´ıt zn´am´ych bezpeˇcnostn´ıch chyb sluˇzeb, kter´e na dan´em portu naslouchaj´ı.
Testuje tak´e konfiguraci a chybˇej´ıc´ı bezpeˇcnostn´ı z´aplaty, zda se nepouˇz´ıvaj´ı standardn´ı
a nevyplnˇen´a hesla a dalˇs´ı. Do roku 2005 to byl projekt s otevˇren´ym zdrojov´ym k´odem,
pak byl uzavˇren. Pro nekomerˇcn´ı vyuˇzit´ı je st´ale k dispozici zdarma (je nutn´a registrace),
ale aktualizovan´e moduly jsou nab´ızeny se sedmidenn´ım zpoˇzdˇen´ım.
EtherScopeTMSeries II [2]
S´ıt’ m˚uˇzeme skenovat i pomoc´ı hardwarov´ych zaˇr´ızen´ı. Jedn´ım z analyz´ator˚u, je pˇr´ıstroj
EtherScopeTMSeries II od firmy Fluke networks. Tento pˇr´ıstroj dok´aˇze analyzovat s´ıt’, do
kter´e je pˇripojen. Zvl´ad´a otestovat kabel´aˇz, analyzovat provoz v s´ıti, identifikovat VLAN
s´ıtˇe, odhalit aktivn´ı zaˇr´ızen´ı v s´ıti. Je schopen zobrazit statistiky a grafy protokol˚u, kter´e se
na s´ıti pouˇz´ıvaj´ı, detekovat ´uzk´a m´ısta v s´ıti (bottleneck) a mnoho dalˇs´ıho. Zaˇr´ızen´ı pouˇz´ıv´a
jako operaˇcn´ı syst´em Linux a pro zobrazen´ı v´ysledk˚u platformu Qtopia od firmy Trolltech.
Podrobnˇejˇs´ı popis je k dispozici v dokumentaci u v´yrobce.
1
Kapitola 4
NetFlow
Tato kapitola popisuje protokol NetFlow. Je zde pops´an princip fungov´an´ı protokolu, n´astroje,
kter´e se pˇri pr´aci s t´ımto protokolem pouˇz´ıvaj´ı, a sonda NetFlow, coˇz je hardwarov´e zaˇr´ızen´ı
vyuˇz´ıvaj´ıc´ı NetFlow protokol. Pomoc´ı tohoto protokolu lze ukl´adat z´aznam o provozu v s´ıti.
Tato data budou v pr´aci d´ale analyzov´ana a pokus´ım se zjistit, zda lze z tˇechto dat odhalit
skenov´an´ı s´ıtˇe.
4.1
Protokol NetFlow
4.1.1 Z´akladn´ı popis
Protokol NetFlow je protokol pro pˇrenos z´aznam˚u o toc´ıch, kter´y vyvinula spoleˇcnost Cisco.
NetFlow je tak´e ch´ap´an i jako cel´y proces mˇeˇren´ı tok˚u. Jako dalˇs´ı protokoly t´eto spoleˇcnosti
je uzavˇren´y, ale je k dispozici jeho specifikace v RFC 3954 [5](posledn´ı verze 9). D´ıky
dostupnosti specifikace je protokol implementov´an a podporov´an tak´e na jin´ych platform´ach
neˇz Cisco IOS napˇr. smˇerovaˇce Juniper nebo distribuce FreeBSD, OpenBSD a GNU/Linux.
Vzniklo nˇekolik verz´ı tohoto protokolu. Nejpouˇz´ıvanˇejˇs´ı je v dneˇsn´ı dobˇe verze 5 a rozˇsiˇruje
se tak´e posledn´ı verze 9. Posledn´ı verze protokolu NetFlow je tak´e z´akladem protokolu
IPFIX1, vytvoˇren´y IETF, kter´y pravdˇepodobnˇe bude v bl´ızk´e dobˇe schv´alen jako standard.
Protokol definuje nˇekolik pojm˚u, se kter´ymi je nutn´e se sezn´amit.
• IP tok (IP Flow): ˇCasto se pouˇz´ıv´a pouze n´azev tok. Tok je posloupnost paket˚u
proch´azej´ıc´ı monitorovan´ym rozhran´ım za urˇcit´y ˇcasov´y interval. Tyto pakety se
sho-duj´ı ve zdrojov´e a c´ılov´e IP adrese, zdrojov´em a c´ılov´em portu UDP nebo TCP,
protokolu, rozhran´ı a stejnˇe nastaven´ym bajtem Type of Service [6].
• NetFlow z´aznam(Flow Record, NetFlow data): Podrobnˇejˇs´ı informace k dan´emu
IP toku. Jsou zde informace o d´elce toku, poˇctu pˇrenesen´ych bajt˚u, paket˚u a dalˇs´ıch.
• Export´er (Exporter): Zaˇr´ızen´ı (napˇr. smˇerovaˇc), kter´e monitoruje proch´azej´ıc´ı
pa-kety a vytv´aˇr´ı z nich IP toky. Informace z tˇechto tok˚u jsou ve formˇe z´aznam˚u NetFlow
odes´ıl´any do kolektoru.
• Exportovan´y paket(Export Packet): Paket vytv´aˇren´y export´erem, kter´y obsahuje
z´aznamy NetFlow. Je odes´ıl´an export´erem do kolektoru.
• NetFlow kolektor(NetFlow collector): Kolektor, kter´y pˇrij´ım´a a zpracov´av´a pakety
z jednoho nebo v´ıce export´er˚u. Tyto pakety jsou pak ukl´ad´any na disk.
Sch´ema fungov´an´ı protokolu lze vidˇet na obr´azku 4.1. Zde jsou na pozici export´er˚u
smˇerovaˇce Cisco. Ty vytv´aˇrej´ı toky, kter´e jsou dedikovanou linkou pos´ıl´any do kolektoru.
N´aslednˇe mohou b´yt tato data zobrazena napˇr. pomoc´ı n´astroj˚u nfdump 4.3 nebo nfsen
4.3.
Obr´azek 4.1: Princip fungov´an´ı protokolu
4.1.2 Princip fungov´an´ı a vznik protokolu
Kv˚uli urychlen´ı pˇrep´ın´an´ı na modern´ıch pˇrep´ınaˇc´ıch, kter´e pracuj´ı na tˇret´ı vrstvˇe
refe-renˇcn´ıho modelu ISO/OSI a vyuˇz´ıvaj´ı pokroˇcilejˇs´ı techniky pˇri pˇrep´ın´an´ı jako napˇr. access
list, byl pˇrepracov´an syst´em vyrovn´avac´ıch pamˇet´ı na pˇrep´ınaˇc´ıch a smˇerovaˇc´ıch Cisco.
Zaˇcalo se vyuˇz´ıvat informac´ı o s´ıt’ov´em toku. Tento tok se shodoval ve zdrojov´e a c´ılov´e
IP adrese a zdrojov´em a c´ılov´em portu, viz obr´azek 4.2.
zdrojová IP adresa cílová IP adresa zdrojový port cílový port L3 protokol TOS vstupní rozhraní síťový provoz analýza paketu Vytvoření toků z atributů paketu
Informace o toku Počet paketů Bajtů/paket
adresy, porty . . . 13 456 1 234 . . .
Vyrovnávací paměť NetFlow
Zařízení s podporou NetFlow
Obr´azek 4.2: Princip vytv´aˇren´ı toku [6]
Vedlejˇs´ım efektem byl zisk zaj´ımav´ych statistik o s´ıt’ov´em toku. Tyto statistiky byly
rozˇs´ıˇreny a za cenu m´ırnˇe vyˇsˇs´ı reˇzie pˇri pr˚uchodu paket˚u jsou z´ısk´av´any informace, kter´e
mohou b´yt pouˇzity k celkov´e anal´yze vyt´ıˇzen´ı s´ıtˇe, anal´yze provozu dat proch´azej´ıc´ı
kter´e dok´azaly s protokolem NetFlow pracovat a pouˇz´ıvat ho napˇr. k ´uˇctov´an´ı z´akazn´ık˚u
za mnoˇzstv´ı odeslan´ych dat nebo konektivitu.
Protokol NetFlow vytv´aˇr´ı pro vˇsechny aktivn´ı toky vyrovn´avac´ı pamˇet’, kter´a je
vy-tvoˇrena na z´akladˇe pˇrijet´ı prvn´ıho paketu dan´eho toku. V t´eto vyrovn´avac´ı pamˇeti se
po-stupnˇe ukl´adaj´ı dalˇs´ı informace o toku, kter´e jsou pozdˇeji odesl´any do kolektoru. Tyto
exporty jsou prov´adˇeny jednou za ˇcas podle nastaven´ı zaˇr´ızen´ı, kter´e export dat prov´ad´ı.
Export dat u protokolu NetFlow by mˇel b´yt dostateˇcnˇe efektivn´ı a podle statistik by mˇel
tvoˇrit pouze 1,5 % [20] pˇrenesen´ych dat na smˇerovaˇci. Ukonˇcov´an´ı toku a n´asledn´y export
se obvykle ˇr´ıd´ı podle n´asleduj´ıc´ıch pravidel:
• Spojen´ı TCP bylo uzavˇreno, at’ uˇz pomoc´ı ukonˇcen´ı spojen´ı (pˇr´ıznak FIN) nebo
zruˇsen´ı (pˇr´ıznak RST).
• Tok je po urˇcitou dobu neaktivn´ı.
• Tok trv´a pˇr´ıliˇs dlouho (z´akladn´ı hodnota v nastaven´ı je 20 minut).
• Zaplnˇen´ı vyrovn´avac´ı pamˇeti, hrozba pˇreteˇcen´ı ˇc´ıtaˇc˚u.
Ukonˇcen´e datov´e toky se z´aznamy NetFlow jsou spojeny do paketu viz. 4.1.1 -
Exporto-van´y paket a odesl´any do kolektoru. Tento paket m˚uˇze obsahovat aˇz 30 z´aznam˚u NetFlow.
Data se pos´ılaj´ı jako datagramy UDP a po odesl´an´ı jsou export´erem zahozeny. Protoˇze je
protokol UDP bezestavov´y, m˚uˇze doj´ıt ke ztr´atˇe datagramu.
4.1.3 Ukl´adan´e informace
V n´asleduj´ıc´ı tabulce lze vidˇet, co vˇse protokol NetFlow ukl´ad´a a jak´e informace tedy
m˚uˇzeme pouˇz´ıt k n´asledn´e anal´yze. Tato data lze z´ıskat pomoc´ı n´astroje nfdump 4.3
Date flow start Cas, kdy byl tok poprv´ˇ e zaznamen´an. Ukl´ad´an ve form´atu
ISO 8601 vˇcetnˇe milisekund.
Date flow end Konec toku. ˇCas, kdy byl tok naposledy detekov´an. Ukl´ad´an
ve form´atu ISO 8601 vˇcetnˇe milisekund.
Duration D´elka toku v milisekund´ach. Pokud jsou toky agregovan´e,
d´elka toku je souˇctem d´elek vˇsech tˇechto tok˚u.
Proto Protokol, kter´y byl pouˇzit v dan´em toku
Src IP Addr:port Zdrojov´a adresa a port
Dst IP Addr:port C´ılov´a adresa a port
TCP flags Pˇr´ıznaky u paketu TCP (SYN,ACK aj.)
ToS Typ sluˇzby (Type of service)
inif, outif Zdrojov´e a c´ılov´e s´ıt’ov´e rozhran´ı
src AS, dst AS Zdrojov´y a c´ılov´y autonomn´ı syst´em
Packets Poˇcet paket˚u v toku. Pokud jsou toky agregovan´e tak jejich
souˇcet
pps Poˇcet paket˚u za sekundu: poˇcet paket˚u / d´elka toku
bps Poˇcet bit˚u za sekundu: 8 * poˇcet bajt˚u / d´elka toku
Bpp Poˇcet bajt˚u za paket: poˇcet bajt˚u / poˇcet paket˚u
Flows Poˇcet tok˚u. Pokud jsou toky jenom vyps´any - vˇzdy 1. Pokud
4.1.4 Architektura NetFlow
Klasicky se pˇredpokl´ad´a na pozici export´era Cisco smˇerovaˇc se zapnutou sluˇzbou NetFlow.
Smˇerovaˇce pak potom kromˇe pˇrepos´ıl´an´ı paket˚u mus´ı sv˚uj v´ypoˇcetn´ı v´ykon vˇenovat tak´e
tvorbˇe statistik. Pokud smˇerovaˇcem proch´az´ı vyˇsˇs´ı datov´y tok, nem˚uˇze v´ypoˇcetnˇe zvl´adat
zpracov´av´an´ı kaˇzd´eho paketu a z´aroveˇn generovat statistiky pro dan´y tok. Proto se prov´ad´ı
vzorkov´an´ı, tedy pro v´ypoˇcet statistiky se vyuˇz´ıv´a pouze kaˇzd´y n-t´y paket. Pokud z´aznamy
NetFlow z tˇechto smˇerovaˇc˚u slouˇz´ı pouze pro sbˇer statistik, pak vzorkov´an´ı nem´a vˇetˇs´ı
ne-gativn´ı vliv. Pouze sniˇzuje pˇresnost. Pokud ale chceme zabr´anit bezpeˇcnostn´ım incident˚um,
je v´ybˇer pouze kaˇzd´eho n-t´eho paketu probl´em.
Probl´em se vzorkov´an´ım paket˚u ˇreˇs´ı hardwarovˇe akcelerovan´e sondy NetFlow. Podrobnˇejˇs´ı
popis sondy je v sekci 4.2.
4.2
Sonda NetFlow
Sonda NetFlow je pasivn´ım (data jsou pouze monitorov´ana, nezasahuje se do nich)
monito-rovac´ım zaˇr´ızen´ım [22]. Je schopn´a monitorovat IP toky a pos´ılat je do extern´ıch kolektor˚u.
Pokud sondu zapoj´ıme na linku, kterou chceme monitorovat, pˇr´ıchoz´ı provoz je posl´an
pˇr´ımo ke sv´emu c´ıli a z´aroveˇn je kopie pˇred´ana sondˇe ke zpracov´an´ı. Pokud data odes´ıl´ame
dedikovanou linkou pˇr´ımo do kolektoru, je sonda neviditeln´a na linkov´e a vyˇsˇs´ı vrstvˇe. D´ıky
tomu je t´emˇeˇr vylouˇcen pˇr´ıpadn´y ´utok proti sondˇe. Pouˇzit´ı t´eto sondy m´ısto smˇerovaˇc˚u
odstraˇnuje probl´em se vzorkov´an´ım paket˚u a pˇrin´aˇs´ı dalˇs´ı v´yhody. Smˇerovaˇce pak mohou
sv˚uj procesorov´y ˇcas vyuˇz´ıt pouze k tomu, k ˇcemu jsou urˇceny - smˇerov´an´ı. Anal´yzou bylo
zjiˇstˇeno, ˇze sonda zvl´ad´a na lince datovou propustnost 1Gbps bez ztr´aty paket˚u a bez
ohledu na velikost paket˚u [10].
4.2.1 Vlastnosti sondy:
• monitorov´an´ı dvou 1Gbps port˚u
• pˇresn´y ˇcas pˇri anal´yze paket˚u
• aktivn´ı ˇcasov´y limit - za jak dlouho se tok, kter´y je povaˇzov´an za aktivn´ı, mus´ı odeslat
do kolektoru
• neaktivn´ı ˇcasov´y limit - umoˇzˇnuje nastavit ˇcasov´y interval, za kter´y bude tok
klasifi-kov´an jako ukonˇcen´y a odesl´an do kolektoru
• export dat ve verzi NetFlow 5, verzi 9 nebo IPFX
• export dat na v´ıce kolektor˚u z´aroveˇn
• moˇznost nastavit vzorkovan´ı
• sbˇer statistik - z´ısk´av´an´ı statistik o IP adrese, ˇc´ıslech port˚u, protokolech, poˇctech
4.3
N´
astroje
Pro pr´aci se z´aznamy NetFlow existuje cel´a ˇrada n´astroj˚u:
• nfdump(netflow dump) [4]: N´astroj pro ˇcten´ı a zpracov´av´an´ı dat NetFlow uloˇzen´ych
pomoc´ınfcapd. Dok´aˇze z tˇechto dat vytv´aˇret statistiky. Naps´an v C pro vˇetˇs´ı rychlost.
D´ıky tomu dok´aˇze filtrovat v´ıce neˇz 4 mili´ony tok˚u za vteˇrinu na 3GHz procesoru Intel
[9], nebo vypoˇc´ıtat statistiku top N za 2.5s pˇri 1,5 mili´on˚u tok˚u. Pracuje v pˇr´ıkazov´e
ˇr´adce, podobn´y programu tcpdump. Podporuje z´aznamy NetFlow verze 5, 7 a 9. Lze
pouˇz´ıt filtrov´an´ı podobn´e jako u libpcap nebo WinPcap, kter´e pouˇz´ıv´a napˇr. tcpdump
a wireshark.
• nfcapd(netflow capture deamon): Zaznamen´av´a data NetFlow ze s´ıtˇe a ukl´ad´a je do
soubor˚u. Dok´aˇze pracovat se z´aznamy NetFlow verze 5, 7, 9.
• nfprofile(netflow profiler): Dok´aˇze proch´azet soubory uloˇzen´e pomoc´ınfcapd. Tyto
soubory filtruje podle zadan´ych filtr˚u a ukl´ad´a pro pozdˇejˇs´ı anal´yzu.
• nfreplay (netflow replay): ˇCte soubory s daty NetFlow uloˇzen´e pomoc´ı nfcapd
a pos´ıl´a je po s´ıti na jin´y poˇc´ıtaˇc.
• nfclean(netflow cleanup): Skript pro maz´an´ı star´ych dat.
• nfsen(netflow sensor): Jedn´a se o grafick´e rozhran´ı pro n´astrojnfdump. D´ıky tomuto
n´astroji lze pomoc´ı webov´ych str´anek jednoduˇse proch´azet uloˇzen´a data z kolektoru.
Dok´aˇze z tˇechto dat zobrazit grafy pro jednotliv´a rozhran´ı, protokoly, zvolit si ˇcasov´y
´
usek, za kter´y budou grafy vykresleny, a dalˇs´ı. Uk´azka rozhran´ı je v pˇr´ıloze B
Kapitola 5
Skenov´
an´ı a NetFlow
Skenovac´ı n´astroje jsou bˇeˇznˇe pouˇz´ıv´any pro anal´yzu s´ıtˇe. M˚uˇze je tak´e ale pouˇz´ıt ´utoˇcn´ık
a informace z´ıskan´e z tˇechto skenov´an´ı pouˇz´ıt pro dalˇs´ı ´utok. Pokud chceme toto
ske-nov´an´ı detekovat, je tˇreba analyzovat, co za pakety tyto n´astroje pouˇz´ıvaj´ı. V laboratorn´ıch
podm´ınk´ach jsem vyzkouˇsel skenov´an´ı pomoc´ı n´astroj˚u nmap a EtherScope.
5.1
Skenov´
an´ı pomoc´ı nmap
N´asleduje pˇr´ıklad, jak se uloˇz´ı data NetFlow pˇri skenov´an´ı pomoc´ı n´astroje nmap. Sch´ema
5.1 ukazuje zapojen´ı sondy NetFlow v laboratoˇri. M˚uˇzeme si povˇsimnout, ˇze sonda nen´ı
zapojena pˇr´ımo do pˇrep´ınaˇce. Je to z toho d˚uvodu, ˇze dan´e skenov´an´ı bychom potom v˚ubec
neodhalili. Na s´ıti tvoˇren´e pˇrep´ınaˇci a smˇerovaˇci se data pos´ılaj´ı pouze od zdroje k c´ıli
(pokud pomineme r˚uzn´e ´utoky jako arp cache poisoning, zaplnˇen´ı CAM tabulky a jin´e)
a data by pro sondu nebyla v˚ubec viditeln´a.
Obr´azek 5.1: Sch´ema zapojen´ı
Pokud nyn´ı provedeme skenov´an´ı pomoc´ı n´astroje nmap, z´akladn´ım pˇr´ıkazem#nmap 10.10.10.1,
a prohl´edneme si, pomoc´ı n´astroje nfdump, co sonda zaznamenala, z´ısk´ame ´udaje, kter´e
Date flow start Src IP Addr:Port Dst IP Addr:Port Flags Packets Flows 2008-11-18 16:03:56.423 10.10.10.106:43578 10.10.10.1:80 ....S. 1 1 2008-11-18 16:03:56.420 10.10.10.106:43578 10.10.10.1:22 ....S. 1 1 2008-11-18 16:03:56.422 10.10.10.106:43578 10.10.10.1:23 ....S. 1 1 2008-11-18 16:03:56.420 10.10.10.106:43578 10.10.10.1:143 ....S. 1 1 2008-11-18 16:03:56.422 10.10.10.106:43578 10.10.10.1:443 ....S. 1 1 2008-11-18 16:03:56.425 10.10.10.106:43578 10.10.10.1:21 ....S. 1 1 2008-11-18 16:03:56.425 10.10.10.106:43578 10.10.10.1:1024 ....S. 1 1 2008-11-18 16:03:57.645 10.10.10.106:43579 10.10.10.1:1301 ....S. 1 1
Pro pˇrehlednost byly z tabulky vypuˇstˇeny nˇekter´e ´udaje. Jsou to informace o d´elce toku,
typ protokolu, ToS1 a poˇcet bajt˚u. Jak lze vidˇet, je skenov´ano asi 1000 nejpouˇz´ıvanˇejˇs´ıch
port˚u. Tok se vˇzdy zobrazuje jako jednosmˇern´y provoz. Tedy tyto stejn´e toky dostaneme
i v opaˇcn´em smˇeru, ale budou m´ıt nastaven´e jin´e pˇr´ıznaky u paketu TCP (pˇr´ıznak RST,
odm´ıtnut´ı spojen´ı). Na prvn´ı pohled lze vidˇet, ˇze bylo pouˇzito skenov´an´ı SYN. Toho m˚uˇzeme
pˇri pozdˇejˇs´ım n´avrhu vyuˇz´ıt. Dalˇs´ı vˇec urˇcuj´ıc´ı skenov´an´ı je kr´atk´a d´elka toku a mal´y poˇcet
paket˚u v toku. Tyto informace bude tˇreba zpracovat a na z´akladˇe nich se rozhodovat.
N´astroj nfdump umoˇzˇnuje i tvorbu filtr˚u. Jednoduch´ym filtrem, kter´y m˚uˇzeme pouˇz´ıt na
snadnˇejˇs´ı odhalen´ı skenov´an´ı SYN, by mohl b´yt napˇr´ıklad filtr
proto tcp and flags S and not flags ARFPU
Tento filtr vyp´ıˇse vˇsechny TCP toky, kter´e maj´ı u paketu TCP nastaven´y pouze pˇr´ıznak
SYN.
Vyzkouˇsel jsem vˇsechny typy skenov´an´ı, kter´e nmap poskytuje. Podrobnˇeji jsou tyto
techniky a principy, kter´e pouˇz´ıvaj´ı k detekci port˚u, pops´any v kapitole 3. Pokud se jedn´a
o skenov´an´ı SYN, tak je funkˇcn´ı, rychl´e a spolehliv´e. Skenov´an´ı connect je pomalejˇs´ı, ale
pokud na dan´em zaˇr´ızen´ı nem´a uˇzivatel administr´atorsk´a opr´avnˇen´ı, je takt´eˇz pouˇziteln´e.
U m´enˇe obvykl´ych technik jako skenov´an´ı FIN a XMASS z´aleˇz´ı na zaˇr´ızen´ı. Vˇetˇsinou ale
zobraz´ı poˇcet otevˇren´ych ˇci filtrovan´ych port˚u. U skenov´an´ı NULL jsem se sp´ıˇse setkal s t´ım,
ˇ
ze na nˇe s´ıt’ov´e zaˇr´ızen´ı v˚ubec neodpovˇedˇelo, pˇrestoˇze by u zavˇren´ych port˚u mˇelo generovat
paket s pˇr´ıznakem RST.
5.2
Skenov´
an´ı pomoc´ı EtherScope
TMSeries II
Dalˇs´ı skenovac´ı zaˇr´ızen´ı, kter´e jsem vyzkouˇsel v laboratoˇri je pˇr´ıstroj EtherScope [2]. Tento
s´ıt’ov´y analyz´ator skenuje celou s´ıt’. Sondu jsem zapojil pˇr´ımo za toto zaˇr´ızen´ı, jak je vidˇet
na obr´azku 5.2, abych z´ıskal veˇsker´e ´udaje o paketech, kter´e toto zaˇr´ızen´ı pos´ıl´a. Pˇribliˇzn´a
data lze vidˇet v n´asleduj´ıc´ı tabulce 5.2
1
Obr´azek 5.2: Sch´ema zapojen´ı II
Duration Proto Src IP Addr:Port Dst IP Addr:Port Flags Packets Bytes Flows
0.219 ICMP 10.10.10.150:0 10.10.10.106:8.0 ... 2 84 1 0.000 UDP 10.10.10.150:35072 255.255.255.255:7 ... 1 52 1 0.219 ICMP 10.10.10.150:0 10.10.10.51:8.0 ... 2 84 1 2.878 UDP 10.10.10.150:137 10.10.10.255:137 ... 3 234 1 13.650 ICMP 10.10.10.150:0 255.255.255.255:8.0 ... 2 80 1 0.220 ICMP 10.10.10.150:0 10.10.10.63:8.0 ... 2 84 1 0.218 ICMP 10.10.10.150:0 10.10.10.119:8.0 ... 2 84 1
Z t´eto tabulky byly odstraˇneny ´udaje o ˇcasu skenov´an´ı a ToS. Tady vid´ıme, ˇze zaˇr´ızen´ı
EtherScope pos´ıl´a pˇrev´aˇznˇe pakety ICMP a UDP. U tˇechto paket˚u nem˚uˇzeme prov´est
fil-trov´an´ı jako u skenov´an´ı SYN. Jsou to ale toky vesmˇes velmi kr´atk´e, s mal´ym poˇctem
pa-ket˚u a kr´atkou dobou trv´an´ı. Tyto toky by se v s´ıti nemˇely vyskytovat pˇr´ıliˇs ˇcasto. Vˇetˇsina
uˇzivatel˚u pouˇz´ıv´a pˇripojen´ı pro prohl´ıˇzen´ı webov´ych str´anek, komunikaci nebo mail a tam
je trv´an´ı tok˚u delˇs´ı, s vˇetˇs´ım poˇctem paket˚u. Statistick´e v´ysledky, kter´e zjiˇst’uj´ı, zda toto
Kapitola 6
Pr´
ace s daty NetFlow v rozs´
ahl´
ych
s´ıt´ıch
Objem dat NetFlow ukl´ad´an´ych smˇerovaˇci nebo sondami NetFlow z´aleˇz´ı na velikosti
pro-vozu s´ıtˇe. Velikost exportovan´ych soubor˚u se m˚uˇze pohybovat od nˇekolika MB v mal´ych
s´ıt´ıch do stovek MB ve velmi rozs´ahl´ych s´ıt´ıch.
V mal´ych s´ıt´ıch mohou b´yt pouˇzity pro vytv´aˇren´ı z´aznam˚u NetFlow smˇerovaˇce, kter´e
tento protokol podporuj´ı. Ve vˇetˇs´ıch s´ıt´ıch s velk´ym datov´ym provozem to jiˇz ale nen´ı moˇzn´e
a je nutno zaznamen´avat data pomoc´ı hardwarovˇe akcelerovan´ych zaˇr´ızen´ı, jako jsou napˇr.
sondy NetFlow 4.2. Ty b´yvaj´ı nasazovan´e do s´ıt´ı od velikosti pades´ati zaˇr´ızen´ı. ˇCasto jsou
nasazov´any v s´ıt´ıch o 100-500 zaˇr´ızen´ı. N´asleduj´ı banky, poskytovatel´e pˇripojen´ı, st´atn´ı
instituce aj., kde se velikost s´ıtˇe pohybuje v nˇekolika tis´ıc´ıch zaˇr´ızen´ı.
6.1
Zdroj dat NetFlow
Pˇri zkuˇsebn´ım provozu sondy NetFlow zapojen´e v r´amci vnitˇrn´ı s´ıtˇe FIT, byl ukl´adan´y
provoz minim´aln´ı a nehodil se k ˇz´adn´e anal´yze. Pro podrobnˇejˇs´ı anal´yzu byla poskytnuta
data z p´ateˇrn´ı s´ıtˇe VUT, kter´a je pˇripojena do akademick´e s´ıtˇe CESNET. Tato data jsou
z´ısk´av´ana ze dvou extern´ıch 10Gb/s linek, kter´e pˇripojuj´ı s´ıt’ VUT do CESNETu. Sbˇer
dat je prov´adˇen 10Gb/s kartami na provozu odboˇcen´em prostˇrednictv´ım TAPu. TAP je
hardwarov´e zaˇr´ızen´ı, kter´e umoˇzˇnuje monitorovat komunikaci mezi dvˇema body. Zaˇr´ızen´ı
m´a minim´alnˇe tˇri porty. Port pro monitorov´an´ı a port pro kaˇzd´e monitorovan´e zaˇr´ızen´ı.
Veˇsker´a prob´ıhaj´ıc´ı komunikace mezi tˇemito body je pak zkop´ırov´ana na monitorovac´ı port.
Data jsou ukl´ad´ana jako hodinov´y z´aznam (dump) provozu. Toto je celkem nestandardn´ı
ˇreˇsen´ı, protoˇze NetFlow export´er je standardnˇe nastaven na pˇetiminutov´e exportov´an´ı a toto
dodrˇzuje dle zkuˇsenost´ı z praxe vˇetˇsina firem.
Dodan´a data, s kter´ymi jsem pracoval, nejsou kompletn´ı data NetFlow. Chyb´ı jim
nˇekolik poloˇzek, napˇr. pˇr´ıznaky u paket˚u TCP. Toto do znaˇcn´e m´ıry ztˇeˇzuje vyhled´av´an´ı
skenov´an´ı, protoˇze nejv´ıce skenovac´ıch ´utok˚u je skenov´an´ı SYN [13]. Pokud bychom mˇeli
uloˇzeny i pˇr´ıznaky, mohli bychom pouˇz´ıt filtry, kter´e by z tok˚u vypsaly pouze ty s
na-staven´ym pˇr´ıznakem SYN a t´ımto do jist´e m´ıry odhalit skenov´an´ı. U ustanoven´ı nov´eho
spojen´ı TCP se sice tak´e pos´ıl´a paket SYN, ale tento paket m´a nastaven i pˇr´ıznak ACK
a tedy by nezkreslil filtrovan´e v´ysledky. Dalˇs´ı podstatn´a chybˇej´ıc´ı poloˇzka je u protokolu
ICMP. NetFlow dok´aˇze u tohoto protokolu ukl´adat typ a k´od paketu. Tyto poloˇzky ukl´ad´a
Request-100 150 200 250 300 350 400 00:00 05:00 10:00 15:00 20:00 čas / hod ve lik os t s ou bo ru / M B
Obr´azek 6.1: Pr˚umˇern´a velikost soubor˚u s NetFlow daty
Echo Reply, pouˇz´ıv´ana pˇr´ıkazem ping, bude ve zdrojov´em portu uloˇzena 0 a v c´ılov´em 8.0.
Odpovˇed’ Echo Reply (typ 0) na dotaz Echo Request (typ 8, k´od 0). Tento nedostatek,
stejnˇe jako chybˇej´ıc´ı pˇr´ıznaky u protokolu TCP, ztˇeˇzuje n´asledn´e odhalen´ı ´utok˚u, kter´e
tˇechto paket˚u ICMP vyuˇz´ıvaj´ı k zjiˇstˇen´ı ˇzivosti s´ıt’ov´ych zaˇr´ızen´ı. ˇCasem se vˇsak pl´anuje
zakoupen´ı sondy, kter´a bude schopna exportovat plnohodnotn´e data NetFlow.
Data jsou postupnˇe ukl´ad´ana na server od 15.11.2008 a zat´ım je moˇzno analyzovat
pˇribliˇznˇe 740 GB dat. Pˇribliˇzn´a velikost jednotliv´ych soubor˚u a poˇcet tok˚u za hodinu lze
vidˇet v grafu 6.1 a 6.2. U grafu 6.1 je vypoˇc´ıtan´a pr˚umˇern´a velikost soubor˚u za jednotliv´e
hodiny. Pr˚umˇer je vypoˇc´ıt´an z uloˇzen´ych z´aznam˚u za tˇri mˇes´ıce. V grafu 6.2 je poˇcet tok˚u
vypoˇc´ıt´an obdobnˇe, jako pr˚umˇern´y poˇcet tok˚u za danou hodinu v dan´y den. Pr˚umˇer je
vypoˇc´ıt´an tak´e za tˇri mˇes´ıce z´aznam˚u. Z´akazn´ıci pouˇz´ıvaj´ıc´ı sondy NetFlow v ˇCR dos´ahnou
maxim´aln´ı propustnosti okolo 400 tok˚u za sekundu. Jak lze vidˇet, poˇcet tok˚u dosahovan´ych
v r´amci p´ateˇrn´ı s´ıtˇe VUT je nejm´enˇe 1600 tok˚u/s, bˇeˇznˇe ale dos´ahne 3500 tok˚u/s.
Zpracov´avat takov´e mnoˇzstv´ı dat je ˇcasovˇe velmi n´aroˇcn´e. Pr˚umˇernou dobu generov´an´ı
statistik na poˇc´ıtaˇc´ıch, kter´e jsem pouˇz´ıval, lze vidˇet v tabulce 6.1.
Procesor/RAM Pr˚umˇern´a doba vytvoˇren´ı statistiky
Pentium-M 1.86 GHz / 1GB 22s
Intel Xeon 2.4 GHz / 3GB 12s
Tabulka 6.1: Pr˚umˇern´a doba zpracov´an´ı
Pr˚umˇern´a doba vytvoˇren´ı statistiky je doba, za kterou se vytvoˇr´ı statistika top 20 IP
adres seˇrazen´ych podle poˇctu tok˚u z jednoho souboru, kter´y obsahuje hodinov´y z´aznam
provozu. N´astroj nfdump umoˇzˇnuje proch´azet i v´ıce soubor˚u najednou a generovat z nich
glob´aln´ı statistiky. To je ale extr´emnˇe n´aroˇcn´e na v´ypoˇcetn´ı zdroje a operaˇcn´ı pamˇet’. Doba
5e+06 6e+06 7e+06 8e+06 9e+06 1e+07 1.1e+07 1.2e+07 1.3e+07 1.4e+07 1.5e+07 00:00 5:00 10:00 15:00 20:00 po če t t ok ů čas / h
Obr´azek 6.2: Pr˚umˇern´y poˇcet tok˚u za jednotliv´e hodiny
6.2
Zpracov´
an´ı dat
Z v´yˇse uveden´ych dob zpracov´an´ı a velikost´ı dat lze stanovit urˇcit´e postupy, jak budou data
d´ale zpracov´ana. Nab´ızej´ı se dvˇe moˇznosti. Ukl´adat data do relaˇcn´ı datab´aze a pokusit se je
zpracovat dotazovac´ım jazykem ˇci nˇejak´ym rozˇs´ıˇren´ım pro data mining u datab´aze Oracle,
nebo se je pokusit zpracovat pˇr´ımo pomoc´ı skriptovac´ıch jazyk˚u. U relaˇcn´ı datab´aze by
se nejprve musel vygenerovat skript pro uloˇzen´ı dat, n´aslednˇe data nahr´at do datab´aze
a zpracovat, pravdˇepodobnˇe jazykem PHP nebo podobn´ym. U skriptovac´ıch jazyk˚u se data
mohou zpracovat rovnou a pravdˇepodobnˇe jsou ke zpracov´an´ı vhodnˇejˇs´ı.
U obou ˇreˇsen´ı se pot´yk´ame s velk´ymi objemy dat pro zpracov´an´ı. Tento objem dat by
mohl b´yt sn´ıˇzen filtrov´an´ım. Abychom vˇedˇeli, jak´a data je moˇzn´e odfiltrovat, jsou v kapitole
7 vytvoˇreny statistiky ze z´ıskan´ych dat, kter´e by mohly pomoci s rozhodov´an´ım, kter´a data
Kapitola 7
Statistika dat NetFlow v
rozs´
ahl´
ych s´ıt´ıch
V rozs´ahl´ych s´ıt´ıch s velk´ym poˇctem aktivn´ıch uzl˚u a nˇekolika tis´ıci spojen´ımi za sekundu
je obt´ıˇzn´e v˚ubec z´ıskat plnohodnotn´a data NetFlow v pomˇeru 1:11. Data jsou bˇeˇznˇe
vzor-kov´ana a hod´ı se hlavnˇe pro statistick´e ´uˇcely. Pokud jsou z´ısk´av´ana kompletn´ı data, lze
v kapitole 6 vidˇet, ˇze tˇechto dat je velk´e mnoˇzstv´ı a zpracov´an´ı nen´ı nejrychlejˇs´ı. M˚uˇzeme
se tedy pokusit pod´ıvat na data jako celek, zjistit jak´e sluˇzby jsou v toc´ıch dominantn´ı,
jak´e jsou pˇrenosy dat, atp.
Na n´asleduj´ıc´ım grafu 7.1 je vidˇet pr˚umˇern´e mnoˇzstv´ı unik´atn´ıch IP adres v pr˚ubˇehu
dne. Tento graf bude posl´eze d˚uleˇzit´y pˇri n´avrhu zpracov´an´ı dat pro odhalen´ı skenov´an´ı.
Pokud bychom chtˇeli porovn´avat jednotliv´e z´aznamy mezi sebou, ˇcasov´a sloˇzitost takov´e
operace by byla kvadratick´a O(n2). U z´aznamu, kter´y m´a 2 mil. unik´atn´ıch IP adres za
hodinu, by poˇcet operac´ı potom dos´ahl 412, coˇz je ne´umˇernˇe n´aroˇcn´e a mus´ı b´yt pouˇzit jin´y
pˇr´ıstup. 1e+06 1.2e+06 1.4e+06 1.6e+06 1.8e+06 2e+06 2.2e+06 2.4e+06 2.6e+06 00:00 05:00 10:00 15:00 20:00 po če t u nik át ní ch IP čas/hod
Obr´azek 7.1: Poˇcet unik´atn´ıch IP adres v toku
Graf 7.2 ukazuje, kolik je pr˚umˇernˇe vymˇenˇeno paket˚u v toku. V datech, ze kter´ych je
1
1 10 100 1000 10000 100000 1e+06 1e+07 1e+08 1 10 100 1000 10000 100000 1e+06 Če tn os t
Počet paketů v toku
Obr´azek 7.2: Frekvence poˇctu paket˚u v toku
tento graf vygenerov´an, se vyskytovalo t´emˇeˇr 35 mil. jednopaketov´ych tok˚u, coˇz pˇredstavuje
pˇribliˇznˇe 55 %. Toky do 3 paket˚u pak tvoˇrily pˇribliˇznˇe 80 % vˇsech tok˚u. D´ıky t´eto statistice
se v´yraznˇe zmˇenilo tvrzen´ı, kter´e jsme uvaˇzovali v kapitole 5, tedy ˇze kr´atk´ych tok˚u bude
mal´e mnoˇzstv´ı.
Pokud se na toky pod´ıv´ame z hlediska sluˇzeb, nenalezneme pˇr´ıliˇs pˇrekvapiv´e v´ysledky.
Dominantn´ı sluˇzbou je protokol HTTP, HTTPS. U UDP je to protokol DNS. Co se t´yˇce
pˇrenesen´ych dat, zde je dominantn´ı tunelovac´ı protokol GRE2 od firmy Cisco.
Počet toků u služeb
HTTPS 1.7% HTTP 9.2% ICMP 4.0% DNS 2.7%
rest of 82.3%
Počet bytů u služeb
GRE 2.9% HTTP 1.7% HTTPS 0.4% dynamic ports 1.6% SSH 0.3% rest of 93.1%
Obr´azek 7.3: Statistika jednotliv´ych sluˇzeb
Z n´asleduj´ıc´ıch graf˚u 7.3 se m˚uˇze zd´at, ˇze tyto sluˇzby jsou zastoupeny v miziv´em
mnoˇzstv´ı. Je tˇreba si ale uvˇedomit, ˇze celkov´e mnoˇzstv´ı port˚u je 65535. Tedy souˇcet
vˇsech ostatn´ıch tok˚u a bajt˚u proud´ıc´ı na ostatn´ı porty je samozˇrejmˇe vˇetˇs´ı. Poloˇzka
dy-2
namick´e porty znamen´a porty od 49152 v´yˇse. Tyto porty se ve statistice mˇen´ı kaˇzd´y den
a pravdˇepodobnˇe to budou vytvoˇren´e tunelovac´ı spoje. To usuzuji za pˇredpokladu, ˇze tyto
dynamick´e porty maj´ı velice podobn´y pomˇer poˇctu tok˚u ku pˇrenesen´ym bajt˚um. Jako dalˇs´ı
v´yznamn´a poloˇzka z hlediska poˇctu tok˚u je protokol ICMP. Pˇredpokl´ad´am, ˇze vˇetˇsina tˇechto
tok˚u jsou pakety ICMP Echo-Request a Echo-Replay, ale z d˚uvod˚u uveden´ych v kapitole
6 to nelze pˇresnˇe urˇcit. Pokud jsem zkoumal data, kter´a byla k dispozici od firmy Invea,
lze v toc´ıch ICMP pozorovat tak´e hodnˇe paket˚u k´odu 3 - Destination unreachable. Pˇresto
Echo pakety pˇrevaˇzuj´ı.
V tabulce 7.1 lze vidˇet pˇribliˇzn´y pomˇer tok˚u a bajt˚u u nejfrekventovanˇejˇs´ıch sluˇzeb.
Tato statistika je generov´ana za ˇctyˇr hodinov´y provoz v nejfrekventovanˇejˇs´ı denn´ı dobu. Za
tyto ˇctyˇri hodiny bylo v pˇribliˇznˇe 77 mil. toc´ıch pˇreneseno 1,2 TB dat. Lze vidˇet, ˇze pomoc´ı
tunelovac´ıho protokolu se pˇren´aˇs´ı velk´e mnoˇzstv´ı dat, ale poˇcet tok˚u je velice mal´y, d´ıky
velice dlouh´emu trv´an´ı spojen´ı. U protokolu HTTP je naopak pˇreneseno velk´e mnoˇzstv´ı
bajt˚u pˇri nˇekolikan´asobn´em mnoˇzstv´ı tok˚u. Proto jsem v´yˇse usoudil, ˇze dynamick´e porty,
kter´e se objevuj´ı ve statistik´ach budou pravdˇepodobnˇe dalˇs´ı tunelovac´ı protokoly, jako napˇr.
VPN.
Protokol Poˇcet pˇrenesen´ych bajt˚u Poˇcet tok˚u
GRE 31.6 GB 7694
HTTP 18.4 GB 7.1 mil.
dynamic ports 15 GB 7318
SSH 3.6 GB 20 494
Tabulka 7.1: Pomˇer pˇrenesen´ych byt˚u k poˇctu tok˚u
U skenov´an´ı se pˇripojuje ´utoˇcn´ık na jednotliv´e porty zaˇr´ızen´ı, kter´e skenuje. Pokud
skenuje napˇr. pomoc´ı z´akladn´ıho nastaven´ı skeneru nmap, testuje u jednoho poˇc´ıtaˇce tis´ıc
port˚u. Bylo by tedy zaj´ımav´e zjistit, na kolik port˚u se v re´aln´em provozu pr˚umˇernˇe uˇzivatel
pˇripojuje. Toto lze vidˇet na grafu 7.4. Lze vidˇet, ˇze pr˚umˇernˇe se uˇzivatel pˇripojuje na velice
mal´e mnoˇzstv´ı port˚u. V 80 % pˇr´ıpad˚u je to dokonce pouze jeden port.
1 10 100 1000 10000 100000 1e+06 1e+07 0 200 400 600 800 1000 1200 1400 Če tn os t
Počet navštívených portů
Obr´azek 7.4: Frekvence poˇctu navˇst´ıven´ych port˚u
vy-tvoˇren z 26,3 mil. tok˚u, ve kter´em bylo 2,6 mil. unik´atn´ıch IP adres. Poˇcet IP adres, kter´e
vytv´aˇr´ı pouze jeden tok je sice nejvˇetˇs´ı, ale z celkov´eho mnoˇzstv´ı je to pouze okolo 6 %. Je
totiˇz daleko v´ıce IP adres, kter´e maj´ı vˇetˇs´ı mnoˇzstv´ı tok˚u.
1 10 100 1000 10000 100000 1e+06 1e+07 1 10 100 1000 10000 100000 1e+06 Če tn os t Počet toků na IP
Kapitola 8
Anal´
yza z´ıskan´
ych dat a n´
avrh
aplikace
V pˇredch´azej´ıc´ıch kapitol´ach jsem vytvoˇril ˇradu statistik, kter´e popisuj´ı provoz v s´ıti. Ze
z´ıskan´ych ´udaj˚u je nyn´ı nutn´e vybrat z´akladn´ı prvky, d´ıky kter´ym bude moˇzno odhalit
skenov´an´ı i v takto rozs´ahl´e s´ıti. D´ale je nutno zodpovˇedˇet ot´azky t´ykaj´ıc´ı se samotn´e
aplikace. N´asleduje shrnut´ı nejpodstatnˇejˇs´ıch ´udaj˚u.
8.1
Shrnut´ı z´ıskan´
ych statistik
• Unik´atn´ı IP adresy: V provozu jsem zjistil velk´y poˇcet unik´atn´ıch IP adres. Bˇeˇznˇe je
to kolem 2 mil. adres za hodinu. Kaˇzd´a adresa se samozˇrejmˇe pˇripojuje v libovoln´y
ˇcas a v z´aznamu se tedy vyskytuje tis´ıce tok˚u se stejnou IP adresou. Pokud bych chtˇel
na z´akladˇe IP adresy toky analyzovat, musel bych pro kaˇzdou IP adresu proj´ıt cel´y
z´aznam.
• Navˇst´ıven´e porty: Pokud jsem sledoval pr˚umˇern´y poˇcet navˇst´ıven´ych port˚u u IP
ad-resy, v 80 % pˇr´ıpad˚u je to pouze jeden port. Jak jiˇz bylo zm´ınˇeno, u skenov´an´ı se
´
utoˇcn´ık pˇripojuje k velk´emu mnoˇzstv´ı port˚u nebo k jednomu, ale na velk´em mnoˇzstv´ı
poˇc´ıtaˇc˚u.
• Poˇcet paket˚u v toku: U skenov´an´ı je vyuˇz´ıv´ano pˇredevˇs´ım skenov´an´ı SYN, kter´e
pouˇz´ıv´a pouze jeden paket. Tok˚u, kter´e obsahuj´ı pouze jeden paket, je ale v´ıce neˇz
polovina. Tato situace je tedy podobn´a jako u unik´atn´ıch IP adres.
• Mnoˇzstv´ı dat: Z´aznamy v hodinov´ych dumpech provozu obsahuj´ı velk´e mnoˇzstv´ı dat.
Zpracov´avat tato data je pak ˇcasovˇe n´aroˇcn´e.
Je nutn´e si uvˇedomit, ˇze i kdyby byla k dispozici velk´a v´ypoˇcetn´ı s´ıla a nebyl bych
ome-zen pamˇet´ı apod., analyzovat data delˇs´ı ˇcasov´y ´usek je bezpˇredmˇetn´e. Skenovac´ı ´utok ˇcasto
pˇredch´az´ı ´utok jin´y a je tedy v´yhodn´e na nˇej rychle reagovat a dalˇs´ım ´utok˚um tak zabr´anit.
Tak´e je ale d˚uleˇzit´e si uvˇedomit, ˇze v´ysledky, zda doˇslo v re´aln´em provozu ke skenov´an´ı,
nemohu odhalit ihned. Z´aznam NetFlow nem˚uˇze export´er odes´ılat kaˇzdou sekundu, protoˇze
by zahltil s´ıt’. Standardnˇe je pos´ıl´an po pˇeti minut´ach.
Co z v´yˇse uveden´ych bod˚u vypl´yv´a? U dat by bylo vhodn´e se pokusit odfiltrovat ta
data, o kter´ych jsme pˇresvˇedˇceni, ˇze neobsahuj´ı podezˇrelou aktivitu a zmenˇsit tak objem
skenov´an´ı nejd˚uleˇzitˇejˇs´ı, je nejv´ıc. Ve vˇetˇsinˇe pˇr´ıpad˚u jsou to totiˇz kr´atk´e, nˇekolikapaketov´e
toky, tedy stejn´a data, jak´a pos´ılaj´ı n´astroje pro skenov´an´ı port˚u. Odfiltrov´an´ım delˇs´ıch
tok˚u sice zmenˇs´ım ˇc´asteˇcnˇe objem, ale 80 % dat mi stejnˇe z˚ustane a ˇreˇs´ım stejn´y probl´em.
ˇ
Cas na zpracov´an´ı dat aplikac´ı mus´ı b´yt pˇrinejhorˇs´ım stejn´y, jako ˇcas, za kter´y se vytv´aˇr´ı
z´aznamy. Pokud jsou z´aznamy pos´ıl´any do kolektoru v desetiminutov´ych intervalech, nelze
data zpracov´avat d´ele neˇz 10 minut. Zpracov´an´ı by ale mˇelo trvat podstatnˇe kratˇs´ı dobu.
Odhalit vˇsechna skenov´an´ı v s´ıti, kter´a m´a mili´ony spojen´ı za hodinu, je nemoˇzn´e. Pokud
bude ´utoˇcn´ık skenovat pouze nˇekolik poˇc´ıtaˇc˚u a port˚u, je to v takto objemn´ych datech
neodhaliteln´e. Toto ale ani nen´ı poˇzadavkem. U takto velk´ych s´ıt´ı je c´ılem odhalit ´utoˇcn´ıky,
kteˇr´ı prov´ad´ı horizont´aln´ı skenov´an´ı cel´ych pods´ıt´ı, pˇr´ıpadnˇe velk´e blokov´e skenov´an´ı.
Zamˇeˇrme se tedy na horizont´aln´ı skenov´an´ı. Pro toto skenov´an´ı plat´ı:
• Pouˇz´ıv´a jedno aˇz dvou paketov´e toky
• Skenuje velk´e mnoˇzstv´ı IP adres
• Toky trvaj´ı kr´atce. D´elka skenov´an´ı z´avis´ı na poˇctu IP adres.
• Poˇcet bajt˚u je st´ale stejn´y
Protoˇze v hodinov´em z´aznamu o provozu jsem nedok´azal efektivnˇe odhalit ˇz´adn´e ´utoky,
zamˇeˇril jsem se na omezen´ı velikosti zpracov´avan´ych dat. Jak jsem uk´azal v kapitole 7,
velk´y poˇcet tok˚u na IP adresu je relativnˇe mal´y. Skenov´an´ı trv´a tak´e relativnˇe kr´atkou
dobu. Za tuto kr´atkou dobu ale vytvoˇr´ı ´utoˇcn´ık velk´e mnoˇzstv´ı tok˚u. Omezil jsem si tedy
hodinov´y z´aznam na nejkratˇs´ı rozumn´y ”pˇetiminutov´y”z´aznam. Pokud se v tomto kr´atk´em
ˇ
casov´em ´useku objev´ı ´utoˇcn´ık, mˇela by nastat n´asleduj´ıc´ı situace:
1. ´Utoˇcn´ık vytvoˇr´ı velk´e mnoˇzstv´ı spojen´ı. Toto by se mˇelo projevit ve statice tok˚u na
z´akladˇe zdrojov´e IP adresy.
2. Toky ´utoˇcn´ıka by mˇely vykazovat stejn´y poˇcet paket˚u, stejn´y poˇcet byt˚u a kr´atkou
dobu trv´an´ı.
3. Legitimn´ı uˇzivatel´e by nemˇeli podle z´ıskan´ych statistik vytv´aˇret velk´e mnoˇzstv´ı tok˚u.
4. Servery, kter´e obsluhuj´ı hodnˇe klient˚u, vytv´aˇr´ı tak´e hodnˇe tok˚u. V tˇechto toc´ıch by
ale poˇcet paket˚u mˇel kol´ısat, stejnˇe tak poˇcet pˇrenesen´ych bajt˚u.
Z v´yˇse uveden´ych ´uvah jsem postupoval n´asleduj´ıc´ım zp˚usobem.
1. Z pˇetiminutov´eho toku je vytvoˇrena statistika o nejfrekventovanˇejˇs´ıch IP adres´ach na
z´akladˇe poˇctu tok˚u.
2. U kaˇzd´e IP adresy je vyfiltrov´an z´aznam o vˇsech jej´ıch toc´ıch v dan´em ˇcasov´em
intervalu.
3. Tento z´aznam je zpracov´an pomoc´ı rozhodovac´ıho algoritmu.
8.2
Rozhodovac´ı algoritmus
Pro rozhodov´an´ı, zda dan´y tok je, nebo nen´ı souˇc´ast skenov´an´ı, je vhodn´e pouˇz´ıt techniky
pro strojov´e uˇcen´ı a dolovan´ı z dat. Pˇri dolov´an´ı z dat se zde uplatn´ı hlavnˇe analytick´a
metodologie, pˇri kter´e se pouˇz´ıvaj´ı rozhodovac´ı stromy, neuronov´e s´ıtˇe nebo genetick´e
pro-gramov´an´ı. Pro tuto pr´aci jsem usoudil, ˇze bude nejvhodnˇejˇs´ı pouˇz´ıt rozhodovac´ı strom
generovan´y algoritmem ID31 [16].
Rozhodovac´ı stromy jsou induktivn´ı algoritmy vytvoˇren´e ke klasifikaci instanc´ı. M˚uˇzeme
je pouˇz´ıt, kdyˇz jsou instance pops´any atributy a hodnotami (napˇr. VLHKOST: norm´aln´ı,
vysok´a) a c´ılov´a funkce nab´yv´a diskr´etn´ıch hodnost (napˇr. ANO / NE). Tr´enovac´ı data
mohou obsahovat i chyby a tak´e nemus´ı obsahovat hodnoty vˇsech atribut˚u.
C´ılov´a funkce je reprezentov´ana rozhodovac´ım stromem (sekvenc´ı rozhodnut´ıif-then-else).
Klasifikace se prov´ad´ı pr˚uchodem stromem od koˇrene k list˚um, kdy se testuje hodnota
jed-noho atributu instance pro kaˇzd´y uzel. Kaˇzd´a hrana odpov´ıd´a jedn´e hodnotˇe. Kaˇzd´y list
pak urˇcuje klasifikaci instance.
U ID3 algoritmu vytv´aˇr´ıme na z´akladˇe tr´enovac´ıch dat rozhodovac´ı strom. Strom se
vytv´aˇr´ı od koˇrene. V kaˇzd´em uzlu se zjiˇst’uje, kter´y atribut je pro pr´avˇe tento uzel
nej-vhodnˇejˇs´ı. Poˇcet potomk˚u odpov´ıd´a poˇctu hodnot vybran´eho atributu. Tr´enovac´ı data se
rozdˇel´ı podle pˇr´ısluˇsn´e hodnoty atributu na pˇr´ısluˇsn´e podmoˇziny. Algoritmus pracuje
re-kurzivnˇe v n´asleduj´ıc´ıch kroc´ıch.
Pˇr´ıklad vytvoˇren´eho rozhodovac´ıho stromu m˚uˇzeme vidˇet na obr´azku 8.1. U tohoto
pˇr´ıkladu je strom pouˇzit k rozhodnut´ı, zda m´am nebo nem´am j´ıt hr´at golf.
Předpověď Slunečno Zataženo Déšť Vlhkost Vysoká Normální NE ANO ANO Vítr Silný Slabý NE ANO
Obr´azek 8.1: Pˇr´ıklad rozhodovac´ıho stromu
1
ID3(Tr´enovac´ı data, C´ılov´y atribut, Atributy)
1. Zaloˇz Koˇrenstromu
2. Pokud jsou vˇsechnaTr´enovac´ı datapozitivn´ı, vytvoˇr jednouzlov´y strom s koˇrenem
oznaˇcen´ym +
3. Jsou-li vˇsechnaTr´enovac´ı datanegativn´ı, vytvoˇr jednouzlov´y strom s koˇrenem oznaˇcen´ym
-4. Je-li mnoˇzina atribut˚uAtributypr´azdn´a, vrat’ jednouzlov´y strom s koˇrenem oznaˇcen´ym
nejˇcastˇejˇs´ı hodnotou c´ılov´eho atributu v tr´enovac´ıch datech
5. Jinak:
Vyber atribut A, kter´y nejl´epe klasifikuje tr´enovac´ı data,Koˇren = A
5.1 Pro kaˇzdou jeho moˇznou hodnotu vytvoˇr novou vˇetev
5.2 Vytvoˇr Podmnoˇzinavi z tr´enovac´ıch dat, pokud A=vi
5.3 Je-li Podmoˇzinavi pr´azdn´a, pod danou vˇetv´ı zaloˇz list stromu oznaˇcen´y
nejˇcastˇejˇs´ı hodnotou c´ılov´eho atributu v tr´enovac´ıch datech
5.4 Jinak pˇridej pod vˇetev podstromID3(Podmnoˇzinavi, C´ılov´y atribut,Atributy - A)
6. Vrat’ v´ysledn´y podstrom
V´ybˇer nejlepˇs´ıho atributu prob´ıh´a na z´akladˇe entropie (zisku informace) [7]. Necht’ X je
n´ahodn´y jev, jenˇz m˚uˇze nab´yvat hodnotx1, x2, . . . , xns pravdˇepodobnostmip(x1), p(x2), . . . , p(xn)
a necht’ je
n
X
i=1
p(xi) = 1. Pak entropie jevuX je
H(X) =− n
X
i=1
p(xi) log2p(xi)
Krit´erium oˇcek´avan´eho zisku m˚uˇzeme definovat jako m´ıru oˇcek´avan´eho sn´ıˇzen´ı entropie po
rozdˇelen´ı tr´enovac´ıch dat podle hodnoty vybran´eho atributu [23]. Tedy informace, kterou
n´am pˇrin´aˇs´ı znalost hodnoty atributu. Form´aln´ı z´apis potom ukazuje rovnice 8.1:
Gain(D, A)≡H(D)− X v∈V alues(A)
|Dv|
|D|H(Dv) (8.1)
• A - atribut; A(d) - hodnota atributuA v instancid
• V alues(A) - mnoˇzina vˇsech moˇzn´ych hodnot atributu A
• D- tr´enovac´ı data
Tr´enovac´ı data
Pro klasifikaci, zda tok je nebo nen´ı souˇc´ast´ı skenov´an´ı, jsem vytvoˇril n´asleduj´ıc´ı sadu
pravidel. Popis atribut˚u:
• C´ılov´a IP:
– mal´y rozd´ıl v rozsahu: Tato hodnota znamen´a, ˇze IP adresy jdou postupnˇe
za sebou v jedn´e pods´ıti. Napˇr 10.10.10.1, 10.10.10.2atd.
– stejn´a: Stejn´a IP adresa ve dvou po sobˇe n´asleduj´ıc´ıch toc´ıch – rozd´ıln´a: IP adresa je z rozd´ıln´ych pods´ıt´ı
• C´ılov´y port:
– rozd´ıl <5: Podobnˇe jako u IP adresy tato hodnota atributu urˇcuje, zda porty
jdou postupnˇe za sebou.
– stejn´y: Porty po dvou po sobˇe jdouc´ıch toc´ıch jsou shodn´e. – rozd´ıln´e:Dva po sobˇe jdouc´ı toky maj´ı rozd´ıln´e porty.
• Poˇcet paket˚u:
– < 5:Tok obsahuje m´enˇe neˇz pˇet paket˚u.
– > 5:Tok obsahuje v´ıce neˇz pˇet paket˚u.
• Poˇcet byt˚u:
– stejn´y, nebo dvojn´asobn´y nebo poloviˇcn´ı:Tok m´a stejn´y, nebo dvojn´asobn´y
nebo poloviˇcn´ı poˇcet bajt˚u jako tok pˇredch´azej´ıc´ı.
– rozd´ıln´y:Rozd´ıln´y poˇcet bajt˚u ve 2 toc´ıch.
C´ılov´a IP C´ılov´y port Poˇcet paket˚u Poˇcet bajt˚u Skenov´an´ı
mal´y rozd´ıl v rozsahu stejn´y <5 stejn´y, nebo 2x nebo 12 ANO
stejn´a rozd´ıl <5 <5 stejn´y, nebo 2x nebo 12 ANO
rozd´ıln´a rozd´ıln´y <5 rozd´ıln´y NE
stejn´a rozd´ıln´y <5 rozd´ıln´y NE
stejn´a rozd´ıl <5 >5 rozd´ıln´y NE
mal´y rozd´ıl v rozsahu rozd´ıl <5 <5 stejn´y, nebo 2x nebo 12 ANO
rozd´ıln´a rozd´ıl <5 >5 rozd´ıln´y NE
rozd´ıln´a rozd´ıln´y >5 stejn´y, nebo 2x nebo 12 NE
stejn´a stejn´y >5 rozd´ıln´y NE
mal´y rozd´ıl v rozsahu rozd´ıln´y >5 rozd´ıln´y NE
mal´y rozd´ıl v rozsahu rozd´ıl <5 <5 rozd´ıln´y ANO
stejn´a rozd´ıl <5 <5 rozd´ıln´y ANO
Z tabulky 8.1 jsem vytvoˇril mnoˇzinu tr´enovac´ıch dat. Algoritmus pro vytvoˇren´ı
rozho-dovac´ıho stromu jsem vytvoˇril v jazyce python. ˇC´asti algoritmu jsou pˇrevzat´e z [18]. Po
vytvoˇren´ı rozhodovac´ıho stromu jsem zjistil, ˇze z hlediska oˇcek´avan´eho zisku jsou d˚uleˇzit´e
pouze atributyPoˇcet paket˚uaC´ılov´y port. T´ım by ale nebylo moc moˇznost´ı, jak
ovliv-nit ”citlivost”detekce. Doplnil jsem tedy i dalˇs´ı atributy. ˇC´ast vˇetve v´ysledn´eho stromu je
na obr´azku 8.2 Pakety IP Porty > 5 NE IP IP Počet bajtů .. . > 5 rozdíl < 5 = rozdílný = < 5 rozdílná = != . . . . . . . .
. Počet bajtů Počet bajtů
ANO Podezřelé
Kapitola 9
Implementace
9.1
Popis implementace
Uloˇzen´a data NetFlow zpracov´av´am pomoc´ı nˇekolika skript˚u implementovan´ych pomoc´ı
skriptovac´ıch jazyk˚u Bash a Python. Vytv´aˇret univerz´aln´ı aplikaci je n´aroˇcn´e z nˇekolika
hledisek. Data mohou b´yt um´ıstˇena na r˚uzn´ych syst´emech rozd´ılnˇe. Toto lze ˇc´asteˇcnˇe ˇreˇsit
konfiguraˇcn´ım souborem, kde nastav´ıme v´ychoz´ı adres´aˇre. Ty ale mohou m´ıt rozd´ılnou
adres´aˇrovou strukturu, rozd´ıln´y zp˚usob pojmenov´an´ı, atd. Vytvoˇril jsem nˇekolik skript˚u,
kter´e spojuji do vˇetˇs´ıho celku. D˚uvodem, proˇc jsem vytv´aˇrel mal´e, jedno´uˇcelov´e skripty, je
vˇetˇs´ı univerz´alnost. Data z p´ateˇrn´ı s´ıtˇe VUT tvoˇr´ı z´aznamy hodinov´eho provozu. Tyto
z´aznamy potˇrebuji rozdˇelit na pˇetiminutov´e, ale jin´e syst´emy mohou ukl´adat data jiˇz
v poˇzadovan´em ˇcasov´em rozsahu. Proto m˚uˇze b´yt vˇetˇsina skript˚u vynech´ana a spr´avce
pouˇzije pouze ty, kter´e potˇrebuje pro analyzov´an´ı dat. Sadu skript˚u jsem tedy vytvoˇril
s ohledem na univerz´alnost, ale prim´arnˇe pro zpracov´an´ı dat ze s´ıtˇe VUT. Pro zpracov´an´ı
na jin´ych syst´emech bude pravdˇepodobnˇe potˇreba je pˇrekonfigurovat, pˇr´ıpadnˇe pˇrizp˚usobit.
Data na serveru VUT jsou uloˇzena v t´eto adres´aˇrov´e struktuˇre:
/data/netflow/CESNET.anonymized/yyyy-mm-dd/nfcapd.yyyymmddhhmm
kde yyyy = rok, mm = mˇes´ıc, dd = den, hh = hodina(24h/den), mm = minuta. Tyto
soubory jsou hodinov´e z´aznamy provozu. Nejdˇr´ıve je nutn´e je rozdˇelit na pˇetiminutov´e
z´aznamy.
Pˇr´ıklad rozdˇelen´ı hodinov´eho souboru na pˇetiminutov´y.
nfdump -r /cesta/netflow -t 2009/01/01.00:00:00-2009/01/01.00:04:59 \
-w /kam/ulozit/2009-01-01.00-05
• -r: urˇcuje zdroj NetFlow dat
• -t: filtruje data pouze podle ˇcasov´eho okna zadan´eho jako parametr
• -w: soubor ukl´ad´a jako NetFlow z´aznam do poˇzadovan´eho adres´aˇre (v z´akladn´ım
nastaven´ı jsou z´aznamy vyps´any na standardn´ı v´ystup a nemohou b´yt zpracov´ana
znovu pomoc´ı n´astrojenfdump)
Sch´ema vol´an´ı skript˚u je na obr´azku 9.1.
Pro rozdˇelen´ı hodinov´ych z´aznam˚u NetFlow slouˇz´ı skript split.sh. Pomoc´ı n´astroje