• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь как найти вирус переадресатор?

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Подскажите, пожалуйста, что делать? Думаю, почему посещаемость упала до нуля. Все вроде работает, ошибок нет, сканеры онлайн вирусов не находят, на хостинге проверял через aibolit (от хостера сервис), ничего не находит.
Не могу понять где код, что перенаправляет. Перенаправление срабатывает один раз и только, если заходишь с поиска. Файлы смотрю на сервере, изменений нет. Как вообще найти причину? Левых скриптов вроде не стоит.
Версия 14.0
Пока некогда ставить, нужно проверять доработки, чтобы не слетели.
 
Вот небольшой код, который думаю вам поможет. В качестве примера для поиска использовал излюбленный вирусами base64
PHP:
<?php
//Может понадобится, так как при запуске через cli, скрипт не заработал без указания
ini_set('memory_limit', '2048M');
//Функция рекурсивно ищет файлы в указанном каталоге и его подкаталогах, а так же делает поиск в самих файлах
function searchFiles($dir) {
    $fileList = []; // Массив путей к файлам
    $files = scandir($dir); // Сканирование содержимого каталога
    foreach ($files as $file) {
        if ($file === '.' || $file === '..') {
            // Пропуск текущей и родительской директорий
            continue;
        }
        $path = $dir . '/' . $file;
        if (is_dir($path)) {
            // Рекурсивный поиск файлов внутри подкаталога
            $fileList = array_merge($fileList, searchFiles($path));
        } else {
            // Считывание содержимого файла
            $content = file_get_contents($path);
            
            // Поиск строк "base64_decode" и "base64_encode" в файле
            if (strpos($content, 'base64_decode') !== false || strpos($content, 'base64_encode') !== false) {
                // Добавление пути к файлу в массив
                $fileList[] = $path;
            }
        }
    }
    // Возвращение массива путей к найденным файлам
    return $fileList;
}

// Указываем каталог для поиска файлов
$directory = '/var/www/site.com/';
$fileList = searchFiles($directory); // Поиск файлов
// Открытие файла для записи результата
$fileTxt = fopen('/var/www/file.txt', 'w');
foreach ($fileList as $file) {
    fwrite($fileTxt, $file . "\n"); // Запись пути к файлу и имя файла в txt
}
fclose($fileTxt); // Закрытие файла
?>

Думаю пригодится. Запускать советую по крону через CLI:
php /полный путь до файла/имя файла
Например
php /var/www/123.php

Код прокомментировал
 
Вот небольшой код, который думаю вам поможет. В качестве примера для поиска использовал излюбленный вирусами base64
PHP:
<?php
//Может понадобится, так как при запуске через cli, скрипт не заработал без указания
ini_set('memory_limit', '2048M');
//Функция рекурсивно ищет файлы в указанном каталоге и его подкаталогах, а так же делает поиск в самих файлах
function searchFiles($dir) {
    $fileList = []; // Массив путей к файлам
    $files = scandir($dir); // Сканирование содержимого каталога
    foreach ($files as $file) {
        if ($file === '.' || $file === '..') {
            // Пропуск текущей и родительской директорий
            continue;
        }
        $path = $dir . '/' . $file;
        if (is_dir($path)) {
            // Рекурсивный поиск файлов внутри подкаталога
            $fileList = array_merge($fileList, searchFiles($path));
        } else {
            // Считывание содержимого файла
            $content = file_get_contents($path);
           
            // Поиск строк "base64_decode" и "base64_encode" в файле
            if (strpos($content, 'base64_decode') !== false || strpos($content, 'base64_encode') !== false) {
                // Добавление пути к файлу в массив
                $fileList[] = $path;
            }
        }
    }
    // Возвращение массива путей к найденным файлам
    return $fileList;
}

// Указываем каталог для поиска файлов
$directory = '/var/www/site.com/';
$fileList = searchFiles($directory); // Поиск файлов
// Открытие файла для записи результата
$fileTxt = fopen('/var/www/file.txt', 'w');
foreach ($fileList as $file) {
    fwrite($fileTxt, $file . "\n"); // Запись пути к файлу и имя файла в txt
}
fclose($fileTxt); // Закрытие файла
?>

Думаю пригодится. Запускать советую по крону через CLI:
php /полный путь до файла/имя файла
Например
php /var/www/123.php

Код прокомментировал
круто, я встречал где просто из несколько файлом собирают по кусочкам адрес, это вроде сложнее всего найти
 
Это всего лишь пример.
В строку поиска
PHP:
if (strpos($content, 'base64_decode') !== false || strpos($content, 'base64_encode') !== false)
Можно добавить
require, require_once, include_once, get_included_files, readfile, virtual и include_path
А далее вручную проверять файлы, в которых это найдено
 
По поиску малварных инклюдов вручную :

Прежде всего надо понять, что именно и откуда у вас подгружается.
Так как инклюдят JS код, то простым решением для контроля является плагин NoScrpt.
Банально отключаете JS через плагин и смотрите сайт, если подвести мышку к иконке плагина в тулбаре броузера и кликнуть, будет видно с каких доменов идут попытки выполнить JS код.

Далее включаете "Web Development Tools" в броузере (я про Firefox), и ищете полный урл, возможно и место в коде страниц или скриптов-стилей, где он подтягивается.
Так как NoScript не дает загрузится этому JS инклюду, его легко будет найти в логах тулзы, он будет подсвечен цветом.

И второе, очень часто код инклюдят в какой-либо подгружаемый из базы шаблон, CSS, JS код. Так что сравнивать с бэкапами только файлы, искать модифицированные файлы - недостаточно.
Надо сравнивать и базы mysql
(особенно таблицы вроде вордпрессовского wp_options куда пихаются очень разные блоки плагинов и чего попало)

PS: Бэкапы и еще раз бэкапы ! без них никуда не только в ситуации заражения.
И очень полезно иметь старые бэкапы, то есть делать за посление несколько дней, несколько недель понедельничные, и за несколько месяцев за 1е число.
Подсказка - дифференциальные или инкрементальные бэкапы. Современные панели умеют это. Просто задайте хранить и месячные + недельные копии.
Ну или использовать бэкап системы с дедуплицировнием, вроде restic, где можно иметь копии и за год назад без существенных расходов пространства.
 
  • Нравится
Реакции: dmx
Сайт сильно допилен? Если более менее можно перенести шаблон и данные, то советую накатить все на "чистую CMS", шаблон отдельно вручную проверить файлы. + Через тот же тотал командер поиск по файлам. Ведь даже в JS могут вшиться спокойно.
+ Не забудьте сделать отдельно анализ БД.
 
Назад
Сверху