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

100 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 554,8554 - Pentesting RTSP
<details>
<summary><strong>Aprenda hacking 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 maneiras de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
## Informações Básicas
Do [wikipedia](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol):
> O **Protocolo de Streaming em Tempo Real** (**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 é usado para estabelecer e controlar sessões de mídia entre pontos finais. Clientes de servidores de mídia emitem comandos no estilo VHS, como reproduzir, gravar e pausar, para facilitar o controle em tempo real do streaming de mídia do servidor para um cliente (Vídeo sob Demanda) 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 Protocolo de Transporte em Tempo Real (RTP) em conjunto com o Protocolo de Controle em Tempo Real (RTCP) para a entrega de fluxo de mídia. No entanto, alguns fornecedores implementam protocolos de transporte proprietários. O software do servidor RTSP da RealNetworks, por exemplo, também usava o Transporte de Dados Real (RDT) proprietário da RealNetworks.
**Portas padrão:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Detalhes Principais
**RTSP** é semelhante ao HTTP, mas projetado especificamente para streaming de mídia. É definido em uma especificação direta que pode ser encontrada aqui:
[RTSP RFC2326](https://tools.ietf.org/html/rfc2326)
Dispositivos podem permitir acesso **não autenticado** ou **autenticado**. Para verificar, é enviada uma solicitação "DESCRIBE". Um exemplo básico é mostrado abaixo:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r`
Lembre-se, o formato correto inclui um duplo "\r\n" para uma resposta consistente. Uma resposta "200 OK" indica **acesso não autenticado**, enquanto "401 Unauthorized" sinaliza a necessidade de autenticação, revelando se é necessária **autenticação Básica** ou **Digest**.
Para **autenticação Básica**, você codifica o nome de usuário e senha em base64 e os inclui na solicitação da seguinte forma:
`DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==\r`
Este exemplo usa "admin" e "1234" para as credenciais. Aqui está um **script Python** para enviar tal solicitação:
```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)
```
**Autenticação básica** é mais simples e preferida. A **autenticação digest** requer o manuseio cuidadoso dos detalhes de autenticação fornecidos na resposta "401 Não autorizado".
Esta visão geral simplifica o processo de acesso a fluxos RTSP, focando na **autenticação básica** por sua simplicidade e praticidade em tentativas iniciais.
## Enumeração
Vamos obter informações sobre os métodos válidos e URLs suportados e tentar forçar o acesso (se necessário) para obter acesso ao conteúdo.
```bash
nmap -sV --script "rtsp-*" -p <PORT> <IP>
```
### [Brute Force](../generic-methodologies-and-resources/brute-force.md#rtsp)
### **Outros programas úteis**
Para fazer brute force: [https://github.com/Tek-Security-Group/rtsp\_authgrinder](https://github.com/Tek-Security-Group/rtsp\_authgrinder)
[**Cameradar**](https://github.com/Ullaakut/cameradar)
* Detectar hosts RTSP abertos em qualquer alvo acessível
* Obter suas informações públicas (nome do host, porta, modelo da câmera, etc.)
* Lançar ataques de dicionário automatizados para obter a rota do stream (por exemplo /live.sdp)
* Lançar ataques de dicionário automatizados para obter o nome de usuário e senha das câmeras
* Gerar miniaturas para verificar se os streams são válidos e ter uma prévia rápida do conteúdo
* Tentar criar um pipeline do Gstreamer para verificar se estão codificados corretamente
* Imprimir um resumo de todas as informações que o Cameradar pôde obter
## Referências
* [https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol](https://en.wikipedia.org/wiki/Real\_Time\_Streaming\_Protocol)
* [http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/](http://badguyfu.net/rtsp-brute-forcing-for-fun-and-naked-pictures/)
* [https://github.com/Ullaakut/cameradar](https://github.com/Ullaakut/cameradar)
<details>
<summary><strong>Aprenda hacking na 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ê deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>