No artigo anterior vimos a análise de um arquivo de 66 KB que escondia algumas informações interessantes criptografadas em seu código. Nessa segunda parte daremos sequência à análise buscando novas informações desse esquema.
Nos dados encontrados havia várias tags que faziam referências a diversas URLs, através dessas tags o malware conseguia encontrar as informações que precisava, vamos analisar algumas:
[Imagens]
Caminho=http://i412.photobucket.com/albums/pp205/imagem_modular/
Essa URL ainda está online, como o próprio nome da tag diz trata-se de um repositório de imagens. Ao acessá-la encontramos imagens copiadas de sites bancários como botões, logotipos, fundos, etc. Logo podemos imaginar que devem ser usadas pelo malware para montar golpes de phishings bancários.
[Update]
Link=http://belezaeproeza.tempsite.ws/newfolder/
Veremos posteriormente que essa URL era utilizada pelo malware para buscar por atualizações.
[Reenvio]
Link=reenvio.vetnew@gmail.com
Reenvio0=
http://212.124.117.11/~matroska/sender/contacts/index.php;
http://212.124.117.11/~matroska/sender/mailer/hotmail.php
Reenvio1=
http://212.124.117.12/~matroska/sender/contacts/index.php;
http://212.124.117.12/~matroska/sender/mailer/hotmail.php
Reenvio2=
http://212.124.117.13/~matroska/sender/contacts/index.php;
http://212.124.117.13/~matroska/sender/mailer/hotmail.php
...
Reenvio9=
http://212.124.117.20/~matroska/sender/contacts/index.php;
http://212.124.117.20/~matroska/sender/mailer/hotmail.php
Vimos no artigo anterior que dentro do próprio malware havia uma mensagem de phishing, baseado nisso imagino que esse phishing (SPAM) é enviado através dessas URLs pelas páginas PHP. O próprio caminho da URL diz isso “/sender/mailer/hotmail.php”.
Nota-se que são utilizados servidores próprios para isso, a faixa de IPs 212.124.117.11 ao 212.124.117.20. É um esquema montado somente com essa finalidade, diferente do que costumamos encontrar onde geralmente invadem um site e armazenam esses arquivos maliciosos sem o conhecimento dos administradores.
[EscapeFtp01]
Servidor=[EDITADO].dominiotemporario.com
Usuario=[EDITADO]
Senha=tda50103
Pasta=/public_html/escapes/
[EscapeFtp02]
Servidor=ftp.terragyn.com
Usuario=dantas
Senha=833876
Pasta=/public_html/
[EscapeFtp03]
Servidor=74.220.215.219
Usuario=carrosbr
Senha=GT54@!xzjh
Pasta=/public_html/escapes/
Três servidores de FTP também próprios para o esquema, talvez sejam de backups (escape?). Com as credenciais de acesso tão expostas assim fica fácil acessá-los. Veremos logo mais.
[Escapes]
Escapes0=http://www.[EDITADO].com.br/escapes/vcom/vcom.html
Escapes1=http://www.terragyn.com/vcom/vcom.html
Escapes2=http://74.220.215.219/~carrosbr/escapes/vcom/vcom.html
Novamente os Escapes aqui, utilizam o mesmo nome “vcom.html” nas três URLs. Aqui começa algo interessante. Acessei a primeira URL e apareceu essa página:
Uma mensagem aparentemente inofensiva dizendo que o conteúdo ainda não foi publicado. Agora veja o que acontece se mandamos selecionar toda a página com Ctrl + A:
Um código estranho aí embaixo, vamos ver o código-fonte da página:
Com qual intenção alguém colocaria em um página HTML uma fonte na cor branca em um fundo branco?
<font color='white'>§Xilpty17DGKO§</font>
Pra mim isso só quer dizer uma coisa, tentar esconder informações. O que acontece se a gente usar essa string estranha “Xilpty17DGKO” como URL?
Abriu um arquivo com um código hexadecimal bem extenso, fazendo download dele e abrindo no Bloco de Notas sua aparência é essa:
Estão lembrados do artigo anterior onde havia um código hexadecimal bem parecido com esse?
Apesar de não ser o mesmo código a estrutura é bem semelhante, precisamos descobrir uma maneira de revelar o que ele esconde.
O malware que analisamos escondia esse código na seção Resources do executável, podemos tentar alterar o executável original e inserir esse código novo no mesmo endereço do anterior para ver se conseguimos que o malware descriptografe para nós.
Isso pode ser feito de várias maneiras, fiz da mais simples possível, abri o arquivo do malware em um editor hexadecimal (HxD), localizei o bloco de endereços onde ficava a string criptografada original (0x1DC80 ao 0x21C7F), selecionei e colei sobre ele o código novo.
Um detalhe, no editor que uso existe a opção “Colar inserindo” e “Colar sobre”, a primeira exclui o conteúdo selecionado e insere o novo, isso faz com que mude o tamanho do arquivo caso as strings sejam de tamanhos diferentes, e mudando o tamanho vai dar erro no executável. A segunda opção não muda o tamanho, só cola sobre a seleção, sobrescreve o que tiver naquele espaço, foi a opção que utilizei.
Vemos abaixo que a segunda string era menor (em vermelho) e não sobrescreveu todo o conteúdo da antiga, mas mesmo assim vamos tentar.
Salvei o arquivo modificado com outro nome, abri o OllyDbg e mandei executar. Ao observar a pilha encontrei a string nova descriptografada corretamente:
Fazendo o mesmo procedimento descrito no artigo anterior obtive os dados descriptografados, esse veio ao contrário, primeiro as informações dos servidores com as tags e depois a mensagem de phishing. As informações dos servidores eram as mesmas, já o e-mail de phishing era outro. No anterior o assunto do e-mail era o Lula e esse é a Larissa Riquelme, melhorou um pouco. :)
Servidores de FTP
Como disse anteriormente tínhamos três servidores de FTP com senhas e usuários, entrei pra dar uma olhada e pelo que percebi eles hospedavam sites de fachada para esconder as verdadeiras intenções, armazenar mensagens de phishing para distribuição de malwares. As pastas encontradas foram essas:
Essas pastas seguem o mesmo esquema explicado agora a pouco da “vcom.html”, cada uma tem uma página HTML supostamente inofensiva que esconde um código para acessar o arquivo criptografado em hexadecimal.
Por exemplo, a primeira pasta “flashback” tem a página flashback.html e um arquivo chamado “QUXZZbbdddee” com o hexadecimal. Os dados descriptografados encontrados nesse são um pouco diferentes, por exemplo:
[Servidor001]
Servidor=http://189.1.171.129/~flash/
Interface=data.php
...
[Reenvio]
Link=reenvio.flashback@gmail.com
Reenvio0=http://212.124.118.94/~gogoboy/contacts/index.php;
http://212.124.118.94/~gogoboy/mailer/hotmail.php
Reenvio1=http://infotube.com.br/templates/beez/contacts/contacts/index.php;
http://infotube.com.br/templates/beez/contacts/mailer/hotmail.php
Reenvio2=http://212.124.121.130/~a001/sender/contacts/index.php;
http://212.124.121.130/~a001/sender/mailer/hotmail.php
…
[IpServidor01]
Servidor=189.1.171.129
Usuario=flash_user
Senha=1q2w3e4r
IP=flash_db
...
E a mensagem de phishing também é outra:
Com tudo isso conseguimos imaginar o tamanho dessa rede de envio de phishings e distribuição de malwares, são dezenas de servidores web e dezenas de mensagens diferentes de phishing. Daria para fazer esse processo de descriptografia com cada uma dessas pastas do FTP.
Tendo base todas as informações coletadas e mais algumas descobertas na engenharia reversa podemos tentar traçar uma linha de execução para o malware.
O que o malware faz?
1- Cria o arquivo “%SYSTEM%\javan.dll”;
Esse arquivo não foi criado na minha análise mas pelo código foi possível constatar isso, assim como no site de análise de malware ThreatExpert. Ele confirma a criação dessa DLL e dá algumas pistas do que ela faz, registra um Browser Helper Object (BHO) que é um plugin para o Internet Explorer, através dele o malware consegue manipular a comunicação do IE.
2- Cria o arquivo “%WINDOWS%\Media\joys.cpl”;
3- Cria o arquivo “%WINDOWS%\Media\lsass.cpl”;
4- Carrega o diretório “svchost” da seção Resources e salva em “C:\WINDOWS\inf\asynceql.inf”;
5- Descriptografa o conteúdo encontrado na seção Resources;
6- Busca pelas tags “[Update]” e “Link” no conteúdo descriptografado;
7- Acessa a URL de Update encontrada: http://belezaeproeza.tempsite.ws/newfolder/
8- Lê um arquivo da Internet através da função InternetReadFile da API wininet.dll;
Essa função não é comumente utilizada para acesso a Internet, para acessar uma URL por exemplo é utilizada a função InternetOpenURL, já a InternetReadFile como o próprio nome já diz serve para ler o conteúdo de um arquivo na Internet. Muito propícia para o esquema de arquivos ocultos que acabamos de descobrir.
O malware acessa a página HTML e depois usa essa função para ler o conteúdo do arquivo oculto, aquele código hexadecimal.
9- Executa o comando “regsvr32 'C:\WINDOWS\system32\javan.dll' /s” para registrar a DLL;
Na imagem a seguir é possível ver o comando utilizado para registrar a DLL como um BHO do Internet Explorer.
10- Cria o arquivo “C:\WINDOWS\system\mkp.dll” e salva dentro dele a string “ENV”.
Conclusão
Essas possivelmente não são todas as funções do malware mas já dá para termos uma ideia de como ele funciona. Nos dois artigos vimos quanta informação é possível extrair de um arquivo tão pequeno e até como podemos utilizá-lo para nos revelar segredos.
Fazendo alusão às investigações criminais tradicionais que com um fio de cabelo chega-se a um assassino, na investigação digital ocorre a mesma coisa, com um arquivo de poucos kbytes pode-se chegar a uma grande rede dedicada ao crime.
Dúvidas, comentários, sugestões? Não deixa de escrever.
Até a próxima!
Ronaldo P. Lima