📌 22 de Março, 2020
MEO VOIP: Telefone Fixo no Computador
Informática · ISP / Redes
É 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. 😉