554,8554 - Pentesting RTSP
Informações Básicas
De wikipedia:
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 em 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 da mídia transmitida 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 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 usou o Transporte de Dados Real Proprietário (RDT) da RealNetworks.
Portas padrão: 554,8554
Detalhes Chave
RTSP é semelhante ao HTTP, mas projetado especificamente para streaming de mídia. Está definido em uma especificação simples que pode ser encontrada aqui:
Os dispositivos podem permitir acesso não autenticado ou autenticado. Para verificar, uma solicitação "DESCRIBE" é enviada. Um exemplo básico é mostrado abaixo:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2
Lembre-se, a formatação correta 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 a autenticação Basic ou Digest é necessária.
Para autenticação Basic, você codifica o nome de usuário e a senha em base64 e os inclui na solicitação assim:
DESCRIBE rtsp://<ip>:<port> RTSP/1.0\r\nCSeq: 2\r\nAuthorization: Basic YWRtaW46MTIzNA==
Este exemplo usa "admin" e "1234" para as credenciais. Aqui está um script Python para enviar tal solicitação:
A autenticação básica é mais simples e preferida. A autenticação Digest requer um manuseio cuidadoso dos detalhes de autenticação fornecidos na resposta "401 Unauthorized".
Esta visão geral simplifica o processo de acesso a streams 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.
Outros programas úteis
Para bruteforce: https://github.com/Tek-Security-Group/rtsp_authgrinder
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 a senha das câmeras
Gerar miniaturas a partir delas para verificar se os streams são válidos e ter uma prévia rápida de seu conteúdo
Tentar criar um pipeline Gstreamer para verificar se estão devidamente codificados
Imprimir um resumo de todas as informações que o Cameradar conseguiu obter
Referências
Last updated