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

77 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 554,8554 - Pentesting RTSP
{{#include ../banners/hacktricks-training.md}}
## Основна інформація
З [wikipedia](https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol):
> **Протокол реального часу потокового відео** (**RTSP**) - це протокол управління мережею, розроблений для використання в системах розваг і зв'язку для управління серверами потокового медіа. Протокол використовується для встановлення та контролю медіа-сесій між кінцевими точками. Клієнти медіа-серверів видають команди у стилі VHS, такі як відтворення, запис і пауза, щоб полегшити реальний контроль над медіа-потоком від сервера до клієнта (Video On Demand) або від клієнта до сервера (Voice Recording).
>
> Передача потокових даних сама по собі не є завданням RTSP. Більшість RTSP серверів використовують Протокол реального часу передачі (RTP) у поєднанні з Протоколом контролю реального часу (RTCP) для доставки медіа-потоку. Однак деякі постачальники реалізують власні транспортні протоколи. Програмне забезпечення RTSP сервера від RealNetworks, наприклад, також використовувало власний протокол RealNetworks Real Data Transport (RDT).
**Порт за замовчуванням:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Ключові деталі
**RTSP** подібний до HTTP, але спеціально розроблений для потокового медіа. Він визначений у простій специфікації, яку можна знайти тут:
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
Пристрої можуть дозволяти **неаутентифікований** або **аутентифікований** доступ. Щоб перевірити, надсилається запит "DESCRIBE". Основний приклад наведено нижче:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2`
Пам'ятайте, що правильне форматування включає подвійну "\r\n" для послідовної відповіді. Відповідь "200 OK" вказує на **неаутентифікований доступ**, тоді як "401 Unauthorized" сигналізує про необхідність аутентифікації, вказуючи, чи потрібна **Basic** або **Digest authentication**.
Для **Basic authentication** ви кодуєте ім'я користувача та пароль у base64 і включаєте його в запит ось так:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==`
Цей приклад використовує "admin" і "1234" для облікових даних. Ось **Python скрипт** для надсилання такого запиту:
```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)
data = s.recv(1024)
print(data)
```
**Базова аутентифікація** є простішою і переважною. **Дайджест-аутентифікація** вимагає обережного поводження з деталями аутентифікації, наданими у відповіді "401 Unauthorized".
Цей огляд спрощує процес доступу до RTSP потоків, зосереджуючись на **базовій аутентифікації** через її простоту та практичність у початкових спробах.
## Перерахування
Давайте отримати інформацію про дійсні методи та URL, які підтримуються, і спробувати брутфорсити доступ (якщо потрібно), щоб отримати доступ до вмісту.
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Brute Force](../generic-hacking/brute-force.md#rtsp)
### **Інші корисні програми**
Для брутфорсу: [https://github.com/Tek-Security-Group/rtsp_authgrinder](https://github.com/Tek-Security-Group/rtsp_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
- Виявлення відкритих RTSP хостів на будь-якій доступній цілі
- Отримання їхньої публічної інформації (ім'я хоста, порт, модель камери тощо)
- Запуск автоматизованих атак словникового типу для отримання їхнього маршруту потоку (наприклад, /live.sdp)
- Запуск автоматизованих атак словникового типу для отримання імені користувача та пароля камер
- Генерація ескізів з них, щоб перевірити, чи є потоки дійсними, і мати швидкий перегляд їхнього вмісту
- Спроба створити конвеєр Gstreamer, щоб перевірити, чи правильно вони закодовані
- Виведення підсумку всієї інформації, яку міг отримати Cameradar
## References
- [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/)
- [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
{{#include ../banners/hacktricks-training.md}}