Esse
caso inicia-se com a análise de um arquivo malicioso de apenas 66 KB e
termina com a descoberta de um grande esquema de distribuição de
malwares e envio de phishings envolvendo dezenas de servidores.
Utilizaram-se
de criptografia para manter o esquema longe dos olhos de curiosos mas
mesmo assim foi possível descobri-lo. A vantagem de analisar malwares é
que geralmente em algum momento eles vão tentar “ligar pra casa” (call
home), isto é, tentar se conectar com algum servidor para atualização ou
envio de dados capturados, é aí que interceptamos e descobrimos as
informações mais interessantes.
Então vamos começar com a análise!
Coleta e identificação do artefato
Esse veio através de um phishing prometendo fotos inéditas da revista Playboy:
Ao clicar no link do e-mail foi feito download do arquivo:
doxsc74635.zip (MD5: 462fca2472b838992de865e303255f52)
Ao ser descompactado gerou:
doxsc74635.com (MD5: e26e1b50e94ed527bc30b39c1f50b550)
Usando
o PEiD para identificar o arquivo foi encontrada a presença do
compactador UPX. Para removê-lo é muito fácil basta utilizar a opção
“-d” do próprio UPX:
Agora sim o arquivo estava pronto para a análise, o PEiD identificou a linguagem de programação utilizada como Borland Delphi.
Descobrindo segredos
Dica: Na etapa da análise do malware estou utilizando o IDA Pro 5.0 Freeware em conjunto com o OllyDbg.
O Olly acho mais prático para realizar o debug do malware e o IDA é
muito melhor para visualizar as estruturas de código assembly, gerar
gráficos, editar, renomear funções e inserir comentários. Desta forma
uma ferramenta complementa a outra.
Ao buscar pelas strings no malware a primeira coisa que me chamou atenção foram as strings criptografadas.
Já
sabendo bem como funciona esse processo de criptografia de strings
resolvi descriptografá-las antes de continuar. O método que utilizei foi
o de encontrar a função que realiza esse processo dentro do malware,
alterar o código assembly e colocar breakpoint no retorno para pegar o
resultado no debug. Para mais informações veja os slides ou o vídeo da
minha palestra “Descriptografando Strings em Malwares”.
Adicionei
ao código do IDA em forma de comentários as strings obtidas em texto
simples no OllyDbg. Abaixo é possível ver como ficaram essas alterações
em azul mais claro:
Além
dessas strings teve uma outra que me chamou atenção, seguia um padrão
diferente utilizando apenas números hexadecimais e possuia cerca de 16
KB de tamanho, isso dá mais de 16 mil caracteres!
Outro detalhe, no campo Address vemos que ela está na seção .rsrc
(Resources) do executável, não é um lugar muito comum de se encontrar
uma string de usuário, geralmente elas ficam nas seções .text e .data. A
seção .rsrc costuma armazenar bitmaps, dialogs, ícones e strings do
sistema.
Com
um editor de executáveis (arquivo PE) podemos visualizar todas as
seções de um arquivo, duas ferramentas que fazem isso são o CFF Explorer e o PEBrowse Professional.
Abaixo vemos que dentro do diretório Resources há um tipo denominado
“HTMLFILE” e dentro dele há o SVCHOST que é o nome da resource que
armazena a string que havíamos encontrado.
Voltando
ao executável, ao verificarmos a lista de imports da biblioteca
KERNEL32.DLL encontramos referências a várias funções que lidam com a
seção resources: FindResourceA, LoadResource, SizeofResource,
LockResource e FreeResource.
Buscando as especificações da função FindResource no site da Microsoft vemos que ela recebe três parâmetros:
FindResource(hModule, lpName, lpType);
hModule: ponteiro para o arquivo PE, ou o header do arquivo;
lpName: nome da resource;
lpTYpe: tipo da resource;
Sabendo disso conseguimos encontrar dentro do malware onde esse recurso é utilizado, primeiro com a função FindResource para localizá-lo:
O retorno em EAX é um ponteiro para SVCHOST. E depois utilizando a LoadResource carrega a string para EAX:
Após a chamada dessas funções que eu nomeei de CarregaRESOURCE há a referência a um caminho de arquivo e logo depois o uso da função CreateFileA também da API KERNEL32.DLL conforme podemos ver abaixo:
Com isso presumo que essa string criptografada é salva no arquivo:
C:\WINDOWS\inf\asynceql.inf
Podemos confirmar isso com a análise dinâmica executando o malware e monitorando o processo, foi exatamente o que o Process Monitor nos mostrou:
E lá estava o arquivo salvo:
Agora
falta o principal, descobrir o que esse código esconde. Ao invés de
localizar a função que faz a descriptografia dentro do malware resolvi
executá-lo no OllyDbg e observar os valores na pilha (que é o local da
memória utilizado pelas funções), ela é visível no quadrante inferior
direito da janela principal do programa.
Então
quando o malware fizer o processo para reverter o código talvez salve
na pilha o resultado da função. Abri o arquivo e executei (F9),
verificando a pilha encontrei o que parece ser a string
descriptografada:
Mandei exibir a memória referente a essa string clicando com o botão direito em cima do endereço e selecionando “Follow in Dump”. Para melhor visualizar copiei o conteúdo e colei em um editor hexadecimal (HxD) mandando exibir apenas o Texto.
Na parte superior vemos o que parece ser o código HTML de um e-mail phishing, inclusive com assunto da mensagem:
Já na parte inferior encontramos informações mais interessantes, vários endereços de servidores web, inclusive com senhas:
Formatando o conteúdo é possível visualizar a mensagem de phishing gerada onde há um link para outro malware:
O próprio malware armazena uma outra mensagem de phishing, possivelmente para atuar como spammer.
Os demais dados descriptografados após o HTML são esses:
[Servidor001]
Servidor=http://189.1.171.125/~vcom/
Interface=data.php
[Servidor002]
Servidor=http://189.1.171.125/~vcom/
Interface=data.php
[Servidor003]
Servidor=http://189.1.171.125/~vcom/
Interface=data.php
[Servidor004]
Servidor=http://189.1.171.125/~vcom/
Interface=data.php
[Servidor005]
Servidor=
Interface=
[Servidor006]
Servidor=
Interface=
[Proprietario]
Nome=VCOM
[Imagens]
Caminho=http://i412.photobucket.com/albums/pp205/imagem_modular/
[Update]
Link=http://belezaeproeza.tempsite.ws/newfolder/
[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
Reenvio3=http://212.124.117.14/~matroska/sender/contacts/index.php;http://212.124.117.14/~matroska/sender/mailer/hotmail.php
Reenvio4=http://212.124.117.15/~matroska/sender/contacts/index.php;http://212.124.117.15/~matroska/sender/mailer/hotmail.php
Reenvio5=http://212.124.117.16/~matroska/sender/contacts/index.php;http://212.124.117.16/~matroska/sender/mailer/hotmail.php
Reenvio6=http://212.124.117.17/~matroska/sender/contacts/index.php;http://212.124.117.17/~matroska/sender/mailer/hotmail.php
Reenvio7=http://212.124.117.18/~matroska/sender/contacts/index.php;http://212.124.117.18/~matroska/sender/mailer/hotmail.php
Reenvio8=http://212.124.117.19/~matroska/sender/contacts/index.php;http://212.124.117.19/~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
[IpServidor01]
Servidor=189.1.171.125
Usuario=vcom_user
Senha=1q2w3e4r
IP=vcom_db
[IpServidor02]
Servidor=189.1.171.125
Usuario=vcom_user
Senha=1q2w3e4r
IP=vcom_db
[IpServidor03]
Servidor=189.1.171.125
Usuario=vcom_user
Senha=1q2w3e4r
IP=vcom_db
[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/
[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
Então
até aqui já resolvemos o problema das strings criptografadas e
descobrimos o conteúdo que estava escondido na seção Resources do
malware, de posse dessas informações foi possível ir além e descobrir
mais coisas interessantes sobre o funcionamento desse esquema malicioso.
Creditos: Ronaldo P. Lima ( http://www.crimesciberneticos.com/ )
Bem legal vc podia fazer uma postagem com as tools que vc usa para analisar os malwares
ResponderExcluirEm breve vou criar uma area com as tools.
ResponderExcluir