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

101 lines
6.8 KiB
Markdown
Raw Normal View History

# 554,8554 - Pentesting RTSP
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
</details>
2023-06-05 18:33:24 +00:00
## Información Básica
Desde [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
2023-06-05 18:33:24 +00:00
> El **Protocolo de Transmisión en Tiempo Real** (**RTSP**) es un protocolo de control de red diseñado para su uso en sistemas de entretenimiento y comunicaciones para controlar servidores de medios de transmisión. El protocolo se utiliza para establecer y controlar sesiones de medios entre puntos finales. Los clientes de los servidores de medios emiten comandos estilo VHS, como reproducir, grabar y pausar, para facilitar el control en tiempo real de la transmisión de medios desde el servidor a un cliente (Video On Demand) o desde un cliente al servidor (Grabación de Voz).
>
> La transmisión de datos de transmisión en sí no es una tarea de RTSP. La mayoría de los servidores RTSP utilizan el Protocolo de Transporte en Tiempo Real (RTP) junto con el Protocolo de Control en Tiempo Real (RTCP) para la entrega de transmisión de medios. Sin embargo, algunos proveedores implementan protocolos de transporte propietarios. El software del servidor RTSP de RealNetworks, por ejemplo, también utilizaba el Transporte de Datos Real (RDT) propietario de RealNetworks.
2023-06-05 18:33:24 +00:00
**Puertos predeterminados:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Detalles Clave
2023-06-05 18:33:24 +00:00
**RTSP** es similar a HTTP pero diseñado específicamente para la transmisión de medios. Está definido en una especificación directa que se puede encontrar aquí:
2023-06-05 18:33:24 +00:00
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
2023-06-05 18:33:24 +00:00
Los dispositivos pueden permitir acceso **sin autenticación** o **autenticado**. Para verificar, se envía una solicitud "DESCRIBE". A continuación se muestra un ejemplo básico:
2023-06-05 18:33:24 +00:00
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
2023-06-05 18:33:24 +00:00
Recuerda, el formato correcto incluye un doble "\r\n" para una respuesta consistente. Una respuesta "200 OK" indica **acceso sin autenticación**, mientras que "401 Unauthorized" señala la necesidad de autenticación, revelando si se requiere **autenticación Básica** o **Digest**.
2023-06-05 18:33:24 +00:00
Para **autenticación Básica**, codificas el nombre de usuario y la contraseña en base64 e inclúyelos en la solicitud de la siguiente manera:
2023-06-05 18:33:24 +00:00
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
2023-06-05 18:33:24 +00:00
Este ejemplo utiliza "admin" y "1234" como credenciales. Aquí tienes un **script en Python** para enviar dicha solicitud:
2023-06-05 18:33:24 +00:00
```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)
```
**Autenticación básica** es más simple y preferida. **Autenticación digest** requiere un manejo cuidadoso de los detalles de autenticación proporcionados en la respuesta "401 No autorizado".
Esta visión general simplifica el proceso de acceso a flujos RTSP, centrándose en la **autenticación básica** por su simplicidad y practicidad en intentos iniciales.
2023-06-05 18:33:24 +00:00
## Enumeración
Obtengamos información sobre los métodos válidos y las URL admitidas e intentemos forzar el acceso (si es necesario) para obtener acceso al contenido.
2023-06-05 18:33:24 +00:00
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Fuerza bruta](../generic-methodologies-and-resources/brute-force.md#rtsp)
2023-06-05 18:33:24 +00:00
### **Otros programas útiles**
Para realizar fuerza bruta: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
2023-06-05 18:33:24 +00:00
[**Cameradar**](https://github.com/Ullaakut/cameradar)
2023-06-05 18:33:24 +00:00
* Detecta hosts RTSP abiertos en cualquier objetivo accesible
* Obtiene su información pública (nombre de host, puerto, modelo de cámara, etc.)
* Lanza ataques de diccionario automatizados para obtener la ruta de transmisión (por ejemplo /live.sdp)
* Lanza ataques de diccionario automatizados para obtener el nombre de usuario y la contraseña de las cámaras
* Genera miniaturas de ellas para verificar si las transmisiones son válidas y tener una vista previa rápida de su contenido
* Intenta crear un pipeline de Gstreamer para verificar si están codificadas correctamente
* Imprime un resumen de toda la información que Cameradar pudo obtener
2023-06-05 18:33:24 +00:00
## Referencias
* [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/)
2023-06-05 18:33:24 +00:00
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
2023-06-05 18:33:24 +00:00
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>