# 554,8554 - Pentesting RTSP
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ๐ฌ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ๐ฆ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## Basic Information
From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> **์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ** (**RTSP**)๋ ์คํธ๋ฆฌ๋ฐ ๋ฏธ๋์ด ์๋ฒ๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์ํฐํ
์ธ๋จผํธ ๋ฐ ํต์ ์์คํ
์์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋ ๋คํธ์ํฌ ์ ์ด ํ๋กํ ์ฝ์
๋๋ค. ์ด ํ๋กํ ์ฝ์ ์๋ ํฌ์ธํธ ๊ฐ์ ๋ฏธ๋์ด ์ธ์
์ ์ค์ ํ๊ณ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฏธ๋์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก์ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ(์ฃผ๋ฌธํ ๋น๋์ค) ๋๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก์ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ(์์ฑ ๋
น์)์ ์ค์๊ฐ์ผ๋ก ์ ์ดํ๊ธฐ ์ํด ์ฌ์, ๋
นํ ๋ฐ ์ผ์ ์ ์ง์ ๊ฐ์ VHS ์คํ์ผ์ ๋ช
๋ น์ ๋ฐํํฉ๋๋ค.
>
> ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์์ฒด์ ์ ์ก์ RTSP์ ์์
์ด ์๋๋๋ค. ๋๋ถ๋ถ์ RTSP ์๋ฒ๋ ๋ฏธ๋์ด ์คํธ๋ฆผ ์ ์ก์ ์ํด ์ค์๊ฐ ์ ์ก ํ๋กํ ์ฝ(RTP)๊ณผ ์ค์๊ฐ ์ ์ด ํ๋กํ ์ฝ(RTCP)์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ๊ณต๊ธ์
์ฒด๋ ๋
์ ์ ์ก ํ๋กํ ์ฝ์ ๊ตฌํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, RealNetworks์ RTSP ์๋ฒ ์ํํธ์จ์ด๋ RealNetworks์ ๋
์ ์ ์ธ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก(RDT)๋ ์ฌ์ฉํ์ต๋๋ค.
**๊ธฐ๋ณธ ํฌํธ:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Key Details
**RTSP**๋ HTTP์ ์ ์ฌํ์ง๋ง ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ์ ์ํด ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. ๊ฐ๋จํ ์ฌ์์ด ์ ์๋์ด ์์ผ๋ฉฐ, ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค:
[RTSP โ RFC2326](https://tools.ietf.org/html/rfc2326)
์ฅ์น๋ **์ธ์ฆ๋์ง ์์** ๋๋ **์ธ์ฆ๋** ์ก์ธ์ค๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ํ์ธํ๊ธฐ ์ํด "DESCRIBE" ์์ฒญ์ด ์ ์ก๋ฉ๋๋ค. ๊ธฐ๋ณธ ์์๋ ์๋์ ๊ฐ์ต๋๋ค:
`DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r`
์ฌ๋ฐ๋ฅธ ํ์์ ์ผ๊ด๋ ์๋ต์ ์ํด ์ด์ค "\r\n"์ ํฌํจํด์ผ ํฉ๋๋ค. "200 OK" ์๋ต์ **์ธ์ฆ๋์ง ์์ ์ก์ธ์ค**๋ฅผ ๋ํ๋ด๊ณ , "401 Unauthorized"๋ ์ธ์ฆ์ด ํ์ํจ์ ๋ํ๋ด๋ฉฐ, **Basic** ๋๋ **Digest authentication**์ด ํ์ํ์ง ์ฌ๋ถ๋ฅผ ๋๋ฌ๋
๋๋ค.
**Basic authentication**์ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํ๊ณ ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ด ํฌํจํฉ๋๋ค:
`DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
์ด ์์๋ ์๊ฒฉ ์ฆ๋ช
์ผ๋ก "admin"๊ณผ "1234"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ๊ทธ๋ฌํ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํ **Python ์คํฌ๋ฆฝํธ**์
๋๋ค:
```python
import socket
req = "DESCRIBE rtsp://: 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
```
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **๊ธฐํ ์ ์ฉํ ํ๋ก๊ทธ๋จ**
Bruteforce๋ฅผ ์ํด: [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)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** ๐ฌ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ๐ฆ [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}