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:
Gerçek Zamanlı Akış Protokolü (RTSP), akış medya sunucularını kontrol etmek için eğlence ve iletişim sistemlerinde kullanılmak üzere tasarlanmış bir ağ kontrol protokolüdür. Protokol, uç noktalar arasında medya oturumları kurmak ve kontrol etmek için kullanılır. Medya sunucularının istemcileri, sunucudan bir istemciye (Video On Demand) veya bir istemciden sunucuya (Ses Kaydı) medya akışını gerçek zamanlı olarak kontrol etmek için oynatma, kaydetme ve duraklatma gibi VHS tarzı komutlar verir.
Akış verilerinin iletimi, RTSP'nin bir görevi değildir. Çoğu RTSP sunucusu, medya akışı teslimatı için Gerçek Zamanlı Taşıma Protokolü (RTP) ile birlikte Gerçek Zamanlı Kontrol Protokolü (RTCP) kullanır. Ancak, bazı satıcılar özel taşıma protokolleri uygular. Örneğin, RealNetworks'ten gelen RTSP sunucu yazılımı, aynı zamanda RealNetworks'ün özel Gerçek Veri Taşıma (RDT) protokolünü de kullanmaktadır.
Varsayılan portlar: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Ana Detaylar
RTSP, HTTP'ye benzer ancak özellikle medya akışı için tasarlanmıştır. Burada bulunabilen basit bir spesifikasyonda tanımlanmıştır:
Cihazlar kimlik doğrulaması yapılmamış veya kimlik doğrulaması yapılmış erişime izin verebilir. Kontrol etmek için bir "DESCRIBE" isteği gönderilir. Aşağıda basit bir örnek gösterilmektedir:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
Doğru formatlamanın, tutarlı bir yanıt için çift "\r\n" içerdiğini unutmayın. "200 OK" yanıtı kimlik doğrulaması yapılmamış erişimi gösterirken, "401 Unauthorized" kimlik doğrulaması gerektiğini belirtir ve Basic veya Digest authentication gerekip gerekmediğini ortaya çıkarır.
Basic authentication için, kullanıcı adı ve şifreyi base64 formatında kodlayarak isteğe dahil edersiniz:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Bu örnek, kimlik bilgileri olarak "admin" ve "1234" kullanmaktadır. İşte böyle bir isteği göndermek için bir Python scripti:
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)
Temel kimlik doğrulama daha basit ve tercih edilen bir yöntemdir. Özet kimlik doğrulama "401 Yetkisiz" yanıtında sağlanan kimlik doğrulama detaylarının dikkatli bir şekilde ele alınmasını gerektirir.
Bu genel bakış, RTSP akışlarına erişim sürecini basitleştirir ve ilk denemelerdeki basitliği ve pratikliği nedeniyle Temel kimlik doğrulama üzerine odaklanır.
Sayım
Geçerli yöntemler ve desteklenen URL'ler hakkında bilgi alalım ve içeriğe erişim sağlamak için (gerekirse) brute-force denemesi yapalım.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
RTSP Akışını ffplay ile Görüntüleme
Geçerli bir RTSP yolu (örneğin, /mpeg4
, /live.sdp
) keşfettikten ve erişimi doğruladıktan (kimlik doğrulamasız veya kimlik bilgileri ile) sonra, akışı yayınlamak 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- Gerekli yerlerde
<IP>
ve yolu değiştirin
Brute Force
Diğer yararlı programlar
Bruteforce için: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Erişilebilir herhangi bir hedefte açık RTSP sunucularını tespit edin
- Kamu bilgilerini (hostname, port, kamera modeli vb.) alın
- Akış yolunu elde etmek için otomatik sözlük saldırıları başlatın (örneğin /live.sdp)
- Kameraların kullanıcı adı ve şifresini elde etmek için otomatik sözlük saldırıları başlatın
- Akışların geçerli olup olmadığını kontrol etmek ve içeriklerinin hızlı bir önizlemesini almak için onlardan küçük resimler oluşturun
- Doğru bir şekilde kodlanıp kodlanmadıklarını kontrol etmek için bir Gstreamer boru hattı oluşturmaya çalışın
- Cameradar'ın elde edebildiği tüm bilgilerin bir özetini yazdırın
References
- 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.