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