Sve je jako loše ili nova vrsta presretanja prometa

13. ožujka RIPE radnoj skupini za borbu protiv zlostavljanja primljena je ponuda smatrajte otimanje BGP-a (hjjack) kršenjem RIPE pravila. Ako bi prijedlog bio prihvaćen, internetski pružatelj napadnut presretanjem prometa imao bi mogućnost poslati poseban zahtjev za razotkrivanje napadača. Kad bi tim za pregled prikupio dovoljno popratnih dokaza, LIR koji je bio izvor presretanja BGP-a smatrao bi se uljezom i mogao bi mu se oduzeti LIR status. Bilo je i nekih argumenata protiv ovoga promjene.

U ovoj publikaciji želimo prikazati primjer napada gdje nije u pitanju samo pravi napadač, već i cijeli popis pogođenih prefiksa. Štoviše, ovakav napad opet postavlja pitanja o motivima budućeg presretanja ove vrste prometa.

Tijekom proteklih nekoliko godina samo su sukobi kao što je MOAS (autonomni sustav s više izvora) popraćeni u tisku kao presretanje BGP-a. MOAS je poseban slučaj u kojem dva različita autonomna sustava reklamiraju proturječne prefikse s odgovarajućim ASN-ovima u AS_PATH (prvi ASN u AS_PATH, u daljnjem tekstu izvorni ASN). Međutim, možemo barem imenovati 3 dodatne vrste presretanje prometa, dopuštajući napadaču da manipulira atributom AS_PATH u različite svrhe, uključujući zaobilaženje modernih pristupa filtriranju i nadzoru. Poznata vrsta napada Pilosova-Kapely - posljednja vrsta takvog presretanja, ali nimalo po važnosti. Sasvim je moguće da je upravo ovakav napad viđen proteklih tjedana. Takav događaj ima razumljivu prirodu i prilično ozbiljne posljedice.

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

Pozadina mreže

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

Ako želite poslati paket i imate više prefiksa u tablici usmjeravanja koja sadrži odredišnu IP adresu, tada ćete koristiti rutu za prefiks s najvećom duljinom. Ako postoji nekoliko različitih ruta za isti prefiks u tablici usmjeravanja, odabrat ćete najbolju (prema mehanizmu odabira najbolje staze).

Postojeći pristupi filtriranju i praćenju pokušavaju analizirati rute i donositi odluke analizom atributa AS_PATH. Usmjerivač može promijeniti ovaj atribut u bilo koju vrijednost tijekom oglašavanja. Jednostavno dodavanje vlasnikovog ASN-a na početak AS_PATH (kao izvornog ASN-a) može biti dovoljno za zaobilaženje trenutnih mehanizama provjere porijekla. Štoviš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 izrađene najave će na kraju proći.

Još uvijek postoji nekoliko ograničenja koja vrijedi spomenuti. Prvo, u slučaju filtriranja prefiksa od strane uzlaznog pružatelja, vaša ruta može i dalje biti filtrirana (čak i s ispravnim AS_PATH) ako prefiks ne pripada vašem konusu klijenta konfiguriranom na uzvodnom. Drugo, važeći AS_PATH može postati nevažeći ako se kreirana ruta oglašava u netočnim uputama i stoga krši pravila usmjeravanja. Na kraju, svaka ruta s prefiksom koja krši ROA duljinu može se smatrati nevažećom.

Incident

Prije nekoliko tjedana primili smo pritužbu od jednog od naših korisnika. Vidjeli smo rute s njegovim izvornim ASN i /25 prefiksom, 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 travnja 2019

NTT u stazi za prefiks /25 čini ga posebno sumnjivim. LG NTT nije bio svjestan ove rute u vrijeme incidenta. Tako da, neki operator stvara cijeli AS_PATH za ove prefikse! Provjera na drugim usmjerivačima otkriva jedan određeni ASN: AS263444. Nakon što smo pogledali druge rute s ovim autonomnim sustavom, naišli smo na sljedeć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 pogoditi što ovdje nije u redu

Čini se da je netko uzeo prefiks iz rute, podijelio je na dva dijela i oglasio rutu s 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 ruta za jedan od podijeljenih parova prefiksa

Postavlja se nekoliko pitanja odjednom. Je li netko zapravo isprobao ovu vrstu presretanja u praksi? Je li netko išao ovim rutama? Koji su prefiksi pogođeni?

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

Put neuspjeha

Prvo najprije. Kako možemo odrediti koji su usmjerivači prihvatili takve presretnute rute i čiji bi se promet danas mogao preusmjeriti? Mislili smo da ćemo početi s prefiksima /25 jer oni "jednostavno ne mogu imati globalnu distribuciju." Kao što možete pretpostaviti, jako smo pogriješili. Pokazalo se da je ova metrika previše bučna i rute s takvim prefiksima mogu se pojaviti čak i kod operatora razine 1. 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 smjerovima. Stoga ova metoda nije prikladna za pronalaženje svih operatera čiji je promet preusmjeren kao rezultat takvog incidenta.

Još jedna dobra ideja za koju smo mislili da je pogledati POV. Posebno za rute koje krše pravilo maxLength odgovarajućeg ROA-a. Na taj način možemo pronaći broj različitih izvornih ASN-ova sa statusom Nevažeći koji su bili vidljivi određenom AS-u. Međutim, postoji "mali" problem. Prosjek (medijan i način) ovog broja (broj ASN-ova različitog porijekla) je oko 150 i, čak i ako filtriramo male prefikse, ostaje iznad 70. Ovo stanje ima vrlo jednostavno objašnjenje: postoji samo nekoliko operatera koji već koriste ROA-filtre s politikom "resetiranja nevažećih ruta" na ulaznim točkama, tako da gdje god se ruta s kršenjem ROA-e pojavi u stvarnom svijetu, može se širiti u svim smjerovima.

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

  • Prefiks nije bio nigdje prije viđen;
  • Izvorni ASN (podsjetnik: prvi ASN u AS_PATH) je valjan;
  • Zadnji 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 pružatelja usluga.

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

Kao rezultat toga, postoji način otkrivanja napadača, ali samo ako su ispunjeni svi gore navedeni uvjeti i samo kada je presretanje dovoljno veliko da prijeđe pragove nadzora. Ako neki od ovih čimbenika nisu ispunjeni, možemo li identificirati prefikse koji su pretrpjeli takvo presretanje? Za određene operatere - da.

Kada napadač stvori određeniju rutu, pravi vlasnik ne oglašava takav prefiks. Ako iz njega imate dinamički popis svih njegovih prefiksa, tada postaje moguće napraviti usporedbu i pronaći iskrivljene specifičnije rute. Prikupljamo ovaj popis prefiksa pomoću naših BGP sesija, jer nam je dan ne samo potpuni popis ruta vidljivih operateru upravo sada, već i popis svih prefiksa koje on želi reklamirati svijetu. Nažalost, sada postoji nekoliko desetaka korisnika Radara koji ne ispunjavaju posljednji dio ispravno. Uskoro ćemo ih obavijestiti i pokušati riješiti ovaj problem. Svi ostali mogu se odmah pridružiti našem sustavu nadzora.

Ako se vratimo na izvorni incident, i napadača i distribucijsko područje detektirali smo traženjem kritičnih točaka. Iznenađujuće, AS263444 nije poslao izmišljene rute svim svojim klijentima. Iako postoji č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 s jedne od naših prethodnih ruta. Nemamo niti komunikaciju s AS6762. Gledajući druge rute u incidentu, neke od njih su imale pravi AS_PATH koji je prethodno korišten, dok druge nisu, čak i ako izgleda kao pravi. Dodatno mijenjanje AS_PATH nema nikakvog praktičnog smisla, budući da će promet ionako biti preusmjeren na napadača, ali rute s “lošim” AS_PATH mogu se filtrirati 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 hipotetsku, ali potencijalno sasvim stvarnu situaciju.

Savršen napad

Što imamo? Recimo da ste pružatelj usluga prijevoza koji emitira rute za svoje klijente. Ako vaši klijenti imaju višestruku prisutnost (multihome), tada ćete dobiti samo dio njihovog prometa. Ali što je više prometa, to je veći vaš prihod. Dakle, ako počnete oglašavati podmrežne prefikse tih istih ruta s istim AS_PATH, dobit ćete ostatak njihovog prometa. Kao rezultat toga, ostatak novca.

Hoće li ROA pomoći ovdje? Možda da, ako ga odlučite potpuno prestati koristiti maksimalna dužina. Osim toga, vrlo je nepoželjno imati ROA zapise s intersekcijskim prefiksima. Za neke operatere takva su ograničenja neprihvatljiva.

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

Dakle, imamo jasan dobitak za napadača i manjak sigurnosti. Odličan miks!

Što da radim?

Očit i najdrastičniji korak je preispitivanje vaše trenutne politike usmjeravanja. 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 može vas spasiti od takvog napada. Međutim, opet, za neke operatere ovaj pristup nije razuman zbog isključivog korištenja specifičnijih ruta. Svi problemi s trenutnim stanjem ROA i objekata rute bit će opisani u jednom od naših budućih materijala.

Osim toga, možete pokušati nadzirati takva presretanja. Da bismo to učinili, potrebne su nam pouzdane informacije o vašim prefiksima. Dakle, ako uspostavite BGP sesiju s našim sakupljačem i date nam informacije o vašoj vidljivosti na internetu, možemo pronaći prostor za druge incidente. Za one koji još nisu spojeni na naš sustav nadzora, za početak će biti dovoljan popis ruta samo s vašim prefiksom. Ako imate sesiju s nama, provjerite jesu li 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 to učini ispravno, imat ćemo pouzdane podatke o vašim prefiksima, koji će nam u budućnosti pomoći da automatski identificiramo i otkrijemo ovu (i druge) vrste presretanja prometa za vaš adresni prostor.

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

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

Izvor: www.habr.com

Dodajte komentar