554,8554 - Pentesting RTSP
Reading time: 5 minutes
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
Extrait de wikipedia:
Le Real Time Streaming Protocol (RTSP) est un protocole de contrôle réseau conçu pour être utilisé dans des systèmes de divertissement et de communication afin de contrôler des serveurs de médias en streaming. Le protocole est utilisé pour établir et contrôler des sessions médias entre points de terminaison. Les clients des serveurs médias envoient des commandes de style VHS, telles que play, record and pause, pour faciliter le contrôle en temps réel du streaming des médias depuis le serveur vers un client (vidéo à la demande) ou depuis un client vers le serveur (enregistrement vocal).
La transmission des données en streaming elle-même n'est pas une tâche de RTSP. La plupart des serveurs RTSP utilisent le Real-time Transport Protocol (RTP) en conjonction avec le Real-time Control Protocol (RTCP) pour la livraison des flux médias. Cependant, certains fournisseurs implémentent des protocoles de transport propriétaires. Le logiciel serveur RTSP de RealNetworks, par exemple, utilisait également le Real Data Transport (RDT) propriétaire de RealNetworks.
Ports par défaut: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Détails clés
RTSP est similaire à HTTP mais conçu spécifiquement pour le streaming média. Il est défini dans une spécification simple que vous pouvez consulter ici:
Les appareils peuvent autoriser un accès non authentifié ou authentifié. Pour vérifier, on envoie une requête "DESCRIBE". Un exemple basique est montré ci‑dessous:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
N'oubliez pas : le format correct inclut un double "\r\n" pour une réponse cohérente. Une réponse "200 OK" indique un accès non authentifié, tandis que "401 Unauthorized" signale la nécessité d'une authentification, révélant si une Basic ou Digest authentication est requise.
Pour la Basic authentication, encodez le nom d'utilisateur et le mot de passe en base64 et incluez-les dans la requête ainsi:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Cet exemple utilise "admin" et "1234" comme identifiants. Voici un script Python pour envoyer une telle requête:
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)
Basic authentication est plus simple et préférable. Digest authentication nécessite une gestion attentive des détails d'authentification fournis dans la réponse "401 Unauthorized".
Cet aperçu simplifie le processus d'accès aux flux RTSP, en se concentrant sur Basic authentication pour sa simplicité et sa praticité lors des premières tentatives.
Énumération
Récupérons des informations sur les méthodes valides et les URLs supportées, et essayons de brute-force l'accès (si nécessaire) pour obtenir le contenu.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Visualiser le flux RTSP avec ffplay
Une fois que vous avez découvert un chemin RTSP valide (p. ex., /mpeg4, /live.sdp) et confirmé l'accès (sans authentification ou avec identifiants), vous pouvez utiliser ffplay pour lire le flux :
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
-rtsp_transport tcp: Utilisez TCP au lieu de UDP pour un streaming plus fiable-x,-y: Options facultatives pour contrôler la résolution vidéo- Remplacez
<IP>et le chemin si nécessaire
Brute Force
Autres programmes utiles
Pour bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Détecte les hôtes RTSP ouverts sur n'importe quelle cible accessible
- Récupère leurs informations publiques (hostname, port, camera model, etc.)
- Lance des automated dictionary attacks pour obtenir leur stream route (par exemple /live.sdp)
- Lance des automated dictionary attacks pour obtenir le username et le password des caméras
- Génère des thumbnails à partir de celles-ci pour vérifier si les streams sont valides et avoir un aperçu rapide de leur contenu
- Tente de créer un pipeline Gstreamer pour vérifier s'ils sont correctement encodés
- Affiche un résumé de toutes les informations que Cameradar a pu obtenir
Voir aussi
32100 Udp - Pentesting Pppp Cs2 P2p Cameras
Références
- 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
tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :
HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks