A missão de caçador de malware Brazuca - Expondo uma operação de fraude bancária


Um dos aspectos que o underground brasileiro é reconhecido mundialmente é devido a enorme quantidade (e não qualidade, graças a Deus!) das operações de fraude bancária conduzida por códigos maliciosos.
Resolvi escrever esse artigo para alertar os mais incautos sobre um tipo de operação bem antiga que por desconhecimento dos usuário ainda é lucrativa e funcional. Me intriga o fato de uma operação tão grosseira obter sucesso.
Estava eu estudando para a certificação do GREM (GIAC Reverse Engineering Malware) no feriado, e em uma das minhas pesquisas no google fui direcionado para o seguinte site por um link de publicidade do ad.fly: 
A não ser que a Adobe tenha fechado um contrato milionário com a zinimassa, tem caroço nesse angu. Em seguida é forçado um download automático do arquivo Flash_Upgrade.zip que está hospedado no 4shered.com 
Ao abrir o arquivo zipado, encontramos um script WSF (Windows Script File) com o nome Flash_Upgrade.wsf 
Nesse momento cabe um alerta para os mais incautos: 
  1. Se você não sabe o que é não execute. Ponto.
  2. Esse ícone azul que parece um "S" mas é um pergaminho não é um arquivo texto e ele pode ser malicioso. 
Apesar de todos esses sinais que há algo estranho, infelizmente essa técnica de engenharia social é muito efetiva. Em um estudo de caso anterior em que fiz um trabalho de conscientização sobre phish utilizando essa técnica, obtive mais de 80% de êxito. Acho que esse link azul tem poderes hipnóticos que afetam os usuários.
O golpe é tão rudimentar que o miserável não se deu nem ao trabalho de colocar uma rotina de identificação de navegador para identificar um possível alvo, pois ao abrir o site em um MacBook Pro, ele faz o download da mesma forma, expondo a operação a um usuário imune a esse tipo de script, pois arquivos WSF não rodam em outro sistema operacional diferente do Windows... E para facilitar ainda mais a vida desse futuro engenheiro reverso, o fera nem ofuscou o script. Até agora tá mais tranquilo que água de poço. Nesse momento dei partida na minha máquina virtual e comecei a dissecar o script do nosso contraventor camarada.
Uma das coisas mais divertidas em um reverse são as variáveis (rs). Geralmente remetem a órgãos sexuais, palavrão e putaria. Vide o job id que foi batizado de "XUPA".
Uma característica dessa operação é que ela é bem distribuída. hospeda seus artefatos em diversos domínios. Logo de cara temos uma variável chamada linkpac que aponta para o seguinte arquivo texto:
http://www.godolloi-serlegbolt.hu/css/tfiles.txt
Já deu pra ver qual a idéia do nosso meliante. Ele quer malandramente utilizar um proxy malicioso para ludibriar o usuário quando for acessar os bancos Itaú e Santander. Para entender mais sobre esse tipo de ataque, coloquei alguns links abaixo:
Essa técnica já está rolando no Brasil a algum tempo... Pela data dos artigos citados dá pra se ter uma noção. Nesse momento rodei o script na máquina virtual e ele começou a fazer o seu paranauê. Duas janelas do prompt de comando pipocaram e depois fecharam.
Em seguida o script coleta informações sobre Sistema Operacional, arquitetura, privilégios de usuário, Antivírus,  Plugin de segurança de diversos bancos (GBPlugin) e envia via GET para o seguinte site:
Quando ele ver isso vai curtir, deve pensar que é uma vovozinha descolada que usa internet bank com seu PC velhinho rodando XP com privilégios de administrador sem plugin de proteção e antivírus... Um sonho de consumo!!
Ao chamar esse script PHP com esses parâmetros, ele retorna a seguinte mensagem:
Added line: 177.184.XXX.XX|br|1479259282|Windows XP|X32|WINXP||Admin| 
Suspeito que esteja escrevendo em um arquivo texto. Então apelei para o dirBuster e URL Fuzzer pra ver se descobria algo oculto. De cara encontrei o arquivo http://acporcoa.com/contador/data.txt e um dashboard sem senha entregando as infecções de mão beijada em http://acporcoa.com/contador/
Nosso "brother" sagazmente utilizou o belo template de administração AdminLTE2 (porque o scammer paga mais pela interface bonita!), meteu uma estatística pra valorizar o trabalho e até o momento infectou aproximadamente 3401 máquinas. 
Só de sacanagem testei se ele tratava XSS na hora de carregar a lista... fiz a seguinte chamada: http://acporcoa.com/contador/controller.php?role=Admin&os=Windows&bits=x86&av=avg&host=John%20PC&plugins=bb,%3Cscript%3Ealert(%27o%20mal%20do%20malandro%20eh%20achar%20que%20todo%20mundo%20eh%20otario%27);%3C/script%3E
E não é que o danado não trata!? Ah se eu trabalhasse em um dos Bancos afetados... Dava pra fazer um ataque de web Inject com o beef e armar uma arapuca pro malandro quando ele fosse checar o dashboard... Mas isso daria muito trabalho e não tenho tempo pra ficar de tocaia. Como existe uma tabela que enumera os plugins e o campo plugin aceita qualquer texto, o XSS aparece na página principal (rs) No mínimo vai tomar um susto com a mensagem que deixei pra ele.
Em seguida o script baixa um arquivo zipado por FTP. 
Dentro do arquivo zipado temos 2 arquivos: check.exe e check.exe.config que aparentemente foi escrito em .NET que convenhamos é uma linguagem não muito respeitada no underground. Segundo o RDG Packer está ofuscado com o DotFuscator, entretanto essa informação não é muito confiável. A primeira tentativa vai ser utilizar o de4dot para deobfuscar o executável. Água, "Unknown Obfuscator".
Como não há preocupação com exposição, joguei o check.exe no VirusTotal. Ele retornou apenas 3/56 com detecções genéricas. Em seguida joguei no Malwr para executar uma análise dinâmica que também não retornou nada relevante.
Em seguida apelei para o bom e velho LordPE. Mandei um rebuild no executável que estava rodando na memória, logo deobfuscado, e torci para o codeReflect conseguir descompilar. Não deu para ver os formulários mas algumas rotinas ele desenrolou.
Fica claro que ele tem alguns formulários e muitos botões. Entretanto esses formulários ficam ocultos quando executado. Além disso ele tem algumas funções que buscam identificar as URLs dos bancos abertas que rodam a cada segundo:
Pela quantidade de botões, suspeito que seja um teclado virtual que aparece quando a página do banco é carregada. Além disso a persistência é feita no registro:
Após isso executei o wireshark pra ver pra onde o navegador estava mandando o tráfego ao abrir o site do Santander.
O domínio santander.com.br apontou para 167.88.5.218 por causa do proxy. Não fui atrás de quem é responsável pelo IP porque provavelmente é um VPS não monitorado gringo (US - Texas) e não agregaria valor técnico para a análise. Além disso o Santander não me deu nenhum centavo para expor esse golpe (#tmj Santander!! Sou correntista! desconta ao menos a minha taxa do cartão esse mês kkkk).
Ao abrir o site com o binômio Windows XP + Internet Explorer 6.0, a interface ficou meio zoada mas deu pra ver que o golpe ainda está ativo.
Agora passamos para um cenário de phishing. Onde o atacante vai buscar coletar credenciais de acesso. Como pode ser visto na imagem abaixo:
Ele busca coletar diversas informações como senha, conta corrente, agência e etc...
Passando para o código fonte do HTML, e dando aquela fuçada rápida no código fonte achei algumas linhas interessantes:
Ok, temos um painel de controle que usa API de conexão e heartbeat... Agora  começou a ficar interessante a bagaça. OBS: O site checa o navegador, no MAC não abre se não mudar o User Agent... Antes tarde do que nunca...
A cara do painel de controle é até bacana...
Agora vamos dar uma olhada nas informações que estamos passando para eles no script, depois retornamos para as API.
Por exemplo se chamarmos http://167.88.5.218/painel/api/client/fisica/connectele retorna uma mensagem de erro:
{"error":"\u00c9 obrigat\u00f3ria a indica\u00e7\u00e3o de um valor para 
o campo cpf."}
Acredito que seja uma forma de tratar erros e controle de código na página, porém não me aprofundei mais na análise.
Por fim, ficaram algumas lacunas por falta de tempo... Principalmente quanto ao executável que supostamente cria um teclado virtual, pois pela quantidade de botões e formulários eu acredito que não seja somente para criar persistência.
No momento estou sem uma VM adequada (a que tenho agora é XP que roda .NET menor que 4.5) para poder tratar melhor o executável com outras ferramentas para desobfuscar o código e utilizar disassemblers mais "BADASSes" como o dotPeek por exemplo.
Por fim, fiz essa análise de forma descontraída e sem maiores presunções foi redigida principalmente para expor a operação, praticar reverse e por prazer. Se você tem a mesma doença que eu e curte um reverse,  caso evolua mais na presente saga seria bacana comentar a publicação.
Sua crítica e sugestão também é muito importante! Pretendo fazer mais vezes esse tipo de artigo caso haja uma boa aceitação, pois acho que é uma forma de contribuir com a sociedade. 
Forte Abraço!