Stream Control Transmission Protocol (SCTP) napredni je protokol transportnog sloja koji pruža mogućnosti višestrukog usmjeravanja. SCTP krajnje točke mogu istovremeno koristiti više adresa mežnog sloja, što omogućuje spajanje krajnje točke na više adresa kako bi se postigla veća redundancija. Prijenos podataka omogućuje se samo na jednu adresu odjednom, a ostale se adrese koristi kada je potrebno ponovno slanje. U nastavku su obrađene neke karakteristike SCTP-a, kao i motivacija za njegovo razvijanje. Na kraju obrađene su i neke od ranjivosti samog protokola, kao i prostori za napad uzrokovani neobzirnošću samog korisnika.
Keywords: SCTP; TCP; višestruko; usmeravanje;
U sklopu ovog seminarsko rada obrađene su neke od karakteristika protokola transportnog sloja, Stream Control Transmission Protocol-a. Taj je protokol razvijen jer postojeći protokoli tog sloja nisu nudili adekvatna rješenja za probleme kojima se bavio prijenos telefonskih poziva. U nastavku ćemo također obraditi i neke od njegovih ranjivosti, te prostor koji napadači mogu iskoristiti kako bi nanijeli štetu, koristeći ovaj protokol.
Internetski protokol (IP) adresni je sustav interneta kojemu su temeljne funkcionalnosti dostava paketa informacija sa izvorišnih na odredišne uređaje. IP je primarni način preko kojeg se uspostavljaju mrežne veze te je on baza interneta. IP ne upravlja redom kojim paketi prolaze. IP također ne upravlja otkrivanjem pogrešaka. Za takve funkcionalnosti zadužen je neki drugi protokol. Kada je potrebna pouzdana isporuka i dostava paketa, najčešće se koristi Transmission Control Protocol (TCP), a, kad takva pouzdanost kod isporuke paketa nije potrebna, najčešće se koristi User Datagram Protocol(UDP).
TCP je protokol koji izvršava svoju zadaću za pouzdanim slanjem paketa mrežom, no sve veći broj modernih aplikacija neka od njegovih svojstava smatraju previše ograničavajućim. Iz toga slijedi da su mnoge moderne aplikacije posegnule za izgradnjom vlastitih mrežnih protokola za pouzdan prijenos podataka kojima je baza UDP. Neka od ograničenja koje bi korisnici htjeli zaobići:
-TCP pruža i pouzdan prijenos podataka i strog raspored slanja samih podataka. Nekim je aplikacijama bitan isključivo pouzdan prijenos podataka, dok je drugim aplikacijama potreban samo poredak kod prijenosa podataka. Za oba tipa ovih aplikacija, TCP predstavlja isključivo nepotrebno usporavanje rada kod svoje primjene, budući da TCP ne nudi funkcionalnost potrebnu kako bi se pojedini dijelovi njegovih mogućnosti palile, odnosno gasile, već ovisno o korisničkoj potrebi u izgradnji vlastitih aplikacija.
-Činjenica da je TCP usredotočen na tok podataka često se pokazuje kao loša za rad mnogih aplikacija. Aplikacije često moraju izgrađivati vlastite sustave za označavanje samih poruka, a sam protokol često zahtjeva korištenje „push“ mogućnosti (korištenjem „push“ zastavice) kako bi osigurao prijenos podataka do ciljanog odredišta u razumnom vremenu.
-TCP nema dobre mogućnosti za jednostavnu uspostavu visoko dostupnog prijenosa podataka kojeg je moguće višestruko usmjeriti na različita odredišta.
-TCP je relativno ranjiv na DDoS napade, kao što je SYN napad.
Prijenos Public Switched Telephone Network (PSTN) signala preko IP mreže upravo je jedna od zadaća kod koje su značajne sve od ovih ograničavajućih značajki TCP-a. Prijenos tih PSTN signala bio je glavni pokretač za razvoj Stream Control Transmission Protocol-a (SCTP), ali SCTP se pokazao kao dobra odgovor na probleme mnogih aplikacija.
SCTP je kao sloj smješten između korisničke aplikacije koja ga koristi te mreže koja koristi pakete kao što je IP. U nastavku ovog seminara pretpostavlja se upravo korištenje SCTP-a na IP-u. Osnovna usluga koju pruža SCTP je pouzdan prijenos korisničkih poruka između SCTP korisnika. Poruke se razmjenjuju između dvije SCTP krajnje točake.
SCTP krajnje točke su logički primatelji odnosno pošiljatelji SCTP paketa. Kod više odredišnih poslužitelja, SCTP krajnje točke se međusobno prikazuju svojim „peer“-ovima kao kombinacije popisa dostupnih transportnih adresa na koje se željeni SCTP paketi mogu slati i popisa adresa sa kojih SCTP paketi povezani uz ovu krajnju točku mogu pristizati drugim krajnjim točkama. Sve transportne adrese korištene od strane SCTP krajnje točke moraju koristiti isti „port“ broj, ali mogu imati različite IP adrese. Transportna adresa SCTP krajnje točke ne smije se koristiti kod neke druge SCTP krajnje točke, tj. transportna adresa jedinstvena je za SCTP krajnju točku.
SCTP paketi su jedinice podataka koje se šalju između SCTP sučelja i IP mreže. SCTP paket uključuje SCTP zaglavlje, SCTP kontrolne blokove te začahurene korisničke podatke.
SCTP je usmjeren na veze između krajnjih točaka, no sama veza je „šira“ od veza koje se uspostavljaju kod TCP-a. SCTP pruža mogućnosti svakoj krajnjoj točki da, prilikom uspostave veze, razmijeni liste transportnih adresa preko kojih se ta krajnja točka može doseći i s kojih podatci povezani uz tu krajnju točku mogu pristizati.
Iduća figura prikazuje odnose između dvaju SCTP čvorova unutar mreže. Kao što je prije objašnjeno, SCTP sloj “leži na” IP mrežnom sloju.
_____________ _____________ | SCTP | | SCTP | | Aplikacija | | Aplikacija | |-------------| |-------------| | SCTP | | SCTP | | Transportne | | Transportne | | Usluge | | Usluge | |-------------| |-------------| | |Jedna ili više ---- Jedna ili više | | | IP Mrežne |IP addresa \/ IP addresa| IP Mrežne | | Usluge | /\ | Usluge | |_____________| ---- |_____________| SCTP Čvor A |<-------- Mrežni prijenos ------->| SCTP Čvor B
Figura 1. Prikaz slojeva kod veze dvaju čvorova
Veza se uspostavlja na zahtjev SCTP korisnika te se sama veza uspostavlja u 4 koraka, za razliku od TCP-a kod kojeg se uspostava veze provodi u 3 koraka. Kod uspostave veze razmjenjuju se kolačići koji sadrže sve potrebne zastavice i adrese potrebne za uspostavu veze. SCTP također podržava „dostojanstveno“ gašenje veze. Slika koja u nastavku prikazuje način na koji se veza uspostavlja kod SCTP-a. Za razliku od TCP-a, SCTP ne podržava polu otvorena stanja kod kojih je moguće slati podatke s jedne strane dok ih druga strana ne prima. Kod primitka podataka pošiljatelj mora primiti potvrdu jer inače ne dolazi do daljnji pošiljaka.
Slika 1. Uspostava veze u 4 koraka
Postoji nekoliko prepoznatih mogućnosti za napad na aplikacije koje se koriste STCP-om, a potječu, ili iz samog STCP-a, ili iz korisničke neobzirnosti prilikom oblikovanja korisničkih aplikacija. U nastavku će biti prikazani neki od tih napada.
Ovo je napad tipa uskraćivanja resursa dizajniran oko činjenice da SCTP koristi višestruko usmjeravanje. Napadač se spaja s poslužiteljem te tamo prijavljuje nekorištenu adresu čime onemogućuje stvarnog korisnika da se spoji i komunicira sa serverom, a što je i svrha napada.
Iduća figura ilustrira vezu organizaciju mreže prije napada
+----------+ +-----------+ +----------+ | Napadač | |Poslužitelj| | Žrtva | | IP-A=+------------+ +-----------+=IP-C & D | | | | | | | +----------+ +-----------+ +----------+
Figura 2: Zauzimanje adrese
Razmotrimo scenarij ilustriran na Figuri 2. Napadač legitimno ima IP-A i želi onemogućiti Žrtvu u njezinim pokušajima da uspostavi vezu s poslužiteljem. Žrtva koristi višestruko usmjeravanje i koristi adrese IP-C i IP-D. Da bi krenuo u napad, napadač prvo mora saznati ili pogoditi “port” broj koji žrtva koristi kod pokušaja spajanja s poslužiteljem. Potom napadač koristeći taj “port” broj uspostavlja vezu s poslužiteljem navodeći vlastitu IP-A adresu, ali i žrtvinu IP-C adresu. Poslužitelj će odgovoriti napadaču te će mu potvrditi registraciju tih adresa. Gledano sa strane poslužitelja, obje registrirane adrese tim činom postaju nedostupne drugim čvorovima.
Po završetku uspostave veze između napadača i poslužitelja, žrtva će također pokušati uspostaviti vezu s poslužiteljem navodeći obje adrese koje ima: IP-C i IP-D. No, budući da poslužitelj već ima spremljenu jednu od tih dviju adresa s nekom drugom krajnjom točkom, poslužitelj će odbiti pokušaj za uspostavom veze te će ga uputiti na to da promijeni adresu s koje se želi spojiti.
U ovom trenutku, žrtva se neće moći spojiti s poslužiteljem sve dok poslužitelj ne spozna da napadač zauzima IP-C adresu, a to će se dogoditi u budućnosti korištenjem SCTP-ovog “HEARTBEAT” mehanizma.
Krađa veze napad je koji omogućuje nekom korisniku da preuzme kontrolu nad sjednicom stvorenom od strane neke druge krajnje točke. U slučaju kada napadač može slati pakete koristeći žrtvinu IP-adresu kao izvorišnu adresu te može primati podatke koristeći žrtvinu adresu kao odredišnu adresu, tada napadač može ponovno pokrenuti uspostavu veze s poslužiteljem. Ako žrtva ne vodi računa o „restart“ obavijestima, tada je napadač preuzeo kontrolu nad vezom žrtve i poslužitelja.
Pretpostavimo da je krajnja točka K1, koja ima IP-adresu A1, povezana pomoću STCP-a sa drugom krajnjom točkom K2. Nakon što napadačko računalo stekne mogućnosti da šalje i prima pakete koristeći IP-adresu A1, tada napadač može pokrenuti novu uspostavljanje veze s krajnjom točkom K2 koristeći proces uspostave veze u 4 koraka preko IP-adrese A1 i „port“ broja korištenog od strane K1.
Ako korisnik računala K2 nije obradio obavijest o ponovnom pokretanju veze, tada korisnik tog računala niti ne može znati da je došlo do ponovnog pokretanja veze. U tom slučaju možemo reći da je došlo do krađe veze. Bitno je uočiti da ranjivost kod ovog napada nije utemeljena kod neke slabosti SCTP-a, već je u potpunosti riječ o neobazrivosti korisnika višeg sloja. Ovaj napad nije moguć čim korisnik omogući obradu obavijesti o ponovnom pokretanju.
„Bombing“ napad je napad je koji omogućuje nekom korisniku da pomoću nekog poslužitelja šalje neželjene pakete žrtvi čime se opterećuje mrežni promet računala žrtve.
„Bombing“ napad se ostvaruje tako da računalo napadač uspostavi vezu s nekim drugim računalom pri kojem će uz vlastitu IP-adresu navesti i IP-adresu žrtvinog računala unutar INIT liste prilikom prvog koraka uspostave veze. Nakon što je veza uspostavljena, napadač će poslužitelju poslati zahtjev za velikom količinom podataka koje mu poslužitelj treba poslati. Nakon što je poslao zahtjev, napadač neće potvrđivati pakete koji će pristizati na njegovu IP-adresu. Zbog toga će poslužitelj početi isporučivati podatke na alternativne IP-adrese navedene prilikom uspostave veze, a to je, u ovom slučaju, IP-adresa računala žrtve.
Nakon što je napadač čekao točno određeno vrijeme, poslat će poslužitelju potvrdu da je zaprimio podatke koji su slani na računalo žrtve. Nakon određenog trenutka, napadačeva će se IP-adresa početi smatrati nedostupnom od strane poslužitelja, budući da će dobivati potvrde samo za podatke koje će slati na IP-adresu žrtve. Nakon što se navedeni scenarij ostvari, računalo napadač može početi slati strateške poruke potvrđivanja kako bi poslužitelj nastavio sa isporukom podataka računalu žrtvi.
Moguće je postaviti koristi i ADD-IP proširenje kako bi se i ranije žrtvina IP-adresa postavila kao primarni put za isporuku podataka.
Bitno je uočiti da ovaj napad radi samo ako računalo žrtve nema ostvarenu podršku za SCTP, inače bi ono moglo odgovoriti poslužitelju porukom „out of the blue“(OOTB) kako bi ga obavijestilo da treba prestati s isporukom podataka.
Napada treba biti precizan u slanju potvrdi kako bi osigurao da će se njegova IP-adresa početi smatrati nedostupnom.
Preusmjeravanje veze je napad je koji omogućuje nekom korisniku da neispravno postavi veza s krajnjom točkom i usmjeri ju na neku drugu adresu.
Ovaj napad radi tako da napadač pošalje INIT zahtjev s izvorišnim „port“ brojem X i usmjeri ga ne „port“ broj Y. Po primitku INIT-ACK odgovora, napadač šalje COOKIE-ECHO poruku i postavlja drugu odredišnu IP-adresu ili „port“ broj, čime se omogućuje povezivanja s neispravnim krajnjim točkama.
Napad ovisi o neispravnosti SCTP implementacije da sprema i provjerava IP-adrese i „port“ brojeve unutar strukture kolačića.
Od napada se lako brani tako se unutar kolačića spremaju IP-adrese i „port“ brojevi odredišta i izvorišta. Pa ako izvorište i odredište ne odgovaraju onima u kolačiću implementacija može jednostavno odbaciti zahtjev s neispravnim kolačićem.
SCTP je mrežni protokol transportnog sloja kojeg neke aplikacije, pogotovo vezane uz telekomunikacije, koriste kao zamjenu za TCP koji im se pokazao kao previše ograničavajući protokol. SCTP ima mogućnosti višestrukog usmjeravanja, tj. nudi mogućnosti korisniku da već pri uspostavi veze navede IP-adrese na koje želi da se paketi šalju, ako zakaže slanje na primarnu adresu. Za razliku od TCP-a koji je usredotočen na rad s tokovima, SCTP je usredotočen na razmjenu poruka. SCTP koristi proces uspostave veze u 4 koraka, dok to TCP radi u 3 koraka. Uz to, bitno je spomenuti i da SCTP ne nudi mogućnosti za održavanjem polu-otvorenih veza, a TCP nudi mogućnosti za održavanjem takvih veza. Postoje ranjivosti kod ovog protokola koje napadači mogu iskorištavati napadima kao što je krađa adrese, ali postoje i napadi kod kojih se iskorištava korisnikova neobzirnost kod oblikovanja sustava koji se koriste SCTP-om, kakav je napad krađa veze.