554,8554 - Pentesting RTSP
Reading time: 5 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Vanaf wikipedia:
Die Real Time Streaming Protocol (RTSP) is 'n netwerkbeheerprotokol wat ontwerp is vir gebruik in vermaak- en kommunikasiesisteme om streaming media-bedieners te beheer. Die protokol word gebruik om mediasessies tussen eindpunte tot stand te bring en te beheer. Kliënte van media-bedieners gee VHS-styl opdragte, soos play, record and pause, om real-time beheer van die mediastroom vanaf die bediener na 'n kliënt (Video On Demand) of vanaf 'n kliënt na die bediener (Voice Recording) te vergemaklik.
Die oordrag van streaming-data self is nie 'n taak van RTSP nie. Die meeste RTSP-bedieners gebruik die Real-time Transport Protocol (RTP) in samewerking met die Real-time Control Protocol (RTCP) vir die aflewering van mediastrome. Sommige verskaffers implementeer egter proprietêre transportprotokolle. Die RTSP-bedienersoftware van RealNetworks, byvoorbeeld, het ook RealNetworks se proprietêre Real Data Transport (RDT) gebruik.
Standaard poorte: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Belangrike besonderhede
RTSP is soortgelyk aan HTTP maar ontwerp spesifiek vir mediastroom. Dit is gedefinieer in 'n eenvoudige spesifikasie wat hier gevind kan word:
Toestelle kan nie-geauthentiseerde of geauthentiseerde toegang toelaat. Om dit te kontroleer, word 'n "DESCRIBE" request gestuur. 'n Basiese voorbeeld word hieronder getoon:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
Onthou, die korrekte indeling sluit 'n dubbele "\r\n" in vir 'n konsekwente antwoord. 'n "200 OK" antwoord dui op nie-geauthentiseerde toegang, terwyl "401 Unauthorized" die behoefte aan verifikasie aandui, wat wys of Basic of Digest authentication benodig word.
Vir Basic authentication, kodeer jy die gebruikersnaam en wagwoord in base64 en sluit dit in die request in soos volg:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Hierdie voorbeeld gebruik "admin" en "1234" as die inlogbesonderhede. Hier is 'n Python script om so 'n request te stuur:
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 is eenvoudiger en word verkies. Digest authentication vereis deeglike hantering van die authentikasie-byligting wat in die "401 Unauthorized" response verskaf word.
Hierdie oorsig vereenvoudig die proses om toegang tot RTSP-strome te kry, met fokus op Basic authentication vanweë die eenvoud en praktysheid in aanvanklike pogings.
Enumerasie
Kom ons kry inligting oor watter geldige metodes en URLs ondersteun word en probeer, indien nodig, om brute-force toegang te verkry tot die inhoud.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
RTSP-stroom bekyk met ffplay
Sodra jy 'n geldige RTSP-pad ontdek het (bv. /mpeg4
, /live.sdp
) en toegang bevestig het (sonder autentisering of met inlogbesonderhede), kan jy ffplay
gebruik om die stroom af te speel:
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
-rtsp_transport tcp
: Gebruik TCP in plaas van UDP vir meer betroubare stroom-x
,-y
: Opsionele vlae om videoresolusie te beheer- Vervang
<IP>
en pad soos nodig
Brute Force
Ander nuttige programme
Om te bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Detecteer oop RTSP-hosts op enige toeganklike teiken
- Kry hul publieke inligting (gasheernaam, poort, kamera-model, ens.)
- Begin geoutomatiseerde woordeboek-aanvalle om hul stroomroete te kry (bv. /live.sdp)
- Begin geoutomatiseerde woordeboek-aanvalle om die gebruikersnaam en wagwoord van die kameras te kry
- Genereer miniatuurbeelde daarvan om te kontroleer of die strome geldig is en om 'n vinnige voorskou van hul inhoud te hê
- Probeer 'n Gstreamer-pipeline skep om te kyk of hulle behoorlik gekodeer is
- Druk 'n opsomming van al die inligting wat Cameradar kon kry
Sien ook
32100 Udp - Pentesting Pppp Cs2 P2p Cameras
Verwysings
- 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
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.