554,8554 - Pentesting RTSP

Support HackTricks

Basic Information

From wikipedia:

Το Πρωτόκολλο Ροής Σε Πραγματικό Χρόνο (RTSP) είναι ένα πρωτόκολλο ελέγχου δικτύου σχεδιασμένο για χρήση σε συστήματα ψυχαγωγίας και επικοινωνιών για τον έλεγχο διακομιστών ροής πολυμέσων. Το πρωτόκολλο χρησιμοποιείται για την εγκαθίδρυση και τον έλεγχο συνεδριών πολυμέσων μεταξύ των τελικών σημείων. Οι πελάτες των διακομιστών πολυμέσων εκδίδουν εντολές τύπου VHS, όπως αναπαραγωγή, εγγραφή και παύση, για να διευκολύνουν τον έλεγχο σε πραγματικό χρόνο της ροής πολυμέσων από τον διακομιστή σε έναν πελάτη (Video On Demand) ή από έναν πελάτη στον διακομιστή (Voice Recording).

Η μετάδοση των δεδομένων ροής δεν είναι έργο του RTSP. Οι περισσότεροι διακομιστές RTSP χρησιμοποιούν το Πρωτόκολλο Μεταφοράς Σε Πραγματικό Χρόνο (RTP) σε συνδυασμό με το Πρωτόκολλο Ελέγχου Σε Πραγματικό Χρόνο (RTCP) για την παράδοση ροής πολυμέσων. Ωστόσο, ορισμένοι προμηθευτές εφαρμόζουν ιδιόκτητα πρωτόκολλα μεταφοράς. Το λογισμικό διακομιστή RTSP από την RealNetworks, για παράδειγμα, χρησιμοποιεί επίσης το ιδιόκτητο Πρωτόκολλο Μεταφοράς Δεδομένων της RealNetworks (RDT).

Default ports: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Key Details

RTSP είναι παρόμοιο με το HTTP αλλά σχεδιασμένο ειδικά για ροή πολυμέσων. Ορίζεται σε μια απλή προδιαγραφή που μπορεί να βρεθεί εδώ:

RTSP – RFC2326

Οι συσκευές μπορεί να επιτρέπουν μη αυθεντικοποιημένη ή αυθεντικοποιημένη πρόσβαση. Για να ελεγχθεί, αποστέλλεται ένα αίτημα "DESCRIBE". Ένα βασικό παράδειγμα φαίνεται παρακάτω:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2

Θυμηθείτε, η σωστή μορφοποίηση περιλαμβάνει ένα διπλό "\r\n" για μια συνεπή απάντηση. Μια απάντηση "200 OK" υποδηλώνει μη αυθεντικοποιημένη πρόσβαση, ενώ "401 Unauthorized" σηματοδοτεί την ανάγκη για αυθεντικοποίηση, αποκαλύπτοντας αν απαιτείται Basic ή Digest authentication.

Για Basic authentication, κωδικοποιείτε το όνομα χρήστη και τον κωδικό πρόσβασης σε base64 και το συμπεριλαμβάνετε στο αίτημα ως εξής:

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==

Αυτό το παράδειγμα χρησιμοποιεί "admin" και "1234" για τα διαπιστευτήρια. Ακολουθεί ένα Python script για να στείλετε ένα τέτοιο αίτημα:

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)

Η βασική αυθεντικοποίηση είναι πιο απλή και προτιμάται. Η αυθεντικοποίηση Digest απαιτεί προσεκτική διαχείριση των λεπτομερειών αυθεντικοποίησης που παρέχονται στην απάντηση "401 Unauthorized".

Αυτή η επισκόπηση απλοποιεί τη διαδικασία πρόσβασης σε ροές RTSP, εστιάζοντας στη Βασική αυθεντικοποίηση για την απλότητά της και την πρακτικότητα στις αρχικές προσπάθειες.

Enumeration

Ας αποκτήσουμε πληροφορίες σχετικά με τις έγκυρες μεθόδους και τις διευθύνσεις URL που υποστηρίζονται και ας προσπαθήσουμε να κάνουμε brute-force την πρόσβαση (αν χρειαστεί) για να αποκτήσουμε πρόσβαση στο περιεχόμενο.

nmap -sV --script "rtsp-*" -p <PORT> <IP>

Άλλα χρήσιμα προγράμματα

Για brute force: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Ανίχνευση ανοιχτών RTSP hosts σε οποιονδήποτε προσβάσιμο στόχο

  • Λήψη δημόσιων πληροφοριών τους (hostname, port, μοντέλο κάμερας, κ.λπ.)

  • Εκκίνηση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε τη διαδρομή ροής τους (για παράδειγμα /live.sdp)

  • Εκκίνηση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε το όνομα χρήστη και τον κωδικό πρόσβασης των καμερών

  • Δημιουργία μικρογραφιών από αυτές για να ελέγξετε αν οι ροές είναι έγκυρες και για να έχετε μια γρήγορη προεπισκόπηση του περιεχομένου τους

  • Προσπάθεια δημιουργίας pipeline Gstreamer για να ελέγξετε αν είναι σωστά κωδικοποιημένες

  • Εκτύπωση μιας σύνοψης όλων των πληροφοριών που θα μπορούσε να αποκτήσει το Cameradar

Αναφορές

Support HackTricks

Last updated