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

Βασικές Πληροφορίες

Από wikipedia:

Το Real Time Streaming Protocol (RTSP) είναι ένα πρωτόκολλο ελέγχου δικτύου σχεδιασμένο για χρήση σε συστήματα ψυχαγωγίας και επικοινωνιών για τον έλεγχο streaming media servers. Το πρωτόκολλο χρησιμοποιείται για την εγκαθίδρυση και τον έλεγχο συνεδριών μέσων μεταξύ τελικών σημείων. Οι πελάτες των media servers εκδίδουν εντολές τύπου VHS, όπως play, record και pause, για να διευκολύνουν τον έλεγχο σε πραγματικό χρόνο της ροής μέσων από τον server προς έναν client (Video On Demand) ή από έναν client προς τον server (Voice Recording).

Η μετάδοση των ίδιων των streaming δεδομένων δεν αποτελεί εργασία του RTSP. Οι περισσότερες RTSP servers χρησιμοποιούν το Real-time Transport Protocol (RTP) σε συνδυασμό με το Real-time Control Protocol (RTCP) για την παράδοση της ροής μέσων. Ωστόσο, κάποιοι vendors υλοποιούν ιδιόκτητα πρωτόκολλα μεταφοράς. Το λογισμικό RTSP server της RealNetworks, για παράδειγμα, χρησιμοποιούσε επίσης το ιδιόκτητο Real Data Transport (RDT) της RealNetworks.

Προεπιλεγμένες θύρες: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Key Details

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

RTSP – RFC2326

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

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

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

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

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

Αυτό το παράδειγμα χρησιμοποιεί "admin" και "1234" για τα credentials. Εδώ είναι ένα 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)

Basic authentication είναι πιο απλό και προτιμάται. Digest authentication απαιτεί προσεκτικό χειρισμό των στοιχείων αυθεντικοποίησης που παρέχονται στην απάντηση "401 Unauthorized".

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

Enumeration

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

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

Προβολή της ροής RTSP με ffplay

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

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

Brute Force

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

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

Cameradar

  • Εντοπίζει ανοιχτούς RTSP hosts σε οποιονδήποτε προσβάσιμο στόχο
  • Λαμβάνει τις δημόσιες πληροφορίες τους (hostname, port, camera model, κ.λπ.)
  • Ξεκινά αυτοματοποιημένες dictionary attacks για να αποκτήσει το stream route τους (π.χ. /live.sdp)
  • Ξεκινά αυτοματοποιημένες dictionary attacks για να πάρει το username και το password των καμερών
  • Δημιουργεί thumbnails από αυτά για να ελέγξει αν τα streams είναι έγκυρα και για γρήγορη προεπισκόπηση του περιεχομένου τους
  • Προσπαθεί να δημιουργήσει μια Gstreamer pipeline για να ελέγξει αν είναι σωστά encoded
  • Εκτυπώνει μια σύνοψη όλων των πληροφοριών που μπόρεσε να πάρει το Cameradar

Δείτε επίσης

32100 Udp - Pentesting Pppp Cs2 P2p Cameras

Αναφορές

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