7.5 KiB
554,8554 - Pentesting RTSP
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
基本情報
From wikipedia:
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に似ていますが、メディアストリーミング専用に設計されています。これは、こちらにある簡潔な仕様で定義されています:
デバイスは認証なしまたは認証ありのアクセスを許可する場合があります。確認するために、「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スクリプトです:
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>
ブルートフォース
その他の便利なプログラム
ブルートフォース用: https://github.com/Tek-Security-Group/rtsp_authgrinder
- アクセス可能なターゲット上のオープンRTSPホストを検出
- それらの公開情報を取得(ホスト名、ポート、カメラモデルなど)
- ストリームルートを取得するために自動辞書攻撃を実行(例: /live.sdp)
- カメラのユーザー名とパスワードを取得するために自動辞書攻撃を実行
- ストリームが有効かどうかを確認し、その内容のクイックプレビューを得るためにサムネイルを生成
- 適切にエンコードされているかを確認するためにGstreamerパイプラインを作成しようとする
- Cameradarが取得できたすべての情報の概要を印刷
参考文献
- 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
{% hint style="success" %}
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、練習する: HackTricks Training GCP Red Team Expert (GRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのgithubリポジトリにPRを提出してハッキングトリックを共有してください。