554,8554 - Pentesting RTSP

Support HackTricks

Basic Information

From wikipedia:

रियल टाइम स्ट्रीमिंग प्रोटोकॉल (RTSP) एक नेटवर्क नियंत्रण प्रोटोकॉल है जिसे मनोरंजन और संचार प्रणालियों में स्ट्रीमिंग मीडिया सर्वरों को नियंत्रित करने के लिए डिज़ाइन किया गया है। यह प्रोटोकॉल अंत बिंदुओं के बीच मीडिया सत्र स्थापित करने और नियंत्रित करने के लिए उपयोग किया जाता है। मीडिया सर्वरों के ग्राहक VHS-शैली के आदेश जारी करते हैं, जैसे कि प्ले, रिकॉर्ड और पॉज़, ताकि सर्वर से ग्राहक (वीडियो ऑन डिमांड) या ग्राहक से सर्वर (वॉयस रिकॉर्डिंग) तक मीडिया स्ट्रीमिंग के वास्तविक समय नियंत्रण को सुविधाजनक बनाया जा सके।

स्ट्रीमिंग डेटा के प्रसारण का कार्य RTSP का नहीं है। अधिकांश RTSP सर्वर मीडिया स्ट्रीम वितरण के लिए रियल-टाइम ट्रांसपोर्ट प्रोटोकॉल (RTP) के साथ रियल-टाइम कंट्रोल प्रोटोकॉल (RTCP) का उपयोग करते हैं। हालाँकि, कुछ विक्रेता स्वामित्व वाले परिवहन प्रोटोकॉल को लागू करते हैं। उदाहरण के लिए, RealNetworks का RTSP सर्वर सॉफ़्टवेयर भी RealNetworks के स्वामित्व वाले रियल डेटा ट्रांसपोर्ट (RDT) का उपयोग करता है।

डिफ़ॉल्ट पोर्ट: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Key Details

RTSP HTTP के समान है लेकिन विशेष रूप से मीडिया स्ट्रीमिंग के लिए डिज़ाइन किया गया है। इसे एक सरल विनिर्देशन में परिभाषित किया गया है जिसे यहाँ पाया जा सकता है:

RTSP – RFC2326

डिवाइस अनधिकृत या अधिकृत पहुँच की अनुमति दे सकते हैं। जाँच करने के लिए, एक "DESCRIBE" अनुरोध भेजा जाता है। एक बुनियादी उदाहरण नीचे दिखाया गया है:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2

याद रखें, सही प्रारूप में एक सुसंगत प्रतिक्रिया के लिए एक डबल "\r\n" शामिल होता है। "200 OK" प्रतिक्रिया अनधिकृत पहुँच को इंगित करती है, जबकि "401 Unauthorized" प्रमाणीकरण की आवश्यकता का संकेत देती है, यह प्रकट करती है कि Basic या Digest authentication की आवश्यकता है।

Basic authentication के लिए, आप उपयोगकर्ता नाम और पासवर्ड को base64 में एन्कोड करते हैं और इसे अनुरोध में इस तरह शामिल करते हैं:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==

यह उदाहरण "admin" और "1234" को क्रेडेंशियल के रूप में उपयोग करता है। यहाँ एक Python script है जो ऐसा अनुरोध भेजने के लिए है:

import socket
req = "DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r\n"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.1", 554))
s.sendall(req)
data = s.recv(1024)
print(data)

बुनियादी प्रमाणीकरण सरल है और इसे प्राथमिकता दी जाती है। डाइजेस्ट प्रमाणीकरण में "401 Unauthorized" प्रतिक्रिया में प्रदान की गई प्रमाणीकरण विवरणों का सावधानीपूर्वक प्रबंधन आवश्यक है।

यह अवलोकन RTSP स्ट्रीम तक पहुँचने की प्रक्रिया को सरल बनाता है, इसके सरलता और प्रारंभिक प्रयासों में व्यावहारिकता के लिए बुनियादी प्रमाणीकरण पर ध्यान केंद्रित करता है।

गणना

चलो मान्य तरीकों और URLs के बारे में जानकारी प्राप्त करें जो समर्थित हैं और सामग्री तक पहुँच प्राप्त करने के लिए (यदि आवश्यक हो) ब्रूट-फोर्स करने का प्रयास करें।

nmap -sV --script "rtsp-*" -p <PORT> <IP>

अन्य उपयोगी कार्यक्रम

Bruteforce करने के लिए: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • किसी भी सुलभ लक्ष्य पर खुले RTSP होस्ट का पता लगाएं

  • उनकी सार्वजनिक जानकारी प्राप्त करें (होस्टनेम, पोर्ट, कैमरा मॉडल, आदि)

  • उनके स्ट्रीम रूट (उदाहरण के लिए /live.sdp) प्राप्त करने के लिए स्वचालित शब्दकोश हमले शुरू करें

  • कैमरों के उपयोगकर्ता नाम और पासवर्ड प्राप्त करने के लिए स्वचालित शब्दकोश हमले शुरू करें

  • यह जांचने के लिए कि स्ट्रीम मान्य हैं और उनके सामग्री का त्वरित पूर्वावलोकन प्राप्त करने के लिए उनसे थंबनेल उत्पन्न करें

  • यह जांचने के लिए Gstreamer पाइपलाइन बनाने का प्रयास करें कि क्या वे सही ढंग से एन्कोडेड हैं

  • Cameradar द्वारा प्राप्त सभी सूचनाओं का सारांश प्रिंट करें

संदर्भ

Support HackTricks

Last updated