554,8554 - Pentesting RTSP

Reading time: 5 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το 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 για να στείλετε ένα τέτοιο αίτημα:

python
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 την πρόσβαση (αν χρειαστεί) για να αποκτήσουμε πρόσβαση στο περιεχόμενο.

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

Προβολή του RTSP Stream με ffplay

Αφού έχετε ανακαλύψει μια έγκυρη διαδρομή RTSP (π.χ., /mpeg4, /live.sdp) και έχετε επιβεβαιώσει την πρόσβαση (χωρίς αυθεντικοποίηση ή με διαπιστευτήρια), μπορείτε να χρησιμοποιήσετε το ffplay για να μεταδώσετε τη ροή:

bash
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
  • -rtsp_transport tcp: Χρησιμοποιήστε TCP αντί για UDP για πιο αξιόπιστη ροή
  • -x, -y: Προαιρετικές σημαίες για τον έλεγχο της ανάλυσης βίντεο
  • Αντικαταστήστε το <IP> και τη διαδρομή όπως απαιτείται

Brute Force

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

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

Cameradar

  • Ανίχνευση ανοιχτών RTSP hosts σε οποιονδήποτε προσβάσιμο στόχο
  • Λάβετε τις δημόσιες πληροφορίες τους (hostname, port, μοντέλο κάμερας, κ.λπ.)
  • Εκτέλεση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε τη διαδρομή ροής τους (για παράδειγμα /live.sdp)
  • Εκτέλεση αυτοματοποιημένων επιθέσεων λεξικού για να αποκτήσετε το όνομα χρήστη και τον κωδικό πρόσβασης των καμερών
  • Δημιουργία μικρογραφιών από αυτές για να ελέγξετε αν οι ροές είναι έγκυρες και για να έχετε μια γρήγορη προεπισκόπηση του περιεχομένου τους
  • Προσπάθεια δημιουργίας ενός pipeline Gstreamer για να ελέγξετε αν είναι σωστά κωδικοποιημένες
  • Εκτύπωση μιας περίληψης όλων των πληροφοριών που θα μπορούσε να αποκτήσει το Cameradar

References

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks