Найти все последние измененные файлы за 7 дней:
find . -type f -name '*.php' -mtime -7
Найти файлы с eval, base64_decode, gzinflate или str_rot13
find . -type f -name '*.php' | xargs grep -l "eval *(" --color
find . -type f -name '*.php' | xargs grep -l "base64_decode *(" --color
find . -type f -name '*.php' | xargs grep -l "gzinflate *(" --color<br />find wp-admin -type f -name '*.php' | xargs grep -l "gzinflate *(" --color<br />
Если вы удалите опцию -l из grep, он будет показывать текст совпавшего файла. Чтобы пойти дальше я бы воспользовался этой объединенной командой, которая является более общей
find . -type f -name '*.php' | xargs grep -l "eval *(str_rot13 *(base64_decode *(" --color
Эта команда найдет php файлы содержащие eval(str_rot13(base64_decode(
Совет: расширьте выражение для поиска функций, которые могут быть использованы злонамеренно, такие как mail, fsockopen, pfsockopen, stream_socket_client, exec, system и passthru. Можно скомбинировать все эти значения в одну команду:
find . -type f -name '*.php' | xargs egrep -i "(mail|fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *\("
Следующая команда:
find . -type f -name '*.php' | xargs egrep -i "preg_replace *\((['|\"])(.).*\2[a-z]*e[^\1]*\1 *," --color
Она найдет похожий на такой код: \x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28 — как правило это обычный base64
Как в старые давние времена запомните что x29 — это ‘)’ , а x3B — ‘;’
Это пригодится при анализе таких строк.
Проверять какой код какой символ можно быстро так:
echo chr(hexdec('x29'));
echo chr(hexdec('x3B'));
// outputs );
Можно даже просто пойти тупым путем и искать закрывающиеся скобки в файлах в шестнадцатиричке так:
find . -type f -name '*.php' | xargs grep -il x29
Следующая Команда поможет сравнить 2 папки (в этом примере для WordPress). Одна заведомо чистая, а другая зараженная.
diff -r wordpress-clean/ wordpress-compromised/ -x wp-content
-x это исключение, т.е. папку wp-content — исключили, но вообще-то надо смотреть все.
Пример результата:
diff -r -x wp-content wordpress-clean/wp-admin/includes/class-wp-importer.php wordpress-compromised/wp-admin/includes/class-wp-importer.php
302a303,306
>
> if (isset($_REQUEST['x'])) {
> eval(base64_decode($_REQUEST['x']));
> }
Поиск *.php в папке с подпапками
find wp-content/uploads -type f -name '*.php'
Следующий скрипт на bash, ищет php файлы лежащие в папках Доступных для записи и результат кладет в файл
#!/bin/bash
search_dir=$(pwd)
writable_dirs=$(find $search_dir -type d -perm 0777)
for dir in $writable_dirs
do
#echo $dir
find $dir -type f -name '*.php'
done
Сохраните это в файл и дайте ему права на запись
chmod +x search_for_php_in_writable
Сохраните этот файл в вашем домашнем каталоге, а затем перейдите в каталог в котором вы собираетесь искать и выполните следующую команду:
~/search_for_php_in_writable > results.txt
~/search_for_php_in_writable | less
Помните что злоумышленники часто закгружают на сервера не PHP файлы конечно же а как правило картинки. Ищите.
find wp-content/uploads -type f | xargs grep -i php
find wp-content/uploads -type f -iname '*.jpg' | xargs grep -i php
Полезно поискать iframe
grep -i '<iframe' mywebsite.txt
Но в этом случае уже поможет jAntivirus.
Что еще и где еще поискать:
В MySQL ищите
%base64_% и %eval(% и подобное
.htaccess
auto_append_file и auto_prepend_file включают другие php файлы в начале или в конце всех php скриптов, злоумышленники могут использовать их для включения своего кода.
find . -type f -name '\.htaccess' | xargs grep -i auto_prepend_file;
find . -type f -name '\.htaccess' | xargs grep -i auto_append_file;
Следующая команда ищет во всех подкаталогах файлы .htacсess, которые содержат ‘http’. Результатом поиска будет список всех правил перенаправлений, в которых могут быть и вредоносные правила.
find . -type f -name '\.htaccess' | xargs grep -i http;
Так же ищите HTTP_USER_AGENT в htaccess ибо некоторые вещщи делают чисто для мобильных поэтому проверяют Юзерагента.
Списки плохих букв и ругательных слов, которые можно искать:
Список функций, которые вызывают callback
array_filter array_map array_walk array_diff_uassoc array_udiff_assoc array_udiff_uassoc array_intersect_uassoc array_diff_ukey array_intersect_ukey array_reduce array_udiff uasort usort array_uintersect_assoc array_uintersect_uassoc array_uintersect array_walk_recursive
Список функций, которые выполняют PHP код
create_function eval assert {$name}() preg_replace(//e)
Переменные, которые можно установить через ini_set
unserialize_callback_func assert_callback output_handler
Немного системных функций
session_set_save_handler
set_exception_handler
set_error_handler
restore_error_handler
register_shutdown_function
restore_exception_handler()
ob_start
trigger_error
Написано по материалам habrahabr: http://m.habrahabr.ru/post/188878/
Может комменты там еще есть более дельные но вообще-то этого должно хватить.
Ставьте jAntivirus