SIP (Session Initiation Protocol)
Reading time: 13 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Basic Information
SIP (Session Initiation Protocol) ni protokali ya ishara na udhibiti wa simu inayotumika sana kwa kuanzisha, kubadilisha, na kumaliza vikao vya multimedia, ikiwa ni pamoja na sauti, video, na ujumbe wa papo hapo, juu ya mitandao ya IP. Iliyotengenezwa na Internet Engineering Task Force (IETF), SIP imefafanuliwa katika RFC 3261 na imekuwa kiwango cha de facto kwa VoIP na mawasiliano yaliyojumuishwa.
Baadhi ya vipengele muhimu vya SIP ni pamoja na:
- Protokali ya Kimaandishi: SIP ni protokali ya kimaandishi, ambayo inafanya iwe rahisi kusoma na kufanyia kazi. Inategemea mfano wa ombi-jibu, sawa na HTTP, na inatumia mbinu kama INVITE, ACK, BYE, na CANCEL kwa kudhibiti vikao vya simu.
- Uwezo wa Kupanuka na Ufanisi: SIP ina uwezo mkubwa wa kupanuka na inaweza kutumika katika matumizi madogo pamoja na mazingira makubwa ya biashara na ya carrier-grade. Inaweza kupanuliwa kwa urahisi na vipengele vipya, na kuifanya iweze kubadilika kwa matumizi na mahitaji mbalimbali.
- Ushirikiano: Kupitishwa na viwango vya SIP kunahakikisha ushirikiano bora kati ya vifaa, programu, na watoa huduma mbalimbali, na kuhamasisha mawasiliano yasiyo na mshono kati ya majukwaa mbalimbali.
- Muundo wa Moduli: SIP inafanya kazi na protokali nyingine kama RTP (Real-time Transport Protocol) kwa ajili ya usafirishaji wa media na SDP (Session Description Protocol) kwa ajili ya kuelezea vikao vya multimedia. Muundo huu wa moduli unaruhusu kubadilika zaidi na ufanisi na aina tofauti za media na codecs.
- Seva za Proxy na Redirect: SIP inaweza kutumia seva za proxy na redirect ili kuwezesha upitishaji wa simu na kutoa vipengele vya juu kama vile kupitisha simu, uhamishaji wa simu, na huduma za ujumbe wa sauti.
- Uwepo na Ujumbe wa Papo Hapo: SIP haijazuiliwa kwa mawasiliano ya sauti na video pekee. Pia inasaidia uwepo na ujumbe wa papo hapo, ikiruhusu matumizi mbalimbali ya mawasiliano yaliyojumuishwa.
Licha ya faida zake nyingi, SIP inaweza kuwa ngumu kuunda na kusimamia, hasa inapohusisha masuala ya NAT traversal na moto wa moto. Hata hivyo, uwezo wake wa kubadilika, kupanuka, na msaada mpana katika sekta unafanya iwe chaguo maarufu kwa VoIP na mawasiliano ya multimedia.
SIP Methods
Mbinu kuu za SIP zilizofafanuliwa katika RFC 3261 ni pamoja na:
- INVITE: Inatumika ku anzisha kikao kipya (simu) au kubadilisha kilichopo. Mbinu ya INVITE inabeba maelezo ya kikao (kawaida ikitumia SDP) ili kumjulisha mpokeaji kuhusu maelezo ya kikao kilichopendekezwa, kama vile aina za media, codecs, na protokali za usafirishaji.
- ACK: Inatumwa ili kuthibitisha kupokea jibu la mwisho kwa ombi la INVITE. Mbinu ya ACK inahakikisha uaminifu wa muamala wa INVITE kwa kutoa uthibitisho wa mwisho hadi mwisho.
- BYE: Inatumika ku maliza kikao kilichoanzishwa (simu). Mbinu ya BYE inatumwa na upande wowote katika kikao kuonyesha kuwa wanataka kumaliza mawasiliano.
- CANCEL: Inatumwa ili kufuta ombi la INVITE lililoko kabla ya kikao kuanzishwa. Mbinu ya CANCEL inaruhusu mtumaji kuacha muamala wa INVITE ikiwa watabadilisha mawazo yao au ikiwa hakuna jibu kutoka kwa mpokeaji.
- OPTIONS: Inatumika ku uliza uwezo wa seva ya SIP au wakala wa mtumiaji. Mbinu ya OPTIONS inaweza kutumwa ili kutafuta taarifa kuhusu mbinu zinazoungwa mkono, aina za media, au nyongeza nyingine bila kuanzisha kikao.
- REGISTER: Inatumika na wakala wa mtumiaji ku jiandikishe eneo lake la sasa na seva ya SIP registrar. Mbinu ya REGISTER inasaidia kudumisha ramani ya kisasa kati ya SIP URI ya mtumiaji na anwani yao ya IP ya sasa, ikiruhusu upitishaji na usambazaji wa simu.
warning
Kumbuka kwamba ili kupiga mtu si lazima kutumia REGISTER kwa chochote.
Hata hivyo, inawezekana kwamba ili kufanya INVITE mpiga simu anahitaji kujiandikisha kwanza au atapokea jibu la 401 Unauthorized
.
Mbali na mbinu hizi kuu, kuna mbinu kadhaa za nyongeza za SIP zilizofafanuliwa katika RFC nyingine, kama vile:
- SUBSCRIBE: Iliyofafanuliwa katika RFC 6665, mbinu ya SUBSCRIBE inatumika ku omba taarifa kuhusu hali ya rasilimali maalum, kama vile uwepo wa mtumiaji au hali ya simu.
- NOTIFY: Pia iliyofafanuliwa katika RFC 6665, mbinu ya NOTIFY inatumwa na seva ili kumjulisha wakala wa mtumiaji aliyejiandikisha kuhusu mabadiliko katika hali ya rasilimali inayofuatiliwa.
- REFER: Iliyofafanuliwa katika RFC 3515, mbinu ya REFER inatumika ku omba mpokeaji afanye uhamishaji au arejelee upande wa tatu. Hii kwa kawaida inatumika kwa hali za uhamishaji wa simu.
- MESSAGE: Iliyofafanuliwa katika RFC 3428, mbinu ya MESSAGE inatumika ku tuma ujumbe wa papo hapo kati ya wakala wa mtumiaji wa SIP, ikiruhusu mawasiliano ya kimaandishi ndani ya mfumo wa SIP.
- UPDATE: Iliyofafanuliwa katika RFC 3311, mbinu ya UPDATE inaruhusu kubadilisha kikao bila kuathiri hali ya mazungumzo yaliyopo. Hii ni muhimu kwa kuboresha vigezo vya kikao, kama vile codecs au aina za media, wakati wa simu inayoendelea.
- PUBLISH: Iliyofafanuliwa katika RFC 3903, mbinu ya PUBLISH inatumika na wakala wa mtumiaji ku chapisha taarifa za hali ya tukio kwa seva, na kuifanya ipatikane kwa wahusika wengine.
SIP Response Codes
- 1xx (Majibu ya Muda wa Kijaribio): Majibu haya yanaonyesha kwamba ombi lilipokelewa, na seva inaendelea kulifanyia kazi.
- 100 Trying: Ombi lilipokelewa, na seva inafanya kazi juu yake.
- 180 Ringing: Mpokeaji anaarifiwa na atachukua simu.
- 183 Session Progress: Inatoa taarifa kuhusu maendeleo ya simu.
- 2xx (Majibu ya Mafanikio): Majibu haya yanaonyesha kwamba ombi lilipokelewa kwa mafanikio, kueleweka, na kukubaliwa.
- 200 OK: Ombi lilifanikiwa, na seva imekamilisha.
- 202 Accepted: Ombi lilipokelewa kwa ajili ya usindikaji, lakini halijakamilika bado.
- 3xx (Majibu ya Uelekezaji): Majibu haya yanaonyesha kwamba hatua zaidi zinahitajika ili kutimiza ombi, kwa kawaida kwa kuwasiliana na rasilimali mbadala.
- 300 Multiple Choices: Kuna chaguzi nyingi zinazopatikana, na mtumiaji au mteja lazima achague moja.
- 301 Moved Permanently: Rasilimali iliyohitajika imepewa URI mpya ya kudumu.
- 302 Moved Temporarily: Rasilimali iliyohitajika inapatikana kwa muda katika URI tofauti.
- 305 Use Proxy: Ombi lazima litumwe kwa proxy maalum.
- 4xx (Majibu ya Kosa la Mteja): Majibu haya yanaonyesha kwamba ombi lina sintaks mbaya au haliwezi kutimizwa na seva.
- 400 Bad Request: Ombi lilikuwa na makosa au halikuwa sahihi.
- 401 Unauthorized: Ombi linahitaji uthibitisho wa mtumiaji.
- 403 Forbidden: Seva ilielewa ombi lakini inakataa kulitimiza.
- 404 Not Found: Rasilimali iliyohitajika haikupatikana kwenye seva.
- 408 Request Timeout: Seva haikupokea ombi kamili ndani ya muda iliyojiandaa kusubiri.
- 486 Busy Here: Mpokeaji kwa sasa yuko busy na hawezi kuchukua simu.
- 5xx (Majibu ya Kosa la Seva): Majibu haya yanaonyesha kwamba seva ilishindwa kutimiza ombi halali.
- 500 Internal Server Error: Seva ilikumbana na kosa wakati wa kusindika ombi.
- 501 Not Implemented: Seva haisaidii kazi inayohitajika kutimiza ombi.
- 503 Service Unavailable: Seva kwa sasa haiwezi kushughulikia ombi kutokana na matengenezo au mzigo mkubwa.
- 6xx (Majibu ya Kushindwa kwa Ulimwengu): Majibu haya yanaonyesha kwamba ombi haliwezi kutimizwa na seva yoyote.
- 600 Busy Everywhere: Mahali pote pa simu zimejaa.
- 603 Decline: Mpokeaji hataki kushiriki katika simu.
- 604 Does Not Exist Anywhere: Rasilimali iliyohitajika haipatikani popote katika mtandao.
Examples
SIP INVITE Example
INVITE sip:jdoe@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: John Doe <sip:jdoe@example.com>
From: Jane Smith <sip:jsmith@example.org>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:jsmith@pc33.example.com>
User-Agent: ExampleSIPClient/1.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Content-Length: 142
v=0
o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com
s=-
c=IN IP4 pc33.example.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000te
Kila Param Imeelezwa
- Request-Line:
INVITE sip:jdoe@example.com SIP/2.0
- Mstari huu unaonyesha njia (INVITE), URI ya ombi (sip:jdoe@example.com), na toleo la SIP (SIP/2.0). - Via:
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
- Kichwa cha Via kinaelezea itifaki ya usafirishaji (UDP) na anwani ya mteja (pc33.example.com). Parameta "branch" inatumika kwa ajili ya kugundua mizunguko na mechi za muamala. - Max-Forwards:
Max-Forwards: 70
- Hiki ni kichwa kinachopunguza idadi ya nyakati ombi linaweza kupelekwa na proxies ili kuepuka mizunguko isiyo na mwisho. - To:
To: John Doe <sip:jdoe@example.com>
- Kichwa cha To kinaelezea mpokeaji wa simu, ikiwa ni pamoja na jina lake la kuonyeshwa (John Doe) na SIP URI (sip:jdoe@example.com). - From:
From: Jane Smith <sip:jsmith@example.org>;tag=1928301774
- Kichwa cha From kinaelezea mtumaji wa simu, ikiwa ni pamoja na jina lake la kuonyeshwa (Jane Smith) na SIP URI (sip:jsmith@example.org). Parameta "tag" inatumika kutambulisha kwa kipekee jukumu la mtumaji katika mazungumzo. - Call-ID:
Call-ID: a84b4c76e66710
- Kichwa cha Call-ID kinatambulisha kwa kipekee kikao cha simu kati ya wakala wawili. - CSeq:
CSeq: 314159 INVITE
- Kichwa cha CSeq kina nambari ya mfuatano na njia iliyotumika katika ombi. Inatumika ku match majibu na maombi na kugundua ujumbe usio na mpangilio. - Contact:
Contact: <sip:jsmith@pc33.example.com>
- Kichwa cha Contact kinatoa njia ya moja kwa moja kwa mtumaji, ambayo inaweza kutumika kwa maombi na majibu yanayofuata. - User-Agent:
User-Agent: ExampleSIPClient/1.0
- Kichwa cha User-Agent kinatoa taarifa kuhusu programu au vifaa vya mtumaji, ikiwa ni pamoja na jina na toleo lake. - Allow:
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
- Kichwa cha Allow kinaorodhesha njia za SIP zinazoungwa mkono na mtumaji. Hii inasaidia mpokeaji kuelewa ni njia zipi zinaweza kutumika wakati wa mawasiliano. - Content-Type:
Content-Type: application/sdp
- Kichwa cha Content-Type kinaelezea aina ya vyombo vya habari vya mwili wa ujumbe, katika kesi hii, SDP (Session Description Protocol). - Content-Length:
Content-Length: 142
- Kichwa cha Content-Length kinaonyesha ukubwa wa mwili wa ujumbe kwa bytes. - Message Body: Mwili wa ujumbe unajumuisha maelezo ya kikao cha SDP, ambayo yana taarifa kuhusu aina za vyombo vya habari, codecs, na itifaki za usafirishaji kwa kikao kilichopendekezwa.
v=0
- Toleo la itifaki (0 kwa SDP)o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com
- Mwandishi na kitambulisho cha kikaos=-
- Jina la kikao (hivi karibuni hyphen inaonyesha hakuna jina la kikao)c=IN IP4 pc33.example.com
- Taarifa za muunganisho (aina ya mtandao, aina ya anwani, na anwani)t=0 0
- Taarifa za wakati (nyakati za kuanza na kuacha, 0 0 inamaanisha kikao hakina mipaka)m=audio 49170 RTP/AVP 0
- Maelezo ya vyombo vya habari (aina ya vyombo vya habari, nambari ya bandari, itifaki ya usafirishaji, na orodha ya muundo). Katika kesi hii, inaelezea mtiririko wa sauti ukitumia RTP/AVP (Real-time Transport Protocol / Audio Video Profile) na muundo 0 (PCMU/8000).a=rtpmap:0 PCMU/8000
- Ramani ya sifa inayoelekeza muundo (0) kwa codec (PCMU) na kiwango chake cha saa (8000 Hz).
Mfano wa SIP REGISTER
Njia ya REGISTER inatumika katika Session Initiation Protocol (SIP) kuruhusu wakala wa mtumiaji (UA), kama simu ya VoIP au softphone, kujiandikisha eneo lake na seva ya SIP registrar. Mchakato huu unaruhusu seva kujua mahali pa kuelekeza maombi ya SIP yanayoingia yanayokusudiwa kwa mtumiaji aliyejiandikisha. Seva ya registrar kwa kawaida ni sehemu ya seva ya proxy ya SIP au seva maalum ya usajili.
Hapa kuna mfano wa kina wa ujumbe wa SIP unaohusishwa na mchakato wa uthibitishaji wa REGISTER:
- Ombi la awali REGISTER kutoka UA kwenda seva ya registrar:
REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0
Ujumbe huu wa awali wa REGISTER unatumwa na UA (Alice) kwa seva ya registrar. Unajumuisha taarifa muhimu kama vile muda wa usajili unaotakiwa (Expires), URI ya SIP ya mtumiaji (sip:alice@example.com), na anwani ya mawasiliano ya mtumiaji (sip:alice@192.168.1.100:5060).
- 401 Unauthorized jibu kutoka kwa seva ya registrar:
cssCopy codeSIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="example.com", nonce="abcdefghijk", algorithm=MD5, qop="auth"
Content-Length: 0
Seva ya registrar inajibu na ujumbe wa "401 Unauthorized", ambao unajumuisha kichwa cha "WWW-Authenticate". Kichwa hiki kina taarifa zinazohitajika kwa UA kuthibitisha mwenyewe, kama vile uthibitisho wa eneo, nonce, na algorithimu.
- Ombi la REGISTER pamoja na akreditivu za uthibitisho:
REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Authorization: Digest username="alice", realm="example.com", nonce="abcdefghijk", uri="sip:example.com", response="65a8e2285879283831b664bd8b7f14d4", algorithm=MD5, cnonce="lmnopqrst", qop=auth, nc=00000001
Content-Length: 0
UA inatuma ombi lingine la REGISTER, wakati huu likijumuisha "Authorization" header yenye taarifa muhimu, kama vile jina la mtumiaji, eneo, nonce, na thamani ya majibu iliyohesabiwa kwa kutumia taarifa zilizotolewa na nenosiri la mtumiaji.
Hivi ndivyo thamani ya majibu ya Authorization inavyohesabiwa:
import hashlib
def calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop):
# 1. Calculate HA1 (concatenation of username, realm, and password)
ha1_input = f"{username}:{realm}:{password}"
ha1 = hashlib.md5(ha1_input.encode()).hexdigest()
# 2. Calculate HA2 (concatenation of method and uri)
ha2_input = f"{method}:{uri}"
ha2 = hashlib.md5(ha2_input.encode()).hexdigest()
# 3. Calculate the final response value (concatenation of h1, stuff and h2)
response_input = f"{ha1}:{nonce}:{nc}:{cnonce}:{qop}:{ha2}"
response = hashlib.md5(response_input.encode()).hexdigest()
return response
# Example usage
username = "alice"
password = "mysecretpassword"
realm = "example.com"
method = "REGISTER"
uri = "sip:example.com"
nonce = "abcdefghijk"
nc = "00000001"
cnonce = "lmnopqrst"
qop = "auth"
response = calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop)
print(f"MD5 response value: {response}")
- Majibu ya usajili yenye mafanikio kutoka kwa seva ya msajili:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0
Baada ya seva ya registrar kuthibitisha taarifa zilizotolewa, inatuma jibu "200 OK" kuashiria kwamba usajili umefanikiwa. Jibu linajumuisha taarifa za mawasiliano zilizojisajili na muda wa kumalizika kwa usajili. Katika hatua hii, wakala wa mtumiaji (Alice) amesajiliwa kwa mafanikio na seva ya SIP registrar, na maombi ya SIP yanayoingia kwa Alice yanaweza kuelekezwa kwenye anwani sahihi ya mawasiliano.
Mfano wa Simu
note
Haijatajwa, lakini Mtumiaji B anahitaji kuwa ametuma ujumbe wa REGISTER kwa Proxy 2 kabla ya kuwa na uwezo wa kupokea simu.
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.