SIP (Session Initiation Protocol)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SIP (Session Initiation Protocol) je protokol za signalizaciju i kontrolu poziva koji se široko koristi za uspostavljanje, modifikovanje i prekidanje multimedijalnih sesija, uključujući glas, video i instant poruke, preko IP mreža. Razvijen od strane Internet Engineering Task Force (IETF), SIP je definisan u RFC 3261 i postao je de facto standard za VoIP i objedinjene komunikacije.
Neke ključne karakteristike SIP-a uključuju:
Protokol zasnovan na tekstu: SIP je protokol zasnovan na tekstu, što ga čini čitljivim za ljude i lakšim za debagovanje. Zasnovan je na modelu zahtev-odgovor, sličnom HTTP-u, i koristi metode kao što su INVITE, ACK, BYE i CANCEL za kontrolu pozivnih sesija.
Skalabilnost i fleksibilnost: SIP je veoma skalabilan i može se koristiti u malim implementacijama, kao i u velikim preduzećima i carrier-grade okruženjima. Može se lako proširiti novim funkcijama, što ga čini prilagodljivim različitim slučajevima korišćenja i zahtevima.
Interoperabilnost: Široka upotreba i standardizacija SIP-a osiguravaju bolju interoperabilnost između različitih uređaja, aplikacija i provajdera usluga, promovišući neometanu komunikaciju na različitim platformama.
Modularni dizajn: SIP radi sa drugim protokolima kao što su RTP (Real-time Transport Protocol) za prenos medija i SDP (Session Description Protocol) za opisivanje multimedijalnih sesija. Ovaj modularni dizajn omogućava veću fleksibilnost i kompatibilnost sa različitim tipovima medija i kodeka.
Proxy i redirekcioni serveri: SIP može koristiti proxy i redirekcione servere za olakšavanje usmeravanja poziva i pružanje naprednih funkcija kao što su preusmeravanje poziva, prenos poziva i usluge govorne pošte.
Prisutnost i instant poruke: SIP nije ograničen samo na glasovne i video komunikacije. Takođe podržava prisutnost i instant poruke, omogućavajući širok spektar aplikacija za objedinjene komunikacije.
Uprkos mnogim prednostima, SIP može biti složen za konfiguraciju i upravljanje, posebno kada se radi o NAT prolazu i problemima sa firewall-om. Međutim, njegova svestranost, skalabilnost i opsežna podrška u industriji čine ga popularnim izborom za VoIP i multimedijalnu komunikaciju.
Osnovne SIP metode definisane u RFC 3261 uključuju:
INVITE: Koristi se za iniciranje nove sesije (poziva) ili modifikovanje postojeće. INVITE metoda nosi opis sesije (obično koristeći SDP) kako bi obavestila primaoca o detaljima predložene sesije, kao što su tipovi medija, kodeci i transportni protokoli.
ACK: Šalje se da potvrdi prijem konačnog odgovora na INVITE zahtev. ACK metoda osigurava pouzdanost INVITE transakcija pružanjem potvrde od kraja do kraja.
BYE: Koristi se za prekidanje uspostavljene sesije (poziva). BYE metoda se šalje od strane bilo koje strane u sesiji kako bi naznačila da želi da završi komunikaciju.
CANCEL: Šalje se da otkaže čekajući INVITE zahtev pre nego što sesija bude uspostavljena. CANCEL metoda omogućava pošiljaocu da abortira INVITE transakciju ako promeni mišljenje ili ako ne dobije odgovor od primaoca.
OPTIONS: Koristi se za upit o mogućnostima SIP servera ili korisničkog agenta. OPTIONS metoda može se poslati da zatraži informacije o podržanim metodama, tipovima medija ili drugim ekstenzijama bez zapravo uspostavljanja sesije.
REGISTER: Koristi ga korisnički agent da registruje svoju trenutnu lokaciju sa SIP registrar serverom. REGISTER metoda pomaže u održavanju ažurirane mape između SIP URI korisnika i njihove trenutne IP adrese, omogućavajući usmeravanje i isporuku poziva.
Napomena da za pozivanje nekoga nije neophodno koristiti REGISTER za bilo šta.
Međutim, moguće je da da bi se izvršio INVITE, pozivalac mora prvo da se autentifikuje ili će dobiti 401 Unauthorized
odgovor.
Pored ovih osnovnih metoda, postoje brojne SIP ekstenzijske metode definisane u drugim RFC-ima, kao što su:
SUBSCRIBE: Definisan u RFC 6665, SUBSCRIBE metoda se koristi za zahtev za obaveštenjima o stanju određenog resursa, kao što su prisutnost korisnika ili status poziva.
NOTIFY: Takođe definisan u RFC 6665, NOTIFY metoda se šalje od strane servera da obavesti pretplaćenog korisničkog agenta o promenama u stanju nadgledanog resursa.
REFER: Definisan u RFC 3515, REFER metoda se koristi za zahtev da primalac izvrši prenos ili se obrati trećoj strani. Ovo se obično koristi za scenarije prenosa poziva.
MESSAGE: Definisan u RFC 3428, MESSAGE metoda se koristi za slanje instant poruka između SIP korisničkih agenata, omogućavajući komunikaciju zasnovanu na tekstu unutar SIP okvira.
UPDATE: Definisan u RFC 3311, UPDATE metoda omogućava modifikovanje sesije bez uticaja na stanje postojećeg dijaloga. Ovo je korisno za ažuriranje parametara sesije, kao što su kodeci ili tipovi medija, tokom aktivnog poziva.
PUBLISH: Definisan u RFC 3903, PUBLISH metoda se koristi od strane korisničkog agenta da objavi informacije o stanju događaja na server, čineći ih dostupnim drugim zainteresovanim stranama.
1xx (Provisional Responses): Ovi odgovori ukazuju da je zahtev primljen i da server nastavlja da ga obrađuje.
100 Trying: Zahtev je primljen i server na njemu radi.
180 Ringing: Pozvani se obaveštava i preuzeće poziv.
183 Session Progress: Pruža informacije o napretku poziva.
2xx (Successful Responses): Ovi odgovori ukazuju da je zahtev uspešno primljen, shvaćen i prihvaćen.
200 OK: Zahtev je bio uspešan i server ga je ispunio.
202 Accepted: Zahtev je prihvaćen za obradu, ali još nije završen.
3xx (Redirection Responses): Ovi odgovori ukazuju da je potrebna dalja akcija da bi se ispunio zahtev, obično kontaktiranjem alternativnog resursa.
300 Multiple Choices: Postoji više dostupnih opcija, a korisnik ili klijent mora izabrati jednu.
301 Moved Permanently: Zatraženi resurs je dodeljen novoj trajnoj URI.
302 Moved Temporarily: Zatraženi resurs je privremeno dostupan na drugoj URI.
305 Use Proxy: Zahtev mora biti poslat na određeni proxy.
4xx (Client Error Responses): Ovi odgovori ukazuju da zahtev sadrži lošu sintaksu ili ga server ne može ispuniti.
400 Bad Request: Zahtev je bio loše oblikovan ili nevažeći.
401 Unauthorized: Zahtev zahteva autentifikaciju korisnika.
403 Forbidden: Server je razumeo zahtev, ali odbija da ga ispuni.
404 Not Found: Zatraženi resurs nije pronađen na serveru.
408 Request Timeout: Server nije primio kompletan zahtev u okviru vremena koje je bio spreman da čeka.
486 Busy Here: Pozvani je trenutno zauzet i ne može da preuzme poziv.
5xx (Server Error Responses): Ovi odgovori ukazuju da je server nije uspeo da ispuni važeći zahtev.
500 Internal Server Error: Server je naišao na grešku prilikom obrade zahteva.
501 Not Implemented: Server ne podržava funkcionalnost potrebnu za ispunjenje zahteva.
503 Service Unavailable: Server trenutno nije u mogućnosti da obradi zahtev zbog održavanja ili preopterećenja.
6xx (Global Failure Responses): Ovi odgovori ukazuju da zahtev ne može biti ispunjen od strane bilo kog servera.
600 Busy Everywhere: Sva moguća odredišta za poziv su zauzeta.
603 Decline: Pozvani ne želi da učestvuje u pozivu.
604 Does Not Exist Anywhere: Zatraženi resurs nije dostupan nigde u mreži.
Metoda REGISTER se koristi u Protokolu za inicijaciju sesije (SIP) kako bi omogućila korisničkom agentu (UA), kao što je VoIP telefon ili softverski telefon, da registruje svoju lokaciju kod SIP registrar servera. Ovaj proces omogućava serveru da zna kuda da usmeri dolazne SIP zahteve namenjene registrovanom korisniku. Registrar server je obično deo SIP proxy servera ili posvećenog servera za registraciju.
Evo detaljnog primera SIP poruka uključenih u proces autentifikacije REGISTER:
Početni REGISTER zahtev od UA do registrar servera:
Ova inicijalna REGISTER poruka se šalje od strane UA (Alice) registracionom serveru. Uključuje važne informacije kao što su željeno trajanje registracije (Expires), SIP URI korisnika (sip:alice@example.com), i kontakt adresu korisnika (sip:alice@192.168.1.100:5060).
401 Unauthorized odgovor od registracionog servera:
Registrar server odgovara sa "401 Unauthorized" porukom, koja uključuje "WWW-Authenticate" header. Ovaj header sadrži informacije potrebne za UA da se autentifikuje, kao što su authentication realm, nonce, i algorithm.
REGISTER zahtev sa autentifikacionim kredencijalima:
UA šalje još jedan REGISTER zahtev, ovaj put uključujući "Authorization" zaglavlje sa potrebnim akreditivima, kao što su korisničko ime, realm, nonce i vrednost odgovora izračunatu koristeći date informacije i korisničku lozinku.
Ovako se izračunava Authorization odgovor:
Uspešna registracija odgovor sa registrar servera:
Nakon što registrar server verifikuje pružene akreditive, šalje "200 OK" odgovor kako bi naznačio da je registracija bila uspešna. Odgovor uključuje registrovane kontakt informacije i vreme isteka registracije. U ovom trenutku, korisnički agent (Alice) je uspešno registrovan sa SIP registrar serverom, a dolazni SIP zahtevi za Alice mogu biti usmereni na odgovarajuću kontakt adresu.
Nije pomenuto, ali Korisnik B treba da je poslao REGISTER poruku Proxy 2 pre nego što može da prima pozive.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)