554,8554 - Pentesting RTSP
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
Von wikipedia:
Das Real Time Streaming Protocol (RTSP) ist ein Netzwerk-Kontrollprotokoll, das für den Einsatz in Unterhaltungs- und Kommunikationssystemen entwickelt wurde, um Streaming-Medienserver zu steuern. Das Protokoll wird verwendet, um Medien-Sitzungen zwischen Endpunkten aufzubauen und zu kontrollieren. Clients von Medienservern geben VHS-ähnliche Befehle, wie play, record und pause, aus, um die Echtzeitsteuerung des Media-Streamings vom Server zu einem Client (Video On Demand) oder von einem Client zum Server (Voice Recording) zu ermöglichen.
Die Übertragung der eigentlichen Streaming-Daten ist keine Aufgabe von RTSP. Die meisten RTSP-Server verwenden das Real-time Transport Protocol (RTP) in Verbindung mit dem Real-time Control Protocol (RTCP) für die Zustellung von Medienströmen. Einige Anbieter implementieren jedoch proprietäre Transportprotokolle. Die RTSP-Server-Software von RealNetworks beispielsweise verwendete auch RealNetworks' proprietäres Real Data Transport (RDT).
Standard-Ports: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Wichtige Details
RTSP ist ähnlich wie HTTP, wurde aber speziell für Media-Streaming entwickelt. Es ist in einer einfachen Spezifikation definiert, die hier zu finden ist:
Geräte können nicht authentifizierten oder authentifizierten Zugriff erlauben. Um das zu prüfen, wird eine "DESCRIBE"-Anfrage gesendet. Ein einfaches Beispiel ist unten dargestellt:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
Denke daran, dass die korrekte Formatierung ein doppeltes "\r\n" für eine konsistente Antwort enthält. Eine "200 OK"-Antwort zeigt nicht authentifizierten Zugriff an, während "401 Unauthorized" die Notwendigkeit einer Authentifizierung signalisiert und offenbart, ob Basic oder Digest authentication erforderlich ist.
Für Basic authentication kodieren Sie den Benutzernamen und das Passwort in base64 und fügen es wie folgt in die Anfrage ein:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Dieses Beispiel verwendet "admin" und "1234" als Zugangsdaten. Hier ist ein Python-Skript, um eine solche Anfrage zu senden:
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 ist einfacher und vorzuziehen. Digest authentication erfordert sorgfältigen Umgang mit den Authentifizierungsdetails, die in der "401 Unauthorized" Antwort bereitgestellt werden.
Diese Übersicht vereinfacht den Prozess des Zugriffs auf RTSP-Streams und konzentriert sich auf Basic authentication wegen seiner Einfachheit und Praktikabilität bei ersten Versuchen.
Enumeration
Sammle Informationen darüber, welche Methoden und URLs unterstützt werden, und versuche gegebenenfalls per brute-force Zugriff auf den Inhalt zu erlangen.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Den RTSP-Stream mit ffplay anzeigen
Sobald Sie einen gültigen RTSP-Pfad (z. B. /mpeg4, /live.sdp) entdeckt und den Zugriff bestätigt haben (ohne Authentifizierung oder mit Zugangsdaten), können Sie ffplay verwenden, um den Stream wiederzugeben:
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
-rtsp_transport tcp: Verwende TCP statt UDP für zuverlässigeres Streaming-x,-y: Optionale Flags zur Steuerung der Videoauflösung- Ersetze
<IP>und Pfad nach Bedarf
Brute Force
Andere nützliche Programme
To bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Offene RTSP-Hosts auf jedem erreichbaren Ziel erkennen
- Deren öffentliche Informationen erhalten (hostname, port, camera model, etc.)
- Automatisierte Wörterbuchangriffe starten, um deren Stream-Pfad zu erhalten (for example /live.sdp)
- Automatisierte Wörterbuchangriffe starten, um den Benutzernamen und das Passwort der Kameras zu erhalten
- Thumbnails erzeugen, um zu prüfen, ob die Streams gültig sind und eine schnelle Vorschau ihres Inhalts zu erhalten
- Versuchen, eine Gstreamer-Pipeline zu erstellen, um zu prüfen, ob sie korrekt kodiert sind
- Eine Zusammenfassung aller von Cameradar erhaltenen Informationen ausgeben
See also
32100 Udp - Pentesting Pppp Cs2 P2p Cameras
Quellen
- 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
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks