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

101 lines
6.6 KiB
Markdown
Raw Normal View History

2023-08-29 18:57:50 +00:00
# 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
2022-04-28 16:01:33 +00:00
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.
2023-06-06 18:56:34 +00:00
**Portas padrão:** 554,8554
```
PORT STATE SERVICE
554/tcp open rtsp
```
## Detalhes Principais
2023-08-29 18:57:50 +00:00
**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)
2022-02-10 12:30:58 +00:00
data = s.recv(1024)
2022-02-09 20:30:05 +00:00
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
2023-08-29 18:57:50 +00:00
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
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 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/)
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 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:
2022-04-28 16:01:33 +00:00
* 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).
2022-04-28 16:01:33 +00:00
</details>