Az útvonalválasztó tábla birtoklása – Új OSPF támadások Bevezetés Az OSPF (Open Shortest Path First) egy link-state protokoll, melyet az IETF Interior Gateway Protocol munkacsoportja fejlesztett ki, elsősorban a RIP hiányosságai miatt. Az OSPF használata során egy hoszt megkapja az összes változást, ami a hálózatban történik, és ezt azonnal továbbítja az összes többi hoszt felé, annak érdekében, hogy ugyanazt az útvonal választási táblát használják. A RIP 30 másodpercenként a teljes táblázatot újraküldi, ehhez képest az OSPF mindig csak az aktuális változásokat továbbítja, és ezeket is csak akkor, amikor bekövetkeznek. A következő két támadást az OSPF protokoll ellen a 2011.-es amerikai Blackhat konferencián Alex Kirshon, Dima Gonikman és Dr. Gabi Nakibly mutatták be. A támadás - Álcázott LSA A 2328-as RFC 13.1-es bekezdése alapján két LSA példány egyforma, ha: 1) Ugyanaz a szekvencia szám, 2) ugyanaz az ellenőrző összeg, és 3) megközelítőleg egyforma idősek (15 percen belül van a különbség). Ez még akkor is igaz, ha az LSA-k tartalma különböző! A támadó kihasználhatja ezt a sebezhetőséget azzal, hogy ugyanazt a három mezőt tartalmazó (szekvencia, ellenőrző összeg és életkor) LSA-t hirdeti, mint az érvényes LSA-t hirdető áldozat útvonalválasztó. Ennek az az előnye, hogy még ha az áldozat meg is kapja a hamisított LSA-t, nem vált ki védekezést, mert az álcázott LSA ugyanannak a példánynak tekinthető, mint az érvényes LSA (még akkor is, ha a tartalmuk különböző) és emiatt figyelmen kívül hagyja. Minden más útvonalválasztó az AS-ben szintén duplikációnak veszi a hibás LSA-t, és ezért nem fogják felvenni az LSA-t az LSA adatbázisukba. Ennek kijavítására a támadó álcázza az LSA-t a következő érvényes LSA példányaként, amit az áldozat eredetinek fog tartani. Ahogy a támadó elküldi az álcázott LSA-t, előidézve azt, hogy az áldozat az eredeti LSA példányának tekintse. A kiváltás egyszerűen kiváltódik a védekező mechanizmus kihasználásával. Nevezetesen, a támadó elküld egy hibás
LSA-t az áldozatnak, aki védekezésül elküldi a következő érvényes LSA példányát. A következő ábra illusztrálja a támadás alapjai:
1.ábra – A hamis LSA illusztrációja (1) A támadás az R1 –nek küldött hamisított LSA-k küldésével kezdődik. Ez minden bizonnyal kiváltja a védekezési reakciót. Hívjuk ezt a csomagot „Trigger”-nek. (2) Ezzel egy időben a támadó elküldi az álcázott R1 LSA-t az R2-nek. Az álcázott LSA egy speciálisan összeállított csomag, ami ugyanazt a szekvenciát, ellenőrző összeget és életkort (+/- 15 perc) tartalmazza, mint a jövőbeli R1 LSA védekező csomagja. Később lesz szó arról, hogyan lehet ezt a három mezőt megjósolni. (3) R1 elküldi a védekező LSA-t. Ezt az R2 megkapja, de mivel mind a három mező megegyezik az álcázott LSA-val, a védekező csomagot az R2 ugyanannak a példánynak fogja tekinteni, mint amit éppen megkapott. Ezért nem fogja frissíteni az LSA adatbázisát, és nem fogja csomagokkal elárasztani. (4) R2 újra elárasztja az álcázott LSA-t. Ezt megkapja az R1, de ugyanazt a három mezőt tartalmazza, mint a védekező LSA, így R1 úgy látja, mint ugyanazt a példányt, amit elküldött. Ezért nem frissíti az LSA adatbázist, és nem árasztja el újra csomagokkal vagy vált ki védekezést.
Fordította: woodspeed
Oldal 2
Ez után a csomag szekvencia után R1 és R2-nek különböző R1 LSA példány lesz az LSA adatbázisában. Ez az állapot állandó. A két útvonalválasztó akkor fog újra szinkronizálódni, ha R1 elküldi a következő LSA példányt 30 perc múlva (alapértelmezett LSA intervallum). Az álcázott LSA három mezője a következőképpen határozható meg. A jövőbeli érvényes LSA (védekező) tartalma determinisztikus és előre meghatározott. A szekvencia, életkor és ellenőrző összeg mezőket is beleértve. Az álcázott csomag életkor és szekvencia értékeinek beállítása egyszerű. Az életkornak 0-nak kell lennie, amíg a hirdetett álcázott csomag és a védekező LSA közötti idő különbségnek kevesebbnek kell lennie, mint 15 perc. Az álcázott csomag szekvenciájának eggyel nagyobbnak kell lennie, mint a kiváltó csomagnak. Az ellenőrző összeg egy kicsit trükkösebb. Hozzáadhatunk az álcázott LSA-hoz egy olyan hamis kapcsolat bejegyzést, aminek a mező értékét úgy választjuk meg, hogy az álcázott LSA ellenőrző összege ugyanaz lesz, mint a védekező LSA ellenőrző összege. Mivel az LSA ellenőrző összege lineáris kombinációja az LSA három mezőjének, a hamis kapcsolat
bejegyzés
könnyen
kiszámolható.
Biztosak
vagyunk,
hogy nagy
valószínűséggel léteznek az értékek, mert az ellenőrző összeg csak 16 bit, míg a hamis kapcsolat bejegyzés 88 bit, és tetszőlegesen meghatározható (#TOS, metrika, Link ID, és Link Data). A hamis kapcsolat pontos értéke a támadás szempontjából nem számít. A kapcsolat nem lesz kétirányú (pl.: másik útvonalválasztó nem fogja hirdetni a másik irányból azt a kapcsolatot), nem lesz figyelembe véve az útvonalválasztó tábla számításakor. Megjegyzendő, hogy a fentebb illusztrált támadáshoz szükséges, hogy a támadó tudja az áldozathoz tartozó linkek MD5 kulcsát. Másik erős és potenciális használata a támadásnak, ha egymást követően hirdetődik a kiváltó és az álcázott LSA a támadó helyi hálózatán, ahelyett, hogy a csomagokat unicast módon küldi az áldozatnak és szomszédjainak. Innentől kezdve, a két csomag elárasztja az egész AS-t, amíg az útvonalválasztók beveszik az álcázott LSA-t az adatbázisukba. Amint a kiváltó csomag megérkezik az áldozat útvonalválasztóhoz, elkezdi hirdetni a védekező LSA-t. A védekező LSA elárasztja az áldozat szomszédjait, de ha a szomszédok már megkapták és bevették a táblázatukba az álcázott LSA-t, a védekező LSA-t, mint duplikált csomagot el fogják utasítani a szomszédok, és nem Fordította: woodspeed
Oldal 3
árasztják el saját szomszédjaikat. Ez azt jelenti, hogy verseny alakult ki a védekező és az álcázott LSA között.
Amelyik először az útvonalválasztóhoz megérkezőt
elfogadja, a másikat pedig duplikáció miatt elutasítja.
Az álcázott LSA jóval
hamarabb érkezik meg, mint a védekező LSA, így sokkal nagyobb esélye van, hogy egy nagyobb szeletet hódít meg az AS-ből. Itt egy tipikus térkép az AS-ről a támadás után. A piros rész jelzi, hogy ezen belül az útvonalválasztók az álcázott LSA-t veszik figyelembe, a kék pedig jelzi a védekező LSA-t küldő útvonalválasztó meddig ér el.
2. ábra – A támadás elindítása után az AS térképe Látható tehát, hogy ez a támadás egy effektív eszköz egy a támadó által nem kontrollált útvonalválasztó LSA-jának tartós meghamisításához. A támadó elérhet egy olyan helyzetet, ahol az összes vagy a legtöbb útvonalválasztó a doménen belül az áldozat útvonalválasztó hamisított LSA-val rendelkezik. A támadó addig ismételheti a támadást, amíg teljesen ellenőrzése alá nem vonja az AS-ben látott topológiát és az útvonalválasztók tábláit. Távoli hamis szomszédság A sebezhetőséget, amit ez a támadás kihasznál a 2328-as RFC 10.8-as szekciója írja le. Ebben a részben a szomszédsági felépítés folyamata alatt küldött adatbázis leíró csomagok küldéséről lesz szó. Ez az áttekintés megmutatja, hogy a mester útvonalválasztó sikeresen teljesítheti a szomszédsági felépítést anélkül, hogy látná a szolga üzeneteit. Ez azt jelenti, hogy a támadó távolról felépítheti a szomszédságot Fordította: woodspeed
Oldal 4
az áldozat útvonalválasztóval addig, amíg az a felépítés során a szolga szerepét tölti be. Az áldozat útvonalválasztó szomszédjának rendelkeznie kell egy IP címmel, ami az áldozat alhálózatába tartozik. A támadónak fantom útvonalválasztónak kell kiadnia magát az áldozat kapcsolatában. Az áldozat felépíti a szomszédságot ezzel a fantom útvonalválasztóval. Miután a támadás végrehajtódott és az áldozat útvonalválasztó szomszédja a fantom útvonalválasztónak, az áldozat hirdeti a fantom útvonalválasztóhoz kapcsolatot! Ez egy döntő pillanat a támadásban és a fő előnye is. Ha a támadó a fantom útvonalválasztó nevében hamis LSA hirdet, ami összekapcsolja az áldozat útvonalválasztóval, a hirdetett kapcsolat a fantom útvonalválasztóval kétirányú kapcsolatot hoz létre közte és a LAN között. Ez azt jelenti, hogy az összes többi útvonalválasztó a doménban átveszi ezt a kapcsolatot, és
figyelembe
veszik
a
fantom
útvonalválasztó
által
hirdetett
LSA-t
az
útvonalválasztó tábla számításakor. Ez az első olyan támadás, ami sikeresen létrehozza az állandó kétirányú kapcsolatot a valódi és a fantom útvonalválasztó között, ezáltal a fantom útvonalválasztó LSA-ját számításba veszi a doménben lévő összes többi útvonalválasztó az útvonalválasztó tábla számításakor. A támadó most már hirdetheti a fantom útvonalválasztó nevében a tetszőleges LSA-t. Ezek az LSA-k hatással vannak az AS-ben lévő útvonalválasztók tábláira. Ahhoz, hogy a támadás sikeres legyen, a támadónak a következő információkat kell ismernie: 1. A távoli LAN MD5 kulcsát. A legtöbb esetben ez ugyanaz a megosztott titok az ASben lévő LAN-ok között. 2. A távoli LAN beállítási paraméterei. Pl.: HelloInterval, RouterDeadInterval, stb… A legtöbb esetben ez ugyanaz az AS-ben lévő LAN-oknál.
Fordította: woodspeed
Oldal 5
3.ábra – A távoli szomszédság felépítéses támadás illusztrációja A potenciális haszna ennek a támadásnak, hogy fekete lyukba terelje a meghatározott alhálózati forgalmat a fantom által hirdetett alhálózati IP címmel, ami a fekete lyukat létrehozza. A támadó bárhol képes fantom útvonalválasztót létrehozni az AS-n belül, így képes minden forgalmat elterelni, aminek a célja ez az alhálózat.
4.ábra – A kiválasztott AS alhálózatba tartó egész forgalom fekete lyukba terelése A másik potenciális haszna a támadásnak a fantom útvonalválasztó helyének meghatározása a stratégiai ”helyen”, ami a nagy volumenű forgalomnak megengedi az útvonal kívánt rövidítését az AS-ben. Például, a fantom útvonalválasztó létrehozhat egy kapcsolatot két távoli hálózat között az AS-ben, ahogy a következő ábra is illusztrálja. Ezt a két hálózatban lévő, két áldozat útvonalválasztó célba vételével
lehet
megtenni.
A
két
áldozat
útvonalválasztónak
a
kiválasztott
útvonalválasztók megfelelő szomszédjainak kell lennie.
Fordította: woodspeed
Oldal 6
5.ábra – A fantom útvonalválasztó a megfelelő rövidítés a legtöbb AS forgalomnak A szomszédság felépítésének részletezett szekvenciája a következő. A támadó által küldött összes csomag meghamisított IP forráscímmel rendelkezik, ami megegyezik a fantom útvonalválasztó hamis IP címével. Ennek a címnek az áldozat alhálózati címének része kell, hogy legyen.
6.ábra – A távoli hamis szomszédság felépítéses támadás szekvenciája A támadás az áldozat útvonalválasztónak küldött Hello csomagokkal kezdődik. Mivel a Hello tartalmazza a szomszédját, az áldozat ID listáját, az áldozat belép a 2-utas állapotba. A feltételezés szerint az áldozat a kiválasztott útvonalválasztó (DR), ezért elkezdi felépíteni a szomszédságot a fantom útvonalválasztóval és belép az ExStart Fordította: woodspeed
Oldal 7
állapotba. Ezután az áldozat elküldi a DB leíró (DBD) csomagot a saját szekvenciájával (y). Ez a csomag, mint minden csomag, amit az áldozat elküld, a támadó nem kapja meg, mert a csomag célja az áldozat alhálózatában lévő hamis IP címmel rendelkező fantom útvonalválasztó. A támadó ezután elküldi az első DBD-t. A csomag időzítése nem olyan fontos, mert az áldozat néhány alkalommal (alapértelmezett érték az 5 másodperc) újraküldi az első DBD-t. A támadó (a fantom) az első DBD-ben beállítja az Initialize (I), More (M), és Master (MS) biteket, és egy tetszőleges szekvencia értéket (x). Mivel a csomagot úgy hozza létre, hogy a fantom ID-je nagyobb, mint az áldozat ID-je, az áldozat lesz a szolga, és a fantom pedig a gazda. Ez azt jelenti, hogy az áldozat elfogadja a fantom szekvenciáját (x), és csak azután küldi el a következő DBD-t, ha a kap a fantomtól egy DBD-t. A támadó ezután folyamatosan küldi a DBD-ket, emelve a szekvencia értéket. A fantom összes DBD-jének nincs LSA-ja, mintha a fantom DBD-jának LSA-ja üres lenne. A támadó továbbra is küldi ezeket a DBD-ket, engedve ezzel az áldozatnak, hogy elküldje az összes LSA-ját az LSA DB-jéből. A támadó valójában nem tudja, mennyi DBD üzenetet kell az áldozatnak küldenie, hogy megkapja a DB tartalmát, de ezt könnyen egy számhoz kötheti (általában 10 BDB elég). Ebben a példában ez a szám N. Nem számít, ha N felülbecsült; az áldozat továbbra is küldi az üres DBD-ket, még akkor is, ha nincs LSA, amit küldjön. Miután a támadó (fantom) elküldi az utolsó DBD-t (feltételezzük, hogy az áldozat is befejezte a saját DB-jének küldését), az áldozat kihagyja a Loading állapotot, mivel a fantomnak nincs új LSA-ja, és ezért az áldozat belép a Full állapotba. Ennél a pontnál az áldozat felépítette a szomszédságot a fantommal, és ennek megfelelően frissíti a hálózatának Hálózati LSA-ját. A támadásnak néhány kikötése van: 1. A szomszédságot folyamatosan karban kell tartani Hello üzenetek küldésével az útvonalválasztóknak. Az alapértelmezett érték 40 másodperc. 2. A szomszédság kiépítésének folytatásaként az áldozat elárasztja a fantomot LSAval, és ACK üzenetek vár tőle. Az OSPF specifikáció szerint, ha a szomszéd útvonalválasztó nem válaszol ACK üzenettel, az áldozat a végtelenségig újraküldi az LSA-kat. Ennek ellenére, azt figyeltük meg, hogy a Cisco útvonalválasztó 125 másodperc után feladja és bontja a szomszédságot. Fordította: woodspeed
Oldal 8
Az utolsó megkötés azt jelenti, hogy a Cisco útvonalválasztók elleni támadást 125 másodpercenként meg kell ismételni. Meg kell jegyezni, ha a támadó és az áldozat útvonalválasztó egy hálózatban van, a támadó mindegyik LSA-t ismeri, amit az áldozat küld. Ez azt jelenti, hogy meghamisíthatja az ACK üzeneteket is (a válasz időablaka több mint 120 másodperc). Azonban ezt a gyakorlatban nem teszteltük. Befejezés A két támadás az OSPF specifikáció analizálásán alapszik [RFC 2328]. A támadás sikeres volt a 15.0(1)M IOS rendszerrel rendelkező Cisco útvonalválasztók ellen (7200-es széria). Ez azt jelenti, hogy a fentebb leírt támadásokat valóban implementálták az Cisco IOS-ben, ahogy azt vártuk. Úgy gondoljuk, hogy a cikkben leírt támadások úttörő jellegűek. Eddig mindenki úgy tartotta, hogy még a belső támadó sem képes tartósan meghamisítani egy nem ellenőrzött útvonalválasztó LSAjá-t. A mi munkák ezzel megcáfolta ezt az állítást. Az új támadásból levonható az a következtetés, hogy egyetlen útvonalválasztóval az egész útvonalválasztó domén ellenőrzés alá vonható. Az eredeti cikk megtalálható az irodalomjegyzékben!
Fordította: woodspeed
Oldal 9
Irodalomjegyzék https://media.blackhat.com/bh-us11/Nakibly/BH_US_11_Nakibly_Owning_the_Routing_Table_WP.pdf http://netpedia.hu/ospf , http://wiki.hup.hu/index.php/OSPF
Fordította: woodspeed
Oldal 10