<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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)!
* 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).
Um dos primeiros passos que uma Equipe Vermelha poderia fazer é procurar números de telefone disponíveis para entrar em contato com a empresa usando ferramentas OSINT, Pesquisas no Google ou raspando as páginas da web.
Saber se o operador fornece serviços VoIP pode ajudar a identificar se a empresa está usando VoIP... Além disso, é possível que a empresa não tenha contratado serviços VoIP, mas esteja usando cartões PSTN para conectar seu próprio PBX VoIP à rede telefônica tradicional.
- **`nmap`** é capaz de escanear serviços UDP, mas devido ao número de serviços UDP sendo escaneados, é muito lento e pode não ser muito preciso com esse tipo de serviços.
* **`svmap`** do SIPVicious (`sudo apt install sipvicious`): Irá localizar os serviços SIP na rede indicada.
*`svmap` é **fácil de bloquear** porque utiliza o User-Agent `friendly-scanner`, mas você pode modificar o código em `/usr/share/sipvicious/sipvicious` e alterá-lo.
* **`SIPPTS scan`** do [**sippts**](https://github.com/Pepelux/sippts)**:** O SIPPTS scan é um scanner muito rápido para serviços SIP sobre UDP, TCP ou TLS. Ele utiliza multithread e pode escanear grandes faixas de redes. Permite indicar facilmente um intervalo de portas, escanear tanto TCP quanto UDP, usar outro método (por padrão, usará OPTIONS) e especificar um User-Agent diferente (e mais).
É possível descobrir **quais métodos estão disponíveis** para uso no PBX usando `SIPPTS enumerate` do [**sippts**](https://github.com/Pepelux/sippts)
```bash
sippts enumerate -i 10.10.0.10
```
### Análise das respostas do servidor
É muito importante analisar os cabeçalhos que um servidor nos envia de volta, dependendo do tipo de mensagem e cabeçalhos que enviamos. Com `SIPPTS send` do [**sippts**](https://github.com/Pepelux/sippts) podemos enviar mensagens personalizadas, manipulando todos os cabeçalhos, e analisar a resposta.
Também é possível obter dados se o servidor usar websockets. Com `SIPPTS wssend` do [**sippts**](https://github.com/Pepelux/sippts) podemos enviar mensagens WS personalizadas.
As extensões em um sistema PBX (Private Branch Exchange) referem-se aos **identificadores internos únicos atribuídos a linhas telefônicas individuais**, dispositivos ou usuários dentro de uma organização ou empresa. As extensões tornam possível **encaminhar chamadas dentro da organização de forma eficiente**, sem a necessidade de números de telefone externos individuais para cada usuário ou dispositivo.
* **`svwar`** do SIPVicious (`sudo apt install sipvicious`): `svwar` é um scanner de linhas de extensão SIP PBX gratuito. Em conceito, ele funciona de forma semelhante aos wardialers tradicionais, **adivinhando uma faixa de extensões ou uma lista de extensões fornecida**.
* **`SIPPTS exten`** do [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS exten identifica extensões em um servidor SIP. Sipexten pode verificar grandes intervalos de rede e portas.
* **`enumiax` (`apt install enumiax`): enumIAX** é um **enumerador de força bruta de nomes de usuário** para o protocolo Inter Asterisk Exchange. enumIAX pode operar em dois modos distintos; Adivinhação Sequencial de Nomes de Usuário ou Ataque de Dicionário.
Após descobrir o **PBX** e alguns **ramais/nomes de usuário**, uma Equipe Vermelha poderia tentar **autenticar via método `REGISTER`** em um ramal usando um dicionário de senhas comuns para forçar a autenticação.
Observe que um **nome de usuário** pode ser o mesmo que o ramal, mas essa prática pode variar dependendo do sistema PBX, sua configuração e das preferências da organização...
* **`svcrack`** do SIPVicious (`sudo apt install sipvicious`): O SVCrack permite que você quebre a senha para um nome de usuário/ramal específico em um PBX.
* **`SIPPTS rcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** O SIPPTS rcrack é um quebrador remoto de senhas para serviços SIP. O Rcrack pode testar senhas para vários usuários em diferentes IPs e faixas de portas.
Se encontrar equipamentos de VoIP dentro de uma **rede Wifi aberta**, você poderá **capturar todas as informações**. Além disso, se estiver dentro de uma rede mais fechada (conectado via Ethernet ou Wifi protegido), poderá realizar **ataques de MitM como** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre o **PBX e o gateway** para capturar as informações.
Entre as informações de rede, você poderá encontrar **credenciais web** para gerenciar o equipamento, **extensões de usuário**, **nome de usuário**, **endereços IP**, até mesmo **senhas hash** e **pacotes RTP** que poderá reproduzir para **ouvir a conversa**, e mais.
Para obter essas informações, você pode usar ferramentas como Wireshark, tcpdump... mas uma **ferramenta especialmente criada para capturar conversas VoIP é** [**ucsniff**](https://github.com/Seabreg/ucsniff).
[Verifique este exemplo para entender melhor uma **comunicação de registro SIP**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) para aprender como as **credenciais são enviadas**.
* **`sipdump`** &**`sipcrack`,** parte do **sipcrack** (`apt-get install sipcrack`): Essas ferramentas podem **extrair** de um **pcap** as **autenticações digest** dentro do protocolo SIP e **realizar brute force** nelas.
* **`SIPPTS dcrack`** de [**sippts**](https://github.com/Pepelux/sippts)**:** O SIPPTS dcrack é uma ferramenta para quebrar as autenticações digest obtidas com o dump do SIPPTS.
**Não apenas as credenciais SIP** podem ser encontradas no tráfego de rede, também é possível encontrar códigos DTMF que são usados, por exemplo, para acessar a **caixa postal**.\
É possível enviar esses códigos em mensagens **INFO SIP**, em **áudio** ou dentro de **pacotes RTP**. Se os códigos estiverem dentro de pacotes RTP, você pode cortar essa parte da conversa e usar a ferramenta multimo para extraí-los:
Se um endereço IP for especificado, o host **não precisará enviar solicitações REGISTER** de tempos em tempos (no pacote REGISTER é enviado o tempo de vida, geralmente 30min, o que significa que em outro cenário o telefone precisará se REGISTRAR a cada 30 minutos). No entanto, será necessário ter portas abertas permitindo conexões do servidor VoIP para receber chamadas.
Quando **`type=friend`** é usado, o **valor** da variável **host****não será utilizado**, então se um administrador **configurar erroneamente um SIP-trunk** usando esse valor, **qualquer pessoa poderá se conectar a ele**.
No Asterisk, um **contexto** é um contêiner ou seção nomeada no plano de discagem que **agrupa ramais, ações e regras relacionadas**. O plano de discagem é o componente central de um sistema Asterisk, pois define **como chamadas de entrada e saída são tratadas e roteadas**. Os contextos são usados para organizar o plano de discagem, gerenciar controle de acesso e fornecer separação entre diferentes partes do sistema.
Cada contexto é definido no arquivo de configuração, geralmente no arquivo **`extensions.conf`**. Os contextos são indicados por colchetes, com o nome do contexto dentro deles. Por exemplo:
Dentro do contexto, você define extensões (padrões de números discados) e as associa a uma série de ações ou aplicativos. Essas ações determinam como a chamada é processada. Por exemplo:
Este exemplo demonstra um contexto simples chamado "meu_contexto" com uma extensão "100". Quando alguém disca 100, a chamada será atendida, uma mensagem de boas-vindas será reproduzida e, em seguida, a chamada será encerrada.
Além disso, por padrão, o arquivo **`sip.conf`** contém **`allowguest=true`**, então **qualquer** atacante **sem autenticação** poderá ligar para qualquer outro número.
***`SIPPTS invite`** do [**sippts**](https://github.com/Pepelux/sippts)**:** O convite SIPPTS verifica se um **servidor PBX nos permite fazer chamadas sem autenticação**. Se o servidor SIP tiver uma configuração incorreta, permitirá que façamos chamadas para números externos. Também pode permitir que transfiramos a chamada para um segundo número externo.
Por exemplo, se o seu servidor Asterisk tiver uma má configuração de contexto, você pode aceitar solicitações de convite sem autorização. Nesse caso, um atacante pode fazer chamadas sem saber nenhum usuário/senha.
IVRS significa **Sistema de Resposta de Voz Interativa**, uma tecnologia de telefonia que permite aos usuários interagir com um sistema informatizado por meio de voz ou teclas de toque. O IVRS é usado para construir sistemas de **manuseio de chamadas automatizadas** que oferecem uma variedade de funcionalidades, como fornecer informações, encaminhar chamadas e capturar a entrada do usuário.
2.**Sinalização DTMF** (Dual-Tone Multi-Frequency): Entradas de teclas de toque geradas ao pressionar teclas no telefone, que são usadas para navegar pelos menus do IVR e fornecer entrada.
3.**Roteamento de chamadas**: Direcionar chamadas para o destino apropriado, como departamentos específicos, agentes ou ramais com base na entrada do usuário.
5.**Integração com sistemas externos**: Conectar o sistema IVR a bancos de dados ou outros sistemas de software para acessar ou atualizar informações, realizar ações ou disparar eventos.
Em um sistema VoIP Asterisk, você pode criar um IVR usando o plano de discagem (arquivo **`extensions.conf`**) e várias aplicações como `Background()`, `Playback()`, `Read()`, e mais. Essas aplicações ajudam a reproduzir prompts de voz, capturar a entrada do usuário e controlar o fluxo da chamada.
O exemplo anterior é um caso em que o usuário é solicitado a **pressionar 1 para ligar** para um departamento, **2 para ligar** para outro, ou **a extensão completa** se ele a souber.\
A vulnerabilidade está no fato de que o **comprimento da extensão indicada não é verificado, então um usuário poderia inserir um número completo durante o timeout de 5 segundos e ele será chamado.**
No entanto, se **`${EXTEN}`** permitir introduzir **mais do que números** (como em versões mais antigas do Asterisk), um atacante poderia introduzir **`101&SIP123123123`** para ligar para o número de telefone 123123123. E este seria o resultado:
Portanto, uma chamada para a extensão **`101`** e **`123123123`** será enviada e apenas a primeira que atender a chamada será estabelecida... mas se um atacante usar uma **extensão que contorna qualquer correspondência** que está sendo realizada mas não existe, ele poderia **injetar uma chamada apenas para o número desejado**.
O vazamento de Digest SIP é uma vulnerabilidade que afeta um grande número de telefones SIP, incluindo telefones IP de hardware e software, bem como adaptadores de telefone (VoIP para analógico). A vulnerabilidade permite o **vazamento da resposta de autenticação Digest**, que é calculada a partir da senha. Um **ataque de senha offline é então possível** e pode recuperar a maioria das senhas com base na resposta do desafio.
7. O **atacante pode então realizar um ataque de força bruta** na resposta do desafio em sua máquina local (ou rede distribuída etc) e adivinhar a senha
* **Vazamento SIPPTS** de [**sippts**](https://github.com/Pepelux/sippts)**:** O vazamento SIPPTS explora a vulnerabilidade de vazamento de Digest SIP que afeta um grande número de telefones SIP. A saída pode ser salva no formato SipCrack para forçar a quebra usando o dcrack do SIPPTS ou a ferramenta SipCrack.
Click2Call permite a um **usuário da web** (que por exemplo pode estar interessado em um produto) **introduzir** seu **número de telefone** para ser chamado. Em seguida, uma chamada comercial será feita e quando ele **atender o telefone**, o usuário será **chamado e conectado ao agente**.
* Para **organizar uma chamada**, como especificado anteriormente, **nenhuma permissão de leitura é necessária** e somente **originate** em **write** é necessário.
No Asterisk, é possível usar o comando **`ChanSpy`** indicando a **extensão(ões) a serem monitoradas** (ou todas) para ouvir as conversas que estão acontecendo. Este comando precisa ser atribuído a uma extensão.
Por exemplo, **`exten => 333,1,ChanSpy('all',qb)`** indica que se você **ligar** para a **extensão 333**, ela irá **monitorar****`todas`** as extensões, **começar a ouvir** sempre que uma nova conversa começar (**`b`**) em modo silencioso (**`q`**) pois não queremos interagir. Você pode ir de uma conversa para outra pressionando **`*`**, ou marcando o número da extensão.
**RTCPBleed** é um problema de segurança importante que afeta servidores VoIP baseados em Asterisk (publicado em 2017). A vulnerabilidade permite que o tráfego **RTP (Protocolo de Tempo Real)**, que transporta conversas VoIP, seja **interceptado e redirecionado por qualquer pessoa na Internet**. Isso ocorre porque o tráfego RTP contorna a autenticação ao passar por firewalls de NAT (Tradução de Endereços de Rede).
Os proxies RTP tentam resolver as **limitações de NAT** que afetam os sistemas RTC ao fazer a intermediação de fluxos RTP entre duas ou mais partes. Quando o NAT está em vigor, o software de proxy RTP muitas vezes não pode confiar nas informações de IP e porta RTP obtidas por meio de sinalização (por exemplo, SIP). Portanto, vários proxies RTP implementaram um mecanismo em que tal **tupla de IP e porta é aprendida automaticamente**. Isso é frequentemente feito inspecionando o tráfego RTP de entrada e marcando o IP e a porta de origem para qualquer tráfego RTP de entrada como aquele que deve ser respondido. Esse mecanismo, que pode ser chamado de "modo de aprendizado", **não utiliza nenhum tipo de autenticação**. Portanto, **atacantes** podem **enviar tráfego RTP para o proxy RTP** e receber o tráfego RTP intermediado destinado ao chamador ou receptor de um fluxo RTP em andamento. Chamamos essa vulnerabilidade de RTP Bleed porque permite que os atacantes recebam fluxos de mídia RTP destinados a usuários legítimos.
Outro comportamento interessante de proxies RTP e pilhas RTP é que, às vezes, **mesmo que não sejam vulneráveis ao RTP Bleed**, eles irão **aceitar, encaminhar e/ou processar pacotes RTP de qualquer origem**. Portanto, os atacantes podem enviar pacotes RTP que podem permitir que eles injetem sua mídia em vez da legítima. Chamamos esse ataque de injeção RTP porque permite a injeção de pacotes RTP ilegítimos em fluxos RTP existentes. Essa vulnerabilidade pode ser encontrada tanto em proxies RTP quanto em pontos finais.
Tradicionalmente, o Asterisk e o FreePBX têm usado a configuração **`NAT=yes`**, que permite que o tráfego RTP contorne a autenticação, potencialmente resultando em ausência de áudio ou áudio unidirecional em chamadas.
* **`SIPPTS rtpbleedinject`** do [**sippts**](https://github.com/Pepelux/sippts)**:** O exploit SIPPTS rtpbleedinject explora a vulnerabilidade RTP Bleed injetando um arquivo de áudio (formato WAV).
No Asterisk, se você de alguma forma conseguir **adicionar regras de extensão e recarregá-las** (por exemplo, comprometendo um servidor de gerenciamento web vulnerável), é possível obter RCE usando o comando **`System`**.
Se o servidor estiver **impedindo o uso de certos caracteres** no comando **`System`** (como no Elastix), verifique se o servidor web permite **criar arquivos de alguma forma dentro do sistema** (como no Elastix ou trixbox) e use isso para **criar um script de backdoor** e então use **`System`** para **executar** esse **script**.
* **Várias pastas** pertencerão ao usuário Asterisk comprometido (se não estiver sendo executado como root). Esse usuário pode ler os arquivos anteriores e também controla a configuração, então ele poderia fazer o Asterisk carregar outros binários com backdoor quando executados.
É possível inserir um **`.wav`** em conversas usando ferramentas como **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) e **`rtpmixsound`** (`sudo apt install rtpmixsound`).
Ou você pode usar os scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) para **escanear conversas** (**`rtpscan.pl`**), enviar um `.wav` para uma conversa (**`rtpsend.pl`**) e **inserir ruído** em uma conversa (**`rtpflood.pl`**).
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Uma ferramenta para realizar flooding de mensagens SIP/SDP INVITE sobre UDP/IP.
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Envia vários pacotes RTP bem formados. É necessário saber as portas RTP que estão sendo usadas (fareje primeiro).
A maneira mais fácil de instalar um software como o Asterisk é baixar uma **distribuição do SO** que já o tenha instalado, como: **FreePBX, Elastix, Trixbox**... O problema com esses é que uma vez que esteja funcionando, os sysadmins podem **não atualizá-los novamente** e **vulnerabilidades** serão descobertas com o tempo.
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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 PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.