Каждый вебмастер сталкивался с проблемой поиска уязвимых мест своего сайта, с помощью которых злоумышленник может загрузить свой вредоносный код, который так или иначе повлияет на работоспособность всего сайта, вплоть до его исключения из поисковой выдачи.
Чаще всего заражение происходит из-за человеческого фактора, но что делать, если сайт все-таки взломан?
Основные проблемы
Меньшее из зол – это найти и удалить сам вредоносный код. Основная же проблема заключается в поиске того уязвимого места, через которое злоумышленник загрузил свой код на ваш сайт, чтобы обезопасить себя от следующих подобных прецедентов.

Для поиска вредоносного кода написано немало антивирусных программ, создано много сервисов, которые могут указать на адрес зараженной страницы, предоставив даже сигнатуру и исчерпывающую информацию о самом вирусе. Но ни одно программное обеспечение не сможет сказать Вам, как этот «чужой код» появился на сайте. Здесь стоит полагаться только на себя.
Ниже я приведу несколько команд, которые можно применять при поиске зараженных файлов и/или загруженных к Вам на сайт shell-ов/backdoor-ов. Для этого нам потребуется программа Putty и SSH-доступ к сайту.
Поиск зараженных файлов
С помощью нижеперечисленных команд можно найти файлы, содержащие «опасные» элементы, с помощью которых злоумышленник может выполнить вредоносный обфусицированный код.
Вывод файлов будет записан в лог-файл в вашей текущей директории. В каждом файле будет содержаться путь к найденному файлу и строка с подозрительным участком кода.
find /Каталог с сайтом -type f -iname "*" -exec grep -Him1 'base64' {} \; > ./base64.log
find /Каталог с сайтом -type f -iname "*" -exec grep -Him1 'file_get_contents' {} \; > ./file_get_contents.log
Поиск директорий с полными правами на запись
Следующая команда выводит список директорий, на которых установлены полные права на запись. Именно такие директории используют для заражения сайта.
Поиск измененных файлов за период
Если Вы знаете когда примерно произошло заражение, можно посмотреть список измененных файлов за последние несколько дней ( параметр –mtime -7 указывает на дату изменения отличную от текущей за 7 прошлых дней)
Что делать, если сайт заражен?
Итак, предположим, что мы нашли зараженные файлы или shell-файл. Перед тем как его удалить/удалить из него вредоносный код, запомните его имя (полный путь), дату изменения/создания файла, его gid и id пользователя (для unix систем), это позволит найти способ его загрузки к нам на сайт. Начнем с пользователя и группы:
Посмотрите, от какого пользователя работает Ваш web-сервер:
Если этот пользователь совпадает с пользователем, создавшим вредоносный файл, то можно предположить, что он был загружен через сам сайт. Если же нет – файл могли загрузить через ftp (мы настоятельно рекомендуем изменить пароли к FTP-серверу и административной панели сайта).
Дальше открываем директорию с access-логами нашего сайта и делаем поиск по имени файла:
И получаем вывод всех запросов к нашему скрипту. По нему определяем userAgent и ip адрес нашего взломщика.
Следующей командой мы получаем список всех запросов, на которые он к нам заходил.
Внимательно его проанализировав можно найти уязвимое место на сайте, следует обратить особое внимание на POST-запросы из вывода, с помощью которых мог быть залит вредоносный файл.
Ижаковский Андрей, системный администратор
