554,8554 - Pentesting RTSP
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:
Протокол потокового відео в реальному часі (RTSP) - це протокол управління мережею, розроблений для використання в системах розваг і зв'язку для контролю серверів потокового медіа. Протокол використовується для встановлення та контролю медіа-сесій між кінцевими точками. Клієнти медіа-серверів видають команди у стилі VHS, такі як відтворення, запис і пауза, щоб полегшити реальний контроль над медіа-потоком від сервера до клієнта (Video On Demand) або від клієнта до сервера (Voice Recording).
Передача потокових даних сама по собі не є завданням RTSP. Більшість RTSP серверів використовують Протокол передачі в реальному часі (RTP) у поєднанні з Протоколом контролю в реальному часі (RTCP) для доставки медіа-потоку. Однак деякі постачальники реалізують власні транспортні протоколи. Програмне забезпечення RTSP сервера від RealNetworks, наприклад, також використовує власний протокол Real Data Transport (RDT) від RealNetworks.
Порт за замовчуванням: 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 script для надсилання такого запиту:
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, які підтримуються, і спробувати брутфорсити доступ (якщо потрібно), щоб отримати доступ до вмісту.
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
Інші корисні програми
Щоб здійснити брутфорс: https://github.com/Tek-Security-Group/rtsp_authgrinder
- Виявляйте відкриті RTSP хости на будь-якій доступній цілі
- Отримуйте їхню публічну інформацію (ім'я хоста, порт, модель камери тощо)
- Запускайте автоматизовані атаки словником, щоб отримати їхній маршрут потоку (наприклад, /live.sdp)
- Запускайте автоматизовані атаки словником, щоб отримати ім'я користувача та пароль камер
- Генеруйте ескізи з них, щоб перевірити, чи є потоки дійсними, і щоб швидко переглянути їхній вміст
- Спробуйте створити конвеєр Gstreamer, щоб перевірити, чи правильно вони закодовані
- Друкуйте підсумок усієї інформації, яку може отримати Cameradar
References
- 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.