554,8554 - Pentesting RTSP

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Z wikipedia:

Protokół transmisji strumieniowej w czasie rzeczywistym (RTSP) to protokół sterowania sieciowego zaprojektowany do użytku w systemach rozrywkowych i komunikacyjnych do sterowania serwerami strumieniowymi. 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 (wideo na żądanie) lub od klienta do serwera (nagrywanie głosu).

Same przesyłanie danych strumieniowych nie jest zadaniem RTSP. Większość serwerów RTSP używa Protokołu Transportu w Czasie Rzeczywistym (RTP) w połączeniu z Protokołem Kontroli w Czasie Rzeczywistym (RTCP) do dostarczania strumieni multimedialnych. Jednak niektórzy dostawcy implementują własne protokoły transportowe. Na przykład oprogramowanie serwera RTSP od RealNetworks używało również własnego własnego protokołu transportu danych (RDT).

Domyślne porty: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Kluczowe szczegóły

RTSP jest podobny do HTTP, ale zaprojektowany specjalnie do strumieniowania mediów. Jest zdefiniowany w prostym specyfikacji, którą można znaleźć tutaj:

RTSP – RFC2326

Urządzenia mogą zezwalać na dostęp nieuwierzytelniony lub uwierzytelniony. Aby to sprawdzić, wysyłany jest żądanie "DESCRIBE". Poniżej przedstawiono podstawowy przykład:

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

Pamiętaj, że poprawne formatowanie obejmuje podwójne "\r\n" dla spójnej odpowiedzi. Odpowiedź "200 OK" oznacza dostęp nieuwierzytelniony, podczas gdy "401 Unauthorized" sygnalizuje konieczność uwierzytelnienia, ujawniając, czy wymagane jest uwierzytelnienie Basic lub Digest.

Dla uwierzytelnienia 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==

Ten przykład używa "admin" i "1234" jako poświadczeń. Oto skrypt Pythona 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 digest wymaga ostrożnego obchodzenia się z danymi uwierzytelniającymi podanymi w odpowiedzi "401 Unauthorized".

To przegląd upraszcza proces dostępu do strumieni RTSP, skupiając się na podstawowej autoryzacji ze względu na jej prostotę i praktyczność podczas pierwszych prób.

Wyliczanie

Pobierzmy informacje na temat obsługiwanych metod i adresów URL oraz spróbujmy siłowo uzyskać dostęp (jeśli konieczne) do treści.

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

Inne przydatne programy

Do ataku brute force: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Wykrywa otwarte hosty RTSP na dowolnym dostępnym celu

  • Pobiera ich publiczne informacje (nazwę hosta, port, model kamery, itp.)

  • Uruchamia zautomatyzowane ataki słownikowe, aby uzyskać ścieżkę strumienia (na przykład /live.sdp)

  • Uruchamia zautomatyzowane ataki słownikowe, aby uzyskać nazwę użytkownika i hasło do kamer

  • Generuje miniatury, aby sprawdzić, czy strumienie są ważne i szybko podejrzeć ich zawartość

  • Próbuje utworzyć potok Gstreamer, aby sprawdzić, czy są poprawnie zakodowane

  • Wyświetla podsumowanie wszystkich informacji, które Cameradar mógł uzyskać

Referencje

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated