hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md

100 lines
7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 554,8554 - Pentesting RTSP
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>
## Grundlegende Informationen
Von [Wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> Das **Real Time Streaming Protocol** (**RTSP**) ist ein Netzwerksteuerungsprotokoll, das für den Einsatz in Unterhaltungs- und Kommunikationssystemen entwickelt wurde, um Streaming-Mediaserver zu steuern. Das Protokoll wird verwendet, um Mediensitzungen zwischen Endpunkten zu etablieren und zu steuern. Clients von Medienservern geben VHS-ähnliche Befehle wie Wiedergabe, Aufnahme und Pause aus, um die Echtzeitsteuerung des Medien-Streamings vom Server zu einem Client (Video on Demand) oder von einem Client zum Server (Sprachaufzeichnung) zu erleichtern.
>
> Die Übertragung von Streaming-Daten selbst 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 Bereitstellung von Mediendatenströmen. Einige Anbieter implementieren jedoch proprietäre Transportprotokolle. Die RTSP-Server-Software von RealNetworks verwendet beispielsweise auch das proprietäre Real Data Transport (RDT).
**Standardports:** 554, 8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Schlüsseldetails
**RTSP** ist ähnlich wie HTTP, aber speziell für das Streamen von Medien konzipiert. Es ist in einer klaren Spezifikation definiert, die hier gefunden werden kann:
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
Geräte können **unauthentisierten** oder **authentisierten** Zugriff ermöglichen. Um dies zu überprüfen, wird eine "DESCRIBE"-Anfrage gesendet. Ein grundlegendes Beispiel wird unten gezeigt:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
Denken Sie daran, dass das korrekte Format eine doppelte "\r\n" für eine konsistente Antwort enthält. Eine "200 OK"-Antwort zeigt **unauthentisierten Zugriff** an, während "401 Unauthorized" auf die Notwendigkeit der Authentifizierung hinweist und offenbart, ob **Basic-Authentifizierung** oder **Digest-Authentifizierung** erforderlich ist.
Für die **Basic-Authentifizierung** codieren Sie den Benutzernamen und das Passwort in Base64 und fügen sie der Anfrage wie folgt hinzu:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
In diesem Beispiel werden "admin" und "1234" für die Anmeldeinformationen verwendet. Hier ist ein **Python-Skript**, um eine solche Anfrage zu senden:
```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** ist einfacher und bevorzugt. **Digest authentication** erfordert eine sorgfältige Behandlung der 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** aufgrund seiner Einfachheit und Praktikabilität bei ersten Versuchen.
## Enumeration
Lassen Sie uns Informationen über gültige Methoden und URLs abrufen und versuchen, den Zugriff zu erzwingen (falls erforderlich), um Zugriff auf den Inhalt zu erhalten.
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **Andere nützliche Programme**
Zum Brute-Forcen: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
* Erkenne offene RTSP-Hosts auf jedem erreichbaren Ziel
* Erhalte ihre öffentlichen Informationen (Hostname, Port, Kameramodell, etc.)
* Starte automatisierte Wörterbuchangriffe, um ihren Stream-Pfad zu erhalten (zum Beispiel /live.sdp)
* Starte automatisierte Wörterbuchangriffe, um den Benutzernamen und das Passwort der Kameras zu erhalten
* Generiere Miniaturansichten, um zu überprüfen, ob die Streams gültig sind und einen schnellen Überblick über ihren Inhalt zu erhalten
* Versuche, eine Gstreamer-Pipeline zu erstellen, um zu überprüfen, ob sie ordnungsgemäß codiert sind
* Gib eine Zusammenfassung aller Informationen aus, die Cameradar erhalten konnte
## Referenzen
* [https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)
* [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>