6.8 KiB
554,8554 - Pentesting RTSP
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
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!
- Obtén el oficial PEASS & HackTricks swag
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información Básica
Desde 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 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.
Puertos predeterminados: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Detalles Clave
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í:
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:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r
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.
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:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r
Este ejemplo utiliza "admin" y "1234" como credenciales. Aquí tienes un script en Python para enviar dicha solicitud:
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.
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.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Fuerza bruta
Otros programas útiles
Para realizar fuerza bruta: https://github.com/Tek-Security-Group/rtsp_authgrinder
- 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
Referencias
- https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
- http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/
- https://github.com/Ullaakut/cameradar
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.