segunda-feira, 18 de outubro de 2010

Engenharia Reversa e Análise do Malware NetEmpresa.exe

Trojan-Banker.Win32.Banbra.vhu

Essa é a continuação do artigo anterior onde realizei a engenharia reversa de um malware Loader e descobri que ele fazia donwload de mais quatro malwares, leia aqui.

Conforme mencionado no outro artigo, o malware fazia download desses quatro arquivos:

http://www.linkonline.zxq.net/bnd.jpg
http://www.linkonline.zxq.net/ne.jpg
http://www.linkonline.zxq.net/bykill.jpg
http://www.linkonline.zxq.net/kil.jpg

Que eram salvos respectivamente no Windows como:

C:\Windows\system\Windbdn.exe (MD5: BAF510EEE8C37DD37672A2485B36A4FD)
C:\Windows\system\NetEmpresa.exe (MD5: A4D1CD06B721121162D50CCB863477B9)
C:\Windows\system\Plug.exe (MD5: 517D756228B7EB18D7D478CC0E93B340)
C:\Windows\system\PlugOff.exe (MD5: 940B089439BAE093DBA1423F1ECD6CE2)

Pelo nome mais sugestivo selecionei então o arquivo “NetEmpresa.exe” para ser feita a análise e engenharia reversa.

Submetendo o arquivo ao Exeinfo PE para identificar a presença de packer, novamente indicou a presença do “Thinstall 2.4x – 2.5x”.


Como eu já tinha a ferramenta de unpack “UnThinstall” fui diretamente a ela para remover a proteção do executável.


O “UnThinstall” gerou o arquivo “NetEmpresa.exe.dump”. Para ter certeza que a proteção realmente havia sido retirada, submeti o arquivo gerado ao Exeinfo PE novamente.


Agora ele retornou que o arquivo estava sem packer e que foi codificado com a linguagem de programação Delphi, essa é uma excelente dica pois posteriormente poderia tentar um descompilador de Delphi para obter mais informações do malware.

O arquivo gerado sem o packer era bem grande para um malware, 4,96 MB, para analisar todo o conteúdo iria demorar muitas horas pois havia muitas linhas de código, então resolvi ir direto ao ponto principal da investigação, que era encontrar strings suspeitas.

Para isso utilizei o programa AnalogX TextScan que tem a única função de mostrar todas as strings encontradas em um arquivo qualquer. Ao abrir o “NetEmpresa.exe.dump” nele foram encontradas 4247 strings.


Em uma análise mais detalhada nos resultados, encontrei várias strings interessantes, vejamos algumas com seu Offset e Conteúdo:

857768,C:\Documents and Settings\Administrador\Desktop\Sources 2010\Net empresa\montagem\Regsvr32.pas

Essa string é muito interessante pois mostra onde o fraudador salva os arquivos fontes do malware, o arquivo “Regsvr32.pas” confirma que se trata do Delphi, pois arquivos .pas (Object Pascal) são utilizados no mesmo.

Ainda, o fraudador utilizada o usuário Administrador do Windows e possui uma pasta no Desktop chamada “Sources 2010”, dentro dela possivelmente possui fontes de outros malwares, incluindo do NetEmpresa.

Caso a polícia chegue na casa desse indivíduo com um mandado de busca e apreensão e leve o computador dele para a perícia, posteriormente os peritos encontrando essas pastas no computador poderiam então associar que esse malware “NetEmpresa.exe” que possui o MD5 acima informado foi criado por essa pessoa, ou seja, estaria provada a autoria do crime.

863168,https://bradesconetempresa.com.br/ne/iniciasessao.asp?paramPag=acesso_conta

Nessa string podemos ver o alvo da fraude, o Banco Bradesco voltado para empresas, pessoas jurídicas. Geralmente essas URLs estão no código-fonte do malware por causa do método que eles utilizam para entrar em ação, que é o de fazer uma comparação com todas as URLs que a vítima está acessando e caso encontre o endereço acima ele entra em ação sobrepondo a tela original do site com sua tela falsa.

864704,GpfSGN9nTMbsRtCWP6KWS79lPt9XRM5pN4TYK6nrPsbkN45qRKDXS2vlOtW
864772,GpfSLqbEH4zNKrn4RtTkR6zXP6La851oRsToOMqWHcbiPNDSPs9fPMXrRcakP6ni
865144,GpfSLsbkP6ztSrnJUNDqPMqpCbn4GLCkPNXb
865192,N6HlTsviRs5aSsTYQG

Essas possivelmente devem se tratar de strings criptografadas por alguma função dentro o malware, seria necessário então encontrar no código a função de descriptografia para descobrir o que eles significam.

872492,INSERT INTO
872516, (NM_PC) VALUES ('
872556,SELECT TOP 1 ID_PC AS CO_MAQUINA FROM
872604, WHERE NM_PC='
872628,' ORDER BY ID_PC DESC
872660,CO_MAQUINA
872696, SET NM_TOKEN= '
872724,', ST_ENVIADO='1', DS_SENHA='
872764,', DS_CRT=:LOCAL1, DS_KEY=:LOCAL2 WHERE ID_PC=

Aqui um típico comando da linguagem de manipulação de banco de dados SQL. Isso no diz  que o malware deve fazer uma conexão com um banco de dados para onde ele deve enviar as informações das contas furtadas.

873808,sud.mpsuopd\tapeoja\:D
873860,opjtsfXuofssvD\tapeojA\ugptpsdjN\FSBAUGPT\
873912,fzf.ovsojA\23nfutwt\TAPEOJA\:D
873980,fzf.upidtj\23nfutwt\TAPEOJA\:D
874036,fzf.1efsZ\23nfutwt\TAPEOJA\:D
874092,fzf.2efsY\23nfutwt\TAPEOJA\:D
874148,fzf.CemfidtN\23nfutwt\TAPEOJA\:D
874208,fzf.zdoemfidtN\23nfutwt\TAPEOJA\:D
874268,fzf.emfidtxt\23nfutwt\TAPEOJA\:D

Essas possuem uma criptografia tosca ou caseira como citou um colega, quer saber o que elas significam? Leia o artigo Desafio: Strings Criptografadas em Malware Banker.

Agora a string mais significativa que encontrei estava no final do arquivo, até fiquei surpreso por ela estar em texto simples sem criptografia, deve ter sido uma falha do fraudador que esqueceu de escondê-la no código-fonte. Veja abaixo onde a encontrei:

Deixando ela mais legível *:

Provider= SQLOLEDB.1;
Password= 999999yz;
Persist Security Info= True;
User ID= database;
Initial Catalog= database;
Data Source= sqlserver.servidor.com

* dados fictícios.

Exatamente a string de conexão com o banco de dados onde o malware envia o que conseguiu capturar. Trata-se de um banco Microsoft SQL Server.

De posse dessas credenciais consegui conectar ao banco de dados e vi que várias pessoas (na verdade contas de empresas) já havia caído no golpe. Imaginem o estrago que os bandidos podem fazer em uma conta de empresa.

A tabela que armazenava as informações furtadas se chamava “TB_BDN_loading” e possuía essas colunas:

ID_PC, DATA_HORA, NM_PC, ST_ENVIADO, ST_CORRETO, NM_TOKEN, NU_TOKEN, DS_SENHA, DS_CRT, DS_KEY

Não sei ao certo como funciona o esquema de certificado digital e token no Bradesco mas vi que o malware era capaz de capturar até esses dados. Isso nos mostra que mesmo as tecnologias mais complexas estão suscetíveis a fraudes.

Tudo isso foi possível descobrir apenas analisando as strings encontradas no código-fonte do malware.

Como eu sabia que a linguagem utilizada era o Delphi, resolvi então submeter o arquivo ao descompilador de Delphi chamado DeDe, que geralmente apresenta bons resultados.


O DeDe também permite salvar o projeto que ele gerou para depois abrir no próprio Delphi, lógico que é impossível ele conseguir gerar o mesmo código-fonte original, mas o que ele faz já ajuda bastante na análise pois permite visualizar alguns formulários, componentes, Units, etc.

Utilizei essa opção para salvar o projeto para abrir no Delphi.


O projeto gerado foi nomeado de “Explorer.dpr”, que é o nome original que o fraudador utilizou. Ao abrí-lo no Delphi e usar a opção de visualizar os formulários do projeto, foi indicada a existência de um form chamado “TkuPricipal”.


Ao abrir o formulário fiquei até surpreso com o nível de sofisticação do fraudador. Ele criou exatamente a mesma tela do Internet Explorer quando abre o site do Bradesco, usou os componentes do Delphi para simular o site verdadeiro. Veja a imagem abaixo:


No título do formulário ele até colocou “Bradesco – Microsoft Internet Explorer” e no topo da janela inseriu uma imagem de um print screen do IE original abrindo o site do Bradesco.

Como eu já tinha dito essa tela falsa do Internet Explorer que ele criou no Delphi é sobreposta a original quando a vítima acessa a URL do Bradesco já mencionada anteriormente, isso faz com que as pessoas nem percebam que estão sendo enganadas.

É isso aí, dúvidas e comentários são bem-vindos.

Abraços!

10 comentários:

  1. Muito bom.

    Por acaso, é por esse motivo e outros que não uso IE!

    ResponderExcluir
  2. Muito Bom!! Lembrei da minha época de faculdade.

    ResponderExcluir
  3. Ótimo estudo e postagem!
    Nunca tinha visto uma abordagem deste tipo, técnica mais ao mesmo tempo simples para entender (em casos de usuários não técnicos).
    Mais complementando o post acima. Este foi apenas um caso utilizando o IE, por mais que não goste do navegador (Particularmente), este navegador não é único vulnerável a ataques. Cada dia mais e mais todos os navegadores, sistemas em geral ficam vulneráveis, por que todos os dias acham mais brechas. Os patches de atualizações de segurança estão batendo recordes, e isso acaba sendo preocupante pelo número de brechas que são encontradas.
    Bom, parabenizo pelo site, e pelas informações postadas. Aguardo o próximo post.

    ResponderExcluir
  4. Se quiser dar uma olhada em mais um caso:

    http: // 216.119.146.50:8083 /acess/

    Coloquei espaços na URL para ver se não é bloqueada.

    Foi inserido o html através de um iframe em uma página.

    Eu parei no ponto de tentar descompilar o flash.exe, que parece ser um delphi.

    ResponderExcluir
  5. Ronaldo, de que site se pode baixar a UnThinstall, seguramente?

    ResponderExcluir
  6. Há alguma vantagem a mais em utilizares o Exeinfo PE ao invés do PEiD? Ambos não exibem as mesmas informações?

    ResponderExcluir
  7. Anônimos,

    Pode baixar o UnThinstall nesse endereço:

    http://dl.dropbox.com/u/15234967/unthinstall.exe

    Um detalhe é que as vezes ele não funciona se a placa de rede estiver desconectada.

    Para identificação de packers o Exeinfo PE é bem mais completo, apresenta muito mais informações e ainda dicas para encontrar o unpacker. Já o PEiD é mais fraco na identificação de packers, muitas vezes ele diz que não encontrou nada mesmo o arquivo estando compactado. Em contrapartida o PEiD é o mais conhecido e aceito no meio.

    Abraços!

    ResponderExcluir
  8. cara muito bom mesmo sempre quando tenho um tempinho dou uma passada aqui pra ler suas publicações valeu mesmo ! ótimo blog =)

    ResponderExcluir
  9. Olá,muito bom,ótimo,você está de parabéns engenharia reversa me interessa bastante.

    ResponderExcluir
  10. alguem sabe onde eu acho esse unpack “UnThinstall”

    ResponderExcluir

Related Posts Plugin for WordPress, Blogger...