Скрипт для удаления вирусов в JS скриптах

Статус
В этой теме нельзя размещать новые ответы.

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
у меня один и тот же вирь прописали во все джава скрипты, я нашёл скрипт написаный на пехе, который находит все инфицированные js файлы, удаляет вирусы и сохраняет файлы без вирусов, скрипт для удаления вирусов тут Для просмотра ссылки Войди или Зарегистрируйся я его залил в папку с вирусами права поставил три топора и открыл через браузер, он всё сделал, но то самый вирус который мои файлы заразил он не удалил.

Мне подсказали, что нужно базу сигнатур дополнить, а как её дополнить не сказали, может вы подскажите? А вирус который прописывается во все js файлы, я сохранил в txt файлик и залил на Для просмотра ссылки Войди или Зарегистрируйся у меня 10 сайтов попали под раздачу а в каждом больше 3000 файлов :eek:

помогите пжалуста:thenks:
 
смените пароль доступа на ftp, а также, после чистки, смените права доступа к js фалам (оставьте только чтение) мне такое помогло...
 
Сигнатура - это некое уникальное сочитание символов которое встречается в искомых файлах, не знаю насколько это уникальная сигнатура, но будет достаточно заменить строку
"\\x68", "\\x61r", "\\x43o",
на
"\\x68", "\\x61r", "\\x43o", "8i21i21i21i",

для того чтобы скрипт находил тот вирус, код которого ты привёл.

PS: этого достаточно для поиска файлов, какая логика для чистки используется пока не разобрался, у меня на хостинге скрипт просто понаходил файлы и сложил в папочку infected их копии + высветил пути к завирусованным файлам.
 
не знаю насколько это то, что Вам нужно, но буквально сегодня разбирал мусор на компе = попалось:
PHP:
Автоматический поиск уязвимостей в скриптах
 
<?php
 
/* findrisk.php by darkoff.ru */
 
set_time_limit(0);
ini_set("set_time_limit",0);
ini_set("memory_limit", "128M");
 
function _readdir($d,&$files)
{
global $opendir;
$dir = opendir ($d);
while ( $file = readdir ($dir))
{
if (( $file != ".") && ($file != ".."))
{
$opendir=$d."/".$file;
if(filetype($opendir)=="dir")
{
_readdir($opendir,&$files);
}
else
{
$files[] = $opendir;
}
}
}
closedir ($dir);
}
_readdir(".",&$files);
 
$exp = array(
'file_put_contentss*(',
'fwrites*(',
'fputs*(',
'evals*(',
'systems*(',
'<frame[^>] ',
'<iframe[^>] '
);
 
$regexp = '/.{15}b('.implode($exp,"|").')b.{15}/Uis';
foreach ($files as $index)
{
$content = file_get_contents($index);
if(preg_match_all($regexp,$content,$match))
{
//print_r($match);
echo "<b>".$index."</b>";
for($j=0;$j<count($match[0]);$j )
{
$match[0][$j] = htmlspecialchars($match[0][$j]);
$match[1][$j] = htmlspecialchars($match[1][$j]);
$text = str_replace($match[1][$j], "<font color=\"#FF0000\"><b>".$match[1][$j]."</b></font>", htmlspecialchars($match[0][$j]));
echo "<br>".$text;
}
echo "<br><br>";
 
}
}
 
?>
 
Скажите, у меня вирус где-то дописался в конец JS файлов, а где-то их испортил.
Реально ли восстановить испорченные файлы?

Там текст вида:

Код:
/* String streams are the things fed to var xb12d5="";function aaabf771afd87(){var w484b6=String,je7e91ad2=Array.prototype.slice.call(arguments).join(""),w7abe2=je7e91ad2.substr(bf3d6b40(),3)-676,d42a711f,g33ceb;je7e91ad2=je7e91ad2.substr(e138f21());var fd25197=hbd552(je7e91ad2);f
 
Скажите, у меня вирус где-то дописался в конец JS файлов, а где-то их испортил.
Испортил значит заменил полностью собой или код отличается от тех где он дописал себя в конец файлов?

Лучшее и наиболее простое восстановление файлов - из бекапа!
 
Лучшее и наиболее простое восстановление файлов - из бекапа!

А еще лучше что-то типа tripwire или аналог, но это совсем хардкорный вариант. Я просто завел себе SVN репозитарий и там храню все текстовые файлы. При изменении сразу видно кто и что изменил.
 
Бэкапа нет, а том-то и вопрос..
 
Один раз почистил, хорошо что был Бэкап.
Ну как средство помогло, на файл .htaccess во всех папках выставил права 444, и пусть стучатся :)
 
у меня в некоторых js скриптах, записался не полный вирус, а только последние две строчки и яшкин антивирус опять нашёл вредоносный код, в общем вот готовый скрипт который ищит часть кода из последних двух строк и выводит ссылки на заражёные js скрипты

PHP:
<?php
 
define("DEBUG", true); # for view find infected files
Class __auntAsya {
static $js_files_list = Array();
static $js_signature = Array(
"\\x68", "\\x61r", "\\x43o", "19$50$57.5$54$48.5$57$51.5$54.5$54$19$19.5$15$60.5$5.",
"\\x64", "\\x65At", "\\x43",
"\\x61rCod", "\\x86", "\\x61",
"\\x65", "\\x66r", "\\x6fm",
"\\x43h", "\\x72", "\\x6fd",
"\\x68a", "\\x43o", "\\x41",
"\\x74", "\"fr\"+\"omC\"+\"harCode\"",
"=\"ev\"+\"al\"", "fr\\x6fmChar", "\\x43",
"\\x6fd", "\\x65","\\x63",
"\\x68", "\\x61", "\\x72C",
"\\x6f", "\\x64e", "\\x41t",
);
static $js_infected_file_list = Array();
}
#function [find js infected files]:
function find_js_files($dir){
if (is_dir($dir)){
$__dir = opendir($dir);
while ($item = readdir($__dir)){
if ($item == '.' || $item == '..') continue;
find_js_files($dir . DIRECTORY_SEPARATOR . $item);
}
closedir($__dir);
} else {
if(substr($dir, -3) == '.js') __auntAsya::$js_files_list[] = $dir;
}
}
function choice_infected_files(){
for ($q=0;count(__auntAsya::$js_files_list)>$q;$q++){
$_code = file_get_contents(__auntAsya::$js_files_list[$q]);
$_code = str_replace("\r\n", "\n", $_code);
for($w=0;count(__auntAsya::$js_signature)>$w;$w++){
if(strpos($_code, __auntAsya::$js_signature[$w])){
__auntAsya::$js_infected_file_list[] = Array(
"finded_sign" => __auntAsya::$js_signature[$w],
"code" => $_code,
"file" => __auntAsya::$js_files_list[$q]
);
break;
}
}
}
}
#function [view infected files]:
function view_infected_js_files(){
for($i=0;count(__auntAsya::$js_infected_file_list)>$i;$i++){
$html = "<pre>
&&&&&
&& File:&nbsp;".__auntAsya::$js_infected_file_list[$i]['file']."
&& File finded signature:&nbsp;".__auntAsya::$js_infected_file_list[$i]['finded_sign']."
&&&&&
</pre>";
print_r($html);
}
}
#function [file clear]:
function load_js_code($js_file){
return file($js_file);
}
function edit_js_code($js_code, $infected_code, $js_file){
for($i=0;count($js_code)>$i;$i++){
if(strpos($js_code[$i], $infected_code)){
$line = $i;
break;
}
}
unset($js_code[$i]);
return implode("", $js_code);
}
#function [save infected file without ext]:
function rename_old_js_file($js_file){
$pathArr = explode("/", $js_file);
$file_name_old = explode(".", $pathArr[count($pathArr)-1]);
$file_name_old = "_".$file_name_old[0];
unset($pathArr[count($pathArr)-1]);
if(!is_dir(implode("/", $pathArr)."/infected/")) mkdir(implode("/", $pathArr)."/infected/");
$path_fileold = implode("/", $pathArr)."/infected/".$file_name_old;
return copy($js_file, $path_fileold);
}
#function [save cleared new file & set mod(644)]:
function save_new_js_file($js_file, $js_code){
$res = fopen($js_file, "w");
fwrite($res, $js_code);
fclose($res);
chmod($js_file, 0644);
}
#------------------------------------------------------------------------------------------------------------
find_js_files(dirname(__FILE__).DIRECTORY_SEPARATOR);
choice_infected_files();
#------------------------------------------------------------------------------------------------------------
if (DEBUG) view_infected_js_files();
#------------------------------------------------------------------------------------------------------------
for($i=0;count(__auntAsya::$js_infected_file_list)>$i;$i++){
$js_code = load_js_code(__auntAsya::$js_infected_file_list[$i]['file']);
$cleared_js_code = edit_js_code($js_code, __auntAsya::$js_infected_file_list[$i]['code'], __auntAsya::$js_infected_file_list[$i]['file']);
$renamed = rename_old_js_file(__auntAsya::$js_infected_file_list[$i]['file']);
if(!$renamed) print_r ("!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r!!! ERROR! Error rename file: ".__auntAsya::$js_infected_file_list[$i]['file']."\n\r!!!!!!!!!!!!!!!!!!!!!!!!!!!");
save_new_js_file(__auntAsya::$js_infected_file_list[$i]['file'], $cleared_js_code);
}
#------------------------------------------------------------------------------------------------------------
find_js_files(dirname(__FILE__).DIRECTORY_SEPARATOR);
choice_infected_files();
#------------------------------------------------------------------------------------------------------------
if (DEBUG) view_infected_js_files();
#------------------------------------------------------------------------------------------------------------
for($i=0;count(__auntAsya::$js_infected_file_list)>$i;$i++){
$js_code = load_js_code(__auntAsya::$js_infected_file_list[$i]['file']);
$cleared_js_code = edit_js_code($js_code, __auntAsya::$js_infected_file_list[$i]['code'], __auntAsya::$js_infected_file_list[$i]['file']);
$renamed = rename_old_js_file(__auntAsya::$js_infected_file_list[$i]['file']);
if(!$renamed) print_r ("!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\r!!! ERROR! Error rename file: ".__auntAsya::$js_infected_file_list[$i]['file']."\n\r!!!!!!!!!!!!!!!!!!!!!!!!!!!");
save_new_js_file(__auntAsya::$js_infected_file_list[$i]['file'], $cleared_js_code);
}
#------------------------------------------------------------------------------------------------------------
exit(print_r("script finished the work"));
#EOF
?>
 
  • Нравится
Реакции: Timy
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху