554,8554 - Pentesting RTSP

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

बुनियादी जानकारी

From wikipedia:

The Real Time Streaming Protocol (RTSP) एक नेटवर्क कंट्रोल प्रोटोकॉल है जिसे मनोरंजन और संचार प्रणालियों में स्ट्रीमिंग मीडिया सर्वर्स को नियंत्रित करने के लिए उपयोग के लिए डिज़ाइन किया गया है। यह प्रोटोकॉल एंड-पॉइंट्स के बीच मीडिया सत्रों को स्थापित करने और नियंत्रित करने के लिए उपयोग किया जाता है। मीडिया सर्वरों के क्लाइंट VHS-style कमांड जारी करते हैं, जैसे play, record और pause, ताकि सर्वर से क्लाइंट की ओर (Video On Demand) या क्लाइंट से सर्वर की ओर (Voice Recording) मीडिया स्ट्रीमिंग का वास्तविक-समय नियंत्रण संभव हो सके।

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

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

PORT    STATE SERVICE
554/tcp open  rtsp

मुख्य विवरण

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

RTSP – RFC2326

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

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

ध्यान रखें, सही फ़ॉर्मैटिंग के लिए एक consistent response में डबल "\r\n" होना चाहिए। एक "200 OK" response बताता है कि unauthenticated access है, जबकि "401 Unauthorized" ऑथेंटिकेशन की आवश्यकता को संकेत करता है, और बताता है कि Basic या Digest authentication आवश्यक है।

यदि Basic authentication प्रयोग हो रहा है, तो आप username और password को base64 में encode कर request में इस तरह शामिल करते हैं:

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

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

python
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)

Basic authentication सरल और अधिक उपयुक्त है। Digest authentication के लिए "401 Unauthorized" response में दिए गए authentication विवरणों को सावधानी से संभालना आवश्यक है।

यह ओवरव्यू RTSP streams तक पहुँचने की प्रक्रिया को सरल बनाता है, और शुरुआती प्रयासों में सरलता और व्यवहारिकता के कारण Basic authentication पर केंद्रित है।

सूचीकरण

चलो पता करें कि कौन से valid methods और URLs supported हैं और यदि आवश्यक हो तो content तक पहुँचने के लिए brute-force करके access प्राप्त करने का प्रयास करें।

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

ffplay के साथ RTSP स्ट्रीम देखना

एक बार जब आपने एक मान्य RTSP पाथ (उदा., /mpeg4, /live.sdp) खोज लिया और एक्सेस की पुष्टि कर ली हो (unauthenticated या credentials के साथ), तो आप फ़ीड स्ट्रीम करने के लिए ffplay का उपयोग कर सकते हैं:

bash
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
  • -rtsp_transport tcp: अधिक विश्वसनीय स्ट्रीमिंग के लिए UDP की बजाय TCP का उपयोग करें
  • -x, -y: वीडियो रेज़ॉल्यूशन नियंत्रित करने के लिए वैकल्पिक flags
  • Replace <IP> and path as needed

Brute Force

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

To bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • किसी भी पहुँच योग्य लक्ष्य पर खुले RTSP hosts का पता लगाएं
  • इनकी सार्वजनिक जानकारी प्राप्त करें (hostname, port, camera model, आदि)
  • उनके stream route (उदाहरण के लिए /live.sdp) प्राप्त करने के लिए स्वचालित dictionary attacks लॉन्च करें
  • कैमरों का username और password प्राप्त करने के लिए स्वचालित dictionary attacks लॉन्च करें
  • स्ट्रीम्स वैध हैं या नहीं जाँचने और उनकी सामग्री का त्वरित पूर्वावलोकन पाने के लिए उनसे thumbnails बनाएं
  • जांचने के लिए कि क्या वे सही तरीके से encoded हैं, Gstreamer pipeline बनाने का प्रयास करें
  • Cameradar जो भी जानकारी प्राप्त कर सकता है उसका सारांश प्रिंट करें

देखें

32100 Udp - Pentesting Pppp Cs2 P2p Cameras

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें