Поиск вредоносного кода на сайте без сканеров и скриптов
1.Хакерские скрипты. Чаще всего при взломе загружают файлы, представляющие собой веб-шеллы,
бэкдоры, “загрузчики”, скрипты для спам-рассылок, фишинговые страницы + обработчики форм, дорвеи и файлы-маркеры взлома.
2.Инжекты в существующих файлах. Второй по популярности тип размещения вредоносного и хакерского кода – это инжекты. В существующие файлы сайта.htaccess могут внедрять мобильные и поисковые редиректы, в php/perl скрипты инжектировать бэкдоры, в .js и .html шаблоны встраивать вирусные javascript фрагменты или редиректы на сторонние ресурсы. Возможны инжекты и в медиа-файлах, например .jpg или . Часто вредоносный код состоит из нескольких компонентов: сам вредоносный код хранится в exif-заголовке jpg файла, а исполняется с помощью небольшого управляющего скрипта, код которого не выглядит подозрительным для сканера.
3.Инжекты в базе данных. База данных является третьей мишенью для хакера. Здесь возможны статические вставки , , , , которые перенаправляют посетителей на сторонние ресурсы, “шпионят” за ними или заражают компьютер|мобильное устройство посетителя в результате drive-by атаки (атака с помощью скрытой загрузки). Кроме того во многих современных CMS (IPB, vBulletin, modx и др.) шаблонизаторы позволяют исполнять php код, а сами шаблоны хранятся в базе данных, поэтому php код веб-шеллов и бэкдоров может быть встроен непосредственно в БД.
Инжекты в кэширующих сервисах.
4.В результате некорректной или небезопасной настройки кэширующих сервисов, например, memcached, возможны инжекты в закэшированные данные “на лету”. В некоторых случаях хакер может внедрять вредоносный код на страницы сайта без непосредственного взлома последнего. Инжекты/инцицированные элементы в системных компонентах сервера.
5.Если хакер получил root доступ к серверу, он может подменить элементы веб-сервера или кэширующего сервера на инфицированные. Такой веб-сервер будет с одной стороны обеспечивать контроль над сервером с помощью управляющих команд, с другой – время от времени внедрять динамические редиректы и вредоносный код на страницы сайта. Как и в случае инжекта в кэширующий сервис, администратора сайта скорее всего не сможет обнаружить факт взлома сайта, так как все файлы и база данных будут оригинальными. Этот вариант наиболее сложный для лечения.
Итак, предположим, что сканерами вы уже проверили файлы на хостинге и дамп базы данных, но они ничего не обнаружили, а вирусный по-прежнему на странице или мобильный редирект продолжает отрабатывать при открытии страниц. Как искать дальше?
Поиск вручную
В unix сложно найти более ценную пару команд для поиска файлов и фрагментов, чем find / grep.
find . -name ‘*.ph*’ -mtime -7
найдет все файлы, которые были изменены за последнюю неделю. Иногда хакеры “скручивают” дату изменения у скриптов, чтобы таким образом не обнаружить новые скрипты. Тогда можно поискать файлы php/phtml, у которых менялись атрибуты
find . -name ‘*.ph*’ -сtime -7
< Если нужно найти изменения в каком-то временном интервале, можно воспользоваться тем же find
find . -name ‘*.ph*’ -newermt 2015-01-25 ! -newermt 2015-01-30 -ls
Для поиска в файлах незаменим grep. Он может искать рекурсивно по файлам указанный фрагмент
grep -ril ‘stummann.net/steffen/google-analytics/jquery-1.6.5.min.js’ *
При взломе сервера полезно проанализировать файлы, у которых установлен guid/suid флаг
find / -perm -4000 -o -perm -2000
Чтобы определить, какие скрипты запущены в данный момент и грузят CPU хостинга, можно вызвать
lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ‘ { if(!str) { str= } else { str=str»,»}}END{print str}’` | grep vhosts | grep php
Анализ файлов на хостинге
1.Идем в директории upload, cache, tmp, backup, log, images, в которые что-то пишется скриптами или загружается пользователями, и просматриваем содержимое на наличие новых файлов с подозрительными расширениями. Например, для joomla можно проверить .php файлы в каталоге images:find ./images -name ‘*.ph*’Скорее всего, если что-то найдется, то это будет вредонос. Для WordPress имеет смысл проверить на скрипты директорию wp-content/uploads, backup и cache каталоги тем.
2.Ищем файлы со странными именами Например, php, fyi.php, n2fd2.php. Файлы можно искать- по нестандартным сочетаниям символов,- наличию цифр 3,4,5,6,7,8,9 в имени файлов
3.Ищем дорвеи по большому числу файлов .html или .php Если в каталоге несколько тысяч файлов .php или .html, скорее всего это дорвей.
4.Логи веб-сервера, почтового сервиса и FTP. Корреляция даты и времени отправки письма (которые можно узнать из лога почтового сервера или служебного заголовка спам-письма) с запросами из access_log помогают выявить способ рассылки спама или найти скрипт спам-рассыльщика. Анализ трансфер-лога FTP xferlog позволяет понять, какие файлы были загружены в момент взлома, какие изменены и кем. В правильно настроенном логе почтового сервера или в служебном заголовке спам-письма при правильной настройке PHP будет имя или полный путь до скрипта-отправителя, что помогает определять источник спама. По логам проактивной защиты современных CMS и плагинов можно определять, какие атаки были выполнены на сайт и сумела ли CMS им противостоять. По access_log и error_log можно анализировать действия хакера, если известны имена скриптов, которые он вызывал, IP адрес или User Agent. В крайнем случае можно просмотреть POST запросы в день взлома и заражения сайта. Часто анализ позволяет найти другие хакерские скрипты, которые были загружены или уже находились на сервере в момент взлома.