MEO VOIP: Telefone Fixo no Computador

22 de Março, 2020

Informática, ISP, Software

MEO VOIP: Telefone Fixo no Computador

22 de Março, 2020 | Informática, ISP, Software

É possível utilizar o número do telefone fixo do serviço fibra da MEO no computador ou telemóvel? A resposta é SIM. Infelizmente muitos são os que falam sobre o assunto mas ninguém parece ter uma resposta. Neste artigo apresento a solução e exemplifico como podem também fazê-lo.

Na MEO o vosso Router é um cliente VOIP (protocolo SIP) e simula uma linha telefónica à qual podem ligar qualquer telefone. É possível interceptar o tráfego e descobrir os dados de acesso caso tenham uma instalação com ONT + Router Thomson e não um dos novos routers “all-in-one” da Altice. Pro Tip: Nas instalações novas peçam os dois equipamentos separados aos técnicos.

Para interceptar o tráfego ligamos um Switch gerido entre a ONT e o router, por exemplo um TP Link TL-SG108E ou Netgear GS-GS105E. Na interface web destes Switches em System > Monitoring > Mirroring podemos ligar o “Port Mirroring” que permite clonar o tráfego de uma das portas para outra. É necessário também definir as VLANs 10, 11 e 12 como tagged nas portas onde o router e a ONT estão ligados.

Na porta do Switch de destino do mirroring ligamos um computador e com o Wireshark podemos capturar tudo o que o Thomson envia e recebe da MEO. A ideia parecia simples no entanto não serve nada. Infelizmente o protocolo SIP faz um hash da palavra-passe do VOIP. Se quiserem saber detalhadamente como funciona está aqui: https://nickvsnetworking.com/reverse-md5-on-sip-auth/.

Investigação Preliminar

Após ler o artigo confirmei no meu Thomson e existe um pedido REGISTER que é recusado (401) e que apenas serve para que o servidor responda com um header WWW-Authenticate que contem um nonce:

 User Datagram Protocol, Src Port: 5070, Dst Port: 5060
 Session Initiation Protocol (401)
     Status-Line: SIP/2.0 401 Unauthorized 010300337
     Message Header
         From: ;tag=14e9660-55f3aa8f-13c4-##########
             SIP from address: sip:+35121--------@sip.sapo.pt:5060
             SIP from tag: 14e9660-55f3aa8f-13c4-##########
         To: ;tag=0879afb############
             SIP to address: sip:+35121--------@sip.sapo.pt:5060
             SIP to tag: 0879afb############
         Call-ID: 14f2fd0-55f3aa8f-#############
         [Generated Call-ID: 14f2fd0-55f3aa8f-#############]
         CSeq: 1 REGISTER
         Via: SIP/2.0/UDP 85.xxx.xxx.xxx:5060;branch=z9hG4bK-#########
         Content-Length: 0
         WWW-Authenticate: Digest nonce="FF900000000000000000000000000000",realm="ims.telecom.pt",algorithm=MD5,qop="auth"
             Authentication Scheme: Digest
             Nonce Value: "FF900000000000000000000000000000"
             Realm: "ims.telecom.pt"
             Algorithm: MD5
             QOP: "auth"

Este valor é utilizado de seguida para calcular o response a ser incluído num segundo pedido REGISTER:

 User Datagram Protocol, Src Port: 5060, Dst Port: 5070
 Session Initiation Protocol (REGISTER)
     Request-Line: REGISTER sip:sip.sapo.pt:5060;transport=UDP SIP/2.0
     Message Header
        (...)
          [truncated]Authorization: Digest username="+35121--------",realm="ims.telecom.pt",nonce="FF900000000000000000000000000000",uri="sip:sip.sapo.pt:5060;transport=UDP",response="5ae00000000000000000000000000000",algorithm=MD5,cnonce="10000",q
             Authentication Scheme: Digest
             Username: "+35121--------"
             Realm: "ims.telecom.pt"
             Nonce Value: "FF900000000000000000000000000000"
             Authentication URI: "sip:sip.sapo.pt:5060;transport=UDP"
             Digest Authentication Response: "5ae00000000000000000000000000000"
             Algorithm: MD5
  

Creio que até possa ser possível obter a palavra-passe a partir do response, nonce e do realm no entanto isto iria ser um processo demorado porque teríamos de crakear o MD5.

Solução Final

Após alguns dias e tentativas acabei por experimentar uma coisa: enquanto interceptava o tráfego do router fazer reset ao mesmo para o forçar a obter de novo as configurações… incluindo os dados do serviço VOIP. Como suspeitava o router recebeu toda a configuração dos serviços incluindo o seguinte:

Hypertext Transfer Protocol
eXtensible Markup Language
(...)
        InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserName
        </Name>
    <Value
        xsi:type="xsd:string">
        +35121xxxxxxxx
        </Value>
    </ParameterValueStruct>
<ParameterValueStruct>
    <Name>
        InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword
        </Name>
    <Value
        xsi:type="xsd:string">
        XXXXXXXXX
        </Value>
    </ParameterValueStruct>
<ParameterValueStruct>

Como podem ver no XML é enviado o SIP.AuthUserName e o SIP.AuthPassword que são os vossos dados do VOIP! Podemos encontrar facilmente esta informação com um do seguintes filtros:

http.response && http.file_data contains "SIP.AuthUserName"
frame contains "SIP.AuthUserName"

Configurar o Cliente VOIP

Agora que já sabemos o utilizador e a palavra-passe do VOIP podemos configurar o vosso cliente VOIP favorito, no meu caso o MicroSIP:

SIP Server: sip.sapo.pt
SIP Proxy: proxy.ims.iptv.telecom.pt:5070
Username: +35121xxxxxxx
Domain: sip.sapo.pt
Login: +35121xxxxxxx --numero-de-telefone--
Password: --password-do-voip--
Transport: UDP
Register Refresh: 3600
Publish Presence: Off

Alguns detalhes importantes na configuração:

  • Register Refresh: deverá ter o mesmo valor que a MEO envia para os routers, 3600. Utilizar um valor maior faz com que o cliente deixe de receber chamadas;
  • Publish Presence: Só deverá ser ligado caso não tenham um telefone fixo no Thomson porque irá interferir com o toque do telefone ao receber chamadas.

Agradeço agora a todos os fóruns portugueses, respetivos moderadores e utilizadores que de cada vez que alguém pergunta como fazer isto respondem com o clássico “não consegues”, “eu sei como fazer mas não vou dizer” ou inventam desculpas de algibeira para remover posts úteis. Se não sabem como as coisas funcionam ou não querem ajudar não atrapalhem. 😉