Sve je jako loše ili je nova vrsta presretanja saobraćaja

13. marta radnoj grupi RIPE za borbu protiv zlostavljanja primljena je ponuda smatraju otmicu BGP-a (hjjack) kao kršenje RIPE politike. Ukoliko bi prijedlog bio prihvaćen, internet provajder koji je napadnut presretanjem saobraćaja imao bi mogućnost da pošalje poseban zahtjev za razotkrivanje napadača. Ako je tim za pregled prikupio dovoljno dokaza, LIR koji je bio izvor BGP presretanja bi se smatrao uljezom i mogao bi mu se oduzeti LIR status. Bilo je i nekih argumenata protiv ovoga promjene.

U ovoj publikaciji želimo prikazati primjer napada u kojem nije u pitanju samo pravi napadač, već i cijela lista pogođenih prefiksa. Štaviše, ovakav napad ponovo postavlja pitanja o motivima za buduća presretanja ove vrste saobraćaja.

U proteklih nekoliko godina, samo su sukobi poput MOAS-a (Autonomni sistem višestrukog porijekla) bili pokriveni u štampi kao BGP presretanja. MOAS je poseban slučaj u kojem dva različita autonomna sistema reklamiraju konfliktne prefikse sa odgovarajućim ASN-ovima u AS_PATH (prvi ASN u AS_PATH, u daljem tekstu izvorni ASN). Međutim, možemo barem nazvati 3 dodatna tipa presretanje saobraćaja, omogućavajući napadaču da manipuliše atributom AS_PATH u različite svrhe, uključujući zaobilaženje modernih pristupa filtriranju i nadgledanju. Poznati tip napada Pilosova-Kapely - poslednja vrsta takvog presretanja, ali nimalo po važnosti. Sasvim je moguće da je to upravo takav napad koji smo vidjeli proteklih sedmica. Takav događaj ima razumljivu prirodu i prilično ozbiljne posljedice.

Oni koji traže TL;DR verziju mogu skrolovati do podnaslova "Perfect Attack".

Mrežna pozadina

(kako bismo vam pomogli da bolje razumijete procese uključene u ovaj incident)

Ako želite da pošaljete paket i imate više prefiksa u tabeli rutiranja koja sadrži odredišnu IP adresu, tada ćete koristiti rutu za prefiks najduže dužine. Ako postoji nekoliko različitih ruta za isti prefiks u tabeli rutiranja, vi ćete izabrati najbolju (prema najboljem mehanizmu odabira putanje).

Postojeći pristupi filtriranju i praćenju pokušavaju analizirati rute i donijeti odluke analizom AS_PATH atributa. Ruter može promijeniti ovaj atribut na bilo koju vrijednost tokom oglašavanja. Jednostavno dodavanje vlasnika ASN-a na početku AS_PATH (kao izvornog ASN-a) može biti dovoljno da se zaobiđu trenutni mehanizmi provjere porijekla. Štaviše, ako postoji ruta od napadnutog ASN-a do vas, postaje moguće izdvojiti i koristiti AS_PATH ove rute u vašim drugim oglasima. Svaka provjera valjanosti samo AS_PATH za vaše napravljene najave će na kraju proći.

Još uvijek postoji nekoliko ograničenja koja vrijedi spomenuti. Prvo, u slučaju filtriranja prefiksa od strane upstream provajdera, vaša ruta može i dalje biti filtrirana (čak i sa ispravnim AS_PATH) ako prefiks ne pripada vašem klijentskom konusu konfigurisanom na uzvodnom nivou. Drugo, važeći AS_PATH može postati nevažeći ako je kreirana ruta reklamirana u pogrešnim smjerovima i, na taj način, krši politiku rutiranja. Na kraju, svaka ruta s prefiksom koji krši ROA dužinu može se smatrati nevažećom.

Incident

Prije nekoliko sedmica primili smo pritužbu jednog od naših korisnika. Vidjeli smo rute s njegovim porijeklom ASN i /25 prefiksima, dok je korisnik tvrdio da ih nije reklamirao.

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||

Primjeri najava za početak aprila 2019

NTT na putu za /25 prefiks ga čini posebno sumnjivim. LG NTT nije znao za ovu rutu u vrijeme incidenta. Dakle, da, neki operater kreira cijeli AS_PATH za ove prefikse! Provjera na drugim ruterima otkriva jedan određeni ASN: AS263444. Nakon što smo pogledali druge rute sa ovim autonomnim sistemom, naišli smo na sledeću situaciju:

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||

Pokušajte da pogodite šta ovde nije u redu

Izgleda da je neko uzeo prefiks sa rute, podelio ga na dva dela i reklamirao rutu sa istim AS_PATH za ta dva prefiksa.

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||

Primjer rute za jedan od podijeljenih parova prefiksa

Postavlja se nekoliko pitanja odjednom. Da li je neko probao ovu vrstu presretanja u praksi? Da li je neko krenuo ovim rutama? Koji su prefiksi pogođeni?

Ovdje počinje naš niz neuspjeha i još jedan krug razočaranja trenutnim stanjem zdravlja interneta.

Put neuspjeha

Krenimo redom. Kako možemo utvrditi koji ruteri su prihvatili takve presretnute rute i čiji bi promet danas mogao biti preusmjeren? Mislili smo da ćemo početi sa /25 prefiksima jer oni "jednostavno ne mogu imati globalnu distribuciju." Kao što možete pretpostaviti, veoma smo pogrešili. Pokazalo se da je ova metrika previše bučna i rute s takvim prefiksima mogu se pojaviti čak i od Tier-1 operatera. Na primjer, NTT ima oko 50 takvih prefiksa koje distribuira svojim klijentima. S druge strane, ova metrika je loša jer se takvi prefiksi mogu filtrirati ako ih operator koristi filtriranje malih prefiksa, u svim pravcima. Stoga ova metoda nije prikladna za pronalaženje svih operatera čiji je promet bio preusmjeren kao rezultat ovakvog incidenta.

Još jedna dobra ideja za koju smo mislili da je pogledamo POV. Posebno za rute koje krše pravilo maxLength odgovarajućeg ROA. Na ovaj način smo mogli pronaći broj različitih izvornih ASN-ova sa statusom Nevažeći koji su bili vidljivi datom AS-u. Međutim, postoji "mali" problem. Prosjek (medijan i mod) ovog broja (broj ASN-ova različitog porijekla) je oko 150 i, čak i ako filtriramo male prefikse, ostaje iznad 70. Ovo stanje stvari ima vrlo jednostavno objašnjenje: postoji samo nekoliko operatera koji već koriste ROA filtere sa politikom „resetovanja nevažećih ruta“ na ulaznim tačkama, tako da gde god se ruta sa kršenjem ROA pojavi u stvarnom svetu, može da se širi u svim pravcima.

Zadnja dva pristupa nam omogućavaju da pronađemo operatere koji su vidjeli naš incident (budući da je bio prilično velik), ali općenito nisu primjenjivi. U redu, ali možemo li pronaći uljeza? Koje su opće karakteristike ove AS_PATH manipulacije? Postoji nekoliko osnovnih pretpostavki:

  • Prefiks nije viđen nigde ranije;
  • Izvorni ASN (podsjetnik: prvi ASN u AS_PATH) je važeći;
  • Posljednji ASN u AS_PATH je napadačev ASN (u slučaju da njegov susjed provjerava susjedov ASN na svim dolaznim rutama);
  • Napad dolazi od jednog provajdera.

Ako su sve pretpostavke tačne, onda će sve netačne rute predstavljati napadačev ASN (osim izvornog ASN-a) i, prema tome, ovo je "kritična" tačka. Među pravim otmičarima bio je i AS263444, iako je bilo i drugih. Čak i kada smo odbacili rute incidenta iz razmatranja. Zašto? Kritična tačka može ostati kritična čak i za ispravne rute. To može biti ili rezultat loše povezanosti u regiji ili ograničenja u našoj vidljivosti.

Kao rezultat toga, postoji način da se otkrije napadač, ali samo ako su ispunjeni svi gore navedeni uslovi i samo kada je presretanje dovoljno veliko da prođe pragove praćenja. Ako neki od ovih faktora nisu ispunjeni, možemo li onda identificirati prefikse koji su pretrpjeli takvo presretanje? Za određene operatere - da.

Kada napadač kreira određeniju rutu, pravi vlasnik ne oglašava takav prefiks. Ako iz njega imate dinamičku listu svih njegovih prefiksa, tada postaje moguće napraviti poređenje i pronaći iskrivljene konkretnije rute. Ovu listu prefiksa prikupljamo koristeći naše BGP sesije, jer nam je data ne samo potpuna lista ruta koje su trenutno vidljive operateru, već i lista svih prefiksa koje želi da reklamira svijetu. Nažalost, sada postoji nekoliko desetina korisnika Radara koji zadnji dio ne popune kako treba. Uskoro ćemo ih obavijestiti i pokušati riješiti ovaj problem. Svi ostali se sada mogu pridružiti našem sistemu za praćenje.

Ako se vratimo na prvobitni incident, i napadača i područje distribucije smo otkrili traženjem kritičnih tačaka. Iznenađujuće, AS263444 nije poslao izmišljene rute svim svojim klijentima. Iako postoji i čudniji trenutak.

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||

Nedavni primjer pokušaja presretanja našeg adresnog prostora

Kada su kreirani specifičniji za naše prefikse, korišten je posebno kreiran AS_PATH. Međutim, ovaj AS_PATH nije mogao biti preuzet ni sa jedne od naših prethodnih ruta. Nemamo čak ni komunikaciju sa AS6762. Gledajući druge rute u incidentu, neki od njih su imali pravi AS_PATH koji je prethodno korišten, dok drugi nisu, čak i ako izgleda kao pravi. Promjena AS_PATH dodatno nema nikakvog praktičnog smisla, jer će promet ionako biti preusmjeren na napadača, ali rute sa „lošim“ AS_PATH mogu biti filtrirane pomoću ASPA ili bilo kojeg drugog mehanizma inspekcije. Ovdje razmišljamo o motivaciji otmičara. Trenutno nemamo dovoljno informacija da potvrdimo da je ovaj incident bio planirani napad. Ipak, moguće je. Pokušajmo zamisliti, iako još uvijek hipotetičku, ali potencijalno sasvim realnu situaciju.

Perfect Attack

Šta imamo? Recimo da ste tranzitni provajder koji emituje rute za svoje klijente. Ako vaši klijenti imaju višestruku prisutnost (multihome), tada ćete dobiti samo dio njihovog prometa. Ali što je veći promet, veći je vaš prihod. Dakle, ako počnete oglašavati prefikse podmreže ovih istih ruta sa istim AS_PATH, primit ćete ostatak njihovog prometa. Kao rezultat toga, ostatak novca.

Hoće li ROA pomoći ovdje? Možda da, ako odlučite da ga potpuno prestanete koristiti maxLength. Osim toga, vrlo je nepoželjno imati ROA zapise sa prefiksima koji se ukrštaju. Za neke operatere takva ograničenja su neprihvatljiva.

Uzimajući u obzir druge sigurnosne mehanizme rutiranja, ASPA ni u ovom slučaju neće pomoći (jer koristi AS_PATH sa važeće rute). BGPSec još uvijek nije optimalna opcija zbog niske stope usvajanja i preostale mogućnosti napada na downgrade.

Dakle, imamo jasnu korist za napadača i nedostatak sigurnosti. Great mix!

Šta da radim?

Očigledan i najdrastičniji korak je da preispitate svoju trenutnu politiku rutiranja. Podijelite svoj adresni prostor na najmanje dijelove (bez preklapanja) koje želite oglašavati. Potpišite ROA samo za njih, bez korištenja parametra maxLength. U ovom slučaju, vaš trenutni POV vas može spasiti od takvog napada. Međutim, opet, za neke operatere ovaj pristup nije razuman zbog isključive upotrebe specifičnijih ruta. Svi problemi sa trenutnim stanjem ROA i objekata rute biće opisani u jednom od naših budućih materijala.

Osim toga, možete pokušati pratiti takva presretanja. Da bismo to učinili, potrebne su nam pouzdane informacije o vašim prefiksima. Stoga, ako uspostavite BGP sesiju sa našim sakupljačem i pružite nam informacije o vašoj vidljivosti na Internetu, možemo pronaći prostor za druge incidente. Za one koji još nisu povezani na naš sistem za praćenje, za početak će biti dovoljna lista ruta samo sa vašim prefiksima. Ako imate sesiju s nama, provjerite da li su sve vaše rute poslane. Nažalost, ovo vrijedi zapamtiti jer neki operateri zaborave prefiks ili dva i tako ometaju naše metode pretraživanja. Ako se uradi ispravno, imaćemo pouzdane podatke o vašim prefiksima, koji će nam u budućnosti pomoći da automatski identifikujemo i otkrijemo ovu (i druge) vrste presretanja saobraćaja za vaš adresni prostor.

Ako postanete svjesni takvog presretanja vašeg prometa u realnom vremenu, možete pokušati sami da se suprotstavite. Prvi pristup je da sami oglašavate rute sa ovim specifičnijim prefiksima. U slučaju novog napada na ove prefikse, ponovite.

Drugi pristup je da kaznite napadača i one za koje je on kritična tačka (za dobre rute) tako što ćete prekinuti pristup vaših ruta napadaču. Ovo se može učiniti dodavanjem napadačevog ASN-a na AS_PATH vaših starih ruta i tako ih prisiliti da izbjegnu taj AS koristeći ugrađeni mehanizam za detekciju petlje u BGP-u za tvoje dobro.

izvor: www.habr.com

Dodajte komentar