554,8554 - Pentesting RTSP

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Основна інформація

За даними wikipedia:

The Real Time Streaming Protocol (RTSP) — це мережевий протокол керування, розроблений для використання в розважальних та комунікаційних системах для контролю серверів потокового медіа. Протокол використовується для встановлення та керування медіа-сеансами між кінцевими точками. Клієнти медіа-серверів відправляють команди у стилі VHS, такі як play, record і pause, щоб забезпечити керування в реальному часі потоковою передачею медіа зі сервера до клієнта (Video On Demand) або від клієнта до сервера (Voice Recording).

Передача самих потокових даних не є завданням RTSP. Більшість RTSP-серверів використовують Real-time Transport Protocol (RTP) у поєднанні з Real-time Control Protocol (RTCP) для доставки медіа-потоків. Однак деякі виробники реалізують пропрієтарні транспортні протоколи. Наприклад, програмне забезпечення RTSP-сервера від RealNetworks також використовувало пропрієтарний Real Data Transport (RDT).

Порти за замовчуванням: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

Ключові деталі

RTSP схожий на HTTP, але розроблений спеціально для медіатрансляцій. Він описаний у простій специфікації, яку можна знайти тут:

RTSP – 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)

Basic authentication простіший і рекомендований. Digest authentication вимагає уважного опрацювання деталей аутентифікації, що надаються у відповіді "401 Unauthorized".

Цей огляд спрощує процес доступу до RTSP streams, зосереджуючись на Basic authentication через її простоту та практичність під час початкових спроб.

Enumeration

Зберемо інформацію про те, які методи та URLs підтримуються, і, за потреби, спробуємо brute-force доступ, щоб отримати доступ до контенту.

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

Перегляд RTSP-потоку за допомогою ffplay

Після того, як ви виявили дійсний RTSP-шлях (наприклад, /mpeg4, /live.sdp) і підтвердили доступ (без автентифікації або з обліковими даними), ви можете використати ffplay для трансляції потоку:

bash
ffplay -rtsp_transport tcp rtsp://<IP>/mpeg4 -x 2560 -y 1440
  • -rtsp_transport tcp: Використовуйте TCP замість UDP для більш надійної трансляції
  • -x, -y: Опціональні прапорці для керування роздільною здатністю відео
  • Замініть <IP> та шлях за потреби

Brute Force

Інші корисні програми

To bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

  • Виявляє відкриті RTSP-хости на будь-якій доступній цілі
  • Отримує їхню публічну інформацію (hostname, port, camera model, тощо)
  • Запускає автоматизовані dictionary attacks, щоб отримати маршрут потоку (наприклад /live.sdp)
  • Запускає автоматизовані dictionary attacks для отримання username і password камер
  • Генерує thumbnails з них, щоб перевірити, чи дійсні потоки, і отримати швидкий попередній перегляд їхнього вмісту
  • Спробувати створити Gstreamer pipeline, щоб перевірити, чи вони правильно закодовані
  • Вивести підсумок усієї інформації, яку Cameradar зміг отримати

Див. також

32100 Udp - Pentesting Pppp Cs2 P2p Cameras

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks