hacktricks/network-services-pentesting/554-8554-pentesting-rtsp.md

7.5 KiB
Raw Permalink Blame History

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
{% endhint %}

基本情報

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に似ていますが、メディアストリーミング専用に設計されています。これは、こちらにある簡潔な仕様で定義されています

RTSP 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スクリプトです:

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

Cameradar

  • アクセス可能なターゲット上のオープンRTSPホストを検出
  • それらの公開情報を取得(ホスト名、ポート、カメラモデルなど)
  • ストリームルートを取得するために自動辞書攻撃を実行(例: /live.sdp
  • カメラのユーザー名とパスワードを取得するために自動辞書攻撃を実行
  • ストリームが有効かどうかを確認し、その内容のクイックプレビューを得るためにサムネイルを生成
  • 適切にエンコードされているかを確認するためにGstreamerパイプラインを作成しようとする
  • Cameradarが取得できたすべての情報の概要を印刷

参考文献

{% hint style="success" %} AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、練習する: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする
{% endhint %}