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)
From wikipedia:
Το Πρωτόκολλο Ροής Πραγματικού Χρόνου (RTSP) είναι ένα πρωτόκολλο ελέγχου δικτύου σχεδιασμένο για χρήση σε συστήματα ψυχαγωγίας και επικοινωνιών για τον έλεγχο διακομιστών ροής πολυμέσων. Το πρωτόκολλο χρησιμοποιείται για την εγκαθίδρυση και τον έλεγχο συνεδριών πολυμέσων μεταξύ των τελικών σημείων. Οι πελάτες των διακομιστών πολυμέσων εκδίδουν εντολές τύπου VHS, όπως αναπαραγωγή, εγγραφή και παύση, για να διευκολύνουν τον έλεγχο σε πραγματικό χρόνο της ροής πολυμέσων από τον διακομιστή σε έναν πελάτη (Video On Demand) ή από έναν πελάτη στον διακομιστή (Voice Recording).
Η μετάδοση των δεδομένων ροής δεν είναι έργο του RTSP. Οι περισσότεροι διακομιστές RTSP χρησιμοποιούν το Πρωτόκολλο Μεταφοράς Πραγματικού Χρόνου (RTP) σε συνδυασμό με το Πρωτόκολλο Ελέγχου Πραγματικού Χρόνου (RTCP) για την παράδοση ροής πολυμέσων. Ωστόσο, ορισμένοι προμηθευτές εφαρμόζουν ιδιόκτητα πρωτόκολλα μεταφοράς. Το λογισμικό διακομιστή RTSP από την RealNetworks, για παράδειγμα, χρησιμοποιεί επίσης το ιδιόκτητο Πρωτόκολλο Μεταφοράς Πραγματικών Δεδομένων (RDT) της RealNetworks.
Default ports: 554,8554
RTSP είναι παρόμοιο με το HTTP αλλά σχεδιασμένο ειδικά για ροή πολυμέσων. Ορίζεται σε μια απλή προδιαγραφή που μπορεί να βρεθεί εδώ:
Οι συσκευές μπορεί να επιτρέπουν μη αυθεντικοποιημένη ή αυθεντικοποιημένη πρόσβαση. Για να ελεγχθεί, αποστέλλεται ένα αίτημα "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 για να στείλετε ένα τέτοιο αίτημα:
Η βασική αυθεντικοποίηση είναι πιο απλή και προτιμάται. Η αυθεντικοποίηση Digest απαιτεί προσεκτική διαχείριση των λεπτομερειών αυθεντικοποίησης που παρέχονται στην απάντηση "401 Unauthorized".
Αυτή η επισκόπηση απλοποιεί τη διαδικασία πρόσβασης σε ροές RTSP, εστιάζοντας στη Βασική αυθεντικοποίηση για την απλότητά της και την πρακτικότητα στις αρχικές προσπάθειες.
Ας αποκτήσουμε πληροφορίες σχετικά με τις έγκυρες μεθόδους και τις διευθύνσεις URL που υποστηρίζονται και ας προσπαθήσουμε να κάνουμε brute-force την πρόσβαση (αν χρειαστεί) για να αποκτήσουμε πρόσβαση στο περιεχόμενο.
Για brute force: https://github.com/Tek-Security-Group/rtsp_authgrinder
Ανίχνευση ανοιχτών RTSP hosts σε οποιονδήποτε προσβάσιμο στόχο
Λήψη δημόσιων πληροφοριών τους (hostname, port, μοντέλο κάμερας, κ.λπ.)
Εκκίνηση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε τη διαδρομή ροής τους (για παράδειγμα /live.sdp)
Εκκίνηση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε το όνομα χρήστη και τον κωδικό πρόσβασης των καμερών
Δημιουργία μικρογραφιών από αυτές για να ελέγξετε αν οι ροές είναι έγκυρες και για να έχετε μια γρήγορη προεπισκόπηση του περιεχομένου τους
Προσπάθεια δημιουργίας pipeline Gstreamer για να ελέγξετε αν είναι σωστά κωδικοποιημένες
Εκτύπωση μιας σύνοψης όλων των πληροφοριών που θα μπορούσε να αποκτήσει το Cameradar
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)