# 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).