mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
77 lines
6.3 KiB
Markdown
77 lines
6.3 KiB
Markdown
# 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}}
|