8.1 KiB
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!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e 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.
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:
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://<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:
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”.
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:
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)
Eis que você tem acesso.
De: 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.
nmap -sV --script "rtsp-*" -p <PORT> <IP>
Brute Force
Outros programas úteis
Para bruteforce: 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
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!
- Adquira o merchandising oficial do PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do HackTricks e HackTricks Cloud.