554,8554 - Pentesting RTSP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
De wikipedia:
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 en streaming. El protocolo se utiliza para establecer y controlar sesiones de medios entre puntos finales. Los clientes de los servidores de medios emiten comandos al estilo de 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 en streaming 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 flujos de medios. Sin embargo, algunos proveedores implementan protocolos de transporte propietarios. El software del servidor RTSP de RealNetworks, por ejemplo, también utilizó el Transporte de Datos Real (RDT) propietario de RealNetworks.
Puertos predeterminados: 554,8554
RTSP es similar a HTTP pero diseñado específicamente para la transmisión de medios. Está definido en una especificación sencilla que se puede encontrar aquí:
Los dispositivos pueden permitir acceso no autenticado o autenticado. Para verificar, se envía una solicitud "DESCRIBE". Un ejemplo básico se muestra a continuación:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
Recuerda, el formato correcto incluye un doble "\r\n" para una respuesta consistente. Una respuesta "200 OK" indica acceso no autenticado, mientras que "401 Unauthorized" señala la necesidad de autenticación, revelando si se requiere autenticación Básica o Digest.
Para autenticación Básica, codificas el nombre de usuario y la contraseña en base64 e incluyes esto en la solicitud de la siguiente manera:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Este ejemplo utiliza "admin" y "1234" como credenciales. Aquí hay un script de Python para enviar tal solicitud:
La autenticación básica es más simple y preferida. La 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 los intentos iniciales.
Obtenemos información sobre los métodos válidos y las URL que son compatibles y tratamos de forzar el acceso (si es necesario) para obtener acceso al contenido.
Para hacer fuerza bruta: https://github.com/Tek-Security-Group/rtsp_authgrinder
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 ellos para verificar si las transmisiones son válidas y tener una vista previa rápida de su contenido
Intentar crear un pipeline de Gstreamer para verificar si están correctamente codificados
Imprimir un resumen de toda la información que Cameradar pudo obtener
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)