sábado, 26 de dezembro de 2015

Hacking Embedded | Hacking UTSTAR iAN-02EX ATA

Introdução:


Saudações a você que lê esse post. Tempo que não posto algo né?


Atualmente trabalho em uma empresa de TI/telefonia VoIP e por lá havia uns equipamentos (ATAs) parados. Motivo!? Estavam bloqueados e ninguém sabia a senha do painel. Conversando com meu chefe ele me deu alguns desses equipamentos pra brincar :D
Valeu Sl4ck!


O que é uma ATA?

Bom, o meu objetivo nesse post não é explicar o que é uma ATA e sim demonstrar como consegui acesso ao painel de administração do equipamento. Mas darei uma breve explicação de o que é:

Uma ATA (Analog Telephone Adaptor) como o próprio nome já diz, é um adaptador que converte os sinais de telefonia analógica para digital, podendo o mesmo ser transmitido através da internet por meio de protocolos de voz (SIP, I-AX, MGCP e etc).  

Podendo converter uma linha de telefonia convencional como um tronco que poderá ser usado por alguns PABX virtuais, tais como Asterisk, FreePBX, Elastix, entre outros.
Ou contrário, convertendo sinais de telefonia digital para ser usado por um telefone convencional.

A ATA na qual executarei o processo de desbloqueio, pode funcionar dos dois modos. No caso é uma ATA com duas portas FXS (Para serem conectadas a aparelhos de telefones convencionais) e uma FXO (que pode ser conectada na sua linha telefônica que vem da rua).

Recon

Pois bem, esse é o maldito equipamento bloqueado por Satanás unbreakeable.



Com as informações acima em mãos (modelo, fabricante, serial), iniciei uma vasta busca pela internet a procura de algo que pudesse me ajudar a realizar o desbloqueio.

Tentativas Anteriores:

Procurar pelo manual e por senhas default [FAIL]
-Até encontrei o manual, porém os códigos e senhas defaults não funcionavam.

Procurar pelo modelo do equipamento e tentar encontrar alguém com o mesmo problema.
-Ok, encontrei alguns posts que 'ensinavam' a desbloquear o equipamento com alguns códigos digitados através de um telefone conectado em uma de suas portas. Porém tal procedimento só funcionava nas ATAs fornecidas por determinadas operadoras :/ Logo... [FAIL]

A partir daí já vi que não encontraria nada que me ajudasse. Pois é, a partir de agora, teria que colocar a mão na massa.

l3ts pl4y

Depois de bater a cabeça, pensando por onde poderia começar. Me veio na mente o funcionamento de alguns equipamentos do gênero. IP Phones, Cable-modems...

Ao iniciar, esses equipamentos buscam um arquivo de configuração em um servidor TFTP para manterem os sistemas atualizados remotamente. Sem necessitar de intervenção humana para se manterem atualizados.

Pois bem, vamos ver o tráfego.


Nesse laboratório, utilizarei um dispositivo que montei em uma oficina no Garoa Hacker Clube em meados de 2013. Um Throwing Star LAN Tap.

Deixando claro, que não é totalmente necessário fazer uso do TAP, só usei por facilitar meu trabalho na hora de rodar o wireshark :D.
Eu poderia muito bem configurar minha placa de rede pra compartilhar minha conexão,

Conectado de modo que pudesse receber todos os pacotes enviados pela ATA, comecei a farejar os pacotes.



Sniffing

Como havia pensado, ele realmente busca um arquivo de configuração em um servidor TFTP.


Ok, tudo seria mais fácil se esse servidor respondesse com o arquivo de configuração para que pudéssemos capturá-lo e alterá-lo de acordo com a nossa necessidade, mas o maldito servidor estava indisponível. Fazer o que né, lei de Murphy em ação.

Como não havia outro equipamento desbloqueado pra pegar o modelo do arquivo de configuração, só me restou buscar pelo nome do arquivo no Google e por PURA SORTE o encontrei.




Dissect config file

Vamos dar uma olhada no arquivo.




Logo no inicio do arquivo, vemos que ele também possui um servidor TFTP onde busca as suas configurações. Aqui é interessante deixarmos o endereço em 0.0.0.0 para que não tenhamos que fazer o processo de desbloqueio outra vez.

Mais abaixo, encontramos uma informação útil no arquivo, o código para reiniciar o aparelho com suas configurações de fábrica.



Descendo mais um pouco, o campo de senha do supervisor (senha de admin). Alterei pra uma senha de minha preferencia :)



Bom, agora já podemos pensar em enviar esse arquivo para a ATA.

Com as informações obtidas nesse processo:

  • IP do servidor TFTP - 2xx.xxx.xxx.x07
  • Nome do arquivo de configuração - U53V004.00.00_UTSTARCOM-GENERAL.CFG
  • Modelo de Arquivo de configuração editado ao nosso gosto.
Já podemos dar inicio ao próximo passo.

Uploading new config file

Agora é simples.
Para fazermos o upload, necessitaremos criar um servidor TFTP com o mesmo endereço de IP do servidor o qual a ATA busca sua configuração ao iniciar.


No meu caso criei um servidor DHCP pra oferecer endereços na mesma range do servidor TFTP 200.xxx.xxx.0/24 e defini o IP da minha placa de rede, como o endereço do bendito servidor de configuração.

Configuração do servidor DHCP

# apt-get install dhcp3-server
# vim /etc/dhcp/dhcpd.conf



Agora definimos o endereço de nossa placa de rede para o mesmo endereço do servidor com o comando ifconfig.

#ifconfig eth1 20x.xxx.xxx.07 netmask 255.255.255.0

Em seguida, reiniciamos nosso servidor DHCP;
# /etc/init.d/isc-dhcp-server restart



Configuração do servidor TFTP

# apt-get install tftpd-hpa
# vim /etc/default/tftpd-hpa

Aqui eu defini o endereço do servidor tftp em /utstar.


Tudo certo até aqui.



Testando TFTP Server

Finalmente, agora vamos testar nosso servidor TFTP pra ter certeza que está tudo funcionando nos conformes.



Bom, parece que está tudo OK.
Vamos começar.

Showtime!

Para ficar mais emocionante, vou abrir o wireshark pra ver o arquivo de configuração sendo baixado.

Dando uma olhada no tráfego...


Utilizando a string "tftp" no wireshark,  podemos ver nosso arquivo de configuração sendo enviado.





Resultado Final:









Após de ter feito o upload do arquivo na ATA, liguei a mesma ao meu roteador e acessei pela minha máquina.

Vamos tentar fazer login com as credenciais do arquivo de configuração que enviamos.
User: supervisor
Pass: rogy153hasbeenhere




E ...




Sucesso!


Curiosidades

Algumas operadoras utilizam esse mesmo recurso para definir a largura de banda de seus modems. Ou seja, com um processo semelhante a esse, você mesmo poderá definir a largura de banda do seu cable-modem. Processo também conhecido por Uncap.
Já realizei esse processo e comprovo sua eficácia. Mas isso é papo pra outra hora, não!?

Até a próxima pessoal.


Greetz for Sl4y3r_0wn3r & SlackDummies.





tags:Hacking telephony, phreaking, phreaker, UTSTAR, iAN-02EX password, wireshark, tftpd, dhcpd, VoIP

terça-feira, 18 de agosto de 2015

Enviando e-mail com Netcat/Telnet/OpenSSL - Com e sem SSL/TLS

Manhã de terça novamente, já imaginam né?...

Bom, hoje vou mostrar como enviar e-mails de uma maneira não tão convencional, porém, bastante útil em algum momento ou script.
Ao invés de utilizar todas essas linhas, também podemos usar o comando "mail", porém não é tão divertido quanto vc conversar com o servidor SMTP.
No final do post há a explicação de cada comando utilizado.


#1 - Método com Telnet descriptografado
telnet smtp.email.com 25

#2 - Método com NetCat
nc smtp.email.com 25

#3 - Método com OpenSSL
openssl s_client -crlf -connect smtp.email.com:465

#4 - Método com STARTTLS
openssl s_client -starttls smtp -crlf -connect smtp.email.com:587

Ao executarmos um dos três comandos acima, receberemos a mensagem
220 smtp.mail.yahoo.com ESMTP ready

Ok, Agora podemos conversar com o servidor.

Nesse post vamos usar o método 4 e pegar como exemplo o  servidor SMTP do Yahoo!.

As linhas em vermelho é o que o usuário irá digitar.

openssl s_client -starttls smtp -crlf -connect smtp.mail.yahoo.com.br:587

220 smtp.mail.yahoo.com ESMTP ready

Após isso digitaremos:
EHLO localhost

Teremos como saída:


250-smtp.mail.yahoo.com
250-PIPELINING
250-SIZE 41697280
250-8 BITMIME
250 AUTH PLAIN LOGIN XOAUTH2 XYMCOOKIE
AUTH PLAIN 
334
XDBzZXVsb2dpbkB5YWhvby5jb20uYnJcMHN1YXNlbmhh*/ <---Aqui inserimos o usuário e senha codificados em base64---- 
Comando para encodar no linux: echo -ne "\0email@server.com\0senha" /*
235 2.0.0 OK
MAIL FROM: <email_usado_no_login@yahoo.com.br>
250 OK , completed
RCPT TO: <destino@gmail.com>
250 OK , completed
data
354 Start Mail. End with CRLF.CRLF
SUBJECT: Testando um, dois, três

Digite a mensagem aqui e ao fim dela, pule uma linha, adicione um ponto e aperte enter.
Atenção ao ponto ali embaixo.




Se ocorreu tudo corretamente, receberemos a seguinte mensagem

250 OK , completed

Para sair do terminal, basta digitarmos quit

Entendendo os comandos:
Com telnet:

telnet mailserver.com 25 
--Com o telnet, estamos simplesmente definindo o servidor e a porta a qual desejamos conectar. Podemos usar o telnet para N coisas, inclusive enviar email :v

Com openssl:

openssl s_client -crlf -connect endereco_server:porta


openssl s_client -starttls smtp -crlf -connect smtp.email.com:587

#Parâmetros:

 s_client - Definimos que queremos um cliente SSL
-crlf - Carriage Return Line Feed - Pula linha e retorna o cursor para o início
-connect - Aqui definimos o endereço do servidor e a porta
-starttls smtp - Definimos que queremos negociar uma conexão com STARTTLS utilizando o protocolo smtp

##Comandos SMTP##

EHLO - Identifica o emissor da mensagem
AUTH PLAIN - Usado para inserirmos nosso login e senha encodado em base64. Podemos encodar da seguinte forma em um outro terminal: $echo "\0email@server.com\0senha" | base64

MAIL FROM: <email@server.com> - Definimos o e-mail de origem utilizado
RCPT TO: <destino@server.com> - Definimos o e-mail de destino
DATA - A partir daqui já podemos começar a escrever a mensagem.
SUBJECT: - Nessa linha adicionamos o assunto da mensagem e após isso, apertamos o enter duas vezes  para escrevermos nossa mensagem.
. - Atenção ao PONTO, ele define o Fim da mensagem .


Bom pessoal, é isso
Dúvidas, sugestões, xingamentos, opção de comentário ta aí
flw

sexta-feira, 14 de agosto de 2015

#1 Portas Lógicas

Saudações!
Aqui tentarei explicar de uma maneira bem didática sobre o que são portas lógicas e para que serverm

O que são Portas Lógicas?
Portas Lógicas, também conhecido por circuitos lógicos, são dispositivos que operam com somente uma ou multiplas entradas e tem como saída, somente uma.
Cada porta lógica tem uma função que pode se adequar melhor ao seu circuito. Exemplo Rápido:
As lampadas de emergência (aquelas que ficam em escadas) podem ser consideradas um exemplo da porta NOT(Inversora).
Porque quando falta luz, ela acende. E vice-versa






A partir daqui, para melhor didática e entendimento do texto, assumiremos os seguintes termos:

terça-feira, 4 de agosto de 2015

0c10s0 + Netcat

Hail,
Estava jus ao título desse post em uma manhã de terça quando brincava com o netcat. 
netcat pra cá, netcat pra lá, e saiu uma brincadeira legal.

O que acontece é o seguinte:
Em um lado eu coloco o netcat pra escutar uma porta e no outro, faço uma requisição HTTP através de algum navegador. O navegador vai fechar uma conexão com o netcat (Ah vá, é mesmo?).
O curioso é que depois do navegador ter fechado a conexão, a página não vai parar de carregar enquanto vc não sair do netcat, dar um ^C ou chutar o server.(really?)

E o que isso significa?
O navegador vai ficar como se estivesse carregando até você dropar a conexão.
Nesse meio tempo, você pode ir escrevendo uma página html linha a linha pelo netcat enquanto o navegador vai imprimindo tudo na tela cada vez que vc aperta enter.

Comando netcat:

nc -lvp 8080

Parâmetros:
-l --listen, ou seja, trabalha escutando tudo que vier 
-v  --verbose, vai te mostrar tudo o que está acontecendo na tela
-p --port = define a porta para escuta, no caso seria a 8080

How-to?

Execute o comando acima e vá no seu navegador e coloque o ip e porta do server onde está o netcat.
Assim que você ver no netcat o HEADER da requisição HTTP, já pode começar escrever sua página.

Pra que diabos vou usar isso?
Ah brother, sei lá, use a imaginação.
Imagina que seu webserver crashou, não tem nenhum outro webserver instalado e vc não pode deixar de mostrar alguma coisa na tela de quem tenta acessar o site. Usa o netcat pra 'hospedar' um html informando que o site está em manutenção enquanto vc tenta arrumar o webserver. Antes uma página tosca do que timeout.



tags;
webserver com netcat, html and netcat



whoami?

Salve! E ae galera do mal, de boa? Me chamo Ygor (a.k.a Rogy153, criador do Brasil Pentest) e resolvi iniciar esse blog pra compartilhar o pouco que sei com vocês.
Aqui pretendo fazer postagens relacionadas com eletrônica voltada a hacking, mas também não se limitando SOMENTE a isso, vou postar o que der na telha e achar legal. Não se espantem se ver uns posts falando sobre MUX, DEMUX, ADC, shift register, modulação de frequência (aquelas ondinhas maneiras que a gente vê no osciloscópio) e etc...