hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md

101 lines
6.7 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# 554,8554 - Testowanie penetracyjne RTSP
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:42:55 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 01:46:25 +00:00
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## Podstawowe informacje
2024-02-11 01:46:25 +00:00
Z [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
2024-02-08 21:36:35 +00:00
> **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).
2024-02-11 01:46:25 +00:00
**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](https://tools.ietf.org/html/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\r`
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==\r`
Ten przykład używa "admin" i "1234" jako poświadczeń. Oto **skrypt Pythona** do wysłania takiego żądania:
```python
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)
2022-02-10 12:30:58 +00:00
data = s.recv(1024)
2022-02-09 20:30:05 +00:00
print(data)
```
**Podstawowa autoryzacja** jest prostsza i preferowana. **Autoryzacja digest** wymaga ostrożnego obchodzenia się z danymi uwierzytelniającymi podanymi w odpowiedzi "401 Unauthorized".
2024-02-08 21:36:35 +00:00
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.
2024-02-11 01:46:25 +00:00
## 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.
```bash
2022-01-13 18:45:25 +00:00
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Atak Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
2024-02-11 01:46:25 +00:00
### **Inne przydatne programy**
Do ataku brute force: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
2024-02-08 21:36:35 +00:00
[**Cameradar**](https://github.com/Ullaakut/cameradar)
2024-02-11 01:46:25 +00:00
* 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ść
2024-02-11 01:46:25 +00:00
* Próbuje utworzyć potok Gstreamer, aby sprawdzić, czy są poprawnie zakodowane
* Wyświetla podsumowanie wszystkich informacji, które Cameradar mógł uzyskać
2024-02-08 21:36:35 +00:00
## Referencje
2024-02-08 21:36:35 +00:00
* [https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)
* [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
2022-05-08 23:13:03 +00:00
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-01-03 10:42:55 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
2024-02-11 01:46:25 +00:00
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-11 01:46:25 +00:00
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>