Как мы боремся с заражениями сайтов наших клиентов
Чем же заражают наши любимые сайты?
Прежде всего – это вирусы, цель которых – дальнейшее распространение и заражение устройств пользователей (персональных компьютеров, планшетов или смартфонов).
Трояны – это отдельная песня, их цель – поработить сайт, чтобы в дальнейшем рассылать спам, устраивать DDos и делать прочие гадости, например, размещать ссылки со ссылочных бирж или каталогов сайтов, а также устраивать перенаправления трафика на другие ресурсы.
Естественно, атакам подвержены далеко не все типы файлов. Никто не будет заражать .jpg с фоточками милых котиков. А вот файлы с расширением .php – потенциальная цель. Потому что они исполняются на сервере и могут содержать помимо полезных скриптов движка CMS еще и троянчики с прочим зверинцем.
Не менее опасные файлы .js, в них как раз селятся вирусы, которые пытаются заразить устройство пользователя через JS движок браузера. И часто им это вполне удается. Особенно через Internet Explorer или давно не обновленный Flash Player.
В файлы .htaccess зловреды могут размещать правила переадресации по условиям, например, чтобы мобильный трафик уходил на сторонние ресурсы.
Думаете, что взломать сайт сложно?
Как бы не так. Существуют сотни актуальных троянов, использующих 0-day уязвимости, которые уводят сохраненные пароли из клиентов FTP, SSH и из браузеров. Никто не застрахован от угона Cookie администратора путем XSS-атаки, что возможно на сайтах, где пользователи оставляют свои комментарии, отзывы. Сейчас, благодаря защите броузеров от межсайтового скриптинга, таких атак стало мало, но они все равно возможны при нахождении нового метода.
SQL-инъекцией можно увести из базы данных пароль администратора, если нет должной проверки входных данных, подставляемых в SQL запрос. Вот хороший пример SQL-инъекции оффлайн, ставший чуть ли не популярным демотиватором.
И, конечно же, самое популярное – Local File Inclusion. Хакеры днем и ночью изучают исходные коды популярных CMS в надежде найти подобную уязвимость. И находят. Так что же это такое?
Предположим, что на одном таком «красивом» сайте, который работает на какой-нибудь популярной и бесплатной CMS, есть форма загрузки файлов, доступная всем, например, для загрузки свой картинки-аватара. Все бы хорошо, но алгоритм, отвечающий за загрузку, совершенно не проверяет содержимое загруженного файла, поэтому вместо картинки можно спокойно подсунуть код самого простого вебшела, который будет выполнять наши команды: <?assert(stripslashes($_REQUEST["e"]));?>
Причем сам файл нельзя загрузить с расширением .php, а только, например, с .jpg, исключающим выполнение серверным PHP. Вот тут на помощь придет ранее найденная уязвимость.
Предположим, что сайт имеет такую уязвимость в скрипте template.php. Код файла примерно такой:
// {..} примитивная проверка, которая часто легко обходится if (!isset($_GET['file']) OR !file_exists('./tpl/default/'.$_GET['file'])) die('404 Not Found'); // {..} возможно, проводятся еще какие-то проверки include './tpl/default/'.$_GET['file']; // локальный инкладфайла ?>
Сначала идет примитивная проверка входных данных, которая часто легко обходиться, потом проверка на существование файла, а файл, конечно, существует, avatar.jpg загрузили, и тут – тадам. Инклад. Мы просто инкладим, включаем в себя код нашего маленького вебшела. И что нам это даст. Все, точнее возможность выполнить произвольный код PHP на этом сайте. Например, вывести информацию о php – phpinfo(): http://site.com/template.php?file=../../upload/avatar.jpg&e=phpinfo();
Что можно сделать дальше с полученным доступом – зависит только от фантазии и целей.
Сайт заражен, что делать?
Когда становиться понятно, что сайт заражен, скорее всего он весь в файлах-троянах, которые запрятаны в самые дальние директории. Что же надо делать?
- Скачать весь сайт к себе на компьютер.
- При скачивании, если стоит хороший антивирус, часть троянов выявляется им – потом их надо будет удалить с сервера.
- Искать по файлам *.ph* по их содержимому с подстрокой по очереди: - eval - assert; - exec; - shell_exec; - system; - base64_decode и chr.
Зачем искать «безобидную» функцию base64_decode? Дело в том, что эта функция очень часто используется в случае обфусцированного кода вебшела. Обфускация кода – это процесс запутывания, приведение кода программы к виду, когда невозможно понять, что она делает. Вот пример обфусцированного кода, декодируемый как раз этой функцией.
Согласитесь, он абсолютно не читаем, зато содержит какой-нибудь вебшел, который отлично работает на радость разместившего его на сервер.
SerVal (Server Values) — система мониторинга целостности файлов
Уникально обфусцированный код не отловит ни один антивирус. Правильное решение – следить за изменениями файлов сайта. Для этого мы используем систему мониторинга целостности файлов – SerVal.
Проект SerVal был разработан нашей студией для себя любимых еще в 2013 году и успешно помогал следить за безопасностью сайтов наших клиентов. С мая 2016 года мы выложили его в общий доступ. Причем не как сервис, а сами скрипты на скачивание. Каждый может бесплатно загрузить, установить и использовать SerVal для своих целей.
Что же SerVal представляет из себя? Система разделена на 2 части:
- CRM с удобным и функциональным интерфейсом, где агрегатируются все сайты, за которыми требуется наблюдать.
- Маленький PHP-файл сканера, размещаемый на каждый наблюдаемый сайт, который по команде основной части собирает и передает в систему всю структуру файлов, размер и контрольную сумму каждого файла.
Причем, файл сканера уникальный для каждого проекта, так как содержит в себе ключ кодирования; вся принимаемая и передаваемая информация кодируется по нему.
Установить SerVal очень просто, ничем не сложнее, чем развернуть обычную CMS. Кто с этим сталкивался – тот поймет. Предварительно нужна только база данных MySQL (хост, имя, логин и пароль). Достаточно загрузить файлы на сервер и открыть в броузере http://адрес_установки_crm/install.php. Там надо заполнить форму с данными и нажать «Установить». Система готова к работе. Ничего сложного!
Использовать SerVal еще проще. Создайте новый проект, получите файл сканера из выпадающего меню, загрузите его на хостинг наблюдаемого сайта, проведите тестирование, чтобы убедиться в правильности установки.
При первой проверке через 10 минут после создания, соберется файловая структура, с которой произойдет сравнение в следующий раз через каждый заданный интервал проверки. При выявлении изменений система сразу же уведомит об этом письмом на E-mail.
А чем поможет SerVal?
Чтобы ответь на такой вопрос достаточно показать один из недавних кейсов. 5 мая 2016 года в районе 5-6 часов утра на один из наших сайтов было добавлено 20 файлов и 24 изменены. Естественно, все добавленные файлы оказались троянами, через которые собирались рассылать спам, а в те, что были изменены был внедрен зловредный обфусцированный код. Откуда такая точность? В начале рабочего дня специалист, ответственный за проект заходит в CRM SerVal и смотрит все изменения за последнее время. Поэтому, за полчаса с начала рабочего дня все вычистили и сменили пароли, хакеры даже ничего не успели начать делать. Кстати, как потом было установлено по логам, был угон пароля от FTP.
Поэтому, если у вас нет своего решения по защите – используйте SerVal. Скачивайте и устанавливайте с официального сайта www.serval.site. Пользуйтесь абсолютно безвозмездно!