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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
बुनियादी जानकारी
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 में परिभाषित है जिसे यहाँ पाया जा सकता है:
डिवाइस कभी-कभी 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 है:
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 प्राप्त करने का प्रयास करें।
nmap -sV --script "rtsp-*" -p <PORT> <IP>
ffplay के साथ RTSP स्ट्रीम देखना
एक बार जब आपने एक मान्य RTSP पाथ (उदा., /mpeg4, /live.sdp) खोज लिया और एक्सेस की पुष्टि कर ली हो (unauthenticated या credentials के साथ), तो आप फ़ीड स्ट्रीम करने के लिए ffplay का उपयोग कर सकते हैं:
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
- किसी भी पहुँच योग्य लक्ष्य पर खुले 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
संदर्भ
- https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
- http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/
- https://github.com/Ullaakut/cameradar
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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks