SIP (Session Initiation Protocol)

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मौलिक जानकारी

SIP (सत्र प्रारंभन प्रोटोकॉल) एक संकेतन और कॉल नियंत्रण प्रोटोकॉल है जिसका व्यापक रूप से उपयोग किया जाता है वॉयस, वीडियो, और इमीडिएट मैसेजिंग सहित मल्टीमीडिया सत्रों की स्थापना, संशोधन, और समापन के लिए IP नेटवर्कों पर। इंटरनेट इंजीनियरिंग टास्क फोर्स (IETF) द्वारा विकसित, SIP को RFC 3261 में परिभाषित किया गया है और यह वॉयस ओआईपी और एकीकृत संचार के लिए डि फैक्टो मानक बन गया है।

SIP की कुछ मुख्य विशेषताएँ शामिल हैं:

  1. टेक्स्ट-आधारित प्रोटोकॉल: SIP एक टेक्स्ट-आधारित प्रोटोकॉल है, जिससे यह मानव-पठनीय और डीबग करने में आसान होता है। यह एक अनुरोध-प्रतिक्रिया मॉडल पर आधारित है, HTTP के समान, और कॉल सत्रों को नियंत्रित करने के लिए INVITE, ACK, BYE, और CANCEL जैसे विधियों का उपयोग करता है।

  2. स्केलेबिलिटी और लचीलापन: SIP उच्च स्केलेबिलिटी वाला है और इसे छोटे पैमाने पर डिप्लॉयमेंट के साथ ही बड़े उद्यम और कैरियर-ग्रेड वातानुकूलन में उपयोग किया जा सकता है। यह नई सुविधाओं के साथ आसानी से विस्तारित किया जा सकता है, जिससे यह विभिन्न उपयोग मामलों और आवश्यकताओं के लिए अनुकूल हो जाता है।

  3. अंतर-संगतता: SIP का व्यापक अपनान और मानकीकरण विभिन्न उपकरणों, एप्लिकेशनों, और सेवा प्रदाताओं के बीच बेहतर अंतर-संगतता सुनिश्चित करता है, विभिन्न प्लेटफॉर्मों पर संवाद को सुगम बनाता है।

  4. मॉड्यूलर डिज़ाइन: SIP अन्य प्रोटोकॉलों जैसे RTP (रीयल-टाइम ट्रांसपोर्ट प्रोटोकॉल) के साथ काम करता है मीडिया प्रसारण और SDP (सत्र विवरण प्रोटोकॉल) के साथ मल्टीमीडिया सत्रों का वर्णन करने के लिए। यह मॉड्यूलर डिज़ाइन विभिन्न मीडिया प्रकारों और कोडेक्स के साथ अधिक लचीलापन और संगतता की अनुमति देता है।

  5. प्रॉक्सी और पुनर्निर्देशन सर्वर: SIP कॉल रूटिंग को सुविधाजनक बनाने और कॉल फॉरवर्डिंग, कॉल ट्रांसफर, और वॉयसमेल सेवाओं जैसी उन्नत सुविधाएं प्रदान करने के लिए प्रॉक्सी और पुनर्निर्देशन सर्वर का उपयोग कर सकता है।

  6. प्रासेंस और त्वरित संदेशन: SIP वॉयस और वीडियो संचार से सीमित नहीं है। यह प्रासेंस और त्वरित संदेशन का समर्थन भी करता है, जिससे एक व्यापक एकीकृत संचार एप्लिकेशन की व्यापक श्रेणी को सक्षम करता है।

इसके कई फायदों के बावजूद, SIP को कॉन्फ़िगर और प्रबंधित करना कठिन हो सकता है, विशेष रूप से जब NAT ट्रावर्सल और फ़ायरवॉल मुद्दों का सामना करना हो। हालांकि, इसकी विविधता, स्केलेबिलिटी, और उद्योग में व्यापक समर्थन के कारण यह वॉयस ओआईपी और मल्टीमीडिया संचार के लिए एक लोकप्रिय विकल्प बनाता है।

SIP विधियाँ

RFC 3261 में परिभाषित मूल SIP विधियाँ शामिल हैं:

  1. INVITE: एक नया सत्र (कॉल) प्रारंभ करने या मौजूदा को संशोधित करने के लिए उपयोग किया जाता है। INVITE विधि सत्र विवरण (सामान्यत: SDP का उपयोग करके) लेकर प्राप्तकर्ता को प्रस्तावित सत्र के विवरणों के बारे में सूचित करने के लिए होती है, जैसे मीडिया प्रकार, कोडेक्स, और परिवहन प्रोटोकॉल।

  2. ACK: INVITE अनुरोध के एक अंतिम प्रतिक्रिया के प्राप्ति की पुष्टि करने के लिए भेजा जाता है। ACK विधि INVITE लेन-देन की स्थिरता को समर्थन प्रदान करके अंत से अंत पुष्टि प्रदान करती है।

  3. BYE: स्थापित सत्र (कॉल) को समाप्त करने के लिए उपयोग किया जाता है। BYE विधि सत्र के किसी भी पक्ष द्वारा भेजी जाती है जो संचार समाप्त करना चाहता है।

  4. CANCEL: स्थापित सत्र स्थापित होने से पहले एक लंबित INVITE अनुरोध को रद्द करने के लिए भेजा जाता है। CANCEL विधि भेजने वाले को अगर उनका विचार बदल जाता है या प्राप्तकर्ता से कोई प्रतिक्रिया नहीं मिलती है तो INVITE लेन-देन को रद्द करने की अनुमति देती है।

  5. OPTIONS: SIP सर्वर या उपयोगकर्ता की क्षमताओं का पूछताछ करने के लिए उपयोग किया जाता है। OPTIONS विधि वास्तविक सत्र स्थापित किए बिना समर्थित विधियों, मीडिया प्रकार, या अन्य विस्तारों के बारे में जानकारी के लिए भेजी जा सकती है।

  6. REGISTER: एक उपयोगकर्ता एजेंट द्वारा उसकी वर्तमान स्थान को एक SIP रजिस्ट्रार सर्वर के साथ पंजीकृत करने के लिए उपयोग किया जाता है। REGISTER विधि एक उपयोगकर्ता के SIP URI और उनके वर्तमान आईपी पते के बीच एक अद्यतन मैपिंग बनाए रखने में मदद करती है, जिससे कॉल रूटिंग और वितरण संभव होता है।

ध्यान दें कि किसी को कॉल करने के लिए REGISTER का उपयो

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
प्रत्येक पैराम व्याख्या
  1. Request-Line: INVITE sip:jdoe@example.com SIP/2.0 - यह लाइन विधि (INVITE), अनुरोध URI (sip:jdoe@example.com), और SIP संस्करण (SIP/2.0) को दर्शाती है।

  2. Via: Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds - Via हैडर निर्वाहन प्रोटोकॉल (UDP) और क्लाइंट का पता (pc33.example.com) निर्दिष्ट करता है। "शाखा" पैरामीटर लूप का पता लगाने और लेन-देन मेलाने के लिए उपयोग किया जाता है।

  3. Max-Forwards: Max-Forwards: 70 - यह हेडर फ़ील्ड अनंत लूप से बचने के लिए प्रॉक्सी द्वारा अनुरोध को कितनी बार आगे भेजा जा सकता है, इसे सीमित करता है।

  4. To: To: John Doe <sip:jdoe@example.com> - To हेडर कॉल के प्राप्तकर्ता को निर्दिष्ट करता है, उनका प्रदर्शन नाम (John Doe) और SIP URI (sip:jdoe@example.com) सहित।

  5. From: From: Jane Smith <sip:jsmith@example.org>;tag=1928301774 - From हेडर कॉल के भेजने वाले को निर्दिष्ट करता है, उनका प्रदर्शन नाम (Jane Smith) और SIP URI (sip:jsmith@example.org) सहित। "टैग" पैरामीटर का उपयोग भेजने वाले की भूमिका को अद्वितीय रूप से पहचानने के लिए किया जाता है।

  6. Call-ID: Call-ID: a84b4c76e66710 - Call-ID हेडर दो उपयोगकर्ताओं के बीच एक कॉल सत्र को अद्वितीय रूप से पहचानता है।

  7. CSeq: CSeq: 314159 INVITE - CSeq हेडर में एक क्रम संख्या और अनुरोध में उपयोग की गई विधि होती है। यह उत्तरों को अनुरोधों से मेलाने और अव्यवस्थित संदेशों का पता लगाने के लिए उपयोग किया जाता है।

  8. Contact: Contact: <sip:jsmith@pc33.example.com> - संपर्क हेडर भेजने वाले के लिए एक सीधा मार्ग प्रदान करता है, जिसे आगामी अनुरोधों और प्रतिक्रियाओं के लिए उपयोग किया जा सकता है।

  9. User-Agent: User-Agent: ExampleSIPClient/1.0 - User-Agent हेडर भेजने वाले के सॉफ़्टवेयर या हार्डवेयर के बारे में जानकारी प्रदान करता है, इसका नाम और संस्करण सहित।

  10. Allow: Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO - Allow हेडर उस विधियों की सूची प्रदान करता है जिन्हें भेजने वाले समर्थन करता है। यह प्राप्तकर्ता को समझने में मदद करता है कि संचार के दौरान कौन-कौन सी विधियाँ उपयोग की जा सकती हैं।

  11. Content-Type: Content-Type: application/sdp - Content-Type हेडर संदेश शरीर के मीडिया प्रकार को निर्दिष्ट करता है, इस मामले में, SDP (सत्र विवरण प्रोटोकॉल)।

  12. Content-Length: Content-Length: 142 - Content-Length हेडर संदेश शरीर का आकार बाइट में दर्शाता है।

  13. Message Body: संदेश शरीर में SDP सत्र विवरण शामिल है, जिसमें प्रस्तावित सत्र के लिए मीडिया प्रकार, कोडेक, और परिवहन प्रोटोकॉल के बारे में जानकारी शामिल है।

  • v=0 - प्रोटोकॉल संस्करण (SDP के लिए 0)

  • o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com - उत्पादक और सत्र पहचानकर्ता

  • s=- - सत्र नाम (एक एकल डैश नाम को नहीं दिखाता है)

  • c=IN IP4 pc33.example.com - कनेक्शन सूचना (नेटवर्क प्रकार, पता प्रकार, और पता)

  • t=0 0 - समय सूचना (शुरू और समाप्ति समय, 0 0 का अर्थ है कि सत्र सीमित नहीं है)

  • m=audio 49170 RTP/AVP 0 - मीडिया विवरण (मीडिया प्रकार, पोर्ट नंबर, परिवहन प्रोटोकॉल, और स्वरूप सूची)। इस मामले में, यह RTP/AVP (रीयल-टाइम परिवहन प्रोटोकॉल / ऑडियो वीडियो प्रोफ़ाइल) और स्वरूप 0 (PCMU/8000) का उपयोग करता है।

  • a=rtpmap:0 PCMU/8000 - स्वरूप (0) को कोडेक (PCMU) और इसकी घड़ी दर (8000 हर्ट्ज) से मैप करने वाली विशेषता।

SIP REGISTER उदाहरण

REGISTER विधि का उपयोग सत्र प्रारंभण प्रोटोकॉल (SIP) में किया जाता है ताकि एक उपयोगकर्ता एजेंट (UA), जैसे वोआईपी फोन या सॉफ़्टफोन, एक SIP रजिस्ट्रार सर्वर के साथ अपनी स्थानिकता रजिस्टर कर सके। यह प्रक्रिया सर्वर को यह जानने में मदद करती है कि रजिस्टर्ड उपयोगकर्ता के लिए आने वाले SIP अनुरोधों को कहाँ रूट करना है। रजिस्ट्रार सर्वर सामान्यत: एक SIP प्रॉक्सी सर्वर या एक विशेषित पंजीकरण सर्वर का हिस्सा होता है।

यहाँ एक REGISTER प्रमाणीकरण प्रक्रिया में शामिल SIP संदेशों का एक विस्तृत उदाहरण है:

  1. आरंभिक REGISTER अनुरोध UA से रजिस्ट्रार सर्वर को:

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

यह प्रारंभिक REGISTER संदेश UA (एलिस) द्वारा रजिस्ट्रार सर्वर को भेजा जाता है। इसमें महत्वपूर्ण जानकारी शामिल है जैसे वांछित पंजीकरण अवधि (Expires), उपयोक्ता का SIP URI (sip:alice@example.com), और उपयोक्ता का संपर्क पता (sip:alice@192.168.1.100:5060).

  1. 401 अनधिकृत रजिस्ट्रार सर्वर से प्रतिक्रिया:

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 सर्वर एक "401 अनअथोराइज्ड" संदेश के साथ प्रतिक्रिया करता है, जिसमें "WWW-Authenticate" हेडर शामिल होता है। यह हेडर UA को अपने आप को प्रमाणित करने के लिए आवश्यक जानकारी शामिल करता है, जैसे प्रमाणीकरण क्षेत्र, नॉन्स, और एल्गोरिथ्म

  1. प्रमाणीकरण साक्षात्कार के साथ REGISTER अनुरोध:

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 एक और REGISTER अनुरोध भेजता है, इस बार आवश्यक प्रमाणपत्रों के साथ "Authorization" हेडर शामिल करता है, जैसे उपयोगकर्ता नाम, क्षेत्र, nonce, और एक प्रतिक्रिया मान जो प्रदान की गई जानकारी और उपयोगकर्ता का पासवर्ड उपयोग करके गणना की गई है।

यह है Authorizarion प्रतिक्रिया की गणना:

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. रजिस्ट्रार सर्वर से सफल पंजीकरण प्रतिक्रिया:

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

After the registrar server verifies the provided credentials, it sends a "200 OK" response to indicate that the registration was successful. The response includes the registered contact information and the expiration time for the registration. At this point, the user agent (Alice) is successfully registered with the SIP registrar server, and incoming SIP requests for Alice can be routed to the appropriate contact address.

Call Example

It's not mentioned, but User B needs to have sent a REGISTER message to Proxy 2 before he is able to receive calls.

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated