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

7.5 KiB
Raw Blame History

554,8554 - Pentesting RTSP

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法:

基本情報

wikipediaから:

リアルタイムストリーミングプロトコルRTSPは、エンターテイメントおよび通信システムで使用するために設計されたネットワーク制御プロトコルです。このプロトコルは、エンドポイント間のメディアセッションを確立および制御するために使用されます。メディアサーバのクライアントは、VHSスタイルのコマンド再生、録画、一時停止などを発行して、サーバからクライアントへのメディアストリーミングビデオオンデマンドまたはクライアントからサーバへのメディアストリーミング音声録音をリアルタイムで制御します。

ストリーミングデータの伝送自体は、RTSPのタスクではありません。ほとんどのRTSPサーバは、メディアストリームの配信にリアルタイムトランスポートプロトコルRTPとリアルタイムコントロールプロトコルRTCPを併用します。ただし、一部のベンダーは独自のトランスポートプロトコルを実装しています。たとえば、RealNetworksのRTSPサーバソフトウェアは、RealNetworksの独自のReal Data TransportRDTも使用しています。

デフォルトポート: 554,8554

PORT    STATE SERVICE
554/tcp open  rtsp

主な詳細

RTSPはHTTPに似ていますが、メディアストリーミング用に特別に設計されています。こちらで定義されています

RTSP RFC2326

デバイスは未認証または認証済みアクセスを許可する場合があります。確認するためには、「DESCRIBE」リクエストを送信します。基本的な例を以下に示します

DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r

正しいフォーマットには、一貫した応答のために二重の"\r\n"が含まれていることを覚えておいてください。"200 OK"応答は未認証アクセスを示し、"401 Unauthorized"は認証が必要であることを示し、Basic認証またはDigest認証が必要かを明らかにします。

Basic認証の場合、ユーザー名とパスワードを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>

Brute Force

その他の便利なプログラム

Bruteforceに使用する: https://github.com/Tek-Security-Group/rtsp_authgrinder

Cameradar

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

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法: