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) एक सिग्नलिंग और कॉल नियंत्रण प्रोटोकॉल है जो मल्टीमीडिया सत्रों, जिसमें वॉयस, वीडियो, और इंस्टेंट मैसेजिंग शामिल हैं, को स्थापित, संशोधित, और समाप्त करने के लिए व्यापक रूप से उपयोग किया जाता है, जो IP नेटवर्क पर होता है। इसे इंटरनेट इंजीनियरिंग टास्क फोर्स (IETF) द्वारा विकसित किया गया था, SIP को RFC 3261 में परिभाषित किया गया है और यह VoIP और एकीकृत संचार के लिए एक मानक बन गया है।
SIP की कुछ प्रमुख विशेषताएँ हैं:
पाठ-आधारित प्रोटोकॉल: SIP एक पाठ-आधारित प्रोटोकॉल है, जो इसे मानव-पठनीय बनाता है और डिबग करना आसान बनाता है। यह HTTP के समान एक अनुरोध-प्रतिक्रिया मॉडल पर आधारित है, और कॉल सत्रों को नियंत्रित करने के लिए INVITE, ACK, BYE, और CANCEL जैसे तरीकों का उपयोग करता है।
स्केलेबिलिटी और लचीलापन: SIP अत्यधिक स्केलेबल है और इसे छोटे पैमाने पर तैनाती के साथ-साथ बड़े उद्यम और कैरियर-ग्रेड वातावरण में भी उपयोग किया जा सकता है। इसे नए फीचर्स के साथ आसानी से विस्तारित किया जा सकता है, जिससे यह विभिन्न उपयोग के मामलों और आवश्यकताओं के लिए अनुकूलनीय बनता है।
अंतर-संचालनीयता: SIP की व्यापक स्वीकृति और मानकीकरण विभिन्न उपकरणों, अनुप्रयोगों, और सेवा प्रदाताओं के बीच बेहतर अंतर-संचालनीयता सुनिश्चित करता है, जो विभिन्न प्लेटफार्मों के बीच निर्बाध संचार को बढ़ावा देता है।
मॉड्यूलर डिज़ाइन: SIP अन्य प्रोटोकॉल जैसे RTP (रीयल-टाइम ट्रांसपोर्ट प्रोटोकॉल) के साथ काम करता है जो मीडिया ट्रांसमिशन के लिए और SDP (सेशन विवरण प्रोटोकॉल) जो मल्टीमीडिया सत्रों का वर्णन करने के लिए है। यह मॉड्यूलर डिज़ाइन विभिन्न मीडिया प्रकारों और कोडेक्स के साथ अधिक लचीलापन और संगतता की अनुमति देता है।
प्रॉक्सी और रीडायरेक्ट सर्वर: SIP कॉल रूटिंग को सुविधाजनक बनाने और कॉल फॉरवर्डिंग, कॉल ट्रांसफर, और वॉयसमेल सेवाओं जैसी उन्नत सुविधाएँ प्रदान करने के लिए प्रॉक्सी और रीडायरेक्ट सर्वरों का उपयोग कर सकता है।
उपस्थिति और इंस्टेंट मैसेजिंग: SIP केवल वॉयस और वीडियो संचार तक सीमित नहीं है। यह उपस्थिति और इंस्टेंट मैसेजिंग का भी समर्थन करता है, जो एक विस्तृत श्रृंखला के एकीकृत संचार अनुप्रयोगों को सक्षम बनाता है।
इसके कई लाभों के बावजूद, SIP को कॉन्फ़िगर और प्रबंधित करना जटिल हो सकता है, विशेष रूप से NAT ट्रैवर्सल और फ़ायरवॉल मुद्दों से निपटने के दौरान। हालाँकि, इसकी बहुपरकारीता, स्केलेबिलिटी, और उद्योग में व्यापक समर्थन इसे VoIP और मल्टीमीडिया संचार के लिए एक लोकप्रिय विकल्प बनाते हैं।
RFC 3261 में परिभाषित मुख्य SIP विधियाँ हैं:
INVITE: एक नए सत्र (कॉल) को शुरू करने या एक मौजूदा को संशोधित करने के लिए उपयोग किया जाता है। INVITE विधि सत्र विवरण (आमतौर पर SDP का उपयोग करके) ले जाती है ताकि प्राप्तकर्ता को प्रस्तावित सत्र के विवरण के बारे में सूचित किया जा सके, जैसे मीडिया प्रकार, कोडेक्स, और ट्रांसपोर्ट प्रोटोकॉल।
ACK: एक INVITE अनुरोध के अंतिम प्रतिक्रिया की प्राप्ति की पुष्टि करने के लिए भेजा जाता है। ACK विधि INVITE लेनदेन की विश्वसनीयता सुनिश्चित करती है।
BYE: एक स्थापित सत्र (कॉल) को समाप्त करने के लिए उपयोग किया जाता है। BYE विधि सत्र में किसी भी पक्ष द्वारा भेजी जाती है ताकि यह संकेत दिया जा सके कि वे संचार समाप्त करना चाहते हैं।
CANCEL: सत्र स्थापित होने से पहले एक लंबित INVITE अनुरोध को रद्द करने के लिए भेजा जाता है। CANCEL विधि भेजने वाले को INVITE लेनदेन को रद्द करने की अनुमति देती है यदि वे अपना मन बदलते हैं या यदि प्राप्तकर्ता से कोई प्रतिक्रिया नहीं होती है।
OPTIONS: एक SIP सर्वर या उपयोगकर्ता एजेंट की क्षमताओं के बारे में पूछताछ करने के लिए उपयोग किया जाता है। OPTIONS विधि को सत्र स्थापित किए बिना समर्थित विधियों, मीडिया प्रकारों, या अन्य एक्सटेंशन के बारे में जानकारी मांगने के लिए भेजा जा सकता है।
REGISTER: एक उपयोगकर्ता एजेंट द्वारा SIP रजिस्ट्रार सर्वर के साथ अपनी वर्तमान स्थिति को पंजीकृत करने के लिए उपयोग किया जाता है। REGISTER विधि उपयोगकर्ता के SIP URI और उनके वर्तमान IP पते के बीच एक अद्यतन मैपिंग बनाए रखने में मदद करती है, जिससे कॉल रूटिंग और डिलीवरी सक्षम होती है।
ध्यान दें कि किसी को कॉल करने के लिए REGISTER का उपयोग करना आवश्यक नहीं है।
हालांकि, यह संभव है कि INVITE करने के लिए कॉल करने वाले को पहले प्रमाणित होना पड़े या उसे 401 Unauthorized
प्रतिक्रिया प्राप्त होगी।
इन मुख्य विधियों के अलावा, अन्य RFCs में परिभाषित कई SIP एक्सटेंशन विधियाँ हैं, जैसे:
SUBSCRIBE: RFC 6665 में परिभाषित, SUBSCRIBE विधि का उपयोग एक विशिष्ट संसाधन, जैसे उपयोगकर्ता की उपस्थिति या कॉल स्थिति के बारे में सूचनाएँ प्राप्त करने के लिए किया जाता है।
NOTIFY: RFC 6665 में भी परिभाषित, NOTIFY विधि एक सर्वर द्वारा एक सदस्यता प्राप्त उपयोगकर्ता एजेंट को निगरानी किए गए संसाधन की स्थिति में बदलाव के बारे में सूचित करने के लिए भेजी जाती है।
REFER: RFC 3515 में परिभाषित, REFER विधि का उपयोग प्राप्तकर्ता से एक ट्रांसफर करने या तीसरे पक्ष को संदर्भित करने के लिए अनुरोध करने के लिए किया जाता है। यह आमतौर पर कॉल ट्रांसफर परिदृश्यों के लिए उपयोग किया जाता है।
MESSAGE: RFC 3428 में परिभाषित, MESSAGE विधि का उपयोग SIP उपयोगकर्ता एजेंटों के बीच तत्काल संदेश भेजने के लिए किया जाता है, जो SIP ढांचे के भीतर पाठ-आधारित संचार को सक्षम बनाता है।
UPDATE: RFC 3311 में परिभाषित, UPDATE विधि एक सत्र को संशोधित करने की अनुमति देती है बिना मौजूदा संवाद की स्थिति को प्रभावित किए। यह एक चल रहे कॉल के दौरान कोडेक्स या मीडिया प्रकारों जैसे सत्र पैरामीटर को अपडेट करने के लिए उपयोगी है।
PUBLISH: RFC 3903 में परिभाषित, PUBLISH विधि का उपयोग एक उपयोगकर्ता एजेंट द्वारा एक सर्वर पर घटना स्थिति जानकारी प्रकाशित करने के लिए किया जाता है, जिससे यह अन्य इच्छुक पक्षों के लिए उपलब्ध हो जाता है।
1xx (प्रारंभिक प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि अनुरोध प्राप्त हुआ था, और सर्वर इसे संसाधित करना जारी रख रहा है।
100 Trying: अनुरोध प्राप्त हुआ, और सर्वर इस पर काम कर रहा है।
180 Ringing: कॉल करने वाले को सूचित किया जा रहा है और वह कॉल लेगा।
183 Session Progress: कॉल की प्रगति के बारे में जानकारी प्रदान करता है।
2xx (सफल प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि अनुरोध सफलतापूर्वक प्राप्त, समझा, और स्वीकार किया गया।
200 OK: अनुरोध सफल रहा, और सर्वर ने इसे पूरा किया।
202 Accepted: अनुरोध संसाधित करने के लिए स्वीकार किया गया, लेकिन यह अभी पूरा नहीं हुआ है।
3xx (रीडायरेक्शन प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि अनुरोध को पूरा करने के लिए आगे की कार्रवाई की आवश्यकता है, आमतौर पर एक वैकल्पिक संसाधन से संपर्क करके।
300 Multiple Choices: कई विकल्प उपलब्ध हैं, और उपयोगकर्ता या क्लाइंट को एक चुनना होगा।
301 Moved Permanently: अनुरोधित संसाधन को एक नया स्थायी URI सौंपा गया है।
302 Moved Temporarily: अनुरोधित संसाधन अस्थायी रूप से एक अलग URI पर उपलब्ध है।
305 Use Proxy: अनुरोध को एक निर्दिष्ट प्रॉक्सी पर भेजा जाना चाहिए।
4xx (क्लाइंट त्रुटि प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि अनुरोध में खराब वाक्यविन्यास है या इसे सर्वर द्वारा पूरा नहीं किया जा सकता।
400 Bad Request: अनुरोध गलत या अमान्य था।
401 Unauthorized: अनुरोध के लिए उपयोगकर्ता प्रमाणीकरण की आवश्यकता है।
403 Forbidden: सर्वर ने अनुरोध को समझा लेकिन इसे पूरा करने से इनकार कर दिया।
404 Not Found: अनुरोधित संसाधन सर्वर पर नहीं मिला।
408 Request Timeout: सर्वर को समय के भीतर एक पूर्ण अनुरोध प्राप्त नहीं हुआ।
486 Busy Here: कॉल करने वाला वर्तमान में व्यस्त है और कॉल नहीं ले सकता।
5xx (सर्वर त्रुटि प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि सर्वर ने एक वैध अनुरोध को पूरा करने में विफलता दिखाई।
500 Internal Server Error: सर्वर ने अनुरोध को संसाधित करते समय एक त्रुटि का सामना किया।
501 Not Implemented: सर्वर उस कार्यक्षमता का समर्थन नहीं करता है जो अनुरोध को पूरा करने के लिए आवश्यक है।
503 Service Unavailable: सर्वर वर्तमान में रखरखाव या ओवरलोड के कारण अनुरोध को संभालने में असमर्थ है।
6xx (वैश्विक विफलता प्रतिक्रियाएँ): ये प्रतिक्रियाएँ संकेत करती हैं कि अनुरोध को किसी भी सर्वर द्वारा पूरा नहीं किया जा सकता।
600 Busy Everywhere: कॉल के लिए सभी संभावित गंतव्य व्यस्त हैं।
603 Decline: कॉल करने वाला कॉल में भाग लेना नहीं चाहता।
604 Does Not Exist Anywhere: अनुरोधित संसाधन नेटवर्क में कहीं भी उपलब्ध नहीं है।
REGISTER विधि सत्र आरंभ प्रोटोकॉल (SIP) में उपयोग की जाती है ताकि एक उपयोगकर्ता एजेंट (UA), जैसे VoIP फोन या सॉफ़्टफोन, SIP रजिस्ट्रार सर्वर के साथ अपनी स्थिति को पंजीकृत कर सके। यह प्रक्रिया सर्वर को यह जानने देती है कि पंजीकृत उपयोगकर्ता के लिए आने वाले SIP अनुरोधों को कहाँ रूट करना है। रजिस्ट्रार सर्वर आमतौर पर एक SIP प्रॉक्सी सर्वर या एक समर्पित पंजीकरण सर्वर का हिस्सा होता है।
यहाँ REGISTER प्रमाणीकरण प्रक्रिया में शामिल SIP संदेशों का एक विस्तृत उदाहरण है:
UA से रजिस्ट्रार सर्वर के लिए प्रारंभिक REGISTER अनुरोध:
यह प्रारंभिक REGISTER संदेश UA (एलीस) द्वारा रजिस्ट्रार सर्वर को भेजा जाता है। इसमें महत्वपूर्ण जानकारी शामिल होती है जैसे कि इच्छित पंजीकरण अवधि (Expires), उपयोगकर्ता का SIP URI (sip:alice@example.com), और उपयोगकर्ता का संपर्क पता (sip:alice@192.168.1.100:5060)।
401 Unauthorized रजिस्ट्रार सर्वर से प्रतिक्रिया:
The registrar server responds with a "401 Unauthorized" message, which includes a "WWW-Authenticate" header. This header contains information required for the UA to authenticate itself, such as the authentication realm, nonce, and algorithm.
REGISTER request with authentication credentials:
UA एक और REGISTER अनुरोध भेजता है, इस बार आवश्यक क्रेडेंशियल्स जैसे कि उपयोगकर्ता नाम, क्षेत्र, नॉनस, और एक प्रतिक्रिया मान शामिल करते हुए "Authorization" हेडर के साथ, जो प्रदान की गई जानकारी और उपयोगकर्ता के पासवर्ड का उपयोग करके गणना की जाती है।
इस तरह Authorization प्रतिक्रिया की गणना की जाती है:
सफल पंजीकरण प्रतिक्रिया रजिस्ट्रार सर्वर से:
After the registrar server verifies the provided credentials, यह "200 OK" प्रतिक्रिया भेजता है यह संकेत करने के लिए कि पंजीकरण सफल था। प्रतिक्रिया में पंजीकृत संपर्क जानकारी और पंजीकरण के लिए समाप्ति समय शामिल होता है। इस बिंदु पर, उपयोगकर्ता एजेंट (एलीस) SIP रजिस्ट्रार सर्वर के साथ सफलतापूर्वक पंजीकृत है, और एलीस के लिए आने वाले SIP अनुरोधों को उचित संपर्क पते पर रूट किया जा सकता है।
यह उल्लेख नहीं किया गया है, लेकिन उपयोगकर्ता B को कॉल प्राप्त करने से पहले Proxy 2 को एक REGISTER संदेश भेजना होगा।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)