1 Tartalomjegyzék 1 Előszó Bevezetés Behatolás észlelő rendszerek IDS-ek szerepe Egyszerű architektúra Csoportosítás Detektálható támadások Felderítés...
1 Előszó A szakdolgozatom egy részében a hálózatot érő napi szintű támadások elméleti hátterét és rövid szintű kivitelezését is tartalmaz. Szeretném mindjárt az elején tisztázni, hogy a dolgozatom hangsúlya és célja a támadások felismerése, jobb megértése és kivédése, nem pedig a támadások kivitelezése. A támadások kivitelezése egyébként sem teljes részletességű. A támadásokat az iskola laborjában végeztem, és a hálózattól elszeparált tesztkörnyezetben a belső konzulensem és a rendszergazda engedélyével.
3
2 Bevezetés A számítógépes infrastruktúra dinamikus fejlődésével és szerepének növekedésével megnőtt az általuk tárolt információk értéke és ez által az ezek elleni támadások száma is. Ma már minden vállalatnál megtalálhatóak az antivírus alkalmazások, tűzfalak és spam szűrők, amik az infrastruktúrát védik. Ezek azonban hatalmas információ mennyiséget hoznak létre behatolási kísérletekről, amit az ember nem képes már feldolgozni. Ha elolvassuk bármelyik éves biztonsági riportot a nagy cégektől (pl.: Cisco, McAfee, Trend Micro stb.), észrevehetjük, hogy az évente megjelenő vírusok, támadások, és adatlopások száma fokozatosan nő. Az antivírus programok és behatolás érzékelő rendszerek csak annyira hatékonyak, amennyire a mintájuk jó. Az AV Comparatives riportja [1] alapján 98%-os eredményt ért el a legjobb antivírus szoftver a kézi szkennelés során, már ismert vírusok ellen. Ez a szám máris 67%-ra esik, ha proaktív esetet nézzük (még az adatbázisban nem szereplő mintákra értendő) [2]. Gondoljunk csak bele, hogy mennyi idő telik el egy sebezhetőség bejelentése és a patch megjelenése között és milyen tájékoztatást kapunk erről. A Microsoft például minden hónap második csütörtökén teszi elérhetővé a hibajavításokat. De addig is, hogyan tudjuk meg, ha behatolás történt? Vagy hogyan tudjuk meg, ha még ismeretlen sebezhetőséget használnak a támadás során? A naplófájloktól és az IDS rendszerektől remélhetjük a segítséget. De látjuk-e az összképet? Ebben segít nekünk a vizuális megjelenítés. Ugyanis egy kép felér ezer szóval, tartja a közmondás. A naplófájlok képi megjelenítése sok részletet elárulhat, és jobb megértést adhat, mintha csak a fájlok bejegyzéseit néznénk vagy a behatolás érzékelő rendszerekre hagyatkoznánk. Munkám során ennek hasznosságát mutatom be egy általam készített tesztkörnyezetben. Szakdolgozatom négy részből áll, melynek első részében összefoglalom a behatolás érzékelő rendszereket: mi a szerepük, milyen felépítéssel rendelkeznek, milyen csoportba oszthatóak be, milyen támadásokat detektálhatunk segítségükkel és mik a korlátaik. A második részben a vizuális megjelenítését és a támadások összekapcsolását veszem szemügyre: milyen problémákkal kell szembenéznünk a megjelenítés során? Mikor milyen vizuális megjelenítést alkalmazzunk? Természetesen kitérek arra is, miképp kapcsolódik össze a behatolás észlelés és a képi megjelenítés. 4
Ezután bemutatom az általam készített tesztkörnyezet felépítését és elkészítését. Mely programokat, operációs rendszereket, egyedi szkripteket, szabályokat, dekódolókat, és a képi megjelenítéshez szükséges értelmezőket használtam ennek kialakítására. Hogyan kell az OSSEC-hez dekódert és szabályt írni. Hogyan működnek az általam megírt shell szkriptek. A negyedik részben bemutatom a tesztkörnyezetben végrehajtott támadásokat és a támadások elleni védekezésmódokat. A támadások az Interneten bárki által elérhető információkból származnak és egy kis tudással kivitelezhetőek. Olyan támadásokról lesz szó, mint a nem frissített böngésző sebezhetőségének kihasználása, switch CDP protokoll hibájának kihasználása, FTP és Drupal brute force, és port szkennelés stb. Szeretném itt leszögezni, hogy célom a támadások felismerése, jobb megértése és kivédése, nem pedig a támadások kivitelezése. Legvégül az egyes támadások hálózati forgalmából az általam írt átalakítókkal képeket készítek, és az így létrejött képeket elemzem. A szakdolgozat végére pedig megbizonyosodhatunk arról, hogy egy kép felér egy több ezer soros naplófájllal!
5
3 Behatolás észlelő rendszerek 3.1 IDS-ek szerepe Egy eszköz vagy szoftveralkalmazás, ami folyamatosan figyeli a hálózatot és vagy a rendszert, hogy történik e rosszindulatú aktivitás vagy házirend áthágása és jelentést készít erről. A behatolás érzékelő rendszerek (IDS) szerepe az elsődleges védelmi rendszerek kiegészítése a rosszindulatú tevékenységek azonosításával és jelzésével, esetleg annak megakadályozásával (ekkor már IPS-ről beszélünk). A támadások négy csoportba oszthatóak: külső támadó az Internet felől, külső támadó a vezeték nélküli hálózat felől, belső támadó a vezetékes hálózatról, belső támadó vezeték nélküli hálózatról. Maguk a támadások lehetnek strukturáltak és strukturálatlanok. A strukturálatlan támadást kevésbe képzett támadók hajtják végre már ismert exploitokkal, akik nem is értik az eszközök működését és kevésbé motiváltak is. A strukturált támadásnál a támadó jól ismeri az eszközök működését, és erősen motivált az információ megszerzésében. A kár értéke jóval nagyobb ilyenkor.
1. ábra. Egy hálózat általános logikai felépítése A támadásokról az alapvetően négy zónában elhelyezhetett szenzoroktól kapunk információt, melyek a következőek: Perimeter hálózat, DMZ, Vezeték nélküli hálózat és intranet. A hálózat alapú behatolás érzékelő rendszerek TAP-ra vagy switch SPAN portjára kötve az egész forgalmat látják.
6
3.2 Egyszerű architektúra
2. ábra. IDS architektúra [3] A négy helyen elhelyezett érzékelők, mint például a tűzfal, router, switch, munkaállomás szolgáltatják az információt a behatolás érzékelő rendszerek felé. Az aggregálás során a különböző helyről érkező naplófájlok összegyűjtését és normalizálását értjük, valamint közös formátumra alakítását. A korrelálás feladata az egymással összefüggő események megkeresése és kapcsolatok felismerése. Ezeket menti az alkalmazás az adatbázisba, ami alapján készíti el a jelentéseket vagy a szabályokon keresztüli analizálással, riasztásokat küld a behatolásokról.
3.3 Csoportosítás A szakirodalom információ forrás alapján, elemzési technika és válasz alapján sorolja csoportba az IDS rendszereket. Információ forrás alapján megkülönböztetünk hálózat alapú, hoszt alapú, alkalmazás alapú és mézes csupor (honeypot) rendszereket. Elemzési technika alapján minta alapú és anomália módszereket ismerünk. Válasz alapján aktív és passzív rendszerekről beszélünk. A hálózat alapú IDS az adott hálózati szegmens forgalmát vizsgálja. TAP eszközön keresztül vagy a switch SPAN portjára kötve kapja meg a teljes forgalmat, így jelezni tudja a folyamatban lévő támadást. A hoszt alapú ezzel ellentétben, egy adott számítógépen található információkat dolgozza fel. Vizsgálja a beállítások, fájlok megváltozatását, jogosultság kiterjesztését stb. jelezve a megtörtént betörést. Az alkalmazás alapú a hoszt alapúnak egy speciális alfaja, amely az alkalmazás ellen irányuló támadásokat vizsgálja. A honeypot pedig nem más, mint egy csali, ami leutánozza valamilyen rendszer vagy alkalmazás viselkedését. 7
A minta alapú a hálózati forgalomból a már ismert támadások mintáival összevetve ismeri fel az egyes támadásokat közel valós időben. Az anomália detektálás történhet statisztikai módszerek alapján, küszöb szintek alapján vagy a normálistól eltérő viselkedés alapján. A statisztikai módszer során a forgalom hosszabb idejű rögzítésével megállapítják a normális viselkedést, majd ebből a statisztikai érték normál értékét. Az ettől eltérő érték alapján riaszt a rendszer, emiatt kiválóan alkalmas a még ismeretlen támadások jelzésére. A küszöb szint módszernél a protokollokra jellemző mérőszámokat keresünk, amikhez határértéket rendelünk. Ha eléri vagy meghaladja az értéket, akkor cselekszik a rendszer. A legutolsó módszernél a protokolltól eltérő viselkedés betörési kísérletre adhat okot. Például egy pop3 kapcsolatnál egy egyedi parancsot behatolásként érzékelhet. Aktív válasznak tekintjük, ha beavatkozik (blokkol, támad, adatot gyűjt), és passzívnak, ha csak riasztást küld a támadásról.
3.4 Detektálható támadások Képes a hálózati támadásokat [4] (felderítés, hozzáféréses támadások, szolgáltatás megtagadás) érzékelni, de csak olyan mértékben, amennyire a minták jók vagy a statisztikai módszerek kellően kiszámítottak.
3.4.1 Felderítés A felderítés során a támadó a cél hálózatról és az ott használt alkalmazásokról keres információkat. Ilyen lehet az SNMP lekérdezések, port szkennelések vagy alkalmazás verzió keresése. Ezt a rendszergazdák gyakran figyelmen kívül hagyják vagy betudják hálózati zajnak, de ez gyakorlatilag a támadás előfutára.
3.4.2 Hozzáféréses támadások Ahogy a neve is mutatja, ez a cél gép vagy gépekhez történő jogtalan hozzáférés. A felderítés során fellelt információk alapján jogosulatlan hozzáférést szerezve az alkalmazáshoz vagy rendszerhez. Három típusát különböztetjük meg: adat lopás, rendszer hozzáférés és jogosultsági szint emelése. Adat lopás: információ jogosulatlan olvasását vagy másolását értjük ez alatt. Pl.: rosszul konfigurált Windows megosztáson lévő fájlok másolása.
8
Rendszer hozzáférés: operációs rendszer szintű vagy felhasználói szintű hozzáférés szerzése olyan rendszerre, ahol még a támadó nem rendelkezett ezzel. Pl.: gyenge jelszó használata FTP szolgáltatásnál. Jogosultsági szint emelése: magasabb jogosultság kiterjesztése vagy megszerzése a támadó által már hozzáfért rendszeren. Pl.: alkalmazás sebezhetőségének kihasználása exploittal.
3.4.3 Szolgáltatás megtagadás A támadás során a működő szolgáltatás működésének megakadályozása a célja. Ez gyakran a szolgáltatás, kérésekkel túlterhelését jelenti, így nem képes válaszolni a kérésre.
3.5 Korlátok A behatolás érzékelő rendszerek nem képesek mindent felismerni, korlátai közé tartoznak a szoftver hibák, a hatékonyságot csökkentő nagy forgalom, szignatúra adatbázis mérete, és a támadások elrejtésére szolgáló technikák (evasion). Egy HP TippingPoint S1200N IPS A7500 modul áteresztőképessége 1.3GB/s [5]. A támadások elrejtésére használt technika a fragmentáció vagy kis csomagok küldése, ekkor a csomagot kisebb részekre darabolják, amire a minta nem fog illeszkedni. Ugyanígy, ha a kódot összekuszálják (obfuscation), egyéb sztring manipulációt végeznek vagy polimorf a shell kód, nem lesz riasztás. Hamis csomagok küldésével vagy szolgáltatás megtagadásos támadás során elárasztják az IDS-t, akkor túl sok riasztást kell ellenőrizni. Legismertebb IDS-ek: SourceFire Snort, Trend Micro OSSEC, Tripwire, IBM Proventia, Cisco IDS, HP TippingPoint IPS, Suricata, CheckPoint IPS, Juniper IDP. A manapság elérhető behatolás érzékelő rendszerek többsége hálózat alapú csoportba tartoznak, és aktív válasszal is rendelkeznek. A fejezet végére egy tiszta képet kaptunk arról, mi is a behatolás érzékelő rendszer, hogyan is épül fel és mire is használható. A csoportosítás alapján meg tudjuk indokolni, hogy melyik IDS-t érdemes választanunk, továbbá hol és hogyan helyezhető el egy ilyen rendszer. Azonban tisztában vagyunk azzal is, hogy mik a korlátai és milyen támadásokra képes figyelmeztetni bennünket.
9
4 Vizualizálás Az információ elég gyakran szöveg formájában van kódolva. Ezt elég nehéz feldolgozni és sok időbe is telik. A mai világban az információ mennyisége nem kevés, amit naponta fel kell dolgoznunk. Itt jön segítségünkre a vizuális megjelenítés, amivel nagy mennyiségű adatot vagyunk képesek könnyedén és megfelelően átadni a másik félnek. A színek, alakzatok, méretek és pozíció teszi rendkívül hatékonnyá az információ átadását. Az emberi vizuális rendszer pedig hatalmas, erős mintakereső rendszer és sokkal könnyebben dolgozza fel a képet, mint a szöveget. Gondoljunk csak bele, hogy egy több ezer soros szöveget akarunk olvasni vagy egy szép színes képet néznénk meg? Szerintem egyértelmű a válasz. Az emberi érzékelésnek megvannak a saját szabályai. Könnyen észreveszünk bizonyos formákat, színeket, míg másokat kevésbé. Az észrevehetőséget és megfelelő információ átadást a vizuális tulajdonságok megfelelő aránya és megválasztása adja. Ahhoz, hogy maga a kép elérje a célját, be kell tartanunk néhány szabályt a vizuális tulajdonságok alkalmazásakor. A vizuális tulajdonságok négy csoportba oszthatóak: megfelelő alak, szín, pozíció és mozgás. kiválasztásával könnyen értelmezhető és az információt megfelelően átadó képeket készíthetünk. Az alak állhat méretből, tájolásból és formából. A szín két tulajdonsággal rendelkezik: árnyalat és intenzitás. Az emberi agy azonban nem könnyen dolgoz fel bizonyos kombinációkat, ezért megkülönböztetünk lényeges és elválasztható dimenziókat. Míg az előbbit használhatjuk együtt, addig az utóbbit nem. Például: egyik téglalap világos, a másik sötét vagy az egyik információ téglalapnak, a másik körnek feleltethető meg. Ezeket az agy könnyen megkülönbözteti. Két fontos Mackinlay elvet kell ismernünk a könnyen érthető és világos grafikonok létrehozásához. A kifejező és hatásos. Ha nem használjuk megfelelően ezeket az elveket, könnyen zavaró grafikonokat hozhatunk létre. Az első esetben a tények csoportja kifejezhető vizuális nyelven, ha az állítások a nyelvben kifejezik az összes tényt az adatokból, és csak is a tények. A második elv pedig kimondja,
10
hogy a megjelenítés hatékonyabb minden más megjelenítéstől, ha az információ az egyik által szállítva könnyebben észrevehető, mint a másik megjelenítés által.
4.1 Általános tervezési elvek Grafikonok tervezésekor a következő alapelveket tartsuk be: 1. A nem adatokhoz használt festék csökkentése 2. Különböző attribútumok 3. Gestalt elvek 4. Kivételek kiemelése 5. Összehasonlítások bemutatása 6. Jegyzetek az adatoknál 7. Okviszony megmutatása Betartva ezt a hét szabályt, észrevehetjük, hogy esztétikailag fejlődnek és sokkal kifejezőbbé, érthetőbbé válnak grafikonjaink. Az első szabály, a grafikonon ábrázolt adatok megjelenítéséhez használt festék, ne haladja meg az egész grafikon kirajzolásához használt festék felét. Például: ne adjunk felesleges vonalakat, se hátteret stb. a grafikonhoz. A második szabálynál tartsuk észben, hogy egy érzékeléshez számos az információ kódolására használatos tulajdonság kapcsolódik. Több adat dimenziókban történő megjelenítésekor ne lépjük túl az öt értéket. Például formák használatánál ne használjuk több mint öt színt. Harmadik szabály a Gestalt elvek. Hat ilyen elvet alkalmazhatunk a minták felismerésének meggyorsításához. Közelség: egymás közelében lévő objektumok csoportosítását egységként kezeljük. Zártság: majdnem teljesen zárt alakra az ember képes zártként tekinteni. Pl.: megszakított kör. Emiatt nem szükséges a szöveg mellett elhelyezkedő grafikonokat határoló vonallal ellátni.
11
Hasonlóság: legyen az méret vagy szín, vagy bármi egyéb, a hasonló kinézetű elemeket egyként tudjuk kezelni. Például mindegyik grafikonban a nem megengedett tevékenységek piros színnel jelölésével automatikus kapcsolatot hozunk létre. Folytonosság: az összehangolt elemeket egy egységként kezeljük. Kerítés: határoló vonallal bekerítve a hasonló adat pontokat vagy beletéve őket valamilyen formába, csoportosítjuk azokat a pontokat. Összefüggés: a kapcsolattal rendelkező elemek, csoportosítják magukat. Negyedik szabály, hogy mindig emeljük ki a kivételeket. Például piros négyzettel emeljük ki a képen a kivételt képező adatokat. Ötödik szabály az összehasonlítások bemutatása. Ne csak az elemzendő grafikont jelenítsük meg, hanem egy átlagos viselkedést is vagy ugyanazt csak más időpontban. Ezzel, sokkal könnyebben felismerhetőek az anomáliák és kivételek. Hatodik szabályként tegyünk jegyzetet a grafikonokban, de csak mértékkel. A címke nélküli tengelyek nem sokat segítenek az értelmezésben. Hetedik szabály az okviszony megmutatása. Ne csak maga a probléma szerepeljen a grafikonon, hanem legyen lehetőség magát a probléma gyökerét is felfedezni rajta. Ha szükséges, akkor több grafikon segítségével is megtehetjük ezt. Gyakori probléma, hogy a naplófájlok nem teljes információkkal szolgálnak. Olyan problémákkal
kell
szembenézni,
mint
a
hiányzó
naplófájlok,
meta
adatok,
naplóbejegyzések, nem megfelelő idő és a forrás cél keverése. Mindegyik alkalmazás másképp naplózza az eseményeket (ha naplózza egyáltalán), és gyakran más-más időzónát használnak.
4.2 Diagramok és ábrák A grafikon megtervezéséhez szükséges elvek és szabályok után lássuk, hogy melyik grafikont mikor lehet és érdemes használni, mik az előnyei és hátrányai. A mellékletben pedig egy táblázatban összefoglalom ezeket.
12
A szakdolgozatomban nem kívánok az összes grafikonról írni, csak a következőkről: 1. Egyszerű diagramok: a. Kördiagram b. Oszlopdiagram c. Vonaldiagram 2. Halmozott diagramok: a. Halmozott kördiagram b. Halmozott oszlopdiagram c. Halmozott vonaldiagram 3. Hisztogram 4. Pont diagram 5. Irányított gráf 6. Fatérkép (Treemap)
A táblázatok az adatok eloszlását vagy egy, vagy több mező közötti kapcsolatot mutatják. Ezeket az adatokat négy általános típusba oszthatjuk: kategorikus, sorszám, intervallum és arány. Az adatok típusa nagyban meghatározza, milyen táblázatban használhatjuk fel őket. Kategorikus adatoknak nevezzük, amelyek két vagy több kategóriával rendelkeznek. Ezek lehetnek diszkrét vagy névleges. Ilyen például a TCP flagj-jei vagy a tűzfal tevékenysége a blokkolt és engedélyezett. Ha a kategorikus adat értékei sorrendben definiáltak, akkor sorszámokról beszélünk. Például a súlyosság értékei. Az intervallumot a folytonossággal vagy a skálán mérhetjük meg. Például mettől meddig nem volt hálózati elérés. Az utolsó típus az arányszám. A színek használatával nem csak esztétikailag szépítjük a táblázatot, hanem a kapcsolatot is megmutatatja az adatok között. A színekkel az a gond, hogy a hasonló színeket nehéz megkülönböztetni, ezért leggyakrabban egy kis részét a kategorikus adatoknak szoktuk megjeleníteni vele. Ha túl sok színt használunk, akkor összezavarhatjuk vele a nézőt. Kiválóan alkalmas még a folyamatos adatok reprezentálására. A jelmagyarázatban a színekhez tartozó értéket meg kell adni.
13
Méret, alak és tájolás Egy másik lehetőség a kapcsolatok kifejezésére a méret, alak és tájolás használata. Ugyanúgy használható és ugyanaz a gond itt is, mint a színeknél, hogy nem állapítható meg a pontos adat. Például nagyobb kör, több kapcsolódást jelent. Egyszerű diagramok A legegyszerűbb módja az adatok megjelenítésére a táblázatok. Ezek lehetnek kör, oszlop, vonal és 3D oszlop diagramok. Ezeket általában csak egyféle adat kapcsolatára használjuk, kivéve a 3D oszlopdiagramot, amit kettőre is. Kördiagram A legjobban az értékek, mint az egészhez képest arányok vagy százalék összehasonlítására. Kategorikus adatot lehet vele megjeleníteni, vagy ha nem túl sok értékkel rendelkezik, akkor folyamatos értéket is lehet vele. Ha túl sok érték található a grafikonon, akkor hamar olvashatatlanná válik. Oszlopdiagram Az értékek előfordulásának gyakoriságát és azok kapcsolatát mutatja meg. Egyértelmű és könnyen összehasonlíthatóvá teszi az adatokat az oszlopok magasságával. Csak kategorikus adatokon használjuk, és ha csak lehetséges az y tengely kezdődjön nullával. Vonaldiagram Intervallum adatok megjelenítésére használatos. Kiválóan mutatja a trendeket. Például egy időt használó diagramon a lefelé vagy felfelé ívelő trendek egyszerűen leolvashatóak. Halmozott Diagramok Ha több mint egy adatot teszünk az egyszerű diagramunkba, akkor gyakran használjuk a halmozott diagramokat, amit így zavaró értelmezni. Helyette át lehet tenni őket más jobban kifejező diagramokba. Halmozott kördiagram Az egyes értékek további értékekre és azok kapcsolatára bontott. Ez a fajta diagram nagyon megtévesztő tud lenni, mert a külső részek nagyobbak lehetnek, mint a belső, még 14
akkor is, ha ugyanazt az értéket veszik is fel. Ezért a legcélszerűbb, ha a szeletekhez odaírjuk a százalékot is. Halmozott oszlopdiagram A sima oszlopdiagram egyik variációja, ahol megjelenik egy plusz kapcsolat a részekre osztott oszlopok miatt. Ezzel alkalmassá téve az adatok összehasonlítására. Használjunk azonban óvatosan, mert ez a fajta diagram is megtévesztő lehet a skála leolvasását tekintve. Halmozott vonaldiagram A vonaldiagramot módosítjuk, és egynél több adatot elhelyezünk benne, akkor megkapjuk a halmozott vonaldiagramot. Akár egyszerre három adatot is összevethetünk. Hisztogram Az adatok eloszlását mutatja meg. Nagyon hasonlít az oszlopdiagramhoz, de a hisztogrammal folyamatos adatot is meg tudunk jeleníteni. Kiválóan alkalmas a tüskék kimutatására. Például a bejelentkezéseket az idővel együtt hisztogramban ábrázolva. Pontdiagram Sorszámok vagy folyamatos adatok megjelenítésére alkalmas. Két adat kapcsolatára vagy csoportok és trendek felderítésére használjuk a legtöbbször. Ha az x tengelyt az időnek vesszük, akkor úgynevezett menetrendet kapunk, amivel az időbeli trendek ismerhetjük fel. Irányított gráf A kapcsolatok legjobb vizuális megjelenítésére az irányított gráf a legalkalmasabb. Csomópontokból és az azokat összekötő élekből áll. A nyíllal megadjuk a kapcsolat irányát. Szinekkel, alakokkal és az élek vastagságával további adatokat lehet megjeleníteni. A legnagyobb kihívás a gráfok csomópontjainak elhelyezésével van, hogy ne takarják egymást és a hasonlóak egy csoportba legyenek. Három fajta típust említenék itt meg: körkörös, spring és hierarchikus. A körkörös kialakítás során a csomópontok csoportját koncentrikus körökben helyezik el. A rugó alap algoritmusnál az csomópontokat összekötő élek rugóként viselkednek. Új él elhelyezésével a gráf egyensúlyi helyzetre törekszik, így a kapcsolódó csomópontok közelebb kerülnek egymáshoz és a régi élek visszahúzzák az új éleket. A hierarchikus 15
magáért beszél és csak kevés adattal használható, különben túl lapos és széles lesz a gráf. Egyetlen hátránya a megjeleníthető csomópontok száma. Egyrészt zsúfolttá és olvashatatlanná teszi a gráfot, másrészt túl sok időbe is telik az elkészítése. Ezt lehet aggregációval (egyesítés). Ez azt jelenti, hogy az egyes csomópontok egy csomóponttá lehet alakítani. Egyetlen hátránya az egyesítésnek az információvesztés. Fatérkép (Treemap) Több adat közötti kapcsolatok megjelenítésére egy jó alternatíva a fatérkép. Hierarchikus vagy fa struktúrát készít az adatok összerakásából. A csomópontok leveleibe méret és színek felhasználásával kódol bizonyos tulajdonságokat. Hasznos, amikor különböző csomópontokat vagy alfákat kell összehasonlítani különböző mélységekben, vagy mintákat és kivételek kell keresni. Egyik előnye, hogy hierarchia alapon mutatja a kapcsolatokat. Másik nagy előnye, hogy egyszerre több kapcsolatot is képes megjeleníteni. Harmadik nagy előnye, hogy a csomópontokat könnyű észrevenni. A háromdimenziós nézetekkel nem foglalkozok, mert két nagy hátrányuk miatt nem érdemes használni. A plusz tengely miatt zavaró és gyakran lehetetlen leolvasni egy adott pontot. Valamint megnehezíti a kapcsolat értelmezését is, mert könnyebb félreértelmezni a látottakat.
4.3 A megfelelő diagram kiválasztása Ahhoz, hogy ki tudjuk választani a megfelelő diagramot, meg kell válaszolnunk néhány kérdést. Meg kell határoznunk hány adat között akarunk kapcsolatot megjeleníteni, a megjelenítendő adatok mennyiségét, melyik négy csoportba tartozik az adatunk. Raffael Marty az Applied Security Visualization [6] könyvében egy táblázatot és egy folyamatábrát adott közre, aminek a segítségével könnyen kiválaszthatjuk a megfelelő grafikont.
A
következő
weboldal
is
segít
ennek
kiválasztásában:
http://chartchooser.juiceanalytics.com.
4.4 Vizualizáció folyamata Raffael Marty az Applied Security Visualization könyvében ír az általa létrehozott 6 lépésről, amiből az információ megjelenítése áll [6]. A lépesek a következőek: 1. Definiáljuk a problémát 2. Elérhető adat felbecslése 16
3. Információ feldolgozása 4. Vizuális transzformáció 5. Nézet transzformációk 6. Értelmezés és döntés. Először is meg kell határoznunk a kérdést, mire szeretnénk választ kapni. A vizualizálásnak soha nem szabad adat vezéreltnek lenni! Mindig használat esetinek kell lenni! Mi az, amit meg szeretnénk érteni, átadni vagy felfedezni? Gépek közötti kapcsolatokat? Melyik gépről jelentkeztek be a legtöbbször hibás jelszóval? Ha megvan a kérdés,
meg
kell
néznünk,
milyen
naplófájlokkal
rendelkezünk
a
kérdés
megválaszolásához és össze kell gyűjtenünk a számunkra megfelelőket. Ekkor szembesülhetünk az első problémával, mégpedig hogy nincs. Vagy nincs bekapcsolva a naplózás vagy nincs is rá lehetőség. Ha nincs, akkor más módon kell naplófájlhoz jutnunk. Vagy a hálózati forgalmat vizsgáljuk vagy megkérjük az alkalmazás készítőjét, hogy írjon hozzá. Ha rendelkezünk, akkor meg kell vizsgálni, hogy több soros vagy egy soros bejegyzéseket tartalmaz. A több soros bejegyzésekből a szükséges információk feldolgozása sokkal nehezebb. Vegyünk egy tűzfal naplót. Meg kell találnunk hol található a cselekvés kimenetele és hol van az IP cím. A kettő lehet két külön sorban is. Ezek után meg kell vizsgálnunk mit is tartalmaznak. A naplófájlok sajnos nem egyformák és nem is a megfelelő formátumban állnak rendelkezésre. Mivel nem csak azokat az információkat tartalmazhatják, amikre nekünk szükségünk van, ezért még szűrni is kell a naplófájlokat. Nem is biztos, hogy értjük mindegyik mező lényegét, de nincs is rá szükség, amíg tudjuk milyen kérdésre akarunk választ kapni. Ha anomáliákat keresünk, akkor is tegyük fel minél több kérdést, hogy mire vonatkozóan keressük azokat. Ráadásul az egyes vizualizációs programok egyrészt nem rendelkeznek konvertáló eszközökkel, másrészt nem is egyfajta bemeneti fájlt várnak, hanem több különböző formátumban várják az adatokat. Az egyik gond, hogy nem létezik se szabvány se ajánlás a fájlok felépítésére vonatkozóan. Jól megfigyelhető, hogy a tesztkörnyezetem és a képek elkészítéséhez mennyi szkriptet kellett megírnom. Az információk azonban gyakran nem teljesek. A fentebb már említett nem létező naplón kívül a következő esetekkel kerülünk szembe: nincs benne az az adat, amire szükségünk van, mert nem lehet beállítani, hogy tartalmazza vagy nem volt beállítva. Ha tartalmaznak időpontot a fájlok, akkor sem biztos, hogy egyformák, ha összevetjük őket. Különböző időzónákat és eltérő hosszúságú időt tartalmazhatnak. Az egyik például csak 17
óráig tartalmazza, a másik meg másodpercre pontosan. A következő probléma a forrás cél meghatározása. Két különböző naplóbejegyzés akár tartozhat egy kapcsolathoz is, nem biztos, hogy különböző kapcsolatnak minősül. Emiatt figyelni kell az egymáshoz tartozó kapcsolatokat, amikor információt szedünk ki a naplóbejegyzésekből. Az egyes hálózati forgalmat figyelő eszközök sem egyforma formátumban és sorrendben mentik el az a csomagokat. Ha ezek után is túl sok az információ, akkor használhatjuk a felhalmozást (aggregation). Például a portokat csoportosíthatjuk 1024 alatti és fölötti portokra vagy az IP címeket osztályok szerint csoportosítjuk. De nem is kell az egész naplófájlt megjelenítenünk. Meg is szűrhetjük előzetesen a naplófájlokat. Például ha proxy forgalmára vagyunk kíváncsiak, akkor minden mást vegyünk ki belőle. Ha esetleg kevés lenne, adhatunk is hozzá adatokat. Olyanra kell gondolni, mint a földrajzi helymeghatározás, vagy DNS név stb. Miután kinyertük a nekünk szükséges naplóbejegyzéseket a megfelelő formában, végre megjeleníthetjük őket valamilyen képi formában. Például irányított gráfokkal. Az 5. lépésben, ha szükséges tovább finomíthatjuk az értékeket szűréssel, csoportosítással vagy újra is generálhatjuk a képet, és más fajta grafikonokat is gyártunk. Az utolsó lépésben pedig a kapott képeket összevetjük és értelmezzük. A tesztkörnyezetben a színezést és a nagyság megfelelő megválasztását tudom kihasználni, a többit ugyanis az alkalmazások elvégzik. Az egyes diagramok közül a fatérképet és az irányított gráfokat használom fel. A fejezet végére érve megtudtuk hogyan lehet egy képpel a legtöbb információt a leghatékonyabban átadni. Megismerkedtünk a legfontosabb alapelvekkel és adattípusokkal. Sorra vettük az alapvető grafikonokat és alkalmazási területeit. Megnéztük a vizualizálás lépéseit és a leggyakrabban felmerülő problémákat.
4.5 Kettő összekötése Rendelkezünk naplófájlokkal és tudjuk, hogy mikor melyik grafikont érdemes használni és milyen tulajdonságokkal. Ha a naplófájlokból elkészítjük a megfelelő grafikonokat, akkor a következőket fogjuk tapasztalni.
18
Választ kapunk a feltett kérdésünkre. Minden egyes feltett kérdésünkre létrehozzuk a rendelkezésre álló információkból a képet, amelyek megadják a válaszokat és a kapcsolatokat. Új kérdéseket vet fel. A kép akár újabb kérdéseket is felvethet, például miért kapcsolódik a szerver egy ismeretlen porton a külső IP címre vagy miért van kapcsolat két gép között. Felfedezhetjük és kutathatjuk az adatokat. A vizuális megjelenítéssel egy újfajta nézetet kapunk az információk vizsgálatához, aminek segítségével eddig még ismeretlen összefüggéseket is észrevehetünk. A különbözőképpen elkészített képekkel újabb betekintést nyerünk az adatokhoz és felfedezhetünk vele anomáliákat is. Segít a döntésekben azáltal, hogy átláthatóvá teszi és gyorsan elemezhetővé a hatalmas naplófájlokat. Hatékonyabb az információ kommunikációja. Egy képet könnyebben, hatékonyabban megértünk és feldolgozunk, mint egy több ezer soros szöveges fájlt. Színek és formák használatával pedig könnyebben észrevehetjük a kapcsolatokat. Hatékonyság növelése. A naplófájlok elemzésének ideje csökken, több időt hagyva a megértéséhez, így növelve a hatékonyságot.
19
5 Tesztkörnyezet, saját munka és használt eszközök Az egyes támadások károkozás nélküli kivitelezéséhez szükséges egy tesztkörnyezet létrehozása. Ezt a környezetet az iskola egyik laborjában készítettem el. A megvalósításhoz szükséges menedzselhető és SPAN konfigurálására alkalmas swtichekre és virtualizálásra alkalmas számítógépekre van szükség. A virtualizáláshoz az Oracle VirtualBox szoftverét használtam, aminek segítségével a fizikai gépeken Windows és Linux disztribúciókat virtualizálok különböző szolgáltatásokkal. A támadások miatt telepíteni kell a DHCP, FTP, SSH, Web szolgáltatásokat az egyes virtuális gépekre. Ezek általában átlagos telepítések, egyszerű beállításokkal, így nem minden beállítást írok le. Az informatikai infrastruktúra hálózati elrendezését a PacketTracer nevű szoftver segítségével készítettem el és a következőképpen néz ki.
3. ábra. Tesztkörnyezet logikai hálózata
20
A switchek Cisco Catalyst 3550 XL 12.0(5.3)wc(01) IOS verzióval. A bal oldali switch fa0/13 interfészén kapcsolódik a középső switch fa0/13-as interfészére, és az fa0/15-ös interfészén az alsó switch fa0/15-es interfészére. A középső switch fa0/15-ös interfészen kapcsolódik az alsó switch fa0/13-as interfészéhez.
4. ábra. Tesztkörnyezet fizikai összekötése A VLAN-ok központi menedzselésére a VTP protokollt használtam, melynek domain neve Szakdoga. A szerverekhez közelebbi switch a kitüntetett szerver (Switch0 a képen), a többi kliens módban üzemel. Az 1-es VLAN-ba tartozik mindegyik gép és nem rendelkezik IP címmel. A középső switch egyes interfészére van kötve az IDS, ami SPAN portként van bekonfigurálva. Ahhoz, hogy működjön, nem szabad IP címmel rendelkeznie a VLANnak. A 3,5,7,13 és 15 interfészek és az 1-es VLAN forgalmát kapja meg. Ehhez be kell lépnünk az egyes interfész menüjébe, és a port monitor parancs segítségével meg kell adnunk a figyelni kívánt interfészeket és a VLAN-okat. Az ellenőrzéshez használjuk a show port monitor parancsot. Switch(config)# interface fastethernet 0/1 Switch(config-if)# port monitor fastethernet 0/3 Switch(config-if)# port monitor fastethernet 0/5 Switch(config-if)# port monitor fastethernet 0/7 Switch(config-if)# port monitor fastethernet 0/13 Switch(config-if)# port monitor fastethernet 0/15 Switch(config-if)# port monitor vlan 1
21
Switch#show port monitor Monitor Port
Port Being Monitored
---------------------
---------------------
FastEthernet0/1
VLAN1
FastEthernet0/1
FastEthernet0/3
FastEthernet0/1
FastEthernet0/5
FastEthernet0/1
FastEthernet0/7
FastEthernet0/1
FastEthernet0/13
FastEthernet0/1
FastEthernet0/15
VTP használatához meg kell adni a három mód közül, miként funkcionáljon a switch, majd be kell állítani a trunk-öt a switchek között. Esetünkben a középső switch a szerver, és a másik két switch pedig kliens üzemmódban van. Ehhez lépjünk be a VLAN adatbázis menedzsment felületre, majd adjuk meg a VTP módjának a szervert és a Szakdoga domain nevet. Switch#vlan database Switch(vlan)#vtp server Switch(vlan)#vtp domain Szakdoga A trunk beállítása a következőképpen történik. Switch#conf t Switch(config)#int fa0/1 Switch(config-if)#switchport mode trunk
A VTP beállítások ellenőrzéséhez használjuk a show vtp status parancsot. Switch#sh vtp status VTP Version :2 Configuration Revision :6 Maximum VLANs supported locally : 254 Number of existing VLANs :7 VTP Operating Mode : Server VTP Domain Name : Szakdoga VTP Pruning Mode : Enabled VTP V2 Mode : Enabled VTP Traps Generation : Disabled MD5 digest : 0xF3 0xE6 0xF0 0xF3 0x3C 0x33 0xCD 0x97 22
Configuration last modified by 0.0.0.0 at 3-1-93 01:13:08 Alapértelmezett beállításokkal engedélyezett a CDP és STP protokoll. Az STP protokoll gondoskodik a hurkok megszüntetéséről. A CDP pedig a támadáshoz szükséges. Figyelni kell a Windows 2008 R2 virtuális gép DHCP szolgáltatására, mert az első bekapcsoláskor ezt észlelik a switchek és elkezdenek vele kommunikálni. Ilyenkor az interfészek IP címet kapnak, emiatt azonban nem működik a SPAN beállítás. Ilyenkor meg kell szüntetni az egyes VLAN-ok IP címeit. Az IDS kivételével a szerverek, a kliens és a támadó gép is virtuális gép. A virtualizációt az Oracle VirtualBox szoftverével végeztem. Ahhoz, hogy a virtuális gépek képesek legyenek kommunikálni egymással, hálózati kártyának Bridge-elt kártyát kell választani. Fontos, hogy a fizikai kártyának megfelelő interfészt válasszuk, ami esetünkben: Intel 82556-2 Gigabit. A típusa pedig: Intel Pro/1000 MT (Desktop) és a D végű! A fizikai gépnek azonos hálózatból kell fix IP címet adni.
5. ábra. Virtualbox bridge mód Az infrastruktúra az iskola laborjában készült, ahol a Comodo TimeMachine minden újraindításnál visszaállítja a rendszert egy korábbi mentett állapotba. A virtuális gépben lévő telepítések és változások elmenthetőek, de a hálózati beállításoknak változatlannak kell maradnia a fizikai gépeken. Mivel újraindításkor elfelejti a beállításokat, emiatt minden fizikai géphez készítettem egy-egy a hálózati beállításokat megváltoztató rövid 23
batch szkriptet, amivel automatikusan beállítom az IP címet és kikapcsolom a tűzfalat. Ezt a következő két sorral lehet elintézni: netsh advfirewall set allprofiles state off netsh interface ip set address name="GAMF" static 192.168.0.201 255.255.255.0 Az első sor kikapcsolja a tűzfalat, a második pedig statikus IP címet és hálózati maszkot állít be a GAMF nevű interfészre. A Windows szerver egy Windows 2008 R2, amin FTP, DHCP szolgáltatás és a McAfee ePO antivírus központi menedzsment szoftvere fut. Belépni a Rendszergazda felhasználói névvel és Hallgató-9 jelszóval lehet a virtuális gépre. A DHCP kiszolgáló a 192.168.1.1254 tartományból oszt ki IP címet. Erre a szolgáltatásra a DHCP kiéheztetéses támadás miatt van szükség. FTP szerverként a FileZilla nevezetű alkalmazás funkcionál, melynek adminisztrációs jelszava xX12345. Az ftp felhasználói névvel és hallgató jelszóval lehet kapcsolódni hozzá. Erre a brute force támadás miatt van szükség. A FileZilla alkalmazásnál külön be kell állítani a naplózást. Ezt a Settings menü Logging beállítások alatt kapcsolhatjuk be. Erre a brute force támadás megjelenítéséhez és az OSSEC szabályok kiváltása végett van szükség.
6. ábra. FileZilla naplózás bekapcsolása A naplófájl egy sora, amit majd a vizualizáláshoz használok fel, a következőképpen épül fel: 24
(000004) 2012.02.02. 9:53:28 - ftp (192.168.1.12)> 257 "/" is current directory. Az első mező a kapcsolat száma, amit követ egy dátum. Ezután a felhasználó név és az IP cím következik. A végén pedig az FTP parancs található. Ha nincs bejelentkezett felhasználó, akkor a (not logged in) jelenik meg. Ebből az IP címre, a felhasználóra és az FTP parancsra van szükségünk. Az adatok kinyerésére írtam egy shell szkriptet minimális kivételkezeléssel, ami ezt automatikusan elvégzi helyettünk. A következőképpen néz ki a szkript: #!/bin/bash if [ $# != 2 ] then echo ”Használat: $0 naplófájl képfájl.gif” exit 1 fi if [ -f $1 ] then cat $1 | awk \ '{if( $5~/\(not/) print $8","$5"_"$6"_"$7","$9 ; else print $6","$5","$7; }' > $1.csv cat $1.csv | sed 's/[>]//g' > $1.ag; cat $1.ag | perl afterglow.pl -c filezilla.properties -p 1 | dot -Tgif -o $2; exit 0 else echo "A megadott $1 naplófájl nem létezik!" exit 1 fi Két fájlt kell megadnunk a szkriptnek, a naplófájlt és a létrehozandó kép nevét. A fentebb említett 3 adatot a következőképpen nyeri ki a szkript. Ha nincs bejelentkezett felhasználó, akkor az 5.-8. oszlopig vesszük figyelembe az adatokat. Ha van bejelentkezett felhasználó, akkor csak az 5.-7. oszlopot vesszük figyelembe. A fájlban maradt „>” jelet eltávolítjuk. Végezetül az így kapott fájlt átadva az Afterglow szoftvernek a megfelelő szín tulajdonságokkal létrehozza a vizualizálandó fájlt, amit a dot program kirajzol. 25
A McAfee ePO antivirus központi menedzsment alkalmazása is telepítésre került a Windows szerverre. A telepítési útmutató szerint végeztem el a telepítését. A telepítés előtt azonban ne felejtsük el a távoli hozzáférés engedélyezését a Microsoft SQL 2008 szolgáltatáshoz, különben nem tudjuk telepíteni az ePO alkalmazást. A Software menü, Automation almenüben lévő Server Tasks-ban létrehoztam egy lekérdezést, ami óránként lefut és a tartalmát egy megadott helyre menti el, felülírva az előző verziót. Maga a lekérdezés az elmúlt 30 napban történt hibás bejelentkezéseket adja vissza csv formátumban, azaz az értékek vesszővel elválasztva kerülnek a fájlba.
7. ábra. ePO lekérdezés A fájl a következőképpen épül fel: admin,4/25/12 7:03:05 PM CEST,"Failed logon for user ""admin"" from IP Address: 0:0:0:0:0:0:0:1"
26
Ebből az OSSEC dekóderéhez a ”Failed logon” szövegre fogunk szűrni. A felhasználói nevet és IP címet fogjuk kinyerni belőle. Ha találunk ilyen sort a fájlban, akkor az atomi vagy az összetett szabály alapján riasztást kapunk. A szerver IP címe: 192.168.1.11.
8. ábra. OSSEC atomi riasztás A Linux szerver egy Ubuntu 11.10, SSH, FTP, MySQL, Apache PHP-vel és Drupal CMS szolgáltatással. Belépni a hallgató felhasználói névvel és jelszóval lehet. Az FTP szerverhez, és az SSH szolgáltatáshoz is ezzel a felhasználói név és jelszó párossal lehet csatlakozni. A MySQL adatbázishoz a root felhasználói névvel és xX12345 jelszóval lehet kapcsolódni. A Drupal alapú weboldalhoz tartozó adminisztrációs felhasználó az admin és a hozzá tartozó jelszó az xX12345. A web oldal telepítése elvégezhető az általam írt shell szkript segítségével is. A shell szkirpt telepíti az ssh, ftp, mysql, apache és php-t. Ezután letölti, kicsomagolja és regisztrálja az Apache-ben a Drupal 7 cms-t. A Drupal 7-ben az adatbázisba naplózó modult ki kell kapcsolni, és a syslog naplózó modult kell helyette bekapcsolni. Ezután hozzuk létre a /etc/rsyslog.d/ könyvtárban a drupal.conf fájlt a következő tartalommal: $template RFC3164fmt, „<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%- - - %msg%\n” local1.* -/var/log/drupal.log;RFC3164fmt . Ekkor létrejön a /varr/log/drupal.log fájl, ami tartalmazza az egyes Drupal műveleteket. A naplófájl felépítése jól látszik az első sorban: prioritás érték, időbélyeg, hoszt név, syslog címke és az üzenet. <133>1 2012-02-25T18:10:08+01:00 ubuntu drupal:- - http://localhost|1330189808|content|127.0.0.1|http://localhost/?q=node%2Fadd%2Farticl e&render=overlay&render=overlay|http://localhost/?q=node%2Fadd%2Farticle&render =overlay|1|view|article: added test. Ennek feldolgozására is írtam egy shell szkriptet, amivel kinyerhető az IP cím, művelet és művelethez tartozó jelző.
27
#!/bin/bash if [ $# != 2 ] then echo ”Használat: $0 naplófájl képfájl.gif” exit 1 fi if [ -f $1 ] then cat $1 | awk -F '|' '{print $4","$3","$9}' > $1.csv; cat $1.csv | sed 's/"//g' > $1.ag; cat $1.ag | perl afterglow.pl -c drupal.properties -p 1 | dot -Tgif -o $2; exit 0 else echo "A megadott $1 naplófájl nem létezik!" exit 1 fi
Itt is ugyanúgy két fájlt kell megadnunk, a naplófájlt és a létrehozandó kép nevét. A Drupal 7 CMS-ben az elválasztó karakter a „|”, ami megmutatja, hogy a 3. 4. és 9. mezőre van szükségünk. Az idézőjelet kell még eltávolítanunk a fájlból, és átirányíthatjuk az Afterglow-nak és dot-nak. A Linux szerver IP címe: 192.168.1.10. Az IDS egy Fedora linux disztribúció, amelyen három alkalmazást használok: OSSEC, tcpdump és Wireshark. Az OSSEC egy nyílt forráskódú, hoszt alapú behatolás érzékelő rendszer. Naplóelemzésre, integritás ellenőrzésre, Windows registry figyelésre, rootkit detektálására, valós idejű riasztásra és válaszlépésre képes Linux, OpenBSD, FreeBSD, MacOS, Solaris és Windows rendszereken. Remekül kiegészíti az alap biztonsági rendszert egy plusz biztonsági réteggel. Segít továbbá a PCI, HIPAA stb. megfelelőség kialakításában és elérésében is. Kereskedelmi támogatás is igényelhető hozzá. A telepítés előtt el kell döntenünk, hogy Lokális, Szerver vagy Ügynök típusú telepítést akarunk végezni. Ezek a következőt jelentik:
28
A lokális: helyi gép védése és biztosítása. Szerver: a kliens gépekre telepített ügynököktől származó adatokat és syslog üzeneteket dolgozza fel. Ügynök: helyi gép védése és biztosítása, de a szervernek küldi az információkat. A szerverre így a szerver, a kliensekre pedig az ügynök telepítését végezzük el. A szerver telepítéséhez töltsük le a legutolsó verziót és ellenőrizzük eredetiségüket. Tömörítsük ki a csomagot és futtassuk a “./install.sh” szkriptet (végig vezet a telepítés során). Nyissuk meg az 1514-es UDP portot a tűzfalon. Adjuk hozzá az virtuális gépek ügynökeit a szerverhez. Ezután telepítsük az OSSEC webes felületét. Töltsük le a webui csomagot és az aláírást. Töltsük le az ellenőrzőösszeget és az aláírást, hogy megbizonyosodjunk a fájl hitelességéről. Csomagoljuk ki és helyezzük át a web szerver által elérhető helyre. Futtassuk az install.sh szkriptet. Adjuk hozzá a web szerver felhasználóját (apache, www vagy nobody) az ossec csoporthoz. Állítsuk át a jogokat 770-re és cseréljük le a csoportot a www-re az OSSEC telepítés átmeneti könyvtárán (pl.: /var/ossec/tmp) és indítsuk újra az Apache-ot, hogy életbe lépjen a jogváltozás. Most már elérhető a webes felület. Az ügynökök hozzáadása a szerverhez a következőképpen működik. 1. Először, adjuk hozzá a szerverhez az ügynököt. Indítsuk el a manage_agents parancsot, válasszuk az ”A” betűt, és adjuk meg az ügynök IP címét és adjunk neki egy nevet. 2. Miután az ügynököt hozzáadtuk, ki kell nyerni az autentikációs kulcsot a szerverről. A manage_agents-t futtatva válasszuk az ”E” lehetőséget és válasszuk ki az ügynök ID-ját. Ezt másoljuk ki és illesszük be az ügynök oldalon. 3. Az ügynök oldalon indítsuk el a manage_agents parancsot, válasszuk az ”I” lehetőséget és másoljuk be a kulcsot. Windows esetén az win32ui.exe-t és másoljuk be a kulcsot a megfelelő helyre.
Az OSSEC reguláris kifejezést alkalmazó szabályokkal és dekóderekkel nyeri ki az adatokat a naplófájlból és riaszt, ha a szabályra illeszkedő eseményt észlel. A dekódolás célja az olyan dinamikus információk kinyerése az eseményekből, mint az IP cím, felhasználói név. A betöltött dekódereket a telepítési könyvtár etc könyvtárában lévő 29
decoder.xml fájlban találjuk. Minden egyes dekóder neve a <decoder> címkékkel körülhatárolt. A <decoder> címke name attribútuma határozza meg a dekóder nevét. Ha a <program_name> értéke megegyezik a syslog program nevével, akkor elindítja a dekódert. A tartalmazza a reguláris kifejezést. Az offset használatával időt takaríthatunk meg, mert ezzel mondhatjuk meg az alkalmazásnak, hogy csak a prematch vagy parent illeszkedése után hajtsa végre a reguláris kifejezést. Csak az after_prematch vagy after_parent után használható. Az címkével határozhatjuk meg az egyes adatok sorrendiségét.
A <parent> segítségével megadhatjuk a szülő dekóder nevét,
aminek először le kell futnia. A <prematch> címkék segítségével előszűrést végezhetünk, megkímélve és felgyorsítva a feldolgozást. Ha talál olyan szöveget a naplófájlban, ami e között a címke között van, akkor végrehajtja a dekódert. Minden szabályt a telepítési könyvtár rules könyvtárában lévő local_rules.xml fájlban találhatunk meg. Kétféle szabály létezik az OSSEC-ben: atomi és összetett. Az előbbi egy eseményen alapszik, nincs összefüggés két esemény között. Például ha a naplófájlban látunk egy sikertelen bejelentkezést. Az utóbbi pedig több eseményen alapszik, amik között összefüggés van. Például ugyanarról az IP címről történő 15 hibás bejelentkezés ennek számít. Mindegyik szabályt a elemek között kell definiálni. A név attribútumának pedig tartalmaznia kell a szabályokat, amiknek része. Pl.:
A csoport bármennyi szabállyal rendelkezhet. A szabályokat a címkékkel definiálhatunk és legalább 2 tulajdonsággal kell rendelkezniük, az id-vel és a szinttel (level). Az id egy egyedi azonosító, a szint pedig a riasztás súlyosságot jelöli. Lehetőség van arra is, hogy egy szabályt csak akkor vegyen figyelembe a szoftver, ha előtte egy másik szabályra illeszkedett az esemény. Ezzel egy fát alakíthatunk ki a szabályokból. Ehhez a címkéket kell használni. Az OSSEC ebből a címkéből fogja tudni, hogy ennek a szabálynak melyik a szülő szabálya, és, hogy miután kell figyelembe vennie. 30
A naplófájlokból a reguláris kifejezések segítségével veszi ki a szabály a bennünket érdeklő adatokat. A kifejezést a <match> címkék között kell megadni. A címkékkel alcsoportokat hozhatunk létre és csak már létező csoportra hivatkozhatunk. Másik fontos címke a <decoded_as> , amivel megadhatjuk, hogy mely dekóder feldolgozása után vegye figyelembe a program. A és <srcip> címkékkel a hoszt nevét és forrás IP címét adhatjuk hozzá a szabályhoz. Természetesen létezik forrás és cél port is. A címkével időponthoz köthetjük a szabályunk kiértékelését. Például megadhatjuk, hogy a munkaidőn kívül mely szabályok legyenek érvényesek. Eddig csak az atomi szabályokkal foglalkoztunk, most nézzük meg az összetett szabályokat is. Már meglévő atomi szabályokat kell kiegészíteni két opcióval. Az előfordulás gyakorisága az egyik, és hogy mennyi idő alatt következzenek be az események a másik, amit meg kell adnunk. Az összetett szabályaink a következőképpen épülnek fel: Csak ennél a szabály típusnál alkalmazható beállítások ugyanarra a dologra irányulnak. A <same_source_ip> meghatározza, hogy ugyannak a forrás IP címnek kell többször szerepelni. Ugyan így a <same_dest_ip# ugyanazt a cél IP címet kell tartalmaznia. Megadható ugyan ezen a gondolatmenet alapján a port is a <same_src_port> és a <same_dst_port> címkékkel. A <same_location> ugyanarra a hoszt névre vagy ügynök névre vonatkozik. A <same_user> és a <same_id> pedig értelemszerűen a felhasználóra és ID-re vonatkozik. Szűkítést végezhetünk az és , valamint az címkékkel az események között. Az OSSEC könyvben a riasztási szinteket a következőképpen határozza meg [7]: 0-s szint: Figyelmen kívül hagyva, cselekvést nem igényel.
31
Elsődlegesen a hibás pozitív riasztások elkerülése miatt használják. Biztonsági vonatkoztatású információkat nem tartalmaznak. 2-s szint: Alacsony prioritású rendszer üzenet. Rendszerjelzések
vagy
rendszerüzenetek,
melyek
nem
tartalmaznak
biztonsági
információkat. 3-s szint: Sikeres vagy engedélyezett esemény. Sikeres bejelentkezés, tűzfalon engedélyezett esemény stb. 4-s szint: Alacsony prioritású rendszer hibaüzenetek. Nem használt eszközökhöz, alkalmazásokhoz vagy rossz beállításokból adódó üzenetek. Általában az alkalmazások alapértelmezett telepítése miatt vagy tesztelés miatt keletkezett események. 5-s szint: Felhasználó által generált hibák. Egyszeri elírt jelszó, megtagadott esemény stb. Ezek még nem tartalmaznak biztonsági vonatkoztatású információkat, mert ismert a forrásuk. 6-s szint: Alacsony jelentőségű támadások. Féregre vagy vírusra utaló dolgok, melyek semmilyen veszélyt nem jelentenek a rendszerre. Például egy Windows-os vírus megtámad egy Linux-os rendszert. A gyakori hibák eseményei vagy IDS események. 9-s szint: Érvénytelen forrásból származó hiba. Ismeretlen felhasználóként való bejelentkezés egy ismeretlen forrásból. Ezek már tartalmazhatnak biztonsági vonatkoztatású információkat az ismeretlen forrás miatt, és ha többszöri is megismétlődik. 10-s szint: Több felhasználó által generált hibaüzenetek. Többszörös rossz jelszó vagy sikertelen bejelentkezés stb. Támadások előfutára lehet. 12-s szint: Fontos jelentőségű események. Ide értjük az alkalmazások vagy rendszerek hiba vagy figyelmeztető üzeneteit. Alkalmazás ellen irányuló támadás előfutárai lehetnek. 13-s szint: Szokatlan hibák (fontosak). Gyakori támadási minták, mint a buffer túlcsordulás vagy nagyobb syslog üzenete stb. 14-s szint: Fontos jelentőségű biztonsági esemény. Tipikusan a támadásokra vonatkozó több összefüggő szabály eredménye, mely a támadást jelez. 15-s szint: Sikeres támadás. 32
Nagyon kicsi az esélye, hogy hamis pozitív a riasztás. Azonnali beavatkozást igényel. Az összes syscheck beállítás paramétere a <syscheck> címkék között található az ossec.conf fájlban. Ezen belül a címkék segítségével megadhatjuk a rendszeren figyelendő könyvtár elérési útvonalát. Minden lekérdezés rekurzív, így ha alkönyvtárakat tartalmaz a könyvtár, akkor az is átvizsgálásra kerül. A következő paraméterekkel egészíthetjük ki ezt: check_all elvégzi az összes integritás ellenőrzést. A check_sum MD5/SHA1 algoritmusokat felhasználva kiszámolja az ellenőrzőösszeget és később ezt ellenőrzi. A check_size a fájl méretének változását figyeli. A check_owner a fájl tulajdonosának változását figyeli. A check_group a csoport megváltozását figyeli. A check_perm az engedélyek megváltozását figyeli. Lehetőség van Windows rendszereken a registry kulcsok figyelésére is, amihez a <windows_registry> címke között kell a kulcs értékét megadni. Ha egy fájlt figyelmen kívül szeretnénk hagyni, akkor használjuk az címkét kihagyandó fájlra és könyvtárra egyaránt. Hasonló az eljárás a registry kulcsokra, itt a címke között megadott kulcsot a rendszer figyelmen kívül hagyja a folyamat során. A szabályokat és dekódolókat tesztelhetjük a bin könyvtárában lévő ossec-logtest paranccsal. A program beolvassa a szabályokat, ha talál benne hibát, akkor jelzi. Ha sikeresen beolvasta a szabályokat, akkor bemásolhatjuk ide a naplófájl egy részét, és a program visszaadja, hogy mely szabályok illeszkedtek és mely dekóderek dolgozták fel a naplófájlt. Az ügynökökön az ossec.conf fájlban a szekción belül állíthatjuk be az OSSEC szerver IP címét és portját. A <server-ip> címkében megadott IP cím az OSSEC szerver által használt cím, ha a hoszt nevét szeretnénk megadni, akkor azt a <server-hostname> címkével tehetjük meg. A <port> címke értéke a szerver által használt portnak kell lennie. Az alapértelmezett port az 1514es.
33
Ezek alapján a következőnek kell szerepelnie a kliensek konfigurációs fájlaiban: <server-ip>192.168.1.11 <port>1519 Ezen felül a Windows 2008 R2 virtuális gépen az alapértelmezett könyvtárakon kívül a következő könyvtárakat figyeljük meg még: C:\Program Files (x86) FileZilla Server\Logs\FileZilla Server.log és a C:\reports\login_attempts.csv fájlokat. Ahhoz, hogy további könyvtárakat is megfigyeljen a program, használjuk a címkét. Ezek után meg kell adnunk a naplózandó fájl nevét és a formátumát. Ezeket a és címkék között kell megadnunk: syslogC:\Program Files (x86) FileZilla Server\Logs\FileZilla Server.log Az OSSEC alkalmazáshoz két kis segédeszközt írtam, hogy felgyorsítsam és megkönnyítsem a munkámat. Mindkét alkalmazást C# programozási nyelven írtam a Visual Studio keretrendszer segítségével. Az egyik segédprogramom segítségével az ügynök beállításait tudom elvégezni és a futtatását vezérelni. A már létező fájlba a menüből kiválaszthatjuk, hogy milyen beállítást szeretnénk elhelyezni a fájlban. Például, ha további naplófájlokat szeretnénk megfigyelni a kliensen, akkor nem kell ismerni a teljes címkét, elég csak begépelni az útvonalat és a napló formátumát, mert magát a címkéhez tartozó sablont a menüből ki tudjuk választani. Innen is lekérdezhetjük, hogy fut-e az ügynök és el is indíthatjuk vagy újraindíthatjuk. Programozás szempontjából meg kellett oldani a kurzor helyére történő beillesztés, és hogy a kurzor ne ugorjon vissza az első sorba. Ezt a richtextbox SelectionStart tulajdonságának lekérdezésével és tárolásával tudtam elérni. Ezután már csak a megfelelő címke sablonját kell szövegként beilleszteni, a végén pedig visszaállítani a kurzor pozícióját. A folyamat futásának ellenőrzése, indítása 34
és leállítása a Process osztály GetProcess metódusának a felhasználásával megkapjuk az éppen futó folyamatok listáját, amit egy ciklusban a nevét feltételként megadva megkeressük a folyamatot. A keresésnél exe kiterjesztés nélkül kell megadni a folyamat nevét a feltételben.
9. ábra. Egyik saját alkalmazás az OSSEC-hez A másik program pedig a szabályok létrehozásának felgyorsításában segít. Ez a leggyakrabban használt atomi és összetett szabályokat tartalmazza menüben csoportosítva. Található itt még egy lista a riasztási szintekről rövid magyarázattal segítségképpen és egy reguláris kifejezéseket tartalmazó menüpont is.
10. ábra. Másik alkalmazás az OSSEC-hez
35
Itt is a fentebb már említett problémával szembesültem és ugyanazzal a módszerrel is oldottam meg őket. A segédprogramok még nincsenek teljesen készen, további fejlesztési lehetőségek szükségesek még. Mindkét alkalmazásból hiányzik a megfelelő kivételkezelés, és nem lehet csak a megnyitott fájlt menteni. Ha el akarnánk menteni előzetes fájl megnyitása nélkül, akkor hibát kapunk. Az egyes szabályokhoz megfelelően kiosztott billentyű kombinációkkal tovább gyorsíthatjuk a szabályok létrehozását. Az ügynök beállítását végző program még nem implementálja a kulcs megadását és mentését sem, amire még nem sikerült teljesen rájönnöm, hogyan működik. A szabály ellenőrzését a bin könyvtárban található ossec-logtest segédprogrammal tudjuk ellenőrizni. Az ezzel való interakció integrálása szintén a jövőbeli továbbfejlesztési lehetőségek és tervek között szerepel. A kliens egy Windows XP SP3, aminek az IP címe: 192.168.1.20. Erre egy régebbi Mozilla Firefox 3.5.14 verzió került telepítésre a böngésző támadás miatt. Más egyebet nem tartalmaz. A támadó gép a BackTrack 5R2 Linux disztribúció. IP címe az egyes támadások során 192.168.1.30 vagy 192.168.1.50. Azért választottam a BackTrack-et, mert már tartalmazza a támadásokhoz szükséges programokat. Ez a disztribúció bárki által szabadon letölthető és használható. A támadásokhoz használt programok: yersinia, metasploit, macof, Hydra-gtk. Egy táblázatban összefoglaltam, mely programokra van szükség az egyes támadások kivitelezéséhez. Eszköz
Támadás
Yersinia
DHCP starvation, CDP flood, STP root claiming
Metasploit
Böngésző exploit
macof
MAC flood
Hydra-gtk
Brute force 1. táblázat. Támadó eszközök
A támadások vizualizáláshoz használt eszközök közül felhasználtam gráfot rajzolót, animációsat és fatérképet készítőt is. Ezek a következők: Afterglow, Treemap, Etherape. Az Afterglow szkriptek gyűjteménye, melynek segítségével irányított gráfokat lehet kirajzolni. Perl nyelven írt, parancssoros eszköz, nincs hozzá grafikus felület. A képi 36
megjelenítéshez szüksége van az Afterglow-nak egy olyan vesszővel elválasztott adatokat tartalmazó fájlra, ami tartalmazza a forrás IP címet, az eseményt és cél IP címet. Ezek mellé kell még egy szín tulajdonság fájl, amivel beállíthatóak ezek színezése és tulajdonságai, mint például, hogy körrel vagy háromszöggel jelölje a cél IP címet vagy mekkora nagy legyen. A Drupal 7 CMS-hez használt fájl színezése a következőképpen történik. A belső IP címeket narancssárga színnel jelöli, a külsőket pedig kék színnel. A 127.0.0.1 cím fehér színt kapja. A content, system és user zöld téglalap tulajdonságot kapja majd. A Drupal eseményeket három kategóriára bontottam: engedélyezett, riasztás és vizsgálandó. Az engedélyezett események zöld színűek, a riasztások piros és a vizsgálandó pedig sárga színű. Engedélyezett események: page added, page modified, article added, article modified, user added, sucess opened és session closed. Vizsgálandó események: module uninstalled, mondul enabled, modul disabled és module disabled. Riasztásnak minősülnek a következők: page deleted, article deleted, user deleted és login attempt failed. Ez a következőképpen néz ki: color.source="orange" if ($fields[0]=~/^192\.168\..*/); color.source="white" if ($fields[0]=~/^127\.0\..*/); color.source="blue" color.event="green" color.target="red" if ($fields[2]=~"article: deleted") color.target="red" if ($fields[2]=~"page: deleted") color.target="red" if ($fields[2]=~"Login attempt failed"); color.target="green" if ($fields[2]=~"page: added"); color.target="green" if ($fields[2]=~"page: modified"); color.target="green" if ($fields[2]=~"article: added"); color.target="green" if ($fields[2]=~"article: modified"); color.target="green" if ($fields[2]=~"Session opened"); color.target="green" if ($fields[2]=~"Session closed"); color.target="yellow" if ($fields[2]=~"module"); color.target="yellow" if ($fields[2]=~"Deleted user:"); color.target="red"
37
A színezés megállapításához perl kódot is lehet használni. Ez a következő FTP tulajdonság fájlnál mindjárt be is mutatom. A FileZilla FTP szervernél az IP címek színei a Drupallal megegyezőek. Piros színnel jelöli majd a program a következő veszélyes FTP parancsokat: Login failed, directory deleted, permission denied, not implemented, chmod, file deleted és nem létező felhasználók. A többi támadáshoz és megjelenítéshez a wireshark.sh szkriptet és a wireshark.property fájlt a használom. A naplófájl feldolgozásakor az afterglow2csv.pl figyelembe veszi a szerver-kliens kapcsolatokat, és így alakítja át vesszővel elválasztott formára. Ezután töröljük az első sort, ami tartalmazza az egyes mezők elnevezését. Ezután kinyerjük a nekünk szükséges IP címeket és portot, majd eltávolítjuk a felesleges idézőjeleket. Végezetül megrajzoljuk a képet és töröljük az átmeneti fájlokat. #!/bin/bash if [ $# != 2 ] then echo ”Használat: $0 naplófájl képfájl.gif” exit 1 fi if [ -f $1 ] then tcpdump -vttttnnelr $1 | tcpdump2csv.pl > $1.csv sed 1d $1.csv > $1.csv2 cat $1.csv2 | awk '{print $5","$7","$6}' > $1.sed; cat $1.sed | sed 's/"//g' > $1.ag; cat $1.ag | afterglow.pl -c wireshark.properties | neato -Tgif -o $2; rm -rf $1.csv $1.csv2 $1.sed $1.ag exit 0 else echo "A megadott $1 naplófájl nem létezik!" exit 1 fi 38
A színezés a következőképp alakul. Amit szolgáltatással rendelkezünk és széles körben általánosan használunk portokat, azokat zöld színnel jelöljük. Ezek a következők: a 20, 21, 22, 53, 67, 80, 137, 139, 443, 445, 3306, 8080. Minden más port piros színezéssel fog megjelenni a képeken. A belső 192.168.1.0/24 tartomány narancssárga színű, a többi piros. Ez a következőképpen néz ki: color.source="orange" if ($fields[0]=~/^192\.168\..*/); color.source="white" if ($fields[0]=~/^127\.0\..*/); color.source="blue" variable=@ports=qw(20 21 22 53 67 80 137 139 443 445 3306 8080); color.event="green" if (grep(/^\Q$fields[1]\E$/,@ports)) color.event="red" color.target="orange" if ($fields[2]=~/^192\.168\..*/); color.target="white" if ($fields[2]=~/^127\..*/); color.target="blue" Figyeljük meg, hogy a portokat egy perl-ben megadott tömbből olvassa ki a program. Fatérkép (Treemap) Az
információvizualizálásban és számításban a hierarchikus
adatok téglalapba
ágyazásával, azok összehasonlítására használják. Mindegyik ágnak jut egy téglalap, ami egy kisebb ág téglalapjával tölt ki. Ezek az ágak az előfordulás szerint kapnak méretet, amit aztán kiegészítenek színekkel a jobb láthatóság és megkülönböztethetőség miatt. Hat ismert kitöltő algoritmus valamelyik használják a programok, amik a következők: bináris fa, kevert fa, rendezett, szeleteléses, négyzetes és sávos algoritmus. A rajzoláshoz tm3 fájlra van szükség, ami egyszerű tabulátoros szerkezetű, tartalmazza mind az attribútumokat és értékeiket, valamint a fa struktúrát. A formátum egy táblázatos forma, melyben az első sor az oszlopok neve, amik az adatok címkéi. A második sor az oszlopokhoz tartozó adatok típusát adja meg, pl.: szöveg vagy szám. Az egyes oszlopokba kerülnek az értékek. A táblázat mellé egy oszlop kihagyásával kerül egy hierarchikus felépítés. A Treemap-nek nem kell a táblázat mellé a hierarchikus felépítés, mert azt a programban állítjuk majd be.
39
#!/bin/bash echo ”Használat: $0 naplófájl.csv” if [ -f $1 ] then sed 1d $1 > $1.csv2 cat $1.csv2 | sed 's/"//g' > $1.sed; cat $1.sed | awk -F "," '{print $1","$3","$2}' > $1.ag; cat $1.ag | perl -pe 's/,/\t/g' | sort | uniq -c | perl -pe 's/^\s*//, s/ /\t/' > $1.tm3 exit 0 else echo "A megadott $1 naplófájl nem létezik!" exit 1 fi A szkript nem csinál mást, mint a vesszővel ellátott értékeket tartalmazó fájt átalakítja úgy, hogy közöttük tabulátor legyen, azaz oszlopos elrendezéssé konvertálja. Ezek után saját magunknak kell még a fejlécet hozzáadni, mert az a naplófájltól függően más és más lehet. Ezt akár egy másik fentebb használt szkripttel is össze lehet építeni, és akkor egy teljes naplófájlból tm3 konvertáló szkriptet kapunk. Etherape Egy ingyenes és nyílt forráskódú hálózati forgalomfigyelő eszköz Unix rendszerekre. Grafikus felületen jeleníti meg a vizsgált forgalmat. Mindegyik egység egy hosztot képvisel. A vonalak pedig két hoszt közötti kapcsolatot jelenítik meg. Az egységek és a vonalak is színesek, hogy meg lehessen különböztetni őket. Két hoszt között megnövekedett forgalmat vastagodó vonallal és növekvő egységgel mutatja. Ha csökken a forgalom, akkor csökken a méretük is. Lehetőség van közel valós idejű megjelenítésre, vagy mentett hálózati forgalomból történő újra lejátszásra is. 40
Létezik még több vizualizációs alkalmazás is, amit itt még nagyon röviden megemlítek. Az összes alkalmazás kipróbálható a DAVIX nevezető ingyenes Linux alapú disztribúción. Ezt nem kell telepíteni, csak kiírni egy CD lemezre és bebootolni róla. Az Afterglow által is használt neato-t és más kisebb alkalmazásokat is megába tömörítő ingyenes és több platformon is használható Graphviz-zel irányított gráfokat hozhatunk létre DOT formátumú fájlokból. A szintén ingyenes GNUPlot-tal különböző diagramokat jeleníthetünk meg a vesszővel elválasztott változókból. Egy nagyon látványos valós idejű animációs megjelenítő a glTail, ami olyan naplófájlokat jelenít meg, mint a web, levelező vagy adatbázis szerverek naplófájljai. Az Inetvis segítségével 3D-s pontdiagramot lehet készíteni hálózati forgalomból. És utoljára még a Parvis-t említeném még, amivel párhuzamos koordinátájú képet lehet létrehozni STF formátumból. A fejezet végére megtudtunk, hogy hogyan is néz ki a hálózati infrastruktúra és az egyes rendszerek beállításai. Megismertük az OSSEC behatolás érzékelő alkalmazást, dekódereit és szabályait, valamint hogyan lehet ezeket az általam írt segédprogramokkal gyorsabban létrehozni. Röviden ismertetésre került a vizualizáláshoz használt programokat és a számukra szükséges bemeneti fájlok formátumait. A naplófájlok átalakítására általam létrehozott szkriptek segítségével az átalakított naplófájlokat ezek a programok már elfogadják.
41
6 Tesztesetek E fejezet célja a támadások bemutatása, megértése és ellenük való védelem megismertetése, nem pedig a támadások kivitelezése. A támadásokat bárki elolvashatja, és a támadásokhoz használt programokat bárki letöltheti. A támadások megértéséhezés és a védekezéshez, ismernünk kell magát a protokoll vagy a szolgáltatás működését is. Az egyes támadások kivitelezése előtt, röviden áttekintem a szolgáltatás vagy protokoll elméleti hátterét, majd bemutatom magát a támadást. Végezetül a védekezési módszert ismertetem. A következő támadásokat veszem górcső alá a tesztkörnyezetben: CDP szolgáltatás megtagadás, STP root megválasztásának manipulálása, MAC elárasztás, FTP brute force, DHCP kiéheztetés, pszichológiai manipulációval történő böngésző támadás és egy belső támadás.
6.1 CDP A Cisco Discovery Protocol egy szabadalmaztatott adatkapcsolati rétegbeli hálózati protokoll. Egymáshoz csatlakozó Cisco eszközök közötti információ cserére hozták létre. Ilyen információ az operációs rendszer verzió, IP cím, hoszt név. CDP közleményt küld ki minden egyes interfészén a 01-00-0c-cc-cc-cc multicast cél címre. Alapértelmezetten 60 másodpercenként küld CDP közleményt. A kapott keretet megkapó és CDP-t támogató eszközök az információkat tartalmazó keretet egy táblában tárolja. Minden egyes közlemény feldolgozásakor frissíti ezt a táblázatot, vagy ha nem kap ilyet, akkor alapértelmezettként 180 másodpercig őrzi meg azt. Angol Cisco kézikönyvből magyarra fordítva [8], maga a csomag a következőképpen épül fel.
11. ábra. CDP csomag felépítése [8] Version: a CDP verzióját adja meg. Time-to-Live: megadja azt az időtartamot, ameddig a fogadó félnek meg kellene tartani a csomagot tartalmazó információkat. Checksum: a standard IP ellenőrző összeg.
42
Type: jelzi a type/length/value típusokat, amik a következők lehetnek: Device ID, Address, Port ID, Capabilities, Version, Platform, IP Prefix. Length: a type/length/value értékét tartalmazza bájtban. Value: magát a type/length/value értéket tartalmazza. Ezek a következők lehetnek: Device ID: azonosítja az eszközt. Ez lehet az eszköz teljes neve, vagy a hardver szériaszáma ASCII-ban. Address: megadja a csomagban szereplő címek darab számát.
12. ábra. CDP csomag típus/hossz/érték felépítés [8] Protocol két értéket vehet fel: az 1, ami az NLPID formátum, és 2, ami a 802.2 formátum. Length: a protocol mező értékének a hossza. Ha a protocol értéke 1, akkor a hossza 1. Egyébként pedig 3 vagy 8, attól függően, hogy a SNAP-et használ vagy sem. A Protocol értéke a következők egyike lehet: 0x81—ISO CLNS (protocol type 3D 1) 0xCC—IP (protocol type 3D 1) 0xAAAA03 000000 0800—Pv6 (protocol type 3D 2) 0xAAAA03 000000 6003—DECNET Phase IV (protocol type 3D 2) 0xAAAA03 000000 809B—AppleTalk (protocol type 3D 2) 0xAAAA03 000000 8137—Novell IPX (protocol type 3D 2) 0xAAAA03 000000 80c4—Banyan VINES (protocol type 3D 2) 0xAAAA03 000000 0600— XNS (protocol type 3D 2) 0xAAAA03 000000 8019—Apollo Domain (protocol type 3D 2) Address length: az address mező értéke bájtban megadva. Address: az interfész címe, vagy ha nincs megadva, akkor a rendszer címe.
43
Port ID: egy ASCII karakter sztringet tartalmaz, ami azonosítja, hogy melyik porton küldték a CDP üzenetet. Capabilities: megadja, hogy az eszköz mire képes. A lenti táblázatban lévő értékeket veheti fel. Bit
Leírás
0x01
Legalább egy hálózati rétegbeli protokoll számára képes 3-as szintű útvonalválasztásra.
0x02
2-es szintű transzparens bridge-t szolgáltat.
0x04
2-es szintű forrás-útvonalválasztó bridge-t szolgáltat.
0x08
2-es szintű kapcsoló szolgáltatást nyújt. Hurokmentes topológiában használható csak.
0x10
Legalább egy hálózati rétegbeli protokoll számára küld és fogad csomagokat. Ha az eszköz útvonalválasztóként üzemel, akkor nem szabad használni.
0x20
A bridge vagy switch nem küldi tovább az IGMP Riport csomagokat nem útvonalválasztó portokra.
0x40
1-es szintű szolgáltatásokat nyújt. 2. táblázat. Lehetőségek típus/hossz/érték magyarázat
Version: az eszköz által futtatott szoftver verziószámát tartalmazza. Platform: az eszköz hardver platformját írja le ASCII karakter sztringgel. A következő lehetséges értékeket veheti fel: Cisco 7000, Cisco 7010, Cisco 4500, Cisco 3000, AGS, Catalyst (ezeken kívül természetesen létezik még több is). IP Prefix: nullát vagy több IP prefixet tartalmaz az érték mezőben. Nullát, ha nulla a length mező értéke. Egyébként pedig a length mező tartalmazza a length type-ot és az értékét, plusz 5 bájtonként minden IP prefix-et. 4 bájt az IP prefix és 1 bájt a hálózati maszk. Minden IP prefix a hozzá közvetlenül kapcsolódó helyi router IP szegmensének hálózatát jelenti.
44
6.1.1 Támadás A Yersinia-val egy ilyen támadást meg lehet valósítani. A yersinia –G kapcsolóval grafikus módban indul el. Kattintsunk a Launch attack gombra és válasszuk a CDP fület. Itt válasszuk a flooding CDP table-t és kattintsunk az OK gombra.
13. ábra. Yersinina CDP elárasztásos támadás A leállításhoz kattintsunk a List attacks gombra, majd a Cancel all attacks-ra. Ezzel a yersinia elárasztja a switchet CDP közleményekkel, amelyek véletlenszerű adatokat tartalmaznak. A sok közlemény miatt a switch memóriája megtelik és túlcsordul, majd lebénul az eszköz.
6.1.2 Védekezés Nincs biztonsági beállítás a switcheken a protokollhoz, ezért ne használjunk CDP-t! Cisco eszközöknél a következőképpen lehet kikapcsolni: Összes interfészen: Switch# conf t Switch(config)# no cdp enable
45
Egy interfészen: Switch# conf t Switch(config)# int fa0/1 Switch(config-if)# no cdp enable
6.2 STP Az STP egy 2. rétegbeli kapcsolat menedzsment protokoll, ami útvonal redundanciát nyújt, míg megakadályozza a hurok kialakulását. Ahhoz, hogy egy Ethernet hálózat működjön, csak egy útvonal létezhet két állomás között. Az STP működését nem veszi észre a végpont. Hibatűrő hálózatoknál hurokmentes útvonalat kell biztosítani a hálózatokban lévő csomópontok között. A feszítőfa algoritmus számítja ki a legjobb hurokmentes útvonalat a 2. rétegben kapcsolt hálózatban. A switchek STP kereteket küldenek és fogadnak bizonyos időközönként, amiket nem küldenek tovább, hanem kialakítják ezekből a hurokmentes útvonalat. Több aktív útvonal a végpontok között hurkot eredményez a hálózatban. Ha hurok keletkezik a hálózatban, akkor a végpontok duplán kaphatják meg az üzeneteket. A switchek a végpontok MAC címeit is megtanulhatják a 2. rétegbeli interfészükön. Ezek a feltételek instabil hálózathoz vezetnek. Az STP egy gyökér switch-csel rendelkezdő hurokmentes útvonalat hoz létre a gyökértől az összes switchig. A redundáns útvonalakat készenléti állapotban tartja. Ha a feszítőfában egy hálózat kiesik és létezik redundáns útvonal, akkor az algoritmus újraszámolja a feszítőfa topológiát és aktiválja a készenlétben lévő útvonalat.
46
14. ábra. STP [9] Amikor egy switch két interfésze a hurok része, akkor az STP port prioritás és útvonal költség beállítás alapján meghatározza, melyik interfész küldi tovább a csomagokat és melyik lesz blokkolt állapotban. A port prioritás értéke meghatározza a hálózati topológiában az interfész helyét és mennyire jól halad át rajta a forgalom. Az útvonal költség értéke pedig meghatározza a sebességet. Az IEEE 802.1D szabvány megköveteli, hogy minden switch rendelkezzen egyedi azonosító címmel (bridge ID), ami meghatározza a gyökér switch kiválasztásakor. Mivel minden VLAN-t logikailag különböző bridgnek tekintünk PVST+-vel, így ugyannak a switchnek ugyanannyi egyedi címmel kell rendelkeznie, mint ahány VLAN-t konfiguráltunk rajta. Mindegyik VLAN rendelkezik egy egyedi 8 bájtos azonosítóval (bridge ID), és a két legjelentősebb bájtot használják a switch prioritás meghatározásához, és a maradék 6 bájt a switch MAC címéből származik.
47
15. ábra. STP gyökér választás folyamata [9] Az összes 2. rétegbeli switch részt vesz az STP kialakításában a Bridge Protocol Data Unit (BPDU) adat üzenetek cseréjével. Ezeket az üzenetváltásokat ezekben a műveletekben jönnek létre: Az egyedi gyökér switch megválasztása mindegyik feszítőfa esetre A kitűntetett switch megválasztása minden kapcsolt LAN szegmens számára A hurok eltávolítása, az interfészek blokkolásával Mindegyik VLAN számára, a legnagyobb prioritású switch lesz a gyökér switch. Ha a switchek alapértelmezett prioritása megegyezik, akkor a legkisebb MAC címmel rendelkező switch lesz a gyökér. A BPDU a küldő switchről és portjairól tartalmaz információt, beleértve a prioritást, MAC címet és az útvonal költséget. Ezeket az információkat használja fel az STP, hogy megválassza a gyökér elemet, a gyökér portot és a kitüntetett portot. A BPDU-kat a gyökér switch felől egy irányban mennek, és mindegyik switch küld konfigurációs BPDU-kat az STP topológia kiszámítására és kommunikálására.
48
A konfigurációs BPDU-k a következő információkat tartalmazzák: Az egyedi bridge ID-ja a küldő switchnek, ami a gyökér switchként ismert Az STP gyökér útvonalhoz tartozó költsége A küldő switch bridge ID-ja Az üzenet élettartama A küldő interfész azonosítója A hello, forward delay, és max-age protokoll időzítők értékei Amikor egy switch elküld egy BPDU keretet, az összes hálózathoz kapcsolódó switch megkapja azt. Nem küldi tovább, hanem felhasználja a benne található információkat a BPDU kiszámolásához, és ha változott a topológia, akkor elkezdje annak a terjesztését. BPDU csere ezekben a műveletekben jön létre: Az egyik switchet megválasztják a gyökér switchnek. A legrövidebb gyökérhez vezető út kerül kiszámításra mindegyik switch számára a költségek alapján. Minden LAN szegmens számára megválasztják a kitüntetett switchet. A kitüntetett switch a gyökér switch-hez legközelebb eső switch, amihez a keretek továbbítódnak. Megválasztják a gyökér portot. Ez a port nyújtja a legjobb útvonalat a switchtől a gyökér switchig. A feszítőfában szereplő interfészt kiválasztják. A feszítőfában nem szereplő interfészek blokkoltak.
6.2.1 Támadás A Yersinia-val egy ilyen támadást meg lehet valósítani. A yersinia –G kapcsolóval grafikus módban indul el. Kattintsunk a Launch attack gomba és válasszuk a STP fület. Itt válasszuk a Claiming root role-t és kattintsunk az OK gombra. 49
16. ábra. Yersinia STP gyökér elem szerep átvétele A leállításhoz kattintsunk a List attacks gombra, majd a Cancel all attacks-ra. Ezzel a yersinia megválasztatja magát a gyökér switchnek az STP topológiában.
6.2.2 Védekezés Védekezni a RootGuard és BPDU Guard beállításokkal lehet. Amikor a BPDU guard funkció engedélyezett, lekapcsolja a Port Fast tulajdonságú interfészt, ha BPDU üzenetet kap, és nem teszi blokkolt állapotba. Érvényes beállítások mellett a Port Fast interfészek nem kapnak BPDU üzeneteket. Ha BPDU üzenetet kap egy ilyen interfész, az azt jelenti, hogy nem megfelelően lett beállítva, és illetéktelen eszköz csatlakozik, így a BPDU guard az interfészt ErrDisable állapotba rakja. Az interfészt ezután nekünk kell kézzel visszakapcsolni. A Root guard egy olyan funkció, amivel befolyásolni tudjuk a gyökér switch megválasztását. Igaz, hogy a protokoll a prioritást használja a gyökér meghatározására, de nem nyújt megfelelő kiválasztást. Semmi sem akadályozza meg, hogy egy új switch kisebb bridge ID-vel legyen a gyökér. Az új útvonal nagy hatással lehet a hálózatra. A Root guard-dal azonban megakadályozható, hogy illetéktelen switch legyen a gyökér. Ha engedélyezzük a Root guard-ot egy interfészen, és egy magasabb konfigurációs BPDU-t
50
kap, mint a gyökér által generált, akkor a switch blokkolja az interfészt, elveti ezt a BPDUt és inkonzisztens állapotot jelöl ki az interfésznek. BPDU guard engedélyezése Cisco switcheken: Switch# conf t Switch(config)# spanning-tree portfast bpduguard Root guard engedélyezése Cisco switcheken: Switch# conf t Switch(config)# int fa0/1 Switch(config-if)# spanning-tree guard root
6.3 MAC Flood A hálózatban lévő switch elleni támadás. A switch egy úgynevezett CAM táblában tárolja az interfészeihez csatlakozó hálózatokból érkező MAC címeket. Így nem kell kiküldeni az összes interfészére a csomagot, mint a hubnak, hanem a táblázatból kikeresve, elég csak az adott interfészre kiküldenie a csomagot. A támadás során, a switch-et a támadó elárasztja Ethernet csomagokkal, amelyek különböző forrás MAC címeket tartalmaznak. A CAM táblázathoz használt memória területe véges, így megtelik. Ennek következtében átvált hub üzemmódra, és az összes interfészére kiküldi a csomagokat. A támadás után egy sniffer alkalmazással a teljes forgalom megfigyelhető.
6.3.1 Támadás Ezt a támadást például a macof nevű programmal is el lehet végezni. Az –i kapcsolóval adjuk meg az interfész nevét, ahol a támadást akarjuk kivitelezni. Az –n kapcsolóval pedig beállíthatjuk az elküldött csomagok számát. Ha nem adunk meg kapcsolókat és értékeket, akkor ezek véletlenszerűen hozza létre az alkalmazás.
51
17. ábra. Macof támadás
6.3.2 Védekezés A menedzselhető switcheken beállítható a port security, aminek a segítségével az interfészre érkező MAC címek azonosításának és tárolásának korlátozását lehet szabályozni. Azonban nem mindegyik interfészre lehet beállítani. Ilyen többek között a trunk és a SPAN port is. A következő beállítással az egyes interfészre beállítjuk a port security 3 MAC cím engedélyezésével. Ha ezt túllépi, akkor lekapcsolja az interfészt és egy SNMP trap-et küld a switch. Switch# conf t Switch(config)# int fa0/1 Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security Switch(config-if)# switchport port-security maximum 3 Switch(config-if)# switchport port-security violation shutdown
52
6.4 FTP Az FTP szolgáltatás bejelentkezéshez és a jogosultság ellenőrzésére egyszerű felhasználói név és jelszó párost használ. A felhasználói nevet az USER paranccsal küldi a kliens, a jelszót pedig a PASS paranccsal. Ha az információ helyes, a szerver üdvözli a kliens és elkezdődhet a munkamenet.
6.4.1 Támadás A Hydra-gtk nevű alkalmazásnak meg kell adni a cél IP címet és portot, a felhasználói névhez és jelszóhoz használt szótárfájlokat.
18. ábra. Hydra-gtk FTP brute force
6.4.2 Védekezés A brute force támadás ellen úgy védekezhetünk, hogy meghatározzuk hány rossz jelszó esetén tiltsa le a felhasználót vagy tiltsa a tűzfal az IP címet. Erre egy kiváló alkalmazás a fai2ban.
6.5 DHCP A Dynamic Host Control Protocol (DHCP) automatizálja a hálózati paraméterek kiosztását az eszközöknek. Ugyanazt a két portot használja: 67-es UDP portot használja az adatok küldésére a szerver felé, és a 68-as UDP portot az adat küldésére a kliens számára. A kommunikáció kapcsolatmentes.
53
A DHCP kliensek és szerverek ugyanazon az alhálózaton kommunikálnak UDP broadcast üzenetekkel. Ha különböző alhálózatban vannak, akkor DHCP relay ügynököt kell alkalmazni. A DHCP szolgáltatásnak a következő előnyei vannak:
Internet hozzáférés költségének csökkentése
Kliens beállítások csökkentése
Központi menedzsment
Nem kell kézzel beállítani a hálózati paramétereket egyesével a gépeken, elég csak a szerveren megtenni ezt, ami ezután automatikusan elvégzi nekünk a kiosztást. Négy fázisból áll a DHCP működése: IP discovery, IP lease offer, IP request, és IP lease acknowledgement.
19. ábra. DHCP üzenetváltás [10] A kliens DHCPDISCOVER broadcast üzenetet küld, hogy megtalálja a DHCP szervert. A DHCP szerver felajánlja a hálózati paramétereket (IP cím, MAC cím, domén név és az IP cím érvényességi ideje) a kliensnek a DHCPOFFER unicast üzenetben. A kliens ezután visszaküld egy formális kérést a felajánlott IP címért a DHCPREQUEST broadcast üzenetben. A DHCP szerver megerősíti az IP címet és lefoglalja számára, amit a DHCPACK unicast üzenet küldésével nyugtáz a kliensnek. Az implementációtól függően, három módszer létezik az IP cím kiosztásra: Dinamikus kiosztás: A DHCP szerver egy megadott tartományból oszt ki IP címet egy bizonyos ideig. Ha lejár az idő, akkor felszabadítja az IP címet és újra kiosztja.
54
Automatikus kiosztás: a DHCP szerver tartósan kiosztja az IP címet a kliens számára. A szerver megjegyzi, hogy előzőleg milyen IP címet osztott ki a kliens számára, és legközelebb is azt osztja majd ki neki. Statikus kiosztás: a DHCP szerver MAC címhez rendeli hozzá az IP címet, így a kérés során a MAC címhez társított IP címet osztja ki. A DHCP kiéheztetéses támadás során a támadó kimeríti a kiosztható tartományt, a sok DHPCOFFER kéréssel. A támadás lehet csak szolgáltatás megtagadás vagy egy a támadó által üzemeltett DHCP szerverrel maga felé is irányíthatja a forgalmat.
20. ábra. DHCP ajánlat üzenet felépítése [11]
55
6.5.1 Támadás A Yersinia-val egy ilyen támadást meg lehet valósítani. A yersinia –G kapcsolóval grafikus módban indul el. Kattintsunk a Launch attack gomba és válasszuk a DHCP fület. Itt válasszuk a sending DISCOVER packet-t és kattintsunk az OK gombra.
21. ábra. Yersinia DHCP kiéheztetéses támadás A leállításhoz kattintsunk a List attacks gombra, majd a Cancel all attacks-ra. Ezzel a yersinia a DHCP szervert elárasztja discover üzenetekkel és így a szerver kifogy a kiosztható IP címekből egy rövid időre.
6.5.2 Védekezés Az angol Cisco kézikönyvből magyarra fordítva [12] a DHCP snooping egy biztonsági funkció, ami úgy viselkedik, mint egy tűzfal a nem megbízható hosztok és a megbízható DHCP szerver között. A következőket végzi el: Ellenőrzi a nem megbízható forrásból érkező DHCP üzenetek és kiszűri az érvényteleneket. Korlátozza a megbízható és nem megbízható forrásból érkező DHCP üzenetek mennyiségét.
56
Felépíti és karbantartja a DHCP snooping binding adatbázist, ami tartalmazza a nem megbízható hosztokat a bérelt IP címükkel. Felhasználja a DHCP snooping binding adatbázist a következő nem megbízható hoszttól érkező kéréskor. A DHCP snooping VLAN-onként engedélyezett. Alapértelmezett esetben ez a funkció inaktív. Cisco eszközön a következőképpen állíthatjuk be a DHCP Snoopingot: Router# configure terminal Router(config)# ip dhcp snooping Router# configure terminal Router(config)# ip dhcp snooping vlan 10 12 Router# configure terminal Router(config)# interface FastEthernet 5/12 Router(config-if)# ip dhcp snooping limit rate 100
6.6 Pszichológiai manipuláció, böngésző támadással Az angolul social engineering-ként ismert támadás során a támadó egy jogosultsággal rendelkező személyt megtévesztve vesz rá bizalmas adatok megosztására. Például új kollégának adjak ki magát, akinek szüksége van arra az információra.
6.6.1 Támadás A támadás egy e-mailben elküldött linkkel történik. A link, egy olyan oldalra mutat, amely az áldozat böngésző sebezhetőségét kihasználó kódot tartalmaz. Így ha nem frissíti az böngésző alkalmazást, akkor ezen keresztül átveheti a hatalmat a számítógép felett. A támadást a metasploit nevű szoftverrel készítettem el. Található benne egy böngésző sebezhetőségeket kihasználó modul, amit csak be kell állítanunk. Ez automatikusan létrehoz nekünk egy oldalt, amit az áldozat gépén megnyitottam.
57
22. ábra. Metasploit böngésző támadás
6.6.2 Védekezés A manipuláció ellen az IT biztonsági tudatossági tréninggel lehet a legjobban védekezni. A rendszer és szoftverek rendszeres frissítésével és a felhasználó jogainak megfelelő korlátozásával minimálisra csökkenthető a hibák kihasználása.
6.7 Belső támadás A támadás következőképpen zajlik. A támadó feltérképezi a hálózatot az nmap program segítségével, hogy megtudja melyek az elérhető gépek és szolgáltatások. Ezt az nmap 192.168.1.0/24 paranccsal végezhető el. A megtalált FTP szolgáltatás ellen a felhasználói név és jelszó próbálgatásával szerez hozzáférést. Ezt a Hydra-gtk megfelelő beállításával oldhatjuk meg. A brute force által kapott felhasználói névvel és jelszóval megpróbál belépni máshova is. Így sikerül ssh-n keresztül bejelentkezni egy másik számítógépre. Itt ellenőrzi az operációs rendszer verzióját, ami nem a legfrissebb és szabadon elérhető hozzá exploit [13]. Az expoit feltöltve és lefuttatva adminisztrációs szintű jogosultságot szerezve. ping scan port scan ftp brute force ftp login ssh login exploit upload & execute root.
6.7.1 Védekezés A rendszer és szoftverek rendszeres frissítésével és a felhasználó jogainak megfelelő korlátozásával minimálisra csökkenthető a hibák kihasználása. A megfelelő jelszó házirend 58
érvényesítésével és használatával pedig kivédhető a brute force támadás. Ezen felül többszintű védelemmel kell ellátni az infrastruktúrát.
59
7 Kiértékelés A tesztesetek elméleti hátterének tanulmányozása és a végrehajtott támadások után nézzük, hogy mit lehet kihozni a naplófájlokból és az adatforgalomból! Az általam írt shell szkriptekkel a megfelelő formátumra alakítottam át a naplófájlokat, hogy az Afterglow, Treemap és Etherape alkalmazások előállíthassák a képeket. A második fejezetben már ismertetett vizualizációs ismereteket felhasználva, ahol lehetett a beállításoknál hasznosítottam ezeket.
7.1 CDP elárasztás Az első esetben a CDP elárasztásos támadást veszem szemügyre (Melléklet 1. kép). A képet az Etherape program készítette a SPAN portról jövő forgalomból. A körök nagysága jelzi a forgalom sokaságát, a piros szín jelzi a protokollt. Tipikus elárasztásos támadás látható. A megemelkedett CDP forgalom megbénult switch-hez vezet, az pedig csomagvesztéshez. Az Afterglow által készített képen (Melléklet 2. kép) jól látszik, hogy hirtelen megjelent több eddig ismeretlen kék színű MAC cím az ismert zöld színű MAC címek mellett a hálózaton. Mivel a színek eltérőek, kihangsúlyozza a címek mennyiségét a hálózatunkhoz tartozó címekhez képest. Látható, hogy melyik, és engedélyezett protokollt érint-e a támadás, mert egyetlen zöld CDP felirat látható a kör közepén. Mivel a neato alprogram segítségét használtam a példa létrehozására, megfigyelhetjük a spring modell elrendezés működését. Nem csak ezen a képen, hanem a többi gráfos példán is.
7.2 Macof támadás Másik hasonló elárasztásos támadás a macof programmal végzett is. Jól látható, hogy összefüggéstelen és tiltott portokon jelent meg forgalom a hálózaton (Melléklet 3. kép). Kék szín jelzi az általunk nem használt IP címeket, a piros színű portok pedig az általunk nem szolgáltatott és használtakat. A Treemap által készített fatérkép is csak ezt erősíti meg (Melléklet 4. kép). Nagyon elaprózódott a téglalapok száma.
60
Ha, közel valós időben figyeljük a hálózati forgalmat az Etherapepel (Melléklet 5. kép), akkor a következő érdekes látnivalóval szembesülünk. Temérdek protokoll és IP cím egy hagyma alakot adva érzékelteti, hogy itt valami bűzlik! Jól látható, hogy mekkora forgalommal is járnak az elárasztásos támadások, de hasonló nagy zajt generálnak a vírusfertőzések és a brute force támadások is. Hasonló nagy forgalom aktivitást fogunk látni a DHCP kiéheztetéses támadásnál is.
7.3 STP gyökér megválasztás manipuláció A kép valós idejű hálózat figyelés közben készült, ahol piros szín jelzi a BPDU üzeneteket (Melléklet 6. kép). Gyanússá válhat, ha több eszköz küld BPDU üzenetet, mint kellene. Ennek kiderítésére a naplóforgalomból készítettem egy képet az Afterglow alkalmazással (Melléklet 7. kép). Jól látszik, hogy a jól megválasztott színekkel a gyanús események mennyire szembetűnőek. A switchek használta STP üzenetváltásba bekapcsolódott egy még ismeretlen eszköz, mely a zöld színtől nagyon eltérő kék színnel meg is ragadja a tekintetünket.
7.4 DHCP kiéheztetés Elsőre semmi szokatlant nem látunk a képeken (Melléklet 8. kép). DNS, NETBIOS és DHCP szolgáltatások forgalmát mutatja a kép. A kék színek miatt sincs aggódni valónk, mert broadcast üzenetekhez kapcsolódnak. Azonban, ha figyelembe vesszük, hányszor szerepelnek az egyes IP címek vagy portok a forgalomban, máris más képet kapunk és elkezdhetünk aggódni (Melléklet 9. kép). Valós időben pedig így látjuk a túlzottan megnövekedett és tartós forgalom, amit a DHCP szervernek küldött IP címkéréssel generál a támadó (Melléklet 10. kép). A Treemap-et beállítva, hogy mennyiség alapján színezzen, egyből feltűnik, hogy rengeteg DHCP üzenetről van szó (Melléklet 11. kép). Majdnem tízezer üzenetváltás történt. Ha belegondolunk, hogy a tesztkörnyezetben mennyi gép is szerepel.
61
7.5 Filezilla brute force Az FTP szolgáltatást gyakran támadják a felhasználói jelszavak gyengesége reményében és a fontos információk miatt. Az alábbi képeken erre láthatunk példát (Melléklet 12. kép). A körben lévő 530-as szám jelzi a hibás bejelentkezést. Látható, hogy a bejelentkezési kísérletről van szó nem pedig bejelentkezésről, mert a not_logged_in szerepel piros téglalapban. Ha tovább megyünk a gráfon, akkor a próbálkozók között találunk többek között egy külső IP címet is. A baloldalon szereplő nagy téglalap az üzenetek mennyiségét mutatja, míg a vele egy szintben alig látható az ftp nevű felhasználó (Melléklet 13. kép). Kiválóan érzékelteti a próbálkozások számának nagy mennyiségét a többi felhasználóhoz képest. Megfelelően elkülönül a felhasználóktól színben és méretben is. Kiváló példa még a hierarchikus gráf megjelenítésre. Ugyanilyen algoritmust láthatunk a következő Drupal értékelésnél is. Az autentikálás és a rossz bejelentkezések száma kiugró egy hosztot tekintve, ami a 192.168.1.54 (Melléklet 14. kép). Biztosak lehetünk benne, hogy egy brute force támadást láthatunk a hálózatunkon.
7.6 Drupal brute force Megint csak jól látszik, hogy a megfelelően megválasztott színeknek köszönhetően a tekintetünk egyből a baloldalra szegeződik (Melléklet 15. kép). A képet felnagyítva láthatóvá válik a több rossz felhasználói bejelentkezés egyazon IP címről (Melléklet 16. kép). És nem csak egy felhasználóról beszélünk. A nagy zöld téglalapot nem lehet nem észrevenni a kép alján, szélességével és magasságával kiemelt szerepet kap a többi között (Melléklet 17. kép). Azonban ne feledkezzünk el más eseteket is megvizsgálni, például, hogy miért is töröltek egy oldalt vagy felhasználót. Ezzel a támadás valódi célját el is rejthetik előlünk.
62
7.7 Böngésző támadás pszichológiai manipulációval A képeken nem szerepel, hogy a felhasználót rávették egy weboldal megnyitására, ami az ártalmas kódot tartalmazta. Már csak a végeredményt láthatjuk (Melléklet 18. kép). Az viszont figyelemre méltó, hogy miért kapcsolódik tiltott porton az egyik belső gép másikhoz. Kivizsgálandó az eset, de mi most tudjuk, hogy átvették az irányítást a gép felett. A több hálózati forgalmat generáló elemek nagyobbak a többihez képest, így rámutatva a 192.168.1.30 és a 192.168.1.11 számítógépek közötti forgalomra (Melléklet 19. kép). Nem is lenne gond, ha nem a tiltott porton keresztül történne mindez. Itt a fatérkép túl sok hasznunkra nincs, csak az adott porthoz tartozó forgalmat adja meg (Melléklet 20. kép). Ha ez nagyon sok lenne, akkor erős lenne a gyanú az információ eltulajdonítására. Itt most szembesülhetünk a vizualizáció egyik problémájával, mégpedig a kevés adattal.
7.8 Belső támadás A nagy piros-zöld gömbből kilógó kék részlet, ami fontos számunkra (Melléklet 21. kép). A belső támadásnál láttuk, hogy először feltérképezte a támadó a létező hosztokat az ARP protokoll segítségével, majd a talált FTP szolgáltatás ellen indított jelszó próbálgatásával szerzett jelszóval kapcsolódott ssh szolgáltatásra. A bal felső sarokban történt ARP kéréseket látjuk, a gomb a port szkennelés eredménye, benne az FTP és SSH forgalommal együtt is. Ami nagyon furcsa, az a kilógó kék IP cím és a hozzá tartozó port szám. A fatérképre pillantva a forgalomból kirajzolódnak a támadás egyes lépései (Melléklet 22. kép). Nézzük, milyen protokollok szerepelnek: ARP, FTP, SSH és TCP. Fel kellett térképezni a támadónak a hálózatot, emiatt a sok ARP kérés. Ezután meg kellett néznie az elérhető gépek milyen szolgáltatásokat is futtatnak. Mivel több az FTP üzenet, mint az SSH, így az előbbit támadta meg. A szám alapján még nem jelenthetnénk ki, hogy brute force támadás történt. Ezt megerősítheti azonban az IDS rendszer riasztása.
63
A képeket végignézve kétség sem férhet hozzá, hogy mennyire beszédesek, és lényegre törőek tudnak lenni. Előfordulhat azonban, hogy valamit félreértelmezhetünk, ezért érdemes több szemszögből, és több alkalmazás által készített képet is megvizsgálni.
64
8 Összegzés Láthattuk az elkészített tesztkörnyezetben, hogy milyen hasznos segítséget is nyújt nekünk a hálózati forgalom és a naplófájlok vizuális megjelenítése. A szakdolgozat végére megtudhattuk az általános felépítését és szerepüket a behatolás érzékelő
rendszereknek,
valamint
a
detektálható
támadásokat
és
korlátaikat.
Megismerkedtünk egy széles körben használt hoszt alapú behatolás érzékelő rendszerrel, az OSSEC-kel, és az általa használt dekóderek és szabályok készítésével. Megtudtuk, hogyan is lehet a naplófájlból értékes képet készíteni és az anomáliákat, trendeket felismerni. Most már szép és információt közlő grafikonokat és ábrákat készíthetünk, és tudjuk, mikor milyen grafikont használjunk fel. A protokollok, szolgáltatások elméleti áttekintésével és az általam létrehozott tesztkörnyezetben végrehajtott támadásokat több oldalról vizsgálva megérthettük azokat, így már képesek vagyunk hatékonyan védekezni ellenük. Ha egy mondatban kellene összegeznem a szakdolgozatomat, akkor az a következő lenne: Egy kép felér egy több ezer soros naplófájllal!
Melléklet Vizualizációs eszközök használata Vizualizációs eszköz
Adatkapcsolat
Maximum adatok
Adat típus
Használati eset
Kördiagram
1
kb. 10
kategorikus
Értékek összehasonlítása százalékosan vagy arányosan
Oszlopdiagram
1
kb. 50
kategorikus
Az értékek előfordulása vagy kapcsolatok megjelenítése
Vonaldiagram
1
kb. 50
sorszám, intervallum
Az értékek előfordulása
Halmozott kördiagram
2
10 x 5
kategorikus
Két adat kapcsolatának bemutatása százalékosan vagy arányosan
Halmozott oszlopdiagram
2
50 x 5
kategorikus
Az értékek előfordulása vagy kapcsolatok megjelenítése
Halmozott vonaldiagram
2
50 x 10
sorszám, intervallum
Az értékek előfordulása
67
Hisztogram
1
kb. 50
sorszám vagy folyamatos
Eloszlás megjelenítése
Pont diagram
2 vagy 3
Több ezer
folyamatos
Kapcsolatok vizsgálata, trendek felismerése
Irányított gráf
2 vagy 3
1.000
bármely
Kapcsolatok megjelenítése
Fatérkép
1
10.000
kategorikus
hierarchikus adatok megjelenítése és azok összehasonlítása
68
Kiértékeléshez tartozó képek
1. kép
69
2. kép
70
3. kép
71
4. kép
72
5. kép
6. kép 73
7. kép
74
8. kép
75
9. kép
76
10. kép
77
11. kép
78
12. kép
79
13. kép
80
14. kép
81
15. kép
82
16. kép
17. kép 83
18. kép
84
19. kép
85
20. kép
86
21. kép
87
22. kép
88
CD Melléklet Képek: a tesztesetekből készült összes kép. OSSEC szabályok és dekóderek: az OSSEC IDS-hez írt saját szabályok és dekóderek. Programok: az OSSEC-hez írt saját két segédalkalmazásom. Szkriptek: tesztkörnyezet beállító szkriptek, konvertáló szkriptek. Tulajdonságok: Afterglow properties fájlok.