mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
90 lines
7.7 KiB
Markdown
90 lines
7.7 KiB
Markdown
|
## Información Básica
|
||
|
|
||
|
> 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 transmisión de medios. El protocolo se utiliza para establecer y controlar sesiones de medios entre puntos finales. Los clientes de los servidores de medios emiten comandos de 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) en conjunto 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 utilizó el Propietario de Transporte de Datos en Tiempo Real (RDT) de RealNetworks.
|
||
|
|
||
|
De [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol).
|
||
|
|
||
|
**Puertos predeterminados:** 554,8554
|
||
|
```
|
||
|
PORT STATE SERVICE
|
||
|
554/tcp open rtsp
|
||
|
```
|
||
|
## Información detallada
|
||
|
|
||
|
En primer lugar, RTSP es un protocolo similar a HTTP. Tiene una estructura y comandos de control diferentes, pero su formato es textual y una vez que se aprenden los conceptos básicos de los comandos y cómo interactúan, es bastante fácil de usar. La especificación de RTSP es bastante sencilla. Aquí hay un enlace a ella:
|
||
|
|
||
|
[RTSP - RFC2326](https://tools.ietf.org/html/rfc2326)
|
||
|
|
||
|
RTSP se puede acceder sin autenticación (común en dispositivos de estantería) o autenticado. El acceso autenticado es similar a HTTP en que tiene autenticación básica y de digestión, ambas casi idénticas a HTTP. Para averiguar si su dispositivo está autenticado o no, simplemente envíe una solicitud "DESCRIBE". Una solicitud DESCRIBE simple se ve así:
|
||
|
|
||
|
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\n\r`
|
||
|
|
||
|
Nota: se requiere el " \r\n" adicional para una respuesta confiable. Algunos sistemas aceptarán el " \r\n" único, pero la mayoría no lo hará.
|
||
|
|
||
|
Esto se puede enviar a través de un socket en bruto. Al igual que HTTP, una respuesta exitosa que indica acceso no autenticado estará disponible y contendrá un "200 OK". En este caso, con DESCRIBE, también contendrá todos los parámetros operativos de la transmisión de video.
|
||
|
|
||
|
Si el dispositivo requiere autenticación, la respuesta contendrá "401 Unauthorized". La respuesta también indicará qué mecanismos de autenticación están disponibles. Si la autenticación básica está disponible, la cadena de respuesta contendrá una línea de información que tenga "WWW-Authenticate: Basic". El resto de la información proporcionada con la autenticación básica es en gran parte irrelevante para realizar la autenticación básica.
|
||
|
|
||
|
Si se requiere autenticación de digestión, entonces la respuesta "401 Unauthorized" tendrá una línea de información que contenga "WWW-Authenticate: Digest". La información con la especificación de Digestión es muy importante si va a realizar la autenticación de Digestión, así que no la ignore.
|
||
|
|
||
|
La autenticación básica es la forma de proceder, con suerte, la respuesta recibida indica que está disponible. Si no, hay tres métodos diferentes para ensamblar un elemento de autenticación de Digestión, por lo que Digestión puede volverse problemático, especialmente a ciegas (sin autenticación). El resto de este artículo se centrará en la autenticación básica. Es posible que escriba un artículo de seguimiento más adelante una vez que descifre la salsa secreta para hacer la autenticación de Digestión a ciegas.
|
||
|
|
||
|
Para formular un elemento de autenticación básica, simplemente se debe codificar en base 64 \<username> ":" \<password> y agregarlo a la solicitud. Entonces, una nueva solicitud se vería así:
|
||
|
|
||
|
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n\r`
|
||
|
|
||
|
Nuevamente, tenga en cuenta que la solicitud se termina con el doble " \r\n".
|
||
|
|
||
|
El valor YWRtaW46MTIzNA== es el nombre de usuario y la contraseña codificados en base 64 concatenados con ":". En este caso, he usado "admin" / "1234". Algunos scripts simples de Python para probar esto se ven así:
|
||
|
```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)
|
||
|
```
|
||
|
¡Voilà! Tienes acceso.
|
||
|
|
||
|
**De:** [**http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/**](https://web.archive.org/web/20161020202643/http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
|
||
|
|
||
|
## Enumeración
|
||
|
|
||
|
Obtengamos información sobre los métodos y URLs válidos que son compatibles e intentemos forzar el acceso (si es necesario) para obtener acceso al contenido.
|
||
|
```bash
|
||
|
nmap -sV --script "rtsp-*" -p <PORT> <IP>
|
||
|
```
|
||
|
### [Fuerza Bruta](../generic-methodologies-and-resources/brute-force.md#rtsp)
|
||
|
|
||
|
### **Otros programas útiles**
|
||
|
|
||
|
Para hacer fuerza bruta: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
|
||
|
|
||
|
**Cameradar**
|
||
|
|
||
|
Cameradar te permite:
|
||
|
|
||
|
* Detectar hosts RTSP abiertos en cualquier objetivo accesible
|
||
|
* Obtener su información pública (nombre de host, puerto, modelo de cámara, etc.)
|
||
|
* Lanzar ataques de diccionario automatizados para obtener su ruta de transmisión (por ejemplo, /live.sdp)
|
||
|
* Lanzar ataques de diccionario automatizados para obtener el nombre de usuario y la contraseña de las cámaras
|
||
|
* Generar miniaturas de ellas para comprobar si las transmisiones son válidas y tener una vista previa rápida de su contenido
|
||
|
* Intentar crear una tubería de Gstreamer para comprobar si están codificadas correctamente
|
||
|
* Imprimir un resumen de toda la información que Cameradar pudo obtener
|
||
|
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
|
||
|
</details>
|