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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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:
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:
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.
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:
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
- 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
- https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
- http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/
- https://github.com/Ullaakut/cameradar
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.