Viskas labai blogai arba naujo tipo eismo perėmimas

kovo 13 d. RIPE kovos su piktnaudžiavimu darbo grupei buvo gautas pasiūlymas laikyti BGP užgrobimą (hjjack) RIPE politikos pažeidimu. Jei pasiūlymas būtų priimtas, interneto tiekėjas, užpultas srauto perėmimu, turėtų galimybę išsiųsti specialų prašymą atskleisti užpuoliką. Jei peržiūros komanda surinktų pakankamai patvirtinančių įrodymų, LIR, kuris buvo BGP perėmimo šaltinis, būtų laikomas įsibrovėliu ir galėtų būti atimtas LIR statusas. Buvo ir tam tikrų argumentų prieš tai pokyčius.

Šiame leidinyje norime parodyti atakos pavyzdį, kai buvo kalbama ne tik apie tikrąjį užpuoliką, bet ir visą paveiktų priešdėlių sąrašą. Be to, toks išpuolis vėl kelia klausimų dėl būsimų tokio tipo eismo perėmimų motyvų.

Per pastaruosius porą metų tik tokie konfliktai kaip MOAS (Kelių kilmės autonominė sistema) buvo nušviesti spaudoje kaip BGP perėmimai. MOAS yra ypatingas atvejis, kai dvi skirtingos autonominės sistemos reklamuoja prieštaraujančius priešdėlius su atitinkamais ASN AS_PATH (pirmasis ASN AS_PATH, toliau vadinamas kilmės ASN). Tačiau bent jau galime pavadinti 3 papildomi tipai srauto perėmimas, leidžiantis užpuolikui įvairiais tikslais manipuliuoti AS_PATH atributu, įskaitant šiuolaikinių filtravimo ir stebėjimo metodų apėjimą. Žinomas atakos tipas Pilosova-Kapely - paskutinis tokio perėmimo tipas, bet visai ne pagal svarbą. Visai įmanoma, kad pastarąsias savaites matėme būtent tokį išpuolį. Toks įvykis turi suprantamą pobūdį ir gana rimtų pasekmių.

Tie, kurie ieško TL;DR versijos, gali slinkti iki paantraštės „Perfect Attack“.

Tinklo fonas

(kad padėtų geriau suprasti su šiuo incidentu susijusius procesus)

Jei norite išsiųsti paketą, o maršruto parinkimo lentelėje yra keli priešdėliai, kuriuose yra paskirties IP adresas, tada maršrutą naudosite ilgiausio ilgio prefiksui. Jei maršruto parinkimo lentelėje yra keli skirtingi maršrutai tam pačiam priešdėliui, pasirinksite geriausią (pagal geriausio kelio pasirinkimo mechanizmą).

Esami filtravimo ir stebėjimo metodai bando analizuoti maršrutus ir priimti sprendimus analizuodami AS_PATH atributą. Reklamos metu maršrutizatorius gali pakeisti šį atributą į bet kokią reikšmę. Gali pakakti tiesiog pridėti savininko ASN AS_PATH pradžioje (kaip kilmės ASN), kad būtų apeiti dabartiniai kilmės tikrinimo mechanizmai. Be to, jei yra maršrutas nuo užpulto ASN iki jūsų, tampa įmanoma išgauti ir naudoti šio maršruto AS_PATH kituose jūsų skelbimuose. Bet koks tik AS_PATH patvirtinimo patikrinimas jūsų parengtiems pranešimams galiausiai bus sėkmingas.

Vis dar yra keletas apribojimų, kuriuos verta paminėti. Pirma, jei priešdėlį filtruoja tiekėjas, jūsų maršrutas vis tiek gali būti filtruojamas (net ir naudojant teisingą AS_PATH), jei priešdėlis nepriklauso jūsų kliento kūgiui, sukonfigūruotam prieš srovę. Antra, galiojantis AS_PATH gali tapti negaliojantis, jei sukurtas maršrutas skelbiamas neteisingomis kryptimis ir tokiu būdu pažeidžia maršruto parinkimo politiką. Galiausiai, bet koks maršrutas su priešdėliu, kuris pažeidžia ROA ilgį, gali būti laikomas negaliojančiu.

Incidentas

Prieš kelias savaites gavome vieno iš mūsų naudotojų skundą. Mes matėme maršrutus su jo kilmės ASN ir /25 priešdėliais, o vartotojas teigė, kad jis jų nereklamavo.

TABLE_DUMP2|1554076803|B|xxx|265466|78.163.7.0/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.7.128/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.18.0/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.18.128/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.226.0/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.226.128/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.164.7.0/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.164.7.128/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||

2019 m. balandžio mėn. pradžios skelbimų pavyzdžiai

NTT /25 priešdėlio kelyje daro jį ypač įtartiną. Įvykio metu LG NTT apie šį maršrutą nežinojo. Taigi taip, kai kurie operatoriai sukuria visą AS_PATH šiems priešdams! Patikrinus kitus maršrutizatorius atskleidžiamas vienas konkretus ASN: AS263444. Peržiūrėję kitus maršrutus su šia autonomine sistema, susidūrėme su tokia situacija:

TABLE_DUMP2|1554076800|B|xxx|265466|1.6.36.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.38.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.23.143.0/25|265466 262761 263444 22356 6762 9498 9730 45528|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.23.143.128/25|265466 262761 263444 22356 6762 9498 9730 45528|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.24.0.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.24.128.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.26.0.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.26.128.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.64.96.0/20|265466 262761 263444 6762 3491 4760|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.64.112.0/20|265466 262761 263444 6762 3491 4760|IGP|xxx|0|0||NAG||

Pabandykite atspėti, kas čia negerai

Atrodo, kad kažkas paėmė priešdėlį iš maršruto, padalijo jį į dvi dalis ir paskelbė maršrutą tuo pačiu AS_PATH tiems dviem priešdams.

TABLE_DUMP2|1554076800|B|xxx|263444|1.6.36.0/23|263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|263444|1.6.38.0/23|263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|61775|1.6.36.0/23|61775 262761 263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|61775|1.6.38.0/23|61775 262761 263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.36.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.38.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|28172|1.6.36.0/23|28172 52531 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|28172|1.6.38.0/23|28172 52531 263444 52320 9583|IGP|xxx|0|0||NAG||

Vienos iš padalintų priešdėlių porų maršrutų pavyzdžiai

Iš karto kyla keli klausimai. Ar kas nors iš tikrųjų išbandė tokio tipo perėmimą praktiškai? Ar kas nors važiavo šiais maršrutais? Kokie priešdėliai buvo paveikti?

Čia prasideda mūsų nesėkmių virtinė ir dar vienas nusivylimas dabartine interneto būkle.

Nesėkmės kelias

Visų pirmą. Kaip galime nustatyti, kurie maršruto parinktuvai priėmė tokius perimtus maršrutus ir kurių eismas šiandien galėtų būti nukreiptas? Manėme, kad pradėsime nuo /25 priešdėlių, nes jie „tiesiog negali turėti visuotinio platinimo“. Kaip galite spėti, mes labai klydome. Ši metrika pasirodė per daug triukšminga ir maršrutai su tokiais priešdėliais gali pasirodyti net iš 1 pakopos operatorių. Pavyzdžiui, NTT turi apie 50 tokių prefiksų, kuriuos platina savo klientams. Kita vertus, ši metrika yra bloga, nes tokius priešdėlius galima išfiltruoti, jei operatorius naudoja mažų priešdėlių filtravimas, visomis kryptimis. Todėl šis metodas netinka ieškant visų operatorių, kurių srautas buvo nukreiptas dėl tokio incidento.

Dar viena gera idėja, kurią manėme, buvo pažiūrėti POV. Ypač maršrutams, kurie pažeidžia atitinkamos ROA maxLength taisyklę. Tokiu būdu galėtume rasti skirtingų kilmės ASN, kurių būsena Netinkama, ir kurie buvo matomi nurodytai AS, skaičių. Tačiau yra „maža“ problema. Šio skaičiaus (skirtingos kilmės ASN skaičiaus) vidurkis (mediana ir režimas) yra apie 150 ir, net ir atmetus mažus priešdėlius, jis išlieka didesnis nei 70. Tokia padėtis turi labai paprastą paaiškinimą: yra tik keletas operatorių, kurie jau naudoja ROA filtrus su „iš naujo nustatyti netinkamus maršrutus“ politika įėjimo taškuose, kad kur tik realiame pasaulyje būtų rodomas maršrutas su ROA pažeidimu, jis galėtų sklisti visomis kryptimis.

Paskutiniai du būdai leidžia rasti operatorių, kurie matė mūsų incidentą (nes jis buvo gana didelis), tačiau apskritai jie netaikomi. Gerai, bet ar galime rasti įsibrovėlį? Kokios yra bendrosios šio AS_PATH manipuliavimo ypatybės? Yra keletas pagrindinių prielaidų:

  • Priešdėlis niekur nebuvo matyti;
  • Kilmės ASN (priminimas: pirmasis ASN AS_PATH) galioja;
  • Paskutinis AS_PATH ASN yra užpuoliko ASN (jei jo kaimynas tikrina kaimyno ASN visuose įeinančiuose maršrutuose);
  • Ataka kyla iš vieno teikėjo.

Jei visos prielaidos yra teisingos, visi neteisingi maršrutai pateiks užpuoliko ASN (išskyrus pradinį ASN), todėl tai yra „kritinis“ taškas. Tarp tikrų užgrobėjų buvo AS263444, nors buvo ir kitų. Net tada, kai atsisakėme incidento maršrutų. Kodėl? Kritinis taškas gali išlikti svarbus net ir teisingiems maršrutams. Tai gali būti prasto ryšio regione arba mūsų pačių matomumo apribojimų pasekmė.

Dėl to yra būdas aptikti užpuoliką, tačiau tik tuo atveju, jei įvykdomos visos aukščiau nurodytos sąlygos ir tik tada, kai perėmimas yra pakankamai didelis, kad būtų galima peržengti stebėjimo slenksčius. Jei kai kurie iš šių veiksnių neįvykdomi, ar galime nustatyti priešdėlius, kurie nukentėjo nuo tokio perėmimo? Tam tikriems operatoriams – taip.

Kai užpuolikas sukuria konkretesnį maršrutą, tikrasis savininkas tokio prefikso neskelbia. Jei iš jo turite dinaminį visų jo priešdėlių sąrašą, tada bus galima palyginti ir rasti iškreiptus konkretesnius maršrutus. Šį prefiksų sąrašą renkame naudodami savo BGP seansus, nes mums pateikiamas ne tik visas operatoriui šiuo metu matomų maršrutų sąrašas, bet ir sąrašas visų prefiksų, kuriuos jis nori reklamuoti pasauliui. Deja, dabar yra kelios dešimtys „Radar“ vartotojų, kurie netinkamai užpildo paskutinę dalį. Netrukus juos informuosime ir bandysime išspręsti šią problemą. Visi kiti gali prisijungti prie mūsų stebėjimo sistemos dabar.

Jei grįšime prie pradinio incidento, ir užpuoliką, ir platinimo sritį aptikome ieškodami kritinių taškų. Keista, bet AS263444 nesiuntė sukonstruotų maršrutų visiems savo klientams. Nors yra ir keistesnis momentas.

BGP4MP|1554905421|A|xxx|263444|178.248.236.0/24|263444 6762 197068|IGP|xxx|0|0|13106:12832 22356:6453 65444:20000|NAG||
BGP4MP|1554905421|A|xxx|263444|178.248.237.0/24|263444 6762 197068|IGP|xxx|0|0|13106:12832 22356:6453 65444:20000|NAG||

Naujausias bandymo perimti mūsų adresų erdvę pavyzdys

Kai buvo sukurti konkretesni mūsų priešdėliai, buvo naudojamas specialiai sukurtas AS_PATH. Tačiau šis AS_PATH negalėjo būti paimtas iš mūsų ankstesnių maršrutų. Mes net nebendraujame su AS6762. Žvelgiant į kitus incidento maršrutus, kai kurie iš jų turėjo tikrą AS_PATH, kuris buvo naudojamas anksčiau, o kiti ne, net jei jis atrodo kaip tikras. Papildomai pakeisti AS_PATH nėra jokios praktinės prasmės, nes srautas bet kuriuo atveju bus nukreiptas į užpuoliką, tačiau maršrutus su „blogu“ AS_PATH gali filtruoti ASPA ar bet koks kitas tikrinimo mechanizmas. Čia mes galvojame apie užgrobėjo motyvaciją. Šiuo metu neturime pakankamai informacijos, kad patvirtintume, kad šis incidentas buvo suplanuota ataka. Nepaisant to, tai įmanoma. Pabandykime įsivaizduoti, nors ir dar hipotetinę, bet potencialiai gana realią situaciją.

Tobula ataka

Ką mes turime? Tarkime, kad esate viešojo transporto paslaugų teikėjas, transliuojantis maršrutus savo klientams. Jei jūsų klientai yra keliuose namuose (keliuose namuose), tuomet gausite tik dalį jų srauto. Tačiau kuo daugiau srauto, tuo daugiau pajamų. Taigi, jei pradėsite reklamuoti tų pačių maršrutų potinklio priešdėlius naudodami tą patį AS_PATH, gausite likusį jų srautą. Dėl to likusius pinigus.

Ar ROA čia padės? Galbūt taip, jei nuspręsite visiškai nustoti jį naudoti Didžiausias ilgis. Be to, labai nepageidautina turėti ROA įrašus su susikertančiais priešdėliais. Kai kuriems operatoriams tokie apribojimai yra nepriimtini.

Atsižvelgiant į kitus maršruto saugumo mechanizmus, šiuo atveju ASPA taip pat nepadės (nes naudoja AS_PATH iš galiojančio maršruto). BGPSec vis dar nėra optimalus pasirinkimas dėl mažo priėmimo lygio ir likusios žemesnės kokybės atakų galimybės.

Taigi mes turime aiškų naudą užpuolikui ir saugumo trūkumą. Puikus mišinys!

Ką turėčiau daryti?

Akivaizdus ir drastiškiausias žingsnis yra peržiūrėti dabartinę maršruto parinkimo politiką. Padalinkite savo adreso erdvę į mažiausius gabalėlius (be persidengimų), kuriuos norite reklamuoti. Pasirašykite ROA tik jiems, nenaudodami parametro maxLength. Tokiu atveju jūsų dabartinis POV gali jus išgelbėti nuo tokios atakos. Tačiau vėlgi, kai kuriems operatoriams toks požiūris nėra pagrįstas, nes jie naudojasi tik konkretesniais maršrutais. Visos problemos, susijusios su dabartine ROA ir maršruto objektų būsena, bus aprašytos vienoje iš mūsų būsimų medžiagų.

Be to, galite pabandyti stebėti tokius perimimus. Norėdami tai padaryti, mums reikia patikimos informacijos apie jūsų priešdėlius. Taigi, jei surengsite BGP sesiją su mūsų surinkėju ir pateiksite mums informaciją apie savo matomumą internete, galime rasti kitų incidentų galimybių. Tiems, kurie dar nėra prisijungę prie mūsų stebėjimo sistemos, pradžiai pakaks maršrutų sąrašo tik su jūsų priešdėliais. Jei turite sesiją su mumis, patikrinkite, ar visi jūsų maršrutai išsiųsti. Deja, tai verta prisiminti, nes kai kurie operatoriai pamiršta vieną ar du priešdėlį ir taip trukdo mūsų paieškos metodams. Jei tai padarysite teisingai, turėsime patikimų duomenų apie jūsų priešdėlius, kurie ateityje padės automatiškai nustatyti ir aptikti šio (ir kitų) jūsų adresų erdvės srauto perėmimo tipus.

Jei realiuoju laiku sužinosite apie tokį srauto perėmimą, galite pabandyti tai atremti patys. Pirmasis būdas yra patiems reklamuoti maršrutus su šiais konkretesniais priešdėliais. Naujo šių priešdėlių atakos atveju pakartokite.

Antrasis būdas yra nubausti užpuoliką ir tuos, kuriems jis yra kritinis taškas (geriems maršrutams), nutraukiant jūsų maršrutų prieigą užpuolikui. Tai galima padaryti pridedant užpuoliko ASN prie senų maršrutų AS_PATH ir taip priversti juos vengti to AS naudojant BGP įtaisytąjį kilpos aptikimo mechanizmą. jūsų pačių labui.

Šaltinis: www.habr.com

Добавить комментарий