6.6 KiB
554,8554 - Pentesting RTSP
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Basic Information
From wikipedia:
Protokół strumieniowania w czasie rzeczywistym (RTSP) to protokół kontroli sieci zaprojektowany do użycia w systemach rozrywkowych i komunikacyjnych w celu kontrolowania serwerów strumieniowych. Protokół jest używany do ustanawiania i kontrolowania sesji multimedialnych między punktami końcowymi. Klienci serwerów multimedialnych wydają polecenia w stylu VHS, takie jak odtwarzanie, nagrywanie i pauza, aby ułatwić kontrolę w czasie rzeczywistym nad strumieniem multimedialnym z serwera do klienta (Video On Demand) lub z klienta do serwera (Nagrywanie głosu).
Transmisja danych strumieniowych nie jest zadaniem RTSP. Większość serwerów RTSP używa Protokółu Transportu w Czasie Rzeczywistym (RTP) w połączeniu z Protokółem Kontroli w Czasie Rzeczywistym (RTCP) do dostarczania strumieni multimedialnych. Jednak niektórzy dostawcy wdrażają własne protokoły transportowe. Oprogramowanie serwera RTSP od RealNetworks, na przykład, również używało własnego Protokółu Transportu Danych Real (RDT).
Default ports: 554,8554
PORT STATE SERVICE
554/tcp open rtsp
Key Details
RTSP jest podobny do HTTP, ale zaprojektowany specjalnie do strumieniowania mediów. Jest zdefiniowany w prostych specyfikacjach, które można znaleźć tutaj:
Urządzenia mogą umożliwiać nieautoryzowany lub autoryzowany dostęp. Aby to sprawdzić, wysyłane jest żądanie "DESCRIBE". Podstawowy przykład przedstawiono poniżej:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r
Pamiętaj, że poprawne formatowanie obejmuje podwójne "\r\n" dla spójnej odpowiedzi. Odpowiedź "200 OK" wskazuje na nieautoryzowany dostęp, podczas gdy "401 Unauthorized" sygnalizuje potrzebę autoryzacji, ujawniając, czy wymagana jest autoryzacja Basic czy Digest.
Dla autoryzacji Basic kodujesz nazwę użytkownika i hasło w base64 i dołączasz je do żądania w ten sposób:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r
Ten przykład używa "admin" i "1234" jako poświadczeń. Oto skrypt Python do wysłania takiego żądania:
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)
Podstawowa autoryzacja jest prostsza i preferowana. Autoryzacja z użyciem skrótu wymaga starannego zarządzania szczegółami autoryzacji podanymi w odpowiedzi "401 Unauthorized".
Ten przegląd upraszcza proces uzyskiwania dostępu do strumieni RTSP, koncentrując się na podstawowej autoryzacji ze względu na jej prostotę i praktyczność w początkowych próbach.
Enumeracja
Zdobądź informacje o obsługiwanych metodach i adresach URL oraz spróbuj przeprowadzić atak brute-force (jeśli to konieczne), aby uzyskać dostęp do treści.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Brute Force
Inne przydatne programy
Aby przeprowadzić brute force: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Wykrywanie otwartych hostów RTSP na dowolnym dostępnym celu
- Uzyskiwanie ich publicznych informacji (nazwa hosta, port, model kamery itp.)
- Uruchamianie zautomatyzowanych ataków słownikowych w celu uzyskania trasy strumienia (na przykład /live.sdp)
- Uruchamianie zautomatyzowanych ataków słownikowych w celu uzyskania nazwy użytkownika i hasła kamer
- Generowanie miniaturek z nich, aby sprawdzić, czy strumienie są ważne i mieć szybki podgląd ich zawartości
- Próba stworzenia potoku Gstreamer, aby sprawdzić, czy są poprawnie zakodowane
- Drukowanie podsumowania wszystkich informacji, które Cameradar mógł uzyskać
Referencje
- 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
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.