Поиск шеллов на сервере
July 9th, 2011
Иногда возникает необходимость проверить нет ли на вашем сервере залитых шеллов через дырявые скрипты. Естественно, что гарантий тут никто не дает, но хотя бы простые проверки иногда запускать можно. Все нижесказанное относится к PHP шеллам:
egrep -rlZ -e "eval\(gzinflate\(" /usr/home
egrep -rlZ -e "gzinflate" /usr/home
egrep -rlZ -e "eval\(str_replace" /usr/home
egrep -rlZ -e "gzinflate" /usr/home
egrep -rlZ -e "eval\(str_replace" /usr/home
grep -Rl "r57shell|c99madshell|eval\|base64_decode" /home
Так же имеет смысл поискать следующие строчки: passthru, shell_exec, system, phpinfo, base64_decode, edoced_46esab, chmod, mkdir
grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile) *\(" public_html/
Можно так же попробовать поискать файлы по дате создания или изменения. Но, возможно, что злоумышленник специально их поправил.
Для поиска руткитов рекомендую воспользоваться . Но это тоже не дает гарантий. Если есть возможность рекомендуется переустановить систему и восстановить сайты из бэкапов.

Добавлю к выше сказанному. Не так давно появился отличный скрипт для поиска шеллов (для менее продвинутых самое то) – айболит – http://www.revisium.com/ai/
На сёрче активно обсуждается.