554,8554 - Pentesting RTSP

Support HackTricks

Basic Information

From 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 media-sessies tussen eindpunte te vestig en te beheer. Kliente van media bedieners gee VHS-styl opdragte, soos speel, opneem en pauze, om werklike tydbeheer van die media wat van die bediener na 'n kliënt (Video On Demand) of van 'n kliënt na die bediener (Stemopname) stroom te fasiliteer.

Die oordrag van streaming data self is nie 'n taak van RTSP nie. Meeste RTSP bedieners gebruik die Real-time Transport Protocol (RTP) in samewerking met Real-time Control Protocol (RTCP) vir media stroom aflewering. Sommige verskaffers implementeer egter eie vervoersprotokolle. Die RTSP bediener sagteware van RealNetworks, byvoorbeeld, het ook RealNetworks se eie Real Data Transport (RDT) gebruik.

Default ports: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Sleutelbesonderhede

RTSP is soortgelyk aan HTTP, maar spesifiek ontwerp vir media streaming. Dit is gedefinieer in 'n eenvoudige spesifikasie wat hier gevind kan word:

RTSP – RFC2326

Toestelle mag onaangetekende of aangetekende toegang toelaat. Om te kontroleer, word 'n "DESCRIBE" versoek gestuur. 'n Basiese voorbeeld word hieronder getoon:

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

Onthou, die korrekte formaat sluit 'n dubbele "\r\n" in vir 'n konsekwente antwoord. 'n "200 OK" antwoord dui op onaangetekende toegang, terwyl "401 Unauthorized" die behoefte aan verifikasie aandui, wat onthul of Basic of Digest authentication benodig word.

Vir Basic authentication kodeer jy die gebruikersnaam en wagwoord in base64 en sluit dit in die versoek in soos volg:

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

Hierdie voorbeeld gebruik "admin" en "1234" vir die geloofsbriewe. Hier is 'n Python script om so 'n versoek 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)

Basiese outentisering is eenvoudiger en verkieslik. Digest-outentisering vereis sorgvuldige hantering van die outentiseringsbesonderhede wat in die "401 Unauthorized" antwoord verskaf word.

Hierdie oorsig vereenvoudig die proses om toegang tot RTSP-strome te verkry, met fokus op Basiese outentisering vir sy eenvoud en praktiese nut in aanvanklike pogings.

Enumerasie

Kom ons kry inligting oor geldige metodes en URL's wat ondersteun word en probeer om die toegang te brute-force (indien nodig) om toegang tot die inhoud te verkry.

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

Ander nuttige programme

Om te bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Ontdek oop RTSP gasheer op enige toeganklike teiken

  • Kry hul publieke inligting (gasheernaam, poort, kamera model, ens.)

  • Begin outomatiese woordeboekaanvalle om hul stroomroete te kry (byvoorbeeld /live.sdp)

  • Begin outomatiese woordeboekaanvalle om die gebruikersnaam en wagwoord van die kameras te kry

  • Genereer miniatuurbeelde van hulle om te kyk of die strome geldig is en om 'n vinnige voorvertoning van hul inhoud te hê

  • Probeer om 'n Gstreamer-pyplyn te skep om te kyk of hulle behoorlik gekodeer is

  • Druk 'n opsomming van al die inligting wat Cameradar kon kry

References

Ondersteun HackTricks

Last updated