mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 14:10:41 +00:00
102 lines
6.5 KiB
Markdown
102 lines
6.5 KiB
Markdown
# 554,8554 - Pentesting RTSP
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Basic Information
|
||
|
||
From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
|
||
|
||
> Il **Real Time Streaming Protocol** (**RTSP**) è un protocollo di controllo di rete progettato per l'uso in sistemi di intrattenimento e comunicazione per controllare i server di streaming multimediale. Il protocollo viene utilizzato per stabilire e controllare sessioni multimediali tra i punti finali. I client dei server multimediali emettono comandi in stile VHS, come riproduci, registra e pausa, per facilitare il controllo in tempo reale dello streaming multimediale dal server a un client (Video On Demand) o da un client al server (Registrazione Vocale).
|
||
>
|
||
> La trasmissione dei dati in streaming non è un compito di RTSP. La maggior parte dei server RTSP utilizza il Real-time Transport Protocol (RTP) insieme al Real-time Control Protocol (RTCP) per la consegna del flusso multimediale. Tuttavia, alcuni fornitori implementano protocolli di trasporto proprietari. Il software del server RTSP di RealNetworks, ad esempio, utilizza anche il Real Data Transport (RDT) proprietario di RealNetworks.
|
||
|
||
**Default ports:** 554,8554
|
||
```
|
||
PORT STATE SERVICE
|
||
554/tcp open rtsp
|
||
```
|
||
## Dettagli Chiave
|
||
|
||
**RTSP** è simile a HTTP ma progettato specificamente per lo streaming multimediale. È definito in una specifica semplice che può essere trovata qui:
|
||
|
||
[RTSP – RFC2326](https://tools.ietf.org/html/rfc2326)
|
||
|
||
I dispositivi potrebbero consentire accesso **non autenticato** o **autenticato**. Per verificare, viene inviato una richiesta "DESCRIBE". Un esempio di base è mostrato di seguito:
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
|
||
|
||
Ricorda, il formato corretto include un doppio "\r\n" per una risposta coerente. Una risposta "200 OK" indica **accesso non autenticato**, mentre "401 Unauthorized" segnala la necessità di autenticazione, rivelando se è richiesta l'autenticazione **Basic** o **Digest**.
|
||
|
||
Per l'**autenticazione Basic**, codifichi il nome utente e la password in base64 e lo includi nella richiesta in questo modo:
|
||
|
||
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
|
||
|
||
Questo esempio utilizza "admin" e "1234" per le credenziali. Ecco uno **script Python** per inviare una tale richiesta:
|
||
```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)
|
||
```
|
||
**L'autenticazione di base** è più semplice e preferita. **L'autenticazione digest** richiede una gestione attenta dei dettagli di autenticazione forniti nella risposta "401 Non autorizzato".
|
||
|
||
Questa panoramica semplifica il processo di accesso ai flussi RTSP, concentrandosi su **l'autenticazione di base** per la sua semplicità e praticità nei tentativi iniziali.
|
||
|
||
## Enumerazione
|
||
|
||
Otteniamo informazioni sui metodi validi e sugli URL supportati e proviamo a forzare l'accesso (se necessario) per accedere al contenuto.
|
||
```bash
|
||
nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||
```
|
||
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
|
||
|
||
### **Altri programmi utili**
|
||
|
||
Per bruteforce: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
|
||
|
||
[**Cameradar**](https://github.com/Ullaakut/cameradar)
|
||
|
||
* Rileva host RTSP aperti su qualsiasi obiettivo accessibile
|
||
* Ottieni le loro informazioni pubbliche (nome host, porta, modello della telecamera, ecc.)
|
||
* Avvia attacchi automatici con dizionario per ottenere il percorso del loro stream (ad esempio /live.sdp)
|
||
* Avvia attacchi automatici con dizionario per ottenere il nome utente e la password delle telecamere
|
||
* Genera miniature da essi per controllare se gli stream sono validi e avere un'anteprima rapida del loro contenuto
|
||
* Prova a creare una pipeline Gstreamer per controllare se sono codificati correttamente
|
||
* Stampa un riepilogo di tutte le informazioni che Cameradar potrebbe ottenere
|
||
|
||
## Riferimenti
|
||
|
||
* [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)
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|