SIP (Session Initiation Protocol)

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

SIP (Itifaki ya Kuanzisha Kikao) ni itifaki ya ishara na udhibiti wa simu inayotumiwa sana kwa kuanzisha, kurekebisha, na kumaliza vikao vya multimedia, ikiwa ni pamoja na sauti, video, na ujumbe wa papo hapo, juu ya mitandao ya IP. Iliyoundwa na Internet Engineering Task Force (IETF), SIP imedefiniwa katika RFC 3261 na imekuwa kiwango cha kweli cha VoIP na mawasiliano yanayounganisha.

Baadhi ya sifa muhimu za SIP ni pamoja na:

  1. Itifaki Inayotegemea Maandishi: SIP ni itifaki inayotegemea maandishi, ambayo inafanya iwe rahisi kusomwa na kutatuliwa. Inategemea mfano wa ombi-jibu, kama HTTP, na hutumia njia kama INVITE, ACK, BYE, na CANCEL kwa kudhibiti vikao vya simu.

  2. Upanuzi na Ubadilifu: SIP ni rahisi kupanuliwa na inaweza kutumika katika mazingira madogo pamoja na mazingira makubwa ya kampuni na ya watoa huduma. Inaweza kupanuliwa kwa urahisi na vipengele vipya, ikifanya iweze kubadilika kwa matumizi na mahitaji mbalimbali.

  3. Udhibitishaji wa Kazi Pamoja: Utekelezaji mpana na kiwango cha SIP kuhakikisha udhibitishaji bora kati ya vifaa tofauti, programu, na watoa huduma, kukuza mawasiliano laini kwenye majukwaa mbalimbali.

  4. Ubunifu wa Moduli: SIP inafanya kazi na itifaki nyingine kama RTP (Itifaki ya Usafirishaji wa Wakati Halisi) kwa usafirishaji wa media na SDP (Itifaki ya Maelezo ya Kikao) kwa kuelezea vikao vya multimedia. Ubunifu huu wa moduli unaruhusu mabadiliko makubwa na uambatano na aina tofauti za media na codecs.

  5. Seva za Mwambaa na Kurejeleza: SIP inaweza kutumia seva za mwambaa na kurejeleza kufanikisha mwelekeo wa simu na kutoa vipengele vya juu kama kuhamisha simu, kuhamisha simu, na huduma za ujumbe wa sauti.

  6. Kuwepo na Ujumbe wa Papo hapo: SIP haipunguzwi kwa mawasiliano ya sauti na video. Pia inasaidia uwepo na ujumbe wa papo hapo, ikiruhusu aina mbalimbali za maombi ya mawasiliano yanayounganisha.

Licha ya faida zake nyingi, SIP inaweza kuwa ngumu kusanidi na kusimamia, hasa linapokuja suala la kuvuka NAT na masuala ya firewall. Walakini, uwezo wake, upanuzi, na msaada mkubwa katika tasnia hufanya iwe chaguo maarufu kwa mawasiliano ya VoIP na multimedia.

Njia za SIP

Njia kuu za SIP zilizofafanuliwa katika RFC 3261 ni pamoja na:

  1. INVITE: Hutumiwa kuanzisha kikao kipya (simu) au kurekebisha kikao kilichopo. Njia ya INVITE inabeba maelezo ya kikao (kawaida kwa kutumia SDP) kumjulisha mpokeaji kuhusu maelezo ya kikao kilichopendekezwa, kama aina za media, codecs, na itifaki za usafirishaji.

  2. ACK: Hutumwa kuthibitisha kupokelewa kwa jibu la mwisho kwa ombi la INVITE. Njia ya ACK inahakikisha uaminifu wa shughuli za INVITE kwa kutoa uthibitisho mwisho hadi mwisho.

  3. BYE: Hutumiwa kumaliza kikao kilichowekwa (simu). Njia ya BYE hutumwa na mojawapo ya pande katika kikao kuonyesha kwamba wanataka kumaliza mawasiliano.

  4. CANCEL: Hutumwa kufuta ombi la INVITE linalosubiri kabla ya kikao kuanzishwa. Njia ya CANCEL inaruhusu mtumaji kufuta shughuli ya INVITE ikiwa wanabadilisha mawazo au ikiwa hakuna jibu kutoka kwa mpokeaji.

  5. OPTIONS: Hutumiwa kuuliza uwezo wa seva au wakala wa mtumiaji wa SIP. Njia ya OPTIONS inaweza kutumwa kuomba habari kuhusu njia zinazoungwa mkono, aina za media, au nyongeza nyingine bila kuanzisha kikao.

  6. REGISTER: Hutumiwa na wakala wa mtumiaji kujiandikisha eneo lake la sasa na seva ya usajili ya SIP. Njia ya REGISTER husaidia katika kudumisha ramani iliyosasishwa kati ya URI ya SIP ya mtumiaji na anwani yao ya IP ya sasa, ikiruhusu mwelekeo wa simu na utoaji.

Tambua kwamba ili kumpigia mtu simu si lazima kutumie REGISTER kwa chochote. Hata hivyo, inawezekana kwamba ili kufanya INVITE mpigaji anahitaji uthibitisho kwanza au atapokea jibu la 401 Unauthorized.

Mbali na njia hizi kuu, kuna njia za upanuzi wa SIP kadhaa zilizofafanuliwa katika RFC nyingine, kama vile:

  1. SUBSCRIBE: Iliyofafanuliwa katika RFC 6665, njia ya SUBSCRIBE hutumiwa kuomba arifa kuhusu hali ya rasilimali maalum, kama uwepo wa mtumiaji au hali ya simu.

  2. NOTIFY: Pia iliyofafanuliwa katika RFC 6665, njia ya NOTIFY hutumwa na seva kumjulisha wakala wa mtumiaji aliyesajiliwa kuhusu mabadiliko katika hali ya rasilimali inayofuatiliwa.

  3. REFER: Iliyofafanuliwa katika RFC 3515, njia ya REFER hutumiwa kuomba mpokeaji afanye uhamisho au kumwelekeza mtu wa tatu. Mara nyingi hutumiwa kwa scenario za kuhamisha simu.

  4. MESSAGE: Iliyofafanuliwa katika RFC 3428, njia ya MESSAGE hutumiwa kutuma ujumbe wa papo hapo kati ya wakala wa mtumiaji wa SIP, ikiruhusu mawasiliano kwa maandishi ndani ya mfumo wa SIP.

  5. UPDATE: Iliyofafanuliwa katika RFC 3311, njia ya UPDATE inaruhusu kurekebisha kikao bila kuathiri hali ya mazungumzo iliyopo. Hii ni muhimu kwa kurekebisha paramita za kikao, kama codecs au aina za media, wakati wa simu inayoendelea.

  6. PUBLISH: Iliyofafanuliwa katika RFC 3903, njia ya PUBLISH hutumiwa na wakala wa mtumiaji kuweka habari ya hali ya tukio kwa seva, ikifanya iwezekane kwa vyama vingine vilivyopendezwa kuiona.

Msimbo wa Majibu ya SIP

  • 1xx (Majibu ya Muda): Majibu haya yanamaanisha kwamba ombi lilipokelewa, na seva inaendelea kuliprocess.

  • 100 Kujaribu: Ombi lilipokelewa, na seva inafanyia kazi.

  • 180 Kengele: Mpokeaji anapigiwa simu na atapokea simu.

  • 183 Maendeleo ya Kikao: Hutoa habari kuhusu maendeleo ya simu.

  • 2xx (Majibu Mafanikio): Majibu haya yanamaanisha kwamba ombi lilipokelewa kwa mafanikio, kueleweka, na kukubaliwa.

  • 200 Sawa: Ombi lilifanikiwa, na seva imeitekeleza.

  • 202 Kukubaliwa: Ombi lilikubaliwa kwa usindikaji, lakini bado halijakamilika.

  • 3xx (Majibu ya Uelekezaji): Majibu haya yanamaanisha kwamba hatua zaidi inahitajika kutekeleza ombi, kwa kawaida kwa kuwasiliana na rasilimali mbadala.

  • 300 Chaguo Zaidi: Kuna chaguo nyingi zinazopatikana, na mtumiaji au mteja lazima achague moja.

  • 301 Imehamishiwa Kudumu: Rasilimali iliyotakiwa imepewa URI mpya ya kudumu.

  • 302 Imehamishiwa Kwa Muda: Rasilimali iliyotakiwa ipo kwa muda katika URI tofauti.

  • 305 Tumia Mwambaa: Ombi lazima litumwe kwa mwambaa uliowekwa.

  • 4xx (Majibu ya Kosa la Mteja): Majibu haya yanamaanisha kwamba ombi lina sintaksia mbaya au halitaweza kutimizwa na seva.

  • 400 Ombi Mbaya: Ombi lilikuwa na makosa au halali.

  • 401 Hauruhusiwi: Ombi inahitaji uthibitisho wa mtumiaji.

  • 403 Imezuiwa: Seva ilielewa ombi lakini inakataa kulitekeleza.

  • 404 Haipatikani: Rasilimali iliyotakiwa haikupatikana kwenye seva.

  • 408 Muda wa Ombi Umekwisha: Seva haikupokea ombi kamili ndani ya wakati iliyokuwa tayari kusubiri.

  • 486 Mshughulikiaji Ana Shughuli: Mpokeaji yuko bize na hawezi kupokea simu.

  • 5xx (Majibu ya Kosa la Seva): Majibu haya yanamaanisha kwamba seva ilishindwa kutimiza ombi halali.

  • 500 Kosa la Seva la Ndani: Seva ilikutana na kosa wakati wa kusindika ombi.

  • 501 Haijatekelezwa: Seva haithibitishi kazi inayohitajika kutimiza ombi.

  • 503 Huduma Haipatikani: Seva kwa sasa haiwezi kushughulikia ombi kutokana na matengenezo au mzigo.

  • 6xx (Majibu ya Kukataliwa Kimataifa): Majibu haya yanamaanisha kwamba ombi haliwezi kutimizwa na seva yoyote.

  • 600 Bize Kila Mahali: Vituo vyote vinavyowezekana vya simu viko bize.

  • 603 Kukataa: Mpokeaji hataki kushiriki katika simu.

  • 604 Haipo Popote: Rasilimali iliyotakiwa haipatikani popote kwenye mtandao.

Mifano

Mfano wa SIP INVITE

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
  1. 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).

  2. Via: Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds - Kichwa cha Via hufafanua itifaki ya usafirishaji (UDP) na anwani ya mteja (pc33.example.com). Parameta "branch" hutumika kwa kugundua mizunguko na kulinganisha shughuli.

  3. Max-Forwards: Max-Forwards: 70 - Uga huu wa kichwa unapunguza idadi ya mara ombi linaweza kutumwa na wakalimani ili kuepuka mizunguko isiyo na mwisho.

  4. To: To: John Doe <sip:jdoe@example.com> - Kichwa cha To hufafanua mpokeaji wa simu, ikiwa ni pamoja na jina la kuonyesha (John Doe) na URI ya SIP (sip:jdoe@example.com).

  5. From: From: Jane Smith <sip:jsmith@example.org>;tag=1928301774 - Kichwa cha From hufafanua mtumaji wa simu, ikiwa ni pamoja na jina la kuonyesha (Jane Smith) na URI ya SIP (sip:jsmith@example.org). Parameta "tag" hutumika kutambua kwa kipekee jukumu la mtumaji katika mazungumzo.

  6. Call-ID: Call-ID: a84b4c76e66710 - Kichwa cha Call-ID hutambulisha kwa kipekee kikao cha simu kati ya wakala wawili wa watumiaji.

  7. CSeq: CSeq: 314159 INVITE - Kichwa cha CSeq kina nambari ya mfululizo na njia iliyotumiwa katika ombi. Hutumiwa kulinganisha majibu na maombi na kugundua ujumbe usio katika mpangilio.

  8. Contact: Contact: <sip:jsmith@pc33.example.com> - Kichwa cha Contact hutoa njia moja kwa moja kwa mtumaji, ambayo inaweza kutumika kwa maombi na majibu yanayofuata.

  9. User-Agent: User-Agent: ExampleSIPClient/1.0 - Kichwa cha User-Agent hutoa habari kuhusu programu au vifaa vya mtumaji, ikiwa ni pamoja na jina lake na toleo.

  10. Allow: Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO - Kichwa cha Allow hupanga njia za SIP zinazoungwa mkono na mtumaji. Hii husaidia mpokeaji kuelewa ni njia zipi zinaweza kutumika wakati wa mawasiliano.

  11. Content-Type: Content-Type: application/sdp - Kichwa cha Content-Type hufafanua aina ya media ya mwili wa ujumbe, katika kesi hii, SDP (Itifaki ya Maelezo ya Kikao).

  12. Content-Length: Content-Length: 142 - Kichwa cha Content-Length inaonyesha ukubwa wa mwili wa ujumbe kwa herufi.

  13. Mwili wa Ujumbe: Mwili wa ujumbe una maelezo ya kikao cha SDP, ambayo inajumuisha habari kuhusu aina za media, 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 - Mwanzilishi na kitambulisho cha kikao

  • s=- - Jina la kikao (hyphen moja inaonyesha hakuna jina la kikao)

  • c=IN IP4 pc33.example.com - Taarifa ya uunganisho (aina ya mtandao, aina ya anwani, na anwani)

  • t=0 0 - Taarifa ya wakati (wakati wa kuanza na kuacha, 0 0 inamaanisha kikao hakina kikomo)

  • m=audio 49170 RTP/AVP 0 - Maelezo ya media (aina ya media, nambari ya bandari, itifaki ya usafirishaji, na orodha ya muundo). Katika kesi hii, inabainisha mtiririko wa sauti kutumia RTP/AVP (Itifaki ya Usafirishaji wa Wakati Halisi / Mwandiko wa Sauti Video) na muundo 0 (PCMU/8000).

  • a=rtpmap:0 PCMU/8000 - Sifa inayopanga muundo (0) kwa codec (PCMU) na kiwango chake cha saa (8000 Hz).

Mfano wa Usajili wa SIP

Mbinu ya REGISTER hutumiwa katika Itifaki ya Kuanzisha Mazungumzo (SIP) kuruhusu wakala wa mtumiaji (UA), kama simu ya VoIP au simu laini, kujiandikisha eneo lake na seva ya msajili ya SIP. Mchakato huu huwezesha seva kujua wapi kupeleka maombi ya SIP yanayokuja kwa mtumiaji aliyesajiliwa. Seva ya msajili kawaida ni sehemu ya seva ya proksi ya SIP au seva maalum ya usajili.

Hapa kuna mfano wa kina wa ujumbe wa SIP uliohusika katika mchakato wa uthibitishaji wa USAJILI:

  1. Ombi la REGISTER la awali kutoka UA kwenda kwa seva ya msajili:

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

Hii ujumbe wa kwanza wa REGISTER unatumwa na UA (Alice) kwa seva ya msajili. Inajumuisha habari muhimu kama muda uliopendekezwa wa usajili (Expires), URI ya SIP ya mtumiaji (sip:alice@example.com), na anwani ya mawasiliano ya mtumiaji (sip:alice@192.168.1.100:5060).

  1. Majibu ya 401 Unauthorized kutoka kwa seva ya msajili:

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

Registrar server inajibu na ujumbe wa "401 Unauthorized", ambao una "WWW-Authenticate" kichwa. Kichwa hiki kina habari inayohitajika kwa UA kujithibitisha, kama vile enzi ya uthibitishaji, nonce, na algorithm.

  1. Ombi la KUSAJILI na sifa za uthibitishaji:

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 likiingiza kichwa cha "Uthibitishaji" pamoja na sifa muhimu, kama vile jina la mtumiaji, eneo, nonce, na thamani ya jibu iliyohesabiwa kutumia habari iliyotolewa na nywila ya mtumiaji.

Hivi ndivyo Jibu la Uthibitishaji linavyohesabiwa:

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}")
  1. Mafanikio ya usajili majibu 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 msajili kuthibitisha sifa zilizotolewa, inatuma jibu la "200 OK" kuonyesha kwamba usajili ulifanikiwa. Jibu linajumuisha habari ya mawasiliano iliyosajiliwa na muda wa kumalizika kwa usajili. Wakati huu, wakala wa mtumiaji (Alice) amesajiliwa kwa mafanikio na maombi ya SIP yanayoingia kwa Alice yanaweza kupelekwa kwa anwani sahihi ya mawasiliano.

Mfano wa Piga Simu

Hakijatajwa, lakini Mtumiaji B lazima atume ujumbe wa KUJIANDIKISHA kwa Proxy 2 kabla ya kuweza kupokea simu.

Last updated