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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
За даними 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, але розроблений спеціально для медіатрансляцій. Він описаний у простій специфікації, яку можна знайти тут:
Пристрої можуть дозволяти доступ без автентифікації або з автентифікацією. Щоб перевірити, надсилається запит "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-скрипт для відправлення такого запиту:
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 доступ, щоб отримати доступ до контенту.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Перегляд RTSP-потоку за допомогою ffplay
Після того, як ви виявили дійсний RTSP-шлях (наприклад, /mpeg4
, /live.sdp
) і підтвердили доступ (без автентифікації або з обліковими даними), ви можете використати ffplay
для трансляції потоку:
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
- Виявляє відкриті RTSP-хости на будь-якій доступній цілі
- Отримує їхню публічну інформацію (hostname, port, camera model, тощо)
- Запускає автоматизовані dictionary attacks, щоб отримати маршрут потоку (наприклад /live.sdp)
- Запускає автоматизовані dictionary attacks для отримання username і password камер
- Генерує thumbnails з них, щоб перевірити, чи дійсні потоки, і отримати швидкий попередній перегляд їхнього вмісту
- Спробувати створити Gstreamer pipeline, щоб перевірити, чи вони правильно закодовані
- Вивести підсумок усієї інформації, яку Cameradar зміг отримати
Див. також
32100 Udp - Pentesting Pppp Cs2 P2p Cameras
Посилання
- https://en.wikipedia.org/wiki/Real_Time_Streaming_Protocol
- http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/
- https://github.com/Ullaakut/cameradar
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.