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

108 lines
8.1 KiB
Markdown
Raw Normal View History

2023-08-29 18:57:50 +00:00
# 554,8554 - Pentesting RTSP
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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).
</details>
## Informações Básicas
2022-04-28 16:01:33 +00:00
> 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).
2023-06-06 18:56:34 +00:00
De [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol).
2023-06-06 18:56:34 +00:00
**Portas padrão:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Informações Detalhadas
2023-08-29 18:57:50 +00:00
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:
2023-08-29 18:57:50 +00:00
`DESCRIBE rtsp://<ip>:<port> 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 \<username> “:” \<password> e adicioná-lo à solicitação. Então, uma nova solicitação se pareceria com:
2023-08-29 18:57:50 +00:00
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r\n`
Novamente, note que a solicitação é terminada com o duplo “\r\n”.
2023-08-29 18:57:50 +00:00
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://<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)
2022-02-10 12:30:58 +00:00
data = s.recv(1024)
2022-02-09 20:30:05 +00:00
print(data)
```
Eis que você tem acesso.
2023-06-06 18:56:34 +00:00
**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
2023-08-29 18:57:50 +00:00
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
2022-01-13 18:45:25 +00:00
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [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**
2023-06-06 18:56:34 +00:00
Cameradar permite que você:
2023-06-06 18:56:34 +00:00
* 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
2023-06-06 18:56:34 +00:00
* 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
2022-05-08 23:13:03 +00:00
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Aprenda AWS hacking do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
2022-04-28 16:01:33 +00:00
* 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).
2022-04-28 16:01:33 +00:00
</details>