quarta-feira, 19 de fevereiro de 2014

Bank Phishing: The Fulerage Never Ends!

Nesta postagem eu vou estar descrevendo uma pequena análise realizada em cima de um e-mail de phishing que eu recebi recentemente (Espero que isso sirva de ajuda para futuras análises de phishing e páginas maliciosas para os leitores do blog)..

Análise inicial do e-mail

 

A figura abaixo apresenta a mensagem original de phishing.

Figura 01: Mensagem Original

Já da para perceber pela figura 01 que este e-mail se trata de um phishing voltado para clientes de um determinado banco. A partir do conteúdo da mensagem, podemos ver que a mesma apresenta um link para endereço o qual não pertence ao banco (ver figura 02).

Figura 02: Link de origem

Analisando o link de origem


Através da figura 02 é possível ver o endereço do link da mensagem:

http://spaces.isu.edu.tw/~lawedu/media/system/images/sex5/?cliente=[E-MAIL]

O servidor 'spaces.isu.edu.tw' está localizado no endereço IP '140.133.46.51'. Através de um simples 'whois' nós podemos obter algumas informações sobre o endereço de origem do link (ver figura 03).

Figura 03: Whois

Vamos agora realizar uma requisição para o link citado sendo que com um endereço de e-mail diferente para o parâmetro 'cliente' (ver figura 04).

Figura 04: Acessando o servidor malicioso

Através da Figura 04 é possível ver que o servidor 'spaces.isu.edu.tw' realiza um redirecionamento da nossa requisição para 'www.prfprinting.ir' (localizado no servidor 144.76.219.88). Depois de uma pequena busca, eu acabei descobrindo que o servidor 'www.prfprinting.ir' foi previamente invadido e um webshell foi instalado por um atacante (ver figura 05).

Figura 05: Obtendo informações sobre o servidor

Analisando o conteúdo da página

 

Neste momento vamos analisar o conteúdo devolvido pelo servidor 'www.prfprinting.ir'. Três arquivos '.php' (topo, body e rodape) fazem parte da página retornada pelo servidor (ver Figura 06).  

Figura 06: Página principal do servidor

Depois de analisar um pouco cada um dos três arquivos '.php', eu percebi a presença de código javascript obfuscado em 'topo.php' e 'body.php'. O arquivo 'body.php' apresenta alguns pontos mais importantes para a análise do ataque: funções suspeitas e o arquivo 'cmds.js'.

Funções suspeitas


O arquivo 'body.php' apresenta algumas funções suspeitas: fCheck, cxk e puxaDados (ver figuras 07 e 08).

Figura 07: Funções puxaDados e cxk

Figura 08: Função fCheck

Arquivo cmds.js

 

A página 'body.php' importa um arquivo 'cmds.js' (ver figura 09)

Figura 09: Importando 'cmds.js

O início do arquivo 'cmd.js' é apresentado na figura 10.

Figura 10: arquivo cmd.js

As figuras 11 e 12 apresentam as funções cxk, puxaDados e fCheck (É importante notar que certas partes das funções puxaDados e fCheck estão obfuscadas!).


Figura 11: Funções cxk e puxaDados

Figura 12: Função fCheck

A função fCheck recebe dois parâmetros de entrada: 'ppl' e 'action'. A função realiza diversos 'ifs' comparando o conteúdo da variável 'action' com diversos valores (ex: 'ggc', 'sen' e 'wtv'). Vamos focar em uma dessas comparações (eu vou selecionar 'sen' (Mesmo valor presente na figura 08!)). A figura 13 apresenta a parte do código no qual o valor de 'action' é comparado com 'sen'.

Figura 13: Função fCheck (checando ifs)

A partir da figura 12, é possível constatar de que partes do código da função fCheck estãos obfuscados. Vamos deobfuscar estas partes para ter uma ideia melhor do que ocorre durante esta função. As figuras 14 e 15 apresentam os 'pedaços' de códigos antes e depois da deobfuscação.

Figura 14: Código Obfuscado

Figura 15: Código Deobfuscado

A partir da Figura 15, podemos ver uma variável 'sen' sendo criada a partir do elemento 'campo_s_se_1522_0922'. Esta variável contém a senha utilizada pelo usuário na página de phishing. A função verifica se a variável 'sen' tem 6 ou mais caracteres. A variável 'varsend' é formada por:

varsend = 'altera=senha&senhae=' + sen.value

A função 'enviaDados' é chamada com 2 parâmetros:
  1. ppl = Endereço IP da vítima
  2. varsend = 'altera=senha&senhae=' + sen.value

Função enviaDados

 

Vamos ver agora de que forma os dados do usuário são enviados para o atacante. Vamos continuar ainda nesse exemplo da senha do usuário. A função 'enviaDados' é apresentada na Figura 16.

Função 16: Função 'enviaDados' (Obfuscada)

A função 'enviaDados' apresenta uma parte de seu código obfuscada. Vamos agora deobfuscar esta seção do código (ver Figura 17).

Figura 17: Função 'enviaDados' (Deobfuscada)

A função 'enviaDados' cria uma requisição POST para o endereço 'http://www.prfprinting.ir/atendimento.online/components/com_user/user/plugin/index.php' enviando a senha da vítima através do parâmetro 'senhae'.

Conclusão


Nesta postagem eu apresentei uma análise básica de um e-mail de phishing contra clientes de um determinado banco. O phishing análisado obtinha dados dos clientes (como senha) e enviava estes dados para uma URL específica do servidor 'www.prfprinting.ir'. Os arquivos maliciosos do servidor  'www.prfprinting.ir' foram removidos recentemente (provavelmente pelos responsáveis do servidor). Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

Um comentário:

  1. Excelente post! É um cenário corriqueiro com uma explicação esclarecedora de como funciona!! :)

    ResponderExcluir