mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 17:10:07 +00:00
102 lines
7.5 KiB
Markdown
102 lines
7.5 KiB
Markdown
# 554,8554 - Pentesting RTSP
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* 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.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## 基本情報
|
||
|
||
From [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
|
||
|
||
> The **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://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
|
||
|
||
正しいフォーマットには、一貫した応答のためにダブルの"\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==\r`
|
||
|
||
この例では、資格情報として「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>
|
||
```
|
||
### [ブルートフォース](../generic-methodologies-and-resources/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が取得できたすべての情報の概要を印刷
|
||
|
||
## 参考文献
|
||
|
||
* [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" %}
|
||
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>HackTricksをサポートする</summary>
|
||
|
||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
|
||
|
||
</details>
|
||
{% endhint %}
|