# 554,8554 - Pentesting RTSP
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras formas de apoiar o HackTricks: * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Informações Básicas > O **Real Time Streaming Protocol** (**RTSP**) é um protocolo de controle de rede projetado para uso em sistemas de entretenimento e comunicações para controlar servidores de mídia de streaming. O protocolo é utilizado para estabelecer e controlar sessões de mídia entre pontos finais. Clientes de servidores de mídia emitem comandos ao estilo VHS, como play, record e pause, para facilitar o controle em tempo real do streaming de mídia do servidor para um cliente (Video On Demand) ou de um cliente para o servidor (Gravação de Voz). > > A transmissão de dados de streaming em si não é uma tarefa do RTSP. A maioria dos servidores RTSP usa o Real-time Transport Protocol (RTP) em conjunto com o Real-time Control Protocol (RTCP) para entrega de fluxo de mídia. No entanto, alguns fornecedores implementam protocolos de transporte proprietários. O software de servidor RTSP da RealNetworks, por exemplo, também usava o transporte de dados proprietário da RealNetworks (RDT). De [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol). **Portas padrão:** 554,8554 ``` PORT STATE SERVICE 554/tcp open rtsp ``` ## Informações Detalhadas Primeiramente, RTSP é um protocolo semelhante ao HTTP. Possui uma estrutura diferente e comandos de controle, mas é textual em seu formato e, uma vez que você aprenda o básico dos comandos e como eles interagem, é bastante fácil de usar. A especificação para RTSP é bem direta. Aqui está um link para ela: [RTSP – RFC2326](https://tools.ietf.org/html/rfc2326) O RTSP pode ser acessado sem autenticação (comum em dispositivos prontos para uso) ou com autenticação. O acesso autenticado espelha o HTTP, no sentido de que você tem autenticação Básica e Digest, ambas quase idênticas ao HTTP. Para descobrir se seu dispositivo está autenticado ou não, simplesmente envie uma solicitação “DESCRIBE”. Uma solicitação DESCRIBE simples se parece com: `DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\n` Nota: o adicional “\r\n” é necessário para uma resposta confiável. Alguns sistemas aceitarão o único “\r\n”, mas a maioria não. Isso pode ser enviado por um socket bruto. Assim como no HTTP, uma resposta bem-sucedida indicando que o acesso não autenticado está disponível conterá um “200 OK”. Neste caso, com DESCRIBE, também conterá todos os parâmetros operacionais do feed de vídeo. Se o dispositivo requer autenticação, a resposta será “401 Não Autorizado”. A resposta também indicará quais mecanismos de autenticação estão disponíveis. Se a autenticação Básica estiver disponível, a string de resposta conterá uma linha de informação que tem “WWW-Authenticate: Basic”. O restante das informações fornecidas com a autenticação Básica é em grande parte irrelevante para realizar a autenticação básica. Se a autenticação Digest for necessária, então a resposta “401 Não Autorizado” terá uma linha de informação contendo “WWW-Authenticate: Digest”. As informações com a especificação Digest SÃO muito importantes se você for fazer a autenticação Digest, então não as ignore. A autenticação Básica é o caminho a seguir, esperançosamente a resposta recebida indica que ela está disponível. Se não, existem três métodos diferentes para montar um elemento de autenticação Digest, então Digest pode se tornar problemático, especialmente cego (não autenticado). O restante deste artigo se aterá à autenticação Básica. Eu posso escrever um artigo de acompanhamento mais tarde, uma vez que eu decifre o segredo para fazer a autenticação Digest cega. Para formular um elemento de autenticação Básica, basta codificar em base 64 \ “:” \ e adicioná-lo à solicitação. Então, uma nova solicitação se pareceria com: `DESCRIBE rtsp://: RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n` Novamente, note que a solicitação é terminada com o duplo “\r\n”. O valor YWRtaW46MTIzNA== é o nome de usuário e senha codificados em base 64 concatenados com “:”. Neste caso, usei “admin”/”1234”. Alguns scripts simples em python para testar isso se parecem com: ```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) ``` Eis que você tem acesso. **De:** [**http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/**](https://web.archive.org/web/20161020202643/http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/) ## Enumeração Vamos obter informações sobre métodos válidos e URLs suportados e tentar forçar a entrada (se necessário) para acessar o conteúdo. ```bash nmap -sV --script "rtsp-*" -p ``` ### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp) ### **Outros programas úteis** Para bruteforce: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder) **Cameradar** Cameradar permite que você: * Detecte hosts RTSP abertos em qualquer alvo acessível * Obtenha suas informações públicas (nome do host, porta, modelo da câmera, etc.) * Execute ataques automatizados de dicionário para obter a rota do stream (por exemplo, /live.sdp) * Execute ataques automatizados de dicionário para obter o nome de usuário e senha das câmeras * Gere miniaturas delas para verificar se os streams são válidos e para ter uma pré-visualização rápida do seu conteúdo * Tente criar um pipeline Gstreamer para verificar se eles estão codificados corretamente * Imprima um resumo de todas as informações que o Cameradar conseguiu obter * [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
Aprenda AWS hacking do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras formas de apoiar o HackTricks: * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).