554,8554 - Pentesting RTSP

Reading time: 5 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

From wikipedia:

The Real Time Streaming Protocol (RTSP) is a network control protocol designed for use in entertainment and communications systems to control streaming media servers. The protocol is used for establishing and controlling media sessions between end points. Clients of media servers issue VHS-style commands, such as play, record and pause, to facilitate real-time control of the media streaming from the server to a client (Video On Demand) or from a client to the server (Voice Recording).

The transmission of streaming data itself is not a task of RTSP. Most RTSP servers use the Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols. The RTSP server software from RealNetworks, for example, also used RealNetworks' proprietary Real Data Transport (RDT).

Varsayılan portlar: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Temel Detaylar

RTSP HTTP'ye benzer ancak özellikle medya akışı için tasarlanmıştır. Basit bir spesifikasyonda tanımlanmıştır, şu adresten ulaşılabilir:

RTSP – RFC2326

Cihazlar unauthenticated veya authenticated erişime izin verebilir. Bunu kontrol etmek için bir "DESCRIBE" isteği gönderilir. Basit bir örnek aşağıda gösterilmiştir:

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

Doğru formatlamada tutarlı bir cevap için çift "\r\n" bulunduğunu unutmayın. "200 OK" yanıtı unauthenticated access olduğunu gösterirken, "401 Unauthorized" kimlik doğrulama gerektiğini ve hangi yöntemin (ör. Basic veya Digest authentication) istendiğini ortaya koyar.

Basic authentication için kullanıcı adı ve parolayı base64 ile encode edip isteğe şu şekilde ekleyin:

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

Bu örnekte kimlik bilgileri olarak "admin" ve "1234" kullanılmıştır. Böyle bir isteği göndermek için bir 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 daha basit ve tercih edilir. Digest authentication "401 Unauthorized" yanıtında sağlanan kimlik doğrulama ayrıntılarının dikkatli işlenmesini gerektirir.

Bu genel bakış, RTSP akışlarına erişme sürecini basitleştirir; ilk denemelerde sadeliği ve uygulanabilirliği nedeniyle Basic authentication'a odaklanır.

Enumeration

Geçerli yöntemler ve desteklenen URLs hakkında bilgi toplayalım ve gerekirse içeriğe erişmek için brute-force ile deneme yapalım.

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

RTSP Akışını ffplay ile Görüntüleme

Geçerli bir RTSP yolu (ör. /mpeg4, /live.sdp) bulduktan ve erişimi doğruladıktan (kimlik doğrulaması olmadan veya kimlik bilgileriyle), akışı oynatmak için ffplay kullanabilirsiniz:

bash
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
  • -rtsp_transport tcp: Daha güvenilir akış için UDP yerine TCP kullanın
  • -x, -y: Video çözünürlüğünü kontrol etmek için isteğe bağlı bayraklar
  • Gerekirse <IP> ve yolu değiştirin

Brute Force

Diğer faydalı programlar

Bruteforce için: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Erişilebilen herhangi bir hedefte açık RTSP hostlarını tespit eder
  • Genel bilgilerini alır (hostname, port, camera model, vb.)
  • Otomatik dictionary attacks başlatarak stream route (ör. /live.sdp) elde eder
  • Kameraların kullanıcı adı ve şifresini elde etmek için otomatik dictionary attacks başlatır
  • Akışların geçerli olup olmadığını kontrol etmek ve içeriklerinin hızlı bir önizlemesini almak için bunlardan küçük resimler (thumbnails) oluşturur
  • Doğru şekilde encode edilip edilmediklerini kontrol etmek için bir Gstreamer pipeline oluşturmaya çalışır
  • Cameradar'ın elde edebildiği tüm bilgilerin bir özetini yazdırır

Ayrıca bakınız

32100 Udp - Pentesting Pppp Cs2 P2p Cameras

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin